{"version":3,"sources":["../node_modules/chroma-js/src/utils/limit.js","../node_modules/chroma-js/src/utils/clip_rgb.js","../node_modules/chroma-js/src/utils/type.js","../node_modules/chroma-js/src/utils/unpack.js","../node_modules/chroma-js/src/utils/last.js","../node_modules/chroma-js/src/utils/index.js","../node_modules/chroma-js/src/io/input.js","../node_modules/chroma-js/src/Color.js","../node_modules/chroma-js/src/version.js","../node_modules/chroma-js/src/chroma.js","../node_modules/chroma-js/src/io/cmyk/cmyk2rgb.js","../node_modules/chroma-js/src/io/cmyk/rgb2cmyk.js","../node_modules/chroma-js/src/io/cmyk/index.js","../node_modules/chroma-js/src/io/css/hsl2css.js","../node_modules/chroma-js/src/io/hsl/rgb2hsl.js","../node_modules/chroma-js/src/io/css/rgb2css.js","../node_modules/chroma-js/src/io/hsl/hsl2rgb.js","../node_modules/chroma-js/src/io/css/css2rgb.js","../node_modules/chroma-js/src/io/css/index.js","../node_modules/chroma-js/src/io/gl/index.js","../node_modules/chroma-js/src/io/hcg/hcg2rgb.js","../node_modules/chroma-js/src/io/hcg/rgb2hcg.js","../node_modules/chroma-js/src/io/hcg/index.js","../node_modules/chroma-js/src/io/hex/hex2rgb.js","../node_modules/chroma-js/src/io/hex/rgb2hex.js","../node_modules/chroma-js/src/io/hex/index.js","../node_modules/chroma-js/src/io/hsi/hsi2rgb.js","../node_modules/chroma-js/src/io/hsi/rgb2hsi.js","../node_modules/chroma-js/src/io/hsi/index.js","../node_modules/chroma-js/src/io/hsl/index.js","../node_modules/chroma-js/src/io/hsv/hsv2rgb.js","../node_modules/chroma-js/src/io/hsv/rgb2hsv.js","../node_modules/chroma-js/src/io/hsv/index.js","../node_modules/chroma-js/src/io/lab/lab-constants.js","../node_modules/chroma-js/src/io/lab/lab2rgb.js","../node_modules/chroma-js/src/io/lab/rgb2lab.js","../node_modules/chroma-js/src/io/lab/index.js","../node_modules/chroma-js/src/io/lch/lch2lab.js","../node_modules/chroma-js/src/io/lch/lch2rgb.js","../node_modules/chroma-js/src/io/lch/hcl2rgb.js","../node_modules/chroma-js/src/io/lch/lab2lch.js","../node_modules/chroma-js/src/io/lch/rgb2lch.js","../node_modules/chroma-js/src/io/lch/index.js","../node_modules/chroma-js/src/colors/w3cx11.js","../node_modules/chroma-js/src/io/named/index.js","../node_modules/chroma-js/src/io/num/num2rgb.js","../node_modules/chroma-js/src/io/num/rgb2num.js","../node_modules/chroma-js/src/io/num/index.js","../node_modules/chroma-js/src/io/rgb/index.js","../node_modules/chroma-js/src/io/temp/temperature2rgb.js","../node_modules/chroma-js/src/io/temp/rgb2temperature.js","../node_modules/chroma-js/src/io/temp/index.js","../node_modules/chroma-js/src/io/oklab/oklab2rgb.js","../node_modules/chroma-js/src/io/oklab/rgb2oklab.js","../node_modules/chroma-js/src/io/oklab/index.js","../node_modules/chroma-js/src/io/oklch/oklch2rgb.js","../node_modules/chroma-js/src/io/oklch/rgb2oklch.js","../node_modules/chroma-js/src/io/oklch/index.js","../node_modules/chroma-js/src/ops/alpha.js","../node_modules/chroma-js/src/ops/clipped.js","../node_modules/chroma-js/src/ops/darken.js","../node_modules/chroma-js/src/ops/get.js","../node_modules/chroma-js/src/ops/luminance.js","../node_modules/chroma-js/src/interpolator/index.js","../node_modules/chroma-js/src/generator/mix.js","../node_modules/chroma-js/src/ops/mix.js","../node_modules/chroma-js/src/ops/premultiply.js","../node_modules/chroma-js/src/ops/saturate.js","../node_modules/chroma-js/src/ops/set.js","../node_modules/chroma-js/src/ops/shade.js","../node_modules/chroma-js/src/interpolator/rgb.js","../node_modules/chroma-js/src/interpolator/lrgb.js","../node_modules/chroma-js/src/interpolator/lab.js","../node_modules/chroma-js/src/interpolator/_hsx.js","../node_modules/chroma-js/src/interpolator/lch.js","../node_modules/chroma-js/src/interpolator/num.js","../node_modules/chroma-js/src/interpolator/hcg.js","../node_modules/chroma-js/src/interpolator/hsi.js","../node_modules/chroma-js/src/interpolator/hsl.js","../node_modules/chroma-js/src/interpolator/hsv.js","../node_modules/chroma-js/src/interpolator/oklab.js","../node_modules/chroma-js/src/interpolator/oklch.js","../node_modules/chroma-js/src/generator/average.js","../node_modules/chroma-js/src/generator/scale.js","../node_modules/chroma-js/src/generator/bezier.js","../node_modules/chroma-js/src/generator/blend.js","../node_modules/chroma-js/src/generator/cubehelix.js","../node_modules/chroma-js/src/generator/random.js","../node_modules/chroma-js/src/utils/analyze.js","../node_modules/chroma-js/src/utils/contrast.js","../node_modules/chroma-js/src/utils/delta-e.js","../node_modules/chroma-js/src/utils/distance.js","../node_modules/chroma-js/src/utils/valid.js","../node_modules/chroma-js/src/utils/scales.js","../node_modules/chroma-js/src/colors/colorbrewer.js","../node_modules/chroma-js/index.js","../src/palette/helper.ts","../src/palette/use-palette.ts","../src/theme-system/theme-tokens.ts","../src/locale/en-US.ts","../src/locale/zh-CN.ts","../src/locale/resolve-locale.ts","../src/provider/context.ts","../src/provider/MonkeysProvider.tsx","../src/components/base/utils.ts","../src/components/dropdown/UnifiedDropdown.tsx","../src/components/base/theme.ts","../src/components/base/BaseAccordion.tsx","../src/components/base/BaseAvatar.tsx","../src/components/base/BaseAspectRatio.tsx","../src/components/base/BaseBadge.tsx","../src/components/base/BaseBreadcrumb.tsx","../src/components/base/BaseButton.tsx","../src/components/base/internal/baseFieldContext.tsx","../src/components/base/BaseCheckbox.tsx","../src/components/base/BaseCode.tsx","../src/components/base/BaseContainer.tsx","../src/components/base/BasePortal.tsx","../src/components/base/internal/overlayPortal.tsx","../src/components/base/BaseContextMenu.tsx","../src/components/base/BaseDescriptionList.tsx","../src/components/base/BaseDialog.tsx","../src/components/base/BaseDivider.tsx","../src/components/base/BaseDropdownMenu.tsx","../src/components/base/BaseEmptyState.tsx","../src/components/base/BaseField.tsx","../src/components/base/BaseFieldset.tsx","../src/components/base/BaseHeading.tsx","../src/components/base/BaseGrid.tsx","../src/components/base/BaseInput.tsx","../src/components/base/BaseInputGroup.tsx","../src/components/base/BaseInline.tsx","../src/components/base/BaseKbd.tsx","../src/components/base/BaseLayout.tsx","../src/components/skeleton/motion.tsx","../src/components/base/BaseSkeleton.tsx","../src/components/base/BaseLoadingState.tsx","../src/components/safeDisplayUrl.ts","../src/components/base/BaseLink.tsx","../src/components/base/BaseList.tsx","../src/components/base/BaseMultiSelect.tsx","../src/components/base/BaseNumberInput.tsx","../src/components/base/BaseNotice.tsx","../src/components/base/BasePanel.tsx","../src/components/base/BasePasswordInput.tsx","../src/components/base/BasePagination.tsx","../src/components/base/BaseListFooter.tsx","../src/components/base/BaseProgress.tsx","../src/components/base/BaseRadioGroup.tsx","../src/components/base/BaseScrollArea.tsx","../src/components/base/BaseSelect.tsx","../src/components/base/BaseSectionHeader.tsx","../src/components/base/BaseSegmentedControl.tsx","../src/components/base/BaseSpinner.tsx","../src/components/base/BaseStack.tsx","../src/components/base/BaseSteps.tsx","../src/components/base/BaseSwitch.tsx","../src/components/base/BaseSystemState.tsx","../src/components/base/BaseTable.tsx","../src/components/base/BaseTableFooterBar.tsx","../src/components/base/BaseTabs.tsx","../src/components/base/BaseTextarea.tsx","../src/components/base/BaseText.tsx","../src/components/base/BaseTooltip.tsx","../src/components/base/BaseToolbar.tsx","../src/components/base/BaseVisuallyHidden.tsx","../src/components/base/BaseAssetIcon.tsx","../src/components/primitives/internal/overlaySurface.ts","../src/components/layout/AppShellSidebar.tsx","../src/components/layout/UserAccountMenu.tsx","../src/components/layout/index.tsx","../src/components/agent-workbench/appearance.tsx","../src/components/primitives/InteractiveControls.tsx","../src/components/primitives/FormControls.tsx","../src/components/primitives/InputGroup.tsx","../src/components/primitives/Menus.tsx","../src/components/primitives/MediaPreview.tsx","../src/components/primitives/Sheet.tsx","../src/components/primitives/SkeletonGroup.tsx","../src/components/agent-workbench/AgentWorkbenchQuickStart.tsx","../src/components/agent-workbench/AgentWorkbenchSidebarContainer.tsx","../src/components/agent-workbench/AgentWorkbenchSidebarNavigation.tsx","../src/components/agent-workbench/AgentWorkbenchSidebar.tsx","../src/components/agent-workbench/AgentWorkbenchExploreSidebar.tsx","../src/components/agent-workbench/activity-model.ts","../src/components/agent-workbench/AgentWorkbenchApproval.tsx","../src/components/agent-workbench/AgentWorkbenchTool.tsx","../src/components/agent-workbench/AgentWorkbenchActivity.tsx","../src/components/agent-workbench/details-model.ts","../src/components/agent-workbench/AgentWorkbenchTaskDetails.tsx","../src/components/agent-workbench/AgentWorkbenchShell.tsx","../src/icons-oauth.tsx","../src/components/login/LoginPage.tsx","../src/components/data-explorer/appearanceContext.tsx","../src/components/data-explorer/utils.ts","../src/components/data-explorer/theme.ts","../src/components/data-explorer/DataExplorerButton.tsx","../src/components/data-explorer/DataExplorerCheckbox.tsx","../src/components/data-explorer/DataExplorerSelect.tsx","../src/components/data-explorer/DataExplorerToolbarActions.tsx","../src/components/data-explorer/DataExplorerActionBar.tsx","../src/components/data-explorer/DataExplorerCollectionFooter.tsx","../src/components/data-explorer/DataExplorerFilterBar.tsx","../src/components/data-explorer/DataExplorerDetailField.tsx","../src/components/data-explorer/DataExplorerDetailSection.tsx","../src/components/data-explorer/DataExplorerDetailShell.tsx","../src/components/data-explorer/DataExplorerDisplayActionMenu.tsx","../src/components/data-explorer/DataExplorerDisplayMedia.tsx","../src/components/data-explorer/DataExplorerDisplayCard.tsx","../src/components/data-explorer/DataExplorerViewItemShell.tsx","../src/components/data-explorer/DataExplorerViewItem.tsx","../src/components/data-explorer/DataExplorerViewCollection.tsx","../src/components/data-explorer/DataExplorerDisplayListItem.tsx","../src/components/data-explorer/DataExplorerDisplayCollectionView.tsx","../src/components/data-explorer/DataExplorerImagePreview.tsx","../src/components/data-explorer/DataExplorerMediaPreview.tsx","../src/components/data-explorer/DataExplorerPage.tsx","../src/components/data-explorer/DataExplorerRecordCard.tsx","../src/components/data-explorer/DataExplorerRecordPicker.tsx","../src/components/data-explorer/DataExplorerUploadSurface.tsx","../src/components/data-explorer/DataExplorerToolbarShell.tsx","../src/components/data-explorer/DataExplorerTree.tsx","../src/components/data-explorer/DataExplorerTreeShell.tsx","../src/components/data-explorer/DataExplorerViewTree.tsx","../src/components/data-explorer/DataExplorerView.tsx","../src/components/data-explorer/DataExplorerViewShell.tsx","../src/components/navigation-sidebar/unified-appearance.ts","../src/components/navigation-sidebar/NavigationSidebar.tsx","../src/components/workbench/WorkbenchResizableSidebar.tsx","../src/components/workbench/WorkbenchContentPane.tsx","../src/components/workbench/WorkbenchGallerySettings.tsx","../src/components/workbench/WorkbenchContentToolbar.tsx","../src/components/workbench/WorkbenchDetailSidebar.tsx","../src/components/workbench/workbenchIconUtils.tsx","../src/components/workbench/WorkbenchTableView.tsx","../src/components/workbench/InteractiveTable.tsx","../src/components/workbench/workbenchGalleryUtils.tsx","../src/components/workbench/WorkbenchGalleryCard.tsx","../src/components/workbench/WorkbenchMasonryLayout.tsx","../src/components/workbench/WorkbenchCollectionSkeleton.tsx","../src/components/workbench/useWorkbenchCollectionSelection.ts","../src/components/workbench/WorkbenchCollection.tsx","../src/components/workbench/WorkbenchGalleryView.tsx","../src/components/workbench/WorkbenchLaneView.tsx","../src/components/workbench/WorkbenchMetricGrid.tsx","../src/components/workbench/WorkbenchRelationshipGraph.tsx","../src/components/workbench/WorkbenchScatterPlot.tsx","../src/components/workbench/WorkbenchJourneyNavigation.tsx","../src/components/workbench/WorkbenchRankedList.tsx","../src/components/workbench/WorkbenchSelectionTray.tsx","../src/components/capabilities/dateTimeValue.ts","../src/components/workbench/WorkbenchEvidenceList.tsx","../src/components/workbench/WorkbenchAssetGallery.tsx","../src/components/workbench/workbenchVisualizationTone.ts","../src/components/workbench/WorkbenchRadarWorkspace.tsx","../src/components/workbench/WorkbenchRadarMatrix.tsx","../src/components/toast/index.tsx","../src/components/runtime/ApplicationHandoffLink.tsx","../src/components/runtime/RenderNodeHost.tsx","../src/components/runtime/OverlayNodeHost.tsx","../src/components/toolbar/DarkModeSelector.tsx","../src/components/toolbar/I18nSelector.tsx"],"names":["rgb","max","round","hsl","delta","min","floor","rgb2hsl","pow","cos","sqrt","num","rnd","abs","sign","lab","lch","PI","sin","atan2","colors","f","_pos","log","limits","hsv","color","hue","saturation","lightness","isRecord","locale","useContext","useMemo","UnifiedDropdown","jsx","forwardRef","BaseAccordion","useId","useState","useRef","useEffect","jsxs","BaseAvatar","BaseAspectRatio","BaseBadge","BaseButton","createContext","BaseCheckbox","useCallback","BaseCode","BaseContainer","Fragment","validateDirection","BaseContextMenuTrigger","BaseContextMenuContent","BaseContextMenuLabel","BaseContextMenuSeparator","BaseContextMenuItem","BaseContextMenuCheckboxItem","BaseContextMenuRadioItem","BaseContextMenuSubTrigger","BaseContextMenuSubContent","validateBoolean","BaseDialog","BaseDivider","renderTrigger","BaseDropdownMenu","DropdownMenu","BaseEmptyState","BaseField","mergeAriaIds","resolveOptionalId","BaseFieldset","BaseHeading","createElement","BaseGrid","BaseInput","BaseInputGroup","BaseInline","BaseKbd","BaseLayout","BaseLayoutPane","BaseLayoutResizeHandle","BaseLayoutSplit","scale","BaseSkeleton","BaseLoadingState","BaseLink","BaseList","BaseListItem","normalizeValues","getOptionText","toDomId","BaseMultiSelect","BaseNumberInput","setRefs","validateLabel","BasePasswordInput","BasePagination","LoadingIcon","clamp","BaseProgress","indicatorSizeClassNames","BaseRadioGroup","BaseScrollArea","typeaheadResetDelay","getNextEnabledIndex","getBoundaryEnabledIndex","BaseSelect","BaseSpinner","BaseStack","validateItems","BaseSteps","BaseSwitch","BaseSystemState","assignRef","assertBoolean","isRtl","setPointerCaptureIfAvailable","toCssSize","BaseTableContainer","BaseTable","BaseTableHeader","BaseTableBody","BaseTableFooter","BaseTableRow","BaseTableHead","BaseTableCell","BaseTableCaption","BaseTableEmpty","BaseTableFooterBar","getDomIdFragments","BaseTabs","activateItem","controlSizeClassNames","BaseTextarea","BaseText","validatePlacement","isValidElement","BaseTooltip","Tooltip","BaseVisuallyHidden","BaseAssetIcon","attributes","props","AppShellSidebar","CheckIcon","DropdownMenu2","cn","AgentWorkbenchSurface","React","ChevronDown","Check","TooltipPrimitive","React2","cva","React3","DropdownMenuPrimitive","Circle","React5","DialogPrimitive","React6","SkeletonGroup","Search","Icon","AgentWorkbenchSidebarContainer","ImageIcon","Bot","RefreshCw","query","Pin","resolveAgentWorkbenchSidebarConfig","X","JsonValue","Clock3","Loader2","CheckCircle2","event","XCircle","formatDuration","latestBy","StatusIcon","AlertCircle","FileOutput","Download","TerminalSquare","next","emptyStyles","baseSlots","densitySlots","radiusSlots","borderSlots","backgroundSlots","presetDefaults","presetSlots","slotKeys","mergeSlots","mergeStyles","getPresetDefaults","DataExplorerButton","DropdownMenu5","ChevronDownIcon","DropdownMenu6","hasContent","MoreIcon","DropdownMenu7","overlay","version","FileText","renderKeywords","Popover","DropdownMenu8","clampWidth","DropdownMenu9","WorkbenchResizableSidebar","WorkbenchContentPane","useLayoutEffect","WorkbenchContentToolbar","shouldRenderBodyWrapper","Children","WorkbenchDetailSidebar","defaultGetRowKey","normalizeColumnOrder","getOrderedColumns","defaultFormatLabel","Root","fallback","resolveLengthToPixels","renderItemContent","getDefaultGalleryDetailLimit","getNormalizedGalleryBentoColumns","getNormalizedGalleryDetailLimit","summaryText","toneClassNames","disclosureLabel","finiteValues","getDomain","activatePoint","sonnerToast","SonnerToaster","RenderNodeHost","Slot","DropdownMenu10","DropdownMenu11","Tooltip3"],"mappings":"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","file":"index.mjs","sourcesContent":["import { min, max } from './index.js';\n\nexport default (x, low = 0, high = 1) => {\n    return min(max(low, x), high);\n};\n","import limit from './limit.js';\n\nexport default (rgb) => {\n    rgb._clipped = false;\n    rgb._unclipped = rgb.slice(0);\n    for (let i = 0; i <= 3; i++) {\n        if (i < 3) {\n            if (rgb[i] < 0 || rgb[i] > 255) rgb._clipped = true;\n            rgb[i] = limit(rgb[i], 0, 255);\n        } else if (i === 3) {\n            rgb[i] = limit(rgb[i], 0, 1);\n        }\n    }\n    return rgb;\n};\n","// ported from jQuery's $.type\nconst classToType = {};\nfor (let name of [\n    'Boolean',\n    'Number',\n    'String',\n    'Function',\n    'Array',\n    'Date',\n    'RegExp',\n    'Undefined',\n    'Null'\n]) {\n    classToType[`[object ${name}]`] = name.toLowerCase();\n}\nexport default function (obj) {\n    return classToType[Object.prototype.toString.call(obj)] || 'object';\n}\n","import type from './type.js';\n\nexport default (args, keyOrder = null) => {\n    // if called with more than 3 arguments, we return the arguments\n    if (args.length >= 3) return Array.prototype.slice.call(args);\n    // with less than 3 args we check if first arg is object\n    // and use the keyOrder string to extract and sort properties\n    if (type(args[0]) == 'object' && keyOrder) {\n        return keyOrder\n            .split('')\n            .filter((k) => args[0][k] !== undefined)\n            .map((k) => args[0][k]);\n    }\n    // otherwise we just return the first argument\n    // (which we suppose is an array of args)\n    return args[0];\n};\n","import type from './type.js';\n\nexport default (args) => {\n    if (args.length < 2) return null;\n    const l = args.length - 1;\n    if (type(args[l]) == 'string') return args[l].toLowerCase();\n    return null;\n};\n","const { PI, min, max } = Math;\n\nexport { default as clip_rgb } from './clip_rgb.js';\nexport { default as limit } from './limit.js';\nexport { default as type } from './type.js';\nexport { default as unpack } from './unpack.js';\nexport { default as last } from './last.js';\n\nconst TWOPI = PI * 2;\nconst PITHIRD = PI / 3;\nconst DEG2RAD = PI / 180;\nconst RAD2DEG = 180 / PI;\n\nexport { PI, TWOPI, PITHIRD, DEG2RAD, RAD2DEG, min, max };\n","export default {\n    format: {},\n    autodetect: []\n};\n","import { last, clip_rgb, type } from './utils/index.js';\nimport _input from './io/input.js';\n\nclass Color {\n    constructor(...args) {\n        const me = this;\n        if (\n            type(args[0]) === 'object' &&\n            args[0].constructor &&\n            args[0].constructor === this.constructor\n        ) {\n            // the argument is already a Color instance\n            return args[0];\n        }\n        // last argument could be the mode\n        let mode = last(args);\n        let autodetect = false;\n        if (!mode) {\n            autodetect = true;\n            if (!_input.sorted) {\n                _input.autodetect = _input.autodetect.sort((a, b) => b.p - a.p);\n                _input.sorted = true;\n            }\n            // auto-detect format\n            for (let chk of _input.autodetect) {\n                mode = chk.test(...args);\n                if (mode) break;\n            }\n        }\n        if (_input.format[mode]) {\n            const rgb = _input.format[mode].apply(\n                null,\n                autodetect ? args : args.slice(0, -1)\n            );\n            me._rgb = clip_rgb(rgb);\n        } else {\n            throw new Error('unknown format: ' + args);\n        }\n        // add alpha channel\n        if (me._rgb.length === 3) me._rgb.push(1);\n    }\n    toString() {\n        if (type(this.hex) == 'function') return this.hex();\n        return `[${this._rgb.join(',')}]`;\n    }\n}\nexport default Color;\n","// this gets updated automatically\nexport const version = '2.6.0';\n","import Color from './Color.js';\nimport { version } from './version.js';\n\nconst chroma = (...args) => {\n    return new chroma.Color(...args);\n};\n\nchroma.Color = Color;\nchroma.version = version;\n\nexport default chroma;\n","import { unpack } from '../../utils/index.js';\n\nconst cmyk2rgb = (...args) => {\n    args = unpack(args, 'cmyk');\n    const [c, m, y, k] = args;\n    const alpha = args.length > 4 ? args[4] : 1;\n    if (k === 1) return [0, 0, 0, alpha];\n    return [\n        c >= 1 ? 0 : 255 * (1 - c) * (1 - k), // r\n        m >= 1 ? 0 : 255 * (1 - m) * (1 - k), // g\n        y >= 1 ? 0 : 255 * (1 - y) * (1 - k), // b\n        alpha\n    ];\n};\n\nexport default cmyk2rgb;\n","import { unpack } from '../../utils/index.js';\nconst { max } = Math;\n\nconst rgb2cmyk = (...args) => {\n    let [r, g, b] = unpack(args, 'rgb');\n    r = r / 255;\n    g = g / 255;\n    b = b / 255;\n    const k = 1 - max(r, max(g, b));\n    const f = k < 1 ? 1 / (1 - k) : 0;\n    const c = (1 - r - k) * f;\n    const m = (1 - g - k) * f;\n    const y = (1 - b - k) * f;\n    return [c, m, y, k];\n};\n\nexport default rgb2cmyk;\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport { unpack, type } from '../../utils/index.js';\nimport cmyk2rgb from './cmyk2rgb.js';\nimport rgb2cmyk from './rgb2cmyk.js';\n\nColor.prototype.cmyk = function () {\n    return rgb2cmyk(this._rgb);\n};\n\nchroma.cmyk = (...args) => new Color(...args, 'cmyk');\n\ninput.format.cmyk = cmyk2rgb;\n\ninput.autodetect.push({\n    p: 2,\n    test: (...args) => {\n        args = unpack(args, 'cmyk');\n        if (type(args) === 'array' && args.length === 4) {\n            return 'cmyk';\n        }\n    }\n});\n","import { unpack, last } from '../../utils/index.js';\nconst rnd = (a) => Math.round(a * 100) / 100;\n\n/*\n * supported arguments:\n * - hsl2css(h,s,l)\n * - hsl2css(h,s,l,a)\n * - hsl2css([h,s,l], mode)\n * - hsl2css([h,s,l,a], mode)\n * - hsl2css({h,s,l,a}, mode)\n */\nconst hsl2css = (...args) => {\n    const hsla = unpack(args, 'hsla');\n    let mode = last(args) || 'lsa';\n    hsla[0] = rnd(hsla[0] || 0);\n    hsla[1] = rnd(hsla[1] * 100) + '%';\n    hsla[2] = rnd(hsla[2] * 100) + '%';\n    if (mode === 'hsla' || (hsla.length > 3 && hsla[3] < 1)) {\n        hsla[3] = hsla.length > 3 ? hsla[3] : 1;\n        mode = 'hsla';\n    } else {\n        hsla.length = 3;\n    }\n    return `${mode}(${hsla.join(',')})`;\n};\n\nexport default hsl2css;\n","import { unpack, min, max } from '../../utils/index.js';\n\n/*\n * supported arguments:\n * - rgb2hsl(r,g,b)\n * - rgb2hsl(r,g,b,a)\n * - rgb2hsl([r,g,b])\n * - rgb2hsl([r,g,b,a])\n * - rgb2hsl({r,g,b,a})\n */\nconst rgb2hsl = (...args) => {\n    args = unpack(args, 'rgba');\n    let [r, g, b] = args;\n\n    r /= 255;\n    g /= 255;\n    b /= 255;\n\n    const minRgb = min(r, g, b);\n    const maxRgb = max(r, g, b);\n\n    const l = (maxRgb + minRgb) / 2;\n    let s, h;\n\n    if (maxRgb === minRgb) {\n        s = 0;\n        h = Number.NaN;\n    } else {\n        s =\n            l < 0.5\n                ? (maxRgb - minRgb) / (maxRgb + minRgb)\n                : (maxRgb - minRgb) / (2 - maxRgb - minRgb);\n    }\n\n    if (r == maxRgb) h = (g - b) / (maxRgb - minRgb);\n    else if (g == maxRgb) h = 2 + (b - r) / (maxRgb - minRgb);\n    else if (b == maxRgb) h = 4 + (r - g) / (maxRgb - minRgb);\n\n    h *= 60;\n    if (h < 0) h += 360;\n    if (args.length > 3 && args[3] !== undefined) return [h, s, l, args[3]];\n    return [h, s, l];\n};\n\nexport default rgb2hsl;\n","import { unpack, last } from '../../utils/index.js';\nimport hsl2css from './hsl2css.js';\nimport rgb2hsl from '../hsl/rgb2hsl.js';\nconst { round } = Math;\n\n/*\n * supported arguments:\n * - rgb2css(r,g,b)\n * - rgb2css(r,g,b,a)\n * - rgb2css([r,g,b], mode)\n * - rgb2css([r,g,b,a], mode)\n * - rgb2css({r,g,b,a}, mode)\n */\nconst rgb2css = (...args) => {\n    const rgba = unpack(args, 'rgba');\n    let mode = last(args) || 'rgb';\n    if (mode.substr(0, 3) == 'hsl') {\n        return hsl2css(rgb2hsl(rgba), mode);\n    }\n    rgba[0] = round(rgba[0]);\n    rgba[1] = round(rgba[1]);\n    rgba[2] = round(rgba[2]);\n    if (mode === 'rgba' || (rgba.length > 3 && rgba[3] < 1)) {\n        rgba[3] = rgba.length > 3 ? rgba[3] : 1;\n        mode = 'rgba';\n    }\n    return `${mode}(${rgba.slice(0, mode === 'rgb' ? 3 : 4).join(',')})`;\n};\n\nexport default rgb2css;\n","import { unpack } from '../../utils/index.js';\nconst { round } = Math;\n\nconst hsl2rgb = (...args) => {\n    args = unpack(args, 'hsl');\n    const [h, s, l] = args;\n    let r, g, b;\n    if (s === 0) {\n        r = g = b = l * 255;\n    } else {\n        const t3 = [0, 0, 0];\n        const c = [0, 0, 0];\n        const t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        const t1 = 2 * l - t2;\n        const h_ = h / 360;\n        t3[0] = h_ + 1 / 3;\n        t3[1] = h_;\n        t3[2] = h_ - 1 / 3;\n        for (let i = 0; i < 3; i++) {\n            if (t3[i] < 0) t3[i] += 1;\n            if (t3[i] > 1) t3[i] -= 1;\n            if (6 * t3[i] < 1) c[i] = t1 + (t2 - t1) * 6 * t3[i];\n            else if (2 * t3[i] < 1) c[i] = t2;\n            else if (3 * t3[i] < 2) c[i] = t1 + (t2 - t1) * (2 / 3 - t3[i]) * 6;\n            else c[i] = t1;\n        }\n        [r, g, b] = [round(c[0] * 255), round(c[1] * 255), round(c[2] * 255)];\n    }\n    if (args.length > 3) {\n        // keep alpha channel\n        return [r, g, b, args[3]];\n    }\n    return [r, g, b, 1];\n};\n\nexport default hsl2rgb;\n","import hsl2rgb from '../hsl/hsl2rgb.js';\nimport input from '../input.js';\n\nconst RE_RGB = /^rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$/;\nconst RE_RGBA =\n    /^rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\nconst RE_RGB_PCT =\n    /^rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\nconst RE_RGBA_PCT =\n    /^rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\nconst RE_HSL =\n    /^hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\nconst RE_HSLA =\n    /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\nconst { round } = Math;\n\nconst css2rgb = (css) => {\n    css = css.toLowerCase().trim();\n    let m;\n\n    if (input.format.named) {\n        try {\n            return input.format.named(css);\n            // eslint-disable-next-line\n        } catch (e) {}\n    }\n\n    // rgb(250,20,0)\n    if ((m = css.match(RE_RGB))) {\n        const rgb = m.slice(1, 4);\n        for (let i = 0; i < 3; i++) {\n            rgb[i] = +rgb[i];\n        }\n        rgb[3] = 1; // default alpha\n        return rgb;\n    }\n\n    // rgba(250,20,0,0.4)\n    if ((m = css.match(RE_RGBA))) {\n        const rgb = m.slice(1, 5);\n        for (let i = 0; i < 4; i++) {\n            rgb[i] = +rgb[i];\n        }\n        return rgb;\n    }\n\n    // rgb(100%,0%,0%)\n    if ((m = css.match(RE_RGB_PCT))) {\n        const rgb = m.slice(1, 4);\n        for (let i = 0; i < 3; i++) {\n            rgb[i] = round(rgb[i] * 2.55);\n        }\n        rgb[3] = 1; // default alpha\n        return rgb;\n    }\n\n    // rgba(100%,0%,0%,0.4)\n    if ((m = css.match(RE_RGBA_PCT))) {\n        const rgb = m.slice(1, 5);\n        for (let i = 0; i < 3; i++) {\n            rgb[i] = round(rgb[i] * 2.55);\n        }\n        rgb[3] = +rgb[3];\n        return rgb;\n    }\n\n    // hsl(0,100%,50%)\n    if ((m = css.match(RE_HSL))) {\n        const hsl = m.slice(1, 4);\n        hsl[1] *= 0.01;\n        hsl[2] *= 0.01;\n        const rgb = hsl2rgb(hsl);\n        rgb[3] = 1;\n        return rgb;\n    }\n\n    // hsla(0,100%,50%,0.5)\n    if ((m = css.match(RE_HSLA))) {\n        const hsl = m.slice(1, 4);\n        hsl[1] *= 0.01;\n        hsl[2] *= 0.01;\n        const rgb = hsl2rgb(hsl);\n        rgb[3] = +m[4]; // default alpha = 1\n        return rgb;\n    }\n};\n\ncss2rgb.test = (s) => {\n    return (\n        RE_RGB.test(s) ||\n        RE_RGBA.test(s) ||\n        RE_RGB_PCT.test(s) ||\n        RE_RGBA_PCT.test(s) ||\n        RE_HSL.test(s) ||\n        RE_HSLA.test(s)\n    );\n};\n\nexport default css2rgb;\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport { type } from '../../utils/index.js';\n\nimport rgb2css from './rgb2css.js';\nimport css2rgb from './css2rgb.js';\n\nColor.prototype.css = function (mode) {\n    return rgb2css(this._rgb, mode);\n};\n\nchroma.css = (...args) => new Color(...args, 'css');\n\ninput.format.css = css2rgb;\n\ninput.autodetect.push({\n    p: 5,\n    test: (h, ...rest) => {\n        if (!rest.length && type(h) === 'string' && css2rgb.test(h)) {\n            return 'css';\n        }\n    }\n});\n","import Color from '../../Color.js';\nimport chroma from '../../chroma.js';\nimport input from '../input.js';\nimport { unpack } from '../../utils/index.js';\n\ninput.format.gl = (...args) => {\n    const rgb = unpack(args, 'rgba');\n    rgb[0] *= 255;\n    rgb[1] *= 255;\n    rgb[2] *= 255;\n    return rgb;\n};\n\nchroma.gl = (...args) => new Color(...args, 'gl');\n\nColor.prototype.gl = function () {\n    const rgb = this._rgb;\n    return [rgb[0] / 255, rgb[1] / 255, rgb[2] / 255, rgb[3]];\n};\n","import { unpack } from '../../utils/index.js';\nconst { floor } = Math;\n\n/*\n * this is basically just HSV with some minor tweaks\n *\n * hue.. [0..360]\n * chroma .. [0..1]\n * grayness .. [0..1]\n */\n\nconst hcg2rgb = (...args) => {\n    args = unpack(args, 'hcg');\n    let [h, c, _g] = args;\n    let r, g, b;\n    _g = _g * 255;\n    const _c = c * 255;\n    if (c === 0) {\n        r = g = b = _g;\n    } else {\n        if (h === 360) h = 0;\n        if (h > 360) h -= 360;\n        if (h < 0) h += 360;\n        h /= 60;\n        const i = floor(h);\n        const f = h - i;\n        const p = _g * (1 - c);\n        const q = p + _c * (1 - f);\n        const t = p + _c * f;\n        const v = p + _c;\n        switch (i) {\n            case 0:\n                [r, g, b] = [v, t, p];\n                break;\n            case 1:\n                [r, g, b] = [q, v, p];\n                break;\n            case 2:\n                [r, g, b] = [p, v, t];\n                break;\n            case 3:\n                [r, g, b] = [p, q, v];\n                break;\n            case 4:\n                [r, g, b] = [t, p, v];\n                break;\n            case 5:\n                [r, g, b] = [v, p, q];\n                break;\n        }\n    }\n    return [r, g, b, args.length > 3 ? args[3] : 1];\n};\n\nexport default hcg2rgb;\n","import { unpack, max, min } from '../../utils/index.js';\n\nconst rgb2hcg = (...args) => {\n    const [r, g, b] = unpack(args, 'rgb');\n    const minRgb = min(r, g, b);\n    const maxRgb = max(r, g, b);\n    const delta = maxRgb - minRgb;\n    const c = (delta * 100) / 255;\n    const _g = (minRgb / (255 - delta)) * 100;\n    let h;\n    if (delta === 0) {\n        h = Number.NaN;\n    } else {\n        if (r === maxRgb) h = (g - b) / delta;\n        if (g === maxRgb) h = 2 + (b - r) / delta;\n        if (b === maxRgb) h = 4 + (r - g) / delta;\n        h *= 60;\n        if (h < 0) h += 360;\n    }\n    return [h, c, _g];\n};\n\nexport default rgb2hcg;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport hcg2rgb from './hcg2rgb.js';\nimport rgb2hcg from './rgb2hcg.js';\n\nColor.prototype.hcg = function () {\n    return rgb2hcg(this._rgb);\n};\n\nchroma.hcg = (...args) => new Color(...args, 'hcg');\n\ninput.format.hcg = hcg2rgb;\n\ninput.autodetect.push({\n    p: 1,\n    test: (...args) => {\n        args = unpack(args, 'hcg');\n        if (type(args) === 'array' && args.length === 3) {\n            return 'hcg';\n        }\n    }\n});\n","const RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\nconst RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/;\n\nconst hex2rgb = (hex) => {\n    if (hex.match(RE_HEX)) {\n        // remove optional leading #\n        if (hex.length === 4 || hex.length === 7) {\n            hex = hex.substr(1);\n        }\n        // expand short-notation to full six-digit\n        if (hex.length === 3) {\n            hex = hex.split('');\n            hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n        }\n        const u = parseInt(hex, 16);\n        const r = u >> 16;\n        const g = (u >> 8) & 0xff;\n        const b = u & 0xff;\n        return [r, g, b, 1];\n    }\n\n    // match rgba hex format, eg #FF000077\n    if (hex.match(RE_HEXA)) {\n        if (hex.length === 5 || hex.length === 9) {\n            // remove optional leading #\n            hex = hex.substr(1);\n        }\n        // expand short-notation to full eight-digit\n        if (hex.length === 4) {\n            hex = hex.split('');\n            hex =\n                hex[0] +\n                hex[0] +\n                hex[1] +\n                hex[1] +\n                hex[2] +\n                hex[2] +\n                hex[3] +\n                hex[3];\n        }\n        const u = parseInt(hex, 16);\n        const r = (u >> 24) & 0xff;\n        const g = (u >> 16) & 0xff;\n        const b = (u >> 8) & 0xff;\n        const a = Math.round(((u & 0xff) / 0xff) * 100) / 100;\n        return [r, g, b, a];\n    }\n\n    // we used to check for css colors here\n    // if _input.css? and rgb = _input.css hex\n    //     return rgb\n\n    throw new Error(`unknown hex color: ${hex}`);\n};\n\nexport default hex2rgb;\n","import { unpack, last } from '../../utils/index.js';\nconst { round } = Math;\n\nconst rgb2hex = (...args) => {\n    let [r, g, b, a] = unpack(args, 'rgba');\n    let mode = last(args) || 'auto';\n    if (a === undefined) a = 1;\n    if (mode === 'auto') {\n        mode = a < 1 ? 'rgba' : 'rgb';\n    }\n    r = round(r);\n    g = round(g);\n    b = round(b);\n    const u = (r << 16) | (g << 8) | b;\n    let str = '000000' + u.toString(16); //#.toUpperCase();\n    str = str.substr(str.length - 6);\n    let hxa = '0' + round(a * 255).toString(16);\n    hxa = hxa.substr(hxa.length - 2);\n    switch (mode.toLowerCase()) {\n        case 'rgba':\n            return `#${str}${hxa}`;\n        case 'argb':\n            return `#${hxa}${str}`;\n        default:\n            return `#${str}`;\n    }\n};\n\nexport default rgb2hex;\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport { type } from '../../utils/index.js';\nimport input from '../input.js';\nimport hex2rgb from './hex2rgb.js';\nimport rgb2hex from './rgb2hex.js';\n\nColor.prototype.hex = function (mode) {\n    return rgb2hex(this._rgb, mode);\n};\n\nchroma.hex = (...args) => new Color(...args, 'hex');\n\ninput.format.hex = hex2rgb;\ninput.autodetect.push({\n    p: 4,\n    test: (h, ...rest) => {\n        if (\n            !rest.length &&\n            type(h) === 'string' &&\n            [3, 4, 5, 6, 7, 8, 9].indexOf(h.length) >= 0\n        ) {\n            return 'hex';\n        }\n    }\n});\n","import { unpack, limit, TWOPI, PITHIRD } from '../../utils/index.js';\nconst { cos } = Math;\n\n/*\n * hue [0..360]\n * saturation [0..1]\n * intensity [0..1]\n */\nconst hsi2rgb = (...args) => {\n    /*\n    borrowed from here:\n    http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n    */\n    args = unpack(args, 'hsi');\n    let [h, s, i] = args;\n    let r, g, b;\n\n    if (isNaN(h)) h = 0;\n    if (isNaN(s)) s = 0;\n    // normalize hue\n    if (h > 360) h -= 360;\n    if (h < 0) h += 360;\n    h /= 360;\n    if (h < 1 / 3) {\n        b = (1 - s) / 3;\n        r = (1 + (s * cos(TWOPI * h)) / cos(PITHIRD - TWOPI * h)) / 3;\n        g = 1 - (b + r);\n    } else if (h < 2 / 3) {\n        h -= 1 / 3;\n        r = (1 - s) / 3;\n        g = (1 + (s * cos(TWOPI * h)) / cos(PITHIRD - TWOPI * h)) / 3;\n        b = 1 - (r + g);\n    } else {\n        h -= 2 / 3;\n        g = (1 - s) / 3;\n        b = (1 + (s * cos(TWOPI * h)) / cos(PITHIRD - TWOPI * h)) / 3;\n        r = 1 - (g + b);\n    }\n    r = limit(i * r * 3);\n    g = limit(i * g * 3);\n    b = limit(i * b * 3);\n    return [r * 255, g * 255, b * 255, args.length > 3 ? args[3] : 1];\n};\n\nexport default hsi2rgb;\n","import { unpack, TWOPI } from '../../utils/index.js';\nconst { min, sqrt, acos } = Math;\n\nconst rgb2hsi = (...args) => {\n    /*\n    borrowed from here:\n    http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n    */\n    let [r, g, b] = unpack(args, 'rgb');\n    r /= 255;\n    g /= 255;\n    b /= 255;\n    let h;\n    const min_ = min(r, g, b);\n    const i = (r + g + b) / 3;\n    const s = i > 0 ? 1 - min_ / i : 0;\n    if (s === 0) {\n        h = NaN;\n    } else {\n        h = (r - g + (r - b)) / 2;\n        h /= sqrt((r - g) * (r - g) + (r - b) * (g - b));\n        h = acos(h);\n        if (b > g) {\n            h = TWOPI - h;\n        }\n        h /= TWOPI;\n    }\n    return [h * 360, s, i];\n};\n\nexport default rgb2hsi;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport hsi2rgb from './hsi2rgb.js';\nimport rgb2hsi from './rgb2hsi.js';\n\nColor.prototype.hsi = function () {\n    return rgb2hsi(this._rgb);\n};\n\nchroma.hsi = (...args) => new Color(...args, 'hsi');\n\ninput.format.hsi = hsi2rgb;\n\ninput.autodetect.push({\n    p: 2,\n    test: (...args) => {\n        args = unpack(args, 'hsi');\n        if (type(args) === 'array' && args.length === 3) {\n            return 'hsi';\n        }\n    }\n});\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport hsl2rgb from './hsl2rgb.js';\nimport rgb2hsl from './rgb2hsl.js';\n\nColor.prototype.hsl = function () {\n    return rgb2hsl(this._rgb);\n};\n\nchroma.hsl = (...args) => new Color(...args, 'hsl');\n\ninput.format.hsl = hsl2rgb;\n\ninput.autodetect.push({\n    p: 2,\n    test: (...args) => {\n        args = unpack(args, 'hsl');\n        if (type(args) === 'array' && args.length === 3) {\n            return 'hsl';\n        }\n    }\n});\n","import { unpack } from '../../utils/index.js';\nconst { floor } = Math;\n\nconst hsv2rgb = (...args) => {\n    args = unpack(args, 'hsv');\n    let [h, s, v] = args;\n    let r, g, b;\n    v *= 255;\n    if (s === 0) {\n        r = g = b = v;\n    } else {\n        if (h === 360) h = 0;\n        if (h > 360) h -= 360;\n        if (h < 0) h += 360;\n        h /= 60;\n\n        const i = floor(h);\n        const f = h - i;\n        const p = v * (1 - s);\n        const q = v * (1 - s * f);\n        const t = v * (1 - s * (1 - f));\n\n        switch (i) {\n            case 0:\n                [r, g, b] = [v, t, p];\n                break;\n            case 1:\n                [r, g, b] = [q, v, p];\n                break;\n            case 2:\n                [r, g, b] = [p, v, t];\n                break;\n            case 3:\n                [r, g, b] = [p, q, v];\n                break;\n            case 4:\n                [r, g, b] = [t, p, v];\n                break;\n            case 5:\n                [r, g, b] = [v, p, q];\n                break;\n        }\n    }\n    return [r, g, b, args.length > 3 ? args[3] : 1];\n};\n\nexport default hsv2rgb;\n","import { unpack } from '../../utils/index.js';\nconst { min, max } = Math;\n\n/*\n * supported arguments:\n * - rgb2hsv(r,g,b)\n * - rgb2hsv([r,g,b])\n * - rgb2hsv({r,g,b})\n */\nconst rgb2hsl = (...args) => {\n    args = unpack(args, 'rgb');\n    let [r, g, b] = args;\n    const min_ = min(r, g, b);\n    const max_ = max(r, g, b);\n    const delta = max_ - min_;\n    let h, s, v;\n    v = max_ / 255.0;\n    if (max_ === 0) {\n        h = Number.NaN;\n        s = 0;\n    } else {\n        s = delta / max_;\n        if (r === max_) h = (g - b) / delta;\n        if (g === max_) h = 2 + (b - r) / delta;\n        if (b === max_) h = 4 + (r - g) / delta;\n        h *= 60;\n        if (h < 0) h += 360;\n    }\n    return [h, s, v];\n};\n\nexport default rgb2hsl;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport hsv2rgb from './hsv2rgb.js';\nimport rgb2hsv from './rgb2hsv.js';\n\nColor.prototype.hsv = function () {\n    return rgb2hsv(this._rgb);\n};\n\nchroma.hsv = (...args) => new Color(...args, 'hsv');\n\ninput.format.hsv = hsv2rgb;\n\ninput.autodetect.push({\n    p: 2,\n    test: (...args) => {\n        args = unpack(args, 'hsv');\n        if (type(args) === 'array' && args.length === 3) {\n            return 'hsv';\n        }\n    }\n});\n","export default {\n    // Corresponds roughly to RGB brighter/darker\n    Kn: 18,\n\n    // D65 standard referent\n    Xn: 0.95047,\n    Yn: 1,\n    Zn: 1.08883,\n\n    t0: 0.137931034, // 4 / 29\n    t1: 0.206896552, // 6 / 29\n    t2: 0.12841855, // 3 * t1 * t1\n    t3: 0.008856452 // t1 * t1 * t1\n};\n","import LAB_CONSTANTS from './lab-constants.js';\nimport { unpack } from '../../utils/index.js';\nconst { pow } = Math;\n\n/*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\nconst lab2rgb = (...args) => {\n    args = unpack(args, 'lab');\n    const [l, a, b] = args;\n    let x, y, z, r, g, b_;\n\n    y = (l + 16) / 116;\n    x = isNaN(a) ? y : y + a / 500;\n    z = isNaN(b) ? y : y - b / 200;\n\n    y = LAB_CONSTANTS.Yn * lab_xyz(y);\n    x = LAB_CONSTANTS.Xn * lab_xyz(x);\n    z = LAB_CONSTANTS.Zn * lab_xyz(z);\n\n    r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB\n    g = xyz_rgb(-0.969266 * x + 1.8760108 * y + 0.041556 * z);\n    b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n\n    return [r, g, b_, args.length > 3 ? args[3] : 1];\n};\n\nconst xyz_rgb = (r) => {\n    return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow(r, 1 / 2.4) - 0.055);\n};\n\nconst lab_xyz = (t) => {\n    return t > LAB_CONSTANTS.t1\n        ? t * t * t\n        : LAB_CONSTANTS.t2 * (t - LAB_CONSTANTS.t0);\n};\n\nexport default lab2rgb;\n","import LAB_CONSTANTS from './lab-constants.js';\nimport { unpack } from '../../utils/index.js';\nconst { pow } = Math;\n\nconst rgb2lab = (...args) => {\n    const [r, g, b] = unpack(args, 'rgb');\n    const [x, y, z] = rgb2xyz(r, g, b);\n    const l = 116 * y - 16;\n    return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];\n};\n\nconst rgb_xyz = (r) => {\n    if ((r /= 255) <= 0.04045) return r / 12.92;\n    return pow((r + 0.055) / 1.055, 2.4);\n};\n\nconst xyz_lab = (t) => {\n    if (t > LAB_CONSTANTS.t3) return pow(t, 1 / 3);\n    return t / LAB_CONSTANTS.t2 + LAB_CONSTANTS.t0;\n};\n\nconst rgb2xyz = (r, g, b) => {\n    r = rgb_xyz(r);\n    g = rgb_xyz(g);\n    b = rgb_xyz(b);\n    const x = xyz_lab(\n        (0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS.Xn\n    );\n    const y = xyz_lab(\n        (0.2126729 * r + 0.7151522 * g + 0.072175 * b) / LAB_CONSTANTS.Yn\n    );\n    const z = xyz_lab(\n        (0.0193339 * r + 0.119192 * g + 0.9503041 * b) / LAB_CONSTANTS.Zn\n    );\n    return [x, y, z];\n};\n\nexport default rgb2lab;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport lab2rgb from './lab2rgb.js';\nimport rgb2lab from './rgb2lab.js';\n\nColor.prototype.lab = function () {\n    return rgb2lab(this._rgb);\n};\n\nchroma.lab = (...args) => new Color(...args, 'lab');\n\ninput.format.lab = lab2rgb;\n\ninput.autodetect.push({\n    p: 2,\n    test: (...args) => {\n        args = unpack(args, 'lab');\n        if (type(args) === 'array' && args.length === 3) {\n            return 'lab';\n        }\n    }\n});\n","import { unpack, DEG2RAD } from '../../utils/index.js';\nconst { sin, cos } = Math;\n\nconst lch2lab = (...args) => {\n    /*\n    Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n    These formulas were invented by David Dalrymple to obtain maximum contrast without going\n    out of gamut if the parameters are in the range 0-1.\n\n    A saturation multiplier was added by Gregor Aisch\n    */\n    let [l, c, h] = unpack(args, 'lch');\n    if (isNaN(h)) h = 0;\n    h = h * DEG2RAD;\n    return [l, cos(h) * c, sin(h) * c];\n};\n\nexport default lch2lab;\n","import { unpack } from '../../utils/index.js';\nimport lch2lab from './lch2lab.js';\nimport lab2rgb from '../lab/lab2rgb.js';\n\nconst lch2rgb = (...args) => {\n    args = unpack(args, 'lch');\n    const [l, c, h] = args;\n    const [L, a, b_] = lch2lab(l, c, h);\n    const [r, g, b] = lab2rgb(L, a, b_);\n    return [r, g, b, args.length > 3 ? args[3] : 1];\n};\n\nexport default lch2rgb;\n","import { unpack } from '../../utils/index.js';\nimport lch2rgb from './lch2rgb.js';\n\nconst hcl2rgb = (...args) => {\n    const hcl = unpack(args, 'hcl').reverse();\n    return lch2rgb(...hcl);\n};\n\nexport default hcl2rgb;\n","import { unpack, RAD2DEG } from '../../utils/index.js';\nconst { sqrt, atan2, round } = Math;\n\nconst lab2lch = (...args) => {\n    const [l, a, b] = unpack(args, 'lab');\n    const c = sqrt(a * a + b * b);\n    let h = (atan2(b, a) * RAD2DEG + 360) % 360;\n    if (round(c * 10000) === 0) h = Number.NaN;\n    return [l, c, h];\n};\n\nexport default lab2lch;\n","import { unpack } from '../../utils/index.js';\nimport rgb2lab from '../lab/rgb2lab.js';\nimport lab2lch from './lab2lch.js';\n\nconst rgb2lch = (...args) => {\n    const [r, g, b] = unpack(args, 'rgb');\n    const [l, a, b_] = rgb2lab(r, g, b);\n    return lab2lch(l, a, b_);\n};\n\nexport default rgb2lch;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport lch2rgb from './lch2rgb.js';\nimport hcl2rgb from './hcl2rgb.js';\nimport rgb2lch from './rgb2lch.js';\n\nColor.prototype.lch = function () {\n    return rgb2lch(this._rgb);\n};\nColor.prototype.hcl = function () {\n    return rgb2lch(this._rgb).reverse();\n};\n\nchroma.lch = (...args) => new Color(...args, 'lch');\nchroma.hcl = (...args) => new Color(...args, 'hcl');\n\ninput.format.lch = lch2rgb;\ninput.format.hcl = hcl2rgb;\n['lch', 'hcl'].forEach((m) =>\n    input.autodetect.push({\n        p: 2,\n        test: (...args) => {\n            args = unpack(args, m);\n            if (type(args) === 'array' && args.length === 3) {\n                return m;\n            }\n        }\n    })\n);\n","/**\n\tX11 color names\n\n\thttp://www.w3.org/TR/css3-color/#svg-color\n*/\n\nconst w3cx11 = {\n    aliceblue: '#f0f8ff',\n    antiquewhite: '#faebd7',\n    aqua: '#00ffff',\n    aquamarine: '#7fffd4',\n    azure: '#f0ffff',\n    beige: '#f5f5dc',\n    bisque: '#ffe4c4',\n    black: '#000000',\n    blanchedalmond: '#ffebcd',\n    blue: '#0000ff',\n    blueviolet: '#8a2be2',\n    brown: '#a52a2a',\n    burlywood: '#deb887',\n    cadetblue: '#5f9ea0',\n    chartreuse: '#7fff00',\n    chocolate: '#d2691e',\n    coral: '#ff7f50',\n    cornflowerblue: '#6495ed',\n    cornsilk: '#fff8dc',\n    crimson: '#dc143c',\n    cyan: '#00ffff',\n    darkblue: '#00008b',\n    darkcyan: '#008b8b',\n    darkgoldenrod: '#b8860b',\n    darkgray: '#a9a9a9',\n    darkgreen: '#006400',\n    darkgrey: '#a9a9a9',\n    darkkhaki: '#bdb76b',\n    darkmagenta: '#8b008b',\n    darkolivegreen: '#556b2f',\n    darkorange: '#ff8c00',\n    darkorchid: '#9932cc',\n    darkred: '#8b0000',\n    darksalmon: '#e9967a',\n    darkseagreen: '#8fbc8f',\n    darkslateblue: '#483d8b',\n    darkslategray: '#2f4f4f',\n    darkslategrey: '#2f4f4f',\n    darkturquoise: '#00ced1',\n    darkviolet: '#9400d3',\n    deeppink: '#ff1493',\n    deepskyblue: '#00bfff',\n    dimgray: '#696969',\n    dimgrey: '#696969',\n    dodgerblue: '#1e90ff',\n    firebrick: '#b22222',\n    floralwhite: '#fffaf0',\n    forestgreen: '#228b22',\n    fuchsia: '#ff00ff',\n    gainsboro: '#dcdcdc',\n    ghostwhite: '#f8f8ff',\n    gold: '#ffd700',\n    goldenrod: '#daa520',\n    gray: '#808080',\n    green: '#008000',\n    greenyellow: '#adff2f',\n    grey: '#808080',\n    honeydew: '#f0fff0',\n    hotpink: '#ff69b4',\n    indianred: '#cd5c5c',\n    indigo: '#4b0082',\n    ivory: '#fffff0',\n    khaki: '#f0e68c',\n    laserlemon: '#ffff54',\n    lavender: '#e6e6fa',\n    lavenderblush: '#fff0f5',\n    lawngreen: '#7cfc00',\n    lemonchiffon: '#fffacd',\n    lightblue: '#add8e6',\n    lightcoral: '#f08080',\n    lightcyan: '#e0ffff',\n    lightgoldenrod: '#fafad2',\n    lightgoldenrodyellow: '#fafad2',\n    lightgray: '#d3d3d3',\n    lightgreen: '#90ee90',\n    lightgrey: '#d3d3d3',\n    lightpink: '#ffb6c1',\n    lightsalmon: '#ffa07a',\n    lightseagreen: '#20b2aa',\n    lightskyblue: '#87cefa',\n    lightslategray: '#778899',\n    lightslategrey: '#778899',\n    lightsteelblue: '#b0c4de',\n    lightyellow: '#ffffe0',\n    lime: '#00ff00',\n    limegreen: '#32cd32',\n    linen: '#faf0e6',\n    magenta: '#ff00ff',\n    maroon: '#800000',\n    maroon2: '#7f0000',\n    maroon3: '#b03060',\n    mediumaquamarine: '#66cdaa',\n    mediumblue: '#0000cd',\n    mediumorchid: '#ba55d3',\n    mediumpurple: '#9370db',\n    mediumseagreen: '#3cb371',\n    mediumslateblue: '#7b68ee',\n    mediumspringgreen: '#00fa9a',\n    mediumturquoise: '#48d1cc',\n    mediumvioletred: '#c71585',\n    midnightblue: '#191970',\n    mintcream: '#f5fffa',\n    mistyrose: '#ffe4e1',\n    moccasin: '#ffe4b5',\n    navajowhite: '#ffdead',\n    navy: '#000080',\n    oldlace: '#fdf5e6',\n    olive: '#808000',\n    olivedrab: '#6b8e23',\n    orange: '#ffa500',\n    orangered: '#ff4500',\n    orchid: '#da70d6',\n    palegoldenrod: '#eee8aa',\n    palegreen: '#98fb98',\n    paleturquoise: '#afeeee',\n    palevioletred: '#db7093',\n    papayawhip: '#ffefd5',\n    peachpuff: '#ffdab9',\n    peru: '#cd853f',\n    pink: '#ffc0cb',\n    plum: '#dda0dd',\n    powderblue: '#b0e0e6',\n    purple: '#800080',\n    purple2: '#7f007f',\n    purple3: '#a020f0',\n    rebeccapurple: '#663399',\n    red: '#ff0000',\n    rosybrown: '#bc8f8f',\n    royalblue: '#4169e1',\n    saddlebrown: '#8b4513',\n    salmon: '#fa8072',\n    sandybrown: '#f4a460',\n    seagreen: '#2e8b57',\n    seashell: '#fff5ee',\n    sienna: '#a0522d',\n    silver: '#c0c0c0',\n    skyblue: '#87ceeb',\n    slateblue: '#6a5acd',\n    slategray: '#708090',\n    slategrey: '#708090',\n    snow: '#fffafa',\n    springgreen: '#00ff7f',\n    steelblue: '#4682b4',\n    tan: '#d2b48c',\n    teal: '#008080',\n    thistle: '#d8bfd8',\n    tomato: '#ff6347',\n    turquoise: '#40e0d0',\n    violet: '#ee82ee',\n    wheat: '#f5deb3',\n    white: '#ffffff',\n    whitesmoke: '#f5f5f5',\n    yellow: '#ffff00',\n    yellowgreen: '#9acd32'\n};\n\nexport default w3cx11;\n","import Color from '../../Color.js';\nimport input from '../input.js';\nimport { type } from '../../utils/index.js';\n\nimport w3cx11 from '../../colors/w3cx11.js';\nimport hex2rgb from '../hex/hex2rgb.js';\nimport rgb2hex from '../hex/rgb2hex.js';\n\nColor.prototype.name = function () {\n    const hex = rgb2hex(this._rgb, 'rgb');\n    for (let n of Object.keys(w3cx11)) {\n        if (w3cx11[n] === hex) return n.toLowerCase();\n    }\n    return hex;\n};\n\ninput.format.named = (name) => {\n    name = name.toLowerCase();\n    if (w3cx11[name]) return hex2rgb(w3cx11[name]);\n    throw new Error('unknown color name: ' + name);\n};\n\ninput.autodetect.push({\n    p: 5,\n    test: (h, ...rest) => {\n        if (!rest.length && type(h) === 'string' && w3cx11[h.toLowerCase()]) {\n            return 'named';\n        }\n    }\n});\n","import { type } from '../../utils/index.js';\n\nconst num2rgb = (num) => {\n    if (type(num) == 'number' && num >= 0 && num <= 0xffffff) {\n        const r = num >> 16;\n        const g = (num >> 8) & 0xff;\n        const b = num & 0xff;\n        return [r, g, b, 1];\n    }\n    throw new Error('unknown num color: ' + num);\n};\n\nexport default num2rgb;\n","import { unpack } from '../../utils/index.js';\n\nconst rgb2num = (...args) => {\n    const [r, g, b] = unpack(args, 'rgb');\n    return (r << 16) + (g << 8) + b;\n};\n\nexport default rgb2num;\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport { type } from '../../utils/index.js';\nimport num2rgb from './num2rgb.js';\nimport rgb2num from './rgb2num.js';\n\nColor.prototype.num = function () {\n    return rgb2num(this._rgb);\n};\n\nchroma.num = (...args) => new Color(...args, 'num');\n\ninput.format.num = num2rgb;\n\ninput.autodetect.push({\n    p: 5,\n    test: (...args) => {\n        if (\n            args.length === 1 &&\n            type(args[0]) === 'number' &&\n            args[0] >= 0 &&\n            args[0] <= 0xffffff\n        ) {\n            return 'num';\n        }\n    }\n});\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport { unpack, type } from '../../utils/index.js';\nconst { round } = Math;\n\nColor.prototype.rgb = function (rnd = true) {\n    if (rnd === false) return this._rgb.slice(0, 3);\n    return this._rgb.slice(0, 3).map(round);\n};\n\nColor.prototype.rgba = function (rnd = true) {\n    return this._rgb.slice(0, 4).map((v, i) => {\n        return i < 3 ? (rnd === false ? v : round(v)) : v;\n    });\n};\n\nchroma.rgb = (...args) => new Color(...args, 'rgb');\n\ninput.format.rgb = (...args) => {\n    const rgba = unpack(args, 'rgba');\n    if (rgba[3] === undefined) rgba[3] = 1;\n    return rgba;\n};\n\ninput.autodetect.push({\n    p: 3,\n    test: (...args) => {\n        args = unpack(args, 'rgba');\n        if (\n            type(args) === 'array' &&\n            (args.length === 3 ||\n                (args.length === 4 &&\n                    type(args[3]) == 'number' &&\n                    args[3] >= 0 &&\n                    args[3] <= 1))\n        ) {\n            return 'rgb';\n        }\n    }\n});\n","/*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n */\n\nconst { log } = Math;\n\nconst temperature2rgb = (kelvin) => {\n    const temp = kelvin / 100;\n    let r, g, b;\n    if (temp < 66) {\n        r = 255;\n        g =\n            temp < 6\n                ? 0\n                : -155.25485562709179 -\n                  0.44596950469579133 * (g = temp - 2) +\n                  104.49216199393888 * log(g);\n        b =\n            temp < 20\n                ? 0\n                : -254.76935184120902 +\n                  0.8274096064007395 * (b = temp - 10) +\n                  115.67994401066147 * log(b);\n    } else {\n        r =\n            351.97690566805693 +\n            0.114206453784165 * (r = temp - 55) -\n            40.25366309332127 * log(r);\n        g =\n            325.4494125711974 +\n            0.07943456536662342 * (g = temp - 50) -\n            28.0852963507957 * log(g);\n        b = 255;\n    }\n    return [r, g, b, 1];\n};\n\nexport default temperature2rgb;\n","/*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n **/\n\nimport temperature2rgb from './temperature2rgb.js';\nimport { unpack } from '../../utils/index.js';\nconst { round } = Math;\n\nconst rgb2temperature = (...args) => {\n    const rgb = unpack(args, 'rgb');\n    const r = rgb[0],\n        b = rgb[2];\n    let minTemp = 1000;\n    let maxTemp = 40000;\n    const eps = 0.4;\n    let temp;\n    while (maxTemp - minTemp > eps) {\n        temp = (maxTemp + minTemp) * 0.5;\n        const rgb = temperature2rgb(temp);\n        if (rgb[2] / rgb[0] >= b / r) {\n            maxTemp = temp;\n        } else {\n            minTemp = temp;\n        }\n    }\n    return round(temp);\n};\n\nexport default rgb2temperature;\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport temperature2rgb from './temperature2rgb.js';\nimport rgb2temperature from './rgb2temperature.js';\n\nColor.prototype.temp =\n    Color.prototype.kelvin =\n    Color.prototype.temperature =\n        function () {\n            return rgb2temperature(this._rgb);\n        };\n\nchroma.temp =\n    chroma.kelvin =\n    chroma.temperature =\n        (...args) => new Color(...args, 'temp');\n\ninput.format.temp =\n    input.format.kelvin =\n    input.format.temperature =\n        temperature2rgb;\n","import { unpack } from '../../utils/index.js';\nconst { pow, sign } = Math;\n\n/*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\nconst oklab2rgb = (...args) => {\n    args = unpack(args, 'lab');\n    const [L, a, b] = args;\n\n    const l = pow(L + 0.3963377774 * a + 0.2158037573 * b, 3);\n    const m = pow(L - 0.1055613458 * a - 0.0638541728 * b, 3);\n    const s = pow(L - 0.0894841775 * a - 1.291485548 * b, 3);\n\n    return [\n        255 * lrgb2rgb(+4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s),\n        255 * lrgb2rgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s),\n        255 * lrgb2rgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s),\n        args.length > 3 ? args[3] : 1\n    ];\n};\n\nexport default oklab2rgb;\n\nfunction lrgb2rgb(c) {\n    const abs = Math.abs(c);\n    if (abs > 0.0031308) {\n        return (sign(c) || 1) * (1.055 * pow(abs, 1 / 2.4) - 0.055);\n    }\n    return c * 12.92;\n}\n","import { unpack } from '../../utils/index.js';\nconst { cbrt, pow, sign } = Math;\n\nconst rgb2oklab = (...args) => {\n    // OKLab color space implementation taken from\n    // https://bottosson.github.io/posts/oklab/\n    const [r, g, b] = unpack(args, 'rgb');\n    const [lr, lg, lb] = [\n        rgb2lrgb(r / 255),\n        rgb2lrgb(g / 255),\n        rgb2lrgb(b / 255)\n    ];\n    const l = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb);\n    const m = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb);\n    const s = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb);\n\n    return [\n        0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,\n        1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,\n        0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s\n    ];\n};\n\nexport default rgb2oklab;\n\nfunction rgb2lrgb(c) {\n    const abs = Math.abs(c);\n    if (abs < 0.04045) {\n        return c / 12.92;\n    }\n    return (sign(c) || 1) * pow((abs + 0.055) / 1.055, 2.4);\n}\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport oklab2rgb from './oklab2rgb.js';\nimport rgb2oklab from './rgb2oklab.js';\n\nColor.prototype.oklab = function () {\n    return rgb2oklab(this._rgb);\n};\n\nchroma.oklab = (...args) => new Color(...args, 'oklab');\n\ninput.format.oklab = oklab2rgb;\n\ninput.autodetect.push({\n    p: 3,\n    test: (...args) => {\n        args = unpack(args, 'oklab');\n        if (type(args) === 'array' && args.length === 3) {\n            return 'oklab';\n        }\n    }\n});\n","import { unpack } from '../../utils/index.js';\nimport lch2lab from '../lch/lch2lab.js';\nimport oklab2rgb from '../oklab/oklab2rgb.js';\n\nconst oklch2rgb = (...args) => {\n    args = unpack(args, 'lch');\n    const [l, c, h] = args;\n    const [L, a, b_] = lch2lab(l, c, h);\n    const [r, g, b] = oklab2rgb(L, a, b_);\n    return [r, g, b, args.length > 3 ? args[3] : 1];\n};\n\nexport default oklch2rgb;\n","import { unpack } from '../../utils/index.js';\nimport rgb2oklab from '../oklab/rgb2oklab.js';\nimport lab2lch from '../lch/lab2lch.js';\n\nconst rgb2oklch = (...args) => {\n    const [r, g, b] = unpack(args, 'rgb');\n    const [l, a, b_] = rgb2oklab(r, g, b);\n    return lab2lch(l, a, b_);\n};\n\nexport default rgb2oklch;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport oklch2rgb from './oklch2rgb.js';\nimport rgb2oklch from './rgb2oklch.js';\n\nColor.prototype.oklch = function () {\n    return rgb2oklch(this._rgb);\n};\n\nchroma.oklch = (...args) => new Color(...args, 'oklch');\n\ninput.format.oklch = oklch2rgb;\n\ninput.autodetect.push({\n    p: 3,\n    test: (...args) => {\n        args = unpack(args, 'oklch');\n        if (type(args) === 'array' && args.length === 3) {\n            return 'oklch';\n        }\n    }\n});\n","import Color from '../Color.js';\nimport { type } from '../utils/index.js';\n\nColor.prototype.alpha = function (a, mutate = false) {\n    if (a !== undefined && type(a) === 'number') {\n        if (mutate) {\n            this._rgb[3] = a;\n            return this;\n        }\n        return new Color([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n    }\n    return this._rgb[3];\n};\n","import Color from '../Color.js';\n\nColor.prototype.clipped = function () {\n    return this._rgb._clipped || false;\n};\n","import '../io/lab/index.js';\nimport Color from '../Color.js';\nimport LAB_CONSTANTS from '../io/lab/lab-constants.js';\n\nColor.prototype.darken = function (amount = 1) {\n    const me = this;\n    const lab = me.lab();\n    lab[0] -= LAB_CONSTANTS.Kn * amount;\n    return new Color(lab, 'lab').alpha(me.alpha(), true);\n};\n\nColor.prototype.brighten = function (amount = 1) {\n    return this.darken(-amount);\n};\n\nColor.prototype.darker = Color.prototype.darken;\nColor.prototype.brighter = Color.prototype.brighten;\n","import Color from '../Color.js';\n\nColor.prototype.get = function (mc) {\n    const [mode, channel] = mc.split('.');\n    const src = this[mode]();\n    if (channel) {\n        const i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n        if (i > -1) return src[i];\n        throw new Error(`unknown channel ${channel} in mode ${mode}`);\n    } else {\n        return src;\n    }\n};\n","import Color from '../Color.js';\nimport { type } from '../utils/index.js';\nconst { pow } = Math;\n\nconst EPS = 1e-7;\nconst MAX_ITER = 20;\n\nColor.prototype.luminance = function (lum, mode = 'rgb') {\n    if (lum !== undefined && type(lum) === 'number') {\n        if (lum === 0) {\n            // return pure black\n            return new Color([0, 0, 0, this._rgb[3]], 'rgb');\n        }\n        if (lum === 1) {\n            // return pure white\n            return new Color([255, 255, 255, this._rgb[3]], 'rgb');\n        }\n        // compute new color using...\n        let cur_lum = this.luminance();\n        let max_iter = MAX_ITER;\n\n        const test = (low, high) => {\n            const mid = low.interpolate(high, 0.5, mode);\n            const lm = mid.luminance();\n            if (Math.abs(lum - lm) < EPS || !max_iter--) {\n                // close enough\n                return mid;\n            }\n            return lm > lum ? test(low, mid) : test(mid, high);\n        };\n\n        const rgb = (\n            cur_lum > lum\n                ? test(new Color([0, 0, 0]), this)\n                : test(this, new Color([255, 255, 255]))\n        ).rgb();\n        return new Color([...rgb, this._rgb[3]]);\n    }\n    return rgb2luminance(...this._rgb.slice(0, 3));\n};\n\nconst rgb2luminance = (r, g, b) => {\n    // relative luminance\n    // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n    r = luminance_x(r);\n    g = luminance_x(g);\n    b = luminance_x(b);\n    return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nconst luminance_x = (x) => {\n    x /= 255;\n    return x <= 0.03928 ? x / 12.92 : pow((x + 0.055) / 1.055, 2.4);\n};\n","export default {};\n","import Color from '../Color.js';\nimport { type } from '../utils/index.js';\nimport interpolator from '../interpolator/index.js';\n\nexport default (col1, col2, f = 0.5, ...rest) => {\n    let mode = rest[0] || 'lrgb';\n    if (!interpolator[mode] && !rest.length) {\n        // fall back to the first supported mode\n        mode = Object.keys(interpolator)[0];\n    }\n    if (!interpolator[mode]) {\n        throw new Error(`interpolation mode ${mode} is not defined`);\n    }\n    if (type(col1) !== 'object') col1 = new Color(col1);\n    if (type(col2) !== 'object') col2 = new Color(col2);\n    return interpolator[mode](col1, col2, f).alpha(\n        col1.alpha() + f * (col2.alpha() - col1.alpha())\n    );\n};\n","import Color from '../Color.js';\nimport mix from '../generator/mix.js';\n\nColor.prototype.mix = Color.prototype.interpolate = function (\n    col2,\n    f = 0.5,\n    ...rest\n) {\n    return mix(this, col2, f, ...rest);\n};\n","import Color from '../Color.js';\n\nColor.prototype.premultiply = function (mutate = false) {\n    const rgb = this._rgb;\n    const a = rgb[3];\n    if (mutate) {\n        this._rgb = [rgb[0] * a, rgb[1] * a, rgb[2] * a, a];\n        return this;\n    } else {\n        return new Color([rgb[0] * a, rgb[1] * a, rgb[2] * a, a], 'rgb');\n    }\n};\n","import '../io/lch/index.js';\nimport Color from '../Color.js';\nimport LAB_CONSTANTS from '../io/lab/lab-constants.js';\n\nColor.prototype.saturate = function (amount = 1) {\n    const me = this;\n    const lch = me.lch();\n    lch[1] += LAB_CONSTANTS.Kn * amount;\n    if (lch[1] < 0) lch[1] = 0;\n    return new Color(lch, 'lch').alpha(me.alpha(), true);\n};\n\nColor.prototype.desaturate = function (amount = 1) {\n    return this.saturate(-amount);\n};\n","import Color from '../Color.js';\nimport { type } from '../utils/index.js';\n\nColor.prototype.set = function (mc, value, mutate = false) {\n    const [mode, channel] = mc.split('.');\n    const src = this[mode]();\n    if (channel) {\n        const i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n        if (i > -1) {\n            if (type(value) == 'string') {\n                switch (value.charAt(0)) {\n                    case '+':\n                        src[i] += +value;\n                        break;\n                    case '-':\n                        src[i] += +value;\n                        break;\n                    case '*':\n                        src[i] *= +value.substr(1);\n                        break;\n                    case '/':\n                        src[i] /= +value.substr(1);\n                        break;\n                    default:\n                        src[i] = +value;\n                }\n            } else if (type(value) === 'number') {\n                src[i] = value;\n            } else {\n                throw new Error(`unsupported value for Color.set`);\n            }\n            const out = new Color(src, mode);\n            if (mutate) {\n                this._rgb = out._rgb;\n                return this;\n            }\n            return out;\n        }\n        throw new Error(`unknown channel ${channel} in mode ${mode}`);\n    } else {\n        return src;\n    }\n};\n","import '../io/lab/index.js';\nimport Color from '../Color.js';\nimport mix from '../generator/mix.js';\n\nColor.prototype.tint = function (f = 0.5, ...rest) {\n    return mix(this, 'white', f, ...rest);\n};\n\nColor.prototype.shade = function (f = 0.5, ...rest) {\n    return mix(this, 'black', f, ...rest);\n};\n","import Color from '../Color.js';\nimport index from './index.js';\n\nconst rgb = (col1, col2, f) => {\n    const xyz0 = col1._rgb;\n    const xyz1 = col2._rgb;\n    return new Color(\n        xyz0[0] + f * (xyz1[0] - xyz0[0]),\n        xyz0[1] + f * (xyz1[1] - xyz0[1]),\n        xyz0[2] + f * (xyz1[2] - xyz0[2]),\n        'rgb'\n    );\n};\n\n// register interpolator\nindex.rgb = rgb;\n\nexport default rgb;\n","import Color from '../Color.js';\nconst { sqrt, pow } = Math;\nimport index from './index.js';\n\nconst lrgb = (col1, col2, f) => {\n    const [x1, y1, z1] = col1._rgb;\n    const [x2, y2, z2] = col2._rgb;\n    return new Color(\n        sqrt(pow(x1, 2) * (1 - f) + pow(x2, 2) * f),\n        sqrt(pow(y1, 2) * (1 - f) + pow(y2, 2) * f),\n        sqrt(pow(z1, 2) * (1 - f) + pow(z2, 2) * f),\n        'rgb'\n    );\n};\n\n// register interpolator\nindex.lrgb = lrgb;\n\nexport default lrgb;\n","import '../io/lab/index.js';\nimport index from './index.js';\nimport Color from '../Color.js';\n\nconst lab = (col1, col2, f) => {\n    const xyz0 = col1.lab();\n    const xyz1 = col2.lab();\n    return new Color(\n        xyz0[0] + f * (xyz1[0] - xyz0[0]),\n        xyz0[1] + f * (xyz1[1] - xyz0[1]),\n        xyz0[2] + f * (xyz1[2] - xyz0[2]),\n        'lab'\n    );\n};\n\n// register interpolator\nindex.lab = lab;\n\nexport default lab;\n","import Color from '../Color.js';\n\nexport default (col1, col2, f, m) => {\n    let xyz0, xyz1;\n    if (m === 'hsl') {\n        xyz0 = col1.hsl();\n        xyz1 = col2.hsl();\n    } else if (m === 'hsv') {\n        xyz0 = col1.hsv();\n        xyz1 = col2.hsv();\n    } else if (m === 'hcg') {\n        xyz0 = col1.hcg();\n        xyz1 = col2.hcg();\n    } else if (m === 'hsi') {\n        xyz0 = col1.hsi();\n        xyz1 = col2.hsi();\n    } else if (m === 'lch' || m === 'hcl') {\n        m = 'hcl';\n        xyz0 = col1.hcl();\n        xyz1 = col2.hcl();\n    } else if (m === 'oklch') {\n        xyz0 = col1.oklch().reverse();\n        xyz1 = col2.oklch().reverse();\n    }\n\n    let hue0, hue1, sat0, sat1, lbv0, lbv1;\n    if (m.substr(0, 1) === 'h' || m === 'oklch') {\n        [hue0, sat0, lbv0] = xyz0;\n        [hue1, sat1, lbv1] = xyz1;\n    }\n\n    let sat, hue, lbv, dh;\n\n    if (!isNaN(hue0) && !isNaN(hue1)) {\n        // both colors have hue\n        if (hue1 > hue0 && hue1 - hue0 > 180) {\n            dh = hue1 - (hue0 + 360);\n        } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n            dh = hue1 + 360 - hue0;\n        } else {\n            dh = hue1 - hue0;\n        }\n        hue = hue0 + f * dh;\n    } else if (!isNaN(hue0)) {\n        hue = hue0;\n        if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') sat = sat0;\n    } else if (!isNaN(hue1)) {\n        hue = hue1;\n        if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') sat = sat1;\n    } else {\n        hue = Number.NaN;\n    }\n\n    if (sat === undefined) sat = sat0 + f * (sat1 - sat0);\n    lbv = lbv0 + f * (lbv1 - lbv0);\n    return m === 'oklch'\n        ? new Color([lbv, sat, hue], m)\n        : new Color([hue, sat, lbv], m);\n};\n","import '../io/lch/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst lch = (col1, col2, f) => {\n    return interpolate_hsx(col1, col2, f, 'lch');\n};\n\n// register interpolator\nindex.lch = lch;\nindex.hcl = lch;\n\nexport default lch;\n","import '../io/num/index.js';\nimport index from './index.js';\n\nimport Color from '../Color.js';\n\nconst num = (col1, col2, f) => {\n    const c1 = col1.num();\n    const c2 = col2.num();\n    return new Color(c1 + f * (c2 - c1), 'num');\n};\n\n// register interpolator\nindex.num = num;\n\nexport default num;\n","import '../io/hcg/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst hcg = (col1, col2, f) => {\n    return interpolate_hsx(col1, col2, f, 'hcg');\n};\n\n// register interpolator\nindex.hcg = hcg;\n\nexport default hcg;\n","import '../io/hsi/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst hsi = (col1, col2, f) => {\n    return interpolate_hsx(col1, col2, f, 'hsi');\n};\n\n// register interpolator\nindex.hsi = hsi;\n\nexport default hsi;\n","import '../io/hsl/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst hsl = (col1, col2, f) => {\n    return interpolate_hsx(col1, col2, f, 'hsl');\n};\n\n// register interpolator\nindex.hsl = hsl;\n\nexport default hsl;\n","import '../io/hsv/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst hsv = (col1, col2, f) => {\n    return interpolate_hsx(col1, col2, f, 'hsv');\n};\n\n// register interpolator\nindex.hsv = hsv;\n\nexport default hsv;\n","import '../io/oklab/index.js';\nimport index from './index.js';\nimport Color from '../Color.js';\n\nconst oklab = (col1, col2, f) => {\n    const xyz0 = col1.oklab();\n    const xyz1 = col2.oklab();\n    return new Color(\n        xyz0[0] + f * (xyz1[0] - xyz0[0]),\n        xyz0[1] + f * (xyz1[1] - xyz0[1]),\n        xyz0[2] + f * (xyz1[2] - xyz0[2]),\n        'oklab'\n    );\n};\n\n// register interpolator\nindex.oklab = oklab;\n\nexport default oklab;\n","import '../io/lch/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst oklch = (col1, col2, f) => {\n    return interpolate_hsx(col1, col2, f, 'oklch');\n};\n\n// register interpolator\nindex.oklch = oklch;\n\nexport default oklch;\n","import Color from '../Color.js';\nimport { clip_rgb } from '../utils/index.js';\n\nconst { pow, sqrt, PI, cos, sin, atan2 } = Math;\n\nexport default (colors, mode = 'lrgb', weights = null) => {\n    const l = colors.length;\n    if (!weights) weights = Array.from(new Array(l)).map(() => 1);\n    // normalize weights\n    const k =\n        l /\n        weights.reduce(function (a, b) {\n            return a + b;\n        });\n    weights.forEach((w, i) => {\n        weights[i] *= k;\n    });\n    // convert colors to Color objects\n    colors = colors.map((c) => new Color(c));\n    if (mode === 'lrgb') {\n        return _average_lrgb(colors, weights);\n    }\n    const first = colors.shift();\n    const xyz = first.get(mode);\n    const cnt = [];\n    let dx = 0;\n    let dy = 0;\n    // initial color\n    for (let i = 0; i < xyz.length; i++) {\n        xyz[i] = (xyz[i] || 0) * weights[0];\n        cnt.push(isNaN(xyz[i]) ? 0 : weights[0]);\n        if (mode.charAt(i) === 'h' && !isNaN(xyz[i])) {\n            const A = (xyz[i] / 180) * PI;\n            dx += cos(A) * weights[0];\n            dy += sin(A) * weights[0];\n        }\n    }\n\n    let alpha = first.alpha() * weights[0];\n    colors.forEach((c, ci) => {\n        const xyz2 = c.get(mode);\n        alpha += c.alpha() * weights[ci + 1];\n        for (let i = 0; i < xyz.length; i++) {\n            if (!isNaN(xyz2[i])) {\n                cnt[i] += weights[ci + 1];\n                if (mode.charAt(i) === 'h') {\n                    const A = (xyz2[i] / 180) * PI;\n                    dx += cos(A) * weights[ci + 1];\n                    dy += sin(A) * weights[ci + 1];\n                } else {\n                    xyz[i] += xyz2[i] * weights[ci + 1];\n                }\n            }\n        }\n    });\n\n    for (let i = 0; i < xyz.length; i++) {\n        if (mode.charAt(i) === 'h') {\n            let A = (atan2(dy / cnt[i], dx / cnt[i]) / PI) * 180;\n            while (A < 0) A += 360;\n            while (A >= 360) A -= 360;\n            xyz[i] = A;\n        } else {\n            xyz[i] = xyz[i] / cnt[i];\n        }\n    }\n    alpha /= l;\n    return new Color(xyz, mode).alpha(alpha > 0.99999 ? 1 : alpha, true);\n};\n\nconst _average_lrgb = (colors, weights) => {\n    const l = colors.length;\n    const xyz = [0, 0, 0, 0];\n    for (let i = 0; i < colors.length; i++) {\n        const col = colors[i];\n        const f = weights[i] / l;\n        const rgb = col._rgb;\n        xyz[0] += pow(rgb[0], 2) * f;\n        xyz[1] += pow(rgb[1], 2) * f;\n        xyz[2] += pow(rgb[2], 2) * f;\n        xyz[3] += rgb[3] * f;\n    }\n    xyz[0] = sqrt(xyz[0]);\n    xyz[1] = sqrt(xyz[1]);\n    xyz[2] = sqrt(xyz[2]);\n    if (xyz[3] > 0.9999999) xyz[3] = 1;\n    return new Color(clip_rgb(xyz));\n};\n","// minimal multi-purpose interface\n\n// @requires utils color analyze\nimport chroma from '../chroma.js';\nimport { limit, type } from '../utils/index.js';\n\nconst { pow } = Math;\n\nexport default function (colors) {\n    // constructor\n    let _mode = 'rgb';\n    let _nacol = chroma('#ccc');\n    let _spread = 0;\n    // const _fixed = false;\n    let _domain = [0, 1];\n    let _pos = [];\n    let _padding = [0, 0];\n    let _classes = false;\n    let _colors = [];\n    let _out = false;\n    let _min = 0;\n    let _max = 1;\n    let _correctLightness = false;\n    let _colorCache = {};\n    let _useCache = true;\n    let _gamma = 1;\n\n    // private methods\n\n    const setColors = function (colors) {\n        colors = colors || ['#fff', '#000'];\n        if (\n            colors &&\n            type(colors) === 'string' &&\n            chroma.brewer &&\n            chroma.brewer[colors.toLowerCase()]\n        ) {\n            colors = chroma.brewer[colors.toLowerCase()];\n        }\n        if (type(colors) === 'array') {\n            // handle single color\n            if (colors.length === 1) {\n                colors = [colors[0], colors[0]];\n            }\n            // make a copy of the colors\n            colors = colors.slice(0);\n            // convert to chroma classes\n            for (let c = 0; c < colors.length; c++) {\n                colors[c] = chroma(colors[c]);\n            }\n            // auto-fill color position\n            _pos.length = 0;\n            for (let c = 0; c < colors.length; c++) {\n                _pos.push(c / (colors.length - 1));\n            }\n        }\n        resetCache();\n        return (_colors = colors);\n    };\n\n    const getClass = function (value) {\n        if (_classes != null) {\n            const n = _classes.length - 1;\n            let i = 0;\n            while (i < n && value >= _classes[i]) {\n                i++;\n            }\n            return i - 1;\n        }\n        return 0;\n    };\n\n    let tMapLightness = (t) => t;\n    let tMapDomain = (t) => t;\n\n    // const classifyValue = function(value) {\n    //     let val = value;\n    //     if (_classes.length > 2) {\n    //         const n = _classes.length-1;\n    //         const i = getClass(value);\n    //         const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5)));  // center of 1st class\n    //         const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5)));  // center of last class\n    //         val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n    //     }\n    //     return val;\n    // };\n\n    const getColor = function (val, bypassMap) {\n        let col, t;\n        if (bypassMap == null) {\n            bypassMap = false;\n        }\n        if (isNaN(val) || val === null) {\n            return _nacol;\n        }\n        if (!bypassMap) {\n            if (_classes && _classes.length > 2) {\n                // find the class\n                const c = getClass(val);\n                t = c / (_classes.length - 2);\n            } else if (_max !== _min) {\n                // just interpolate between min/max\n                t = (val - _min) / (_max - _min);\n            } else {\n                t = 1;\n            }\n        } else {\n            t = val;\n        }\n\n        // domain map\n        t = tMapDomain(t);\n\n        if (!bypassMap) {\n            t = tMapLightness(t); // lightness correction\n        }\n\n        if (_gamma !== 1) {\n            t = pow(t, _gamma);\n        }\n\n        t = _padding[0] + t * (1 - _padding[0] - _padding[1]);\n\n        t = limit(t, 0, 1);\n\n        const k = Math.floor(t * 10000);\n\n        if (_useCache && _colorCache[k]) {\n            col = _colorCache[k];\n        } else {\n            if (type(_colors) === 'array') {\n                //for i in [0.._pos.length-1]\n                for (let i = 0; i < _pos.length; i++) {\n                    const p = _pos[i];\n                    if (t <= p) {\n                        col = _colors[i];\n                        break;\n                    }\n                    if (t >= p && i === _pos.length - 1) {\n                        col = _colors[i];\n                        break;\n                    }\n                    if (t > p && t < _pos[i + 1]) {\n                        t = (t - p) / (_pos[i + 1] - p);\n                        col = chroma.interpolate(\n                            _colors[i],\n                            _colors[i + 1],\n                            t,\n                            _mode\n                        );\n                        break;\n                    }\n                }\n            } else if (type(_colors) === 'function') {\n                col = _colors(t);\n            }\n            if (_useCache) {\n                _colorCache[k] = col;\n            }\n        }\n        return col;\n    };\n\n    var resetCache = () => (_colorCache = {});\n\n    setColors(colors);\n\n    // public interface\n\n    const f = function (v) {\n        const c = chroma(getColor(v));\n        if (_out && c[_out]) {\n            return c[_out]();\n        } else {\n            return c;\n        }\n    };\n\n    f.classes = function (classes) {\n        if (classes != null) {\n            if (type(classes) === 'array') {\n                _classes = classes;\n                _domain = [classes[0], classes[classes.length - 1]];\n            } else {\n                const d = chroma.analyze(_domain);\n                if (classes === 0) {\n                    _classes = [d.min, d.max];\n                } else {\n                    _classes = chroma.limits(d, 'e', classes);\n                }\n            }\n            return f;\n        }\n        return _classes;\n    };\n\n    f.domain = function (domain) {\n        if (!arguments.length) {\n            return _domain;\n        }\n        _min = domain[0];\n        _max = domain[domain.length - 1];\n        _pos = [];\n        const k = _colors.length;\n        if (domain.length === k && _min !== _max) {\n            // update positions\n            for (let d of Array.from(domain)) {\n                _pos.push((d - _min) / (_max - _min));\n            }\n        } else {\n            for (let c = 0; c < k; c++) {\n                _pos.push(c / (k - 1));\n            }\n            if (domain.length > 2) {\n                // set domain map\n                const tOut = domain.map((d, i) => i / (domain.length - 1));\n                const tBreaks = domain.map((d) => (d - _min) / (_max - _min));\n                if (!tBreaks.every((val, i) => tOut[i] === val)) {\n                    tMapDomain = (t) => {\n                        if (t <= 0 || t >= 1) return t;\n                        let i = 0;\n                        while (t >= tBreaks[i + 1]) i++;\n                        const f =\n                            (t - tBreaks[i]) / (tBreaks[i + 1] - tBreaks[i]);\n                        const out = tOut[i] + f * (tOut[i + 1] - tOut[i]);\n                        return out;\n                    };\n                }\n            }\n        }\n        _domain = [_min, _max];\n        return f;\n    };\n\n    f.mode = function (_m) {\n        if (!arguments.length) {\n            return _mode;\n        }\n        _mode = _m;\n        resetCache();\n        return f;\n    };\n\n    f.range = function (colors, _pos) {\n        setColors(colors, _pos);\n        return f;\n    };\n\n    f.out = function (_o) {\n        _out = _o;\n        return f;\n    };\n\n    f.spread = function (val) {\n        if (!arguments.length) {\n            return _spread;\n        }\n        _spread = val;\n        return f;\n    };\n\n    f.correctLightness = function (v) {\n        if (v == null) {\n            v = true;\n        }\n        _correctLightness = v;\n        resetCache();\n        if (_correctLightness) {\n            tMapLightness = function (t) {\n                const L0 = getColor(0, true).lab()[0];\n                const L1 = getColor(1, true).lab()[0];\n                const pol = L0 > L1;\n                let L_actual = getColor(t, true).lab()[0];\n                const L_ideal = L0 + (L1 - L0) * t;\n                let L_diff = L_actual - L_ideal;\n                let t0 = 0;\n                let t1 = 1;\n                let max_iter = 20;\n                while (Math.abs(L_diff) > 1e-2 && max_iter-- > 0) {\n                    (function () {\n                        if (pol) {\n                            L_diff *= -1;\n                        }\n                        if (L_diff < 0) {\n                            t0 = t;\n                            t += (t1 - t) * 0.5;\n                        } else {\n                            t1 = t;\n                            t += (t0 - t) * 0.5;\n                        }\n                        L_actual = getColor(t, true).lab()[0];\n                        return (L_diff = L_actual - L_ideal);\n                    })();\n                }\n                return t;\n            };\n        } else {\n            tMapLightness = (t) => t;\n        }\n        return f;\n    };\n\n    f.padding = function (p) {\n        if (p != null) {\n            if (type(p) === 'number') {\n                p = [p, p];\n            }\n            _padding = p;\n            return f;\n        } else {\n            return _padding;\n        }\n    };\n\n    f.colors = function (numColors, out) {\n        // If no arguments are given, return the original colors that were provided\n        if (arguments.length < 2) {\n            out = 'hex';\n        }\n        let result = [];\n\n        if (arguments.length === 0) {\n            result = _colors.slice(0);\n        } else if (numColors === 1) {\n            result = [f(0.5)];\n        } else if (numColors > 1) {\n            const dm = _domain[0];\n            const dd = _domain[1] - dm;\n            result = __range__(0, numColors, false).map((i) =>\n                f(dm + (i / (numColors - 1)) * dd)\n            );\n        } else {\n            // returns all colors based on the defined classes\n            colors = [];\n            let samples = [];\n            if (_classes && _classes.length > 2) {\n                for (\n                    let i = 1, end = _classes.length, asc = 1 <= end;\n                    asc ? i < end : i > end;\n                    asc ? i++ : i--\n                ) {\n                    samples.push((_classes[i - 1] + _classes[i]) * 0.5);\n                }\n            } else {\n                samples = _domain;\n            }\n            result = samples.map((v) => f(v));\n        }\n\n        if (chroma[out]) {\n            result = result.map((c) => c[out]());\n        }\n        return result;\n    };\n\n    f.cache = function (c) {\n        if (c != null) {\n            _useCache = c;\n            return f;\n        } else {\n            return _useCache;\n        }\n    };\n\n    f.gamma = function (g) {\n        if (g != null) {\n            _gamma = g;\n            return f;\n        } else {\n            return _gamma;\n        }\n    };\n\n    f.nodata = function (d) {\n        if (d != null) {\n            _nacol = chroma(d);\n            return f;\n        } else {\n            return _nacol;\n        }\n    };\n\n    return f;\n}\n\nfunction __range__(left, right, inclusive) {\n    let range = [];\n    let ascending = left < right;\n    let end = !inclusive ? right : ascending ? right + 1 : right - 1;\n    for (let i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n        range.push(i);\n    }\n    return range;\n}\n","//\n// interpolates between a set of colors uzing a bezier spline\n//\n\n// @requires utils lab\nimport Color from '../Color.js';\nimport '../io/lab/index.js';\nimport scale from './scale.js';\n\n// nth row of the pascal triangle\nconst binom_row = function (n) {\n    let row = [1, 1];\n    for (let i = 1; i < n; i++) {\n        let newrow = [1];\n        for (let j = 1; j <= row.length; j++) {\n            newrow[j] = (row[j] || 0) + row[j - 1];\n        }\n        row = newrow;\n    }\n    return row;\n};\n\nconst bezier = function (colors) {\n    let I, lab0, lab1, lab2;\n    colors = colors.map((c) => new Color(c));\n    if (colors.length === 2) {\n        // linear interpolation\n        [lab0, lab1] = colors.map((c) => c.lab());\n        I = function (t) {\n            const lab = [0, 1, 2].map((i) => lab0[i] + t * (lab1[i] - lab0[i]));\n            return new Color(lab, 'lab');\n        };\n    } else if (colors.length === 3) {\n        // quadratic bezier interpolation\n        [lab0, lab1, lab2] = colors.map((c) => c.lab());\n        I = function (t) {\n            const lab = [0, 1, 2].map(\n                (i) =>\n                    (1 - t) * (1 - t) * lab0[i] +\n                    2 * (1 - t) * t * lab1[i] +\n                    t * t * lab2[i]\n            );\n            return new Color(lab, 'lab');\n        };\n    } else if (colors.length === 4) {\n        // cubic bezier interpolation\n        let lab3;\n        [lab0, lab1, lab2, lab3] = colors.map((c) => c.lab());\n        I = function (t) {\n            const lab = [0, 1, 2].map(\n                (i) =>\n                    (1 - t) * (1 - t) * (1 - t) * lab0[i] +\n                    3 * (1 - t) * (1 - t) * t * lab1[i] +\n                    3 * (1 - t) * t * t * lab2[i] +\n                    t * t * t * lab3[i]\n            );\n            return new Color(lab, 'lab');\n        };\n    } else if (colors.length >= 5) {\n        // general case (degree n bezier)\n        let labs, row, n;\n        labs = colors.map((c) => c.lab());\n        n = colors.length - 1;\n        row = binom_row(n);\n        I = function (t) {\n            const u = 1 - t;\n            const lab = [0, 1, 2].map((i) =>\n                labs.reduce(\n                    (sum, el, j) =>\n                        sum + row[j] * u ** (n - j) * t ** j * el[i],\n                    0\n                )\n            );\n            return new Color(lab, 'lab');\n        };\n    } else {\n        throw new RangeError('No point in running bezier with only one color.');\n    }\n    return I;\n};\n\nexport default (colors) => {\n    const f = bezier(colors);\n    f.scale = () => scale(f);\n    return f;\n};\n","/*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from https://web.archive.org/web/20180110014946/http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\n\nimport '../io/rgb/index.js';\nimport chroma from '../chroma.js';\n\nconst blend = (bottom, top, mode) => {\n    if (!blend[mode]) {\n        throw new Error('unknown blend mode ' + mode);\n    }\n    return blend[mode](bottom, top);\n};\n\nconst blend_f = (f) => (bottom, top) => {\n    const c0 = chroma(top).rgb();\n    const c1 = chroma(bottom).rgb();\n    return chroma.rgb(f(c0, c1));\n};\n\nconst each = (f) => (c0, c1) => {\n    const out = [];\n    out[0] = f(c0[0], c1[0]);\n    out[1] = f(c0[1], c1[1]);\n    out[2] = f(c0[2], c1[2]);\n    return out;\n};\n\nconst normal = (a) => a;\nconst multiply = (a, b) => (a * b) / 255;\nconst darken = (a, b) => (a > b ? b : a);\nconst lighten = (a, b) => (a > b ? a : b);\nconst screen = (a, b) => 255 * (1 - (1 - a / 255) * (1 - b / 255));\nconst overlay = (a, b) =>\n    b < 128 ? (2 * a * b) / 255 : 255 * (1 - 2 * (1 - a / 255) * (1 - b / 255));\nconst burn = (a, b) => 255 * (1 - (1 - b / 255) / (a / 255));\nconst dodge = (a, b) => {\n    if (a === 255) return 255;\n    a = (255 * (b / 255)) / (1 - a / 255);\n    return a > 255 ? 255 : a;\n};\n\n// # add = (a,b) ->\n// #     if (a + b > 255) then 255 else a + b\n\nblend.normal = blend_f(each(normal));\nblend.multiply = blend_f(each(multiply));\nblend.screen = blend_f(each(screen));\nblend.overlay = blend_f(each(overlay));\nblend.darken = blend_f(each(darken));\nblend.lighten = blend_f(each(lighten));\nblend.dodge = blend_f(each(dodge));\nblend.burn = blend_f(each(burn));\n// blend.add = blend_f(each(add));\n\nexport default blend;\n","// cubehelix interpolation\n// based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n// http://astron-soc.in/bulletin/11June/289392011.pdf\nimport { type, clip_rgb, TWOPI } from '../utils/index.js';\nimport chroma from '../chroma.js';\nconst { pow, sin, cos } = Math;\n\nexport default function (\n    start = 300,\n    rotations = -1.5,\n    hue = 1,\n    gamma = 1,\n    lightness = [0, 1]\n) {\n    let dh = 0,\n        dl;\n    if (type(lightness) === 'array') {\n        dl = lightness[1] - lightness[0];\n    } else {\n        dl = 0;\n        lightness = [lightness, lightness];\n    }\n    const f = function (fract) {\n        const a = TWOPI * ((start + 120) / 360 + rotations * fract);\n        const l = pow(lightness[0] + dl * fract, gamma);\n        const h = dh !== 0 ? hue[0] + fract * dh : hue;\n        const amp = (h * l * (1 - l)) / 2;\n        const cos_a = cos(a);\n        const sin_a = sin(a);\n        const r = l + amp * (-0.14861 * cos_a + 1.78277 * sin_a);\n        const g = l + amp * (-0.29227 * cos_a - 0.90649 * sin_a);\n        const b = l + amp * (+1.97294 * cos_a);\n        return chroma(clip_rgb([r * 255, g * 255, b * 255, 1]));\n    };\n    f.start = function (s) {\n        if (s == null) {\n            return start;\n        }\n        start = s;\n        return f;\n    };\n    f.rotations = function (r) {\n        if (r == null) {\n            return rotations;\n        }\n        rotations = r;\n        return f;\n    };\n    f.gamma = function (g) {\n        if (g == null) {\n            return gamma;\n        }\n        gamma = g;\n        return f;\n    };\n    f.hue = function (h) {\n        if (h == null) {\n            return hue;\n        }\n        hue = h;\n        if (type(hue) === 'array') {\n            dh = hue[1] - hue[0];\n            if (dh === 0) {\n                hue = hue[1];\n            }\n        } else {\n            dh = 0;\n        }\n        return f;\n    };\n    f.lightness = function (h) {\n        if (h == null) {\n            return lightness;\n        }\n        if (type(h) === 'array') {\n            lightness = h;\n            dl = h[1] - h[0];\n        } else {\n            lightness = [h, h];\n            dl = 0;\n        }\n        return f;\n    };\n    f.scale = () => chroma.scale(f);\n    f.hue(hue);\n    return f;\n}\n","import Color from '../Color.js';\nconst digits = '0123456789abcdef';\n\nconst { floor, random } = Math;\n\nexport default () => {\n    let code = '#';\n    for (let i = 0; i < 6; i++) {\n        code += digits.charAt(floor(random() * 16));\n    }\n    return new Color(code, 'hex');\n};\n","import type from './type.js';\n\nconst { log, pow, floor, abs } = Math;\n\nexport function analyze(data, key = null) {\n    const r = {\n        min: Number.MAX_VALUE,\n        max: Number.MAX_VALUE * -1,\n        sum: 0,\n        values: [],\n        count: 0\n    };\n    if (type(data) === 'object') {\n        data = Object.values(data);\n    }\n    data.forEach((val) => {\n        if (key && type(val) === 'object') val = val[key];\n        if (val !== undefined && val !== null && !isNaN(val)) {\n            r.values.push(val);\n            r.sum += val;\n            if (val < r.min) r.min = val;\n            if (val > r.max) r.max = val;\n            r.count += 1;\n        }\n    });\n\n    r.domain = [r.min, r.max];\n\n    r.limits = (mode, num) => limits(r, mode, num);\n\n    return r;\n}\n\nexport function limits(data, mode = 'equal', num = 7) {\n    if (type(data) == 'array') {\n        data = analyze(data);\n    }\n    const { min, max } = data;\n    const values = data.values.sort((a, b) => a - b);\n\n    if (num === 1) {\n        return [min, max];\n    }\n\n    const limits = [];\n\n    if (mode.substr(0, 1) === 'c') {\n        // continuous\n        limits.push(min);\n        limits.push(max);\n    }\n\n    if (mode.substr(0, 1) === 'e') {\n        // equal interval\n        limits.push(min);\n        for (let i = 1; i < num; i++) {\n            limits.push(min + (i / num) * (max - min));\n        }\n        limits.push(max);\n    } else if (mode.substr(0, 1) === 'l') {\n        // log scale\n        if (min <= 0) {\n            throw new Error(\n                'Logarithmic scales are only possible for values > 0'\n            );\n        }\n        const min_log = Math.LOG10E * log(min);\n        const max_log = Math.LOG10E * log(max);\n        limits.push(min);\n        for (let i = 1; i < num; i++) {\n            limits.push(pow(10, min_log + (i / num) * (max_log - min_log)));\n        }\n        limits.push(max);\n    } else if (mode.substr(0, 1) === 'q') {\n        // quantile scale\n        limits.push(min);\n        for (let i = 1; i < num; i++) {\n            const p = ((values.length - 1) * i) / num;\n            const pb = floor(p);\n            if (pb === p) {\n                limits.push(values[pb]);\n            } else {\n                // p > pb\n                const pr = p - pb;\n                limits.push(values[pb] * (1 - pr) + values[pb + 1] * pr);\n            }\n        }\n        limits.push(max);\n    } else if (mode.substr(0, 1) === 'k') {\n        // k-means clustering\n        /*\n        implementation based on\n        http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n        simplified for 1-d input values\n        */\n        let cluster;\n        const n = values.length;\n        const assignments = new Array(n);\n        const clusterSizes = new Array(num);\n        let repeat = true;\n        let nb_iters = 0;\n        let centroids = null;\n\n        // get seed values\n        centroids = [];\n        centroids.push(min);\n        for (let i = 1; i < num; i++) {\n            centroids.push(min + (i / num) * (max - min));\n        }\n        centroids.push(max);\n\n        while (repeat) {\n            // assignment step\n            for (let j = 0; j < num; j++) {\n                clusterSizes[j] = 0;\n            }\n            for (let i = 0; i < n; i++) {\n                const value = values[i];\n                let mindist = Number.MAX_VALUE;\n                let best;\n                for (let j = 0; j < num; j++) {\n                    const dist = abs(centroids[j] - value);\n                    if (dist < mindist) {\n                        mindist = dist;\n                        best = j;\n                    }\n                    clusterSizes[best]++;\n                    assignments[i] = best;\n                }\n            }\n\n            // update centroids step\n            const newCentroids = new Array(num);\n            for (let j = 0; j < num; j++) {\n                newCentroids[j] = null;\n            }\n            for (let i = 0; i < n; i++) {\n                cluster = assignments[i];\n                if (newCentroids[cluster] === null) {\n                    newCentroids[cluster] = values[i];\n                } else {\n                    newCentroids[cluster] += values[i];\n                }\n            }\n            for (let j = 0; j < num; j++) {\n                newCentroids[j] *= 1 / clusterSizes[j];\n            }\n\n            // check convergence\n            repeat = false;\n            for (let j = 0; j < num; j++) {\n                if (newCentroids[j] !== centroids[j]) {\n                    repeat = true;\n                    break;\n                }\n            }\n\n            centroids = newCentroids;\n            nb_iters++;\n\n            if (nb_iters > 200) {\n                repeat = false;\n            }\n        }\n\n        // finished k-means clustering\n        // the next part is borrowed from gabrielflor.it\n        const kClusters = {};\n        for (let j = 0; j < num; j++) {\n            kClusters[j] = [];\n        }\n        for (let i = 0; i < n; i++) {\n            cluster = assignments[i];\n            kClusters[cluster].push(values[i]);\n        }\n        let tmpKMeansBreaks = [];\n        for (let j = 0; j < num; j++) {\n            tmpKMeansBreaks.push(kClusters[j][0]);\n            tmpKMeansBreaks.push(kClusters[j][kClusters[j].length - 1]);\n        }\n        tmpKMeansBreaks = tmpKMeansBreaks.sort((a, b) => a - b);\n        limits.push(tmpKMeansBreaks[0]);\n        for (let i = 1; i < tmpKMeansBreaks.length; i += 2) {\n            const v = tmpKMeansBreaks[i];\n            if (!isNaN(v) && limits.indexOf(v) === -1) {\n                limits.push(v);\n            }\n        }\n    }\n    return limits;\n}\n","import Color from '../Color.js';\nimport '../ops/luminance.js';\n\nexport default (a, b) => {\n    // WCAG contrast ratio\n    // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n    a = new Color(a);\n    b = new Color(b);\n    const l1 = a.luminance();\n    const l2 = b.luminance();\n    return l1 > l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n};\n","import Color from '../Color.js';\nconst { sqrt, pow, min, max, atan2, abs, cos, sin, exp, PI } = Math;\n\nexport default function (a, b, Kl = 1, Kc = 1, Kh = 1) {\n    // Delta E (CIE 2000)\n    // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CIE2000.html\n    var rad2deg = function (rad) {\n        return (360 * rad) / (2 * PI);\n    };\n    var deg2rad = function (deg) {\n        return (2 * PI * deg) / 360;\n    };\n    a = new Color(a);\n    b = new Color(b);\n    const [L1, a1, b1] = Array.from(a.lab());\n    const [L2, a2, b2] = Array.from(b.lab());\n    const avgL = (L1 + L2) / 2;\n    const C1 = sqrt(pow(a1, 2) + pow(b1, 2));\n    const C2 = sqrt(pow(a2, 2) + pow(b2, 2));\n    const avgC = (C1 + C2) / 2;\n    const G = 0.5 * (1 - sqrt(pow(avgC, 7) / (pow(avgC, 7) + pow(25, 7))));\n    const a1p = a1 * (1 + G);\n    const a2p = a2 * (1 + G);\n    const C1p = sqrt(pow(a1p, 2) + pow(b1, 2));\n    const C2p = sqrt(pow(a2p, 2) + pow(b2, 2));\n    const avgCp = (C1p + C2p) / 2;\n    const arctan1 = rad2deg(atan2(b1, a1p));\n    const arctan2 = rad2deg(atan2(b2, a2p));\n    const h1p = arctan1 >= 0 ? arctan1 : arctan1 + 360;\n    const h2p = arctan2 >= 0 ? arctan2 : arctan2 + 360;\n    const avgHp =\n        abs(h1p - h2p) > 180 ? (h1p + h2p + 360) / 2 : (h1p + h2p) / 2;\n    const T =\n        1 -\n        0.17 * cos(deg2rad(avgHp - 30)) +\n        0.24 * cos(deg2rad(2 * avgHp)) +\n        0.32 * cos(deg2rad(3 * avgHp + 6)) -\n        0.2 * cos(deg2rad(4 * avgHp - 63));\n    let deltaHp = h2p - h1p;\n    deltaHp =\n        abs(deltaHp) <= 180\n            ? deltaHp\n            : h2p <= h1p\n              ? deltaHp + 360\n              : deltaHp - 360;\n    deltaHp = 2 * sqrt(C1p * C2p) * sin(deg2rad(deltaHp) / 2);\n    const deltaL = L2 - L1;\n    const deltaCp = C2p - C1p;\n    const sl = 1 + (0.015 * pow(avgL - 50, 2)) / sqrt(20 + pow(avgL - 50, 2));\n    const sc = 1 + 0.045 * avgCp;\n    const sh = 1 + 0.015 * avgCp * T;\n    const deltaTheta = 30 * exp(-pow((avgHp - 275) / 25, 2));\n    const Rc = 2 * sqrt(pow(avgCp, 7) / (pow(avgCp, 7) + pow(25, 7)));\n    const Rt = -Rc * sin(2 * deg2rad(deltaTheta));\n    const result = sqrt(\n        pow(deltaL / (Kl * sl), 2) +\n            pow(deltaCp / (Kc * sc), 2) +\n            pow(deltaHp / (Kh * sh), 2) +\n            Rt * (deltaCp / (Kc * sc)) * (deltaHp / (Kh * sh))\n    );\n    return max(0, min(100, result));\n}\n","import Color from '../Color.js';\n\n// simple Euclidean distance\nexport default function (a, b, mode = 'lab') {\n    // Delta E (CIE 1976)\n    // see http://www.brucelindbloom.com/index.html?Equations.html\n    a = new Color(a);\n    b = new Color(b);\n    const l1 = a.get(mode);\n    const l2 = b.get(mode);\n    let sum_sq = 0;\n    for (let i in l1) {\n        const d = (l1[i] || 0) - (l2[i] || 0);\n        sum_sq += d * d;\n    }\n    return Math.sqrt(sum_sq);\n}\n","import Color from '../Color.js';\n\nexport default (...args) => {\n    try {\n        new Color(...args);\n        return true;\n        // eslint-disable-next-line\n    } catch (e) {\n        return false;\n    }\n};\n","// some pre-defined color scales:\nimport chroma from '../chroma.js';\nimport '../io/hsl/index.js';\nimport scale from '../generator/scale.js';\n\nexport default {\n    cool() {\n        return scale([chroma.hsl(180, 1, 0.9), chroma.hsl(250, 0.7, 0.4)]);\n    },\n    hot() {\n        return scale(['#000', '#f00', '#ff0', '#fff'], [0, 0.25, 0.75, 1]).mode(\n            'rgb'\n        );\n    }\n};\n","/**\n    ColorBrewer colors for chroma.js\n\n    Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n    Pennsylvania State University.\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n    http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software distributed\n    under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n    CONDITIONS OF ANY KIND, either express or implied. See the License for the\n    specific language governing permissions and limitations under the License.\n*/\n\nconst colorbrewer = {\n    // sequential\n    OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n    PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n    BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n    Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n    BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n    YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n    YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n    Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n    RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n    Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n    YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n    Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n    GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n    Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n    YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n    PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n    Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n    PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n    Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n    // diverging\n    Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n    RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n    RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n    PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n    PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n    RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n    BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n    RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n    PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n    // qualitative\n    Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n    Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n    Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n    Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n    Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n    Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n    Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n    Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2']\n};\n\n// add lowercase aliases for case-insensitive matches\nfor (let key of Object.keys(colorbrewer)) {\n    colorbrewer[key.toLowerCase()] = colorbrewer[key];\n}\n\nexport default colorbrewer;\n","import chroma from './src/chroma.js';\n\n// feel free to comment out anything to rollup\n// a smaller chroma.js built\n\n// io --> convert colors\nimport './src/io/cmyk/index.js';\nimport './src/io/css/index.js';\nimport './src/io/gl/index.js';\nimport './src/io/hcg/index.js';\nimport './src/io/hex/index.js';\nimport './src/io/hsi/index.js';\nimport './src/io/hsl/index.js';\nimport './src/io/hsv/index.js';\nimport './src/io/lab/index.js';\nimport './src/io/lch/index.js';\nimport './src/io/named/index.js';\nimport './src/io/num/index.js';\nimport './src/io/rgb/index.js';\nimport './src/io/temp/index.js';\nimport './src/io/oklab/index.js';\nimport './src/io/oklch/index.js';\n\n// operators --> modify existing Colors\nimport './src/ops/alpha.js';\nimport './src/ops/clipped.js';\nimport './src/ops/darken.js';\nimport './src/ops/get.js';\nimport './src/ops/luminance.js';\nimport './src/ops/mix.js';\nimport './src/ops/premultiply.js';\nimport './src/ops/saturate.js';\nimport './src/ops/set.js';\nimport './src/ops/shade.js';\n\n// interpolators\nimport './src/interpolator/rgb.js';\nimport './src/interpolator/lrgb.js';\nimport './src/interpolator/lab.js';\nimport './src/interpolator/lch.js';\nimport './src/interpolator/num.js';\nimport './src/interpolator/hcg.js';\nimport './src/interpolator/hsi.js';\nimport './src/interpolator/hsl.js';\nimport './src/interpolator/hsv.js';\nimport './src/interpolator/oklab.js';\nimport './src/interpolator/oklch.js';\n\n// generators -- > create new colors\nimport average from './src/generator/average.js';\nimport bezier from './src/generator/bezier.js';\nimport blend from './src/generator/blend.js';\nimport cubehelix from './src/generator/cubehelix.js';\nimport mix from './src/generator/mix.js';\nimport random from './src/generator/random.js';\nimport scale from './src/generator/scale.js';\n\n// other utility methods\nimport { analyze } from './src/utils/analyze.js';\nimport contrast from './src/utils/contrast.js';\nimport deltaE from './src/utils/delta-e.js';\nimport distance from './src/utils/distance.js';\nimport { limits } from './src/utils/analyze.js';\nimport valid from './src/utils/valid.js';\nimport input from './src/io/input.js';\n\n// scale\nimport scales from './src/utils/scales.js';\n\n// colors\nimport colors from './src/colors/w3cx11.js';\nimport brewer from './src/colors/colorbrewer.js';\n\nObject.assign(chroma, {\n    average,\n    bezier,\n    blend,\n    cubehelix,\n    mix,\n    interpolate: mix,\n    random,\n    scale,\n    analyze,\n    contrast,\n    deltaE,\n    distance,\n    limits,\n    valid,\n    scales,\n    input,\n    colors,\n    brewer\n});\n\nexport default chroma;\n","import chroma from 'chroma-js';\n\nconst MAX_VALUE = 500;\nconst delta = { xs: 0.01, sm: 0.02, md: 0.03, lg: 0.08, xl: 0.14 };\n\nconst normalizeHue = (input: number, range: number): number => ((input % range) + range) % range;\n\nexport const markDarkColor = (color: string) => {\n  const hsv = chroma(color).hsv();\n  return chroma(hsv[0], hsv[1] * 0.92, Math.min(hsv[2] + 0.01, 1), 'hsv').hex();\n};\n\n// 计算 hsv 颜色的 h 值\nexport const calculateHue = (color: number[], end: number, defaultValue?: number): number => {\n  defaultValue === void 0 && (defaultValue = MAX_VALUE);\n\n  const interval = end - defaultValue;\n\n  let offset: number;\n  if (end <= defaultValue) {\n    if (color[0] > 80 && color[0] < 260) {\n      offset = interval * delta.xs;\n    } else {\n      offset = -interval * delta.sm;\n    }\n  } else if (color[0] > 20 && color[0] < 48) {\n    offset = -interval * delta.md;\n  } else if (color[0] >= 48 && color[0] < 260) {\n    offset = interval * delta.xs;\n  } else {\n    offset = -interval * delta.sm;\n  }\n\n  return normalizeHue(color[0] + offset, 360);\n};\n\n// 计算颜色的饱和度\nexport const calculateSaturation = (hsv: number[], range: number, max?: number): number => {\n  max === void 0 && (max = MAX_VALUE);\n\n  // 计算区间大小\n  const interval = (range - max) / 100;\n\n  let offset = 0;\n  if (range < max) {\n    offset = (interval * hsv[1]) / 5;\n    if (range < 100) {\n      offset -= delta.sm;\n    }\n  } else if (range > max) {\n    if (hsv[0] < 30 || hsv[0] > 200) {\n      offset = interval * delta.md;\n    } else {\n      offset = interval * delta.xs;\n    }\n    if (hsv[1] === 0) {\n      offset = 0;\n    }\n  }\n\n  const newSaturation = hsv[1] + offset;\n  return newSaturation > 1 ? 1 : newSaturation < 0 ? 0 : newSaturation;\n};\n\n// 计算颜色的亮度\nexport const calculateLightness = (hsv: number[], range: number, max?: number): number => {\n  max === void 0 && (max = MAX_VALUE);\n\n  // 计算区间大小\n  const interval = (range - max) / 100;\n\n  let offset = 0;\n\n  if (range < max) {\n    if (hsv[1] < 0.1) {\n      offset = ((interval * (1 - hsv[2])) / 5) * 1.06;\n    } else {\n      offset = (interval * (1 - hsv[2])) / 5;\n    }\n  } else if (range > max) {\n    if ((hsv[0] < 30 || hsv[0] > 200) && hsv[0] > 0) {\n      offset = interval * delta.lg;\n      if (hsv[2] > 0.8) {\n        offset = interval * delta.xl;\n      }\n    } else {\n      offset = (interval * hsv[2]) / 6;\n    }\n  }\n\n  const newLightness = hsv[2] - offset;\n  return newLightness > 1 ? 1 : newLightness < 0 ? 0 : newLightness;\n};\n","import chroma from 'chroma-js';\nimport debounce from 'lodash/debounce.js';\n\nimport { calculateHue, calculateLightness, calculateSaturation, markDarkColor } from './helper';\n\nconst COLOR_STOPS = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900];\n\n// 纯色色阶推导\nexport const createSolidColorScale = (color: string, mode = 'light') => {\n  const isDark = mode === 'dark';\n  let baseColor = isDark ? markDarkColor(color) : color;\n\n  const luminance = chroma(baseColor).luminance();\n  if (luminance < 0.1) {\n    baseColor = chroma(baseColor).set('hsl.l', 0.4).hex();\n  } else if (luminance > 0.9) {\n    baseColor = chroma(baseColor).set('hsl.l', 0.6).hex();\n  }\n  const hsv = chroma(baseColor).hsv();\n\n  const colors = COLOR_STOPS.map((stop) => {\n    const h = calculateHue(hsv, stop, 500);\n    const s = calculateSaturation(hsv, stop, 500);\n    const v = calculateLightness(hsv, stop, 500);\n    return chroma(h, s, v, 'hsv');\n  });\n\n  return isDark ? colors.reverse() : colors;\n};\n\nexport const genTailwindTheme = (color: string) => {\n  const lightColors = createSolidColorScale(color, 'light');\n  const darkColors = createSolidColorScale(color, 'dark');\n\n  const twColors: Record<string, string[]> = {};\n  ['monkeys', 'monkeys-dark'].forEach((name, i) => {\n    const colors = {};\n    if (!i) {\n      lightColors.map((it, stopIndex) =>\n        Object.assign(colors, {\n          [COLOR_STOPS[stopIndex]]: it.rgb().join(' '),\n        }),\n      );\n    } else {\n      darkColors.map((it, stopIndex) =>\n        Object.assign(colors, {\n          [COLOR_STOPS[stopIndex]]: it.rgb().join(' '),\n        }),\n      );\n    }\n    Object.assign(twColors, { [name]: colors });\n  });\n\n  return twColors;\n};\n\nexport const setTailwindTheme = debounce((color: string) => {\n  const twColors = genTailwindTheme(color);\n\n  let styles = '';\n  Object.entries(twColors).forEach(([colorName, colorValues]) => {\n    styles += (colorName === 'monkeys-dark' ? '.dark' : ':root,::selection') + '{';\n    Object.entries(colorValues).forEach(([stop, color]) => {\n      styles += `--monkeys-${stop}:${color};`;\n    });\n    styles += '}';\n  });\n\n  const themeDOM = document.getElementById('monkeys-theme');\n  if (!themeDOM) {\n    const newThemeDOM = document.createElement('style');\n    newThemeDOM.id = 'monkeys-theme';\n    document.head.appendChild(newThemeDOM);\n    newThemeDOM.innerHTML = styles;\n  } else {\n    themeDOM.innerHTML = styles;\n  }\n}, 64);\n","import type {\n  ResolvedThemeToken,\n  ThemeColorValue,\n  ThemeDimensionValue,\n  ThemeDurationValue,\n  ThemeTokenExtensions,\n  ThemeTokens,\n} from '@inf-monkeys-tech/monkeys/contracts';\nimport { resolveThemeTokens } from '@inf-monkeys-tech/monkeys/runtime';\n\nexport type MonkeysThemeColorMode = 'light' | 'dark' | (string & {});\nexport type MonkeysThemeDensity = 'compact' | 'default' | 'comfortable';\n\nexport interface CompileThemeTokensOptions {\n  colorMode?: MonkeysThemeColorMode;\n  density?: MonkeysThemeDensity;\n  variablePrefix?: string;\n}\n\nexport interface CompiledThemeTokens {\n  contract: ThemeTokens;\n  colorMode: MonkeysThemeColorMode;\n  density: MonkeysThemeDensity;\n  values: Readonly<Record<string, unknown>>;\n  cssValues: Readonly<Record<string, string>>;\n  cssVariables: Readonly<Record<string, string>>;\n  cssText: string;\n}\n\nexport interface ApplyThemeTokensOptions extends CompileThemeTokensOptions {\n  target?: HTMLElement | null;\n  themeId?: string;\n}\n\nexport interface ClearThemeTokensOptions {\n  target?: HTMLElement | null;\n}\n\ntype CssExtension = {\n  gradient?: {\n    kind?: 'linear' | 'radial';\n    angle?: number;\n  };\n};\n\nconst CSS_EXTENSION_KEY = 'com.infmonkeys.css';\nconst APPLIED_VARIABLES = new WeakMap<object, Set<string>>();\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction readCssExtension(extensions?: ThemeTokenExtensions): CssExtension | undefined {\n  const extension = extensions?.[CSS_EXTENSION_KEY];\n  return isRecord(extension) ? extension as CssExtension : undefined;\n}\n\nfunction formatNumber(value: number): string {\n  return Number.isInteger(value) ? String(value) : String(Number(value.toFixed(6)));\n}\n\nfunction formatDimension(value: ThemeDimensionValue): string {\n  return `${formatNumber(value.value)}${value.unit}`;\n}\n\nfunction formatDuration(value: ThemeDurationValue): string {\n  return `${formatNumber(value.value)}${value.unit}`;\n}\n\nfunction formatColorComponent(value: number | 'none'): string {\n  return value === 'none' ? value : formatNumber(value);\n}\n\nfunction hexToSrgb(hex: string): [number, number, number] {\n  return [\n    Number.parseInt(hex.slice(1, 3), 16) / 255,\n    Number.parseInt(hex.slice(3, 5), 16) / 255,\n    Number.parseInt(hex.slice(5, 7), 16) / 255,\n  ];\n}\n\nfunction colorSrgbComponents(value: ThemeColorValue): [number, number, number] {\n  if (value.colorSpace === 'srgb' && value.components.every((component) => typeof component === 'number')) {\n    return value.components as [number, number, number];\n  }\n  if (value.hex) return hexToSrgb(value.hex);\n  throw new TypeError(\n    `Web semantic colors in ${value.colorSpace} require a six-digit hex fallback for hsl(var(--token)) consumers.`,\n  );\n}\n\nfunction srgbToHsl([red, green, blue]: [number, number, number]): [number, number, number] {\n  const maximum = Math.max(red, green, blue);\n  const minimum = Math.min(red, green, blue);\n  const lightness = (maximum + minimum) / 2;\n  if (maximum === minimum) return [0, 0, lightness * 100];\n  const delta = maximum - minimum;\n  const saturation = lightness > 0.5\n    ? delta / (2 - maximum - minimum)\n    : delta / (maximum + minimum);\n  let hue: number;\n  if (maximum === red) hue = (green - blue) / delta + (green < blue ? 6 : 0);\n  else if (maximum === green) hue = (blue - red) / delta + 2;\n  else hue = (red - green) / delta + 4;\n  return [(hue / 6) * 360, saturation * 100, lightness * 100];\n}\n\nfunction formatHslTriplet(value: ThemeColorValue): string {\n  if (value.colorSpace === 'hsl' && value.components.every((component) => typeof component === 'number')) {\n    const [hue, saturation, lightness] = value.components as [number, number, number];\n    return `${formatNumber(hue)} ${formatNumber(saturation)}% ${formatNumber(lightness)}%`;\n  }\n  const [hue, saturation, lightness] = srgbToHsl(colorSrgbComponents(value));\n  return `${formatNumber(hue)} ${formatNumber(saturation)}% ${formatNumber(lightness)}%`;\n}\n\nfunction formatColor(value: ThemeColorValue): string {\n  const alpha = value.alpha ?? 1;\n  if (value.hex && alpha === 1) return value.hex;\n  const components = value.components.map(formatColorComponent).join(' ');\n  const alphaSuffix = alpha === 1 ? '' : ` / ${formatNumber(alpha)}`;\n  switch (value.colorSpace) {\n    case 'srgb': {\n      const rgb = value.components.map((component) => component === 'none' ? 'none' : formatNumber(component * 255));\n      return `rgb(${rgb.join(' ')}${alphaSuffix})`;\n    }\n    case 'hsl':\n      return `hsl(${formatColorComponent(value.components[0])} ${formatColorComponent(value.components[1])}% ${formatColorComponent(value.components[2])}%${alphaSuffix})`;\n    case 'hwb':\n      return `hwb(${formatColorComponent(value.components[0])} ${formatColorComponent(value.components[1])}% ${formatColorComponent(value.components[2])}%${alphaSuffix})`;\n    case 'lab':\n    case 'lch':\n    case 'oklab':\n    case 'oklch':\n      return `${value.colorSpace}(${components}${alphaSuffix})`;\n    default:\n      return `color(${value.colorSpace} ${components}${alphaSuffix})`;\n  }\n}\n\nfunction formatFontFamily(value: string | string[]): string {\n  const families = Array.isArray(value) ? value : [value];\n  const genericFamilies = new Set([\n    'serif', 'sans-serif', 'monospace', 'cursive', 'fantasy', 'system-ui',\n    'ui-serif', 'ui-sans-serif', 'ui-monospace', 'ui-rounded', 'math', 'emoji', 'fangsong',\n  ]);\n  return families.map((family) => {\n    if (genericFamilies.has(family) || /^[a-zA-Z][\\w-]*$/.test(family)) return family;\n    return `\"${family.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')}\"`;\n  }).join(', ');\n}\n\nfunction formatShadow(value: unknown): string {\n  const shadows = Array.isArray(value) ? value : [value];\n  return shadows.map((shadow) => {\n    if (!isRecord(shadow)) throw new TypeError('DTCG shadow values must be objects.');\n    return [\n      formatDimension(shadow.offsetX as ThemeDimensionValue),\n      formatDimension(shadow.offsetY as ThemeDimensionValue),\n      formatDimension(shadow.blur as ThemeDimensionValue),\n      formatDimension(shadow.spread as ThemeDimensionValue),\n      formatColor(shadow.color as ThemeColorValue),\n      shadow.inset === true ? 'inset' : '',\n    ].filter(Boolean).join(' ');\n  }).join(', ');\n}\n\nfunction formatGradient(value: unknown, extensions?: ThemeTokenExtensions): string {\n  if (!Array.isArray(value)) throw new TypeError('DTCG gradient values must be arrays.');\n  const stops = value.map((stop) => {\n    if (!isRecord(stop)) throw new TypeError('DTCG gradient stops must be objects.');\n    return `${formatColor(stop.color as ThemeColorValue)} ${formatNumber(Number(stop.position) * 100)}%`;\n  }).join(', ');\n  const gradient = readCssExtension(extensions)?.gradient;\n  if (gradient?.kind === 'radial') return `radial-gradient(${stops})`;\n  return `linear-gradient(${formatNumber(gradient?.angle ?? 90)}deg, ${stops})`;\n}\n\nfunction formatTokenValue(token: ResolvedThemeToken): string {\n  switch (token.type) {\n    case 'color':\n      return formatColor(token.value as ThemeColorValue);\n    case 'dimension':\n      return formatDimension(token.value as ThemeDimensionValue);\n    case 'fontFamily':\n      return formatFontFamily(token.value as string | string[]);\n    case 'fontWeight':\n    case 'number':\n      return String(token.value);\n    case 'duration':\n      return formatDuration(token.value as ThemeDurationValue);\n    case 'cubicBezier':\n      return `cubic-bezier(${(token.value as number[]).map(formatNumber).join(', ')})`;\n    case 'strokeStyle': {\n      if (typeof token.value === 'string') return token.value;\n      const value = token.value as { dashArray: ThemeDimensionValue[] };\n      return value.dashArray.map(formatDimension).join(' ');\n    }\n    case 'border': {\n      const value = token.value as { color: ThemeColorValue; width: ThemeDimensionValue; style: unknown };\n      const styleToken: ResolvedThemeToken = { ...token, type: 'strokeStyle', value: value.style };\n      return `${formatDimension(value.width)} ${formatTokenValue(styleToken)} ${formatColor(value.color)}`;\n    }\n    case 'transition': {\n      const value = token.value as { duration: ThemeDurationValue; delay: ThemeDurationValue; timingFunction: number[] };\n      return `${formatDuration(value.duration)} cubic-bezier(${value.timingFunction.map(formatNumber).join(', ')}) ${formatDuration(value.delay)}`;\n    }\n    case 'shadow':\n      return formatShadow(token.value);\n    case 'gradient':\n      return formatGradient(token.value, token.extensions);\n    case 'typography': {\n      const value = token.value as {\n        fontFamily: string | string[];\n        fontSize: ThemeDimensionValue;\n        fontWeight: string | number;\n        lineHeight: number;\n      };\n      return `${value.fontWeight} ${formatDimension(value.fontSize)}/${formatNumber(value.lineHeight)} ${formatFontFamily(value.fontFamily)}`;\n    }\n  }\n}\n\nfunction toCssVariableName(path: string, prefix: string): string {\n  const normalized = path\n    .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n    .replace(/[^a-zA-Z0-9]+/g, '-')\n    .replace(/^-+|-+$/g, '')\n    .toLowerCase();\n  return `--${prefix}-${normalized}`;\n}\n\nfunction assertCssVariablePrefix(prefix: string): void {\n  if (!/^[a-zA-Z][a-zA-Z0-9-]*$/.test(prefix)) {\n    throw new TypeError(\n      'Theme token variablePrefix must start with a letter and contain only letters, numbers, or hyphens.',\n    );\n  }\n}\n\nfunction selectModePath(\n  paths: ReadonlySet<string>,\n  basePath: string,\n  colorMode: MonkeysThemeColorMode,\n): string | undefined {\n  const contextualPath = `${basePath}.${colorMode}`;\n  if (paths.has(contextualPath)) return contextualPath;\n  return paths.has(basePath) ? basePath : undefined;\n}\n\nconst HSL_SEMANTIC_ALIASES: Readonly<Record<string, string>> = {\n  'semantic.color.background': '--background',\n  'semantic.color.foreground': '--foreground',\n  'semantic.color.card': '--card',\n  'semantic.color.card-foreground': '--card-foreground',\n  'semantic.color.popover': '--popover',\n  'semantic.color.popover-foreground': '--popover-foreground',\n  'semantic.color.primary': '--primary',\n  'semantic.color.primary-foreground': '--primary-foreground',\n  'semantic.color.secondary': '--secondary',\n  'semantic.color.secondary-foreground': '--secondary-foreground',\n  'semantic.color.muted': '--muted',\n  'semantic.color.muted-foreground': '--muted-foreground',\n  'semantic.color.accent': '--accent',\n  'semantic.color.accent-foreground': '--accent-foreground',\n  'semantic.color.destructive': '--destructive',\n  'semantic.color.destructive-foreground': '--destructive-foreground',\n  'semantic.color.success': '--success',\n  'semantic.color.success-foreground': '--success-foreground',\n  'semantic.color.warning': '--warning',\n  'semantic.color.warning-foreground': '--warning-foreground',\n  'semantic.color.border': '--border',\n  'semantic.color.input': '--input',\n  'semantic.color.ring': '--ring',\n  'semantic.color.media-surface': '--media-surface',\n  'semantic.color.media-foreground': '--media-foreground',\n  'semantic.color.media-overlay': '--media-overlay',\n  'semantic.color.radar-canvas': '--radar-canvas',\n  'semantic.color.radar-panel': '--radar-panel',\n  'semantic.color.radar-border': '--radar-border',\n  'semantic.color.radar-shell-border': '--radar-shell-border',\n  'semantic.color.radar-grid': '--radar-grid',\n  'semantic.color.radar-axis': '--radar-axis',\n  'semantic.color.radar-series-one': '--radar-series-one',\n  'semantic.color.radar-series-two': '--radar-series-two',\n  'semantic.color.radar-series-three': '--radar-series-three',\n  'semantic.color.radar-series-four': '--radar-series-four',\n};\n\nexport function getThemeTokenCssValue(\n  compiled: CompiledThemeTokens,\n  basePath: string,\n): string | undefined {\n  const path = selectModePath(new Set(Object.keys(compiled.cssValues)), basePath, compiled.colorMode);\n  return path ? compiled.cssValues[path] : undefined;\n}\n\nexport function compileThemeTokens(\n  input: ThemeTokens,\n  options: CompileThemeTokensOptions = {},\n): CompiledThemeTokens {\n  const resolved = resolveThemeTokens(input);\n  const contract = resolved.document;\n  const colorMode = options.colorMode ?? 'light';\n  const density = options.density ?? 'default';\n  const variablePrefix = options.variablePrefix ?? 'monkeys';\n  assertCssVariablePrefix(variablePrefix);\n  const values: Record<string, unknown> = {};\n  const cssValues: Record<string, string> = {};\n  const cssVariables: Record<string, string> = {};\n  const canonicalVariableSources = new Map<string, string>();\n\n  for (const [path, token] of resolved.tokens) {\n    values[path] = token.value;\n    const cssValue = formatTokenValue(token);\n    cssValues[path] = cssValue;\n    const variableName = toCssVariableName(path, variablePrefix);\n    const existingPath = canonicalVariableSources.get(variableName);\n    if (existingPath) {\n      throw new TypeError(\n        `Theme token paths ${existingPath} and ${path} both compile to ${variableName}. Rename one token.`,\n      );\n    }\n    canonicalVariableSources.set(variableName, path);\n    cssVariables[variableName] = cssValue;\n  }\n\n  const paths = new Set(resolved.tokens.keys());\n  for (const [basePath, variableName] of Object.entries(HSL_SEMANTIC_ALIASES)) {\n    const path = selectModePath(paths, basePath, colorMode);\n    if (!path) continue;\n    const token = resolved.tokens.get(path);\n    if (!token || token.type !== 'color') {\n      throw new TypeError(`${path} must be a color token to drive ${variableName}.`);\n    }\n    cssVariables[variableName] = formatHslTriplet(token.value as ThemeColorValue);\n  }\n\n  const directAliases: Array<[\n    string,\n    string,\n    MonkeysThemeColorMode | MonkeysThemeDensity,\n    ResolvedThemeToken['type'],\n  ]> = [\n    ['semantic.color.neocard', '--neocard', colorMode, 'color'],\n    ['semantic.radius.base', '--radius', colorMode, 'dimension'],\n    ['semantic.spacing.global', '--global-spacing', density, 'dimension'],\n    ['semantic.gradient.brand', '--monkeys-gradient', colorMode, 'gradient'],\n    ['semantic.font.body', '--font-sans', colorMode, 'fontFamily'],\n  ];\n  for (const [basePath, variableName, axis, expectedType] of directAliases) {\n    const path = selectModePath(paths, basePath, axis);\n    if (!path) continue;\n    const token = resolved.tokens.get(path);\n    if (!token || token.type !== expectedType) {\n      throw new TypeError(`${path} must be a ${expectedType} token to drive ${variableName}.`);\n    }\n    cssVariables[variableName] = cssValues[path];\n  }\n\n  const cssText = Object.entries(cssVariables)\n    .sort(([left], [right]) => left.localeCompare(right))\n    .map(([name, value]) => `${name}:${value};`)\n    .join('');\n\n  return {\n    contract,\n    colorMode,\n    density,\n    values: Object.freeze(values),\n    cssValues: Object.freeze(cssValues),\n    cssVariables: Object.freeze(cssVariables),\n    cssText,\n  };\n}\n\nexport function applyThemeTokens(\n  input: ThemeTokens,\n  options: ApplyThemeTokensOptions = {},\n): CompiledThemeTokens {\n  const compiled = compileThemeTokens(input, options);\n  const target = options.target ?? (typeof document === 'undefined' ? null : document.documentElement);\n  if (!target) return compiled;\n\n  const previouslyApplied = APPLIED_VARIABLES.get(target) ?? new Set<string>();\n  const nextVariables = new Set(Object.keys(compiled.cssVariables));\n  for (const name of previouslyApplied) {\n    if (!nextVariables.has(name)) target.style.removeProperty(name);\n  }\n  for (const [name, value] of Object.entries(compiled.cssVariables)) {\n    target.style.setProperty(name, value);\n  }\n  APPLIED_VARIABLES.set(target, nextVariables);\n\n  if (options.themeId) target.dataset.monkeysTheme = options.themeId;\n  else delete target.dataset.monkeysTheme;\n  target.dataset.monkeysColorMode = compiled.colorMode;\n  target.dataset.monkeysDensity = compiled.density;\n  return compiled;\n}\n\nexport function clearThemeTokens(options: ClearThemeTokensOptions = {}): void {\n  const target = options.target ?? (typeof document === 'undefined' ? null : document.documentElement);\n  if (!target) return;\n\n  const previouslyApplied = APPLIED_VARIABLES.get(target) ?? new Set<string>();\n  for (const name of previouslyApplied) target.style.removeProperty(name);\n  APPLIED_VARIABLES.delete(target);\n\n  delete target.dataset.monkeysTheme;\n  delete target.dataset.monkeysColorMode;\n  delete target.dataset.monkeysDensity;\n}\n","import type { MonkeysLocale } from \"./types\";\n\nexport const enUS = {\n  locale: \"en-US\",\n  messages: {\n    pagination: {\n      navigation: \"Pagination\",\n      first: \"First\",\n      previous: \"Previous\",\n      next: \"Next\",\n      last: \"Last\",\n      page: ({ page, pageCount }) => `Page ${page} of ${pageCount}`,\n      currentPage: ({ page, pageCount }) =>\n        `Page ${page} of ${pageCount}, current page`,\n      emptyResults: \"0 results\",\n      range: ({ start, end, total }) => `${start}-${end} of ${total}`,\n      selected: ({ count }) => `${count} selected`,\n      pageSize: \"Items per page\",\n      perLoad: \"Items per load\",\n      jumpToPage: \"Jump to page\",\n      pages: \"pages\",\n      clickToJump: \"Click to jump to a page\",\n    },\n    dialog: {\n      close: \"Close dialog\",\n    },\n    dropdownMenu: {\n      actions: \"Actions\",\n    },\n    loading: {\n      spinner: \"Loading\",\n    },\n    layout: {\n      resizePanels: \"Resize panels\",\n    },\n    steps: {\n      label: \"Progress\",\n      current: \"Current\",\n      completed: \"Completed\",\n      error: \"Error\",\n      disabled: \"Disabled\",\n    },\n    numberInput: {\n      increment: \"Increase value\",\n      decrement: \"Decrease value\",\n    },\n    passwordInput: {\n      showPassword: \"Show password\",\n      hidePassword: \"Hide password\",\n    },\n    multiSelect: {\n      placeholder: \"Select options\",\n      empty: \"No options\",\n      removeOption: ({ value }) => `Remove ${value}`,\n    },\n    table: {\n      dragColumn: ({ columnId }) => `Drag column ${columnId}`,\n      resizeColumn: ({ columnId }) => `Resize column ${columnId}`,\n      sortColumn: ({ columnId }) =>\n        columnId ? `Sort column ${columnId}` : \"Sort column\",\n      loadingRow: \"Loading table row\",\n    },\n    toolbar: {\n      theme: {\n        label: \"Appearance\",\n        toggle: \"Toggle theme\",\n        auto: \"Auto\",\n        light: \"Light\",\n        dark: \"Dark\",\n      },\n      language: {\n        label: \"Language\",\n        switch: \"Switch language\",\n      },\n    },\n    toast: {\n      errorTitle: \"Error\",\n      warningTitle: \"Warning\",\n      defaultErrorDescription: \"Something went wrong.\",\n      defaultWarningDescription: \"Please check and try again.\",\n    },\n    dataExplorer: {\n      viewTree: {\n        actions: \"More actions\",\n        expand: \"Expand\",\n        collapse: \"Collapse\",\n        loading: \"Loading...\",\n        empty: \"No views\",\n        error: \"Unable to load views\",\n      },\n    },\n    workbench: {\n      collection: {\n        label: \"Collection\",\n        loading: \"Loading items\",\n        empty: \"No items\",\n        loadError: \"Unable to load items\",\n        refreshError: \"Unable to refresh items\",\n        retry: \"Retry\",\n        loadingMore: \"Loading more items\",\n        permission: \"You do not have permission to view this content\",\n        offline: \"You appear to be offline\",\n        requestAccess: \"Request access\",\n      },\n      interactiveTable: {\n        columnActions: \"Column actions\",\n        freezeColumn: \"Freeze to left\",\n        freezeEndColumn: \"Freeze to right\",\n        unfreezeColumn: \"Unfreeze from left\",\n        unfreezeEndColumn: \"Unfreeze from right\",\n        unfreezeAllColumns: \"Unfreeze all columns\",\n        resetColumnWidth: \"Reset column width\",\n        frozenColumnTitle: \"Frozen column\",\n      },\n    },\n    agentWorkbench: {\n      label: \"Session activity\",\n      reasoning: \"Reasoning\",\n      plan: \"Plan\",\n      taskNoDetail: \"No additional details\",\n      modes: { chat: \"Chat\", work: \"Work\" },\n      composer: {\n        send: \"Send message\",\n        stop: \"Stop generating\",\n        queue: \"Queue message\",\n        attach: \"Add photos or files\",\n        voice: \"Start voice input\",\n        webSearch: \"Web search\",\n        chatMode: \"Chat mode\",\n        model: \"Model\",\n        reasoning: \"Reasoning effort\",\n        permissions: \"Permissions\",\n        removeAttachment: \"Remove attachment\",\n        editQueued: \"Edit queued message\",\n        deleteQueued: \"Delete queued message\",\n        moveUp: \"Move message up\",\n        moveDown: \"Move message down\",\n        queued: \"Queued messages\",\n        uploading: \"Uploading\",\n        uploadFailed: \"Upload failed\",\n        retryAttachment: \"Retry attachment upload\",\n        noModels: \"No models available\",\n        message: \"Message\",\n        attachmentOnly: \"Attachment\",\n        reasoningOptions: {\n          low: \"Low\",\n          medium: \"Medium\",\n          high: \"High\",\n          xhigh: \"Extra high\",\n        },\n        permissionOptions: {\n          \"approval-required\": \"Approval required\",\n          \"auto-approve\": \"Auto approve\",\n          \"full-access\": \"Full access\",\n        },\n      },\n      quickStart: {\n        label: \"Quick start\",\n        back: \"Back\",\n        addFile: \"Add file\",\n      },\n      tool: {\n        input: \"Input\",\n        output: \"Output\",\n        status: {\n          pending: \"Pending\",\n          running: \"Running\",\n          completed: \"Completed\",\n          failed: \"Error\",\n          denied: \"Denied\",\n        },\n      },\n      approval: {\n        approve: \"Approve\",\n        reject: \"Reject\",\n        approved: \"Approved\",\n        rejected: \"Rejected\",\n      },\n      artifact: {\n        pending: \"Preparing\",\n        ready: \"Ready\",\n        failed: \"Failed\",\n        open: ({ name }) => `Open ${name}`,\n      },\n      run: {\n        stopping: \"Stopping...\",\n        stoppedAfter: ({ duration }) => `You stopped after ${duration}`,\n      },\n      process: {\n        running: \"Working\",\n        queued: \"Queued\",\n        waitingApproval: \"Waiting for approval\",\n        failed: \"Failed\",\n        stopped: \"Stopped\",\n        processed: \"Processed\",\n        processedFor: ({ duration }) => `Worked for ${duration}`,\n        completedCount: ({ completed, total }) =>\n          `${completed}/${total} completed`,\n      },\n      artifactWorkspace: {\n        outputs: \"Outputs\",\n        sources: \"Sources\",\n        viewAll: \"View all\",\n        toggleSummary: \"Toggle files\",\n        tabs: \"Open files\",\n        closeTab: ({ name }) => `Close ${name}`,\n        closeWorkspace: \"Close workspace\",\n        download: ({ name }) => `Download ${name}`,\n        openExternal: ({ name }) => `Open ${name} in a new window`,\n        loading: \"Loading preview...\",\n        failed: \"Preview unavailable\",\n        retry: \"Try again\",\n      },\n      usage: {\n        label: \"Context usage\",\n        context: ({ used, total }) => `${used} / ${total} tokens`,\n      },\n      navigation: {\n        search: \"Search agents and sessions\",\n        searchSessions: \"Search sessions\",\n        searchShortcut: \"Focus search\",\n        clearSearch: \"Clear search\",\n        tabsLabel: \"Agent workbench navigation\",\n        agents: \"Agents\",\n        sessions: \"Sessions\",\n        newAgent: \"New Agent\",\n        newSession: \"New Session\",\n        capabilities: \"Capabilities & Extensions\",\n        settings: \"Agent Settings\",\n        allAgents: \"All Agents\",\n        recentSessions: \"Recent Sessions\",\n        chat: \"Chat\",\n        work: \"Work\",\n        chats: \"Chats\",\n        builtIn: \"Built-in\",\n        noDescription: \"No description\",\n        loading: \"Loading...\",\n        emptyAgents: \"No agents yet\",\n        emptySessions: \"No sessions yet\",\n        noResults: \"No matching results\",\n        retry: \"Retry\",\n        pin: \"Pin\",\n        unpin: \"Unpin\",\n        rename: \"Rename\",\n        delete: \"Delete\",\n        actions: \"Actions\",\n        save: \"Save\",\n        cancel: \"Cancel\",\n        running: \"Running\",\n        completed: \"Completed\",\n        failed: \"Failed\",\n        contextUsage: ({ percent }) => `${percent}% context used`,\n      },\n      details: {\n        title: \"Task details\",\n        description: \"Summary and workspace activity\",\n        duration: \"Duration\",\n        updated: \"Updated\",\n        model: \"Model\",\n        mode: \"Mode\",\n        permissions: \"Permissions\",\n        tokenUsage: \"Token usage\",\n        summary: \"Summary\",\n        summaryEmpty: \"No summary is available yet.\",\n        summaryFailed: \"The summary could not be generated.\",\n        highlights: \"Highlights\",\n        pendingItems: \"Pending items\",\n        tabs: {\n          label: \"Task detail views\",\n          summary: \"Summary\",\n          workspace: \"Workspace\",\n        },\n        status: {\n          queued: \"Queued\",\n          running: \"Running\",\n          waiting_approval: \"Waiting for approval\",\n          stopping: \"Stopping\",\n          stopped: \"Stopped\",\n          completed: \"Completed\",\n          failed: \"Failed\",\n        },\n        state: {\n          loading: {\n            title: \"Loading task details\",\n            description: \"Restoring the latest session activity.\",\n          },\n          empty: {\n            title: \"No task selected\",\n            description: \"Select a task to inspect its details.\",\n          },\n          error: {\n            title: \"Unable to load task details\",\n            description: \"Try again after the session is available.\",\n          },\n        },\n        actions: {\n          close: \"Close task details\",\n          copySummary: \"Copy summary\",\n          retry: \"Retry\",\n          retrySummary: \"Retry summary\",\n          resume: \"Resume\",\n          continueInNewTask: \"Continue in new task\",\n          editAndRerun: \"Edit and rerun\",\n          export: \"Export\",\n        },\n        workspace: {\n          diffs: \"Code changes\",\n          files: \"Files\",\n          terminals: \"Terminals\",\n          tests: \"Tests\",\n          artifacts: \"Artifacts\",\n          exitCode: ({ code }) => `Exit code ${code}`,\n          diffStatus: {\n            added: \"Added\",\n            modified: \"Modified\",\n            deleted: \"Deleted\",\n            renamed: \"Renamed\",\n          },\n          fileOperation: { upsert: \"Updated\", delete: \"Deleted\" },\n        },\n      },\n    },\n  },\n} satisfies MonkeysLocale;\n","import type { MonkeysLocale } from \"./types\";\n\nexport const zhCN = {\n  locale: \"zh-CN\",\n  messages: {\n    pagination: {\n      navigation: \"分页导航\",\n      first: \"首页\",\n      previous: \"上一页\",\n      next: \"下一页\",\n      last: \"末页\",\n      page: ({ page, pageCount }) => `第 ${page} 页，共 ${pageCount} 页`,\n      currentPage: ({ page, pageCount }) =>\n        `第 ${page} 页，共 ${pageCount} 页，当前页`,\n      emptyResults: \"共 0 条\",\n      range: ({ start, end, total }) => `第 ${start}-${end} 条，共 ${total} 条`,\n      selected: ({ count }) => `已选择 ${count} 项`,\n      pageSize: \"每页显示数量\",\n      perLoad: \"每次加载\",\n      jumpToPage: \"跳转到页码\",\n      pages: \"页\",\n      clickToJump: \"点击跳转页码\",\n    },\n    dialog: {\n      close: \"关闭对话框\",\n    },\n    dropdownMenu: {\n      actions: \"操作\",\n    },\n    loading: {\n      spinner: \"正在加载\",\n    },\n    layout: {\n      resizePanels: \"调整面板大小\",\n    },\n    steps: {\n      label: \"进度\",\n      current: \"当前步骤\",\n      completed: \"已完成\",\n      error: \"错误\",\n      disabled: \"已禁用\",\n    },\n    numberInput: {\n      increment: \"增加数值\",\n      decrement: \"减少数值\",\n    },\n    passwordInput: {\n      showPassword: \"显示密码\",\n      hidePassword: \"隐藏密码\",\n    },\n    multiSelect: {\n      placeholder: \"请选择\",\n      empty: \"暂无选项\",\n      removeOption: ({ value }) => `移除 ${value}`,\n    },\n    table: {\n      dragColumn: ({ columnId }) => `拖动列 ${columnId}`,\n      resizeColumn: ({ columnId }) => `调整列宽 ${columnId}`,\n      sortColumn: ({ columnId }) =>\n        columnId ? `排序列 ${columnId}` : \"排序列\",\n      loadingRow: \"正在加载表格行\",\n    },\n    toolbar: {\n      theme: {\n        label: \"外观\",\n        toggle: \"切换主题\",\n        auto: \"跟随系统\",\n        light: \"浅色模式\",\n        dark: \"深色模式\",\n      },\n      language: {\n        label: \"语言\",\n        switch: \"切换语言\",\n      },\n    },\n    toast: {\n      errorTitle: \"错误\",\n      warningTitle: \"提示\",\n      defaultErrorDescription: \"发生错误，请稍后重试。\",\n      defaultWarningDescription: \"请检查后重试。\",\n    },\n    dataExplorer: {\n      viewTree: {\n        actions: \"更多操作\",\n        expand: \"展开\",\n        collapse: \"收起\",\n        loading: \"正在加载...\",\n        empty: \"暂无视图\",\n        error: \"无法加载视图\",\n      },\n    },\n    workbench: {\n      collection: {\n        label: \"内容集合\",\n        loading: \"正在加载内容\",\n        empty: \"暂无内容\",\n        loadError: \"无法加载内容\",\n        refreshError: \"无法刷新内容\",\n        retry: \"重试\",\n        loadingMore: \"正在加载更多内容\",\n        permission: \"你没有权限查看此内容\",\n        offline: \"网络连接已断开\",\n        requestAccess: \"申请权限\",\n      },\n      interactiveTable: {\n        columnActions: \"列操作\",\n        freezeColumn: \"固定到左侧\",\n        freezeEndColumn: \"固定到右侧\",\n        unfreezeColumn: \"取消左侧固定\",\n        unfreezeEndColumn: \"取消右侧固定\",\n        unfreezeAllColumns: \"取消全部固定\",\n        resetColumnWidth: \"重置列宽\",\n        frozenColumnTitle: \"已固定列\",\n      },\n    },\n    agentWorkbench: {\n      label: \"会话活动\",\n      reasoning: \"思考过程\",\n      plan: \"执行计划\",\n      taskNoDetail: \"暂无更多详情\",\n      modes: { chat: \"对话\", work: \"工作\" },\n      composer: {\n        send: \"发送消息\",\n        stop: \"停止生成\",\n        queue: \"排队发送\",\n        attach: \"添加照片或文件\",\n        voice: \"开始语音输入\",\n        webSearch: \"联网搜索\",\n        chatMode: \"对话模式\",\n        model: \"模型\",\n        reasoning: \"思考强度\",\n        permissions: \"权限\",\n        removeAttachment: \"移除附件\",\n        editQueued: \"编辑排队消息\",\n        deleteQueued: \"删除排队消息\",\n        moveUp: \"上移消息\",\n        moveDown: \"下移消息\",\n        queued: \"排队消息\",\n        uploading: \"上传中\",\n        uploadFailed: \"上传失败\",\n        retryAttachment: \"重试附件上传\",\n        noModels: \"暂无可用模型\",\n        message: \"消息\",\n        attachmentOnly: \"附件\",\n        reasoningOptions: {\n          low: \"低\",\n          medium: \"中\",\n          high: \"高\",\n          xhigh: \"最高\",\n        },\n        permissionOptions: {\n          \"approval-required\": \"需要批准\",\n          \"auto-approve\": \"自动批准\",\n          \"full-access\": \"完全访问\",\n        },\n      },\n      quickStart: {\n        label: \"快速开始\",\n        back: \"返回\",\n        addFile: \"添加文件\",\n      },\n      tool: {\n        input: \"输入\",\n        output: \"输出\",\n        status: {\n          pending: \"等待中\",\n          running: \"运行中\",\n          completed: \"已完成\",\n          failed: \"错误\",\n          denied: \"已拒绝\",\n        },\n      },\n      approval: {\n        approve: \"允许\",\n        reject: \"拒绝\",\n        approved: \"已允许\",\n        rejected: \"已拒绝\",\n      },\n      artifact: {\n        pending: \"准备中\",\n        ready: \"已就绪\",\n        failed: \"失败\",\n        open: ({ name }) => `打开 ${name}`,\n      },\n      run: {\n        stopping: \"正在停止...\",\n        stoppedAfter: ({ duration }) => `你在 ${duration} 后停止了任务`,\n      },\n      process: {\n        running: \"执行过程\",\n        queued: \"排队中\",\n        waitingApproval: \"等待审批\",\n        failed: \"失败\",\n        stopped: \"已停止\",\n        processed: \"已处理\",\n        processedFor: ({ duration }) =>\n          `耗时 ${duration\n            .replace(/(\\d+)h/g, \"$1小时\")\n            .replace(/(\\d+)m/g, \"$1分钟\")\n            .replace(/(\\d+)s/g, \"$1秒\")\n            .replace(/\\s+/g, \"\")}`,\n        completedCount: ({ completed, total }) =>\n          `${completed}/${total} 已完成`,\n      },\n      artifactWorkspace: {\n        outputs: \"输出\",\n        sources: \"来源\",\n        viewAll: \"查看全部\",\n        toggleSummary: \"切换文件摘要\",\n        tabs: \"已打开文件\",\n        closeTab: ({ name }) => `关闭 ${name}`,\n        closeWorkspace: \"关闭工作区\",\n        download: ({ name }) => `下载 ${name}`,\n        openExternal: ({ name }) => `在新窗口打开 ${name}`,\n        loading: \"正在加载预览...\",\n        failed: \"预览不可用\",\n        retry: \"重试\",\n      },\n      usage: {\n        label: \"上下文用量\",\n        context: ({ used, total }) => `${used} / ${total} tokens`,\n      },\n      navigation: {\n        search: \"搜索智能体和会话\",\n        searchSessions: \"搜索会话\",\n        searchShortcut: \"聚焦搜索框\",\n        clearSearch: \"清除搜索\",\n        tabsLabel: \"智能体工作台导航\",\n        agents: \"智能体\",\n        sessions: \"会话\",\n        newAgent: \"新建智能体\",\n        newSession: \"新建会话\",\n        capabilities: \"能力与扩展\",\n        settings: \"智能体设置\",\n        allAgents: \"全部智能体\",\n        recentSessions: \"最近会话\",\n        chat: \"对话\",\n        work: \"工作\",\n        chats: \"聊天\",\n        builtIn: \"内置\",\n        noDescription: \"暂无描述\",\n        loading: \"加载中...\",\n        emptyAgents: \"暂无智能体\",\n        emptySessions: \"暂无会话\",\n        noResults: \"没有匹配结果\",\n        retry: \"重试\",\n        pin: \"置顶\",\n        unpin: \"取消置顶\",\n        rename: \"重命名\",\n        delete: \"删除\",\n        actions: \"操作\",\n        save: \"保存\",\n        cancel: \"取消\",\n        running: \"运行中\",\n        completed: \"已完成\",\n        failed: \"失败\",\n        contextUsage: ({ percent }) => `已使用 ${percent}% 上下文`,\n      },\n      details: {\n        title: \"任务详情\",\n        description: \"摘要与工作区活动\",\n        duration: \"耗时\",\n        updated: \"更新时间\",\n        model: \"模型\",\n        mode: \"模式\",\n        permissions: \"权限\",\n        tokenUsage: \"Token 用量\",\n        summary: \"摘要\",\n        summaryEmpty: \"暂时没有可用摘要。\",\n        summaryFailed: \"摘要生成失败。\",\n        highlights: \"重点\",\n        pendingItems: \"待处理事项\",\n        tabs: {\n          label: \"任务详情视图\",\n          summary: \"摘要\",\n          workspace: \"工作区\",\n        },\n        status: {\n          queued: \"排队中\",\n          running: \"运行中\",\n          waiting_approval: \"等待审批\",\n          stopping: \"正在停止\",\n          stopped: \"已停止\",\n          completed: \"已完成\",\n          failed: \"失败\",\n        },\n        state: {\n          loading: {\n            title: \"正在加载任务详情\",\n            description: \"正在恢复最新的会话活动。\",\n          },\n          empty: {\n            title: \"未选择任务\",\n            description: \"选择任务后查看详细信息。\",\n          },\n          error: {\n            title: \"无法加载任务详情\",\n            description: \"会话恢复可用后请重试。\",\n          },\n        },\n        actions: {\n          close: \"关闭任务详情\",\n          copySummary: \"复制摘要\",\n          retry: \"重试\",\n          retrySummary: \"重新生成摘要\",\n          resume: \"继续运行\",\n          continueInNewTask: \"在新任务中继续\",\n          editAndRerun: \"编辑并重新运行\",\n          export: \"导出\",\n        },\n        workspace: {\n          diffs: \"代码变更\",\n          files: \"文件\",\n          terminals: \"终端\",\n          tests: \"测试\",\n          artifacts: \"产物\",\n          exitCode: ({ code }) => `退出码 ${code}`,\n          diffStatus: {\n            added: \"新增\",\n            modified: \"修改\",\n            deleted: \"删除\",\n            renamed: \"重命名\",\n          },\n          fileOperation: { upsert: \"已更新\", delete: \"已删除\" },\n        },\n      },\n    },\n  },\n} satisfies MonkeysLocale;\n","import { enUS } from './en-US';\nimport type {\n  MonkeysBuiltInLocaleId,\n  MonkeysLocale,\n  MonkeysLocaleInput,\n  MonkeysLocaleMessages,\n  MonkeysLocaleMessagesOverride,\n  MonkeysResolvedLocale,\n} from './types';\nimport { zhCN } from './zh-CN';\n\nconst BUILT_IN_LOCALES: Record<MonkeysBuiltInLocaleId, MonkeysLocale> = {\n  'en-US': enUS,\n  'zh-CN': zhCN,\n};\n\nfunction normalizeLocaleId(locale: unknown): string {\n  if (typeof locale !== 'string' || !locale.trim()) {\n    throw new TypeError('Monkeys locale must be a non-empty BCP 47 string.');\n  }\n\n  try {\n    return Intl.getCanonicalLocales(locale)[0];\n  } catch {\n    throw new RangeError(\n      `Monkeys locale \"${locale}\" is not a valid BCP 47 identifier.`,\n    );\n  }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validateMessageOverride(\n  value: unknown,\n  schema: unknown,\n  path: string,\n) {\n  if (!isRecord(value) || !isRecord(schema)) {\n    throw new TypeError(`${path} must be an object.`);\n  }\n\n  for (const [key, candidate] of Object.entries(value)) {\n    if (candidate === undefined) continue;\n    if (!(key in schema)) {\n      throw new TypeError(`${path}.${key} is not a supported Monkeys message.`);\n    }\n\n    const expected = schema[key];\n    const candidatePath = `${path}.${key}`;\n    if (typeof expected === 'function') {\n      if (typeof candidate !== 'function') {\n        throw new TypeError(`${candidatePath} must be a function.`);\n      }\n    } else if (typeof expected === 'string') {\n      if (typeof candidate !== 'string') {\n        throw new TypeError(`${candidatePath} must be a string.`);\n      }\n    } else {\n      validateMessageOverride(candidate, expected, candidatePath);\n    }\n  }\n}\n\nfunction assertMessagesOverride(\n  value: unknown,\n  path: string,\n): asserts value is MonkeysLocaleMessagesOverride {\n  validateMessageOverride(value, enUS.messages, path);\n}\n\nfunction isBuiltInLocale(locale: string): locale is MonkeysBuiltInLocaleId {\n  return locale === 'en-US' || locale === 'zh-CN';\n}\n\nfunction normalizeLocaleInput(input: MonkeysLocaleInput | undefined): {\n  locale: string | undefined;\n  messages: MonkeysLocaleMessagesOverride | undefined;\n  hasExplicitLocale: boolean;\n} {\n  if (input === undefined) {\n    return {\n      locale: undefined,\n      messages: undefined,\n      hasExplicitLocale: false,\n    };\n  }\n\n  if (typeof input === 'string') {\n    const locale = normalizeLocaleId(input);\n    if (!isBuiltInLocale(locale)) {\n      throw new RangeError(\n        `Unsupported built-in Monkeys locale \"${locale}\". Provide a locale pack object for custom locales.`,\n      );\n    }\n    return { locale, messages: undefined, hasExplicitLocale: true };\n  }\n\n  if (!input || typeof input !== 'object' || Array.isArray(input)) {\n    throw new TypeError('Monkeys locale must be a locale id or locale pack object.');\n  }\n\n  const locale = normalizeLocaleId(input.locale);\n  assertMessagesOverride(input.messages, 'Monkeys locale messages');\n\n  return {\n    locale,\n    messages: input.messages,\n    hasExplicitLocale: true,\n  };\n}\n\nexport function mergeMonkeysLocaleMessages(\n  base: MonkeysLocaleMessages,\n  override?: MonkeysLocaleMessagesOverride,\n): MonkeysLocaleMessages {\n  if (!override) return base;\n\n  return {\n    pagination: { ...base.pagination, ...override.pagination },\n    dialog: { ...base.dialog, ...override.dialog },\n    dropdownMenu: { ...base.dropdownMenu, ...override.dropdownMenu },\n    loading: { ...base.loading, ...override.loading },\n    layout: { ...base.layout, ...override.layout },\n    steps: { ...base.steps, ...override.steps },\n    numberInput: { ...base.numberInput, ...override.numberInput },\n    passwordInput: { ...base.passwordInput, ...override.passwordInput },\n    multiSelect: { ...base.multiSelect, ...override.multiSelect },\n    table: { ...base.table, ...override.table },\n    toolbar: {\n      theme: { ...base.toolbar.theme, ...override.toolbar?.theme },\n      language: { ...base.toolbar.language, ...override.toolbar?.language },\n    },\n    toast: { ...base.toast, ...override.toast },\n    dataExplorer: {\n      viewTree: {\n        ...base.dataExplorer.viewTree,\n        ...override.dataExplorer?.viewTree,\n      },\n    },\n    workbench: {\n      collection: {\n        ...base.workbench.collection,\n        ...override.workbench?.collection,\n      },\n      interactiveTable: {\n        ...base.workbench.interactiveTable,\n        ...override.workbench?.interactiveTable,\n      },\n    },\n    agentWorkbench: {\n      ...base.agentWorkbench,\n      ...override.agentWorkbench,\n      modes: {\n        ...base.agentWorkbench.modes,\n        ...override.agentWorkbench?.modes,\n      },\n      composer: {\n        ...base.agentWorkbench.composer,\n        ...override.agentWorkbench?.composer,\n      },\n      quickStart: {\n        ...base.agentWorkbench.quickStart,\n        ...override.agentWorkbench?.quickStart,\n      },\n      tool: {\n        ...base.agentWorkbench.tool,\n        ...override.agentWorkbench?.tool,\n        status: {\n          ...base.agentWorkbench.tool.status,\n          ...override.agentWorkbench?.tool?.status,\n        },\n      },\n      approval: {\n        ...base.agentWorkbench.approval,\n        ...override.agentWorkbench?.approval,\n      },\n      artifact: {\n        ...base.agentWorkbench.artifact,\n        ...override.agentWorkbench?.artifact,\n      },\n      run: {\n        ...base.agentWorkbench.run,\n        ...override.agentWorkbench?.run,\n      },\n      process: {\n        ...base.agentWorkbench.process,\n        ...override.agentWorkbench?.process,\n      },\n      artifactWorkspace: {\n        ...base.agentWorkbench.artifactWorkspace,\n        ...override.agentWorkbench?.artifactWorkspace,\n      },\n      usage: {\n        ...base.agentWorkbench.usage,\n        ...override.agentWorkbench?.usage,\n      },\n      navigation: {\n        ...base.agentWorkbench.navigation,\n        ...override.agentWorkbench?.navigation,\n      },\n      details: {\n        ...base.agentWorkbench.details,\n        ...override.agentWorkbench?.details,\n        tabs: {\n          ...base.agentWorkbench.details.tabs,\n          ...override.agentWorkbench?.details?.tabs,\n        },\n        status: {\n          ...base.agentWorkbench.details.status,\n          ...override.agentWorkbench?.details?.status,\n        },\n        state: {\n          loading: {\n            ...base.agentWorkbench.details.state.loading,\n            ...override.agentWorkbench?.details?.state?.loading,\n          },\n          empty: {\n            ...base.agentWorkbench.details.state.empty,\n            ...override.agentWorkbench?.details?.state?.empty,\n          },\n          error: {\n            ...base.agentWorkbench.details.state.error,\n            ...override.agentWorkbench?.details?.state?.error,\n          },\n        },\n        actions: {\n          ...base.agentWorkbench.details.actions,\n          ...override.agentWorkbench?.details?.actions,\n        },\n        workspace: {\n          ...base.agentWorkbench.details.workspace,\n          ...override.agentWorkbench?.details?.workspace,\n          diffStatus: {\n            ...base.agentWorkbench.details.workspace.diffStatus,\n            ...override.agentWorkbench?.details?.workspace?.diffStatus,\n          },\n          fileOperation: {\n            ...base.agentWorkbench.details.workspace.fileOperation,\n            ...override.agentWorkbench?.details?.workspace?.fileOperation,\n          },\n        },\n      },\n    },\n  };\n}\n\nexport const defaultMonkeysLocale: MonkeysResolvedLocale = {\n  locale: enUS.locale,\n  messages: mergeMonkeysLocaleMessages(\n    enUS.messages as MonkeysLocaleMessages,\n  ),\n};\n\nexport function resolveMonkeysLocale(\n  input?: MonkeysLocaleInput,\n  override?: MonkeysLocaleMessagesOverride,\n  parent?: MonkeysResolvedLocale,\n): MonkeysResolvedLocale {\n  if (override !== undefined) {\n    assertMessagesOverride(override, 'MonkeysProvider messages');\n  }\n  const normalized = normalizeLocaleInput(input);\n  const locale = normalized.locale ?? parent?.locale ?? enUS.locale;\n  const builtInMessages = isBuiltInLocale(locale)\n    ? BUILT_IN_LOCALES[locale].messages\n    : undefined;\n  let messages = mergeMonkeysLocaleMessages(\n    enUS.messages as MonkeysLocaleMessages,\n    builtInMessages,\n  );\n\n  if (parent && (!normalized.hasExplicitLocale || parent.locale === locale)) {\n    messages = mergeMonkeysLocaleMessages(messages, parent.messages);\n  }\n\n  messages = mergeMonkeysLocaleMessages(messages, normalized.messages);\n  messages = mergeMonkeysLocaleMessages(messages, override);\n\n  return { locale, messages };\n}\n","import {\n  createContext,\n  useContext,\n  useMemo,\n  type Context,\n} from 'react';\n\nimport type { AssetIconResolver, AssetImageResolver } from '../components/base/BaseAssetIcon';\nimport type { BaseAppearance } from '../components/base/types';\nimport type { DataExplorerAppearance } from '../components/data-explorer/types';\nimport {\n  defaultMonkeysLocale,\n  type MonkeysLocaleMessages,\n  type MonkeysResolvedLocale,\n} from '../locale';\nimport type { CompiledThemeTokens } from '../theme-system';\n\nexport type MonkeysDirection = 'ltr' | 'rtl';\n\nexport interface MonkeysEnvironment {\n  getDocument?: () => Document | null;\n  getWindow?: () => Window | null;\n}\n\nexport type MonkeysPortalContainer =\n  | Element\n  | null\n  | (() => Element | null);\n\nexport interface MonkeysPortalOptions {\n  container?: MonkeysPortalContainer;\n  disabled?: boolean;\n}\n\nexport type MonkeysLoadingStateVariant = 'spinner' | 'skeleton';\nexport type MonkeysEmptyStateVariant = 'default' | 'compact';\nexport type MonkeysStatusStateDensity = 'compact' | 'default' | 'comfortable';\n\nexport type MonkeysListFooterPaginationMode = 'auto' | 'pages' | 'compact';\nexport type MonkeysListFooterAlignment = 'start' | 'end' | 'space-between';\n\nexport interface MonkeysListFooterConfig {\n  showTotal?: boolean;\n  showPageSize?: boolean;\n  pageSizeOptions?: number[];\n  paginationMode?: MonkeysListFooterPaginationMode;\n  alignment?: MonkeysListFooterAlignment;\n  density?: MonkeysStatusStateDensity;\n}\n\nexport interface MonkeysStatusStatesConfig {\n  loading?: { variant?: MonkeysLoadingStateVariant };\n  empty?: { variant?: MonkeysEmptyStateVariant };\n  error?: { showRetry?: boolean };\n  permission?: { showRequestAccess?: boolean };\n  density?: MonkeysStatusStateDensity;\n}\n\nexport interface MonkeysComponentAttributes {\n  dir?: MonkeysDirection;\n  'data-monkeys-direction'?: MonkeysDirection;\n  'data-monkeys-locale'?: string;\n  'data-monkeys-theme'?: string;\n  'data-monkeys-theme-mode'?: string;\n}\n\ninterface MonkeysLocaleContextValue extends MonkeysResolvedLocale {\n  provided: boolean;\n}\n\ninterface MonkeysThemeContextValue {\n  provided: boolean;\n  resolvedTheme?: CompiledThemeTokens;\n  themeId?: string;\n  baseAppearance?: BaseAppearance;\n  dataExplorerAppearance?: DataExplorerAppearance;\n  statusStates?: MonkeysStatusStatesConfig;\n  listFooter?: MonkeysListFooterConfig;\n}\n\ninterface MonkeysDirectionContextValue {\n  provided: boolean;\n  direction?: MonkeysDirection;\n}\n\ninterface MonkeysEnvironmentContextValue {\n  provided: boolean;\n  environment: MonkeysEnvironment;\n  portal: MonkeysPortalOptions;\n  iconResolver?: AssetIconResolver;\n  imageResolver?: AssetImageResolver;\n}\n\nconst EMPTY_ENVIRONMENT = Object.freeze({}) satisfies MonkeysEnvironment;\nconst EMPTY_PORTAL = Object.freeze({}) satisfies MonkeysPortalOptions;\n\ninterface MonkeysProviderContexts {\n  locale: Context<MonkeysLocaleContextValue>;\n  theme: Context<MonkeysThemeContextValue>;\n  direction: Context<MonkeysDirectionContextValue>;\n  environment: Context<MonkeysEnvironmentContextValue>;\n}\n\n// Every bundled public entry contains this module. Keep only the Context\n// identities in a realm-wide registry so root, provider, and component\n// subpaths interoperate in both CJS and ESM builds. Provider values remain in\n// React trees, so SSR requests are isolated. Bump the contract key only when\n// these Context value shapes become intentionally incompatible.\nconst MONKEYS_PROVIDER_CONTEXTS_KEY = Symbol.for(\n  '@inf-monkeys-tech/monkeys-design/provider-context@1',\n);\n\ntype MonkeysProviderContextHost = typeof globalThis & {\n  [MONKEYS_PROVIDER_CONTEXTS_KEY]?: MonkeysProviderContexts;\n};\n\nfunction createMonkeysProviderContexts(): MonkeysProviderContexts {\n  return Object.freeze({\n    locale: createContext<MonkeysLocaleContextValue>({\n      ...defaultMonkeysLocale,\n      provided: false,\n    }),\n    theme: createContext<MonkeysThemeContextValue>({\n      provided: false,\n    }),\n    direction: createContext<MonkeysDirectionContextValue>({\n      provided: false,\n    }),\n    environment: createContext<MonkeysEnvironmentContextValue>({\n      provided: false,\n      environment: EMPTY_ENVIRONMENT,\n      portal: EMPTY_PORTAL,\n    }),\n  });\n}\n\nfunction getMonkeysProviderContexts(): MonkeysProviderContexts {\n  const host = globalThis as MonkeysProviderContextHost;\n  const existing = host[MONKEYS_PROVIDER_CONTEXTS_KEY];\n  if (existing) return existing;\n\n  const contexts = createMonkeysProviderContexts();\n  Object.defineProperty(host, MONKEYS_PROVIDER_CONTEXTS_KEY, {\n    value: contexts,\n    enumerable: false,\n    configurable: false,\n    writable: false,\n  });\n  return contexts;\n}\n\nconst providerContexts = getMonkeysProviderContexts();\n\nexport const MonkeysLocaleContext = providerContexts.locale;\n\nexport const MonkeysThemeContext = providerContexts.theme;\n\nexport const MonkeysDirectionContext = providerContexts.direction;\n\nexport const MonkeysEnvironmentContext = providerContexts.environment;\n\nfunction mergeAppearance<T extends { slots?: object; styles?: object }>(\n  inherited: T | undefined,\n  explicit: T | undefined,\n): T | undefined {\n  if (explicit === undefined) return inherited;\n  if (inherited === undefined) return explicit;\n\n  return {\n    ...inherited,\n    ...explicit,\n    slots:\n      inherited.slots || explicit.slots\n        ? { ...inherited.slots, ...explicit.slots }\n        : undefined,\n    styles:\n      inherited.styles || explicit.styles\n        ? { ...inherited.styles, ...explicit.styles }\n        : undefined,\n  };\n}\n\nexport function useMonkeysLocale() {\n  try {\n    const context = useContext(MonkeysLocaleContext);\n    return context ?? { ...defaultMonkeysLocale, provided: false };\n  } catch {\n    return { ...defaultMonkeysLocale, provided: false };\n  }\n}\n\nexport function useMonkeysLocaleMessages(): MonkeysLocaleMessages {\n  return useContext(MonkeysLocaleContext).messages;\n}\n\nexport function useMonkeysResolvedTheme() {\n  return useContext(MonkeysThemeContext).resolvedTheme;\n}\n\nexport function useMonkeysBaseAppearance(\n  explicit?: BaseAppearance,\n): BaseAppearance | undefined {\n  const inherited = useContext(MonkeysThemeContext).baseAppearance;\n  return useMemo(\n    () => mergeAppearance(inherited, explicit),\n    [explicit, inherited],\n  );\n}\n\nexport function useMonkeysDataExplorerAppearance(\n  explicit?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n  const inherited = useContext(MonkeysThemeContext).dataExplorerAppearance;\n  return useMemo(\n    () => mergeAppearance(inherited, explicit),\n    [explicit, inherited],\n  );\n}\n\nexport function useMonkeysStatusStates(): MonkeysStatusStatesConfig {\n  return useContext(MonkeysThemeContext).statusStates ?? {};\n}\n\nexport function useMonkeysListFooter(): MonkeysListFooterConfig {\n  return useContext(MonkeysThemeContext).listFooter ?? {};\n}\n\nexport function useMonkeysDirection() {\n  return useContext(MonkeysDirectionContext).direction;\n}\n\nexport function useMonkeysEnvironment() {\n  return useContext(MonkeysEnvironmentContext).environment;\n}\n\nexport function useMonkeysPortalOptions() {\n  return useContext(MonkeysEnvironmentContext).portal;\n}\n\nexport function useMonkeysComponentAttributes(): MonkeysComponentAttributes {\n  const locale = useContext(MonkeysLocaleContext);\n  const theme = useContext(MonkeysThemeContext);\n  const direction = useContext(MonkeysDirectionContext);\n  const providerActive = locale.provided || theme.provided || direction.provided;\n\n  return useMemo(\n    () =>\n      providerActive\n        ? {\n            dir: direction.direction,\n            'data-monkeys-direction': direction.direction,\n            'data-monkeys-locale': locale.locale,\n            'data-monkeys-theme': theme.themeId,\n            'data-monkeys-theme-mode': theme.resolvedTheme?.colorMode,\n          }\n        : {},\n    [\n      direction.direction,\n      locale.locale,\n      providerActive,\n      theme.resolvedTheme?.colorMode,\n      theme.themeId,\n    ],\n  );\n}\n\nexport function useMonkeysAssetIconResolver(): AssetIconResolver | undefined {\n  return useContext(MonkeysEnvironmentContext).iconResolver;\n}\nexport function useMonkeysAssetImageResolver(): AssetImageResolver | undefined {\n  return useContext(MonkeysEnvironmentContext).imageResolver;\n}\n","import type { AssetIconResolver, AssetImageResolver } from '../components/base/BaseAssetIcon';\nimport { useContext, useMemo, type ReactNode } from 'react';\n\nimport type { BaseAppearance } from '../components/base/types';\nimport type { DataExplorerAppearance } from '../components/data-explorer/types';\nimport {\n  resolveMonkeysLocale,\n  type MonkeysLocaleInput,\n  type MonkeysLocaleMessagesOverride,\n} from '../locale';\nimport {\n  compileThemeTokens,\n  type CompiledThemeTokens,\n  type MonkeysThemeColorMode,\n  type MonkeysThemeDensity,\n  type ThemeTokens,\n} from '../theme-system';\nimport {\n  MonkeysDirectionContext,\n  MonkeysEnvironmentContext,\n  MonkeysLocaleContext,\n  MonkeysThemeContext,\n  type MonkeysDirection,\n  type MonkeysEnvironment,\n  type MonkeysPortalOptions,\n  type MonkeysStatusStatesConfig,\n  type MonkeysListFooterConfig,\n} from './context';\n\nexport interface MonkeysProviderAppearance {\n  base?: BaseAppearance;\n  dataExplorer?: DataExplorerAppearance;\n}\n\nexport interface MonkeysProviderProps {\n  children?: ReactNode;\n  locale?: MonkeysLocaleInput;\n  messages?: MonkeysLocaleMessagesOverride;\n  direction?: MonkeysDirection;\n  theme?: ThemeTokens;\n  themeId?: string;\n  colorMode?: MonkeysThemeColorMode;\n  density?: MonkeysThemeDensity;\n  appearance?: MonkeysProviderAppearance;\n  environment?: MonkeysEnvironment;\n  iconResolver?: AssetIconResolver;\n  imageResolver?: AssetImageResolver;\n  portal?: MonkeysPortalOptions;\n  statusStates?: MonkeysStatusStatesConfig;\n  listFooter?: MonkeysListFooterConfig;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validateDirection(direction: MonkeysDirection | undefined) {\n  if (direction !== undefined && direction !== 'ltr' && direction !== 'rtl') {\n    throw new TypeError('MonkeysProvider direction must be \"ltr\" or \"rtl\".');\n  }\n}\n\nfunction validateEnvironment(environment: MonkeysEnvironment | undefined) {\n  if (environment === undefined) return;\n  if (!isRecord(environment)) {\n    throw new TypeError('MonkeysProvider environment must be an object.');\n  }\n  if (\n    environment.getDocument !== undefined &&\n    typeof environment.getDocument !== 'function'\n  ) {\n    throw new TypeError(\n      'MonkeysProvider environment.getDocument must be a function.',\n    );\n  }\n  if (\n    environment.getWindow !== undefined &&\n    typeof environment.getWindow !== 'function'\n  ) {\n    throw new TypeError(\n      'MonkeysProvider environment.getWindow must be a function.',\n    );\n  }\n}\n\nfunction validatePortal(portal: MonkeysPortalOptions | undefined) {\n  if (portal === undefined) return;\n  if (!isRecord(portal)) {\n    throw new TypeError('MonkeysProvider portal must be an object.');\n  }\n  if (portal.disabled !== undefined && typeof portal.disabled !== 'boolean') {\n    throw new TypeError('MonkeysProvider portal.disabled must be a boolean.');\n  }\n  if (portal.container == null) return;\n  if (\n    typeof portal.container !== 'function' &&\n    typeof portal.container !== 'object'\n  ) {\n    throw new TypeError(\n      'MonkeysProvider portal.container must be an Element, null, or a function.',\n    );\n  }\n}\n\nfunction resolveProviderTheme(\n  theme: ThemeTokens | undefined,\n  colorMode: MonkeysThemeColorMode | undefined,\n  density: MonkeysThemeDensity | undefined,\n  inherited: CompiledThemeTokens | undefined,\n) {\n  if (!theme) return inherited;\n  return compileThemeTokens(theme, { colorMode, density });\n}\n\nexport function MonkeysProvider({\n  children,\n  locale,\n  messages,\n  direction,\n  theme,\n  themeId,\n  colorMode,\n  density,\n  appearance,\n  environment,\n  iconResolver,\n  imageResolver,\n  portal,\n  statusStates,\n  listFooter,\n}: MonkeysProviderProps) {\n  const parentLocale = useContext(MonkeysLocaleContext);\n  const parentTheme = useContext(MonkeysThemeContext);\n  const parentDirection = useContext(MonkeysDirectionContext);\n  const parentEnvironment = useContext(MonkeysEnvironmentContext);\n\n  validateDirection(direction);\n  validateEnvironment(environment);\n  if (iconResolver !== undefined && typeof iconResolver !== 'function') {\n    throw new TypeError('MonkeysProvider iconResolver must be a function.');\n  }\n  if (imageResolver !== undefined && typeof imageResolver !== 'function') {\n    throw new TypeError('MonkeysProvider imageResolver must be a function.');\n  }\n  validatePortal(portal);\n\n  const resolvedLocale = useMemo(\n    () => resolveMonkeysLocale(locale, messages, parentLocale),\n    [locale, messages, parentLocale],\n  );\n  const localeValue = useMemo(\n    () => ({ ...resolvedLocale, provided: true }),\n    [resolvedLocale],\n  );\n  const resolvedTheme = useMemo(\n    () =>\n      resolveProviderTheme(\n        theme,\n        colorMode,\n        density,\n        parentTheme.resolvedTheme,\n      ),\n    [colorMode, density, parentTheme.resolvedTheme, theme],\n  );\n  const themeValue = useMemo(\n    () => ({\n      provided: true,\n      resolvedTheme,\n      themeId: themeId ?? parentTheme.themeId,\n      baseAppearance: {\n        ...parentTheme.baseAppearance,\n        ...appearance?.base,\n        ...(density ? { density } : undefined),\n        slots: {\n          ...parentTheme.baseAppearance?.slots,\n          ...appearance?.base?.slots,\n        },\n        styles: {\n          ...parentTheme.baseAppearance?.styles,\n          ...appearance?.base?.styles,\n        },\n      },\n      dataExplorerAppearance: {\n        ...parentTheme.dataExplorerAppearance,\n        ...appearance?.dataExplorer,\n        ...(density ? { density } : undefined),\n        slots: {\n          ...parentTheme.dataExplorerAppearance?.slots,\n          ...appearance?.dataExplorer?.slots,\n        },\n        styles: {\n          ...parentTheme.dataExplorerAppearance?.styles,\n          ...appearance?.dataExplorer?.styles,\n        },\n      },\n      statusStates: {\n        ...parentTheme.statusStates,\n        ...statusStates,\n        loading: { ...parentTheme.statusStates?.loading, ...statusStates?.loading },\n        empty: { ...parentTheme.statusStates?.empty, ...statusStates?.empty },\n        error: { ...parentTheme.statusStates?.error, ...statusStates?.error },\n        permission: { ...parentTheme.statusStates?.permission, ...statusStates?.permission },\n      },\n      listFooter: {\n        ...parentTheme.listFooter,\n        ...listFooter,\n        ...(listFooter?.pageSizeOptions ? { pageSizeOptions: [...listFooter.pageSizeOptions] } : undefined),\n      },\n    }),\n    [\n      appearance?.base,\n      appearance?.dataExplorer,\n      density,\n      parentTheme.baseAppearance,\n      parentTheme.dataExplorerAppearance,\n      parentTheme.statusStates,\n      parentTheme.themeId,\n      resolvedTheme,\n      statusStates,\n      listFooter,\n      themeId,\n    ],\n  );\n  const directionValue = useMemo(\n    () => ({\n      provided: true,\n      direction: direction ?? parentDirection.direction ?? 'ltr',\n    }),\n    [direction, parentDirection.direction],\n  );\n  const environmentValue = useMemo(\n    () => ({\n      provided: true,\n      iconResolver: iconResolver ?? parentEnvironment.iconResolver,\n      imageResolver: imageResolver ?? parentEnvironment.imageResolver,\n      environment: {\n        ...parentEnvironment.environment,\n        ...environment,\n      },\n      portal: {\n        ...parentEnvironment.portal,\n        ...portal,\n      },\n    }),\n    [\n      environment,\n      parentEnvironment.environment,\n      parentEnvironment.iconResolver,\n      iconResolver,\n      imageResolver,\n      parentEnvironment.imageResolver,\n      parentEnvironment.portal,\n      portal,\n    ],\n  );\n\n  return (\n    <MonkeysLocaleContext.Provider value={localeValue}>\n      <MonkeysThemeContext.Provider value={themeValue}>\n        <MonkeysDirectionContext.Provider value={directionValue}>\n          <MonkeysEnvironmentContext.Provider value={environmentValue}>\n            {children}\n          </MonkeysEnvironmentContext.Provider>\n        </MonkeysDirectionContext.Provider>\n      </MonkeysThemeContext.Provider>\n    </MonkeysLocaleContext.Provider>\n  );\n}\n","import type { ReactNode } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...parts: Array<string | false | null | undefined>) {\n  return twMerge(parts.filter(Boolean).join(' '));\n}\n\nexport function hasRenderableNode(node: ReactNode) {\n  return node !== undefined && node !== null && typeof node !== 'boolean';\n}\n\nexport function hasNonEmptyRenderableNode(node: ReactNode) {\n  if (typeof node === 'string') return node.trim().length > 0;\n  return hasRenderableNode(node);\n}\n","import * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { Check, ChevronDown, Circle, Search } from 'lucide-react';\nimport {\n  forwardRef,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState,\n  type KeyboardEvent,\n} from 'react';\n\nimport { cn } from '../base/utils';\nimport type {\n  UnifiedDropdownMode,\n  UnifiedDropdownGroup,\n  UnifiedDropdownOption,\n  UnifiedDropdownPlacement,\n  UnifiedDropdownProps,\n  UnifiedDropdownValue,\n} from './types';\n\nconst placementMap: Record<\n  UnifiedDropdownPlacement,\n  { side: 'top' | 'bottom'; align: 'start' | 'end' }\n> = {\n  'bottom-start': { side: 'bottom', align: 'start' },\n  'bottom-end': { side: 'bottom', align: 'end' },\n  'top-start': { side: 'top', align: 'start' },\n  'top-end': { side: 'top', align: 'end' },\n};\n\nfunction flattenOptions(\n  options: readonly UnifiedDropdownOption[],\n  depth = 0,\n): Array<UnifiedDropdownOption & { depth: number }> {\n  return options.flatMap((option) => [\n    { ...option, depth },\n    ...(option.children ? flattenOptions(option.children, depth + 1) : []),\n  ]);\n}\n\nfunction validateOptions(options: readonly UnifiedDropdownOption[]) {\n  const values = new Set<string>();\n  flattenOptions(options).forEach((option) => {\n    if (!option || typeof option !== 'object') {\n      throw new TypeError('UnifiedDropdown options must contain objects.');\n    }\n    if (typeof option.value !== 'string' || !option.value.trim()) {\n      throw new TypeError('UnifiedDropdown option value must be a non-empty string.');\n    }\n    if (values.has(option.value)) {\n      throw new TypeError(`UnifiedDropdown option value \"${option.value}\" must be unique.`);\n    }\n    values.add(option.value);\n  });\n}\n\nfunction normalizeValues(value: UnifiedDropdownValue | undefined) {\n  const values = Array.isArray(value) ? value : value === undefined ? [] : [value];\n  return [...new Set(values.filter((item): item is string => typeof item === 'string'))];\n}\n\nfunction getOptionText(option: UnifiedDropdownOption) {\n  if (option.textValue) return option.textValue;\n  return typeof option.label === 'string' ? option.label : option.value;\n}\n\nfunction isMultiMode(mode: UnifiedDropdownMode) {\n  return mode === 'multi' || mode === 'checkbox';\n}\n\nfunction matchesSearch(option: UnifiedDropdownOption, query: string) {\n  return getOptionText(option).toLocaleLowerCase().includes(query.toLocaleLowerCase());\n}\n\nfunction validateValueShape(\n  mode: UnifiedDropdownMode,\n  value: UnifiedDropdownValue | undefined,\n  name: 'value' | 'defaultValue',\n) {\n  if (value === undefined) return;\n  if (isMultiMode(mode) ? !Array.isArray(value) : typeof value !== 'string') {\n    throw new TypeError(\n      `UnifiedDropdown ${name} must be ${isMultiMode(mode) ? 'a string array' : 'a string'} in ${mode} mode.`,\n    );\n  }\n}\n\nexport const UnifiedDropdown = forwardRef<HTMLDivElement, UnifiedDropdownProps>(\n  function UnifiedDropdown(\n    {\n      mode,\n      options = [],\n      groups = [],\n      value,\n      defaultValue,\n      placeholder = 'Select…',\n      trigger,\n      triggerLabel,\n      searchPlaceholder = 'Search…',\n      emptyLabel = 'No options',\n      loadingLabel = 'Loading…',\n      clearLabel = 'Clear selection',\n      retryLabel = 'Retry',\n      loading = false,\n      error,\n      searchable = mode === 'searchable',\n      clearable = false,\n      maxSelections,\n      disabled = false,\n      invalid = false,\n      open: controlledOpen,\n      defaultOpen = false,\n      placement = 'bottom-start',\n      closeOnSelect = mode !== 'multi' && mode !== 'checkbox',\n      portal = true,\n      size = 'default',\n      width = 'trigger',\n      appearance,\n      className,\n      classNames,\n      slots,\n      style,\n      onOpenChange,\n      onValueChange,\n      onSelect,\n      onAction,\n      onClear,\n      onRetry,\n      ...rootProps\n    },\n    ref,\n  ) {\n    if (!['single', 'multi', 'searchable', 'radio', 'checkbox', 'tree', 'action'].includes(mode)) {\n      throw new TypeError(`UnifiedDropdown mode \"${String(mode)}\" is not supported.`);\n    }\n    const groupedOptions = useMemo(\n      () => groups.reduce<UnifiedDropdownOption[]>((result, group: UnifiedDropdownGroup) => {\n        const groupName = typeof group.label === 'string' ? group.label : group.value;\n        result.push(...group.options.map((option) => ({ ...option, group: option.group ?? groupName })));\n        return result;\n      }, [...options]),\n      [groups, options],\n    );\n    validateOptions(groupedOptions);\n    if (maxSelections !== undefined && (!Number.isFinite(maxSelections) || maxSelections < 0)) {\n      throw new TypeError('UnifiedDropdown maxSelections must be a non-negative finite number.');\n    }\n    if (mode === 'action' && (value !== undefined || defaultValue !== undefined)) {\n      throw new TypeError('UnifiedDropdown action mode does not accept a value.');\n    }\n    if (mode !== 'action') {\n      validateValueShape(mode, value, 'value');\n      validateValueShape(mode, defaultValue, 'defaultValue');\n    }\n\n    const id = useId();\n    const triggerId = `${id}-trigger`;\n    const listId = `${id}-listbox`;\n    const searchId = `${id}-search`;\n    const triggerRef = useRef<HTMLButtonElement | null>(null);\n    const itemRefs = useRef<Array<HTMLButtonElement | null>>([]);\n    const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n    const [uncontrolledValue, setUncontrolledValue] = useState<UnifiedDropdownValue>(\n      defaultValue ?? (isMultiMode(mode) ? [] : ''),\n    );\n    const [query, setQuery] = useState('');\n    const [activeIndex, setActiveIndex] = useState(0);\n    const isControlled = controlledOpen !== undefined;\n    const open = isControlled ? controlledOpen : uncontrolledOpen;\n    const selectedValues = normalizeValues(value ?? uncontrolledValue);\n    const flattened = useMemo(() => flattenOptions(groupedOptions), [groupedOptions]);\n    const visibleOptions = useMemo(\n      () => (searchable ? flattened.filter((option) => matchesSearch(option, query)) : flattened),\n      [flattened, query, searchable],\n    );\n    const selectedSet = useMemo(() => new Set(selectedValues), [selectedValues]);\n    const selectedOptions = flattened.filter((option) => selectedSet.has(option.value));\n    const selectedLabel = selectedOptions.map(getOptionText).join(', ');\n    const resolvedTriggerLabel = triggerLabel ?? (selectedLabel || placeholder);\n    const isPlaceholder = selectedOptions.length === 0 && !triggerLabel;\n    const { side, align } = placementMap[placement];\n    const isMenu = mode === 'action';\n    const usesCheckedMenu = mode === 'radio' || mode === 'checkbox';\n    const contentRole = isMenu || usesCheckedMenu ? 'menu' : 'listbox';\n\n    useEffect(() => {\n      if (open) setActiveIndex(0);\n    }, [open, query]);\n\n    const setOpen = (nextOpen: boolean) => {\n      if (disabled) return;\n      if (!isControlled) setUncontrolledOpen(nextOpen);\n      onOpenChange?.(nextOpen);\n    };\n\n    const commitValue = (nextValue: UnifiedDropdownValue) => {\n      if (value === undefined) setUncontrolledValue(nextValue);\n      onValueChange?.(nextValue);\n    };\n\n    const selectOption = (option: UnifiedDropdownOption) => {\n      if (disabled || option.disabled) return;\n      onSelect?.(option);\n      if (mode === 'action') {\n        if (closeOnSelect) setOpen(false);\n        if (onAction) queueMicrotask(() => onAction(option));\n        return;\n      }\n      if (isMultiMode(mode)) {\n        const nextValues = selectedSet.has(option.value)\n          ? selectedValues.filter((item) => item !== option.value)\n          : maxSelections !== undefined && selectedValues.length >= maxSelections\n            ? selectedValues\n            : [...selectedValues, option.value];\n        commitValue(nextValues);\n      } else {\n        commitValue(option.value);\n      }\n      if (closeOnSelect && !isMultiMode(mode)) setOpen(false);\n    };\n\n    const handleTriggerKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n      if (disabled) return;\n      if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n        event.preventDefault();\n        if (!open) setOpen(true);\n        const direction = event.key === 'ArrowDown' ? 1 : -1;\n        setActiveIndex((index) => Math.max(0, Math.min(visibleOptions.length - 1, index + direction)));\n      }\n    };\n\n    const handleContentKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n      if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n        event.preventDefault();\n        const direction = event.key === 'ArrowDown' ? 1 : -1;\n        setActiveIndex((index) => {\n          const next = index + direction;\n          return Math.max(0, Math.min(visibleOptions.length - 1, next));\n        });\n      }\n      if (event.key === 'Enter' && visibleOptions[activeIndex]) {\n        event.preventDefault();\n        selectOption(visibleOptions[activeIndex]!);\n      }\n    };\n\n    useEffect(() => {\n      if (!open) return;\n      itemRefs.current[activeIndex]?.scrollIntoView({ block: 'nearest' });\n    }, [activeIndex, open]);\n\n    const clearSelection = () => {\n      commitValue(isMultiMode(mode) ? [] : '');\n      onClear?.();\n    };\n\n    return (\n      <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n        <div\n          {...rootProps}\n          ref={ref}\n          className={cn('relative inline-flex min-w-0', className)}\n          style={style}\n          data-monkeys-component=\"unified-dropdown\"\n          data-mode={mode}\n          data-state={open ? 'open' : 'closed'}\n          data-invalid={invalid || undefined}\n          data-disabled={disabled || undefined}\n          data-appearance-preset={appearance?.preset}\n          data-appearance-variant={appearance?.variant}\n          data-appearance-density={appearance?.density}\n          data-appearance-radius={appearance?.radius}\n        >\n          <PopoverPrimitive.Trigger asChild>\n            <button\n              ref={triggerRef}\n              id={triggerId}\n              type=\"button\"\n              disabled={disabled}\n              aria-expanded={open}\n              aria-haspopup={isMenu || usesCheckedMenu ? 'menu' : 'listbox'}\n              aria-controls={open ? listId : undefined}\n              aria-invalid={invalid || undefined}\n              onKeyDown={handleTriggerKeyDown}\n              className={cn(\n                'flex min-w-0 items-center justify-between gap-2 rounded-md border border-input bg-control-surface px-3 text-left text-sm text-foreground shadow-sm outline-none transition-colors',\n                'focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-control-surface',\n                'disabled:cursor-not-allowed disabled:opacity-50',\n                size === 'sm' ? 'h-8 py-1 text-xs' : 'h-10 py-2',\n                invalid && 'border-destructive focus-visible:ring-destructive',\n                width === 'responsive' && 'w-full sm:w-auto',\n                classNames?.trigger,\n              )}\n            >\n              {trigger ? <span className=\"min-w-0 shrink-0\">{trigger}</span> : null}\n              <span className={cn('min-w-0 flex-1 truncate', isPlaceholder && 'text-muted-foreground')}>\n                {resolvedTriggerLabel}\n              </span>\n              <ChevronDown aria-hidden=\"true\" className=\"h-4 w-4 shrink-0 opacity-60\" />\n            </button>\n          </PopoverPrimitive.Trigger>\n          {(() => {\n            const content = (\n              <PopoverPrimitive.Content\n              id={listId}\n              side={side}\n              align={align}\n              sideOffset={6}\n              collisionPadding={8}\n              avoidCollisions\n              onKeyDown={handleContentKeyDown}\n              onOpenAutoFocus={(event) => {\n                event.preventDefault();\n                const target = searchable\n                  ? document.getElementById(searchId)\n                  : itemRefs.current[0];\n                target?.focus();\n              }}\n              tabIndex={-1}\n              className={cn(\n                'z-50 max-h-[min(24rem,calc(100vh-1rem))] max-w-[calc(100vw-1rem)] overflow-y-auto rounded-md border bg-menu-surface p-1 text-popover-foreground shadow-md outline-none',\n                width === 'trigger' && 'w-[var(--radix-popover-trigger-width)] min-w-[12rem]',\n                width === 'content' && 'min-w-[12rem] max-w-[min(32rem,calc(100vw-1rem))]',\n                width === 'responsive' && 'w-[min(var(--radix-popover-trigger-width),calc(100vw-1rem))] min-w-[12rem]',\n                classNames?.content,\n              )}\n              >\n              {searchable ? (\n                <div className=\"relative mb-1\">\n                  <Search aria-hidden=\"true\" className=\"pointer-events-none absolute left-2 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n                  <input\n                    id={searchId}\n                    value={query}\n                    onChange={(event) => setQuery(event.target.value)}\n                    placeholder={searchPlaceholder}\n                    aria-label={searchPlaceholder}\n                    className={cn('h-9 w-full rounded-sm border-0 bg-transparent pl-8 pr-2 text-sm outline-none ring-0 placeholder:text-muted-foreground focus-visible:ring-2 focus-visible:ring-ring', classNames?.search)}\n                  />\n                </div>\n              ) : null}\n              {clearable && selectedOptions.length > 0 ? (\n                <button type=\"button\" className=\"mb-1 w-full rounded-sm px-2 py-1 text-left text-xs text-muted-foreground hover:bg-accent\" onClick={clearSelection}>\n                  {clearLabel}\n                </button>\n              ) : null}\n              {loading && visibleOptions.length === 0 ? (\n                slots?.loading ? slots.loading() : <div role=\"status\" className={cn('px-2 py-6 text-center text-sm text-muted-foreground', classNames?.empty)}>{loadingLabel}</div>\n              ) : error && visibleOptions.length === 0 ? (\n                slots?.error ? slots.error() : <div role=\"alert\" className={cn('px-2 py-6 text-center text-sm text-destructive-text', classNames?.empty)}>{error}{onRetry ? <button type=\"button\" className=\"mt-2 block w-full text-center text-foreground underline\" onClick={onRetry}>{retryLabel}</button> : null}</div>\n              ) : visibleOptions.length === 0 ? (\n                slots?.empty ? slots.empty() : <div role=\"status\" className={cn('px-2 py-6 text-center text-sm text-muted-foreground', classNames?.empty)}>{emptyLabel}</div>\n              ) : (\n                <div role={mode === 'tree' ? 'tree' : contentRole} aria-multiselectable={mode === 'multi' || undefined}>\n                  {visibleOptions.map((option, index) => {\n                    const selected = selectedSet.has(option.value);\n                    const indicator = mode === 'radio' ? <Circle aria-hidden=\"true\" className={cn('h-3.5 w-3.5', selected && 'fill-current')} /> : <Check aria-hidden=\"true\" className=\"h-4 w-4\" />;\n                    return (\n                      <div key={option.value}>\n                        {option.group && (index === 0 || visibleOptions[index - 1]?.group !== option.group) ? (\n                          <div role=\"presentation\" className={cn('px-2 pb-1 pt-2 text-xs font-medium text-muted-foreground', classNames?.groupLabel)}>{option.group}</div>\n                        ) : null}\n                        <button\n                          ref={(node) => { itemRefs.current[index] = node; }}\n                          type=\"button\"\n                          role={mode === 'tree' ? 'treeitem' : mode === 'radio' ? 'menuitemradio' : mode === 'checkbox' ? 'menuitemcheckbox' : isMenu ? 'menuitem' : 'option'}\n                          aria-level={mode === 'tree' ? option.depth + 1 : undefined}\n                          aria-selected={!isMenu && !usesCheckedMenu ? selected : undefined}\n                          aria-checked={usesCheckedMenu ? selected : undefined}\n                          disabled={option.disabled}\n                          data-highlighted={index === activeIndex || undefined}\n                          data-state={selected ? 'checked' : 'unchecked'}\n                          onMouseEnter={() => setActiveIndex(index)}\n                          onClick={() => selectOption(option)}\n                          className={cn(\n                            'relative flex min-h-9 w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors',\n                            'hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground',\n                            'disabled:pointer-events-none disabled:opacity-50',\n                            index === activeIndex && 'bg-accent text-accent-foreground',\n                            selected && 'font-medium',\n                            option.danger && 'text-destructive-text',\n                            mode !== 'action' && 'pl-8',\n                            classNames?.item,\n                          )}\n                          style={mode === 'tree' ? { paddingInlineStart: `${8 + option.depth * 16}px` } : undefined}\n                        >\n                          {mode !== 'action' ? <span className=\"absolute left-2 flex h-4 w-4 items-center justify-center\">{selected ? indicator : null}</span> : null}\n                          {slots?.option ? slots.option({ option, selected, highlighted: index === activeIndex }) : <>\n                            {option.icon ? <span className=\"shrink-0\">{option.icon}</span> : null}\n                            <span className={cn('min-w-0 flex-1 truncate', classNames?.itemLabel)}>{option.label}</span>\n                            {option.description ? <span className={cn('max-w-[45%] truncate text-xs text-muted-foreground', classNames?.itemDescription)}>{option.description}</span> : null}\n                          </>}\n                        </button>\n                      </div>\n                    );\n                  })}\n                </div>\n              )}\n              {error && visibleOptions.length > 0 ? <div role=\"status\" className=\"px-2 py-1 text-xs text-destructive-text\">{error}</div> : null}\n              {loading && visibleOptions.length > 0 ? <div role=\"status\" className=\"px-2 py-1 text-xs text-muted-foreground\">{loadingLabel}</div> : null}\n              {slots?.footer ? slots.footer() : null}\n              </PopoverPrimitive.Content>\n            );\n            return portal ? <PopoverPrimitive.Portal>{content}</PopoverPrimitive.Portal> : content;\n          })()}\n        </div>\n      </PopoverPrimitive.Root>\n    );\n  },\n);\n","import type {\n  BaseAppearance,\n  BaseBackground,\n  BaseBorder,\n  BaseControlTone,\n  BaseDensity,\n  BaseHeadingSize,\n  BaseLayoutAlign,\n  BaseLayoutJustify,\n  BaseLayoutLength,\n  BaseListMarker,\n  BaseListSpacing,\n  BaseRadius,\n  BaseResolvedTheme,\n  BaseThemePresetId,\n  BaseThemeSlots,\n  BaseThemeStyles,\n  BaseTypographySize,\n  BaseTypographyTone,\n} from './types';\nimport { cn } from './utils';\n\ntype ResolvedSlots = Required<BaseThemeSlots>;\n\nconst emptyStyles: BaseThemeStyles = {};\n\nconst motionBase =\n  'motion-safe:transition motion-safe:duration-300 motion-safe:ease-out';\n\nconst motionInteractive =\n  'motion-safe:transition-all motion-safe:duration-300 motion-safe:ease-out';\n\nconst motionTransform =\n  'motion-safe:transition-transform motion-safe:duration-300 motion-safe:ease-out';\nconst tableScrollbarChrome = cn(\n  '[scrollbar-width:thin]',\n  '[scrollbar-color:hsl(var(--muted-foreground)/0.45)_transparent]',\n  '[&::-webkit-scrollbar]:h-2 [&::-webkit-scrollbar]:w-2',\n  '[&::-webkit-scrollbar-button]:hidden [&::-webkit-scrollbar-button]:h-0 [&::-webkit-scrollbar-button]:w-0 [&::-webkit-scrollbar-button]:bg-transparent',\n  '[&::-webkit-scrollbar-button:single-button]:hidden [&::-webkit-scrollbar-button:single-button]:h-0 [&::-webkit-scrollbar-button:single-button]:w-0',\n  '[&::-webkit-scrollbar-button:double-button]:hidden [&::-webkit-scrollbar-button:double-button]:h-0 [&::-webkit-scrollbar-button:double-button]:w-0',\n  '[&::-webkit-scrollbar-corner]:bg-transparent',\n  '[&::-webkit-scrollbar-track]:bg-transparent',\n  '[&:has(thead.sticky)::-webkit-scrollbar-track]:mt-[var(--base-table-header-height)]',\n  '[&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-muted-foreground/40',\n  'hover:[&::-webkit-scrollbar-thumb]:bg-muted-foreground/55',\n);\nconst tableStickyHeaderCells = cn(\n  '[&.sticky_th]:sticky [&.sticky_th]:top-0 [&.sticky_th]:z-[2]',\n  '[&.sticky_th]:bg-[var(--base-table-sticky-header-bg)]',\n  '[&.sticky_th]:shadow-[inset_0_-1px_0_var(--base-table-header-separator)]',\n);\n\nconst baseSlots: ResolvedSlots = {\n  buttonBase:\n    cn(\n      'group/button inline-flex min-w-0 items-center justify-center gap-2 rounded-md border px-3 text-sm font-medium focus-visible:outline-none',\n      'cursor-pointer disabled:!cursor-not-allowed',\n      motionInteractive,\n    ),\n  buttonDefault:\n    'border-border bg-background text-foreground hover:bg-accent/60',\n  buttonPrimary:\n    'border-primary/20 bg-primary/10 text-primary hover:bg-primary/15',\n  buttonSuccess:\n    'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-[hsl(var(--success,142_72%_29%))] hover:bg-[hsl(var(--success,142_72%_29%)_/_0.15)]',\n  buttonWarning:\n    'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))] hover:bg-[hsl(var(--warning,45_93%_47%)_/_0.15)]',\n  buttonDanger:\n    'border-destructive/20 bg-destructive/10 text-destructive-text hover:bg-destructive/15',\n  buttonMuted:\n    'border-border/60 bg-muted/45 text-muted-foreground hover:bg-muted/70 hover:text-foreground',\n  buttonActive: 'border-primary/35 bg-primary/10 text-primary',\n  buttonDisabled: '!cursor-not-allowed opacity-60',\n  buttonIconOnly: 'w-9 px-0',\n  buttonIcon:\n    'inline-flex h-4 w-4 shrink-0 items-center justify-center text-[inherit] [&_*]:!text-[inherit] [&_svg]:!stroke-current [&_svg_*]:!stroke-current',\n  buttonLabel: 'min-w-0 truncate',\n  badgeBase:\n    cn(\n      'inline-flex max-w-full items-center gap-1.5 rounded-full border px-2 py-0.5 text-xs font-medium',\n      motionBase,\n    ),\n  badgeDefault: 'border-border/60 bg-background text-foreground',\n  badgePrimary: 'border-primary/30 bg-primary/10 text-primary',\n  badgeSuccess: 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-[hsl(var(--success,142_72%_29%))]',\n  badgeWarning: 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))]',\n  badgeDanger: 'border-destructive/30 bg-destructive/10 text-destructive-text',\n  badgeMuted: 'border-border/60 bg-muted text-muted-foreground',\n  badgeIcon: 'inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center',\n  badgeLabel: 'min-w-0 truncate',\n  textRoot: 'min-w-0 break-words leading-6',\n  textSizeXs: 'text-xs',\n  textSizeSm: 'text-sm',\n  textSizeMd: 'text-base',\n  textSizeLg: 'text-lg',\n  textSizeXl: 'text-xl',\n  typographyToneDefault: 'text-foreground',\n  typographyToneMuted: 'text-muted-foreground',\n  typographyTonePrimary: 'text-primary',\n  typographyToneSuccess: 'text-emerald-700 dark:text-emerald-400',\n  typographyToneWarning: 'text-amber-700 dark:text-amber-400',\n  typographyToneDanger: 'text-destructive-text',\n  typographyToneInherit: 'text-inherit',\n  headingRoot: 'min-w-0 break-words font-semibold tracking-tight',\n  headingSizeXs: 'text-sm leading-5',\n  headingSizeSm: 'text-base leading-6',\n  headingSizeMd: 'text-lg leading-7',\n  headingSizeLg: 'text-xl leading-7',\n  headingSizeXl: 'text-2xl leading-8',\n  headingSize2xl: 'text-3xl leading-9',\n  linkRoot:\n    'inline break-words underline decoration-current/40 underline-offset-4 hover:decoration-current focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n  codeInline:\n    'rounded border border-border/70 bg-muted/60 px-1.5 py-0.5 font-mono text-[0.875em] leading-[1.45] text-foreground',\n  codeBlock:\n    'm-0 max-w-full overflow-x-auto rounded-md border border-border/70 bg-muted/60 p-4 text-foreground',\n  codeContent: 'font-mono text-sm leading-6',\n  kbdRoot:\n    'inline-flex min-h-5 items-center rounded border border-border bg-muted/70 px-1.5 font-mono text-[0.75em] font-medium leading-5 text-foreground shadow-[inset_0_-1px_0_hsl(var(--monkeys-color-border))]',\n  listRoot: 'm-0 min-w-0 list-outside break-words ps-5 text-foreground',\n  listSpacingCompact: '[&>li+li]:mt-1',\n  listSpacingDefault: '[&>li+li]:mt-2',\n  listSpacingRelaxed: '[&>li+li]:mt-3',\n  listMarkerNone: 'list-none ps-0',\n  listMarkerDisc: 'list-disc',\n  listMarkerCircle: 'list-[circle]',\n  listMarkerSquare: 'list-[square]',\n  listMarkerDecimal: 'list-decimal',\n  listMarkerLowerAlpha: 'list-[lower-alpha]',\n  listMarkerUpperAlpha: 'list-[upper-alpha]',\n  listItem: 'min-w-0 ps-1 leading-6 marker:text-muted-foreground',\n  stackRoot: 'flex min-w-0 flex-col',\n  inlineRoot: 'flex min-w-0 flex-row',\n  gridRoot: 'grid min-w-0',\n  containerRoot: 'mx-auto w-full min-w-0',\n  aspectRatioRoot:\n    'relative min-w-0 overflow-hidden [&>*]:h-full [&>*]:w-full',\n  spinnerRoot:\n    'inline-flex shrink-0 items-center justify-center text-current align-middle',\n  spinnerIndicator:\n    'h-5 w-5 rounded-full border-2 border-current border-r-transparent motion-safe:animate-spin motion-reduce:animate-none',\n  visuallyHiddenRoot: 'sr-only',\n  visuallyHiddenFocusable:\n    'focus:not-sr-only focus:fixed focus:left-4 focus:top-4 focus:z-[1000] focus:rounded-md focus:bg-background focus:px-4 focus:py-2 focus:text-foreground focus:shadow-lg focus:outline-none focus:ring-2 focus:ring-ring focus-within:not-sr-only focus-within:fixed focus-within:left-4 focus-within:top-4 focus-within:z-[1000] focus-within:rounded-md focus-within:bg-background focus-within:px-4 focus-within:py-2 focus-within:text-foreground focus-within:shadow-lg focus-within:ring-2 focus-within:ring-ring',\n  fieldsetRoot: 'min-w-0 border-0 p-0 text-foreground',\n  fieldsetLegend: 'min-w-0 text-sm font-semibold leading-6 text-foreground',\n  fieldsetDescription: 'mt-1 text-sm leading-5 text-muted-foreground',\n  fieldsetError: 'mt-1 text-sm leading-5 text-destructive-text',\n  fieldsetContent: 'mt-3 grid min-w-0 gap-3',\n  stepsRoot: 'm-0 min-w-0 list-none p-0 text-foreground',\n  stepsHorizontal:\n    'flex w-full max-w-full items-start overflow-x-auto pb-2',\n  stepsVertical: 'grid',\n  stepsItem: 'relative min-w-0',\n  stepsItemHorizontal: 'flex min-w-52 flex-1 items-start',\n  stepsItemVertical: 'pb-6 last:pb-0',\n  stepsTrigger:\n    'flex min-w-0 flex-1 items-start gap-3 rounded-md border-0 bg-transparent p-1 text-start text-inherit',\n  stepsTriggerInteractive:\n    'cursor-pointer hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n  stepsTriggerDisabled: '!cursor-not-allowed opacity-60',\n  stepsIndicator:\n    'relative z-[1] inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full border text-xs font-semibold',\n  stepsIndicatorPending: 'border-border bg-background text-muted-foreground',\n  stepsIndicatorCurrent: 'border-primary/50 bg-primary/10 text-primary',\n  stepsIndicatorCompleted:\n    'border-primary bg-primary text-primary-foreground',\n  stepsIndicatorError:\n    'border-destructive bg-destructive text-destructive-foreground',\n  stepsContent: 'grid min-w-0 gap-1 pt-0.5',\n  stepsLabel: 'min-w-0 break-words text-sm font-medium leading-5',\n  stepsDescription:\n    'min-w-0 break-words text-sm leading-5 text-muted-foreground',\n  stepsStatus: 'sr-only',\n  stepsConnector: 'shrink-0 bg-border',\n  stepsConnectorHorizontal: 'mt-3.5 h-px w-8',\n  stepsConnectorVertical:\n    'absolute bottom-0 top-8 start-3.5 w-px -translate-x-1/2',\n  stepsConnectorCompleted: 'bg-primary/60',\n  stepsConnectorError: 'bg-destructive/60',\n  scrollAreaViewport: 'min-h-0 min-w-0',\n  numberInputControl: 'tabular-nums',\n  numberInputStepControls:\n    'me-1 flex shrink-0 self-stretch overflow-hidden border-s border-border',\n  numberInputStepButton:\n    'flex min-h-6 w-7 cursor-pointer items-center justify-center border-0 bg-transparent px-1 text-xs leading-none text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:z-[1] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-40',\n  passwordInputControl: 'pe-2',\n  passwordInputToggle:\n    'me-1 inline-flex min-h-7 shrink-0 cursor-pointer items-center justify-center rounded px-2 text-xs font-medium text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-40',\n  inputGroupRoot:\n    cn(\n      'relative flex min-w-0 items-stretch overflow-hidden rounded-md border border-border bg-background text-foreground focus-within:border-primary/50 focus-within:ring-2 focus-within:ring-ring/30',\n      motionBase,\n    ),\n  inputGroupInvalid:\n    'border-destructive/55 focus-within:border-destructive/70 focus-within:ring-destructive/25',\n  inputGroupDisabled: '!cursor-not-allowed bg-muted/35',\n  inputGroupContent:\n    'flex min-w-0 flex-1 items-stretch [&>*]:min-w-0',\n  inputGroupStartElement:\n    'inline-flex shrink-0 items-center justify-center ps-3 pe-1 text-foreground/75',\n  inputGroupEndElement:\n    'inline-flex shrink-0 items-center justify-center ps-1 pe-3 text-foreground/75',\n  inputGroupStartAddon:\n    'inline-flex max-w-[min(40%,16rem)] shrink-0 items-center overflow-hidden border-e border-border bg-muted/60 px-3 text-sm text-foreground/75 text-ellipsis whitespace-nowrap [&>*]:min-w-0',\n  inputGroupEndAddon:\n    'inline-flex max-w-[min(40%,16rem)] shrink-0 items-center overflow-hidden border-s border-border bg-muted/60 px-3 text-sm text-foreground/75 text-ellipsis whitespace-nowrap [&>*]:min-w-0',\n  panelRoot:\n    cn(\n      'group relative flex min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background',\n      motionInteractive,\n    ),\n  panelInteractive:\n    'cursor-pointer hover:shadow-md',\n  panelSelected: 'border-primary/45 bg-primary/5',\n  panelDisabled: '!cursor-not-allowed opacity-60',\n  panelMedia:\n    'shrink-0 overflow-hidden',\n  panelHeader: 'min-w-0 p-4',\n  panelTitle: 'min-w-0 truncate text-sm font-semibold leading-none text-foreground',\n  panelDescription: 'mt-1 text-sm leading-5 text-foreground/75',\n  panelBody: 'min-w-0 px-4 pb-4 text-sm text-foreground',\n  panelBodyStandalone: 'pt-4',\n  panelFooter: 'shrink-0 border-t border-border/60 px-4 py-3',\n  stateRoot:\n    cn(\n      'flex min-h-48 flex-col items-center justify-center rounded-lg border border-border/70 bg-background px-6 py-10 text-center',\n      motionBase,\n    ),\n  stateIcon:\n    'mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted text-muted-foreground motion-safe:animate-in motion-safe:fade-in',\n  stateTitle: 'text-sm font-semibold text-foreground',\n  stateDescription: 'mt-2 max-w-md text-sm leading-6 text-muted-foreground',\n  stateActions: 'mt-5 flex flex-wrap items-center justify-center gap-2',\n  loadingSpinner:\n    'h-5 w-5 motion-safe:animate-spin motion-reduce:animate-none',\n  fieldRoot: 'grid min-w-0 gap-2',\n  fieldLabelRow: 'flex min-w-0 items-center justify-between gap-3',\n  fieldLabel: 'min-w-0 text-sm font-medium leading-none text-foreground',\n  fieldRequired: 'text-destructive-text',\n  fieldDescription: 'text-sm leading-5 text-muted-foreground',\n  fieldMessage: 'text-sm leading-5 text-muted-foreground',\n  fieldControl: 'min-w-0',\n  controlWrapper:\n    cn(\n      'relative flex min-w-0 items-center rounded-md border border-border bg-background text-foreground focus-within:border-primary/35',\n      motionBase,\n    ),\n  controlBase:\n    'min-w-0 flex-1 bg-transparent px-3 text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:!cursor-not-allowed',\n  controlInput: 'h-9',\n  controlTextarea: 'min-h-24 resize-y py-2 leading-6',\n  controlSelect: 'h-9 cursor-pointer appearance-none pr-9 disabled:!cursor-not-allowed',\n  controlIcon:\n    'pointer-events-none ml-3 inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n  controlTrailing:\n    'mr-3 inline-flex shrink-0 items-center justify-center text-muted-foreground',\n  controlInvalid:\n    'border-destructive/45 focus-within:border-destructive/60',\n  controlDisabled: '!cursor-not-allowed opacity-60',\n  controlReadOnly: 'bg-muted/35',\n  selectChevron:\n    cn(\n      'pointer-events-none absolute right-3 top-1/2 h-2 w-2 -translate-y-1/2 rotate-45 border-b border-r border-current text-muted-foreground',\n      motionTransform,\n    ),\n  selectMenu:\n    'absolute left-0 right-0 top-[calc(100%+0.375rem)] z-50 max-h-60 origin-top overflow-auto rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n  selectOption:\n    cn(\n      'flex min-h-8 w-full min-w-0 cursor-pointer items-center rounded-sm px-2.5 py-1.5 text-left text-sm text-foreground',\n      motionInteractive,\n    ),\n  selectOptionActive: 'bg-accent text-accent-foreground',\n  selectOptionSelected: 'bg-primary/10 text-primary',\n  selectOptionDisabled: '!cursor-not-allowed opacity-50',\n  selectPlaceholder: 'text-muted-foreground',\n  selectNative: 'sr-only',\n  switchRoot: 'inline-flex min-w-0 cursor-pointer items-start gap-3',\n  switchInput: 'sr-only',\n  switchTrack:\n    cn(\n      'relative mt-0.5 inline-flex h-6 w-10 shrink-0 items-center rounded-full border border-border bg-muted focus-within:border-primary/35',\n      motionBase,\n    ),\n  switchThumb:\n    cn(\n      'h-4 w-4 translate-x-1 rounded-full bg-background shadow-sm',\n      motionTransform,\n    ),\n  switchChecked: 'border-primary/40 bg-primary/80 text-primary-foreground',\n  switchDisabled: '!cursor-not-allowed opacity-60',\n  switchContent: 'grid min-w-0 gap-1',\n  switchLabel: 'text-sm font-medium leading-none text-foreground',\n  switchDescription: 'text-sm leading-5 text-muted-foreground',\n  checkboxRoot: 'inline-flex min-w-0 cursor-pointer items-start gap-3',\n  checkboxInput: 'sr-only',\n  checkboxBox:\n    cn(\n      'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded border border-border bg-background text-primary focus-within:border-primary/40',\n      motionBase,\n    ),\n  checkboxBoxChecked: 'border-primary/45 bg-primary text-primary-foreground',\n  checkboxBoxInvalid: 'border-destructive/50',\n  checkboxIndicator: 'text-[11px] font-bold leading-none',\n  checkboxDisabled: '!cursor-not-allowed opacity-60',\n  checkboxContent: 'grid min-w-0 gap-1',\n  checkboxLabel: 'text-sm font-medium leading-none text-foreground',\n  checkboxDescription: 'text-sm leading-5 text-muted-foreground',\n  radioGroupRoot: 'grid min-w-0 gap-2',\n  radioOption:\n    cn(\n      'inline-flex min-w-0 cursor-pointer items-start gap-3 rounded-md border border-border/60 bg-background px-3 py-2 text-sm',\n      motionInteractive,\n      'hover:bg-muted/35',\n    ),\n  radioInput: 'sr-only',\n  radioMarker:\n    cn(\n      'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full border border-border bg-background text-primary focus-within:border-primary/40',\n      motionBase,\n    ),\n  radioMarkerChecked: 'border-primary/50 bg-primary/10',\n  radioIndicator: 'h-2 w-2 rounded-full bg-primary',\n  radioOptionDisabled: '!cursor-not-allowed opacity-60 hover:bg-background',\n  radioContent: 'grid min-w-0 gap-1',\n  radioLabel: 'text-sm font-medium leading-none text-foreground',\n  radioDescription: 'text-sm leading-5 text-muted-foreground',\n  dialogRoot: 'relative',\n  dialogTrigger: '',\n  dialogTriggerDisabled: '!cursor-not-allowed opacity-60',\n  dialogOverlay:\n    'fixed inset-0 z-50 bg-background/70 backdrop-blur-sm motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n  dialogContent:\n    'pointer-events-none fixed inset-0 z-50 flex min-h-0 items-center justify-center p-4',\n  dialogPanel:\n    cn(\n      'pointer-events-auto relative flex max-h-[min(85vh,720px)] w-full max-w-lg min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background text-foreground shadow-xl',\n      'motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n    ),\n  dialogHeader: 'grid min-w-0 gap-1 border-b border-border/60 px-5 py-4',\n  dialogTitle: 'min-w-0 pr-8 text-base font-semibold leading-6 text-foreground',\n  dialogDescription: 'text-sm leading-6 text-muted-foreground',\n  dialogBody: 'min-h-0 min-w-0 overflow-auto px-5 py-4 text-sm text-foreground',\n  dialogFooter:\n    'flex shrink-0 flex-wrap items-center justify-end gap-2 border-t border-border/60 px-5 py-4',\n  dialogClose:\n    cn(\n      'absolute right-3 top-3 inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-md text-muted-foreground hover:bg-muted/60 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n      motionInteractive,\n    ),\n  dropdownRoot: 'relative inline-flex min-w-0',\n  dropdownTrigger: '',\n  dropdownTriggerDisabled: '!cursor-not-allowed opacity-60',\n  dropdownMenu:\n    'z-50 min-w-48 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n  dropdownMenuTop: 'bottom-[calc(100%+0.375rem)] top-auto',\n  dropdownMenuEnd: 'left-auto right-0',\n  dropdownLabel:\n    'px-2.5 py-1.5 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground',\n  dropdownSeparator: 'my-1 h-px bg-border/70',\n  dropdownItem:\n    cn(\n      'flex min-w-0 cursor-pointer items-center gap-2 rounded-sm px-2.5 py-2 text-left text-sm text-foreground hover:bg-accent/60 focus:bg-accent/60 data-[highlighted]:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n      motionInteractive,\n    ),\n  dropdownItemDanger:\n    'text-destructive-text hover:bg-destructive/10 focus:bg-destructive/10 data-[highlighted]:bg-destructive/10',\n  dropdownItemDisabled:\n    '!cursor-not-allowed opacity-50 hover:bg-transparent focus:bg-transparent data-[highlighted]:bg-transparent',\n  dropdownItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n  dropdownItemContent: 'grid min-w-0 flex-1 gap-0.5',\n  dropdownItemLabel: 'min-w-0 truncate',\n  dropdownItemDescription:\n    'min-w-0 truncate text-xs leading-4 text-muted-foreground',\n  dropdownItemShortcut:\n    'ml-3 shrink-0 text-xs font-medium text-muted-foreground',\n  tooltipRoot: 'relative inline-flex min-w-0',\n  tooltipTrigger: 'inline-flex min-w-0',\n  tooltipContent:\n    'pointer-events-none z-50 max-w-xs rounded-md border border-border bg-popover px-2.5 py-1.5 text-xs leading-5 text-popover-foreground shadow-lg motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n  noticeBase:\n    cn(\n      'flex min-w-0 gap-3 rounded-lg border px-4 py-3 text-sm',\n      motionBase,\n      'motion-safe:animate-in motion-safe:fade-in',\n    ),\n  noticeDefault: 'border-border bg-background text-foreground',\n  noticePrimary: 'border-primary/25 bg-primary/10 text-primary',\n  noticeSuccess:\n    'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-foreground',\n  noticeWarning: 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))]',\n  noticeDanger:\n    'border-destructive/30 bg-destructive/10 text-destructive-text',\n  noticeMuted: 'border-border/60 bg-muted/35 text-muted-foreground',\n  noticeIcon:\n    'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center motion-safe:animate-in motion-safe:fade-in',\n  noticeTitle: 'font-semibold leading-5',\n  noticeDescription: 'leading-6',\n  noticeActions: 'mt-3 flex flex-wrap items-center gap-2',\n  dividerRoot: cn('shrink-0 border-border/70', motionBase),\n  dividerLabel:\n    'mx-3 shrink-0 text-xs font-medium uppercase tracking-[0.12em] text-muted-foreground motion-safe:animate-in motion-safe:fade-in',\n  sectionHeaderRoot:\n    'flex min-w-0 flex-wrap items-start justify-between gap-3 motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n  sectionHeaderContent: 'grid min-w-0 gap-1',\n  sectionHeaderEyebrow:\n    'text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground',\n  sectionHeaderTitle: 'text-base font-semibold leading-6 text-foreground',\n  sectionHeaderDescription: 'max-w-2xl text-sm leading-6 text-muted-foreground',\n  sectionHeaderActions: 'flex shrink-0 flex-wrap items-center gap-2',\n  tabsRoot: 'grid min-w-0 gap-3',\n  tabsList:\n    cn(\n      'inline-flex min-w-0 flex-wrap items-center gap-1 rounded-lg border border-border/70 bg-muted/30 p-1',\n      motionBase,\n    ),\n  tabsTrigger:\n    cn(\n      'inline-flex min-w-0 cursor-pointer items-center justify-center rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground hover:bg-background/70 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 focus-visible:ring-offset-1 motion-reduce:transition-none',\n      motionInteractive,\n    ),\n  tabsTriggerActive:\n    'bg-background text-foreground shadow-sm',\n  tabsTriggerDisabled: '!cursor-not-allowed opacity-50 hover:bg-transparent',\n  tabsPanel:\n    'min-w-0 rounded-lg border border-border/70 bg-background p-4 text-sm text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n  segmentedRoot:\n    cn(\n      'inline-flex min-w-0 items-center gap-1 rounded-lg border border-border/70 bg-muted/30 p-1',\n      motionBase,\n    ),\n  segmentedItem:\n    cn(\n      'inline-flex min-w-0 cursor-pointer items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground hover:bg-background/70 hover:text-foreground focus-visible:outline-none',\n      motionInteractive,\n    ),\n  segmentedItemActive:\n    'bg-background text-foreground shadow-sm',\n  segmentedItemDisabled: '!cursor-not-allowed opacity-50 hover:bg-transparent',\n  progressRoot: 'grid min-w-0 gap-2',\n  progressTrack:\n    'h-2 w-full overflow-hidden rounded-full bg-muted',\n  progressIndicator:\n    'h-full rounded-full bg-primary motion-safe:transition-[width] motion-safe:duration-500 motion-safe:ease-out',\n  progressLabelRow: 'flex min-w-0 items-center justify-between gap-3',\n  progressLabel: 'min-w-0 truncate text-sm font-medium text-foreground',\n  progressValue: 'shrink-0 text-xs font-medium text-muted-foreground',\n  skeletonRoot:\n    'relative overflow-hidden rounded-md bg-muted/70',\n  avatarRoot:\n    'relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full border border-border bg-muted text-sm font-semibold text-muted-foreground motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n  avatarImage:\n    'h-full w-full object-cover',\n  avatarFallback:\n    'flex h-full w-full items-center justify-center bg-muted text-foreground',\n  avatarStatus:\n    'absolute bottom-0 right-0 h-2.5 w-2.5 rounded-full border-2 border-background bg-muted-foreground motion-safe:animate-pulse',\n  avatarText: 'min-w-0 truncate text-sm font-medium text-foreground',\n  toolbarRoot:\n    cn(\n      'flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-lg border border-border/70 bg-background px-4 py-3',\n      motionBase,\n    ),\n  toolbarLeading: 'flex min-w-0 items-center gap-3',\n  toolbarTitle: 'min-w-0 truncate text-sm font-semibold text-foreground',\n  toolbarDescription: 'mt-0.5 text-sm leading-5 text-muted-foreground',\n  toolbarContent: 'min-w-0 flex-1',\n  toolbarActions: 'flex shrink-0 flex-wrap items-center gap-2',\n  breadcrumbRoot: 'min-w-0 text-sm text-muted-foreground',\n  breadcrumbList: 'flex min-w-0 flex-wrap items-center gap-1.5',\n  breadcrumbItem: 'inline-flex min-w-0 items-center gap-1.5',\n  breadcrumbLink:\n    'min-w-0 cursor-pointer truncate text-muted-foreground hover:text-foreground disabled:!cursor-not-allowed disabled:opacity-50 aria-disabled:!cursor-not-allowed aria-disabled:opacity-50 aria-disabled:hover:text-muted-foreground motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n  breadcrumbCurrent: 'min-w-0 truncate font-medium text-foreground',\n  breadcrumbSeparator: 'shrink-0 text-muted-foreground/70',\n  paginationRoot:\n    'flex min-w-0 flex-wrap items-center justify-between gap-3 text-sm',\n  paginationInfo: 'min-w-0 text-muted-foreground',\n  paginationControls: 'flex min-w-0 flex-wrap items-center justify-end gap-1.5',\n  paginationButton:\n    'inline-flex h-8 min-w-8 cursor-pointer items-center justify-center whitespace-nowrap rounded-md border border-border bg-background px-2.5 text-sm font-medium text-foreground hover:bg-accent/60 disabled:!cursor-not-allowed disabled:opacity-50 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n  paginationButtonDisabled: '!cursor-not-allowed opacity-50',\n  paginationPage:\n    'inline-flex h-8 min-w-8 cursor-default items-center justify-center rounded-md bg-muted/50 px-2.5 text-sm font-medium text-foreground hover:bg-muted/50',\n  paginationEllipsis:\n    'inline-flex h-8 min-w-6 items-center justify-center px-1 text-sm text-muted-foreground',\n  descriptionListRoot:\n    'grid min-w-0 gap-3 text-sm',\n  descriptionListItem:\n    'grid min-w-0 gap-1 rounded-md border border-border/60 bg-background px-3 py-2 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out hover:shadow-sm',\n  descriptionListTerm:\n    'min-w-0 truncate text-xs font-medium uppercase tracking-[0.08em] text-muted-foreground',\n  descriptionListValue: 'min-w-0 text-sm leading-6 text-foreground',\n  accordionRoot: 'grid min-w-0 gap-2',\n  accordionItem:\n    'overflow-hidden rounded-lg border border-border/70 bg-background motion-safe:transition motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n  accordionTrigger:\n    'flex w-full min-w-0 cursor-pointer items-center justify-between gap-3 px-4 py-3 text-start text-sm font-medium text-foreground hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-50 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n  accordionTriggerIcon:\n    cn(\n      'h-2 w-2 shrink-0 rotate-45 border-b border-r border-current text-muted-foreground',\n      motionTransform,\n      'motion-reduce:transition-none',\n    ),\n  accordionPanel:\n    'border-t border-border/60 px-4 py-3 text-sm leading-6 text-muted-foreground motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out motion-reduce:animate-none',\n  menuTrigger: 'inline-flex min-w-0',\n  menuContent:\n    'z-50 min-w-44 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n  menuLabel: 'px-2 py-1.5 text-xs font-medium text-muted-foreground',\n  menuSeparator: '-mx-1 my-1 h-px bg-border',\n  menuItem:\n    cn(\n      'relative flex min-h-8 min-w-0 cursor-pointer select-none items-center gap-2 rounded-sm px-2.5 py-1.5 text-sm text-foreground outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:!cursor-not-allowed data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground',\n      motionInteractive,\n    ),\n  menuItemDefault: 'text-foreground',\n  menuItemPrimary: 'text-primary focus:text-primary data-[highlighted]:text-primary',\n  menuItemSuccess:\n    'text-[hsl(var(--success,142_72%_29%))] focus:text-[hsl(var(--success,142_72%_29%))] data-[highlighted]:text-[hsl(var(--success,142_72%_29%))]',\n  menuItemWarning:\n    'text-[hsl(var(--warning-foreground,28_73%_26%))] focus:text-[hsl(var(--warning-foreground,28_73%_26%))] data-[highlighted]:text-[hsl(var(--warning-foreground,28_73%_26%))]',\n  menuItemDanger:\n    'text-destructive-text focus:text-destructive-text data-[highlighted]:text-destructive-text',\n  menuItemMuted:\n    'text-muted-foreground focus:text-foreground data-[highlighted]:text-foreground',\n  menuItemDisabled:\n    '!cursor-not-allowed opacity-50 data-[disabled]:pointer-events-none',\n  menuItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n  menuItemLabel: 'min-w-0 flex-1 truncate',\n  menuItemShortcut:\n    'ml-4 shrink-0 text-xs font-medium text-muted-foreground',\n  menuCheckboxIndicator:\n    'absolute left-2 inline-flex h-4 w-4 items-center justify-center text-current',\n  menuRadioIndicator:\n    'absolute left-2 inline-flex h-4 w-4 items-center justify-center text-current',\n  menuSubTrigger:\n    cn(\n      'relative flex min-h-8 min-w-0 cursor-pointer select-none items-center gap-2 rounded-sm px-2.5 py-1.5 text-sm text-foreground outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:!cursor-not-allowed data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n      motionInteractive,\n    ),\n  menuSubTriggerIcon:\n    'ml-auto inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n  menuSubContent:\n    'z-50 min-w-40 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n  tableContainer:\n    cn(\n      'relative isolate min-w-0 overflow-auto rounded-lg border border-border/70 bg-background/95 bg-clip-padding [scrollbar-gutter:stable]',\n      '[--base-table-header-height:2.75rem] [--base-table-split-scrollbar-gutter:0.75rem]',\n      '[--base-table-sticky-header-bg:hsl(var(--background))] [--base-table-header-separator:hsl(var(--border)_/_0.7)]',\n      tableScrollbarChrome,\n      motionBase,\n    ),\n  tableContainerFooterAttached: '!rounded-b-none !shadow-none',\n  tableRoot: 'w-full caption-bottom border-separate border-spacing-0 text-sm text-foreground',\n  tableCaption: 'mt-3 text-sm text-muted-foreground',\n  tableHeader:\n    cn(\n      'relative z-[2] bg-transparent [&_tr]:bg-transparent',\n      tableStickyHeaderCells,\n    ),\n  tableBody: '[&_tr:last-child>*]:border-b-0',\n  tableFooter: 'bg-muted/30 font-medium [&_tr>*]:border-t [&_tr>*]:border-border/70',\n  tableFooterBar:\n    cn(\n      'flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-lg border border-border/70 bg-muted/20 px-4 py-3 text-sm text-foreground shadow-none',\n      motionBase,\n    ),\n  tableFooterBarAttached:\n    '-mt-px rounded-t-none border-t border-border/70 shadow-none',\n  tableFooterBarLeading: 'flex min-w-0 items-center gap-2',\n  tableFooterBarContent: 'min-w-0 flex-1',\n  tableFooterBarActions: 'ms-auto flex shrink-0 flex-wrap items-center gap-2',\n  tableSplitRoot:\n    'grid w-full min-w-0 grid-cols-[minmax(0,1fr)] grid-rows-[auto_minmax(0,1fr)_auto] caption-bottom border-separate border-spacing-0 text-sm text-foreground',\n  tableSplitHeader:\n    'block w-full min-w-0 shrink-0 overflow-x-hidden overflow-y-hidden bg-transparent',\n  tableSplitBody:\n    cn(\n      'block min-h-0 w-full min-w-0 max-w-full justify-self-stretch overflow-auto [scrollbar-gutter:stable]',\n      tableScrollbarChrome,\n    ),\n  tableSplitFooter:\n    'block w-full min-w-0 shrink-0 overflow-x-hidden overflow-y-hidden',\n  tableSplitRow:\n    'grid w-max min-w-full [grid-template-columns:var(--base-table-column-template)]',\n  tableSplitHead: 'flex min-w-0 overflow-hidden',\n  tableSplitCell: 'block min-w-0 overflow-hidden [overflow-wrap:anywhere]',\n  tableRow:\n    cn(\n      '[&>*]:border-b [&>*]:border-border/60 data-[state=selected]:bg-primary/5 data-[state=selected]:[&>*]:bg-primary/5',\n      motionBase,\n    ),\n  tableRowInteractive:\n    'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.35)] hover:bg-[var(--base-table-row-hover-bg)] hover:[&>*]:bg-[var(--base-table-row-hover-bg)]',\n  tableRowSelected: 'bg-primary/5 [&>*]:bg-primary/5',\n  tableRowDisabled: '!cursor-not-allowed opacity-60',\n  tableHead:\n    'relative h-11 whitespace-nowrap px-3 py-2 text-left align-middle text-xs font-semibold text-muted-foreground shadow-[inset_0_-1px_0_var(--base-table-header-separator)]',\n  tableHeadContent: 'flex min-w-0 items-center justify-between gap-2',\n  tableHeadMain: 'flex min-w-0 items-center gap-2',\n  tableHeadIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n  tableHeadText: 'grid min-w-0 gap-0.5',\n  tableHeadLabel: 'min-w-0 truncate text-xs font-semibold leading-4 text-foreground',\n  tableHeadDescription: 'min-w-0 truncate text-[11px] font-normal leading-4 text-muted-foreground',\n  tableHeadMeta: 'shrink-0 text-[11px] font-medium text-muted-foreground',\n  tableHeadActions: 'flex shrink-0 items-center gap-1',\n  tableHeadSortButton:\n    cn(\n      'inline-flex min-w-0 cursor-pointer items-center gap-1 rounded-sm text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-60',\n      motionBase,\n    ),\n  tableHeadSortIcon:\n    cn(\n      'inline-flex h-3 w-3 shrink-0 items-center justify-center text-muted-foreground',\n      motionTransform,\n    ),\n  tableHeadDragHandle:\n    cn(\n      'inline-flex h-5 w-4 shrink-0 cursor-grab items-center justify-center rounded-sm text-muted-foreground hover:bg-muted active:cursor-grabbing focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-50',\n      motionBase,\n    ),\n  tableHeadResizeHandle:\n    cn(\n      'absolute end-0 top-1/2 h-7 w-2 -translate-y-1/2 cursor-col-resize touch-none rounded-sm after:absolute after:start-1/2 after:top-1/2 after:h-5 after:w-px after:-translate-x-1/2 after:-translate-y-1/2 after:bg-border hover:after:bg-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-50',\n      motionBase,\n    ),\n  tableCell: 'min-w-0 px-3 py-2 align-middle text-sm text-foreground [overflow-wrap:anywhere]',\n  tableCellAlignCenter: 'text-center',\n  tableCellAlignRight: 'text-right',\n  tableEmptyRow: '[&>*]:border-b [&>*]:border-border/60',\n  tableEmptyCell: 'px-4 py-10 text-center',\n  tableEmptyContent: 'mx-auto flex max-w-md flex-col items-center justify-center text-center',\n  tableEmptyIcon:\n    'mb-3 flex h-10 w-10 items-center justify-center rounded-full bg-muted text-muted-foreground',\n  tableEmptyTitle: 'text-sm font-semibold text-foreground',\n  tableEmptyDescription: 'mt-1 text-sm leading-6 text-muted-foreground',\n  tableEmptyActions: 'mt-4 flex flex-wrap items-center justify-center gap-2',\n  tableLoadingRow: '[&>*]:border-b [&>*]:border-border/60',\n  tableLoadingCell: 'px-3 py-2',\n  tableLoadingSkeleton: 'h-4 w-full rounded-md bg-muted/70',\n  layoutRoot:\n    cn(\n      'grid min-w-0 overflow-hidden grid-rows-[auto_minmax(0,1fr)_auto] gap-3 rounded-lg border border-border/70 bg-background p-3 text-foreground',\n      motionBase,\n    ),\n  layoutRootFull: 'h-full min-h-0',\n  layoutHeader: 'min-w-0',\n  layoutBody: 'grid min-h-0 min-w-0 overflow-hidden gap-3',\n  layoutSidebar: 'min-h-0 min-w-0 overflow-hidden',\n  layoutMain: 'min-h-0 min-w-0 overflow-hidden',\n  layoutAside: 'min-h-0 min-w-0 overflow-hidden',\n  layoutFooter: 'min-w-0',\n  layoutPane:\n    cn(\n      'h-full max-h-full min-h-0 min-w-0 overflow-hidden rounded-lg bg-background text-foreground',\n      motionBase,\n    ),\n  layoutPaneScrollable: 'overflow-auto',\n  layoutPaneBordered: 'border border-border/70',\n  layoutPaneMuted: 'bg-muted/25',\n  layoutPaneSoft: 'bg-background/95 shadow-sm',\n  layoutPaneTransparent: 'bg-transparent shadow-none',\n  layoutSplitRoot: 'grid min-h-0 min-w-0 overflow-hidden',\n  layoutSplitHorizontal: 'grid-flow-col',\n  layoutSplitVertical: 'grid-flow-row',\n  layoutSplitPane: 'min-h-0 min-w-0 overflow-hidden',\n  layoutSplitPrimary: '',\n  layoutSplitSecondary: '',\n  layoutResizeHandle:\n    cn(\n      'group/resize relative z-10 flex shrink-0 items-center justify-center bg-transparent text-muted-foreground hover:bg-border/60 active:bg-border/70 focus-visible:bg-border/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n      motionInteractive,\n    ),\n  layoutResizeHandleHorizontal: 'w-2 cursor-col-resize',\n  layoutResizeHandleVertical: 'h-2 cursor-row-resize',\n  layoutResizeHandleDisabled: 'cursor-default opacity-60',\n  layoutResizeHandleIndicator:\n    'rounded-full bg-muted-foreground/45 group-hover/resize:bg-primary/70',\n};\n\nconst densitySlots: Record<BaseDensity, Partial<BaseThemeSlots>> = {\n  compact: {\n    buttonBase: 'h-8 px-2.5 text-xs',\n    buttonIconOnly: 'h-8 w-8 px-0',\n    badgeBase: 'px-1.5 py-0 text-[11px]',\n    panelHeader: 'p-3',\n    panelBody: 'px-3 pb-3 text-xs',\n    panelBodyStandalone: 'pt-3',\n    panelFooter: 'px-3 py-2',\n    stateRoot: 'min-h-36 px-4 py-7',\n    stateIcon: 'mb-3 h-10 w-10',\n    fieldRoot: 'gap-1.5',\n    fieldLabel: 'text-xs',\n    fieldDescription: 'text-xs leading-5',\n    fieldMessage: 'text-xs leading-5',\n    controlInput: 'h-8 text-xs',\n    controlTextarea: 'min-h-20 text-xs',\n    controlSelect: 'h-8 text-xs',\n    selectMenu: 'text-xs',\n    selectOption: 'min-h-7 px-2 py-1 text-xs',\n    switchTrack: 'h-5 w-9',\n    switchThumb: 'h-3.5 w-3.5',\n    checkboxBox: 'h-3.5 w-3.5',\n    checkboxLabel: 'text-xs',\n    checkboxDescription: 'text-xs leading-5',\n    radioOption: 'px-2 py-1.5 text-xs',\n    radioMarker: 'h-3.5 w-3.5',\n    radioIndicator: 'h-1.5 w-1.5',\n    radioLabel: 'text-xs',\n    radioDescription: 'text-xs leading-5',\n    dialogPanel: 'max-w-md',\n    dialogHeader: 'px-4 py-3',\n    dialogTitle: 'text-sm leading-5',\n    dialogDescription: 'text-xs leading-5',\n    dialogBody: 'px-4 py-3 text-xs',\n    dialogFooter: 'px-4 py-3',\n    dropdownMenu: 'min-w-44 text-xs',\n    dropdownItem: 'px-2 py-1.5 text-xs',\n    tooltipContent: 'text-[11px] leading-4',\n    noticeBase: 'px-3 py-2 text-xs',\n    dividerLabel: 'text-[11px]',\n    sectionHeaderRoot: 'gap-2',\n    sectionHeaderTitle: 'text-sm leading-5',\n    sectionHeaderDescription: 'text-xs leading-5',\n    tabsList: 'gap-0.5 p-0.5',\n    tabsTrigger: 'px-2 py-1 text-xs',\n    tabsPanel: 'p-3 text-xs',\n    segmentedRoot: 'gap-0.5 p-0.5',\n    segmentedItem: 'px-2 py-1 text-xs',\n    progressTrack: 'h-1.5',\n    avatarRoot: 'text-xs',\n    toolbarRoot: 'gap-2 px-3 py-2',\n    toolbarTitle: 'text-xs',\n    toolbarDescription: 'text-xs leading-5',\n    paginationButton: 'h-7 min-w-7 px-2 text-xs',\n    paginationPage: 'h-7 min-w-7 px-2 text-xs',\n    descriptionListRoot: 'gap-2 text-xs',\n    descriptionListItem: 'px-2 py-1.5',\n    descriptionListTerm: 'text-[11px]',\n    descriptionListValue: 'text-xs leading-5',\n    accordionTrigger: 'px-3 py-2 text-xs',\n    accordionPanel: 'px-3 py-2 text-xs leading-5',\n    menuContent: 'min-w-40 p-0.5 text-xs',\n    menuSubContent: 'min-w-36 p-0.5 text-xs',\n    menuLabel: 'px-2 py-1 text-[11px]',\n    menuItem: 'min-h-7 px-2 py-1 text-xs',\n    menuSubTrigger: 'min-h-7 px-2 py-1 text-xs',\n    menuItemShortcut: 'text-[11px]',\n    tableContainer: '[--base-table-header-height:2.25rem]',\n    tableHead: 'h-9 px-2 py-1.5 text-[11px]',\n    tableCell: 'px-2 py-1.5 text-xs',\n    tableHeadLabel: 'text-[11px]',\n    tableHeadDescription: 'text-[10px] leading-3',\n    tableLoadingCell: 'px-2 py-1.5',\n    layoutRoot: 'gap-2 p-2',\n    layoutBody: 'gap-2',\n    layoutPane: 'rounded-md text-xs',\n    layoutResizeHandleHorizontal: 'w-1.5',\n    layoutResizeHandleVertical: 'h-1.5',\n  },\n  default: {\n    buttonBase: 'h-9',\n  },\n  comfortable: {\n    buttonBase: 'h-10 px-3.5',\n    buttonIconOnly: 'h-10 w-10 px-0',\n    badgeBase: 'px-2.5 py-1',\n    panelHeader: 'p-5',\n    panelBody: 'px-5 pb-5',\n    panelBodyStandalone: 'pt-5',\n    panelFooter: 'px-5 py-3.5',\n    stateRoot: 'min-h-56 px-8 py-12',\n    stateIcon: 'mb-5 h-14 w-14',\n    fieldRoot: 'gap-2.5',\n    controlInput: 'h-10',\n    controlTextarea: 'min-h-28',\n    controlSelect: 'h-10',\n    selectMenu: 'p-1.5',\n    selectOption: 'min-h-9 px-3 py-2',\n    switchTrack: 'h-7 w-12',\n    switchThumb: 'h-5 w-5',\n    checkboxBox: 'h-5 w-5',\n    radioOption: 'px-4 py-3',\n    radioMarker: 'h-5 w-5',\n    radioIndicator: 'h-2.5 w-2.5',\n    dialogPanel: 'max-w-xl',\n    dialogHeader: 'px-6 py-5',\n    dialogBody: 'px-6 py-5',\n    dialogFooter: 'px-6 py-5',\n    dropdownMenu: 'min-w-56',\n    dropdownItem: 'px-3 py-2.5',\n    noticeBase: 'px-5 py-4',\n    sectionHeaderTitle: 'text-lg leading-7',\n    tabsTrigger: 'px-3.5 py-2',\n    tabsPanel: 'p-5',\n    segmentedItem: 'px-3.5 py-2',\n    progressTrack: 'h-2.5',\n    toolbarRoot: 'px-5 py-4',\n    paginationButton: 'h-9 min-w-9 px-3',\n    paginationPage: 'h-9 min-w-9 px-3',\n    descriptionListItem: 'px-4 py-3',\n    accordionTrigger: 'px-5 py-4',\n    accordionPanel: 'px-5 py-4',\n    menuContent: 'min-w-48 p-1.5',\n    menuSubContent: 'min-w-44 p-1.5',\n    menuItem: 'min-h-9 px-3 py-2',\n    menuSubTrigger: 'min-h-9 px-3 py-2',\n    tableContainer: '[--base-table-header-height:3rem]',\n    tableHead: 'h-12 px-4 py-3',\n    tableCell: 'px-4 py-3',\n    tableLoadingCell: 'px-4 py-3',\n    layoutRoot: 'gap-4 p-4',\n    layoutBody: 'gap-4',\n    layoutPane: 'rounded-xl',\n    layoutResizeHandleHorizontal: 'w-2.5',\n    layoutResizeHandleVertical: 'h-2.5',\n  },\n};\n\nconst radiusSlots: Record<BaseRadius, Partial<BaseThemeSlots>> = {\n  none: {\n    buttonBase: 'rounded-none',\n    badgeBase: 'rounded-none',\n    panelRoot: 'rounded-none',\n    stateRoot: 'rounded-none',\n    stateIcon: 'rounded-none',\n    controlWrapper: 'rounded-none',\n    selectMenu: 'rounded-none',\n    selectOption: 'rounded-none',\n    switchTrack: 'rounded-none',\n    switchThumb: 'rounded-none',\n    checkboxBox: 'rounded-none',\n    radioOption: 'rounded-none',\n    dialogPanel: 'rounded-none',\n    dialogClose: 'rounded-none',\n    dropdownMenu: 'rounded-none',\n    dropdownItem: 'rounded-none',\n    tooltipContent: 'rounded-none',\n    noticeBase: 'rounded-none',\n    tabsList: 'rounded-none',\n    tabsTrigger: 'rounded-none',\n    tabsPanel: 'rounded-none',\n    segmentedRoot: 'rounded-none',\n    segmentedItem: 'rounded-none',\n    progressTrack: 'rounded-none',\n    progressIndicator: 'rounded-none',\n    skeletonRoot: 'rounded-none',\n    avatarRoot: 'rounded-none',\n    avatarStatus: 'rounded-none',\n    toolbarRoot: 'rounded-none',\n    paginationButton: 'rounded-none',\n    paginationPage: 'rounded-none',\n    descriptionListItem: 'rounded-none',\n    accordionItem: 'rounded-none',\n    menuContent: 'rounded-none',\n    menuItem: 'rounded-none',\n    menuSubTrigger: 'rounded-none',\n    menuSubContent: 'rounded-none',\n    tableContainer: 'rounded-none',\n    tableEmptyIcon: 'rounded-none',\n    tableLoadingSkeleton: 'rounded-none',\n    layoutRoot: 'rounded-none',\n    layoutPane: 'rounded-none',\n  },\n  sm: {\n    buttonBase: 'rounded-sm',\n    badgeBase: 'rounded-sm',\n    panelRoot: 'rounded-sm',\n    stateRoot: 'rounded-sm',\n    stateIcon: 'rounded-sm',\n    controlWrapper: 'rounded-sm',\n    selectMenu: 'rounded-sm',\n    selectOption: 'rounded-sm',\n    switchTrack: 'rounded-sm',\n    switchThumb: 'rounded-sm',\n    checkboxBox: 'rounded-sm',\n    radioOption: 'rounded-sm',\n    dialogPanel: 'rounded-sm',\n    dialogClose: 'rounded-sm',\n    dropdownMenu: 'rounded-sm',\n    dropdownItem: 'rounded-sm',\n    tooltipContent: 'rounded-sm',\n    noticeBase: 'rounded-sm',\n    tabsList: 'rounded-sm',\n    tabsTrigger: 'rounded-sm',\n    tabsPanel: 'rounded-sm',\n    segmentedRoot: 'rounded-sm',\n    segmentedItem: 'rounded-sm',\n    progressTrack: 'rounded-sm',\n    progressIndicator: 'rounded-sm',\n    skeletonRoot: 'rounded-sm',\n    avatarRoot: 'rounded-sm',\n    avatarStatus: 'rounded-sm',\n    toolbarRoot: 'rounded-sm',\n    paginationButton: 'rounded-sm',\n    paginationPage: 'rounded-sm',\n    descriptionListItem: 'rounded-sm',\n    accordionItem: 'rounded-sm',\n    menuContent: 'rounded-sm',\n    menuItem: 'rounded-sm',\n    menuSubTrigger: 'rounded-sm',\n    menuSubContent: 'rounded-sm',\n    tableContainer: 'rounded-sm',\n    tableEmptyIcon: 'rounded-sm',\n    tableLoadingSkeleton: 'rounded-sm',\n    layoutRoot: 'rounded-sm',\n    layoutPane: 'rounded-sm',\n  },\n  md: {},\n  lg: {\n    buttonBase: 'rounded-lg',\n    badgeBase: 'rounded-lg',\n    panelRoot: 'rounded-xl',\n    stateRoot: 'rounded-xl',\n    stateIcon: 'rounded-xl',\n    controlWrapper: 'rounded-lg',\n    selectMenu: 'rounded-lg',\n    selectOption: 'rounded-md',\n    switchTrack: 'rounded-full',\n    switchThumb: 'rounded-full',\n    checkboxBox: 'rounded-md',\n    radioOption: 'rounded-xl',\n    dialogPanel: 'rounded-xl',\n    dialogClose: 'rounded-lg',\n    dropdownMenu: 'rounded-lg',\n    dropdownItem: 'rounded-md',\n    tooltipContent: 'rounded-md',\n    noticeBase: 'rounded-xl',\n    tabsList: 'rounded-xl',\n    tabsTrigger: 'rounded-lg',\n    tabsPanel: 'rounded-xl',\n    segmentedRoot: 'rounded-xl',\n    segmentedItem: 'rounded-lg',\n    skeletonRoot: 'rounded-lg',\n    toolbarRoot: 'rounded-xl',\n    descriptionListItem: 'rounded-lg',\n    accordionItem: 'rounded-xl',\n    menuContent: 'rounded-lg',\n    menuItem: 'rounded-md',\n    menuSubTrigger: 'rounded-md',\n    menuSubContent: 'rounded-lg',\n    tableContainer: 'rounded-xl',\n    tableEmptyIcon: 'rounded-xl',\n    tableLoadingSkeleton: 'rounded-lg',\n    layoutRoot: 'rounded-xl',\n    layoutPane: 'rounded-xl',\n  },\n  xl: {\n    buttonBase: 'rounded-xl',\n    badgeBase: 'rounded-xl',\n    panelRoot: 'rounded-2xl',\n    stateRoot: 'rounded-2xl',\n    stateIcon: 'rounded-2xl',\n    controlWrapper: 'rounded-xl',\n    selectMenu: 'rounded-xl',\n    selectOption: 'rounded-lg',\n    switchTrack: 'rounded-full',\n    switchThumb: 'rounded-full',\n    checkboxBox: 'rounded-lg',\n    radioOption: 'rounded-2xl',\n    dialogPanel: 'rounded-2xl',\n    dialogClose: 'rounded-xl',\n    dropdownMenu: 'rounded-xl',\n    dropdownItem: 'rounded-lg',\n    tooltipContent: 'rounded-lg',\n    noticeBase: 'rounded-2xl',\n    tabsList: 'rounded-2xl',\n    tabsTrigger: 'rounded-xl',\n    tabsPanel: 'rounded-2xl',\n    segmentedRoot: 'rounded-2xl',\n    segmentedItem: 'rounded-xl',\n    skeletonRoot: 'rounded-xl',\n    toolbarRoot: 'rounded-2xl',\n    paginationButton: 'rounded-xl',\n    paginationPage: 'rounded-xl',\n    descriptionListItem: 'rounded-xl',\n    accordionItem: 'rounded-2xl',\n    menuContent: 'rounded-xl',\n    menuItem: 'rounded-lg',\n    menuSubTrigger: 'rounded-lg',\n    menuSubContent: 'rounded-xl',\n    tableContainer: 'rounded-2xl',\n    tableEmptyIcon: 'rounded-2xl',\n    tableLoadingSkeleton: 'rounded-xl',\n    layoutRoot: 'rounded-2xl',\n    layoutPane: 'rounded-2xl',\n  },\n  full: {\n    buttonBase: 'rounded-full',\n    badgeBase: 'rounded-full',\n    panelRoot: 'rounded-2xl',\n    stateRoot: 'rounded-2xl',\n    stateIcon: 'rounded-full',\n    controlWrapper: 'rounded-full',\n    selectMenu: 'rounded-2xl',\n    selectOption: 'rounded-full',\n    switchTrack: 'rounded-full',\n    switchThumb: 'rounded-full',\n    checkboxBox: 'rounded-full',\n    radioOption: 'rounded-2xl',\n    dialogPanel: 'rounded-2xl',\n    dialogClose: 'rounded-full',\n    dropdownMenu: 'rounded-2xl',\n    dropdownItem: 'rounded-full',\n    tooltipContent: 'rounded-full',\n    noticeBase: 'rounded-2xl',\n    tabsList: 'rounded-full',\n    tabsTrigger: 'rounded-full',\n    tabsPanel: 'rounded-2xl',\n    segmentedRoot: 'rounded-full',\n    segmentedItem: 'rounded-full',\n    progressTrack: 'rounded-full',\n    progressIndicator: 'rounded-full',\n    skeletonRoot: 'rounded-full',\n    avatarRoot: 'rounded-full',\n    avatarStatus: 'rounded-full',\n    toolbarRoot: 'rounded-2xl',\n    paginationButton: 'rounded-full',\n    paginationPage: 'rounded-full',\n    descriptionListItem: 'rounded-2xl',\n    accordionItem: 'rounded-2xl',\n    menuContent: 'rounded-2xl',\n    menuItem: 'rounded-full',\n    menuSubTrigger: 'rounded-full',\n    menuSubContent: 'rounded-2xl',\n    tableContainer: 'rounded-2xl',\n    tableEmptyIcon: 'rounded-full',\n    tableLoadingSkeleton: 'rounded-full',\n    layoutRoot: 'rounded-2xl',\n    layoutPane: 'rounded-2xl',\n  },\n};\n\nconst borderSlots: Record<BaseBorder, Partial<BaseThemeSlots>> = {\n  none: {\n    buttonBase: 'border-transparent',\n    badgeBase: 'border-transparent',\n    panelRoot: 'border-transparent',\n    panelFooter: 'border-transparent',\n    stateRoot: 'border-transparent',\n    controlWrapper: 'border-transparent',\n    selectMenu: 'border-transparent',\n    switchTrack: 'border-transparent',\n    checkboxBox: 'border-transparent',\n    radioOption: 'border-transparent',\n    radioMarker: 'border-transparent',\n    dialogPanel: 'border-transparent',\n    dialogHeader: 'border-transparent',\n    dialogFooter: 'border-transparent',\n    dropdownMenu: 'border-transparent',\n    tooltipContent: 'border-transparent',\n    noticeBase: 'border-transparent',\n    dividerRoot: 'border-transparent',\n    tabsList: 'border-transparent',\n    tabsPanel: 'border-transparent',\n    segmentedRoot: 'border-transparent',\n    avatarRoot: 'border-transparent',\n    toolbarRoot: 'border-transparent',\n    paginationButton: 'border-transparent',\n    descriptionListItem: 'border-transparent',\n    accordionItem: 'border-transparent',\n    accordionPanel: 'border-transparent',\n    menuContent: 'border-transparent',\n    menuSeparator: 'bg-transparent',\n    menuSubContent: 'border-transparent',\n    tableContainer: 'border-transparent [--base-table-header-separator:transparent]',\n    tableHeader: 'border-transparent',\n    tableFooter: '[&_tr>*]:border-transparent',\n    tableFooterBar: 'border-transparent',\n    tableFooterBarAttached: 'border-t border-transparent',\n    tableRow: '[&>*]:border-transparent',\n    tableEmptyRow: '[&>*]:border-transparent',\n    tableLoadingRow: '[&>*]:border-transparent',\n    layoutRoot: 'border-transparent',\n    layoutPaneBordered: 'border-transparent',\n    layoutResizeHandle: 'bg-transparent hover:bg-transparent active:bg-transparent focus-visible:bg-transparent',\n  },\n  subtle: {\n    buttonDefault: 'border-border/60',\n    badgeDefault: 'border-border/60',\n    panelRoot: 'border-border/60',\n    panelFooter: 'border-border/60',\n    stateRoot: 'border-border/60',\n    controlWrapper: 'border-border/60',\n    selectMenu: 'border-border/60',\n    switchTrack: 'border-border/60',\n    checkboxBox: 'border-border/60',\n    radioOption: 'border-border/60',\n    radioMarker: 'border-border/60',\n    dialogPanel: 'border-border/60',\n    dialogHeader: 'border-border/60',\n    dialogFooter: 'border-border/60',\n    dropdownMenu: 'border-border/60',\n    tooltipContent: 'border-border/60',\n    noticeDefault: 'border-border/60',\n    dividerRoot: 'border-border/60',\n    tabsList: 'border-border/60',\n    tabsPanel: 'border-border/60',\n    segmentedRoot: 'border-border/60',\n    avatarRoot: 'border-border/60',\n    toolbarRoot: 'border-border/60',\n    paginationButton: 'border-border/60',\n    descriptionListItem: 'border-border/60',\n    accordionItem: 'border-border/60',\n    accordionPanel: 'border-border/60',\n    menuContent: 'border-border/60',\n    menuSeparator: 'bg-border/60',\n    menuSubContent: 'border-border/60',\n    tableContainer: 'border-border/60 [--base-table-header-separator:hsl(var(--border)_/_0.6)]',\n    tableHeader: 'border-border/60',\n    tableFooter: '[&_tr>*]:border-border/60',\n    tableFooterBar: 'border-border/60',\n    tableFooterBarAttached: 'border-t border-border/60',\n    tableRow: '[&>*]:border-border/50',\n    tableEmptyRow: '[&>*]:border-border/50',\n    tableLoadingRow: '[&>*]:border-border/50',\n    layoutRoot: 'border-border/60',\n    layoutPaneBordered: 'border-border/60',\n  },\n  solid: {},\n  strong: {\n    buttonDefault: 'border-foreground/20',\n    badgeDefault: 'border-foreground/20',\n    panelRoot: 'border-foreground/20',\n    panelFooter: 'border-foreground/20',\n    stateRoot: 'border-foreground/20',\n    controlWrapper: 'border-foreground/20',\n    selectMenu: 'border-foreground/20',\n    switchTrack: 'border-foreground/20',\n    checkboxBox: 'border-foreground/20',\n    radioOption: 'border-foreground/20',\n    radioMarker: 'border-foreground/20',\n    dialogPanel: 'border-foreground/20',\n    dialogHeader: 'border-foreground/15',\n    dialogFooter: 'border-foreground/15',\n    dropdownMenu: 'border-foreground/20',\n    tooltipContent: 'border-foreground/20',\n    noticeDefault: 'border-foreground/20',\n    dividerRoot: 'border-foreground/20',\n    tabsList: 'border-foreground/20',\n    tabsPanel: 'border-foreground/20',\n    segmentedRoot: 'border-foreground/20',\n    avatarRoot: 'border-foreground/20',\n    toolbarRoot: 'border-foreground/20',\n    paginationButton: 'border-foreground/20',\n    descriptionListItem: 'border-foreground/20',\n    accordionItem: 'border-foreground/20',\n    accordionPanel: 'border-foreground/20',\n    menuContent: 'border-foreground/20',\n    menuSeparator: 'bg-foreground/15',\n    menuSubContent: 'border-foreground/20',\n    tableContainer:\n      'border-foreground/20 [--base-table-header-separator:hsl(var(--foreground)_/_0.15)]',\n    tableHeader: 'border-foreground/20',\n    tableFooter: '[&_tr>*]:border-foreground/20',\n    tableFooterBar: 'border-foreground/20',\n    tableFooterBarAttached: 'border-t border-foreground/20',\n    tableRow: '[&>*]:border-foreground/15',\n    tableEmptyRow: '[&>*]:border-foreground/15',\n    tableLoadingRow: '[&>*]:border-foreground/15',\n    layoutRoot: 'border-foreground/20',\n    layoutPaneBordered: 'border-foreground/20',\n    layoutResizeHandle: 'hover:bg-foreground/15 active:bg-foreground/20 focus-visible:bg-foreground/15',\n  },\n};\n\nconst backgroundSlots: Record<BaseBackground, Partial<BaseThemeSlots>> = {\n  plain: {},\n  muted: {\n    buttonDefault: 'bg-muted/20 hover:bg-muted/45',\n    panelRoot: 'bg-card',\n    panelFooter: 'bg-muted/20',\n    stateRoot: 'bg-muted/20',\n    controlWrapper: 'bg-background',\n    selectMenu: 'bg-background',\n    selectOptionActive: 'bg-muted/70 text-foreground',\n    checkboxBox: 'bg-background',\n    radioOption: 'bg-card hover:bg-muted/45',\n    radioMarker: 'bg-background',\n    dialogPanel: 'bg-card',\n    dropdownMenu: 'bg-background',\n    dropdownItem: 'hover:bg-muted/60',\n    tooltipContent: 'bg-popover',\n    noticeDefault: 'bg-muted/20',\n    tabsList: 'bg-muted/35',\n    tabsTriggerActive: 'bg-background',\n    tabsPanel: 'bg-card',\n    segmentedRoot: 'bg-muted/35',\n    segmentedItemActive: 'bg-background',\n    progressTrack: 'bg-muted/60',\n    skeletonRoot: 'bg-muted',\n    toolbarRoot: 'bg-card',\n    paginationButton: 'bg-background hover:bg-muted/60',\n    paginationPage: 'bg-muted/60',\n    descriptionListItem: 'bg-card',\n    accordionItem: 'bg-card',\n    menuContent: 'bg-background',\n    menuItem: 'focus:bg-muted/70 data-[highlighted]:bg-muted/70',\n    menuSubTrigger:\n      'focus:bg-muted/70 data-[highlighted]:bg-muted/70 data-[state=open]:bg-muted/70',\n    menuSubContent: 'bg-background',\n    tableContainer: 'bg-background/95 [scrollbar-gutter:stable]',\n    tableFooter: 'bg-muted/35',\n    tableFooterBar: 'bg-muted/30 shadow-none',\n    tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.45)]',\n    tableLoadingSkeleton: 'bg-muted',\n    layoutRoot: 'bg-card',\n    layoutPane: 'bg-card',\n    layoutPaneMuted: 'bg-muted/35',\n    layoutResizeHandle: 'hover:bg-border/70 active:bg-border/80 focus-visible:bg-border/70',\n  },\n  soft: {\n    buttonDefault: 'bg-muted/30 hover:bg-muted/55',\n    panelRoot: 'bg-background/95 shadow-sm',\n    stateRoot: 'bg-background/95 shadow-sm',\n    controlWrapper: 'bg-background/95',\n    selectMenu: 'bg-background/95 shadow-xl',\n    selectOptionActive: 'bg-muted/60 text-foreground',\n    checkboxBox: 'bg-background/95',\n    radioOption: 'bg-background/95 shadow-sm hover:bg-muted/35',\n    radioMarker: 'bg-background/95',\n    dialogPanel: 'bg-background/95 shadow-xl',\n    dropdownMenu: 'bg-background/95 shadow-xl',\n    dropdownItem: 'hover:bg-muted/55',\n    tooltipContent: 'bg-popover shadow-xl',\n    noticeDefault: 'bg-background/95 shadow-sm',\n    tabsList: 'bg-background/60 shadow-sm',\n    tabsTriggerActive: 'bg-background',\n    tabsPanel: 'bg-background/95 shadow-sm',\n    segmentedRoot: 'bg-background/60 shadow-sm',\n    segmentedItemActive: 'bg-background',\n    skeletonRoot: 'bg-background/80',\n    toolbarRoot: 'bg-background/95 shadow-sm',\n    paginationButton: 'bg-background/95 hover:bg-muted/55',\n    descriptionListItem: 'bg-background/95 shadow-sm',\n    accordionItem: 'bg-background/95 shadow-sm',\n    menuContent: 'bg-background/95 shadow-xl',\n    menuItem: 'focus:bg-muted/60 data-[highlighted]:bg-muted/60',\n    menuSubTrigger:\n      'focus:bg-muted/60 data-[highlighted]:bg-muted/60 data-[state=open]:bg-muted/60',\n    menuSubContent: 'bg-background/95 shadow-xl',\n    tableContainer:\n      'bg-background/95 shadow-sm [scrollbar-gutter:stable]',\n    tableFooter: 'bg-muted/25',\n    tableFooterBar: 'bg-muted/25 shadow-none',\n    tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.35)]',\n    tableLoadingSkeleton: 'bg-muted/65',\n    layoutRoot: 'bg-background/95 shadow-sm',\n    layoutPane: 'bg-background/95 shadow-sm',\n    layoutPaneSoft: 'bg-background/95 shadow-md',\n  },\n  glass: {\n    buttonBase: 'backdrop-blur-md',\n    buttonDefault:\n      'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n    badgeDefault: 'border-white/10 bg-white/[0.08] text-foreground',\n    panelRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n    panelFooter: 'border-white/10 bg-white/[0.05]',\n    stateRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n    stateIcon: 'bg-white/10 text-foreground',\n    controlWrapper:\n      'border-white/10 bg-white/[0.08] text-foreground backdrop-blur-md',\n    selectMenu:\n      'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n    selectOption: 'text-foreground',\n    selectOptionActive: 'bg-white/[0.14] text-foreground',\n    selectOptionSelected: 'bg-white/[0.18] text-foreground',\n    switchTrack: 'border-white/10 bg-white/[0.12] backdrop-blur-md',\n    checkboxBox: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n    checkboxBoxChecked: 'border-white/20 bg-white/[0.22] text-foreground',\n    radioOption: 'border-white/10 bg-white/[0.06] backdrop-blur-md hover:bg-white/[0.10]',\n    radioMarker: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n    radioMarkerChecked: 'border-white/25 bg-white/[0.16]',\n    dialogOverlay: 'bg-background/45 backdrop-blur-md',\n    dialogPanel: 'border-white/10 bg-white/[0.08] shadow-2xl backdrop-blur-md',\n    dialogHeader: 'border-white/10',\n    dialogFooter: 'border-white/10',\n    dropdownMenu:\n      'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n    dropdownItem: 'text-foreground hover:bg-white/[0.14]',\n    tooltipContent:\n      'border-foreground/10 bg-background/15 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n    noticeDefault:\n      'border-white/10 bg-white/[0.08] text-foreground backdrop-blur-md',\n    dividerRoot: 'border-white/15',\n    tabsList: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n    tabsTrigger: 'text-muted-foreground hover:bg-white/[0.12] hover:text-foreground',\n    tabsTriggerActive: 'bg-white/[0.16] text-foreground shadow-none',\n    tabsPanel:\n      'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n    segmentedRoot: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n    segmentedItem: 'text-muted-foreground hover:bg-white/[0.12] hover:text-foreground',\n    segmentedItemActive: 'bg-white/[0.16] text-foreground shadow-none',\n    progressTrack: 'bg-white/[0.12]',\n    skeletonRoot: 'bg-white/[0.16]',\n    avatarRoot: 'border-white/10 bg-white/[0.12] text-foreground',\n    avatarFallback: 'bg-white/[0.12] text-foreground',\n    avatarStatus: 'border-background',\n    toolbarRoot:\n      'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n    paginationButton:\n      'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n    paginationPage: 'bg-white/[0.12] text-foreground',\n    descriptionListItem:\n      'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n    accordionItem:\n      'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n    accordionPanel: 'border-white/10',\n    menuContent:\n      'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n    menuSeparator: 'bg-white/10',\n    menuItem:\n      'text-foreground focus:bg-white/[0.14] focus:text-foreground data-[highlighted]:bg-white/[0.14] data-[highlighted]:text-foreground',\n    menuSubTrigger:\n      'text-foreground focus:bg-white/[0.14] focus:text-foreground data-[highlighted]:bg-white/[0.14] data-[highlighted]:text-foreground data-[state=open]:bg-white/[0.16]',\n    menuSubContent:\n      'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n    tableContainer:\n      'border-foreground/10 bg-background/[0.06] shadow-none backdrop-blur-md [scrollbar-gutter:stable] [--base-table-sticky-header-bg:hsl(var(--background)/0.94)] [--base-table-header-separator:hsl(var(--foreground)/0.24)]',\n    tableHeader: 'border-white/10',\n    tableFooter: 'bg-white/[0.05] [&_tr>*]:border-white/10',\n    tableFooterBar:\n      'border-white/10 bg-white/[0.05] shadow-none backdrop-blur-md',\n    tableFooterBarAttached: 'border-t border-white/10',\n    tableRow: '[&>*]:border-white/10',\n    tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--foreground)/0.08)]',\n    tableHeadLabel: 'text-foreground',\n    tableLoadingSkeleton: 'bg-white/[0.16]',\n    layoutRoot:\n      'border-white/10 bg-white/[0.05] shadow-none backdrop-blur-md',\n    layoutPane:\n      'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n    layoutPaneMuted: 'bg-white/[0.08]',\n    layoutPaneSoft: 'bg-white/[0.10] shadow-none backdrop-blur-md',\n    layoutResizeHandle: 'text-foreground/65 hover:bg-white/10 active:bg-white/15 focus-visible:bg-white/10',\n    layoutResizeHandleIndicator: 'bg-white/45 group-hover/resize:bg-white/75',\n  },\n  dark: {\n    buttonBase:\n      'border-white/15 text-white shadow-lg backdrop-blur',\n    buttonDefault: 'bg-black/30 hover:bg-black/[0.45]',\n    buttonPrimary: 'border-white/25 bg-white/20 text-white hover:bg-white/25',\n    buttonMuted:\n      'border-white/10 bg-black/20 text-white/70 hover:bg-black/[0.35] hover:text-white',\n    badgeDefault: 'border-white/10 bg-white/[0.08] text-white',\n    badgeMuted: 'border-white/10 bg-black/20 text-white/70',\n    panelRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n    panelTitle: 'text-white',\n    panelDescription: 'text-white/65',\n    panelBody: 'text-white/85',\n    panelFooter: 'border-white/10 bg-white/[0.04]',\n    stateRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n    stateIcon: 'bg-white/10 text-white/75',\n    stateTitle: 'text-white',\n    stateDescription: 'text-white/65',\n    fieldLabel: 'text-white',\n    fieldDescription: 'text-white/65',\n    fieldMessage: 'text-white/65',\n    controlWrapper:\n      'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur focus-within:border-white/35',\n    controlBase: 'text-white placeholder:text-white/45',\n    selectChevron: 'text-white/65',\n    selectMenu: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n    selectOption: 'text-white',\n    selectOptionActive: 'bg-white/[0.12] text-white',\n    selectOptionSelected: 'bg-white/[0.16] text-white',\n    selectPlaceholder: 'text-white/45',\n    switchTrack: 'border-white/15 bg-black/30 shadow-lg backdrop-blur',\n    switchChecked: 'border-white/25 bg-white/25 text-white',\n    switchLabel: 'text-white',\n    switchDescription: 'text-white/65',\n    checkboxBox: 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur',\n    checkboxBoxChecked: 'border-white/25 bg-white/25 text-white',\n    checkboxLabel: 'text-white',\n    checkboxDescription: 'text-white/65',\n    radioOption: 'border-white/10 bg-white/[0.06] text-white hover:bg-white/[0.08]',\n    radioMarker: 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur',\n    radioMarkerChecked: 'border-white/25 bg-white/25',\n    radioIndicator: 'bg-white',\n    radioLabel: 'text-white',\n    radioDescription: 'text-white/65',\n    dialogOverlay: 'bg-slate-950/75',\n    dialogPanel: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n    dialogHeader: 'border-white/10',\n    dialogTitle: 'text-white',\n    dialogDescription: 'text-white/65',\n    dialogBody: 'text-white/85',\n    dialogFooter: 'border-white/10',\n    dialogClose: 'text-white/65 hover:bg-white/[0.08] hover:text-white',\n    dropdownMenu: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n    dropdownLabel: 'text-white/55',\n    dropdownSeparator: 'bg-white/15',\n    dropdownItem: 'text-white hover:bg-white/[0.10]',\n    dropdownItemDescription: 'text-white/55',\n    dropdownItemShortcut: 'text-white/55',\n    tooltipContent: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n    noticeDefault: 'border-white/10 bg-white/[0.08] text-white',\n    noticeMuted: 'border-white/10 bg-black/20 text-white/70',\n    dividerRoot: 'border-white/15',\n    dividerLabel: 'text-white/55',\n    sectionHeaderEyebrow: 'text-white/55',\n    sectionHeaderTitle: 'text-white',\n    sectionHeaderDescription: 'text-white/65',\n    tabsList: 'border-white/10 bg-white/[0.08]',\n    tabsTrigger: 'text-white/65 hover:bg-white/[0.12] hover:text-white',\n    tabsTriggerActive: 'bg-white/[0.16] text-white shadow-none',\n    tabsPanel: 'border-white/10 bg-white/[0.06] text-white',\n    segmentedRoot: 'border-white/10 bg-white/[0.08]',\n    segmentedItem: 'text-white/65 hover:bg-white/[0.12] hover:text-white',\n    segmentedItemActive: 'bg-white/[0.16] text-white shadow-none',\n    progressTrack: 'bg-white/[0.12]',\n    progressLabel: 'text-white',\n    progressValue: 'text-white/65',\n    skeletonRoot: 'bg-white/[0.14]',\n    avatarRoot: 'border-white/15 bg-white/[0.10] text-white',\n    avatarFallback: 'bg-white/[0.10] text-white/75',\n    avatarText: 'text-white',\n    avatarStatus: 'border-slate-950',\n    toolbarRoot: 'border-white/10 bg-white/[0.06] text-white',\n    toolbarTitle: 'text-white',\n    toolbarDescription: 'text-white/65',\n    breadcrumbLink: 'text-white/65 hover:text-white',\n    breadcrumbCurrent: 'text-white',\n    breadcrumbSeparator: 'text-white/45',\n    paginationInfo: 'text-white/65',\n    paginationButton: 'border-white/10 bg-white/[0.08] text-white hover:bg-white/[0.14]',\n    paginationPage: 'bg-white/[0.14] text-white',\n    descriptionListItem: 'border-white/10 bg-white/[0.06]',\n    descriptionListTerm: 'text-white/55',\n    descriptionListValue: 'text-white',\n    accordionItem: 'border-white/10 bg-white/[0.06]',\n    accordionTrigger: 'text-white hover:bg-white/[0.08]',\n    accordionPanel: 'border-white/10 text-white/70',\n    tableContainer:\n      'border-foreground/10 bg-background text-foreground shadow-none [scrollbar-gutter:stable] [--base-table-sticky-header-bg:hsl(var(--background)/0.98)] [--base-table-header-separator:hsl(var(--foreground)/0.16)]',\n    tableRoot: 'text-white',\n    tableHeader: 'border-white/10',\n    tableFooter: 'bg-white/[0.05] [&_tr>*]:border-white/10',\n    tableFooterBar: 'border-white/10 bg-white/[0.05] text-white/65',\n    tableFooterBarAttached: 'border-t border-white/10',\n    tableRow: '[&>*]:border-white/10',\n    tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--foreground)/0.06)]',\n    tableHead: 'text-white/65',\n    tableHeadLabel: 'text-white',\n    tableHeadDescription: 'text-white/55',\n    tableHeadMeta: 'text-white/55',\n    tableHeadIcon: 'text-white/55',\n    tableHeadSortIcon: 'text-white/55',\n    tableHeadDragHandle: 'text-white/55 hover:bg-white/[0.08]',\n    tableHeadResizeHandle: 'after:bg-white/20 hover:after:bg-white/60',\n    tableCell: 'text-white/85',\n    tableEmptyIcon: 'bg-white/10 text-white/65',\n    tableEmptyTitle: 'text-white',\n    tableEmptyDescription: 'text-white/60',\n    menuContent: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n    menuLabel: 'text-white/55',\n    menuSeparator: 'bg-white/10',\n    menuItem:\n      'text-white focus:bg-white/[0.10] focus:text-white data-[highlighted]:bg-white/[0.10] data-[highlighted]:text-white',\n    menuItemDefault: 'text-white',\n    menuItemPrimary: 'text-primary focus:text-primary data-[highlighted]:text-primary',\n    menuItemSuccess:\n      'text-[hsl(var(--success,142_69%_58%))] focus:text-[hsl(var(--success,142_69%_58%))] data-[highlighted]:text-[hsl(var(--success,142_69%_58%))]',\n    menuItemWarning:\n      'text-[hsl(var(--warning-foreground,53_98%_77%))] focus:text-[hsl(var(--warning-foreground,53_98%_77%))] data-[highlighted]:text-[hsl(var(--warning-foreground,53_98%_77%))]',\n    menuItemDanger:\n      'text-destructive-text focus:text-destructive-text data-[highlighted]:text-destructive-text',\n    menuItemMuted:\n      'text-white/65 focus:text-white data-[highlighted]:text-white',\n    menuItemShortcut: 'text-white/45',\n    menuSubTrigger:\n      'text-white focus:bg-white/[0.10] focus:text-white data-[highlighted]:bg-white/[0.10] data-[highlighted]:text-white data-[state=open]:bg-white/[0.12]',\n    menuSubTriggerIcon: 'text-white/55',\n    menuSubContent: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n    tableLoadingSkeleton: 'bg-white/[0.14]',\n    layoutRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n    layoutPane: 'border-white/10 bg-slate-950 text-white shadow-none',\n    layoutPaneMuted: 'bg-white/[0.06]',\n    layoutPaneSoft: 'bg-white/[0.08] shadow-none',\n    layoutResizeHandle: 'text-white/65 hover:bg-white/10 active:bg-white/15 focus-visible:bg-white/10',\n    layoutResizeHandleIndicator: 'bg-white/45 group-hover/resize:bg-white/75',\n  },\n};\n\nconst presetDefaults: Record<\n  BaseThemePresetId,\n  Pick<BaseAppearance, 'density' | 'radius' | 'border' | 'background'>\n> = {\n  default: {\n    density: 'default',\n    radius: 'md',\n    border: 'solid',\n    background: 'plain',\n  },\n  soft: {\n    density: 'default',\n    radius: 'lg',\n    border: 'subtle',\n    background: 'soft',\n  },\n  compact: {\n    density: 'compact',\n    radius: 'md',\n    border: 'subtle',\n    background: 'muted',\n  },\n  'tinted-glass': {\n    density: 'default',\n    radius: 'lg',\n    border: 'subtle',\n    background: 'glass',\n  },\n  glass: {\n    density: 'default',\n    radius: 'xl',\n    border: 'subtle',\n    background: 'glass',\n  },\n  'hard-edge': {\n    density: 'compact',\n    radius: 'none',\n    border: 'strong',\n    background: 'plain',\n  },\n};\n\nconst presetSlots: Record<string, Partial<BaseThemeSlots>> = {\n  soft: {\n    buttonBase: 'font-medium',\n    panelRoot: 'border-border/70',\n    controlWrapper: 'font-medium',\n    tabsTrigger: 'font-medium',\n    segmentedItem: 'font-medium',\n    toolbarRoot: 'border-border/70',\n    tableContainer: 'border-border/70',\n    tableFooterBar: 'border-border/70',\n    tableHeadLabel: 'font-semibold',\n    menuItemLabel: 'font-medium',\n  },\n  compact: {\n    buttonBase: 'text-xs',\n    badgeBase: 'text-[11px]',\n    fieldLabel: 'text-xs',\n    controlBase: 'text-xs',\n    selectOption: 'text-xs',\n    menuItem: 'text-xs',\n    menuSubTrigger: 'text-xs',\n    noticeBase: 'text-xs',\n    sectionHeaderTitle: 'text-sm',\n    tabsTrigger: 'text-xs',\n    segmentedItem: 'text-xs',\n    toolbarTitle: 'text-xs',\n    paginationRoot: 'text-xs',\n  },\n  'tinted-glass': {\n    buttonPrimary: 'border-primary/25 bg-primary/15 text-primary-foreground hover:bg-primary/20',\n    badgePrimary: 'border-primary/25 bg-primary/15 text-primary-foreground',\n    noticePrimary: 'border-primary/25 bg-primary/15 text-primary-foreground',\n    progressIndicator: 'bg-primary',\n    avatarStatus: 'border-background',\n  },\n  glass: {\n    panelRoot: 'shadow-[0_24px_80px_hsl(var(--foreground)/0.12)]',\n    stateRoot: 'shadow-[0_24px_80px_hsl(var(--foreground)/0.12)]',\n    noticeBase: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n    tabsPanel: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n    toolbarRoot: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n    descriptionListItem: 'shadow-[0_12px_40px_hsl(var(--foreground)/0.08)]',\n    accordionItem: 'shadow-[0_12px_40px_hsl(var(--foreground)/0.08)]',\n  },\n  'hard-edge': {\n    buttonBase: 'shadow-none',\n    panelRoot: 'shadow-none',\n    stateRoot: 'shadow-none',\n    controlWrapper: 'shadow-none',\n    selectMenu: 'shadow-none',\n    menuContent: 'shadow-none',\n    menuSubContent: 'shadow-none',\n    noticeBase: 'shadow-none',\n    tabsList: 'shadow-none',\n    tabsTriggerActive: 'shadow-none',\n    tabsPanel: 'shadow-none',\n    segmentedRoot: 'shadow-none',\n    segmentedItemActive: 'shadow-none',\n    toolbarRoot: 'shadow-none',\n    descriptionListItem: 'shadow-none',\n    accordionItem: 'shadow-none',\n  },\n};\n\nfunction getPresetDefaults(preset: BaseThemePresetId) {\n  return (\n    presetDefaults[preset as keyof typeof presetDefaults] ?? presetDefaults.default\n  );\n}\n\nconst slotKeys = Object.keys(baseSlots) as Array<keyof BaseThemeSlots>;\n\nfunction mergeSlots(\n  ...sources: Array<Partial<BaseThemeSlots> | undefined>\n): ResolvedSlots {\n  return slotKeys.reduce((resolved, key) => {\n    resolved[key] = cn(...sources.map((source) => source?.[key]));\n    return resolved;\n  }, {} as ResolvedSlots);\n}\n\nfunction mergeStyles(...styleSets: Array<BaseThemeStyles | undefined>) {\n  return Object.assign({}, ...styleSets.filter(Boolean));\n}\n\nexport function resolveBaseAppearance(\n  appearance?: BaseAppearance,\n): BaseResolvedTheme {\n  const preset = appearance?.preset ?? 'default';\n  const variant = appearance?.variant ?? 'default';\n  const defaults = getPresetDefaults(preset);\n  const density = appearance?.density ?? defaults.density ?? 'default';\n  const state = appearance?.state ?? 'idle';\n  const radius = appearance?.radius ?? defaults.radius ?? 'md';\n  const border = appearance?.border ?? defaults.border ?? 'solid';\n  const background = appearance?.background ?? defaults.background ?? 'plain';\n\n  return {\n    preset,\n    variant,\n    density,\n    state,\n    radius,\n    border,\n    background,\n    styles: mergeStyles(emptyStyles, appearance?.styles),\n    slots: mergeSlots(\n      baseSlots,\n      presetSlots[preset],\n      densitySlots[density],\n      radiusSlots[radius],\n      borderSlots[border],\n      backgroundSlots[background],\n      appearance?.slots,\n    ),\n  };\n}\n\nexport function getBaseButtonToneClassName(\n  theme: BaseResolvedTheme,\n  tone: BaseControlTone = 'default',\n  active = false,\n) {\n  return cn(\n    tone === 'default' && theme.slots.buttonDefault,\n    tone === 'primary' && theme.slots.buttonPrimary,\n    tone === 'success' && theme.slots.buttonSuccess,\n    tone === 'warning' && theme.slots.buttonWarning,\n    tone === 'danger' && theme.slots.buttonDanger,\n    tone === 'muted' && theme.slots.buttonMuted,\n    active && theme.slots.buttonActive,\n  );\n}\n\nexport function getBaseBadgeToneClassName(\n  theme: BaseResolvedTheme,\n  tone: BaseControlTone = 'default',\n) {\n  return cn(\n    tone === 'default' && theme.slots.badgeDefault,\n    tone === 'primary' && theme.slots.badgePrimary,\n    tone === 'success' && theme.slots.badgeSuccess,\n    tone === 'warning' && theme.slots.badgeWarning,\n    tone === 'danger' && theme.slots.badgeDanger,\n    tone === 'muted' && theme.slots.badgeMuted,\n  );\n}\n\nexport function getBaseNoticeToneClassName(\n  theme: BaseResolvedTheme,\n  tone: BaseControlTone = 'default',\n) {\n  return cn(\n    tone === 'default' && theme.slots.noticeDefault,\n    tone === 'primary' && theme.slots.noticePrimary,\n    tone === 'success' && theme.slots.noticeSuccess,\n    tone === 'warning' && theme.slots.noticeWarning,\n    tone === 'danger' && theme.slots.noticeDanger,\n    tone === 'muted' && theme.slots.noticeMuted,\n  );\n}\n\nexport function getBaseMenuItemToneClassName(\n  theme: BaseResolvedTheme,\n  tone: BaseControlTone = 'default',\n) {\n  return cn(\n    tone === 'default' && theme.slots.menuItemDefault,\n    tone === 'primary' && theme.slots.menuItemPrimary,\n    tone === 'success' && theme.slots.menuItemSuccess,\n    tone === 'warning' && theme.slots.menuItemWarning,\n    tone === 'danger' && theme.slots.menuItemDanger,\n    tone === 'muted' && theme.slots.menuItemMuted,\n  );\n}\n\nexport function getBaseTypographyToneClassName(\n  theme: BaseResolvedTheme,\n  tone: BaseTypographyTone = 'default',\n) {\n  return cn(\n    tone === 'default' && theme.slots.typographyToneDefault,\n    tone === 'muted' && theme.slots.typographyToneMuted,\n    tone === 'primary' && theme.slots.typographyTonePrimary,\n    tone === 'success' && theme.slots.typographyToneSuccess,\n    tone === 'warning' && theme.slots.typographyToneWarning,\n    tone === 'danger' && theme.slots.typographyToneDanger,\n    tone === 'inherit' && theme.slots.typographyToneInherit,\n  );\n}\n\nexport function getBaseTextSizeClassName(\n  theme: BaseResolvedTheme,\n  size: BaseTypographySize = 'md',\n) {\n  return cn(\n    size === 'xs' && theme.slots.textSizeXs,\n    size === 'sm' && theme.slots.textSizeSm,\n    size === 'md' && theme.slots.textSizeMd,\n    size === 'lg' && theme.slots.textSizeLg,\n    size === 'xl' && theme.slots.textSizeXl,\n  );\n}\n\nexport function getBaseHeadingSizeClassName(\n  theme: BaseResolvedTheme,\n  size: BaseHeadingSize = 'lg',\n) {\n  return cn(\n    size === 'xs' && theme.slots.headingSizeXs,\n    size === 'sm' && theme.slots.headingSizeSm,\n    size === 'md' && theme.slots.headingSizeMd,\n    size === 'lg' && theme.slots.headingSizeLg,\n    size === 'xl' && theme.slots.headingSizeXl,\n    size === '2xl' && theme.slots.headingSize2xl,\n  );\n}\n\nexport function getBaseListSpacingClassName(\n  theme: BaseResolvedTheme,\n  spacing: BaseListSpacing = 'default',\n) {\n  return cn(\n    spacing === 'compact' && theme.slots.listSpacingCompact,\n    spacing === 'default' && theme.slots.listSpacingDefault,\n    spacing === 'relaxed' && theme.slots.listSpacingRelaxed,\n  );\n}\n\nexport function getBaseListMarkerClassName(\n  theme: BaseResolvedTheme,\n  marker: Exclude<BaseListMarker, 'auto'>,\n) {\n  return cn(\n    marker === 'none' && theme.slots.listMarkerNone,\n    marker === 'disc' && theme.slots.listMarkerDisc,\n    marker === 'circle' && theme.slots.listMarkerCircle,\n    marker === 'square' && theme.slots.listMarkerSquare,\n    marker === 'decimal' && theme.slots.listMarkerDecimal,\n    marker === 'lower-alpha' && theme.slots.listMarkerLowerAlpha,\n    marker === 'upper-alpha' && theme.slots.listMarkerUpperAlpha,\n  );\n}\n\nconst cssLengthPattern = /^(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))$/i;\nconst cssLengthFunctions = new Set(['calc', 'clamp', 'max', 'min', 'var']);\nconst unsafeCssValuePattern = /[;{}<>\"'\\\\\\u0000-\\u001f\\u007f]/;\nconst gridTemplateTokenPattern = /(?:\\b(?:auto|fit-content|max-content|min-content|subgrid)\\b|(?:calc|clamp|max|min|minmax|repeat|var)\\s*\\(|(?:^|[\\s,(])(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|fr|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))(?:$|[\\s,)\\]]))/i;\n\nfunction hasBalancedDelimiters(value: string) {\n  const pairs: Record<string, string> = { ')': '(', ']': '[' };\n  const stack: string[] = [];\n\n  for (const character of value) {\n    if (character === '(' || character === '[') {\n      stack.push(character);\n    } else if (character === ')' || character === ']') {\n      if (stack.pop() !== pairs[character]) return false;\n    }\n  }\n\n  return stack.length === 0;\n}\n\nfunction isSupportedCssLengthFunction(value: string) {\n  const match = /^([a-z]+)\\(([\\s\\S]+)\\)$/i.exec(value);\n  if (!match || !cssLengthFunctions.has(match[1].toLowerCase())) return false;\n  if (!match[2].trim() || !hasBalancedDelimiters(value)) return false;\n\n  if (match[1].toLowerCase() === 'var') {\n    return /^\\s*--[a-z0-9_-]+(?:\\s*,[\\s\\S]+)?\\s*$/i.test(match[2]);\n  }\n\n  return cssLengthPattern.test(match[2].trim()) || /\\b(?:calc|clamp|max|min|var)\\s*\\(/i.test(match[2]) || /(?:^|[\\s,(])(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))(?:$|[\\s,)])/i.test(match[2]);\n}\n\nexport function resolveBaseLayoutLength(\n  componentName: string,\n  propName: string,\n  value: BaseLayoutLength,\n) {\n  if (typeof value === 'number') {\n    if (!Number.isFinite(value) || value < 0) {\n      throw new RangeError(\n        `${componentName} ${propName} must be a finite, non-negative number or a supported CSS length string.`,\n      );\n    }\n    return `${value}px`;\n  }\n\n  if (typeof value !== 'string') {\n    throw new TypeError(\n      `${componentName} ${propName} must be a finite, non-negative number or a supported CSS length string.`,\n    );\n  }\n\n  const normalized = value.trim();\n  if (\n    !normalized ||\n    unsafeCssValuePattern.test(normalized) ||\n    (!cssLengthPattern.test(normalized) &&\n      !isSupportedCssLengthFunction(normalized))\n  ) {\n    throw new TypeError(\n      `${componentName} ${propName} must be a non-empty, non-negative CSS length (for example 12px, 1rem, 5%, or var(--space)).`,\n    );\n  }\n\n  return normalized;\n}\n\nexport function resolveBaseGridColumns(value: number | string) {\n  if (typeof value === 'number') {\n    if (!Number.isInteger(value) || value <= 0) {\n      throw new RangeError(\n        'BaseGrid columns must be a positive integer or a supported CSS grid-template-columns string.',\n      );\n    }\n    return `repeat(${value}, minmax(0, 1fr))`;\n  }\n\n  if (typeof value !== 'string') {\n    throw new TypeError(\n      'BaseGrid columns must be a positive integer or a supported CSS grid-template-columns string.',\n    );\n  }\n\n  const normalized = value.trim();\n  if (\n    !normalized ||\n    unsafeCssValuePattern.test(normalized) ||\n    /\\burl\\s*\\(/i.test(normalized) ||\n    !hasBalancedDelimiters(normalized) ||\n    !gridTemplateTokenPattern.test(normalized)\n  ) {\n    throw new TypeError(\n      'BaseGrid columns must be a non-empty CSS grid-template-columns value such as \"12rem minmax(0, 1fr)\" or \"repeat(3, minmax(0, 1fr))\".',\n    );\n  }\n\n  return normalized;\n}\n\ntype BaseLayoutAlignValue =\n  | 'flex-start'\n  | 'center'\n  | 'flex-end'\n  | 'stretch'\n  | 'baseline';\n\ntype BaseLayoutJustifyValue =\n  | 'flex-start'\n  | 'center'\n  | 'flex-end'\n  | 'space-between'\n  | 'space-around'\n  | 'space-evenly';\n\nconst layoutAlignValues: Record<BaseLayoutAlign, BaseLayoutAlignValue> = {\n  start: 'flex-start',\n  center: 'center',\n  end: 'flex-end',\n  stretch: 'stretch',\n  baseline: 'baseline',\n};\n\nconst layoutJustifyValues: Record<\n  BaseLayoutJustify,\n  BaseLayoutJustifyValue\n> = {\n  start: 'flex-start',\n  center: 'center',\n  end: 'flex-end',\n  between: 'space-between',\n  around: 'space-around',\n  evenly: 'space-evenly',\n};\n\nexport function resolveBaseLayoutAlign(\n  componentName: string,\n  value: BaseLayoutAlign,\n): BaseLayoutAlignValue {\n  if (!Object.prototype.hasOwnProperty.call(layoutAlignValues, value)) {\n    throw new TypeError(\n      `${componentName} align must be one of: start, center, end, stretch, baseline.`,\n    );\n  }\n  return layoutAlignValues[value];\n}\n\nexport function resolveBaseLayoutJustify(\n  componentName: string,\n  value: BaseLayoutJustify,\n): BaseLayoutJustifyValue {\n  if (!Object.prototype.hasOwnProperty.call(layoutJustifyValues, value)) {\n    throw new TypeError(\n      `${componentName} justify must be one of: start, center, end, between, around, evenly.`,\n    );\n  }\n  return layoutJustifyValues[value];\n}\n","import {\n  forwardRef,\n  useEffect,\n  useId,\n  useRef,\n  useState,\n  type FocusEvent,\n  type KeyboardEvent,\n} from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseAccordionItem, BaseAccordionProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nexport function validateBaseAccordionProps({\n  items,\n  value,\n  defaultValue,\n  allowCollapse,\n  keyboardNavigation,\n}: Pick<\n  BaseAccordionProps,\n  | 'allowCollapse'\n  | 'defaultValue'\n  | 'items'\n  | 'keyboardNavigation'\n  | 'value'\n>) {\n  if (!Array.isArray(items)) {\n    throw new TypeError('BaseAccordion items must be an array.');\n  }\n  if (value !== undefined && (typeof value !== 'string' || !value.trim())) {\n    throw new TypeError(\n      'BaseAccordion value must be a non-empty string when provided.',\n    );\n  }\n  if (\n    defaultValue !== undefined &&\n    (typeof defaultValue !== 'string' || !defaultValue.trim())\n  ) {\n    throw new TypeError(\n      'BaseAccordion defaultValue must be a non-empty string when provided.',\n    );\n  }\n  if (typeof allowCollapse !== 'boolean') {\n    throw new TypeError('BaseAccordion allowCollapse must be a boolean.');\n  }\n  if (typeof keyboardNavigation !== 'boolean') {\n    throw new TypeError('BaseAccordion keyboardNavigation must be a boolean.');\n  }\n\n  const values = new Set<string>();\n  items.forEach((item, index) => {\n    if (!item || typeof item !== 'object') {\n      throw new TypeError(\n        `BaseAccordion item at index ${index} must be an object.`,\n      );\n    }\n    if (typeof item.value !== 'string' || !item.value.trim()) {\n      throw new TypeError(\n        `BaseAccordion item value at index ${index} must be a non-empty string.`,\n      );\n    }\n    if (values.has(item.value)) {\n      throw new TypeError(\n        'BaseAccordion items must use unique values; ' +\n          `duplicate value ${JSON.stringify(item.value)} at index ${index}.`,\n      );\n    }\n    if (item.disabled !== undefined && typeof item.disabled !== 'boolean') {\n      throw new TypeError(\n        `BaseAccordion item disabled at index ${index} must be a boolean.`,\n      );\n    }\n    values.add(item.value);\n  });\n}\n\nfunction toDomId(value: string) {\n  return value.replace(/[^a-zA-Z0-9_-]/g, '-');\n}\n\nfunction getDomIdFragments(items: BaseAccordionItem[]) {\n  const usedFragments = new Set<string>();\n\n  return items.map((item, index) => {\n    const baseFragment = toDomId(item.value) || `item-${index}`;\n    let fragment = baseFragment;\n\n    if (usedFragments.has(fragment)) {\n      fragment = `${baseFragment}-${index}`;\n      while (usedFragments.has(fragment)) {\n        fragment = `${fragment}-${index}`;\n      }\n    }\n\n    usedFragments.add(fragment);\n    return fragment;\n  });\n}\n\nexport const BaseAccordion = forwardRef<HTMLDivElement, BaseAccordionProps>(\n  function BaseAccordion(\n    {\n      items = [],\n      value,\n      defaultValue,\n      allowCollapse = true,\n      keyboardNavigation = true,\n      appearance,\n      className,\n      classNames,\n      style,\n      onValueChange,\n      id,\n      onFocusCapture,\n      onBlurCapture,\n      ...accordionProps\n    },\n    ref,\n  ) {\n    validateBaseAccordionProps({\n      items,\n      value,\n      defaultValue,\n      allowCollapse,\n      keyboardNavigation,\n    });\n\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const generatedId = useId();\n    const rootId = id ?? generatedId;\n    const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n    const [focusedValue, setFocusedValue] = useState<string>();\n    const triggerRefs = useRef(new Map<string, HTMLButtonElement>());\n    const ownsTriggerFocusRef = useRef(false);\n    const isControlled = value !== undefined;\n    const openValue = isControlled ? value : uncontrolledValue;\n    const idFragments = getDomIdFragments(items);\n    const enabledItems = items.filter((item) => !item.disabled);\n    const openItem = items.find((item) => item.value === openValue);\n    const layerDirection =\n      typeof accordionProps.dir === 'string'\n        ? accordionProps.dir\n        : componentAttributes.dir;\n\n    useEffect(() => {\n      if (!ownsTriggerFocusRef.current || focusedValue === undefined) return;\n      const focusedItem = items.find((item) => item.value === focusedValue);\n      if (focusedItem && !focusedItem.disabled) return;\n\n      const fallbackItem =\n        enabledItems.find((item) => item.value === openValue) ?? enabledItems[0];\n      if (!fallbackItem) {\n        ownsTriggerFocusRef.current = false;\n        return;\n      }\n\n      setFocusedValue(fallbackItem.value);\n      triggerRefs.current.get(fallbackItem.value)?.focus();\n    }, [enabledItems, focusedValue, items, openValue]);\n\n    const handleToggle = (item: BaseAccordionItem) => {\n      if (item.disabled) return;\n\n      const isOpen = openValue === item.value;\n      if (isOpen && !allowCollapse) {\n        onValueChange?.(item.value);\n        return;\n      }\n\n      const nextOpenValue = isOpen ? undefined : item.value;\n      if (!isControlled) {\n        setUncontrolledValue(nextOpenValue);\n      }\n      onValueChange?.(nextOpenValue);\n    };\n\n    const moveFocus = (\n      event: KeyboardEvent<HTMLButtonElement>,\n      item: BaseAccordionItem,\n      step: number | 'first' | 'last',\n    ) => {\n      if (!keyboardNavigation || enabledItems.length === 0) return;\n\n      let targetItem: BaseAccordionItem | undefined;\n      if (step === 'first') {\n        targetItem = enabledItems[0];\n      } else if (step === 'last') {\n        targetItem = enabledItems[enabledItems.length - 1];\n      } else {\n        const currentIndex = enabledItems.findIndex(\n          (enabledItem) => enabledItem.value === item.value,\n        );\n        const nextIndex =\n          (currentIndex + step + enabledItems.length) % enabledItems.length;\n        targetItem = enabledItems[nextIndex];\n      }\n\n      if (!targetItem) return;\n      event.preventDefault();\n      setFocusedValue(targetItem.value);\n      triggerRefs.current.get(targetItem.value)?.focus();\n    };\n\n    const handleKeyDown = (\n      event: KeyboardEvent<HTMLButtonElement>,\n      item: BaseAccordionItem,\n    ) => {\n      if (item.disabled) return;\n      if (event.key === 'ArrowDown') {\n        moveFocus(event, item, 1);\n      } else if (event.key === 'ArrowUp') {\n        moveFocus(event, item, -1);\n      } else if (event.key === 'Home') {\n        moveFocus(event, item, 'first');\n      } else if (event.key === 'End') {\n        moveFocus(event, item, 'last');\n      }\n    };\n\n    const isOwnedTrigger = (target: EventTarget | null) =>\n      target instanceof HTMLElement &&\n      target.dataset.accordionOwner === rootId;\n\n    const handleFocusCapture = (event: FocusEvent<HTMLDivElement>) => {\n      if (isOwnedTrigger(event.target)) {\n        ownsTriggerFocusRef.current = true;\n      }\n      onFocusCapture?.(event);\n    };\n\n    const handleBlurCapture = (event: FocusEvent<HTMLDivElement>) => {\n      if (\n        isOwnedTrigger(event.target) &&\n        !isOwnedTrigger(event.relatedTarget)\n      ) {\n        ownsTriggerFocusRef.current = false;\n      }\n      onBlurCapture?.(event);\n    };\n\n    return (\n      <div\n        {...componentAttributes}\n        {...accordionProps}\n        ref={ref}\n        id={id}\n        dir={layerDirection}\n        data-monkeys-component=\"accordion\"\n        data-slot=\"root\"\n        data-state={openItem ? 'open' : 'closed'}\n        data-collapsible={allowCollapse}\n        data-keyboard-navigation={keyboardNavigation}\n        className={cn(theme.slots.accordionRoot, classNames?.root, className)}\n        style={{\n          ...theme.styles.accordion,\n          ...style,\n        }}\n        onFocusCapture={handleFocusCapture}\n        onBlurCapture={handleBlurCapture}\n      >\n        {items.map((item, index) => {\n          const itemId = idFragments[index];\n          const triggerId = `${rootId}-${itemId}-trigger`;\n          const panelId = `${rootId}-${itemId}-panel`;\n          const open = item.value === openValue;\n          const state = open ? 'open' : 'closed';\n\n          return (\n            <div\n              {...componentAttributes}\n              key={item.value}\n              dir={layerDirection}\n              data-monkeys-component=\"accordion\"\n              data-slot=\"item\"\n              data-state={state}\n              data-disabled={item.disabled || undefined}\n              className={cn(theme.slots.accordionItem, classNames?.item)}\n            >\n              <button\n                {...componentAttributes}\n                ref={(node) => {\n                  if (node) {\n                    triggerRefs.current.set(item.value, node);\n                  } else {\n                    triggerRefs.current.delete(item.value);\n                  }\n                }}\n                id={triggerId}\n                type=\"button\"\n                aria-expanded={open}\n                aria-controls={panelId}\n                aria-disabled={item.disabled || undefined}\n                disabled={item.disabled}\n                dir={layerDirection}\n                data-accordion-owner={rootId}\n                data-monkeys-component=\"accordion\"\n                data-slot=\"trigger\"\n                data-state={state}\n                data-disabled={item.disabled || undefined}\n                className={cn(\n                  theme.slots.accordionTrigger,\n                  classNames?.trigger,\n                )}\n                onFocus={() => setFocusedValue(item.value)}\n                onKeyDown={(event) => handleKeyDown(event, item)}\n                onClick={() => handleToggle(item)}\n              >\n                <span className=\"min-w-0 truncate\">{item.title}</span>\n                <span\n                  aria-hidden=\"true\"\n                  data-monkeys-component=\"accordion\"\n                  data-slot=\"trigger-icon\"\n                  data-state={state}\n                  className={cn(\n                    theme.slots.accordionTriggerIcon,\n                    open && 'rotate-[225deg]',\n                    classNames?.triggerIcon,\n                  )}\n                />\n              </button>\n              {open ? (\n                <div\n                  {...componentAttributes}\n                  id={panelId}\n                  role=\"region\"\n                  aria-labelledby={triggerId}\n                  dir={layerDirection}\n                  data-monkeys-component=\"accordion\"\n                  data-slot=\"panel\"\n                  data-state=\"open\"\n                  className={cn(\n                    theme.slots.accordionPanel,\n                    classNames?.panel,\n                  )}\n                >\n                  {hasRenderableNode(item.content) ? item.content : null}\n                </div>\n              ) : null}\n            </div>\n          );\n        })}\n      </div>\n    );\n  },\n);\n","import { forwardRef, useEffect, useState } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseAvatarProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst sizeClassNames = {\n  sm: 'h-7 w-7 text-xs',\n  md: 'h-9 w-9 text-sm',\n  lg: 'h-12 w-12 text-base',\n} as const;\n\nconst statusClassNames = {\n  online: 'bg-[hsl(var(--success,142_72%_29%))]',\n  busy: 'bg-[hsl(var(--warning,45_93%_47%))]',\n  offline: 'bg-muted-foreground',\n  neutral: 'bg-muted-foreground',\n} as const;\n\nfunction isStatusPreset(status: unknown): status is keyof typeof statusClassNames {\n  return typeof status === 'string' && status in statusClassNames;\n}\n\nfunction getInitials(name?: string) {\n  if (!name) return undefined;\n  const words = name.trim().split(/\\s+/).filter(Boolean);\n  if (!words.length) return undefined;\n  return words\n    .slice(0, 2)\n    .map((word) => word[0]?.toUpperCase())\n    .join('');\n}\n\nexport const BaseAvatar = forwardRef<HTMLDivElement, BaseAvatarProps>(\n  function BaseAvatar(\n    {\n      src,\n      alt,\n      name,\n      initials,\n      icon,\n      status,\n      size = 'md',\n      appearance,\n      className,\n      classNames,\n      style,\n      children,\n      title,\n      ...avatarProps\n    },\n    ref,\n  ) {\n    if (size !== 'sm' && size !== 'md' && size !== 'lg') {\n      throw new TypeError('BaseAvatar size must be \"sm\", \"md\", or \"lg\".');\n    }\n\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const [failedSrc, setFailedSrc] = useState<string>();\n    const imageFailed = Boolean(src && failedSrc === src);\n    const showImage = Boolean(src) && !imageFailed;\n    const generatedInitials = getInitials(name);\n    const fallbackKind = hasRenderableNode(children)\n      ? 'children'\n      : hasRenderableNode(initials)\n        ? 'initials'\n        : hasRenderableNode(generatedInitials)\n          ? 'name'\n          : hasRenderableNode(icon)\n            ? 'icon'\n            : 'default';\n    const fallback = hasRenderableNode(children)\n      ? children\n      : hasRenderableNode(initials)\n        ? initials\n        : hasRenderableNode(generatedInitials)\n          ? generatedInitials\n          : hasRenderableNode(icon)\n            ? icon\n            : '?';\n    const statusKind = isStatusPreset(status)\n      ? status\n      : hasRenderableNode(status)\n        ? 'custom'\n        : undefined;\n\n    useEffect(() => {\n      setFailedSrc(undefined);\n    }, [src]);\n\n    return (\n      <div\n        {...componentAttributes}\n        {...avatarProps}\n        ref={ref}\n        title={title ?? name}\n        data-monkeys-component=\"avatar\"\n        data-slot=\"root\"\n        data-state={showImage ? 'image' : 'fallback'}\n        data-size={size}\n        data-status={statusKind}\n        data-fallback={showImage ? undefined : fallbackKind}\n        className={cn(\n          theme.slots.avatarRoot,\n          sizeClassNames[size],\n          classNames?.root,\n          className,\n        )}\n        style={{\n          ...theme.styles.avatar,\n          ...style,\n        }}\n      >\n        {showImage ? (\n          <img\n            src={src}\n            alt={alt ?? name ?? ''}\n            data-slot=\"image\"\n            data-size={size}\n            data-status={statusKind}\n            className={cn(theme.slots.avatarImage, classNames?.image)}\n            onError={() => setFailedSrc(src)}\n          />\n        ) : (\n          <span\n            data-slot=\"fallback\"\n            data-size={size}\n            data-status={statusKind}\n            data-fallback={fallbackKind}\n            className={cn(\n              theme.slots.avatarFallback,\n              classNames?.fallback,\n              classNames?.text,\n            )}\n          >\n            {fallback}\n          </span>\n        )}\n\n        {isStatusPreset(status) ? (\n          <span\n            aria-hidden=\"true\"\n            data-slot=\"status\"\n            data-size={size}\n            data-status={status}\n            className={cn(\n              theme.slots.avatarStatus,\n              statusClassNames[status],\n              classNames?.status,\n            )}\n          />\n        ) : hasRenderableNode(status) ? (\n          <span\n            data-slot=\"status\"\n            data-size={size}\n            data-status=\"custom\"\n            className={cn(theme.slots.avatarStatus, classNames?.status)}\n          >\n            {status}\n          </span>\n        ) : null}\n      </div>\n    );\n  },\n);\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport { resolveBaseAppearance } from './theme';\nimport type { BaseAspectRatioProps } from './types';\nimport { cn } from './utils';\n\nfunction resolveAspectRatio(value: number) {\n  if (!Number.isFinite(value) || value <= 0) {\n    throw new RangeError('BaseAspectRatio ratio must be a positive finite number.');\n  }\n  return String(value);\n}\n\nexport const BaseAspectRatio = forwardRef<\n  HTMLDivElement,\n  BaseAspectRatioProps\n>(function BaseAspectRatio(\n  {\n    children,\n    ratio = 16 / 9,\n    appearance,\n    className,\n    classNames,\n    style,\n    ...aspectRatioProps\n  },\n  ref,\n) {\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n\n  return (\n    <div\n      {...componentAttributes}\n      {...aspectRatioProps}\n      ref={ref}\n      data-monkeys-component=\"aspect-ratio\"\n      data-slot=\"root\"\n      data-ratio={ratio}\n      className={cn(theme.slots.aspectRatioRoot, classNames?.root, className)}\n      style={{\n        ...theme.styles.aspectRatio,\n        aspectRatio: resolveAspectRatio(ratio),\n        ...style,\n      }}\n    >\n      {children}\n    </div>\n  );\n});\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseBadgeProps } from './types';\nimport { getBaseBadgeToneClassName, resolveBaseAppearance } from './theme';\nimport { cn } from './utils';\n\nexport const BaseBadge = forwardRef<HTMLSpanElement, BaseBadgeProps>(\n  function BaseBadge(\n    {\n      children,\n      label,\n      icon,\n      tone,\n      appearance,\n      variant,\n      density,\n      state,\n      className,\n      classNames,\n      style,\n      ...badgeProps\n    },\n    ref,\n  ) {\n    if (\n      tone !== undefined &&\n      tone !== 'default' &&\n      tone !== 'primary' &&\n      tone !== 'success' &&\n      tone !== 'warning' &&\n      tone !== 'danger' &&\n      tone !== 'muted'\n    ) {\n      throw new TypeError(\n        'BaseBadge tone must be \"default\", \"primary\", \"success\", \"warning\", \"danger\", or \"muted\".',\n      );\n    }\n\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance({\n      ...resolvedAppearance,\n      variant,\n      density,\n      state,\n    });\n    const resolvedLabel = children ?? label;\n    const resolvedTone = tone ?? 'default';\n\n    return (\n      <span\n        {...componentAttributes}\n        {...badgeProps}\n        ref={ref}\n        data-monkeys-component=\"badge\"\n        data-slot=\"root\"\n        data-tone={resolvedTone}\n        data-variant={theme.variant}\n        data-density={theme.density}\n        data-state={theme.state}\n        className={cn(\n          theme.slots.badgeBase,\n          getBaseBadgeToneClassName(theme, tone),\n          classNames?.root,\n          className,\n        )}\n        style={{\n          ...theme.styles.badge,\n          ...style,\n        }}\n      >\n        {icon ? (\n          <span\n            data-slot=\"icon\"\n            data-tone={resolvedTone}\n            className={cn(theme.slots.badgeIcon, classNames?.icon)}\n          >\n            {icon}\n          </span>\n        ) : null}\n        {resolvedLabel !== undefined && resolvedLabel !== null ? (\n          <span\n            data-slot=\"label\"\n            data-tone={resolvedTone}\n            className={cn(theme.slots.badgeLabel, classNames?.label)}\n          >\n            {resolvedLabel}\n          </span>\n        ) : null}\n      </span>\n    );\n  },\n);\n","import type { MouseEvent } from 'react';\n\nimport type { BaseBreadcrumbItem, BaseBreadcrumbProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn } from './utils';\n\nfunction isCurrentItem(item: BaseBreadcrumbItem, index: number, length: number) {\n  return item.current ?? index === length - 1;\n}\n\nexport function BaseBreadcrumb({\n  items = [],\n  separator = '/',\n  appearance,\n  className,\n  classNames,\n  style,\n  onSelect,\n  ...breadcrumbProps\n}: BaseBreadcrumbProps) {\n  const theme = resolveBaseAppearance(appearance);\n\n  const handleClick = (\n    event: MouseEvent<HTMLAnchorElement | HTMLButtonElement>,\n    item: BaseBreadcrumbItem,\n    index: number,\n  ) => {\n    if (item.disabled) {\n      event.preventDefault();\n      return;\n    }\n    onSelect?.(item, index);\n  };\n\n  return (\n    <nav\n      {...breadcrumbProps}\n      aria-label={breadcrumbProps['aria-label'] ?? 'Breadcrumb'}\n      className={cn(theme.slots.breadcrumbRoot, classNames?.root, className)}\n      style={{\n        ...theme.styles.breadcrumb,\n        ...style,\n      }}\n    >\n      <ol className={cn(theme.slots.breadcrumbList, classNames?.list)}>\n        {items.map((item, index) => {\n          const current = isCurrentItem(item, index, items.length);\n          return (\n            <li\n              key={`${index}-${item.value ?? item.href ?? String(item.label)}`}\n              className={cn(theme.slots.breadcrumbItem, classNames?.item)}\n            >\n              {current ? (\n                <span\n                  aria-current=\"page\"\n                  className={cn(theme.slots.breadcrumbCurrent, classNames?.current)}\n                >\n                  {item.label}\n                </span>\n              ) : item.href ? (\n                <a\n                  href={item.href}\n                  aria-disabled={item.disabled || undefined}\n                  className={cn(theme.slots.breadcrumbLink, classNames?.link)}\n                  onClick={(event) => handleClick(event, item, index)}\n                >\n                  {item.label}\n                </a>\n              ) : (\n                <button\n                  type=\"button\"\n                  disabled={item.disabled}\n                  className={cn(\n                    theme.slots.breadcrumbLink,\n                    'bg-transparent p-0',\n                    classNames?.link,\n                  )}\n                  onClick={(event) => handleClick(event, item, index)}\n                >\n                  {item.label}\n                </button>\n              )}\n              {index < items.length - 1 ? (\n                <span\n                  aria-hidden=\"true\"\n                  className={cn(\n                    theme.slots.breadcrumbSeparator,\n                    classNames?.separator,\n                  )}\n                >\n                  {separator}\n                </span>\n              ) : null}\n            </li>\n          );\n        })}\n      </ol>\n    </nav>\n  );\n}\n","import { forwardRef } from 'react';\nimport type { MouseEvent } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseButtonProps } from './types';\nimport {\n  getBaseButtonToneClassName,\n  resolveBaseAppearance,\n} from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst buttonSizeClassNames = {\n  sm: 'h-8 px-2.5 text-xs',\n  md: 'h-9 px-3 text-sm',\n  lg: 'h-10 px-3.5 text-base',\n} as const;\n\nconst iconOnlySizeClassNames = {\n  sm: 'h-8 w-8 px-0',\n  md: 'h-9 w-9 px-0',\n  lg: 'h-10 w-10 px-0',\n} as const;\n\nconst iconSizeClassNames = {\n  sm: 'h-3.5 w-3.5',\n  md: 'h-4 w-4',\n  lg: 'h-5 w-5',\n} as const;\n\nfunction nonEmptyText(value: string | undefined) {\n  return typeof value === 'string' && value.trim() ? value : undefined;\n}\n\nfunction LoadingIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-full w-full motion-safe:animate-spin motion-reduce:animate-none\"\n      fill=\"none\"\n    >\n      <circle\n        cx=\"12\"\n        cy=\"12\"\n        r=\"9\"\n        className=\"opacity-25\"\n        stroke=\"currentColor\"\n        strokeWidth=\"3\"\n      />\n      <path\n        className=\"opacity-75\"\n        fill=\"currentColor\"\n        d=\"M12 3a9 9 0 0 1 9 9h-3a6 6 0 0 0-6-6V3Z\"\n      />\n    </svg>\n  );\n}\n\nexport const BaseButton = forwardRef<HTMLButtonElement, BaseButtonProps>(\n  function BaseButton(\n    {\n      children,\n      label,\n      icon,\n      endIcon,\n      type = 'button',\n      title,\n      ariaLabel,\n      tone,\n      size,\n      active = false,\n      iconOnly = false,\n      disabled = false,\n      loading = false,\n      stopPropagation = false,\n      appearance,\n      variant,\n      density,\n      state,\n      className,\n      classNames,\n      style,\n      onClick,\n      'aria-label': nativeAriaLabel,\n      ...buttonProps\n    },\n    ref,\n  ) {\n    for (const [name, value] of [\n      ['active', active],\n      ['iconOnly', iconOnly],\n      ['disabled', disabled],\n      ['loading', loading],\n      ['stopPropagation', stopPropagation],\n    ] as const) {\n      if (typeof value !== 'boolean') {\n        throw new TypeError(`BaseButton ${name} must be a boolean.`);\n      }\n    }\n    if (size !== undefined && size !== 'sm' && size !== 'md' && size !== 'lg') {\n      throw new TypeError('BaseButton size must be \"sm\", \"md\", or \"lg\".');\n    }\n    if (\n      tone !== undefined &&\n      tone !== 'default' &&\n      tone !== 'primary' &&\n      tone !== 'success' &&\n      tone !== 'warning' &&\n      tone !== 'danger' &&\n      tone !== 'muted'\n    ) {\n      throw new TypeError(\n        'BaseButton tone must be \"default\", \"primary\", \"success\", \"warning\", \"danger\", or \"muted\".',\n      );\n    }\n\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance({\n      ...resolvedAppearance,\n      variant,\n      density,\n      state,\n    });\n    const resolvedLabel = children ?? label;\n    const hasLabel =\n      hasRenderableNode(resolvedLabel) &&\n      (typeof resolvedLabel !== 'string' || Boolean(resolvedLabel.trim()));\n    const explicitAriaLabel =\n      nonEmptyText(ariaLabel) ?? nonEmptyText(nativeAriaLabel);\n    const labelText =\n      typeof resolvedLabel === 'string'\n        ? nonEmptyText(resolvedLabel)\n        : undefined;\n    const resolvedTitle = nonEmptyText(title);\n    if (iconOnly && !hasLabel && !explicitAriaLabel && !resolvedTitle) {\n      throw new TypeError(\n        'BaseButton iconOnly requires ariaLabel, aria-label, title, or a renderable label.',\n      );\n    }\n    const resolvedAriaLabel =\n      explicitAriaLabel ??\n      labelText ??\n      resolvedTitle;\n    const resolvedDisabled = disabled || loading;\n    const resolvedTone = tone ?? 'default';\n    const resolvedState = state ?? (loading\n      ? 'loading'\n      : disabled\n        ? 'disabled'\n        : active\n          ? 'active'\n          : 'idle');\n\n    const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n      if (stopPropagation) {\n        event.stopPropagation();\n      }\n      if (resolvedDisabled) return;\n      onClick?.(event);\n    };\n\n    return (\n      <button\n        {...componentAttributes}\n        {...buttonProps}\n        ref={ref}\n        type={type}\n        title={title}\n        aria-label={resolvedAriaLabel}\n        aria-pressed={active || undefined}\n        aria-busy={loading || undefined}\n        data-variant={theme.variant}\n        data-density={theme.density}\n        disabled={resolvedDisabled}\n        data-monkeys-component=\"button\"\n        data-slot=\"root\"\n        data-state={resolvedState}\n        data-tone={resolvedTone}\n        data-size={size}\n        data-active={active || undefined}\n        data-loading={loading || undefined}\n        data-disabled={resolvedDisabled || undefined}\n        data-icon-only={iconOnly || undefined}\n        className={cn(\n          theme.slots.buttonBase,\n          iconOnly && theme.slots.buttonIconOnly,\n          size && buttonSizeClassNames[size],\n          iconOnly && size && iconOnlySizeClassNames[size],\n          getBaseButtonToneClassName(theme, tone, active),\n          resolvedDisabled && theme.slots.buttonDisabled,\n          classNames?.root,\n          className,\n        )}\n        style={{\n          ...theme.styles.button,\n          ...(active ? theme.styles.buttonActive : undefined),\n          ...(resolvedDisabled ? theme.styles.buttonDisabled : undefined),\n          ...style,\n        }}\n        onClick={handleClick}\n      >\n        {loading ? (\n          <span\n            data-slot=\"icon\"\n            data-state={resolvedState}\n            data-tone={resolvedTone}\n            data-size={size}\n            className={cn(\n              theme.slots.buttonIcon,\n              size && iconSizeClassNames[size],\n              classNames?.icon,\n            )}\n          >\n            <LoadingIcon />\n          </span>\n        ) : icon ? (\n          <span\n            data-slot=\"icon\"\n            data-state={resolvedState}\n            data-tone={resolvedTone}\n            data-size={size}\n            className={cn(\n              theme.slots.buttonIcon,\n              size && iconSizeClassNames[size],\n              classNames?.icon,\n            )}\n          >\n            {icon}\n          </span>\n        ) : null}\n        {iconOnly ? (\n          hasRenderableNode(resolvedLabel) ? (\n            <span\n              data-slot=\"label\"\n              data-state={resolvedState}\n              data-tone={resolvedTone}\n              data-size={size}\n              className=\"sr-only\"\n            >\n              {resolvedLabel}\n            </span>\n          ) : null\n        ) : hasRenderableNode(resolvedLabel) ? (\n          <span\n            data-slot=\"label\"\n            data-state={resolvedState}\n            data-tone={resolvedTone}\n            data-size={size}\n            className={cn(theme.slots.buttonLabel, classNames?.label)}\n          >\n            {resolvedLabel}\n          </span>\n        ) : null}\n        {!loading && endIcon ? (\n          <span\n            data-slot=\"end-icon\"\n            data-state={resolvedState}\n            data-tone={resolvedTone}\n            data-size={size}\n            className={cn(\n              theme.slots.buttonIcon,\n              size && iconSizeClassNames[size],\n              classNames?.icon,\n              classNames?.endIcon,\n            )}\n          >\n            {endIcon}\n          </span>\n        ) : null}\n      </button>\n    );\n  },\n);\n","import {\n  createContext,\n  useCallback,\n  useContext,\n  useEffect,\n  useRef,\n} from 'react';\n\nexport type BaseFieldControlValue = string | boolean;\n\nexport function resolveBaseFieldValidationResult(result: unknown) {\n  if (result === null) return null;\n  if (typeof result === 'string' && result.trim().length > 0) return result;\n  throw new TypeError(\n    'BaseField validate must return a non-empty error string or null.',\n  );\n}\n\ninterface BaseFieldContextValue {\n  invalid: boolean;\n  registerControl: (controlKey: symbol) => () => void;\n  notifyBlur: (value: BaseFieldControlValue) => void;\n  notifyChange: (value: BaseFieldControlValue) => void;\n}\n\nexport const BaseFieldContext = createContext<BaseFieldContextValue | null>(\n  null,\n);\n\nexport function useBaseFieldControl() {\n  const context = useContext(BaseFieldContext);\n  const controlKeyRef = useRef<symbol | null>(null);\n  if (controlKeyRef.current === null) {\n    controlKeyRef.current = Symbol('BaseFieldControl');\n  }\n\n  const registerControl = context?.registerControl;\n  useEffect(() => {\n    if (!registerControl || controlKeyRef.current === null) return undefined;\n    return registerControl(controlKeyRef.current);\n  }, [registerControl]);\n\n  const notifyBlur = context?.notifyBlur;\n  const notifyChange = context?.notifyChange;\n\n  return {\n    invalid: context?.invalid ?? false,\n    notifyBlur: useCallback(\n      (value: BaseFieldControlValue) => notifyBlur?.(value),\n      [notifyBlur],\n    ),\n    notifyChange: useCallback(\n      (value: BaseFieldControlValue) => notifyChange?.(value),\n      [notifyChange],\n    ),\n  };\n}\n","import {\n  forwardRef,\n  useCallback,\n  useEffect,\n  useRef,\n  useState,\n  type ChangeEvent,\n  type Ref,\n} from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseCheckboxProps } from './types';\nimport { useBaseFieldControl } from './internal/baseFieldContext';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasNonEmptyRenderableNode, hasRenderableNode } from './utils';\n\nconst boxSizeClassNames = {\n  sm: 'h-3.5 w-3.5',\n  md: 'h-4 w-4',\n  lg: 'h-5 w-5',\n} as const;\n\nconst indicatorSizeClassNames = {\n  sm: 'text-[10px]',\n  md: 'text-[11px]',\n  lg: 'text-xs',\n} as const;\n\nfunction setRefs<TElement>(\n  element: TElement | null,\n  ...refs: Array<Ref<TElement> | undefined>\n) {\n  for (const ref of refs) {\n    if (!ref) continue;\n    if (typeof ref === 'function') {\n      ref(element);\n      continue;\n    }\n    (ref as { current: TElement | null }).current = element;\n  }\n}\n\nexport const BaseCheckbox = forwardRef<HTMLInputElement, BaseCheckboxProps>(\n  function BaseCheckbox(\n    {\n      label,\n      description,\n      indeterminate = false,\n      invalid = false,\n      disabled = false,\n      controlSize,\n      appearance,\n      className,\n      classNames,\n      style,\n      checked,\n      defaultChecked,\n      onBlur,\n      onChange,\n      'aria-invalid': nativeAriaInvalid,\n      ...checkboxProps\n    },\n    forwardedRef,\n  ) {\n    for (const [name, value] of [\n      ['indeterminate', indeterminate],\n      ['invalid', invalid],\n      ['disabled', disabled],\n    ] as const) {\n      if (typeof value !== 'boolean') {\n        throw new TypeError(`BaseCheckbox ${name} must be a boolean.`);\n      }\n    }\n    if (\n      controlSize !== undefined &&\n      controlSize !== 'sm' &&\n      controlSize !== 'md' &&\n      controlSize !== 'lg'\n    ) {\n      throw new TypeError(\n        'BaseCheckbox controlSize must be \"sm\", \"md\", or \"lg\".',\n      );\n    }\n\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const fieldControl = useBaseFieldControl();\n    const resolvedInvalid = invalid || fieldControl.invalid;\n    const hasLabel = hasRenderableNode(label);\n    const hasDescription = hasNonEmptyRenderableNode(description);\n    const inputRef = useRef<HTMLInputElement | null>(null);\n    const indeterminateRef = useRef(indeterminate);\n    indeterminateRef.current = indeterminate;\n    const [uncontrolledChecked, setUncontrolledChecked] = useState(\n      defaultChecked ?? false,\n    );\n    const isControlled = checked !== undefined;\n    const resolvedChecked = Boolean(isControlled ? checked : uncontrolledChecked);\n    const active = indeterminate || resolvedChecked;\n    const state = indeterminate\n      ? 'mixed'\n      : resolvedChecked\n        ? 'checked'\n        : 'unchecked';\n\n    const setInputRef = useCallback(\n      (element: HTMLInputElement | null) => {\n        inputRef.current = element;\n        if (element) element.indeterminate = indeterminateRef.current;\n        setRefs(element, forwardedRef);\n      },\n      [forwardedRef],\n    );\n\n    useEffect(() => {\n      if (inputRef.current) {\n        inputRef.current.indeterminate = indeterminate;\n      }\n    }, [indeterminate]);\n\n    const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n      if (disabled) return;\n      if (!isControlled) {\n        setUncontrolledChecked(event.currentTarget.checked);\n      }\n      onChange?.(event);\n      fieldControl.notifyChange(event.currentTarget.checked);\n      if (inputRef.current) {\n        inputRef.current.indeterminate = indeterminate;\n      }\n    };\n\n    return (\n      <label\n        {...componentAttributes}\n        data-monkeys-component=\"checkbox\"\n        data-slot=\"root\"\n        data-state={state}\n        data-size={controlSize}\n        data-invalid={resolvedInvalid || undefined}\n        data-disabled={disabled || undefined}\n        className={cn(\n          theme.slots.checkboxRoot,\n          !hasDescription && 'items-center',\n          disabled && theme.slots.checkboxDisabled,\n          classNames?.root,\n          className,\n        )}\n        style={{\n          ...theme.styles.checkboxRoot,\n          ...style,\n        }}\n      >\n        <span\n          data-slot=\"box\"\n          data-state={state}\n          data-size={controlSize}\n          className={cn(\n            theme.slots.checkboxBox,\n            !hasDescription && 'mt-0',\n            active && theme.slots.checkboxBoxChecked,\n            resolvedInvalid && theme.slots.checkboxBoxInvalid,\n            controlSize && boxSizeClassNames[controlSize],\n            classNames?.box,\n          )}\n          style={{\n            ...theme.styles.checkboxBox,\n          }}\n        >\n          <input\n            {...checkboxProps}\n            ref={setInputRef}\n            type=\"checkbox\"\n            disabled={disabled}\n            checked={checked}\n            defaultChecked={defaultChecked}\n            aria-invalid={nativeAriaInvalid ?? (resolvedInvalid || undefined)}\n            aria-checked={indeterminate ? 'mixed' : resolvedChecked}\n            data-slot=\"input\"\n            data-state={state}\n            data-size={controlSize}\n            data-invalid={resolvedInvalid || undefined}\n            data-disabled={disabled || undefined}\n            className={cn(theme.slots.checkboxInput, classNames?.input)}\n            onBlur={(event) => {\n              onBlur?.(event);\n              fieldControl.notifyBlur(event.currentTarget.checked);\n            }}\n            onChange={handleChange}\n          />\n          {active ? (\n            <span\n              aria-hidden=\"true\"\n              data-slot=\"indicator\"\n              data-state={state}\n              data-size={controlSize}\n              className={cn(\n                theme.slots.checkboxIndicator,\n                controlSize && indicatorSizeClassNames[controlSize],\n                classNames?.indicator,\n              )}\n            >\n              {indeterminate ? '–' : '✓'}\n            </span>\n          ) : null}\n        </span>\n        {hasLabel || hasDescription ? (\n          <span\n            data-slot=\"content\"\n            className={cn(theme.slots.checkboxContent, classNames?.content)}\n          >\n            {hasLabel ? (\n              <span\n                data-slot=\"label\"\n                className={cn(theme.slots.checkboxLabel, classNames?.label)}\n              >\n                {label}\n              </span>\n            ) : null}\n            {hasDescription ? (\n              <span\n                data-slot=\"description\"\n                className={cn(\n                  theme.slots.checkboxDescription,\n                  classNames?.description,\n                )}\n              >\n                {description}\n              </span>\n            ) : null}\n          </span>\n        ) : null}\n      </label>\n    );\n  },\n);\n","import { forwardRef, type Ref } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport { resolveBaseAppearance } from './theme';\nimport type { BaseCodeProps } from './types';\nimport { cn } from './utils';\n\nexport const BaseCode = forwardRef<HTMLElement, BaseCodeProps>(function BaseCode(\n  {\n    children,\n    display = 'inline',\n    appearance,\n    className,\n    classNames,\n    style,\n    ...codeProps\n  },\n  ref,\n) {\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n\n  if (display === 'block') {\n    return (\n      <pre\n        {...componentAttributes}\n        {...codeProps}\n        ref={ref as Ref<HTMLPreElement>}\n        data-monkeys-component=\"code\"\n        data-slot=\"root\"\n        data-display=\"block\"\n        className={cn(theme.slots.codeBlock, classNames?.root, className)}\n        style={{\n          ...theme.styles.code,\n          ...style,\n        }}\n      >\n        <code\n          data-slot=\"code\"\n          className={cn(theme.slots.codeContent, classNames?.code)}\n          style={theme.styles.codeContent}\n        >\n          {children}\n        </code>\n      </pre>\n    );\n  }\n\n  return (\n    <code\n      {...componentAttributes}\n      {...codeProps}\n      ref={ref as Ref<HTMLElement>}\n      data-monkeys-component=\"code\"\n      data-slot=\"root\"\n      data-display=\"inline\"\n      className={cn(\n        theme.slots.codeInline,\n        theme.slots.codeContent,\n        classNames?.root,\n        classNames?.code,\n        className,\n      )}\n      style={{\n        ...theme.styles.code,\n        ...theme.styles.codeContent,\n        ...style,\n      }}\n    >\n      {children}\n    </code>\n  );\n});\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport {\n  resolveBaseAppearance,\n  resolveBaseLayoutLength,\n} from './theme';\nimport type { BaseContainerProps } from './types';\nimport { cn } from './utils';\n\nexport const BaseContainer = forwardRef<HTMLDivElement, BaseContainerProps>(\n  function BaseContainer(\n    {\n      children,\n      maxWidth = '80rem',\n      padding = '1rem',\n      appearance,\n      className,\n      classNames,\n      style,\n      ...containerProps\n    },\n    ref,\n  ) {\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const resolvedMaxWidth = resolveBaseLayoutLength(\n      'BaseContainer',\n      'maxWidth',\n      maxWidth,\n    );\n    const resolvedPadding = resolveBaseLayoutLength(\n      'BaseContainer',\n      'padding',\n      padding,\n    );\n\n    return (\n      <div\n        {...componentAttributes}\n        {...containerProps}\n        ref={ref}\n        data-monkeys-component=\"container\"\n        data-slot=\"root\"\n        className={cn(theme.slots.containerRoot, classNames?.root, className)}\n        style={{\n          ...theme.styles.container,\n          maxWidth: resolvedMaxWidth,\n          paddingInline: resolvedPadding,\n          ...style,\n        }}\n      >\n        {children}\n      </div>\n    );\n  },\n);\n","import { useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n  useMonkeysEnvironment,\n  useMonkeysPortalOptions,\n} from '../../provider/context';\nimport type { BasePortalContainer, BasePortalProps } from './types';\n\nfunction resolveContainerValue(\n  value: BasePortalContainer,\n  source: string,\n): Element | null {\n  const candidate = typeof value === 'function' ? value() : value;\n  if (candidate === null) return null;\n  if (\n    !candidate ||\n    typeof candidate !== 'object' ||\n    candidate.nodeType !== 1\n  ) {\n    throw new TypeError(`${source} must resolve to an Element or null.`);\n  }\n  return candidate;\n}\n\ninterface ResolveBasePortalContainerOptions {\n  explicitProvided: boolean;\n  explicitContainer?: BasePortalContainer;\n  providerProvided: boolean;\n  providerContainer?: BasePortalContainer;\n  getDocument?: () => Document | null;\n}\n\nexport function resolveBasePortalContainer({\n  explicitProvided,\n  explicitContainer,\n  providerProvided,\n  providerContainer,\n  getDocument,\n}: ResolveBasePortalContainerOptions): Element | null {\n  if (explicitProvided) {\n    return resolveContainerValue(\n      explicitContainer as BasePortalContainer,\n      'BasePortal container',\n    );\n  }\n  if (providerProvided) {\n    return resolveContainerValue(\n      providerContainer as BasePortalContainer,\n      'MonkeysProvider portal.container',\n    );\n  }\n  if (!getDocument) return null;\n\n  const ownerDocument = getDocument();\n  if (ownerDocument === null) return null;\n  if (\n    !ownerDocument ||\n    typeof ownerDocument !== 'object' ||\n    !('body' in ownerDocument)\n  ) {\n    throw new TypeError(\n      'MonkeysProvider environment.getDocument must resolve to a Document or null.',\n    );\n  }\n  return resolveContainerValue(\n    ownerDocument.body,\n    'MonkeysProvider environment.getDocument().body',\n  );\n}\n\nexport function BasePortal(props: BasePortalProps) {\n  const environment = useMonkeysEnvironment();\n  const portalOptions = useMonkeysPortalOptions();\n  const [mounted, setMounted] = useState(false);\n\n  useEffect(() => {\n    setMounted(true);\n  }, []);\n\n  if (props.disabled !== undefined && typeof props.disabled !== 'boolean') {\n    throw new TypeError('BasePortal disabled must be a boolean.');\n  }\n  if (props.inline !== undefined && typeof props.inline !== 'boolean') {\n    throw new TypeError('BasePortal inline must be a boolean.');\n  }\n\n  const disabled = props.disabled ?? portalOptions.disabled ?? false;\n  if (!mounted || disabled || props.inline) {\n    return <>{props.children}</>;\n  }\n\n  const container = resolveBasePortalContainer({\n    explicitProvided: props.container !== undefined,\n    explicitContainer: props.container,\n    providerProvided: portalOptions.container !== undefined,\n    providerContainer: portalOptions.container,\n    getDocument: environment.getDocument,\n  });\n\n  return container\n    ? createPortal(props.children, container)\n    : <>{props.children}</>;\n}\n","import { useEffect, useState, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n  useMonkeysEnvironment,\n  useMonkeysPortalOptions,\n  type MonkeysPortalContainer,\n} from '../../../provider/context';\nimport { resolveBasePortalContainer } from '../BasePortal';\n\ninterface ResolveBaseOverlayPortalStateOptions {\n  mounted: boolean;\n  explicitDisabled?: boolean;\n  explicitContainer?: MonkeysPortalContainer;\n  providerDisabled?: boolean;\n  providerContainer?: MonkeysPortalContainer;\n  getDocument?: () => Document | null;\n}\n\ninterface BaseOverlayPortalInlineState {\n  mounted: boolean;\n  disabled: boolean;\n  shouldPortal: false;\n  container: null;\n  radixPortalProps: undefined;\n}\n\ninterface BaseOverlayPortalReadyState {\n  mounted: true;\n  disabled: false;\n  shouldPortal: true;\n  container: Element;\n  radixPortalProps: Readonly<{ container: Element }>;\n}\n\nexport type BaseOverlayPortalState =\n  | BaseOverlayPortalInlineState\n  | BaseOverlayPortalReadyState;\n\nexport function resolveBaseOverlayPortalState({\n  mounted,\n  explicitDisabled,\n  explicitContainer,\n  providerDisabled,\n  providerContainer,\n  getDocument,\n}: ResolveBaseOverlayPortalStateOptions): BaseOverlayPortalState {\n  const disabled = explicitDisabled ?? providerDisabled ?? false;\n  if (!mounted || disabled) {\n    return {\n      mounted,\n      disabled,\n      shouldPortal: false,\n      container: null,\n      radixPortalProps: undefined,\n    };\n  }\n\n  const container = resolveBasePortalContainer({\n    explicitProvided: explicitContainer !== undefined,\n    explicitContainer,\n    providerProvided: providerContainer !== undefined,\n    providerContainer,\n    getDocument,\n  });\n\n  if (!container) {\n    return {\n      mounted: true,\n      disabled: false,\n      shouldPortal: false,\n      container: null,\n      radixPortalProps: undefined,\n    };\n  }\n\n  return {\n    mounted: true,\n    disabled: false,\n    shouldPortal: true,\n    container,\n    radixPortalProps: Object.freeze({ container }),\n  };\n}\n\nexport interface UseBaseOverlayPortalOptions {\n  container?: MonkeysPortalContainer;\n  disabled?: boolean;\n}\n\nfunction getDefaultDocument(): Document | null {\n  return globalThis.document ?? null;\n}\n\nexport function useBaseOverlayPortal(\n  options: UseBaseOverlayPortalOptions = {},\n): BaseOverlayPortalState {\n  const environment = useMonkeysEnvironment();\n  const portalOptions = useMonkeysPortalOptions();\n  const [mounted, setMounted] = useState(false);\n\n  useEffect(() => {\n    setMounted(true);\n  }, []);\n\n  return resolveBaseOverlayPortalState({\n    mounted,\n    explicitDisabled: options.disabled,\n    explicitContainer: options.container,\n    providerDisabled: portalOptions.disabled,\n    providerContainer: portalOptions.container,\n    getDocument: environment.getDocument ?? getDefaultDocument,\n  });\n}\n\nexport interface BaseOverlayPortalProps extends UseBaseOverlayPortalOptions {\n  children?: ReactNode;\n}\n\nexport function renderBaseOverlayPortalContent(\n  children: ReactNode,\n  portal: BaseOverlayPortalState,\n) {\n  return portal.shouldPortal\n    ? createPortal(children, portal.container)\n    : <>{children}</>;\n}\n\nexport function BaseOverlayPortal({\n  children,\n  container,\n  disabled,\n}: BaseOverlayPortalProps) {\n  const portal = useBaseOverlayPortal({ container, disabled });\n  return renderBaseOverlayPortalContent(children, portal);\n}\n","import * as ContextMenu from '@radix-ui/react-context-menu';\nimport { forwardRef, type ComponentRef, type ReactNode } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n  useMonkeysDirection,\n} from '../../provider/context';\nimport { useBaseOverlayPortal } from './internal/overlayPortal';\n\nimport type {\n  BaseContextMenuCheckboxItemProps,\n  BaseContextMenuContentProps,\n  BaseContextMenuItemProps,\n  BaseContextMenuLabelProps,\n  BaseContextMenuProps,\n  BaseContextMenuRadioGroupProps,\n  BaseContextMenuRadioItemProps,\n  BaseContextMenuSeparatorProps,\n  BaseContextMenuSubContentProps,\n  BaseContextMenuSubProps,\n  BaseContextMenuSubTriggerProps,\n  BaseContextMenuTriggerProps,\n} from './types';\nimport {\n  getBaseMenuItemToneClassName,\n  resolveBaseAppearance,\n} from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst contextMenuTones = [\n  'default',\n  'primary',\n  'success',\n  'warning',\n  'danger',\n  'muted',\n] as const;\n\nfunction validateBoolean(value: unknown, name: string) {\n  if (typeof value !== 'boolean') {\n    throw new TypeError(`BaseContextMenu ${name} must be a boolean.`);\n  }\n}\n\nfunction validateTone(value: unknown) {\n  if (\n    value !== undefined &&\n    !contextMenuTones.includes(\n      value as (typeof contextMenuTones)[number],\n    )\n  ) {\n    throw new TypeError(\n      'BaseContextMenu tone must be \"default\", \"primary\", \"success\", \"warning\", \"danger\", or \"muted\".',\n    );\n  }\n}\n\nfunction validateDirection(value: unknown) {\n  if (value !== undefined && value !== 'ltr' && value !== 'rtl') {\n    throw new TypeError('BaseContextMenu dir must be \"ltr\" or \"rtl\".');\n  }\n}\n\nfunction CheckIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 16 16\"\n      className=\"h-3.5 w-3.5\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"M3.5 8.5 6.5 11.5 12.5 4.5\" />\n    </svg>\n  );\n}\n\nfunction DotIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 16 16\"\n      className=\"h-3.5 w-3.5\"\n      fill=\"currentColor\"\n    >\n      <circle cx=\"8\" cy=\"8\" r=\"3\" />\n    </svg>\n  );\n}\n\nfunction ChevronRightIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 16 16\"\n      className=\"h-3.5 w-3.5\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"m6 4 4 4-4 4\" />\n    </svg>\n  );\n}\n\nfunction renderItemContent({\n  label,\n  icon,\n  shortcut,\n  children,\n  classNames,\n  inset,\n  indicator,\n}: Pick<\n  BaseContextMenuItemProps,\n  'children' | 'classNames' | 'icon' | 'inset' | 'label' | 'shortcut'\n> & {\n  indicator?: ReactNode;\n}) {\n  const resolvedLabel = children ?? label;\n\n  return (\n    <>\n      {indicator ? indicator : null}\n      {hasRenderableNode(icon) ? (\n        <span data-slot=\"icon\" className={cn(classNames?.icon)}>\n          {icon}\n        </span>\n      ) : inset ? (\n        <span\n          aria-hidden=\"true\"\n          data-slot=\"icon\"\n          className=\"h-4 w-4 shrink-0\"\n        />\n      ) : null}\n      {hasRenderableNode(resolvedLabel) ? (\n        <span data-slot=\"label\" className={cn(classNames?.label)}>\n          {resolvedLabel}\n        </span>\n      ) : null}\n      {hasRenderableNode(shortcut) ? (\n        <span data-slot=\"shortcut\" className={cn(classNames?.shortcut)}>\n          {shortcut}\n        </span>\n      ) : null}\n    </>\n  );\n}\n\nexport function BaseContextMenu({\n  children,\n  trigger,\n  content,\n  disabled = false,\n  modal = true,\n  dir,\n  appearance,\n  className,\n  classNames,\n  onOpenChange,\n}: BaseContextMenuProps) {\n  validateBoolean(disabled, 'disabled');\n  validateBoolean(modal, 'modal');\n  validateDirection(dir);\n  const inheritedDirection = useMonkeysDirection();\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n\n  return (\n    <ContextMenu.Root\n      onOpenChange={onOpenChange}\n      modal={modal}\n      dir={dir ?? inheritedDirection}\n    >\n      {trigger ? (\n        <BaseContextMenuTrigger\n          disabled={disabled}\n          appearance={resolvedAppearance}\n          className={cn(classNames?.trigger, className)}\n        >\n          {trigger}\n        </BaseContextMenuTrigger>\n      ) : null}\n      {content ? (\n        <BaseContextMenuContent\n          appearance={resolvedAppearance}\n          className={classNames?.content}\n        >\n          {content}\n        </BaseContextMenuContent>\n      ) : null}\n      {children}\n    </ContextMenu.Root>\n  );\n}\n\nexport const BaseContextMenuTrigger = forwardRef<\n  ComponentRef<typeof ContextMenu.Trigger>,\n  BaseContextMenuTriggerProps\n>(function BaseContextMenuTrigger(\n  {\n    children,\n    disabled = false,\n    asChild = false,\n    appearance,\n    className,\n    style,\n    ...triggerProps\n  },\n  ref,\n) {\n  validateBoolean(disabled, 'Trigger disabled');\n  validateBoolean(asChild, 'Trigger asChild');\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n\n  return (\n    <ContextMenu.Trigger\n      {...componentAttributes}\n      {...triggerProps}\n      ref={ref}\n      asChild={asChild}\n      disabled={disabled}\n      data-monkeys-component=\"context-menu\"\n      data-slot=\"trigger\"\n      data-disabled={disabled || undefined}\n      className={cn(\n        !asChild && theme.slots.menuTrigger,\n        disabled && !asChild && theme.slots.menuItemDisabled,\n        className,\n      )}\n      style={style}\n    >\n      {children}\n    </ContextMenu.Trigger>\n  );\n});\n\nexport const BaseContextMenuContent = forwardRef<\n  ComponentRef<typeof ContextMenu.Content>,\n  BaseContextMenuContentProps\n>(function BaseContextMenuContent(\n  {\n    children,\n    appearance,\n    className,\n    classNames,\n    style,\n    ...contentProps\n  },\n  ref,\n) {\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n  const portal = useBaseOverlayPortal();\n  const content = (\n    <ContextMenu.Content\n      {...componentAttributes}\n      {...contentProps}\n      ref={ref}\n      data-monkeys-component=\"context-menu\"\n      data-slot=\"content\"\n      className={cn(theme.slots.menuContent, classNames?.root, className)}\n      style={{\n        ...theme.styles.menuContent,\n        ...style,\n      }}\n    >\n      {children}\n    </ContextMenu.Content>\n  );\n\n  return portal.shouldPortal ? (\n    <ContextMenu.Portal {...portal.radixPortalProps}>\n      {content}\n    </ContextMenu.Portal>\n  ) : content;\n});\n\nexport const BaseContextMenuLabel = forwardRef<\n  ComponentRef<typeof ContextMenu.Label>,\n  BaseContextMenuLabelProps\n>(function BaseContextMenuLabel(\n  { children, appearance, className, style, ...labelProps },\n  ref,\n) {\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n\n  return (\n    <ContextMenu.Label\n      {...componentAttributes}\n      {...labelProps}\n      ref={ref}\n      data-monkeys-component=\"context-menu\"\n      data-slot=\"label\"\n      className={cn(theme.slots.menuLabel, className)}\n      style={style}\n    >\n      {children}\n    </ContextMenu.Label>\n  );\n});\n\nexport const BaseContextMenuSeparator = forwardRef<\n  ComponentRef<typeof ContextMenu.Separator>,\n  BaseContextMenuSeparatorProps\n>(function BaseContextMenuSeparator(\n  { appearance, className, style, ...separatorProps },\n  ref,\n) {\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n\n  return (\n    <ContextMenu.Separator\n      {...componentAttributes}\n      {...separatorProps}\n      ref={ref}\n      data-monkeys-component=\"context-menu\"\n      data-slot=\"separator\"\n      className={cn(theme.slots.menuSeparator, className)}\n      style={style}\n    />\n  );\n});\n\nexport const BaseContextMenuItem = forwardRef<\n  ComponentRef<typeof ContextMenu.Item>,\n  BaseContextMenuItemProps\n>(function BaseContextMenuItem(\n  {\n    children,\n    label,\n    icon,\n    shortcut,\n    tone,\n    disabled = false,\n    inset = false,\n    appearance,\n    className,\n    classNames,\n    style,\n    onSelect,\n    ...itemProps\n  },\n  ref,\n) {\n  validateBoolean(disabled, 'Item disabled');\n  validateBoolean(inset, 'Item inset');\n  validateTone(tone);\n  const resolvedTone = tone ?? 'default';\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n\n  return (\n    <ContextMenu.Item\n      {...componentAttributes}\n      {...itemProps}\n      ref={ref}\n      disabled={disabled}\n      data-monkeys-component=\"context-menu\"\n      data-slot=\"item\"\n      data-tone={resolvedTone}\n      data-disabled={disabled || undefined}\n      className={cn(\n        theme.slots.menuItem,\n        getBaseMenuItemToneClassName(theme, tone),\n        disabled && theme.slots.menuItemDisabled,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.menuItem,\n        ...style,\n      }}\n      onSelect={(event) => {\n        if (disabled) {\n          event.preventDefault();\n          return;\n        }\n        onSelect?.(event);\n      }}\n    >\n      {renderItemContent({\n        children,\n        label,\n        icon,\n        shortcut,\n        inset,\n        classNames: {\n          icon: cn(theme.slots.menuItemIcon, classNames?.icon),\n          label: cn(theme.slots.menuItemLabel, classNames?.label),\n          shortcut: cn(theme.slots.menuItemShortcut, classNames?.shortcut),\n        },\n      })}\n    </ContextMenu.Item>\n  );\n});\n\nexport const BaseContextMenuCheckboxItem = forwardRef<\n  ComponentRef<typeof ContextMenu.CheckboxItem>,\n  BaseContextMenuCheckboxItemProps\n>(function BaseContextMenuCheckboxItem(\n  {\n    children,\n    label,\n    icon,\n    shortcut,\n    tone,\n    disabled = false,\n    inset = false,\n    checked,\n    onCheckedChange,\n    appearance,\n    className,\n    classNames,\n    style,\n    onSelect,\n    ...itemProps\n  },\n  ref,\n) {\n  validateBoolean(disabled, 'CheckboxItem disabled');\n  validateBoolean(inset, 'CheckboxItem inset');\n  validateTone(tone);\n  if (\n    checked !== undefined &&\n    checked !== 'indeterminate' &&\n    typeof checked !== 'boolean'\n  ) {\n    throw new TypeError(\n      'BaseContextMenu CheckboxItem checked must be a boolean or \"indeterminate\".',\n    );\n  }\n  const resolvedTone = tone ?? 'default';\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n\n  return (\n    <ContextMenu.CheckboxItem\n      {...componentAttributes}\n      {...itemProps}\n      ref={ref}\n      checked={checked}\n      disabled={disabled}\n      data-monkeys-component=\"context-menu\"\n      data-slot=\"checkbox-item\"\n      data-tone={resolvedTone}\n      data-disabled={disabled || undefined}\n      data-checked={\n        checked === 'indeterminate'\n          ? 'mixed'\n          : checked === undefined\n            ? undefined\n            : String(checked)\n      }\n      onCheckedChange={(nextChecked) => {\n        if (disabled) return;\n        onCheckedChange?.(nextChecked);\n      }}\n      className={cn(\n        theme.slots.menuItem,\n        'pl-8',\n        getBaseMenuItemToneClassName(theme, tone),\n        disabled && theme.slots.menuItemDisabled,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.menuItem,\n        ...style,\n      }}\n      onSelect={(event) => {\n        if (disabled) {\n          event.preventDefault();\n          return;\n        }\n        onSelect?.(event);\n      }}\n    >\n      {renderItemContent({\n        children,\n        label,\n        icon,\n        shortcut,\n        inset,\n        classNames: {\n          icon: cn(theme.slots.menuItemIcon, classNames?.icon),\n          label: cn(theme.slots.menuItemLabel, classNames?.label),\n          shortcut: cn(theme.slots.menuItemShortcut, classNames?.shortcut),\n        },\n        indicator: (\n          <ContextMenu.ItemIndicator\n            data-slot=\"indicator\"\n            className={cn(theme.slots.menuCheckboxIndicator, classNames?.indicator)}\n          >\n            <CheckIcon />\n          </ContextMenu.ItemIndicator>\n        ),\n      })}\n    </ContextMenu.CheckboxItem>\n  );\n});\n\nexport function BaseContextMenuRadioGroup({\n  children,\n  value,\n  onValueChange,\n}: BaseContextMenuRadioGroupProps) {\n  return (\n    <ContextMenu.RadioGroup value={value} onValueChange={onValueChange}>\n      {children}\n    </ContextMenu.RadioGroup>\n  );\n}\n\nexport const BaseContextMenuRadioItem = forwardRef<\n  ComponentRef<typeof ContextMenu.RadioItem>,\n  BaseContextMenuRadioItemProps\n>(function BaseContextMenuRadioItem(\n  {\n    children,\n    label,\n    icon,\n    shortcut,\n    tone,\n    disabled = false,\n    inset = false,\n    value,\n    appearance,\n    className,\n    classNames,\n    style,\n    onSelect,\n    ...itemProps\n  },\n  ref,\n) {\n  validateBoolean(disabled, 'RadioItem disabled');\n  validateBoolean(inset, 'RadioItem inset');\n  validateTone(tone);\n  const resolvedTone = tone ?? 'default';\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n\n  return (\n    <ContextMenu.RadioItem\n      {...componentAttributes}\n      {...itemProps}\n      ref={ref}\n      value={value}\n      disabled={disabled}\n      data-monkeys-component=\"context-menu\"\n      data-slot=\"radio-item\"\n      data-tone={resolvedTone}\n      data-value={value}\n      data-disabled={disabled || undefined}\n      className={cn(\n        theme.slots.menuItem,\n        'pl-8',\n        getBaseMenuItemToneClassName(theme, tone),\n        disabled && theme.slots.menuItemDisabled,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.menuItem,\n        ...style,\n      }}\n      onSelect={(event) => {\n        if (disabled) {\n          event.preventDefault();\n          return;\n        }\n        onSelect?.(event);\n      }}\n    >\n      {renderItemContent({\n        children,\n        label,\n        icon,\n        shortcut,\n        inset,\n        classNames: {\n          icon: cn(theme.slots.menuItemIcon, classNames?.icon),\n          label: cn(theme.slots.menuItemLabel, classNames?.label),\n          shortcut: cn(theme.slots.menuItemShortcut, classNames?.shortcut),\n        },\n        indicator: (\n          <ContextMenu.ItemIndicator\n            data-slot=\"indicator\"\n            className={cn(theme.slots.menuRadioIndicator, classNames?.indicator)}\n          >\n            <DotIcon />\n          </ContextMenu.ItemIndicator>\n        ),\n      })}\n    </ContextMenu.RadioItem>\n  );\n});\n\nexport function BaseContextMenuSub({\n  children,\n  open,\n  defaultOpen,\n  onOpenChange,\n}: BaseContextMenuSubProps) {\n  if (open !== undefined) validateBoolean(open, 'Sub open');\n  if (defaultOpen !== undefined) {\n    validateBoolean(defaultOpen, 'Sub defaultOpen');\n  }\n  return (\n    <ContextMenu.Sub\n      open={open}\n      defaultOpen={defaultOpen}\n      onOpenChange={onOpenChange}\n    >\n      {children}\n    </ContextMenu.Sub>\n  );\n}\n\nexport const BaseContextMenuSubTrigger = forwardRef<\n  ComponentRef<typeof ContextMenu.SubTrigger>,\n  BaseContextMenuSubTriggerProps\n>(function BaseContextMenuSubTrigger(\n  {\n    children,\n    label,\n    icon,\n    tone,\n    disabled = false,\n    inset = false,\n    appearance,\n    className,\n    classNames,\n    style,\n    ...itemProps\n  },\n  ref,\n) {\n  validateBoolean(disabled, 'SubTrigger disabled');\n  validateBoolean(inset, 'SubTrigger inset');\n  validateTone(tone);\n  const resolvedTone = tone ?? 'default';\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n  const resolvedLabel = children ?? label;\n\n  return (\n    <ContextMenu.SubTrigger\n      {...componentAttributes}\n      {...itemProps}\n      ref={ref}\n      disabled={disabled}\n      data-monkeys-component=\"context-menu\"\n      data-slot=\"sub-trigger\"\n      data-tone={resolvedTone}\n      data-disabled={disabled || undefined}\n      className={cn(\n        theme.slots.menuSubTrigger,\n        getBaseMenuItemToneClassName(theme, tone),\n        disabled && theme.slots.menuItemDisabled,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.menuItem,\n        ...style,\n      }}\n    >\n      {hasRenderableNode(icon) ? (\n        <span\n          data-slot=\"icon\"\n          className={cn(theme.slots.menuItemIcon, classNames?.icon)}\n        >\n          {icon}\n        </span>\n      ) : inset ? (\n        <span\n          aria-hidden=\"true\"\n          data-slot=\"icon\"\n          className=\"h-4 w-4 shrink-0\"\n        />\n      ) : null}\n      {hasRenderableNode(resolvedLabel) ? (\n        <span\n          data-slot=\"label\"\n          className={cn(theme.slots.menuItemLabel, classNames?.label)}\n        >\n          {resolvedLabel}\n        </span>\n      ) : null}\n      <span\n        data-slot=\"sub-indicator\"\n        className={cn(\n          theme.slots.menuSubTriggerIcon,\n          classNames?.shortcut,\n          'rtl:rotate-180',\n        )}\n      >\n        <ChevronRightIcon />\n      </span>\n    </ContextMenu.SubTrigger>\n  );\n});\n\nexport const BaseContextMenuSubContent = forwardRef<\n  ComponentRef<typeof ContextMenu.SubContent>,\n  BaseContextMenuSubContentProps\n>(function BaseContextMenuSubContent(\n  {\n    children,\n    appearance,\n    className,\n    classNames,\n    style,\n    sideOffset = 6,\n    ...subContentProps\n  },\n  ref,\n) {\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n  const portal = useBaseOverlayPortal();\n  const content = (\n    <ContextMenu.SubContent\n      {...componentAttributes}\n      {...subContentProps}\n      ref={ref}\n      sideOffset={sideOffset}\n      data-monkeys-component=\"context-menu\"\n      data-slot=\"sub-content\"\n      className={cn(theme.slots.menuSubContent, classNames?.root, className)}\n      style={{\n        ...theme.styles.menuContent,\n        ...style,\n      }}\n    >\n      {children}\n    </ContextMenu.SubContent>\n  );\n\n  return portal.shouldPortal ? (\n    <ContextMenu.Portal {...portal.radixPortalProps}>\n      {content}\n    </ContextMenu.Portal>\n  ) : content;\n});\n","import type { BaseDescriptionListProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn } from './utils';\n\nconst columnClassNames = {\n  1: 'grid-cols-1',\n  2: 'md:grid-cols-2',\n  3: 'md:grid-cols-2 xl:grid-cols-3',\n};\n\nexport function BaseDescriptionList({\n  items,\n  columns = 1,\n  appearance,\n  className,\n  classNames,\n  style,\n  children,\n  ...listProps\n}: BaseDescriptionListProps) {\n  const theme = resolveBaseAppearance(appearance);\n\n  return (\n    <dl\n      {...listProps}\n      className={cn(\n        theme.slots.descriptionListRoot,\n        columnClassNames[columns],\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.descriptionList,\n        ...style,\n      }}\n    >\n      {items?.map((item, index) => (\n        <div\n          key={index}\n          className={cn(theme.slots.descriptionListItem, classNames?.item)}\n        >\n          <dt className={cn(theme.slots.descriptionListTerm, classNames?.term)}>\n            {item.term}\n          </dt>\n          <dd\n            className={cn(theme.slots.descriptionListValue, classNames?.value)}\n          >\n            {item.value}\n          </dd>\n        </div>\n      ))}\n      {children}\n    </dl>\n  );\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { forwardRef, useEffect, useRef, useState } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n  useMonkeysLocaleMessages,\n} from '../../provider/context';\nimport { useBaseOverlayPortal } from './internal/overlayPortal';\nimport type { BaseControlTone, BaseDialogProps } from './types';\nimport {\n  getBaseButtonToneClassName,\n  resolveBaseAppearance,\n} from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst dialogTriggerTones = [\n  'default',\n  'primary',\n  'success',\n  'warning',\n  'danger',\n  'muted',\n] as const;\n\nfunction validateBoolean(value: unknown, name: string) {\n  if (typeof value !== 'boolean') {\n    throw new TypeError(`BaseDialog ${name} must be a boolean.`);\n  }\n}\n\nfunction validateTriggerTone(value: unknown) {\n  if (\n    !dialogTriggerTones.includes(\n      value as (typeof dialogTriggerTones)[number],\n    )\n  ) {\n    throw new TypeError(\n      'BaseDialog triggerTone must be \"default\", \"primary\", \"success\", \"warning\", \"danger\", or \"muted\".',\n    );\n  }\n}\n\nfunction renderTrigger({\n  trigger,\n  triggerLabel,\n  triggerIcon,\n  triggerTone,\n  triggerDisabled,\n  theme,\n}: Pick<\n  BaseDialogProps,\n  'trigger' | 'triggerDisabled' | 'triggerIcon' | 'triggerLabel'\n> & {\n  triggerTone: BaseControlTone;\n  theme: ReturnType<typeof resolveBaseAppearance>;\n}) {\n  if (hasRenderableNode(trigger)) {\n    return (\n      <span\n        role=\"button\"\n        tabIndex={triggerDisabled ? -1 : 0}\n        aria-disabled={triggerDisabled || undefined}\n        onKeyDown={(event) => {\n          if (triggerDisabled) return;\n          if (event.key === 'Enter' || event.key === ' ') {\n            event.preventDefault();\n            event.currentTarget.click();\n          }\n        }}\n      >\n        {trigger}\n      </span>\n    );\n  }\n\n  if (!hasRenderableNode(triggerLabel)) return null;\n\n  return (\n    <button\n      type=\"button\"\n      disabled={triggerDisabled}\n      aria-label={\n        typeof triggerLabel === 'string' && triggerLabel.trim()\n          ? triggerLabel\n          : undefined\n      }\n      className={cn(\n        theme.slots.buttonBase,\n        getBaseButtonToneClassName(theme, triggerTone),\n        triggerDisabled && theme.slots.buttonDisabled,\n      )}\n      style={{\n        ...theme.styles.button,\n        ...(triggerDisabled ? theme.styles.buttonDisabled : undefined),\n      }}\n    >\n      {hasRenderableNode(triggerIcon) ? (\n        <span data-slot=\"icon\" className={theme.slots.buttonIcon}>\n          {triggerIcon}\n        </span>\n      ) : null}\n      <span data-slot=\"label\" className={theme.slots.buttonLabel}>\n        {triggerLabel}\n      </span>\n    </button>\n  );\n}\n\nexport const BaseDialog = forwardRef<HTMLDivElement, BaseDialogProps>(\n  function BaseDialog(\n    {\n      open,\n      defaultOpen = false,\n      title,\n      description,\n      header,\n      footer,\n      trigger,\n      triggerLabel,\n      triggerIcon,\n      triggerTone = 'default',\n      triggerDisabled = false,\n      closeLabel,\n      closeOnEscape = true,\n      closeOnOverlayClick = true,\n      showCloseButton = true,\n      keepMounted = false,\n      trapFocus = true,\n      restoreFocus = true,\n      initialFocus = 'first-interactive',\n      initialFocusRef,\n      zIndex,\n      portal = false,\n      appearance,\n      className,\n      classNames,\n      style,\n      children,\n      onOpenChange,\n      id,\n      ...dialogProps\n    },\n    ref,\n  ) {\n    if (open !== undefined) validateBoolean(open, 'open');\n    validateBoolean(defaultOpen, 'defaultOpen');\n    validateBoolean(triggerDisabled, 'triggerDisabled');\n    validateBoolean(closeOnEscape, 'closeOnEscape');\n    validateBoolean(closeOnOverlayClick, 'closeOnOverlayClick');\n    validateBoolean(showCloseButton, 'showCloseButton');\n    validateBoolean(keepMounted, 'keepMounted');\n    validateBoolean(trapFocus, 'trapFocus');\n    validateBoolean(restoreFocus, 'restoreFocus');\n    validateBoolean(portal, 'portal');\n    validateTriggerTone(triggerTone);\n    if (\n      initialFocus !== 'first-interactive' &&\n      initialFocus !== 'container' &&\n      initialFocus !== 'explicit'\n    ) {\n      throw new TypeError(\n        'BaseDialog initialFocus must be \"first-interactive\", \"container\", or \"explicit\".',\n      );\n    }\n    if (zIndex !== undefined && !Number.isFinite(zIndex)) {\n      throw new TypeError('BaseDialog zIndex must be a finite number.');\n    }\n\n    const messages = useMonkeysLocaleMessages().dialog;\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const resolvedCloseLabel =\n      closeLabel === undefined ? messages.close : closeLabel;\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const overlayPortal = useBaseOverlayPortal({ disabled: !portal });\n    const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n    const panelRef = useRef<HTMLDivElement | null>(null);\n    const returnFocusRef = useRef<HTMLElement | null>(null);\n    const isControlled = open !== undefined;\n    const isOpen = isControlled ? open : uncontrolledOpen;\n    const portalState =\n      portal && overlayPortal.shouldPortal ? 'portaled' : 'inline';\n    const hasTitle = hasRenderableNode(title);\n    const hasDescription = hasRenderableNode(description);\n    const hasCustomHeader = hasRenderableNode(header);\n\n    if (\n      showCloseButton &&\n      (typeof resolvedCloseLabel !== 'string' || !resolvedCloseLabel.trim())\n    ) {\n      throw new TypeError(\n        'BaseDialog closeLabel must be a non-empty string when showCloseButton is true.',\n      );\n    }\n\n    const handleOpenChange = (nextOpen: boolean) => {\n      if (!isControlled) {\n        setUncontrolledOpen(nextOpen);\n      }\n      onOpenChange?.(nextOpen);\n    };\n\n    useEffect(() => {\n      if (!isOpen || !keepMounted) return undefined;\n      const panel = panelRef.current;\n      const ownerDocument = panel?.ownerDocument;\n      const ownerWindow = ownerDocument?.defaultView;\n      if (!panel || !ownerDocument || !ownerWindow) return undefined;\n\n      returnFocusRef.current =\n        ownerDocument.activeElement instanceof ownerWindow.HTMLElement\n          ? ownerDocument.activeElement\n          : null;\n      const focusableSelector = [\n        'a[href]',\n        'button:not([disabled])',\n        'input:not([disabled])',\n        'select:not([disabled])',\n        'textarea:not([disabled])',\n        '[tabindex]:not([tabindex=\"-1\"])',\n      ].join(',');\n      const focusInitial = () => {\n        const firstInteractive = panel.querySelector<HTMLElement>(focusableSelector);\n        const target =\n          initialFocus === 'container'\n            ? panel\n            : initialFocus === 'explicit'\n              ? initialFocusRef?.current ?? panel\n              : firstInteractive ?? panel;\n        target.focus();\n      };\n      const frame = ownerWindow.requestAnimationFrame(focusInitial);\n      const handleKeyDown = (event: KeyboardEvent) => {\n        if (event.key === 'Escape' && closeOnEscape) {\n          event.preventDefault();\n          event.stopPropagation();\n          handleOpenChange(false);\n          return;\n        }\n        if (event.key !== 'Tab' || !trapFocus) return;\n        const focusable = Array.from(\n          panel.querySelectorAll<HTMLElement>(focusableSelector),\n        );\n        if (focusable.length === 0) {\n          event.preventDefault();\n          panel.focus();\n          return;\n        }\n        const first = focusable[0];\n        const last = focusable[focusable.length - 1];\n        if (event.shiftKey && ownerDocument.activeElement === first) {\n          event.preventDefault();\n          last.focus();\n        } else if (!event.shiftKey && ownerDocument.activeElement === last) {\n          event.preventDefault();\n          first.focus();\n        }\n      };\n      ownerWindow.addEventListener('keydown', handleKeyDown);\n      return () => {\n        ownerWindow.cancelAnimationFrame(frame);\n        ownerWindow.removeEventListener('keydown', handleKeyDown);\n        if (restoreFocus && returnFocusRef.current?.isConnected) {\n          returnFocusRef.current.focus();\n        }\n      };\n    }, [\n      closeOnEscape,\n      initialFocus,\n      initialFocusRef,\n      isOpen,\n      keepMounted,\n      restoreFocus,\n      trapFocus,\n    ]);\n\n    const semanticHeader =\n      hasCustomHeader || hasTitle || hasDescription ? (\n        <div\n          {...componentAttributes}\n          data-monkeys-component=\"dialog\"\n          data-slot=\"header\"\n          data-state={isOpen ? 'open' : 'closed'}\n          data-portal={portalState}\n          className={cn(theme.slots.dialogHeader, classNames?.header)}\n        >\n          {hasCustomHeader ? header : null}\n          {hasTitle ? (\n            <Dialog.Title\n              {...componentAttributes}\n              data-monkeys-component=\"dialog\"\n              data-slot=\"title\"\n              data-state={isOpen ? 'open' : 'closed'}\n              data-portal={portalState}\n              className={\n                hasCustomHeader\n                  ? 'sr-only'\n                  : cn(theme.slots.dialogTitle, classNames?.title)\n              }\n            >\n              {title}\n            </Dialog.Title>\n          ) : null}\n          {hasDescription ? (\n            <Dialog.Description\n              {...componentAttributes}\n              data-monkeys-component=\"dialog\"\n              data-slot=\"description\"\n              data-state={isOpen ? 'open' : 'closed'}\n              data-portal={portalState}\n              className={\n                hasCustomHeader\n                  ? 'sr-only'\n                  : cn(\n                      theme.slots.dialogDescription,\n                      classNames?.description,\n                    )\n              }\n            >\n              {description}\n            </Dialog.Description>\n          ) : null}\n        </div>\n      ) : null;\n\n    const triggerNode = renderTrigger({\n      trigger,\n      triggerLabel,\n      triggerIcon,\n      triggerTone,\n      triggerDisabled,\n      theme,\n    });\n\n    const dialogLayers = isOpen || keepMounted ? (\n      <>\n        <Dialog.Overlay\n          forceMount={keepMounted || undefined}\n          hidden={!isOpen}\n          {...componentAttributes}\n          aria-hidden=\"true\"\n          data-monkeys-component=\"dialog\"\n          data-slot=\"overlay\"\n          data-portal={portalState}\n          className={cn(theme.slots.dialogOverlay, classNames?.overlay)}\n          style={{ ...theme.styles.dialogOverlay, zIndex }}\n        />\n        <div\n          {...componentAttributes}\n          hidden={!isOpen}\n          data-monkeys-component=\"dialog\"\n          data-slot=\"content\"\n          data-state={isOpen ? 'open' : 'closed'}\n          data-portal={portalState}\n          className={cn(theme.slots.dialogContent, classNames?.content)}\n          style={{ zIndex }}\n        >\n          <Dialog.Content\n            forceMount={keepMounted || undefined}\n            {...componentAttributes}\n            {...(!hasTitle ? { 'aria-labelledby': undefined } : {})}\n            {...(!hasDescription ? { 'aria-describedby': undefined } : {})}\n            asChild\n            onOpenAutoFocus={(event) => {\n              if (keepMounted) event.preventDefault();\n            }}\n            onCloseAutoFocus={(event) => {\n              if (keepMounted) event.preventDefault();\n            }}\n            onEscapeKeyDown={(event) => {\n              if (keepMounted || !closeOnEscape) event.preventDefault();\n            }}\n            onPointerDownOutside={(event) => {\n              if (!closeOnOverlayClick) event.preventDefault();\n            }}\n          >\n            <div\n              {...componentAttributes}\n              ref={panelRef}\n              tabIndex={-1}\n              aria-modal=\"true\"\n              data-monkeys-component=\"dialog\"\n              data-slot=\"panel\"\n              data-portal={portalState}\n              className={cn(theme.slots.dialogPanel, classNames?.panel)}\n              style={theme.styles.dialogPanel}\n            >\n              {semanticHeader}\n\n              {showCloseButton ? (\n                <Dialog.Close asChild>\n                  <button\n                    {...componentAttributes}\n                    type=\"button\"\n                    aria-label={resolvedCloseLabel}\n                    title={resolvedCloseLabel}\n                    data-monkeys-component=\"dialog\"\n                    data-slot=\"close\"\n                    data-state={isOpen ? 'open' : 'closed'}\n                    data-portal={portalState}\n                    className={cn(\n                      theme.slots.dialogClose,\n                      classNames?.close,\n                    )}\n                  >\n                    ×\n                  </button>\n                </Dialog.Close>\n              ) : null}\n\n              <div\n                {...componentAttributes}\n                data-monkeys-component=\"dialog\"\n                data-slot=\"body\"\n                data-state={isOpen ? 'open' : 'closed'}\n                data-portal={portalState}\n                className={cn(theme.slots.dialogBody, classNames?.body)}\n              >\n                {children}\n              </div>\n\n              {hasRenderableNode(footer) ? (\n                <div\n                  {...componentAttributes}\n                  data-monkeys-component=\"dialog\"\n                  data-slot=\"footer\"\n                  data-state={isOpen ? 'open' : 'closed'}\n                  data-portal={portalState}\n                  className={cn(theme.slots.dialogFooter, classNames?.footer)}\n                >\n                  {footer}\n                </div>\n              ) : null}\n            </div>\n          </Dialog.Content>\n        </div>\n      </>\n    ) : null;\n\n    return (\n      <div\n        {...componentAttributes}\n        {...dialogProps}\n        ref={ref}\n        id={id}\n        data-monkeys-component=\"dialog\"\n        data-slot=\"root\"\n        data-state={isOpen ? 'open' : 'closed'}\n        data-portal={portalState}\n        className={cn(theme.slots.dialogRoot, classNames?.root, className)}\n        style={style}\n      >\n        <Dialog.Root\n          open={isOpen}\n          onOpenChange={handleOpenChange}\n          modal={!keepMounted && trapFocus}\n        >\n          {triggerNode ? (\n            <Dialog.Trigger\n              {...componentAttributes}\n              asChild\n              disabled={triggerDisabled}\n              data-monkeys-component=\"dialog\"\n              data-slot=\"trigger\"\n              data-portal={portalState}\n              data-tone={triggerTone}\n              data-disabled={triggerDisabled || undefined}\n              className={cn(\n                theme.slots.dialogTrigger,\n                triggerDisabled && theme.slots.dialogTriggerDisabled,\n                classNames?.trigger,\n              )}\n            >\n              {triggerNode}\n            </Dialog.Trigger>\n          ) : null}\n          {portal && overlayPortal.shouldPortal ? (\n            <Dialog.Portal\n              {...overlayPortal.radixPortalProps}\n              forceMount={keepMounted || undefined}\n            >\n              {dialogLayers}\n            </Dialog.Portal>\n          ) : (\n            dialogLayers\n          )}\n        </Dialog.Root>\n      </div>\n    );\n  },\n);\n","import { forwardRef, type CSSProperties } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseDividerProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nexport const BaseDivider = forwardRef<HTMLDivElement, BaseDividerProps>(\n  function BaseDivider(\n    {\n      orientation = 'horizontal',\n      label,\n      appearance,\n      className,\n      classNames,\n      style,\n      ...dividerProps\n    },\n    ref,\n  ) {\n    if (orientation !== 'horizontal' && orientation !== 'vertical') {\n      throw new TypeError(\n        'BaseDivider orientation must be \"horizontal\" or \"vertical\".',\n      );\n    }\n\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const isVertical = orientation === 'vertical';\n    const hasLabel = hasRenderableNode(label) && !isVertical;\n    const rootStyle: CSSProperties = {\n      ...theme.styles.divider,\n      ...style,\n    };\n\n    if (hasLabel) {\n      return (\n        <div\n          {...componentAttributes}\n          {...dividerProps}\n          ref={ref}\n          role=\"separator\"\n          aria-orientation={orientation}\n          data-monkeys-component=\"divider\"\n          data-slot=\"root\"\n          data-orientation={orientation}\n          data-state=\"labeled\"\n          className={cn(\n            'flex min-w-0 items-center',\n            classNames?.root,\n            className,\n          )}\n          style={rootStyle}\n        >\n          <div\n            data-slot=\"line\"\n            data-orientation={orientation}\n            className={cn(\n              'min-w-0 flex-1 border-t',\n              theme.slots.dividerRoot,\n              classNames?.line,\n            )}\n          />\n          <span\n            data-slot=\"label\"\n            data-orientation={orientation}\n            className={cn(theme.slots.dividerLabel, classNames?.label)}\n          >\n            {label}\n          </span>\n          <div\n            data-slot=\"line\"\n            data-orientation={orientation}\n            className={cn(\n              'min-w-0 flex-1 border-t',\n              theme.slots.dividerRoot,\n              classNames?.line,\n            )}\n          />\n        </div>\n      );\n    }\n\n    return (\n      <div\n        {...componentAttributes}\n        {...dividerProps}\n        ref={ref}\n        role=\"separator\"\n        aria-orientation={orientation}\n        data-monkeys-component=\"divider\"\n        data-slot=\"root\"\n        data-orientation={orientation}\n        data-state=\"unlabeled\"\n        className={cn(\n          theme.slots.dividerRoot,\n          isVertical ? 'min-h-full self-stretch border-l' : 'w-full border-t',\n          classNames?.root,\n          className,\n        )}\n        style={rootStyle}\n      />\n    );\n  },\n);\n","import * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport { forwardRef, useState, type ReactNode } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n  useMonkeysDirection,\n  useMonkeysLocaleMessages,\n} from '../../provider/context';\nimport { useBaseOverlayPortal } from './internal/overlayPortal';\nimport type {\n  BaseDropdownMenuItem,\n  BaseDropdownMenuPlacement,\n  BaseDropdownMenuProps,\n} from './types';\nimport {\n  getBaseButtonToneClassName,\n  resolveBaseAppearance,\n} from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction validateBoolean(value: unknown, name: string) {\n  if (typeof value !== 'boolean') {\n    throw new TypeError(`BaseDropdownMenu ${name} must be a boolean.`);\n  }\n}\n\nfunction validatePlacement(value: unknown) {\n  if (\n    value !== 'bottom-start' &&\n    value !== 'bottom-end' &&\n    value !== 'top-start' &&\n    value !== 'top-end'\n  ) {\n    throw new TypeError(\n      'BaseDropdownMenu placement must be \"bottom-start\", \"bottom-end\", \"top-start\", or \"top-end\".',\n    );\n  }\n}\n\nfunction validateDirection(value: unknown) {\n  if (value !== undefined && value !== 'ltr' && value !== 'rtl') {\n    throw new TypeError('BaseDropdownMenu dir must be \"ltr\" or \"rtl\".');\n  }\n}\n\nfunction validateItems(items: unknown): asserts items is BaseDropdownMenuItem[] {\n  if (!Array.isArray(items)) {\n    throw new TypeError('BaseDropdownMenu items must be an array.');\n  }\n\n  const values = new Set<string>();\n  for (const [index, item] of items.entries()) {\n    if (!item || typeof item !== 'object' || Array.isArray(item)) {\n      throw new TypeError(`BaseDropdownMenu items[${index}] must be an object.`);\n    }\n    if (typeof item.value !== 'string' || !item.value.trim()) {\n      throw new TypeError(\n        `BaseDropdownMenu items[${index}].value must be a non-empty string.`,\n      );\n    }\n    if (values.has(item.value)) {\n      throw new TypeError(\n        `BaseDropdownMenu item value \"${item.value}\" must be unique.`,\n      );\n    }\n    values.add(item.value);\n    for (const name of ['disabled', 'danger', 'separatorBefore'] as const) {\n      const value = item[name];\n      if (value !== undefined) {\n        validateBoolean(value, `items[${index}].${name}`);\n      }\n    }\n    if (item.onSelect !== undefined && typeof item.onSelect !== 'function') {\n      throw new TypeError(\n        `BaseDropdownMenu items[${index}].onSelect must be a function.`,\n      );\n    }\n  }\n}\n\nfunction resolvePlacement(placement: BaseDropdownMenuPlacement) {\n  const [side, align] = placement.split('-') as [\n    'bottom' | 'top',\n    'end' | 'start',\n  ];\n  return { side, align };\n}\n\nfunction renderTrigger({\n  trigger,\n  triggerLabel,\n  triggerIcon,\n  disabled,\n  theme,\n}: Pick<\n  BaseDropdownMenuProps,\n  'disabled' | 'trigger' | 'triggerIcon' | 'triggerLabel'\n> & {\n  triggerLabel: ReactNode;\n  theme: ReturnType<typeof resolveBaseAppearance>;\n}) {\n  return hasRenderableNode(trigger) ? (\n    <span\n      role=\"button\"\n      tabIndex={disabled ? -1 : 0}\n      aria-disabled={disabled || undefined}\n    >\n      {trigger}\n    </span>\n  ) : (\n    <button\n      type=\"button\"\n      disabled={disabled}\n      aria-label={\n        typeof triggerLabel === 'string' && triggerLabel.trim()\n          ? triggerLabel\n          : undefined\n      }\n      className={cn(\n        theme.slots.buttonBase,\n        getBaseButtonToneClassName(theme),\n        disabled && theme.slots.buttonDisabled,\n      )}\n      style={{\n        ...theme.styles.button,\n        ...(disabled ? theme.styles.buttonDisabled : undefined),\n      }}\n    >\n      {hasRenderableNode(triggerIcon) ? (\n        <span data-slot=\"icon\" className={theme.slots.buttonIcon}>\n          {triggerIcon}\n        </span>\n      ) : null}\n      {hasRenderableNode(triggerLabel) ? (\n        <span data-slot=\"label\" className={theme.slots.buttonLabel}>\n          {triggerLabel}\n        </span>\n      ) : null}\n    </button>\n  );\n}\n\nexport const BaseDropdownMenu = forwardRef<\n  HTMLDivElement,\n  BaseDropdownMenuProps\n>(function BaseDropdownMenu(\n  {\n    items = [],\n    label,\n    trigger,\n    triggerLabel,\n    triggerIcon,\n    disabled = false,\n    open,\n    defaultOpen = false,\n    placement = 'bottom-start',\n    closeOnSelect = true,\n    portal = false,\n    dir,\n    appearance,\n    className,\n    classNames,\n    style,\n    children,\n    onOpenChange,\n    onSelect,\n    ...menuProps\n  },\n  ref,\n) {\n  if (open !== undefined) validateBoolean(open, 'open');\n  validateBoolean(defaultOpen, 'defaultOpen');\n  validateBoolean(disabled, 'disabled');\n  validateBoolean(closeOnSelect, 'closeOnSelect');\n  validateBoolean(portal, 'portal');\n  validatePlacement(placement);\n  validateDirection(dir);\n  validateItems(items);\n\n  const inheritedDirection = useMonkeysDirection();\n  const resolvedDirection = dir ?? inheritedDirection;\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const messages = useMonkeysLocaleMessages().dropdownMenu;\n  const theme = resolveBaseAppearance(resolvedAppearance);\n  const overlayPortal = useBaseOverlayPortal({ disabled: !portal });\n  const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n  const isControlled = open !== undefined;\n  const isOpen = isControlled ? open : uncontrolledOpen;\n  const resolvedTriggerLabel =\n    triggerLabel === undefined ? messages.actions : triggerLabel;\n  const portalState =\n    portal && overlayPortal.shouldPortal ? 'portaled' : 'inline';\n  const { side, align } = resolvePlacement(placement);\n\n  if (\n    triggerLabel === undefined &&\n    (typeof messages.actions !== 'string' || !messages.actions.trim())\n  ) {\n    throw new TypeError(\n      'BaseDropdownMenu locale actions message must be a non-empty string.',\n    );\n  }\n\n  const handleOpenChange = (nextOpen: boolean) => {\n    if (disabled) return;\n    if (!isControlled) {\n      setUncontrolledOpen(nextOpen);\n    }\n    onOpenChange?.(nextOpen);\n  };\n\n  const menuContent = (\n    <DropdownMenu.Content\n      {...componentAttributes}\n      side={side}\n      align={align}\n      sideOffset={6}\n      collisionPadding={8}\n      data-monkeys-component=\"dropdown-menu\"\n      data-slot=\"content\"\n      data-placement={placement}\n      data-portal={portalState}\n      data-tone=\"default\"\n      data-disabled={disabled || undefined}\n      className={cn(theme.slots.dropdownMenu, classNames?.menu)}\n      style={theme.styles.dropdownMenu}\n    >\n      {hasRenderableNode(label) ? (\n        <DropdownMenu.Label\n          {...componentAttributes}\n          data-monkeys-component=\"dropdown-menu\"\n          data-slot=\"label\"\n          data-state=\"static\"\n          className={cn(theme.slots.dropdownLabel, classNames?.label)}\n        >\n          {label}\n        </DropdownMenu.Label>\n      ) : null}\n      {items.map((item) => {\n        const itemDisabled = item.disabled ?? false;\n        const tone = item.danger ? 'danger' : 'default';\n\n        return (\n          <div\n            key={item.value}\n            data-monkeys-component=\"dropdown-menu\"\n            data-slot=\"item-wrapper\"\n          >\n            {item.separatorBefore ? (\n              <DropdownMenu.Separator\n                {...componentAttributes}\n                data-monkeys-component=\"dropdown-menu\"\n                data-slot=\"separator\"\n                data-state=\"static\"\n                className={cn(\n                  theme.slots.dropdownSeparator,\n                  classNames?.separator,\n                )}\n              />\n            ) : null}\n            <DropdownMenu.Item\n              asChild\n              disabled={itemDisabled}\n              onSelect={(event) => {\n                item.onSelect?.(item);\n                onSelect?.(item);\n                if (!closeOnSelect) {\n                  event.preventDefault();\n                }\n              }}\n            >\n              <button\n                {...componentAttributes}\n                type=\"button\"\n                disabled={itemDisabled}\n                data-monkeys-component=\"dropdown-menu\"\n                data-slot=\"item\"\n                data-state={itemDisabled ? 'disabled' : 'enabled'}\n                data-value={item.value}\n                data-placement={placement}\n                data-portal={portalState}\n                data-tone={tone}\n                data-disabled={itemDisabled || undefined}\n                className={cn(\n                  theme.slots.dropdownItem,\n                  item.danger && theme.slots.dropdownItemDanger,\n                  itemDisabled && theme.slots.dropdownItemDisabled,\n                  classNames?.item,\n                )}\n                style={theme.styles.dropdownItem}\n              >\n                {hasRenderableNode(item.icon) ? (\n                  <span\n                    data-slot=\"item-icon\"\n                    className={cn(\n                      theme.slots.dropdownItemIcon,\n                      classNames?.itemIcon,\n                    )}\n                  >\n                    {item.icon}\n                  </span>\n                ) : null}\n                <span\n                  data-slot=\"item-content\"\n                  className={cn(\n                    theme.slots.dropdownItemContent,\n                    classNames?.itemContent,\n                  )}\n                >\n                  <span\n                    data-slot=\"item-label\"\n                    className={cn(\n                      theme.slots.dropdownItemLabel,\n                      classNames?.itemLabel,\n                    )}\n                  >\n                    {item.label}\n                  </span>\n                  {hasRenderableNode(item.description) ? (\n                    <span\n                      data-slot=\"item-description\"\n                      className={cn(\n                        theme.slots.dropdownItemDescription,\n                        classNames?.itemDescription,\n                      )}\n                    >\n                      {item.description}\n                    </span>\n                  ) : null}\n                </span>\n                {hasRenderableNode(item.shortcut) ? (\n                  <span\n                    data-slot=\"item-shortcut\"\n                    className={cn(\n                      theme.slots.dropdownItemShortcut,\n                      classNames?.itemShortcut,\n                    )}\n                  >\n                    {item.shortcut}\n                  </span>\n                ) : null}\n              </button>\n            </DropdownMenu.Item>\n          </div>\n        );\n      })}\n      {children}\n    </DropdownMenu.Content>\n  );\n\n  return (\n    <div\n      {...componentAttributes}\n      {...menuProps}\n      ref={ref}\n      dir={resolvedDirection}\n      data-monkeys-component=\"dropdown-menu\"\n      data-slot=\"root\"\n      data-state={isOpen ? 'open' : 'closed'}\n      data-placement={placement}\n      data-portal={portalState}\n      data-tone=\"default\"\n      data-disabled={disabled || undefined}\n      className={cn(theme.slots.dropdownRoot, classNames?.root, className)}\n      style={style}\n    >\n      <DropdownMenu.Root\n        open={isOpen}\n        onOpenChange={handleOpenChange}\n        dir={resolvedDirection}\n        modal={false}\n      >\n        <DropdownMenu.Trigger\n          {...componentAttributes}\n          asChild\n          disabled={disabled}\n          data-monkeys-component=\"dropdown-menu\"\n          data-slot=\"trigger\"\n          data-placement={placement}\n          data-portal={portalState}\n          data-tone=\"default\"\n          data-disabled={disabled || undefined}\n          className={cn(\n            theme.slots.dropdownTrigger,\n            disabled && theme.slots.dropdownTriggerDisabled,\n            classNames?.trigger,\n          )}\n        >\n          {renderTrigger({\n            trigger,\n            triggerLabel: resolvedTriggerLabel,\n            triggerIcon,\n            disabled,\n            theme,\n          })}\n        </DropdownMenu.Trigger>\n        {portal && overlayPortal.shouldPortal ? (\n          <DropdownMenu.Portal {...overlayPortal.radixPortalProps}>\n            {menuContent}\n          </DropdownMenu.Portal>\n        ) : (\n          menuContent\n        )}\n      </DropdownMenu.Root>\n    </div>\n  );\n});\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n  useMonkeysStatusStates,\n} from '../../provider/context';\nimport type { BaseEmptyStateProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction DefaultEmptyIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-6 w-6\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"1.8\"\n    >\n      <rect width=\"16\" height=\"12\" x=\"4\" y=\"6\" rx=\"2\" />\n      <path d=\"M8 10h8\" />\n      <path d=\"M8 14h5\" />\n    </svg>\n  );\n}\n\nexport const BaseEmptyState = forwardRef<HTMLDivElement, BaseEmptyStateProps>(\n  function BaseEmptyState(\n    {\n      icon = <DefaultEmptyIcon />,\n      title,\n      description,\n      actions,\n      variant,\n      appearance,\n      className,\n      classNames,\n      style,\n      ...stateProps\n    },\n    ref,\n  ) {\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const statusStates = useMonkeysStatusStates();\n    const resolvedVariant = variant ?? statusStates.empty?.variant ?? 'default';\n    const densityClassName =\n      statusStates.density === 'compact'\n        ? 'min-h-0 px-3 py-3'\n        : statusStates.density === 'comfortable'\n          ? 'min-h-56 px-8 py-12'\n          : undefined;\n    const theme = resolveBaseAppearance(resolvedAppearance);\n\n    return (\n      <div\n        {...componentAttributes}\n        {...stateProps}\n        ref={ref}\n        data-monkeys-component=\"empty-state\"\n        data-slot=\"root\"\n        data-state=\"empty\"\n        data-variant={resolvedVariant}\n        data-density={statusStates.density}\n        className={cn(\n          theme.slots.stateRoot,\n          densityClassName,\n          resolvedVariant === 'compact' && 'min-h-0 gap-1 py-3',\n          classNames?.root,\n          className,\n        )}\n        style={{\n          ...theme.styles.stateRoot,\n          ...style,\n        }}\n      >\n        {hasRenderableNode(icon) ? (\n          <div\n            data-slot=\"icon\"\n            data-state=\"empty\"\n            className={cn(theme.slots.stateIcon, classNames?.icon)}\n            style={theme.styles.stateIcon}\n          >\n            {icon}\n          </div>\n        ) : null}\n        {hasRenderableNode(title) ? (\n          <div\n            data-slot=\"title\"\n            data-state=\"empty\"\n            className={cn(theme.slots.stateTitle, classNames?.title)}\n          >\n            {title}\n          </div>\n        ) : null}\n        {hasRenderableNode(description) ? (\n          <div\n            data-slot=\"description\"\n            data-state=\"empty\"\n            className={cn(theme.slots.stateDescription, classNames?.description)}\n          >\n            {description}\n          </div>\n        ) : null}\n        {hasRenderableNode(actions) ? (\n          <div\n            data-slot=\"actions\"\n            data-state=\"empty\"\n            className={cn(theme.slots.stateActions, classNames?.actions)}\n          >\n            {actions}\n          </div>\n        ) : null}\n      </div>\n    );\n  },\n);\n","import {\n  forwardRef,\n  useCallback,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseFieldControlProps, BaseFieldProps } from './types';\nimport {\n  BaseFieldContext,\n  resolveBaseFieldValidationResult,\n  type BaseFieldControlValue,\n} from './internal/baseFieldContext';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction mergeAriaIds(...values: Array<string | undefined>) {\n  const ids = values.flatMap(\n    (value) => value?.split(/\\s+/).filter(Boolean) ?? [],\n  );\n  return ids.length ? Array.from(new Set(ids)).join(' ') : undefined;\n}\n\nfunction resolveOptionalId(\n  value: string | undefined,\n  fallback: string,\n  name: string,\n) {\n  if (value === undefined) return fallback;\n  if (!value.trim() || /\\s/.test(value)) {\n    throw new TypeError(\n      `BaseField ${name} must be a non-empty ID without whitespace.`,\n    );\n  }\n  return value;\n}\n\nexport const BaseField = forwardRef<HTMLDivElement, BaseFieldProps>(\n  function BaseField(\n    {\n      label,\n      description,\n      message,\n      error,\n      required = false,\n      disabled = false,\n      htmlFor,\n      descriptionId,\n      messageId,\n      errorId,\n      validate,\n      validationMode = 'onBlur',\n      children,\n      appearance,\n      className,\n      classNames,\n      style,\n      ...fieldProps\n    },\n    ref,\n  ) {\n    for (const [name, value] of [\n      ['required', required],\n      ['disabled', disabled],\n    ] as const) {\n      if (typeof value !== 'boolean') {\n        throw new TypeError(`BaseField ${name} must be a boolean.`);\n      }\n    }\n    if (validate !== undefined && typeof validate !== 'function') {\n      throw new TypeError('BaseField validate must be a function.');\n    }\n    if (validationMode !== 'onBlur' && validationMode !== 'onChange') {\n      throw new TypeError(\n        'BaseField validationMode must be \"onBlur\" or \"onChange\".',\n      );\n    }\n\n    const generatedId = useId();\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const hasDescription = hasRenderableNode(description);\n    const [internalError, setInternalError] = useState<string | null>(null);\n    const registeredControlsRef = useRef(new Set<symbol>());\n    const validateRef = useRef(validate);\n    const validationModeRef = useRef(validationMode);\n    const disabledRef = useRef(disabled);\n    validateRef.current = validate;\n    validationModeRef.current = validationMode;\n    disabledRef.current = disabled;\n    const hasValidator = validate !== undefined;\n\n    useEffect(() => {\n      if (!hasValidator || disabled) {\n        setInternalError(null);\n      }\n    }, [disabled, hasValidator]);\n\n    useEffect(() => {\n      if (hasValidator && registeredControlsRef.current.size !== 1) {\n        throw new TypeError(\n          'BaseField with validate must contain exactly one compatible Base control.',\n        );\n      }\n    }, [hasValidator]);\n\n    const registerControl = useCallback((controlKey: symbol) => {\n      const registeredControls = registeredControlsRef.current;\n      if (\n        validateRef.current !== undefined &&\n        !registeredControls.has(controlKey) &&\n        registeredControls.size > 0\n      ) {\n        throw new TypeError(\n          'BaseField with validate supports exactly one compatible Base control. Use BaseFieldset for control groups.',\n        );\n      }\n      registeredControls.add(controlKey);\n      return () => {\n        registeredControls.delete(controlKey);\n      };\n    }, []);\n\n    const runValidation = useCallback(\n      (mode: 'onBlur' | 'onChange', value: BaseFieldControlValue) => {\n        const currentValidate = validateRef.current;\n        if (\n          disabledRef.current ||\n          currentValidate === undefined ||\n          validationModeRef.current !== mode\n        ) {\n          return;\n        }\n\n        const result = resolveBaseFieldValidationResult(currentValidate(value));\n        if (result === null) {\n          setInternalError(null);\n          return;\n        }\n        setInternalError(result);\n      },\n      [],\n    );\n\n    const notifyBlur = useCallback(\n      (value: BaseFieldControlValue) => runValidation('onBlur', value),\n      [runValidation],\n    );\n    const notifyChange = useCallback(\n      (value: BaseFieldControlValue) => runValidation('onChange', value),\n      [runValidation],\n    );\n\n    const hasExternalError = hasRenderableNode(error);\n    const resolvedError = hasExternalError ? error : internalError;\n    const hasError = hasRenderableNode(resolvedError);\n    const hasMessage = !hasError && hasRenderableNode(message);\n    const resolvedMessage = hasError ? resolvedError : message;\n    const resolvedControlId = htmlFor ?? `${generatedId}-control`;\n    const resolvedDescriptionId = hasDescription\n      ? resolveOptionalId(\n          descriptionId,\n          `${generatedId}-description`,\n          'descriptionId',\n        )\n      : undefined;\n    const resolvedMessageId = hasMessage\n      ? resolveOptionalId(messageId, `${generatedId}-message`, 'messageId')\n      : undefined;\n    const resolvedErrorId = hasError\n      ? resolveOptionalId(errorId, `${generatedId}-error`, 'errorId')\n      : undefined;\n    const controlProps: BaseFieldControlProps = {\n      id: resolvedControlId,\n      'aria-describedby': mergeAriaIds(\n        resolvedDescriptionId,\n        resolvedMessageId,\n      ),\n      'aria-errormessage': resolvedErrorId,\n      'aria-invalid': hasError ? true : undefined,\n      'aria-required': required ? true : undefined,\n      required: required || undefined,\n      disabled: disabled || undefined,\n    };\n    const renderedChildren =\n      typeof children === 'function' ? children(controlProps) : children;\n    const fieldContextValue = useMemo(\n      () => ({\n        invalid: hasError,\n        registerControl,\n        notifyBlur,\n        notifyChange,\n      }),\n      [hasError, notifyBlur, notifyChange, registerControl],\n    );\n\n    return (\n      <div\n        {...componentAttributes}\n        {...fieldProps}\n        ref={ref}\n        aria-disabled={disabled || undefined}\n        data-monkeys-component=\"field\"\n        data-slot=\"root\"\n        data-required={required || undefined}\n        data-disabled={disabled || undefined}\n        data-invalid={hasError || undefined}\n        className={cn(\n          theme.slots.fieldRoot,\n          disabled && theme.slots.controlDisabled,\n          classNames?.root,\n          className,\n        )}\n        style={{\n          ...theme.styles.field,\n          ...style,\n        }}\n      >\n        {hasRenderableNode(label) ? (\n          <div\n            data-slot=\"label-row\"\n            className={cn(theme.slots.fieldLabelRow, classNames?.labelRow)}\n          >\n            <label\n              htmlFor={typeof children === 'function' ? resolvedControlId : htmlFor}\n              data-slot=\"label\"\n              className={cn(theme.slots.fieldLabel, classNames?.label)}\n            >\n              {label}\n              {required ? (\n                <span\n                  aria-hidden=\"true\"\n                  data-slot=\"required-indicator\"\n                  className={cn(\n                    theme.slots.fieldRequired,\n                    classNames?.required,\n                  )}\n                >\n                  {' '}\n                  *\n                </span>\n              ) : null}\n            </label>\n          </div>\n        ) : null}\n\n        {hasDescription ? (\n          <div\n            id={resolvedDescriptionId}\n            data-slot=\"description\"\n            className={cn(\n              theme.slots.fieldDescription,\n              classNames?.description,\n            )}\n          >\n            {description}\n          </div>\n        ) : null}\n\n        {hasRenderableNode(renderedChildren) ? (\n          <div\n            data-slot=\"control\"\n            className={cn(theme.slots.fieldControl, classNames?.control)}\n            style={theme.styles.fieldControl}\n          >\n            <BaseFieldContext.Provider value={fieldContextValue}>\n              {renderedChildren}\n            </BaseFieldContext.Provider>\n          </div>\n        ) : null}\n\n        {hasRenderableNode(resolvedMessage) ? (\n          <div\n            id={hasError ? resolvedErrorId : resolvedMessageId}\n            role={hasError ? 'alert' : undefined}\n            data-slot={hasError ? 'error' : 'message'}\n            className={cn(\n              theme.slots.fieldMessage,\n              hasError && 'text-destructive-text',\n              classNames?.message,\n            )}\n          >\n            {resolvedMessage}\n          </div>\n        ) : null}\n      </div>\n    );\n  },\n);\n","import { forwardRef, useId } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport { resolveBaseAppearance } from './theme';\nimport type { BaseFieldsetProps } from './types';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction mergeAriaIds(...values: Array<string | undefined>) {\n  const ids = values.flatMap(\n    (value) => value?.split(/\\s+/).filter(Boolean) ?? [],\n  );\n  return ids.length ? Array.from(new Set(ids)).join(' ') : undefined;\n}\n\nfunction resolveOptionalId(\n  value: string | undefined,\n  fallback: string,\n  name: string,\n) {\n  if (value === undefined) return fallback;\n  if (!value.trim() || /\\s/.test(value)) {\n    throw new TypeError(\n      `BaseFieldset ${name} must be a non-empty ID without whitespace.`,\n    );\n  }\n  return value;\n}\n\nexport const BaseFieldset = forwardRef<HTMLFieldSetElement, BaseFieldsetProps>(\n  function BaseFieldset(\n    {\n      children,\n      legend,\n      description,\n      descriptionId,\n      error,\n      errorId,\n      disabled,\n      appearance,\n      className,\n      classNames,\n      style,\n      'aria-describedby': ariaDescribedBy,\n      'aria-errormessage': ariaErrorMessage,\n      ...fieldsetProps\n    },\n    ref,\n  ) {\n    const generatedId = useId();\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n\n    if (\n      !hasRenderableNode(legend) ||\n      (typeof legend === 'string' && !legend.trim())\n    ) {\n      throw new TypeError('BaseFieldset legend must contain an accessible name.');\n    }\n    if (disabled !== undefined && typeof disabled !== 'boolean') {\n      throw new TypeError('BaseFieldset disabled must be a boolean.');\n    }\n\n    const hasDescription = hasRenderableNode(description);\n    const hasError = hasRenderableNode(error);\n    const resolvedDescriptionId = hasDescription\n      ? resolveOptionalId(\n          descriptionId,\n          `${generatedId}-description`,\n          'descriptionId',\n        )\n      : undefined;\n    const resolvedErrorId = hasError\n      ? resolveOptionalId(errorId, `${generatedId}-error`, 'errorId')\n      : undefined;\n    return (\n      <fieldset\n        {...componentAttributes}\n        {...fieldsetProps}\n        ref={ref}\n        disabled={disabled}\n        aria-describedby={mergeAriaIds(ariaDescribedBy, resolvedDescriptionId)}\n        aria-errormessage={mergeAriaIds(ariaErrorMessage, resolvedErrorId)}\n        data-monkeys-component=\"fieldset\"\n        data-slot=\"root\"\n        className={cn(theme.slots.fieldsetRoot, classNames?.root, className)}\n        style={{\n          ...theme.styles.fieldset,\n          ...style,\n        }}\n      >\n        <legend\n          data-slot=\"legend\"\n          className={cn(theme.slots.fieldsetLegend, classNames?.legend)}\n          style={theme.styles.fieldsetLegend}\n        >\n          {legend}\n        </legend>\n        {hasDescription ? (\n          <div\n            id={resolvedDescriptionId}\n            data-slot=\"description\"\n            className={cn(\n              theme.slots.fieldsetDescription,\n              classNames?.description,\n            )}\n            style={theme.styles.fieldsetDescription}\n          >\n            {description}\n          </div>\n        ) : null}\n        {hasError ? (\n          <div\n            id={resolvedErrorId}\n            data-slot=\"error\"\n            className={cn(theme.slots.fieldsetError, classNames?.error)}\n            style={theme.styles.fieldsetError}\n          >\n            {error}\n          </div>\n        ) : null}\n        <div\n          data-slot=\"content\"\n          className={cn(theme.slots.fieldsetContent, classNames?.content)}\n          style={theme.styles.fieldsetContent}\n        >\n          {children}\n        </div>\n      </fieldset>\n    );\n  },\n);\n","import { createElement, forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport {\n  getBaseHeadingSizeClassName,\n  getBaseTypographyToneClassName,\n  resolveBaseAppearance,\n} from './theme';\nimport type { BaseHeadingLevel, BaseHeadingProps } from './types';\nimport { cn } from './utils';\n\nfunction isHeadingLevel(value: unknown): value is BaseHeadingLevel {\n  return (\n    typeof value === 'number' &&\n    Number.isInteger(value) &&\n    value >= 1 &&\n    value <= 6\n  );\n}\n\nexport const BaseHeading = forwardRef<HTMLHeadingElement, BaseHeadingProps>(\n  function BaseHeading(\n    {\n      level = 2,\n      children,\n      size = 'lg',\n      tone = 'default',\n      appearance,\n      className,\n      classNames,\n      style,\n      ...headingProps\n    },\n    ref,\n  ) {\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n\n    if (!isHeadingLevel(level)) {\n      throw new RangeError('BaseHeading level must be an integer from 1 to 6.');\n    }\n\n    return createElement(\n      `h${level}`,\n      {\n        ...componentAttributes,\n        ...headingProps,\n        ref,\n        'data-monkeys-component': 'heading',\n        'data-slot': 'root',\n        'data-level': level,\n        'data-size': size,\n        'data-tone': tone,\n        className: cn(\n          theme.slots.headingRoot,\n          getBaseHeadingSizeClassName(theme, size),\n          getBaseTypographyToneClassName(theme, tone),\n          classNames?.root,\n          className,\n        ),\n        style: {\n          ...theme.styles.heading,\n          ...style,\n        },\n      },\n      children,\n    );\n  },\n);\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport {\n  resolveBaseAppearance,\n  resolveBaseGridColumns,\n  resolveBaseLayoutAlign,\n  resolveBaseLayoutJustify,\n  resolveBaseLayoutLength,\n} from './theme';\nimport type { BaseGridProps } from './types';\nimport { cn } from './utils';\n\nexport const BaseGrid = forwardRef<HTMLDivElement, BaseGridProps>(\n  function BaseGrid(\n    {\n      children,\n      columns = 1,\n      gap,\n      align = 'stretch',\n      justify = 'start',\n      appearance,\n      className,\n      classNames,\n      style,\n      ...gridProps\n    },\n    ref,\n  ) {\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const resolvedGap =\n      gap === undefined\n        ? undefined\n        : resolveBaseLayoutLength('BaseGrid', 'gap', gap);\n\n    return (\n      <div\n        {...componentAttributes}\n        {...gridProps}\n        ref={ref}\n        data-monkeys-component=\"grid\"\n        data-slot=\"root\"\n        data-align={align}\n        data-justify={justify}\n        data-columns={columns}\n        className={cn(theme.slots.gridRoot, classNames?.root, className)}\n        style={{\n          ...theme.styles.grid,\n          gridTemplateColumns: resolveBaseGridColumns(columns),\n          gap: resolvedGap,\n          alignItems: resolveBaseLayoutAlign('BaseGrid', align),\n          justifyContent: resolveBaseLayoutJustify('BaseGrid', justify),\n          ...style,\n        }}\n      >\n        {children}\n      </div>\n    );\n  },\n);\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseInputProps } from './types';\nimport { useBaseFieldControl } from './internal/baseFieldContext';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst controlSizeClassNames = {\n  sm: 'h-8 px-2.5 text-xs',\n  md: 'h-9 px-3 text-sm',\n  lg: 'h-10 px-3.5 text-base',\n} as const;\n\nexport const BaseInput = forwardRef<HTMLInputElement, BaseInputProps>(\n  function BaseInput(\n    {\n      icon,\n      trailing,\n      invalid = false,\n      disabled = false,\n      readOnly = false,\n      controlSize,\n      appearance,\n      className,\n      classNames,\n      style,\n      'aria-invalid': nativeAriaInvalid,\n      onBlur,\n      onChange,\n      ...inputProps\n    },\n    ref,\n  ) {\n    for (const [name, value] of [\n      ['invalid', invalid],\n      ['disabled', disabled],\n      ['readOnly', readOnly],\n    ] as const) {\n      if (typeof value !== 'boolean') {\n        throw new TypeError(`BaseInput ${name} must be a boolean.`);\n      }\n    }\n    if (\n      controlSize !== undefined &&\n      controlSize !== 'sm' &&\n      controlSize !== 'md' &&\n      controlSize !== 'lg'\n    ) {\n      throw new TypeError('BaseInput controlSize must be \"sm\", \"md\", or \"lg\".');\n    }\n\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const fieldControl = useBaseFieldControl();\n    const resolvedInvalid = invalid || fieldControl.invalid;\n\n    return (\n      <div\n        {...componentAttributes}\n        data-monkeys-component=\"input\"\n        data-slot=\"root\"\n        data-size={controlSize}\n        data-invalid={resolvedInvalid || undefined}\n        data-disabled={disabled || undefined}\n        data-readonly={readOnly || undefined}\n        className={cn(\n          theme.slots.controlWrapper,\n          resolvedInvalid && theme.slots.controlInvalid,\n          disabled && theme.slots.controlDisabled,\n          readOnly && theme.slots.controlReadOnly,\n          classNames?.root,\n          className,\n        )}\n        style={{\n          ...theme.styles.control,\n          ...(resolvedInvalid ? theme.styles.controlInvalid : undefined),\n          ...(disabled ? theme.styles.controlDisabled : undefined),\n          ...style,\n        }}\n      >\n        {hasRenderableNode(icon) ? (\n          <span\n            data-slot=\"icon\"\n            className={cn(theme.slots.controlIcon, classNames?.icon)}\n          >\n            {icon}\n          </span>\n        ) : null}\n        <input\n          {...inputProps}\n          ref={ref}\n          disabled={disabled}\n          readOnly={readOnly}\n          aria-invalid={nativeAriaInvalid ?? (resolvedInvalid || undefined)}\n          data-slot=\"control\"\n          data-size={controlSize}\n          data-invalid={resolvedInvalid || undefined}\n          data-disabled={disabled || undefined}\n          data-readonly={readOnly || undefined}\n          className={cn(\n            theme.slots.controlBase,\n            theme.slots.controlInput,\n            controlSize && controlSizeClassNames[controlSize],\n            classNames?.control,\n          )}\n          onBlur={(event) => {\n            onBlur?.(event);\n            fieldControl.notifyBlur(event.currentTarget.value);\n          }}\n          onChange={(event) => {\n            onChange?.(event);\n            fieldControl.notifyChange(event.currentTarget.value);\n          }}\n        />\n        {hasRenderableNode(trailing) ? (\n          <span\n            data-slot=\"trailing\"\n            className={cn(theme.slots.controlTrailing, classNames?.trailing)}\n          >\n            {trailing}\n          </span>\n        ) : null}\n      </div>\n    );\n  },\n);\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport { resolveBaseAppearance } from './theme';\nimport type { BaseInputGroupProps } from './types';\nimport { cn, hasRenderableNode } from './utils';\n\nexport const BaseInputGroup = forwardRef<\n  HTMLDivElement,\n  BaseInputGroupProps\n>(function BaseInputGroup(\n  {\n    children,\n    startElement,\n    endElement,\n    startAddon,\n    endAddon,\n    invalid = false,\n    disabled = false,\n    appearance,\n    className,\n    classNames,\n    style,\n    ...groupProps\n  },\n  ref,\n) {\n  for (const [name, value] of [\n    ['invalid', invalid],\n    ['disabled', disabled],\n  ] as const) {\n    if (typeof value !== 'boolean') {\n      throw new TypeError(`BaseInputGroup ${name} must be a boolean.`);\n    }\n  }\n\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n\n  return (\n    <div\n      {...componentAttributes}\n      {...groupProps}\n      ref={ref}\n      data-monkeys-component=\"input-group\"\n      data-slot=\"root\"\n      data-invalid={invalid || undefined}\n      data-disabled={disabled || undefined}\n      className={cn(\n        theme.slots.inputGroupRoot,\n        invalid && theme.slots.inputGroupInvalid,\n        disabled && theme.slots.inputGroupDisabled,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.inputGroup,\n        ...(invalid ? theme.styles.inputGroupInvalid : undefined),\n        ...(disabled ? theme.styles.inputGroupDisabled : undefined),\n        ...style,\n      }}\n    >\n      {hasRenderableNode(startAddon) ? (\n        <span\n          data-slot=\"start-addon\"\n          data-placement=\"start\"\n          className={cn(\n            theme.slots.inputGroupStartAddon,\n            classNames?.startAddon,\n          )}\n          style={theme.styles.inputGroupAddon}\n        >\n          {startAddon}\n        </span>\n      ) : null}\n      {hasRenderableNode(startElement) ? (\n        <span\n          data-slot=\"start-element\"\n          data-placement=\"start\"\n          className={cn(\n            theme.slots.inputGroupStartElement,\n            classNames?.startElement,\n          )}\n          style={theme.styles.inputGroupElement}\n        >\n          {startElement}\n        </span>\n      ) : null}\n      <div\n        data-slot=\"content\"\n        className={cn(\n          theme.slots.inputGroupContent,\n          classNames?.content,\n        )}\n        style={theme.styles.inputGroupContent}\n      >\n        {children}\n      </div>\n      {hasRenderableNode(endElement) ? (\n        <span\n          data-slot=\"end-element\"\n          data-placement=\"end\"\n          className={cn(\n            theme.slots.inputGroupEndElement,\n            classNames?.endElement,\n          )}\n          style={theme.styles.inputGroupElement}\n        >\n          {endElement}\n        </span>\n      ) : null}\n      {hasRenderableNode(endAddon) ? (\n        <span\n          data-slot=\"end-addon\"\n          data-placement=\"end\"\n          className={cn(\n            theme.slots.inputGroupEndAddon,\n            classNames?.endAddon,\n          )}\n          style={theme.styles.inputGroupAddon}\n        >\n          {endAddon}\n        </span>\n      ) : null}\n    </div>\n  );\n});\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport {\n  resolveBaseAppearance,\n  resolveBaseLayoutAlign,\n  resolveBaseLayoutJustify,\n  resolveBaseLayoutLength,\n} from './theme';\nimport type { BaseInlineProps } from './types';\nimport { cn } from './utils';\n\nexport const BaseInline = forwardRef<HTMLDivElement, BaseInlineProps>(\n  function BaseInline(\n    {\n      children,\n      gap,\n      align = 'center',\n      justify = 'start',\n      wrap = true,\n      appearance,\n      className,\n      classNames,\n      style,\n      ...inlineProps\n    },\n    ref,\n  ) {\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    if (typeof wrap !== 'boolean') {\n      throw new TypeError('BaseInline wrap must be a boolean.');\n    }\n    const resolvedGap =\n      gap === undefined\n        ? undefined\n        : resolveBaseLayoutLength('BaseInline', 'gap', gap);\n\n    return (\n      <div\n        {...componentAttributes}\n        {...inlineProps}\n        ref={ref}\n        data-monkeys-component=\"inline\"\n        data-slot=\"root\"\n        data-align={align}\n        data-justify={justify}\n        data-wrap={wrap ? 'wrap' : 'nowrap'}\n        className={cn(theme.slots.inlineRoot, classNames?.root, className)}\n        style={{\n          ...theme.styles.inline,\n          gap: resolvedGap,\n          alignItems: resolveBaseLayoutAlign('BaseInline', align),\n          justifyContent: resolveBaseLayoutJustify('BaseInline', justify),\n          flexWrap: wrap ? 'wrap' : 'nowrap',\n          ...style,\n        }}\n      >\n        {children}\n      </div>\n    );\n  },\n);\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport { resolveBaseAppearance } from './theme';\nimport type { BaseKbdProps } from './types';\nimport { cn } from './utils';\n\nexport const BaseKbd = forwardRef<HTMLElement, BaseKbdProps>(function BaseKbd(\n  {\n    children,\n    appearance,\n    className,\n    classNames,\n    style,\n    ...kbdProps\n  },\n  ref,\n) {\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n\n  return (\n    <kbd\n      {...componentAttributes}\n      {...kbdProps}\n      ref={ref}\n      data-monkeys-component=\"kbd\"\n      data-slot=\"root\"\n      className={cn(theme.slots.kbdRoot, classNames?.root, className)}\n      style={{\n        ...theme.styles.kbd,\n        ...style,\n      }}\n    >\n      {children}\n    </kbd>\n  );\n});\n","import {\n  forwardRef,\n  useCallback,\n  useEffect,\n  useRef,\n  useState,\n  type CSSProperties,\n  type ElementType,\n  type ForwardedRef,\n  type KeyboardEvent,\n  type PointerEvent as ReactPointerEvent,\n} from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n  useMonkeysLocaleMessages,\n} from '../../provider/context';\nimport type {\n  BaseLayoutPaneProps,\n  BaseLayoutProps,\n  BaseLayoutResizeHandleProps,\n  BaseLayoutSplitProps,\n  BaseLayoutOrientation,\n} from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst DEFAULT_SPLIT_SIZE = 50;\nconst DEFAULT_MIN_SIZE = 20;\nconst DEFAULT_MAX_SIZE = 80;\nconst DEFAULT_KEYBOARD_STEP = 2.5;\n\ntype CssVariableStyle = CSSProperties & Record<`--${string}`, string>;\n\nfunction assignRef<T>(ref: ForwardedRef<T>, value: T | null) {\n  if (typeof ref === 'function') {\n    ref(value);\n  } else if (ref) {\n    ref.current = value;\n  }\n}\n\nfunction assertBoolean(name: string, value: boolean) {\n  if (typeof value !== 'boolean') {\n    throw new TypeError(`BaseLayout ${name} must be a boolean.`);\n  }\n}\n\nfunction assertOrientation(orientation: BaseLayoutOrientation) {\n  if (orientation !== 'horizontal' && orientation !== 'vertical') {\n    throw new TypeError(\n      'BaseLayout orientation must be \"horizontal\" or \"vertical\".',\n    );\n  }\n}\n\nfunction toCssSize(value: number | string | undefined, fallback: string) {\n  if (typeof value === 'number') {\n    if (!Number.isFinite(value) || value < 0) {\n      throw new Error('BaseLayout size and gap props must be finite, non-negative numbers.');\n    }\n    return `${value}px`;\n  }\n  if (typeof value === 'string') {\n    if (value.trim().length === 0) {\n      throw new TypeError('BaseLayout size and gap string props must not be empty.');\n    }\n    return value;\n  }\n  return fallback;\n}\n\nfunction assertPercent(name: string, value: number) {\n  if (!Number.isFinite(value)) {\n    throw new Error(`BaseLayoutSplit ${name} must be a finite number.`);\n  }\n  if (value < 0 || value > 100) {\n    throw new Error(`BaseLayoutSplit ${name} must be between 0 and 100.`);\n  }\n  return value;\n}\n\nfunction clamp(value: number, min: number, max: number) {\n  return Math.min(Math.max(value, min), max);\n}\n\nfunction resolveSplitBounds({\n  minSize = DEFAULT_MIN_SIZE,\n  maxSize = DEFAULT_MAX_SIZE,\n  keyboardStep = DEFAULT_KEYBOARD_STEP,\n}: Pick<BaseLayoutSplitProps, 'minSize' | 'maxSize' | 'keyboardStep'>) {\n  const min = assertPercent('minSize', minSize);\n  const max = assertPercent('maxSize', maxSize);\n  if (min > max) {\n    throw new Error('BaseLayoutSplit minSize cannot be greater than maxSize.');\n  }\n  if (!Number.isFinite(keyboardStep) || keyboardStep <= 0) {\n    throw new Error('BaseLayoutSplit keyboardStep must be a finite positive number.');\n  }\n  return { min, max, keyboardStep };\n}\n\nfunction resolveSplitSize(\n  name: string,\n  value: number | undefined,\n  fallback: number,\n  min: number,\n  max: number,\n) {\n  return clamp(assertPercent(name, value ?? fallback), min, max);\n}\n\nfunction getSeparatorOrientation(orientation: BaseLayoutOrientation) {\n  return orientation === 'horizontal' ? 'vertical' : 'horizontal';\n}\n\nfunction isRtl(element: HTMLElement) {\n  const ownerWindow = element.ownerDocument.defaultView;\n  if (ownerWindow) {\n    return ownerWindow.getComputedStyle(element).direction === 'rtl';\n  }\n  return element.closest('[dir=\"rtl\"]') !== null;\n}\n\nfunction setPointerCaptureIfAvailable(target: HTMLElement, pointerId: number) {\n  if (!target.setPointerCapture) return;\n  try {\n    target.setPointerCapture(pointerId);\n  } catch (error) {\n    const OwnerDOMException = target.ownerDocument.defaultView?.DOMException;\n    if (\n      OwnerDOMException &&\n      error instanceof OwnerDOMException &&\n      error.name === 'NotFoundError'\n    ) {\n      // Synthetic pointer events may not register an active platform pointer.\n      // Document listeners below preserve the drag contract in that environment.\n      return;\n    }\n    throw error;\n  }\n}\n\nexport const BaseLayout = forwardRef<HTMLDivElement, BaseLayoutProps>(\n  function BaseLayout(\n    {\n      header,\n      sidebar,\n      aside,\n      sidebarLabel,\n      asideLabel,\n      footer,\n      children,\n      sidebarSize,\n      asideSize,\n      gap,\n      fullHeight = false,\n      appearance,\n      className,\n      classNames,\n      style,\n      ...layoutProps\n    },\n    ref,\n  ) {\n    assertBoolean('fullHeight', fullHeight);\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const hasHeader = hasRenderableNode(header);\n    const hasSidebar = hasRenderableNode(sidebar);\n    const hasAside = hasRenderableNode(aside);\n    const hasFooter = hasRenderableNode(footer);\n    const bodyColumns = [\n      hasSidebar ? 'var(--base-layout-sidebar-size)' : undefined,\n      'minmax(0, 1fr)',\n      hasAside ? 'var(--base-layout-aside-size)' : undefined,\n    ]\n      .filter(Boolean)\n      .join(' ');\n    const layoutRows = [\n      hasHeader ? 'auto' : undefined,\n      'minmax(0, 1fr)',\n      hasFooter ? 'auto' : undefined,\n    ]\n      .filter(Boolean)\n      .join(' ');\n    const resolvedGap = gap !== undefined ? toCssSize(gap, '0px') : undefined;\n\n    const layoutStyle: CssVariableStyle = {\n      ...theme.styles.layout,\n      '--base-layout-sidebar-size': toCssSize(sidebarSize, '16rem'),\n      '--base-layout-aside-size': toCssSize(asideSize, '20rem'),\n      gridTemplateRows: layoutRows,\n      ...(resolvedGap !== undefined ? { gap: resolvedGap } : {}),\n      ...style,\n    };\n    const bodyStyle: CSSProperties = {\n      ...theme.styles.layoutBody,\n      gridTemplateColumns: bodyColumns,\n      ...(resolvedGap !== undefined ? { gap: resolvedGap } : {}),\n    };\n\n    return (\n      <div\n        {...componentAttributes}\n        {...layoutProps}\n        ref={ref}\n        data-monkeys-component=\"layout\"\n        data-slot=\"root\"\n        data-full-height={fullHeight ? 'true' : 'false'}\n        className={cn(\n          theme.slots.layoutRoot,\n          fullHeight && theme.slots.layoutRootFull,\n          classNames?.root,\n          className,\n        )}\n        style={layoutStyle}\n      >\n        {hasHeader ? (\n          <div\n            data-slot=\"header\"\n            className={cn(theme.slots.layoutHeader, classNames?.header)}\n            style={theme.styles.layoutHeader}\n          >\n            {header}\n          </div>\n        ) : null}\n\n        <div\n          data-slot=\"body\"\n          className={cn(theme.slots.layoutBody, classNames?.body)}\n          style={bodyStyle}\n        >\n          {hasSidebar ? (\n            <aside\n              aria-label={sidebarLabel}\n              data-slot=\"sidebar\"\n              className={cn(theme.slots.layoutSidebar, classNames?.sidebar)}\n              style={theme.styles.layoutSidebar}\n            >\n              {sidebar}\n            </aside>\n          ) : null}\n\n          <main\n            data-slot=\"main\"\n            className={cn(theme.slots.layoutMain, classNames?.main)}\n            style={theme.styles.layoutMain}\n          >\n            {children}\n          </main>\n\n          {hasAside ? (\n            <aside\n              aria-label={asideLabel}\n              data-slot=\"aside\"\n              className={cn(theme.slots.layoutAside, classNames?.aside)}\n              style={theme.styles.layoutAside}\n            >\n              {aside}\n            </aside>\n          ) : null}\n        </div>\n\n        {hasFooter ? (\n          <div\n            data-slot=\"footer\"\n            className={cn(theme.slots.layoutFooter, classNames?.footer)}\n            style={theme.styles.layoutFooter}\n          >\n            {footer}\n          </div>\n        ) : null}\n      </div>\n    );\n  },\n);\n\nexport const BaseLayoutPane = forwardRef<HTMLElement, BaseLayoutPaneProps>(\n  function BaseLayoutPane(\n    {\n      as = 'div',\n      scrollable = false,\n      bordered = true,\n      surface = 'default',\n      children,\n      appearance,\n      className,\n      classNames,\n      style,\n      ...paneProps\n    },\n    ref,\n  ) {\n    assertBoolean('scrollable', scrollable);\n    assertBoolean('bordered', bordered);\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const Component = as as ElementType;\n\n    return (\n      <Component\n        {...componentAttributes}\n        {...paneProps}\n        ref={ref}\n        data-monkeys-component=\"layout-pane\"\n        data-slot=\"root\"\n        data-scrollable={scrollable ? 'true' : 'false'}\n        data-surface={surface}\n        className={cn(\n          theme.slots.layoutPane,\n          scrollable && theme.slots.layoutPaneScrollable,\n          bordered && theme.slots.layoutPaneBordered,\n          surface === 'muted' && theme.slots.layoutPaneMuted,\n          surface === 'soft' && theme.slots.layoutPaneSoft,\n          surface === 'transparent' && theme.slots.layoutPaneTransparent,\n          classNames?.root,\n          className,\n        )}\n        style={{\n          ...theme.styles.layoutPane,\n          ...style,\n        }}\n      >\n        {children}\n      </Component>\n    );\n  },\n);\n\nexport const BaseLayoutResizeHandle = forwardRef<\n  HTMLDivElement,\n  BaseLayoutResizeHandleProps\n>(function BaseLayoutResizeHandle(\n  {\n    orientation = 'horizontal',\n    resizable = false,\n    disabled = false,\n    size,\n    minSize,\n    maxSize,\n    label,\n    appearance,\n    className,\n    classNames,\n    style,\n    tabIndex,\n    ...handleProps\n  },\n  ref,\n) {\n  assertOrientation(orientation);\n  assertBoolean('resizable', resizable);\n  assertBoolean('disabled', disabled);\n  const resolvedMin = minSize === undefined ? undefined : assertPercent('minSize', minSize);\n  const resolvedMax = maxSize === undefined ? undefined : assertPercent('maxSize', maxSize);\n  if (\n    resolvedMin !== undefined &&\n    resolvedMax !== undefined &&\n    resolvedMin > resolvedMax\n  ) {\n    throw new Error('BaseLayoutSplit minSize cannot be greater than maxSize.');\n  }\n  const resolvedSize =\n    size === undefined\n      ? undefined\n      : clamp(\n          assertPercent('size', size),\n          resolvedMin ?? 0,\n          resolvedMax ?? 100,\n        );\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const messages = useMonkeysLocaleMessages().layout;\n  const theme = resolveBaseAppearance(resolvedAppearance);\n  const resolvedLabel = label ?? messages.resizePanels;\n  if (\n    resizable &&\n    (typeof resolvedLabel !== 'string' || resolvedLabel.trim().length === 0)\n  ) {\n    throw new TypeError('BaseLayoutResizeHandle label must be a non-empty string.');\n  }\n  const interactive = resizable && !disabled;\n  const separatorOrientation = getSeparatorOrientation(orientation);\n\n  return (\n    <div\n      {...componentAttributes}\n      {...handleProps}\n      ref={ref}\n      data-monkeys-component=\"layout-resize-handle\"\n      data-slot=\"handle\"\n      data-orientation={orientation}\n      data-state={interactive ? 'enabled' : disabled ? 'disabled' : 'static'}\n      role={resizable ? 'separator' : undefined}\n      aria-label={resizable ? resolvedLabel : undefined}\n      aria-orientation={resizable ? separatorOrientation : undefined}\n      aria-valuemin={resizable ? resolvedMin : undefined}\n      aria-valuemax={resizable ? resolvedMax : undefined}\n      aria-valuenow={resizable ? resolvedSize : undefined}\n      aria-disabled={resizable && disabled ? true : undefined}\n      tabIndex={interactive ? tabIndex ?? 0 : undefined}\n      className={cn(\n        theme.slots.layoutResizeHandle,\n        orientation === 'horizontal'\n          ? theme.slots.layoutResizeHandleHorizontal\n          : theme.slots.layoutResizeHandleVertical,\n        !interactive && theme.slots.layoutResizeHandleDisabled,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.layoutResizeHandle,\n        ...style,\n      }}\n    >\n      <span\n        aria-hidden=\"true\"\n        data-slot=\"indicator\"\n        className={cn(\n          theme.slots.layoutResizeHandleIndicator,\n          orientation === 'horizontal' ? 'h-8 w-px' : 'h-px w-8',\n          classNames?.indicator,\n        )}\n      />\n    </div>\n  );\n});\n\nexport const BaseLayoutSplit = forwardRef<HTMLDivElement, BaseLayoutSplitProps>(\n  function BaseLayoutSplit(\n    {\n      orientation = 'horizontal',\n      primary,\n      secondary,\n      children,\n      resizable = false,\n      disabled = false,\n      size,\n      defaultSize,\n      minSize,\n      maxSize,\n      gap,\n      keyboardStep,\n      resizeLabel,\n      appearance,\n      className,\n      classNames,\n      style,\n      onSizeChange,\n      ...splitProps\n    },\n    ref,\n  ) {\n    assertOrientation(orientation);\n    assertBoolean('resizable', resizable);\n    assertBoolean('disabled', disabled);\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const bounds = resolveSplitBounds({ minSize, maxSize, keyboardStep });\n    const initialSize = resolveSplitSize(\n      'defaultSize',\n      defaultSize,\n      DEFAULT_SPLIT_SIZE,\n      bounds.min,\n      bounds.max,\n    );\n    const [uncontrolledSize, setUncontrolledSize] = useState(initialSize);\n    const rootRef = useRef<HTMLDivElement | null>(null);\n    const cleanupRef = useRef<(() => void) | null>(null);\n    const controlled = size !== undefined;\n    const interactive = resizable && !disabled;\n    const renderedSize = resolveSplitSize(\n      'size',\n      controlled ? size : uncontrolledSize,\n      initialSize,\n      bounds.min,\n      bounds.max,\n    );\n    const resolvedDirection = splitProps.dir ?? componentAttributes.dir;\n\n    const setRootRef = useCallback(\n      (node: HTMLDivElement | null) => {\n        rootRef.current = node;\n        assignRef(ref, node);\n      },\n      [ref],\n    );\n\n    const commitSize = useCallback(\n      (nextSize: number) => {\n        const clampedSize = clamp(nextSize, bounds.min, bounds.max);\n        if (!controlled) {\n          setUncontrolledSize(clampedSize);\n        }\n        onSizeChange?.(clampedSize);\n      },\n      [bounds.max, bounds.min, controlled, onSizeChange],\n    );\n\n    const updateFromPointer = useCallback(\n      (event: Pick<PointerEvent, 'clientX' | 'clientY'>) => {\n        const root = rootRef.current;\n        if (!root) return;\n        const rect = root.getBoundingClientRect();\n        const total = orientation === 'horizontal' ? rect.width : rect.height;\n        if (!Number.isFinite(total) || total <= 0) return;\n        const offset =\n          orientation === 'horizontal'\n            ? isRtl(root)\n              ? rect.right - event.clientX\n              : event.clientX - rect.left\n            : event.clientY - rect.top;\n        commitSize((offset / total) * 100);\n      },\n      [commitSize, orientation],\n    );\n\n    const stopResize = useCallback(() => {\n      const cleanup = cleanupRef.current;\n      cleanupRef.current = null;\n      cleanup?.();\n    }, []);\n\n    useEffect(() => {\n      if (!interactive) stopResize();\n      return stopResize;\n    }, [interactive, stopResize]);\n\n    const handlePointerDown = (event: ReactPointerEvent<HTMLDivElement>) => {\n      if (!interactive || (event.button !== 0 && event.pointerType !== 'touch')) {\n        return;\n      }\n      event.preventDefault();\n      stopResize();\n      updateFromPointer(event);\n\n      const pointerId = event.pointerId;\n      const target = event.currentTarget;\n      const ownerDocument = target.ownerDocument;\n\n      const handleMove = (nextEvent: PointerEvent) => {\n        if (nextEvent.pointerId !== pointerId) return;\n        updateFromPointer(nextEvent);\n      };\n      const handleStop = (nextEvent: PointerEvent) => {\n        if (nextEvent.pointerId !== pointerId) return;\n        stopResize();\n      };\n      const handleLostCapture = (nextEvent: PointerEvent) => {\n        if (nextEvent.pointerId !== pointerId) return;\n        stopResize();\n      };\n\n      ownerDocument.addEventListener('pointermove', handleMove);\n      ownerDocument.addEventListener('pointerup', handleStop);\n      ownerDocument.addEventListener('pointercancel', handleStop);\n      target.addEventListener('lostpointercapture', handleLostCapture);\n      cleanupRef.current = () => {\n        ownerDocument.removeEventListener('pointermove', handleMove);\n        ownerDocument.removeEventListener('pointerup', handleStop);\n        ownerDocument.removeEventListener('pointercancel', handleStop);\n        target.removeEventListener('lostpointercapture', handleLostCapture);\n        if (target.hasPointerCapture?.(pointerId)) {\n          target.releasePointerCapture?.(pointerId);\n        }\n      };\n      setPointerCaptureIfAvailable(target, pointerId);\n    };\n\n    const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n      if (!interactive) return;\n      const step = event.shiftKey ? bounds.keyboardStep * 4 : bounds.keyboardStep;\n      const rtl = orientation === 'horizontal' && isRtl(event.currentTarget);\n      let nextSize: number | undefined;\n\n      if (event.key === 'Home') nextSize = bounds.min;\n      if (event.key === 'End') nextSize = bounds.max;\n      if (orientation === 'horizontal' && event.key === 'ArrowLeft') {\n        nextSize = renderedSize + (rtl ? step : -step);\n      }\n      if (orientation === 'horizontal' && event.key === 'ArrowRight') {\n        nextSize = renderedSize + (rtl ? -step : step);\n      }\n      if (orientation === 'vertical' && event.key === 'ArrowUp') {\n        nextSize = renderedSize - step;\n      }\n      if (orientation === 'vertical' && event.key === 'ArrowDown') {\n        nextSize = renderedSize + step;\n      }\n\n      if (nextSize === undefined) return;\n      event.preventDefault();\n      commitSize(nextSize);\n    };\n\n    const resolvedGap = gap !== undefined ? toCssSize(gap, '0px') : undefined;\n    const resizeTrack =\n      resolvedGap !== undefined ? 'var(--base-layout-split-gap)' : 'auto';\n    const resizeHandleStyle: CSSProperties | undefined =\n      resolvedGap !== undefined\n        ? orientation === 'horizontal'\n          ? { width: 'var(--base-layout-split-gap)' }\n          : { height: 'var(--base-layout-split-gap)' }\n        : undefined;\n    const splitStyle: CssVariableStyle = {\n      ...theme.styles.layoutSplit,\n      [orientation === 'horizontal' ? 'gridTemplateColumns' : 'gridTemplateRows']:\n        resizable\n          ? `${renderedSize}% ${resizeTrack} minmax(0, 1fr)`\n          : `${renderedSize}% minmax(0, 1fr)`,\n      ...(resizable ? { gap: 0 } : {}),\n      ...(resolvedGap !== undefined\n        ? {\n            '--base-layout-split-gap': resolvedGap,\n            ...(resizable ? {} : { gap: resolvedGap }),\n          }\n        : {}),\n      ...style,\n    };\n\n    return (\n      <div\n        {...componentAttributes}\n        {...splitProps}\n        ref={setRootRef}\n        data-monkeys-component=\"layout-split\"\n        data-slot=\"root\"\n        data-orientation={orientation}\n        data-state={interactive ? 'enabled' : disabled ? 'disabled' : 'static'}\n        data-controlled={controlled ? 'true' : 'false'}\n        className={cn(\n          theme.slots.layoutSplitRoot,\n          orientation === 'horizontal'\n            ? theme.slots.layoutSplitHorizontal\n            : theme.slots.layoutSplitVertical,\n          classNames?.root,\n          className,\n        )}\n        style={splitStyle}\n      >\n        <div\n          data-slot=\"primary\"\n          className={cn(\n            theme.slots.layoutSplitPane,\n            theme.slots.layoutSplitPrimary,\n            classNames?.primary,\n          )}\n          style={theme.styles.layoutSplitPane}\n        >\n          {hasRenderableNode(primary) ? primary : children}\n        </div>\n\n        {resizable ? (\n          <BaseLayoutResizeHandle\n            orientation={orientation}\n            resizable\n            disabled={disabled}\n            size={renderedSize}\n            minSize={bounds.min}\n            maxSize={bounds.max}\n            label={resizeLabel}\n            appearance={appearance}\n            dir={resolvedDirection}\n            className={classNames?.handle}\n            style={resizeHandleStyle}\n            onPointerDown={handlePointerDown}\n            onKeyDown={handleKeyDown}\n          />\n        ) : null}\n\n        <div\n          data-slot=\"secondary\"\n          className={cn(\n            theme.slots.layoutSplitPane,\n            theme.slots.layoutSplitSecondary,\n            classNames?.secondary,\n          )}\n          style={theme.styles.layoutSplitPane}\n        >\n          {secondary}\n        </div>\n      </div>\n    );\n  },\n);\n","import {\n  createContext,\n  useContext,\n  useEffect,\n  useMemo,\n  useState,\n  type CSSProperties,\n  type ReactNode,\n  type Ref,\n  type RefObject,\n} from 'react';\n\nexport const skeletonAnimations = [\n  'pulse',\n  'shimmer',\n  'shimmer-soft',\n  'shimmer-diagonal',\n  'shimmer-vertical',\n  'drift',\n  'outline',\n  'none',\n] as const;\nexport type SkeletonAnimation = (typeof skeletonAnimations)[number];\nexport type SkeletonGroupAnimation = SkeletonAnimation | 'shimmer-shared' | 'shimmer-stagger';\n\nexport function validateSkeletonAnimation(value: unknown, grouped = false): void {\n  if (value === undefined || skeletonAnimations.includes(value as SkeletonAnimation)) return;\n  if (grouped && (value === 'shimmer-shared' || value === 'shimmer-stagger')) return;\n  throw new TypeError(\n    `Skeleton animation must be ${skeletonAnimations.join(', ')}${grouped ? ', shimmer-shared, or shimmer-stagger' : ''}.`,\n  );\n}\n\ntype Registration = { item?: number };\ntype Registry = {\n  nodes: Map<HTMLElement, Registration>;\n  update: () => void;\n};\ntype MotionContextValue = {\n  animation: SkeletonGroupAnimation;\n  disabled: boolean;\n  registry: Registry;\n};\nconst MotionContext = createContext<MotionContextValue | null>(null);\nconst ItemContext = createContext<number | undefined>(undefined);\n\nfunction clearGeometry(node: HTMLElement) {\n  delete node.dataset.skeletonReady;\n  for (const name of ['width', 'offset', 'delay'])\n    node.style.removeProperty(`--monkeys-skeleton-${name}`);\n}\n\nfunction useGroupRegistry(\n  animation: SkeletonGroupAnimation,\n  disabled: boolean,\n  enabled: boolean,\n  containerRef?: RefObject<HTMLElement>,\n) {\n  const registry = useMemo<Registry>(() => ({ nodes: new Map(), update: () => {} }), []);\n  useEffect(() => {\n    if (!enabled || disabled || (animation !== 'shimmer-shared' && animation !== 'shimmer-stagger'))\n      return;\n    const query = window.matchMedia('(prefers-reduced-motion: reduce)');\n    let observer: ResizeObserver | undefined;\n    let frame: number | undefined;\n    let active = false;\n    const observed = new Set<HTMLElement>();\n    const measure = () => {\n      frame = undefined;\n      if (!active) return;\n      const nodes = [...registry.nodes.keys()].filter((node) => node.isConnected);\n      nodes.sort((a, b) => (a.compareDocumentPosition(b) & 2 ? 1 : -1));\n      if (animation === 'shimmer-stagger') {\n        nodes.forEach((node, index) => {\n          const item = registry.nodes.get(node)?.item ?? index;\n          node.style.setProperty('--monkeys-skeleton-delay', `${Math.min(item * 80, 400)}ms`);\n        });\n        return;\n      }\n      // Container-only resizing can move fixed-size shapes (for example space-between).\n      let container = containerRef?.current ?? nodes[0]?.parentElement;\n      for (const node of nodes)\n        while (container && !container.contains(node)) container = container.parentElement;\n      const targets = new Set<HTMLElement>(nodes);\n      for (const node of nodes) {\n        for (let ancestor = node.parentElement; ancestor; ancestor = ancestor.parentElement) {\n          targets.add(ancestor);\n          if (ancestor === container) break;\n        }\n      }\n      if (container) targets.add(container);\n      for (const node of observed)\n        if (!targets.has(node)) {\n          observer?.unobserve(node);\n          observed.delete(node);\n        }\n      for (const node of targets)\n        if (!observed.has(node)) {\n          observer?.observe(node);\n          observed.add(node);\n        }\n      // Read every box before writing offsets. The union also works for native table rows without a wrapper.\n      const boxes = nodes.map((node) => node.getBoundingClientRect());\n      const scales = nodes.map((node, index) => {\n        const style = getComputedStyle(node);\n        const extras =\n          style.boxSizing === 'border-box'\n            ? 0\n            : parseFloat(style.paddingLeft) +\n              parseFloat(style.paddingRight) +\n              parseFloat(style.borderLeftWidth) +\n              parseFloat(style.borderRightWidth);\n        const width = parseFloat(style.width) + extras;\n        const scale = width ? boxes[index].width / width : 1;\n        // CSSOM serializes fractional widths with less precision than DOMRect.\n        return Math.abs(scale - 1) < 0.0001 ? 1 : scale;\n      });\n      const left = Math.min(...boxes.map((box) => box.left));\n      const right = Math.max(...boxes.map((box) => box.right));\n      nodes.forEach((node, index) => {\n        const box = boxes[index];\n        if (!box.width || !box.height) {\n          clearGeometry(node);\n          return;\n        }\n        const scale = scales[index];\n        node.style.setProperty('--monkeys-skeleton-width', `${(right - left) / scale}px`);\n        node.style.setProperty('--monkeys-skeleton-offset', `${(left - box.left) / scale}px`);\n        if (!node.dataset.skeletonReady) {\n          // Newly mounted shapes join the same CSS phase; geometry updates never restart it.\n          node.style.setProperty('--monkeys-skeleton-delay', `${-(performance.now() % 2600)}ms`);\n          node.dataset.skeletonReady = 'true';\n        }\n      });\n    };\n    const schedule = () => {\n      if (active && frame === undefined) frame = window.requestAnimationFrame(measure);\n    };\n    const stop = () => {\n      active = false;\n      observer?.disconnect();\n      observer = undefined;\n      observed.clear();\n      if (frame !== undefined) window.cancelAnimationFrame(frame);\n      frame = undefined;\n      window.removeEventListener('resize', schedule);\n      window.removeEventListener('scroll', schedule, true);\n      registry.nodes.forEach((_, node) => clearGeometry(node));\n    };\n    const start = () => {\n      stop();\n      if (\n        query.matches ||\n        (animation === 'shimmer-shared' && typeof ResizeObserver === 'undefined')\n      )\n        return;\n      active = true;\n      if (animation === 'shimmer-shared') {\n        observer = new ResizeObserver(schedule);\n        window.addEventListener('resize', schedule);\n        window.addEventListener('scroll', schedule, { capture: true, passive: true });\n      }\n      schedule();\n    };\n    registry.update = schedule;\n    start();\n    query.addEventListener('change', start);\n    return () => {\n      stop();\n      query.removeEventListener('change', start);\n      registry.update = () => {};\n    };\n  }, [animation, disabled, enabled, registry, containerRef]);\n  // Reordering existing registered items can change their geometry without changing size.\n  useEffect(() => {\n    registry.update();\n  });\n  return registry;\n}\n\n/** A DOM-free boundary: composites retain their existing layout and measured roots. */\nexport function SkeletonScope({\n  animation,\n  animated,\n  children,\n  independent = false,\n  containerRef,\n}: {\n  animation?: SkeletonGroupAnimation;\n  animated?: boolean;\n  children?: ReactNode;\n  independent?: boolean;\n  containerRef?: RefObject<HTMLElement>;\n}) {\n  validateSkeletonAnimation(animation, true);\n  if (animated !== undefined && typeof animated !== 'boolean')\n    throw new TypeError('SkeletonGroup animated must be a boolean.');\n  const parent = useContext(MotionContext);\n  const inheritedItem = useContext(ItemContext);\n  const ownsGroup = independent || animation !== undefined || !parent;\n  const mode = animation ?? parent?.animation ?? 'pulse';\n  const disabled = !!parent?.disabled || animated === false || mode === 'none';\n  const registry = useGroupRegistry(mode, disabled, ownsGroup, containerRef);\n  const value = useMemo(\n    () => ({ animation: mode, disabled, registry: ownsGroup ? registry : parent!.registry }),\n    [mode, disabled, ownsGroup, registry, parent],\n  );\n  const content = <MotionContext.Provider value={value}>{children}</MotionContext.Provider>;\n  return (\n    <ItemContext.Provider value={ownsGroup ? undefined : inheritedItem}>\n      {content}\n    </ItemContext.Provider>\n  );\n}\n\nexport function SkeletonItem({ index, children }: { index: number; children?: ReactNode }) {\n  const parent = useContext(ItemContext);\n  return <ItemContext.Provider value={parent ?? index}>{children}</ItemContext.Provider>;\n}\n\n/** Preserve callback-ref cleanup (React 19) as well as the React 18 null callback. */\nexport function useSkeletonRef<T>(receive: (element: T | null) => void, forwardedRef?: Ref<T>) {\n  return useMemo(() => {\n    let cleanup: (() => void) | undefined;\n    return (element: T | null) => {\n      receive(element);\n      if (typeof forwardedRef === 'function') {\n        if (cleanup) {\n          cleanup();\n          cleanup = undefined;\n        } else if (element === null) {\n          forwardedRef(null);\n          return;\n        }\n        if (element !== null) {\n          const result = forwardedRef(element) as unknown;\n          if (typeof result === 'function') cleanup = result as () => void;\n        }\n      } else if (forwardedRef) (forwardedRef as { current: T | null }).current = element;\n    };\n  }, [receive, forwardedRef]);\n}\n\nexport function useSkeletonMotion(\n  animation?: SkeletonAnimation,\n  animated = true,\n  forwardedRef?: Ref<HTMLDivElement>,\n) {\n  validateSkeletonAnimation(animation);\n  const group = useContext(MotionContext);\n  const item = useContext(ItemContext);\n  const mode = !animated || group?.disabled ? 'none' : animation ?? group?.animation ?? 'pulse';\n  const [node, setNode] = useState<HTMLDivElement | null>(null);\n  const ref = useSkeletonRef(setNode, forwardedRef);\n  const registry =\n    animation === undefined && (mode === 'shimmer-shared' || mode === 'shimmer-stagger')\n      ? group?.registry\n      : undefined;\n  useEffect(() => {\n    if (!node || !registry) return;\n    registry.nodes.set(node, { item });\n    registry.update();\n    return () => {\n      registry.nodes.delete(node);\n      clearGeometry(node);\n      registry.update();\n    };\n  }, [node, registry, item, mode]);\n  return {\n    ref,\n    mode,\n    style:\n      mode === 'shimmer-stagger' && item !== undefined\n        ? ({ '--monkeys-skeleton-delay': `${Math.min(item * 80, 400)}ms` } as CSSProperties)\n        : undefined,\n  };\n}\n","import { forwardRef } from 'react';\nimport { useSkeletonMotion } from '../skeleton/motion';\n\nimport { useMonkeysBaseAppearance, useMonkeysComponentAttributes } from '../../provider/context';\nimport type { BaseSkeletonProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn } from './utils';\n\nconst variantClassNames = {\n  line: 'h-4 w-full',\n  block: 'h-24 w-full',\n  circle: 'aspect-square h-10 rounded-full',\n} as const;\n\nexport const BaseSkeleton = forwardRef<HTMLDivElement, BaseSkeletonProps>(function BaseSkeleton(\n  {\n    variant = 'line',\n    animated = true,\n    animation,\n    appearance,\n    className,\n    classNames,\n    style,\n    ...skeletonProps\n  },\n  ref,\n) {\n  if (variant !== 'line' && variant !== 'block' && variant !== 'circle') {\n    throw new TypeError('BaseSkeleton variant must be \"line\", \"block\", or \"circle\".');\n  }\n  if (typeof animated !== 'boolean') {\n    throw new TypeError('BaseSkeleton animated must be a boolean.');\n  }\n\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n  const motion = useSkeletonMotion(animation, animated, ref);\n\n  return (\n    <div\n      {...componentAttributes}\n      {...skeletonProps}\n      ref={motion.ref}\n      aria-hidden=\"true\"\n      data-monkeys-component=\"skeleton\"\n      data-slot=\"root\"\n      data-variant={variant}\n      data-animated={motion.mode !== 'none'}\n      data-state={motion.mode !== 'none' ? 'animated' : 'static'}\n      data-skeleton-animation={motion.mode}\n      className={cn(\n        theme.slots.skeletonRoot,\n        variantClassNames[variant],\n        motion.mode === 'pulse' && 'motion-safe:animate-pulse motion-reduce:animate-none',\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.skeleton,\n        ...motion.style,\n        ...style,\n      }}\n    />\n  );\n});\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n  useMonkeysLocaleMessages,\n  useMonkeysStatusStates,\n} from '../../provider/context';\nimport { BaseSkeleton } from './BaseSkeleton';\nimport { SkeletonScope } from '../skeleton/motion';\nimport type { BaseLoadingStateProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction DefaultLoadingIcon({ className }: { className?: string }) {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className={className}\n      fill=\"none\"\n    >\n      <circle\n        cx=\"12\"\n        cy=\"12\"\n        r=\"9\"\n        className=\"opacity-25\"\n        stroke=\"currentColor\"\n        strokeWidth=\"3\"\n      />\n      <path\n        className=\"opacity-75\"\n        fill=\"currentColor\"\n        d=\"M12 3a9 9 0 0 1 9 9h-3a6 6 0 0 0-6-6V3Z\"\n      />\n    </svg>\n  );\n}\n\nexport const BaseLoadingState = forwardRef<\n  HTMLDivElement,\n  BaseLoadingStateProps\n>(function BaseLoadingState(\n  {\n    icon,\n    title,\n    description,\n    actions,\n    variant,\n    animation,\n    appearance,\n    className,\n    classNames,\n    style,\n    role = 'status',\n    'aria-live': ariaLive = 'polite',\n    'aria-busy': ariaBusy = true,\n    'aria-label': nativeAriaLabel,\n    'aria-labelledby': nativeAriaLabelledBy,\n    ...stateProps\n  },\n  ref,\n) {\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const { loading } = useMonkeysLocaleMessages();\n  const statusStates = useMonkeysStatusStates();\n  const resolvedVariant = variant ?? statusStates.loading?.variant ?? 'spinner';\n  const densityClassName =\n    statusStates.density === 'compact'\n      ? 'min-h-0 px-3 py-3'\n      : statusStates.density === 'comfortable'\n        ? 'min-h-56 px-8 py-12'\n        : undefined;\n  const theme = resolveBaseAppearance(resolvedAppearance);\n  const resolvedIcon =\n    resolvedVariant === 'skeleton' && icon === undefined\n      ? undefined\n      : icon === undefined\n        ? <DefaultLoadingIcon className={theme.slots.loadingSpinner} />\n        : icon;\n  const resolvedAriaLabel =\n    nativeAriaLabel ??\n    (nativeAriaLabelledBy === undefined\n      ? typeof title === 'string'\n        ? title\n        : loading.spinner\n      : undefined);\n\n  return (\n    <div\n      {...componentAttributes}\n      {...stateProps}\n      ref={ref}\n      role={role}\n      aria-live={ariaLive}\n      aria-busy={ariaBusy}\n      aria-label={resolvedAriaLabel}\n      aria-labelledby={nativeAriaLabelledBy}\n      data-monkeys-component=\"loading-state\"\n      data-slot=\"root\"\n      data-state=\"loading\"\n      data-variant={resolvedVariant}\n      data-density={statusStates.density}\n      className={cn(theme.slots.stateRoot, densityClassName, classNames?.root, className)}\n      style={{\n        ...theme.styles.stateRoot,\n        ...style,\n      }}\n    >\n      {resolvedVariant === 'skeleton' ? (\n        <SkeletonScope animation={animation}>\n          <div className=\"flex w-full max-w-sm flex-col gap-3\" data-slot=\"skeleton\">\n            <BaseSkeleton variant=\"block\" className=\"h-20\" />\n            <BaseSkeleton variant=\"line\" className=\"w-4/5\" />\n            <BaseSkeleton variant=\"line\" className=\"w-3/5\" />\n          </div>\n        </SkeletonScope>\n      ) : hasRenderableNode(resolvedIcon) ? (\n        <div\n          data-slot=\"icon\"\n          data-state=\"loading\"\n          className={cn(theme.slots.stateIcon, classNames?.icon)}\n          style={theme.styles.stateIcon}\n        >\n          {resolvedIcon}\n        </div>\n      ) : null}\n      {resolvedVariant !== 'skeleton' && hasRenderableNode(title) ? (\n        <div\n          data-slot=\"title\"\n          data-state=\"loading\"\n          className={cn(theme.slots.stateTitle, classNames?.title)}\n        >\n          {title}\n        </div>\n      ) : null}\n      {resolvedVariant !== 'skeleton' && hasRenderableNode(description) ? (\n        <div\n          data-slot=\"description\"\n          data-state=\"loading\"\n          className={cn(theme.slots.stateDescription, classNames?.description)}\n        >\n          {description}\n        </div>\n      ) : null}\n      {hasRenderableNode(actions) ? (\n        <div\n          data-slot=\"actions\"\n          data-state=\"loading\"\n          className={cn(theme.slots.stateActions, classNames?.actions)}\n        >\n          {actions}\n        </div>\n      ) : null}\n    </div>\n  );\n});\n","/** Browser-facing URL boundary. Never serialize credentials or executable/document schemes. */\nexport function safeDisplayUrl(value: unknown, kind: 'link' | 'media'): string | undefined {\n  if (typeof value !== 'string') return undefined;\n  const text = value.trim();\n  if (!text || /[\\u0000-\\u001f\\u007f\\\\]/.test(text)) return undefined;\n  // Scheme-relative parsing must not change when the consumer page uses another protocol.\n  if (/^https?:/i.test(text) && !/^https?:\\/\\//i.test(text)) return undefined;\n  let url: URL;\n  try { url = new URL(text, 'https://monkeys.invalid/'); } catch { return undefined; }\n  if (url.username || url.password) return undefined;\n  if (url.protocol === 'http:' || url.protocol === 'https:') return text;\n  if (kind === 'link' && (url.protocol === 'mailto:' || url.protocol === 'tel:')) return text;\n  if (url.protocol === 'blob:') {\n    if (url.pathname.startsWith('null/')) return text;\n    try {\n      const origin = new URL(url.pathname);\n      if (['https:', 'http:'].includes(origin.protocol) && !origin.username && !origin.password) return text;\n    } catch { /* Malformed blob URL. */ }\n  }\n  return undefined;\n}\n\n/** Keep safe responsive images; reject the entire list if any candidate is unsafe or malformed. */\nexport function safeDisplaySrcSet(value: unknown): string | undefined {\n  if (typeof value !== 'string' || !value.trim()) return undefined;\n  const candidates = value.split(',');\n  for (const candidate of candidates) {\n    const parts = candidate.trim().split(/\\s+/);\n    if (!safeDisplayUrl(parts[0], 'media') || parts.length > 2 ||\n        (parts.length === 2 && !/^(?:[1-9]\\d*w|(?:\\d+(?:\\.\\d+)?|\\.\\d+)x)$/.test(parts[1]!))) return undefined;\n  }\n  return value;\n}\n","import { forwardRef, useEffect, useRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport {\n  getBaseTextSizeClassName,\n  getBaseTypographyToneClassName,\n  resolveBaseAppearance,\n} from './theme';\nimport type { BaseLinkProps } from './types';\nimport { cn } from './utils';\nimport { safeDisplayUrl } from '../safeDisplayUrl';\n\nexport const BaseLink = forwardRef<HTMLAnchorElement, BaseLinkProps>(\n  function BaseLink(\n    {\n      children,\n      openOnMount = false,\n      size = 'md',\n      tone = 'primary',\n      appearance,\n      className,\n      classNames,\n      style,\n      ...linkProps\n    },\n    ref,\n  ) {\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const href = safeDisplayUrl(linkProps.href, 'link');\n    const rejected = linkProps.href !== undefined && href === undefined;\n    const attempted = useRef<string>();\n    useEffect(() => {\n      if (!openOnMount || !href || linkProps.target !== '_blank' || linkProps['aria-disabled'] === true || linkProps['aria-disabled'] === 'true' || attempted.current === href) return;\n      attempted.current = href;\n      window.open(href, '_blank', 'noopener,noreferrer');\n    }, [openOnMount, href, linkProps.target, linkProps['aria-disabled']]);\n\n    return (\n      <a\n        {...componentAttributes}\n        {...linkProps}\n        href={href}\n        aria-disabled={rejected ? true : linkProps['aria-disabled']}\n        onClickCapture={event => {\n          if (rejected) { event.preventDefault(); event.stopPropagation(); return; }\n          linkProps.onClickCapture?.(event);\n        }}\n        onClick={event => {\n          if (rejected) { event.preventDefault(); event.stopPropagation(); return; }\n          linkProps.onClick?.(event);\n        }}\n        onAuxClickCapture={event => {\n          if (rejected) { event.preventDefault(); event.stopPropagation(); return; }\n          linkProps.onAuxClickCapture?.(event);\n        }}\n        ref={ref}\n        data-monkeys-component=\"link\"\n        data-slot=\"root\"\n        data-size={size}\n        data-tone={tone}\n        className={cn(\n          theme.slots.linkRoot,\n          getBaseTextSizeClassName(theme, size),\n          getBaseTypographyToneClassName(theme, tone),\n          classNames?.root,\n          className,\n        )}\n        style={{\n          ...theme.styles.link,\n          ...style,\n        }}\n      >\n        {children}\n      </a>\n    );\n  },\n);\n","import { forwardRef, type Ref } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport {\n  getBaseListMarkerClassName,\n  getBaseListSpacingClassName,\n  resolveBaseAppearance,\n} from './theme';\nimport type { BaseListItemProps, BaseListProps } from './types';\nimport { cn } from './utils';\n\nexport const BaseList = forwardRef<\n  HTMLOListElement | HTMLUListElement,\n  BaseListProps\n>(function BaseList(\n  {\n    ordered = false,\n    marker = 'auto',\n    spacing = 'default',\n    children,\n    appearance,\n    className,\n    classNames,\n    style,\n    ...listProps\n  },\n  ref,\n) {\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n  const sharedProps = {\n    ...componentAttributes,\n    ...listProps,\n    'data-monkeys-component': 'list',\n    'data-slot': 'root',\n    'data-list-type': ordered ? 'ordered' : 'unordered',\n    'data-marker': marker,\n    'data-spacing': spacing,\n    className: cn(\n      theme.slots.listRoot,\n      getBaseListSpacingClassName(theme, spacing),\n      marker !== 'auto' && getBaseListMarkerClassName(theme, marker),\n      classNames?.root,\n      className,\n    ),\n    style: {\n      ...theme.styles.list,\n      ...style,\n    },\n    children,\n  };\n\n  return ordered ? (\n    <ol {...sharedProps} ref={ref as Ref<HTMLOListElement>} />\n  ) : (\n    <ul {...sharedProps} ref={ref as Ref<HTMLUListElement>} />\n  );\n});\n\nexport const BaseListItem = forwardRef<HTMLLIElement, BaseListItemProps>(\n  function BaseListItem(\n    {\n      children,\n      appearance,\n      className,\n      classNames,\n      style,\n      ...itemProps\n    },\n    ref,\n  ) {\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n\n    return (\n      <li\n        {...componentAttributes}\n        {...itemProps}\n        ref={ref}\n        data-monkeys-component=\"list-item\"\n        data-slot=\"item\"\n        className={cn(theme.slots.listItem, classNames?.root, className)}\n        style={{\n          ...theme.styles.listItem,\n          ...style,\n        }}\n      >\n        {children}\n      </li>\n    );\n  },\n);\n","import {\n  forwardRef,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState,\n  type KeyboardEvent,\n} from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n  useMonkeysLocaleMessages,\n} from '../../provider/context';\nimport type { BaseMultiSelectOption, BaseMultiSelectProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst typeaheadResetDelay = 500;\n\nfunction validateMultiSelectProps({\n  options,\n  value,\n  defaultValue,\n  invalid,\n  disabled,\n  required,\n  openForPreview,\n  maxTagCount,\n}: Pick<\n  BaseMultiSelectProps,\n  | 'defaultValue'\n  | 'disabled'\n  | 'invalid'\n  | 'maxTagCount'\n  | 'openForPreview'\n  | 'options'\n  | 'required'\n  | 'value'\n>) {\n  for (const [name, state] of [\n    ['invalid', invalid],\n    ['disabled', disabled],\n    ['required', required],\n    ['openForPreview', openForPreview],\n  ] as const) {\n    if (typeof state !== 'boolean') {\n      throw new TypeError(`BaseMultiSelect ${name} must be a boolean.`);\n    }\n  }\n  if (maxTagCount !== undefined && typeof maxTagCount !== 'number') {\n    throw new TypeError('BaseMultiSelect maxTagCount must be a number.');\n  }\n  if (options !== undefined && !Array.isArray(options)) {\n    throw new TypeError('BaseMultiSelect options must be an array.');\n  }\n  options?.forEach((option, index) => {\n    if (!option || typeof option !== 'object') {\n      throw new TypeError(\n        `BaseMultiSelect option at index ${index} must be an object.`,\n      );\n    }\n    if (typeof option.value !== 'string') {\n      throw new TypeError(\n        `BaseMultiSelect option value at index ${index} must be a string.`,\n      );\n    }\n    if (\n      option.disabled !== undefined &&\n      typeof option.disabled !== 'boolean'\n    ) {\n      throw new TypeError(\n        `BaseMultiSelect option disabled at index ${index} must be a boolean.`,\n      );\n    }\n    if (\n      option.textValue !== undefined &&\n      typeof option.textValue !== 'string'\n    ) {\n      throw new TypeError(\n        `BaseMultiSelect option textValue at index ${index} must be a string.`,\n      );\n    }\n  });\n\n  for (const [name, values] of [\n    ['value', value],\n    ['defaultValue', defaultValue],\n  ] as const) {\n    if (values !== undefined && !Array.isArray(values)) {\n      throw new TypeError(`BaseMultiSelect ${name} must be an array.`);\n    }\n    values?.forEach((item, index) => {\n      if (typeof item !== 'string') {\n        throw new TypeError(\n          `BaseMultiSelect ${name} item at index ${index} must be a string.`,\n        );\n      }\n    });\n  }\n}\n\nfunction normalizeValues(values: readonly string[] | undefined) {\n  const nextValues: string[] = [];\n  const seen = new Set<string>();\n\n  values?.forEach((value) => {\n    if (seen.has(value)) return;\n    seen.add(value);\n    nextValues.push(value);\n  });\n\n  return nextValues;\n}\n\nfunction getNextEnabledIndex(\n  options: BaseMultiSelectOption[],\n  currentIndex: number,\n  direction: 1 | -1,\n) {\n  if (!options.length) return -1;\n  const startIndex = currentIndex >= 0 ? currentIndex : direction === 1 ? -1 : 0;\n\n  for (let offset = 1; offset <= options.length; offset += 1) {\n    const nextIndex =\n      (startIndex + offset * direction + options.length) % options.length;\n    if (!options[nextIndex]?.disabled) return nextIndex;\n  }\n\n  return -1;\n}\n\nfunction getBoundaryEnabledIndex(\n  options: BaseMultiSelectOption[],\n  boundary: 'first' | 'last',\n) {\n  if (boundary === 'first') {\n    return options.findIndex((option) => !option.disabled);\n  }\n  for (let index = options.length - 1; index >= 0; index -= 1) {\n    if (!options[index]?.disabled) return index;\n  }\n  return -1;\n}\n\nfunction getSafeTagCount(maxTagCount: number | undefined, total: number) {\n  if (maxTagCount === undefined || !Number.isFinite(maxTagCount)) return total;\n  return Math.max(0, Math.min(total, Math.floor(maxTagCount)));\n}\n\nfunction getOptionText(option: BaseMultiSelectOption) {\n  if (option.textValue !== undefined) return option.textValue;\n  if (typeof option.label === 'string') return option.label;\n  return option.value;\n}\n\nfunction toDomId(value: string) {\n  return value.replace(/[^a-zA-Z0-9_-]/g, '-');\n}\n\nexport const BaseMultiSelect = forwardRef<HTMLDivElement, BaseMultiSelectProps>(\n  function BaseMultiSelect(\n    {\n      options,\n      value,\n      defaultValue,\n      name,\n      placeholder,\n      icon,\n      invalid = false,\n      disabled = false,\n      required = false,\n      openForPreview = false,\n      maxTagCount,\n      removeLabel,\n      emptyLabel,\n      appearance,\n      className,\n      classNames,\n      style,\n      id,\n      'aria-invalid': nativeAriaInvalid,\n      'aria-label': nativeAriaLabel,\n      'aria-labelledby': nativeAriaLabelledBy,\n      'aria-describedby': nativeAriaDescribedBy,\n      'aria-errormessage': nativeAriaErrorMessage,\n      onValueChange,\n      ...rootProps\n    },\n    ref,\n  ) {\n    validateMultiSelectProps({\n      options,\n      value,\n      defaultValue,\n      invalid,\n      disabled,\n      required,\n      openForPreview,\n      maxTagCount,\n    });\n\n    const messages = useMonkeysLocaleMessages().multiSelect;\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const generatedId = useId();\n    const multiSelectId = id ?? generatedId;\n    const controlId = `${multiSelectId}-control`;\n    const listboxId = `${multiSelectId}-listbox`;\n    const rootRef = useRef<HTMLDivElement | null>(null);\n    const controlRef = useRef<HTMLDivElement | null>(null);\n    const composingRef = useRef(false);\n    const typeaheadBufferRef = useRef('');\n    const typeaheadTimerRef = useRef<{\n      ownerWindow: Window;\n      timerId: number;\n    } | null>(null);\n    const optionList = options ?? [];\n    const optionIds = optionList.map(\n      (option, index) =>\n        `${multiSelectId}-option-${index}-${toDomId(option.value)}`,\n    );\n    const forceOpen = openForPreview;\n    const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n    const open = forceOpen || uncontrolledOpen;\n    const initialDefaultValueRef = useRef(normalizeValues(defaultValue));\n    const [uncontrolledValue, setUncontrolledValue] = useState(() => [\n      ...initialDefaultValueRef.current,\n    ]);\n    const [activeIndex, setActiveIndex] = useState(() =>\n      getBoundaryEnabledIndex(optionList, 'first'),\n    );\n    const isControlled = value !== undefined;\n    const selectedValues = useMemo(\n      () => normalizeValues(isControlled ? value : uncontrolledValue),\n      [isControlled, uncontrolledValue, value],\n    );\n    const selectedValueSet = useMemo(\n      () => new Set(selectedValues),\n      [selectedValues],\n    );\n    const optionByValue = useMemo(() => {\n      const map = new Map<string, BaseMultiSelectOption>();\n      optionList.forEach((option) => {\n        if (!map.has(option.value)) map.set(option.value, option);\n      });\n      return map;\n    }, [optionList]);\n    const selectedOptions = useMemo(\n      () =>\n        selectedValues\n          .map((selectedValue) => optionByValue.get(selectedValue))\n          .filter(\n            (option): option is BaseMultiSelectOption => option !== undefined,\n          ),\n      [optionByValue, selectedValues],\n    );\n    const firstEnabledIndex = getBoundaryEnabledIndex(optionList, 'first');\n    const resolvedActiveIndex =\n      activeIndex >= 0 && !optionList[activeIndex]?.disabled\n        ? activeIndex\n        : firstEnabledIndex;\n    const visibleTagCount = getSafeTagCount(\n      maxTagCount,\n      selectedOptions.length,\n    );\n    const visibleOptions = selectedOptions.slice(0, visibleTagCount);\n    const overflowCount = selectedOptions.length - visibleOptions.length;\n    const isPlaceholder = selectedOptions.length === 0;\n    const layerDirection = rootProps.dir ?? componentAttributes.dir;\n    const rootState = disabled\n      ? 'disabled'\n      : invalid\n        ? 'invalid'\n        : open\n          ? 'open'\n          : 'closed';\n\n    const setRootRef = (node: HTMLDivElement | null) => {\n      rootRef.current = node;\n      if (typeof ref === 'function') ref(node);\n      else if (ref) ref.current = node;\n    };\n\n    const setOpen = (nextOpen: boolean) => {\n      if (disabled || forceOpen) return;\n      setUncontrolledOpen(nextOpen);\n      if (nextOpen && resolvedActiveIndex < 0) {\n        setActiveIndex(firstEnabledIndex);\n      }\n    };\n\n    const commitValues = (nextValues: string[]) => {\n      const normalizedValues = normalizeValues(nextValues);\n      if (!isControlled) setUncontrolledValue(normalizedValues);\n      onValueChange?.(normalizedValues);\n    };\n\n    const toggleOption = (option: BaseMultiSelectOption | undefined) => {\n      if (!option || option.disabled || disabled) return;\n      const nextValues = selectedValueSet.has(option.value)\n        ? selectedValues.filter((selectedValue) => selectedValue !== option.value)\n        : [...selectedValues, option.value];\n      commitValues(nextValues);\n    };\n\n    const removeOption = (option: BaseMultiSelectOption) => {\n      if (disabled) return;\n      commitValues(\n        selectedValues.filter((selectedValue) => selectedValue !== option.value),\n      );\n    };\n\n    const moveActive = (nextIndex: number) => {\n      if (nextIndex < 0 || optionList[nextIndex]?.disabled) return;\n      setActiveIndex(nextIndex);\n      if (!open) setOpen(true);\n    };\n\n    const handleTypeahead = (\n      event: KeyboardEvent<HTMLDivElement>,\n      character: string,\n    ) => {\n      const ownerWindow = event.currentTarget.ownerDocument.defaultView;\n      if (!ownerWindow) return;\n      const nextBuffer = `${typeaheadBufferRef.current}${character}`.toLocaleLowerCase();\n      typeaheadBufferRef.current = nextBuffer;\n      if (typeaheadTimerRef.current) {\n        typeaheadTimerRef.current.ownerWindow.clearTimeout(\n          typeaheadTimerRef.current.timerId,\n        );\n      }\n      typeaheadTimerRef.current = {\n        ownerWindow,\n        timerId: ownerWindow.setTimeout(() => {\n          typeaheadBufferRef.current = '';\n          typeaheadTimerRef.current = null;\n        }, typeaheadResetDelay),\n      };\n      const repeatedCharacter = Array.from(nextBuffer).every(\n        (bufferCharacter) => bufferCharacter === nextBuffer[0],\n      );\n      const query = repeatedCharacter ? character.toLocaleLowerCase() : nextBuffer;\n      for (let offset = 1; offset <= optionList.length; offset += 1) {\n        const index =\n          (resolvedActiveIndex + offset + optionList.length) % optionList.length;\n        const option = optionList[index];\n        if (\n          !option?.disabled &&\n          getOptionText(option).trim().toLocaleLowerCase().startsWith(query)\n        ) {\n          event.preventDefault();\n          moveActive(index);\n          return;\n        }\n      }\n    };\n\n    const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n      if (disabled || composingRef.current || event.nativeEvent.isComposing) {\n        return;\n      }\n\n      if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n        event.preventDefault();\n        if (!open) {\n          setActiveIndex(firstEnabledIndex);\n          setOpen(true);\n        } else {\n          moveActive(\n            getNextEnabledIndex(\n              optionList,\n              resolvedActiveIndex,\n              event.key === 'ArrowDown' ? 1 : -1,\n            ),\n          );\n        }\n        return;\n      }\n\n      if (event.key === 'Home' || event.key === 'End') {\n        event.preventDefault();\n        moveActive(\n          getBoundaryEnabledIndex(\n            optionList,\n            event.key === 'Home' ? 'first' : 'last',\n          ),\n        );\n        return;\n      }\n\n      if (event.key === 'Enter' || event.key === ' ') {\n        event.preventDefault();\n        if (!open) setOpen(true);\n        else toggleOption(optionList[resolvedActiveIndex]);\n        return;\n      }\n\n      if (event.key === 'Escape' && open) {\n        event.preventDefault();\n        setOpen(false);\n        return;\n      }\n\n      if (event.key === 'Tab' && open) {\n        setOpen(false);\n        return;\n      }\n\n      if (\n        event.key.length === 1 &&\n        !event.ctrlKey &&\n        !event.metaKey &&\n        !event.altKey &&\n        !/\\s/.test(event.key)\n      ) {\n        handleTypeahead(event, event.key);\n      }\n    };\n\n    useEffect(() => {\n      if (!open || forceOpen) return undefined;\n      const ownerDocument = rootRef.current?.ownerDocument;\n      if (!ownerDocument) return undefined;\n      const handlePointerDown = (event: PointerEvent) => {\n        if (!rootRef.current?.contains(event.target as Node)) {\n          setUncontrolledOpen(false);\n        }\n      };\n      ownerDocument.addEventListener('pointerdown', handlePointerDown);\n      return () => ownerDocument.removeEventListener('pointerdown', handlePointerDown);\n    }, [forceOpen, open]);\n\n    useEffect(() => {\n      if (isControlled) return undefined;\n      const form = rootRef.current?.closest('form');\n      if (!form) return undefined;\n      const handleReset = () => {\n        setUncontrolledValue([...initialDefaultValueRef.current]);\n        setActiveIndex(getBoundaryEnabledIndex(optionList, 'first'));\n        if (!forceOpen) setUncontrolledOpen(false);\n      };\n      form.addEventListener('reset', handleReset);\n      return () => form.removeEventListener('reset', handleReset);\n    }, [forceOpen, isControlled, optionList]);\n\n    useEffect(\n      () => () => {\n        if (typeaheadTimerRef.current) {\n          typeaheadTimerRef.current.ownerWindow.clearTimeout(\n            typeaheadTimerRef.current.timerId,\n          );\n        }\n      },\n      [],\n    );\n\n    return (\n      <div\n        {...componentAttributes}\n        {...rootProps}\n        id={id}\n        ref={setRootRef}\n        dir={layerDirection}\n        data-monkeys-component=\"multi-select\"\n        data-slot=\"root\"\n        data-state={rootState}\n        data-disabled={disabled || undefined}\n        data-invalid={invalid || undefined}\n        className={cn(\n          theme.slots.controlWrapper,\n          'overflow-visible',\n          open && 'z-50',\n          invalid && theme.slots.controlInvalid,\n          disabled && theme.slots.controlDisabled,\n          classNames?.root,\n          className,\n        )}\n        style={{\n          ...theme.styles.control,\n          ...(invalid ? theme.styles.controlInvalid : undefined),\n          ...(disabled ? theme.styles.controlDisabled : undefined),\n          ...style,\n        }}\n      >\n        {hasRenderableNode(icon) ? (\n          <span className={cn(theme.slots.controlIcon, classNames?.icon)}>\n            {icon}\n          </span>\n        ) : null}\n        <div\n          {...componentAttributes}\n          ref={controlRef}\n          id={controlId}\n          role=\"combobox\"\n          tabIndex={disabled ? -1 : 0}\n          dir={layerDirection}\n          aria-haspopup=\"listbox\"\n          aria-expanded={open}\n          aria-controls={listboxId}\n          aria-activedescendant={\n            open && resolvedActiveIndex >= 0\n              ? optionIds[resolvedActiveIndex]\n              : undefined\n          }\n          aria-autocomplete=\"none\"\n          aria-disabled={disabled || undefined}\n          aria-required={required || undefined}\n          aria-invalid={nativeAriaInvalid ?? (invalid || undefined)}\n          aria-label={nativeAriaLabel}\n          aria-labelledby={nativeAriaLabelledBy}\n          aria-describedby={nativeAriaDescribedBy}\n          aria-errormessage={nativeAriaErrorMessage}\n          data-monkeys-component=\"multi-select\"\n          data-slot=\"control\"\n          data-state={rootState}\n          className={cn(\n            theme.slots.controlBase,\n            'flex min-h-9 cursor-pointer flex-wrap items-center gap-1.5 py-1.5 pr-9 text-left',\n            disabled && '!cursor-not-allowed',\n            classNames?.control,\n          )}\n          onMouseDown={(event) => {\n            if (disabled || event.button !== 0) return;\n            event.preventDefault();\n            controlRef.current?.focus();\n          }}\n          onClick={() => {\n            controlRef.current?.focus();\n            setOpen(!open);\n          }}\n          onBlur={(event) => {\n            if (!rootRef.current?.contains(event.relatedTarget)) setOpen(false);\n          }}\n          onCompositionStart={() => {\n            composingRef.current = true;\n          }}\n          onCompositionEnd={() => {\n            composingRef.current = false;\n          }}\n          onKeyDown={handleKeyDown}\n        >\n          <span\n            data-monkeys-component=\"multi-select\"\n            data-slot=\"tag-list\"\n            data-state={isPlaceholder ? 'empty' : 'filled'}\n            className={cn(\n              'flex min-w-0 flex-1 flex-wrap items-center gap-1.5',\n              classNames?.tagList,\n            )}\n          >\n            {visibleOptions.map((option, index) => (\n              <span\n                key={`${option.value}-${index}`}\n                data-monkeys-component=\"multi-select\"\n                data-slot=\"tag\"\n                data-state=\"selected\"\n                className={cn(\n                  'inline-flex max-w-full items-center gap-1 rounded-full border border-border/70 bg-muted/65 px-2 py-0.5 text-xs font-medium text-foreground',\n                  classNames?.tag,\n                )}\n              >\n                <span\n                  data-slot=\"tag-label\"\n                  className={cn('max-w-40 truncate', classNames?.tagLabel)}\n                >\n                  {option.label}\n                </span>\n                <button\n                  {...componentAttributes}\n                  type=\"button\"\n                  tabIndex={-1}\n                  dir={layerDirection}\n                  aria-label={\n                    removeLabel?.(option) ??\n                    messages.removeOption({ value: option.value })\n                  }\n                  disabled={disabled}\n                  data-monkeys-component=\"multi-select\"\n                  data-slot=\"tag-remove\"\n                  data-state=\"selected\"\n                  className={cn(\n                    'inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-muted-foreground hover:bg-background/80 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed',\n                    classNames?.tagRemove,\n                  )}\n                  onClick={(event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n                    removeOption(option);\n                    controlRef.current?.focus();\n                  }}\n                  onMouseDown={(event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n                  }}\n                  onKeyDown={(event) => event.stopPropagation()}\n                >\n                  <span aria-hidden=\"true\">x</span>\n                </button>\n              </span>\n            ))}\n            {overflowCount > 0 ? (\n              <span\n                data-monkeys-component=\"multi-select\"\n                data-slot=\"tag-overflow\"\n                data-state=\"selected\"\n                className={cn(\n                  'inline-flex max-w-full items-center rounded-full border border-border/70 bg-muted/45 px-2 py-0.5 text-xs font-medium text-muted-foreground',\n                  classNames?.tag,\n                )}\n              >\n                +{overflowCount}\n              </span>\n            ) : null}\n            {isPlaceholder ? (\n              <span\n                data-monkeys-component=\"multi-select\"\n                data-slot=\"placeholder\"\n                data-state=\"empty\"\n                className={cn(\n                  'min-w-0 truncate',\n                  theme.slots.selectPlaceholder,\n                  classNames?.placeholder,\n                )}\n              >\n                {placeholder === undefined ? messages.placeholder : placeholder}\n              </span>\n            ) : null}\n          </span>\n        </div>\n        <span\n          data-monkeys-component=\"multi-select\"\n          data-slot=\"chevron\"\n          data-state={open ? 'open' : 'closed'}\n          className={cn(\n            theme.slots.selectChevron,\n            open && 'rotate-[225deg]',\n            classNames?.chevron,\n          )}\n        />\n        {name\n          ? selectedValues.map((selectedValue) => (\n              <input\n                {...componentAttributes}\n                key={selectedValue}\n                type=\"hidden\"\n                name={name}\n                value={selectedValue}\n                disabled={disabled}\n                dir={layerDirection}\n                data-monkeys-component=\"multi-select\"\n                data-slot=\"hidden-input\"\n                data-state=\"selected\"\n                className={classNames?.hiddenInput}\n              />\n            ))\n          : null}\n        {open ? (\n          <div\n            {...componentAttributes}\n            id={listboxId}\n            role=\"listbox\"\n            dir={layerDirection}\n            aria-multiselectable=\"true\"\n            aria-labelledby={controlId}\n            data-monkeys-component=\"multi-select\"\n            data-slot=\"menu\"\n            data-state=\"open\"\n            className={cn(theme.slots.selectMenu, classNames?.menu)}\n            style={theme.styles.selectMenu}\n          >\n            {optionList.length > 0 ? (\n              optionList.map((option, index) => {\n                const selected = selectedValueSet.has(option.value);\n                const active = index === resolvedActiveIndex;\n                const optionState = option.disabled\n                  ? 'disabled'\n                  : active\n                    ? 'active'\n                    : selected\n                      ? 'selected'\n                      : 'idle';\n                return (\n                  <button\n                    {...componentAttributes}\n                    key={`${option.value}-${index}`}\n                    id={optionIds[index]}\n                    type=\"button\"\n                    role=\"option\"\n                    tabIndex={-1}\n                    dir={layerDirection}\n                    aria-selected={selected}\n                    disabled={option.disabled}\n                    data-monkeys-component=\"multi-select\"\n                    data-slot=\"option\"\n                    data-state={optionState}\n                    data-active={active || undefined}\n                    data-selected={selected || undefined}\n                    data-disabled={option.disabled || undefined}\n                    className={cn(\n                      theme.slots.selectOption,\n                      'gap-2',\n                      active && theme.slots.selectOptionActive,\n                      selected && theme.slots.selectOptionSelected,\n                      option.disabled && theme.slots.selectOptionDisabled,\n                      classNames?.option,\n                    )}\n                    style={{\n                      ...theme.styles.selectOption,\n                      ...(active ? theme.styles.selectOptionActive : undefined),\n                      ...(selected\n                        ? theme.styles.selectOptionSelected\n                        : undefined),\n                    }}\n                    onMouseEnter={() => {\n                      if (!option.disabled) setActiveIndex(index);\n                    }}\n                    onMouseDown={(event) => event.preventDefault()}\n                    onClick={() => {\n                      toggleOption(option);\n                      controlRef.current?.focus();\n                    }}\n                  >\n                    <span\n                      aria-hidden=\"true\"\n                      data-slot=\"option-indicator\"\n                      className={cn(\n                        'inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-sm border border-border/70 text-[10px]',\n                        selected &&\n                          'border-primary/40 bg-primary text-primary-foreground',\n                        classNames?.optionIndicator,\n                      )}\n                    >\n                      {selected ? '✓' : null}\n                    </span>\n                    <span\n                      data-slot=\"option-label\"\n                      className={cn(\n                        'min-w-0 flex-1 truncate',\n                        classNames?.optionLabel,\n                      )}\n                    >\n                      {option.label}\n                    </span>\n                  </button>\n                );\n              })\n            ) : (\n              <div\n                {...componentAttributes}\n                dir={layerDirection}\n                role=\"option\"\n                tabIndex={-1}\n                aria-disabled=\"true\"\n                aria-selected=\"false\"\n                data-monkeys-component=\"multi-select\"\n                data-slot=\"empty\"\n                data-state=\"empty\"\n                className={cn(\n                  'px-2.5 py-2 text-sm text-muted-foreground',\n                  classNames?.empty,\n                )}\n              >\n                {emptyLabel === undefined ? messages.empty : emptyLabel}\n              </div>\n            )}\n          </div>\n        ) : null}\n      </div>\n    );\n  },\n);\n","import {\n  forwardRef,\n  useState,\n  type ChangeEvent,\n  type KeyboardEvent,\n} from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n  useMonkeysLocaleMessages,\n} from '../../provider/context';\nimport { resolveBaseAppearance } from './theme';\nimport type {\n  BaseNumberInputChangeReason,\n  BaseNumberInputProps,\n} from './types';\nimport { cn } from './utils';\n\nconst decimalPattern = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)$/;\n\nexport function parseBaseNumberInputValue(rawValue: string): number | null {\n  if (!decimalPattern.test(rawValue)) return null;\n\n  const parsedValue = Number(rawValue);\n  return Number.isFinite(parsedValue) ? parsedValue : null;\n}\n\nfunction resolveDecimalPlaces(value: number) {\n  const match = /^(?:\\d+)(?:\\.(\\d*))?(?:e([+-]?\\d+))?$/i.exec(\n    Math.abs(value).toString(),\n  );\n  if (!match) return 0;\n\n  const fractionalPlaces = match[1]?.length ?? 0;\n  const exponent = Number(match[2] ?? 0);\n  return Math.min(12, Math.max(0, fractionalPlaces - exponent));\n}\n\nfunction normalizeSteppedValue(value: number, values: readonly number[]) {\n  const precision = Math.max(...values.map(resolveDecimalPlaces));\n  const scale = 10 ** precision;\n  const normalized = Math.round((value + Number.EPSILON) * scale) / scale;\n  return Object.is(normalized, -0) ? 0 : normalized;\n}\n\nexport function resolveBaseNumberInputStep({\n  rawValue,\n  direction,\n  step,\n  min,\n  max,\n}: {\n  rawValue: string;\n  direction: -1 | 1;\n  step: number;\n  min?: number;\n  max?: number;\n}) {\n  const parsedValue = parseBaseNumberInputValue(rawValue);\n  const baseValue = parsedValue ?? 0;\n  const precisionValues = [baseValue, step];\n  if (min !== undefined) precisionValues.push(min);\n  if (max !== undefined) precisionValues.push(max);\n\n  let nextValue = normalizeSteppedValue(\n    baseValue + direction * step,\n    precisionValues,\n  );\n  if (min !== undefined) nextValue = Math.max(min, nextValue);\n  if (max !== undefined) nextValue = Math.min(max, nextValue);\n  return normalizeSteppedValue(nextValue, precisionValues);\n}\n\nfunction validateBoundary(name: 'min' | 'max', value: number | undefined) {\n  if (value !== undefined && !Number.isFinite(value)) {\n    throw new TypeError(`BaseNumberInput ${name} must be a finite number.`);\n  }\n}\n\nfunction validateLabel(name: string, value: string) {\n  if (!value.trim()) {\n    throw new TypeError(`BaseNumberInput ${name} must be a non-empty string.`);\n  }\n}\n\nfunction isInRange(\n  value: number | null,\n  min: number | undefined,\n  max: number | undefined,\n) {\n  return (\n    value !== null &&\n    (min === undefined || value >= min) &&\n    (max === undefined || value <= max)\n  );\n}\n\nexport const BaseNumberInput = forwardRef<\n  HTMLInputElement,\n  BaseNumberInputProps\n>(function BaseNumberInput(\n  {\n    value,\n    defaultValue = '',\n    min,\n    max,\n    step = 1,\n    showStepControls = false,\n    incrementLabel,\n    decrementLabel,\n    invalid = false,\n    disabled = false,\n    readOnly = false,\n    appearance,\n    className,\n    classNames,\n    style,\n    onChange,\n    onKeyDown,\n    onValueChange,\n    'aria-invalid': nativeAriaInvalid,\n    ...inputProps\n  },\n  ref,\n) {\n  if (value !== undefined && typeof value !== 'string') {\n    throw new TypeError('BaseNumberInput value must be a string.');\n  }\n  if (typeof defaultValue !== 'string') {\n    throw new TypeError('BaseNumberInput defaultValue must be a string.');\n  }\n  validateBoundary('min', min);\n  validateBoundary('max', max);\n  if (min !== undefined && max !== undefined && min > max) {\n    throw new RangeError(\n      'BaseNumberInput min must be less than or equal to max.',\n    );\n  }\n  if (!Number.isFinite(step) || step <= 0) {\n    throw new TypeError('BaseNumberInput step must be a positive finite number.');\n  }\n  for (const [name, candidate] of [\n    ['showStepControls', showStepControls],\n    ['invalid', invalid],\n    ['disabled', disabled],\n    ['readOnly', readOnly],\n  ] as const) {\n    if (typeof candidate !== 'boolean') {\n      throw new TypeError(`BaseNumberInput ${name} must be a boolean.`);\n    }\n  }\n\n  const messages = useMonkeysLocaleMessages();\n  const resolvedIncrementLabel =\n    incrementLabel ?? messages.numberInput.increment;\n  const resolvedDecrementLabel =\n    decrementLabel ?? messages.numberInput.decrement;\n  validateLabel('incrementLabel', resolvedIncrementLabel);\n  validateLabel('decrementLabel', resolvedDecrementLabel);\n\n  const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n  const isControlled = value !== undefined;\n  const rawValue = isControlled ? value : uncontrolledValue;\n  const parsedValue = parseBaseNumberInputValue(rawValue);\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n\n  const emitValueChange = (\n    nextRawValue: string,\n    reason: BaseNumberInputChangeReason,\n  ) => {\n    if (!isControlled) setUncontrolledValue(nextRawValue);\n    const nextValue = parseBaseNumberInputValue(nextRawValue);\n    onValueChange?.(nextValue, {\n      rawValue: nextRawValue,\n      reason,\n      inRange: isInRange(nextValue, min, max),\n    });\n  };\n\n  const stepValue = (direction: -1 | 1) => {\n    if (disabled || readOnly) return;\n    if (\n      parsedValue !== null &&\n      ((direction === 1 && max !== undefined && parsedValue >= max) ||\n        (direction === -1 && min !== undefined && parsedValue <= min))\n    ) {\n      return;\n    }\n\n    const nextValue = resolveBaseNumberInputStep({\n      rawValue,\n      direction,\n      step,\n      min,\n      max,\n    });\n    emitValueChange(\n      String(nextValue),\n      direction === 1 ? 'step-up' : 'step-down',\n    );\n  };\n\n  const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n    onChange?.(event);\n    emitValueChange(event.currentTarget.value, 'input');\n  };\n\n  const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n    onKeyDown?.(event);\n    if (event.defaultPrevented || disabled || readOnly) return;\n    if (event.key !== 'ArrowUp' && event.key !== 'ArrowDown') return;\n\n    event.preventDefault();\n    stepValue(event.key === 'ArrowUp' ? 1 : -1);\n  };\n\n  const decrementDisabled =\n    disabled ||\n    readOnly ||\n    (parsedValue !== null && min !== undefined && parsedValue <= min);\n  const incrementDisabled =\n    disabled ||\n    readOnly ||\n    (parsedValue !== null && max !== undefined && parsedValue >= max);\n\n  return (\n    <div\n      {...componentAttributes}\n      data-monkeys-component=\"number-input\"\n      data-slot=\"root\"\n      data-invalid={invalid || undefined}\n      data-disabled={disabled || undefined}\n      data-readonly={readOnly || undefined}\n      className={cn(\n        theme.slots.controlWrapper,\n        invalid && theme.slots.controlInvalid,\n        disabled && theme.slots.controlDisabled,\n        readOnly && theme.slots.controlReadOnly,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.control,\n        ...(invalid ? theme.styles.controlInvalid : undefined),\n        ...(disabled ? theme.styles.controlDisabled : undefined),\n        ...style,\n      }}\n    >\n      <input\n        {...inputProps}\n        ref={ref}\n        type=\"text\"\n        inputMode=\"decimal\"\n        role=\"spinbutton\"\n        value={rawValue}\n        disabled={disabled}\n        readOnly={readOnly}\n        aria-invalid={nativeAriaInvalid ?? (invalid || undefined)}\n        aria-valuemin={min}\n        aria-valuemax={max}\n        aria-valuenow={parsedValue ?? undefined}\n        aria-valuetext={rawValue || undefined}\n        data-slot=\"control\"\n        className={cn(\n          theme.slots.controlBase,\n          theme.slots.controlInput,\n          theme.slots.numberInputControl,\n          classNames?.control,\n        )}\n        onChange={handleChange}\n        onKeyDown={handleKeyDown}\n      />\n      {showStepControls ? (\n        <span\n          data-slot=\"step-controls\"\n          className={cn(\n            theme.slots.numberInputStepControls,\n            classNames?.stepControls,\n          )}\n          style={theme.styles.numberInputStepControls}\n        >\n          <button\n            type=\"button\"\n            aria-label={resolvedIncrementLabel}\n            disabled={incrementDisabled}\n            data-slot=\"increment\"\n            className={cn(\n              theme.slots.numberInputStepButton,\n              classNames?.increment,\n            )}\n            style={theme.styles.numberInputStepButton}\n            onClick={() => stepValue(1)}\n          >\n            +\n          </button>\n          <button\n            type=\"button\"\n            aria-label={resolvedDecrementLabel}\n            disabled={decrementDisabled}\n            data-slot=\"decrement\"\n            className={cn(\n              theme.slots.numberInputStepButton,\n              classNames?.decrement,\n            )}\n            style={theme.styles.numberInputStepButton}\n            onClick={() => stepValue(-1)}\n          >\n            −\n          </button>\n        </span>\n      ) : null}\n    </div>\n  );\n});\n","import type { BaseNoticeProps } from './types';\nimport { getBaseNoticeToneClassName, resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nexport function BaseNotice({\n  tone,\n  icon,\n  title,\n  description,\n  actions,\n  children,\n  appearance,\n  className,\n  classNames,\n  style,\n  ...noticeProps\n}: BaseNoticeProps) {\n  const theme = resolveBaseAppearance(appearance);\n  const resolvedDescription = children ?? description;\n\n  return (\n    <div\n      {...noticeProps}\n      className={cn(\n        theme.slots.noticeBase,\n        getBaseNoticeToneClassName(theme, tone),\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.notice,\n        ...style,\n      }}\n    >\n      {hasRenderableNode(icon) ? (\n        <div className={cn(theme.slots.noticeIcon, classNames?.icon)}>\n          {icon}\n        </div>\n      ) : null}\n      <div className=\"min-w-0 flex-1\">\n        {hasRenderableNode(title) ? (\n          <div className={cn(theme.slots.noticeTitle, classNames?.title)}>\n            {title}\n          </div>\n        ) : null}\n        {hasRenderableNode(resolvedDescription) ? (\n          <div\n            className={cn(\n              theme.slots.noticeDescription,\n              classNames?.description,\n            )}\n          >\n            {resolvedDescription}\n          </div>\n        ) : null}\n        {hasRenderableNode(actions) ? (\n          <div className={cn(theme.slots.noticeActions, classNames?.actions)}>\n            {actions}\n          </div>\n        ) : null}\n      </div>\n    </div>\n  );\n}\n","import type { ElementType } from 'react';\n\nimport type { BasePanelProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nexport function BasePanel({\n  as = 'article',\n  title,\n  description,\n  media,\n  header,\n  footer,\n  children,\n  interactive,\n  selected,\n  disabled,\n  appearance,\n  variant,\n  density,\n  state,\n  className,\n  classNames,\n  style,\n  ...panelProps\n}: BasePanelProps) {\n  const theme = resolveBaseAppearance({ ...appearance, variant, density, state });\n  const Component = as as ElementType;\n  const hasHeader =\n    header !== undefined\n      ? hasRenderableNode(header)\n      : hasRenderableNode(title) || hasRenderableNode(description);\n  const hasMedia = media !== undefined && media !== null;\n  const bodyIsStandalone = !hasHeader && !hasMedia;\n\n  return (\n    <Component\n      {...panelProps}\n      aria-disabled={disabled || undefined}\n      data-variant={theme.variant}\n      data-density={theme.density}\n      data-state={state ?? (disabled ? 'disabled' : selected ? 'selected' : 'idle')}\n      data-monkeys-component=\"panel\"\n      data-slot=\"root\"\n      data-interactive={interactive || undefined}\n      data-selected={selected || undefined}\n      data-disabled={disabled || undefined}\n      className={cn(\n        theme.slots.panelRoot,\n        interactive && !disabled && theme.slots.panelInteractive,\n        selected && theme.slots.panelSelected,\n        disabled && theme.slots.panelDisabled,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.panel,\n        ...style,\n      }}\n    >\n      {hasMedia ? (\n        <div\n          data-slot=\"media\"\n          className={cn(theme.slots.panelMedia, classNames?.media)}\n        >\n          {media}\n        </div>\n      ) : null}\n\n      {hasHeader ? (\n        <div\n          data-slot=\"header\"\n          className={cn(theme.slots.panelHeader, classNames?.header)}\n          style={theme.styles.panelHeader}\n        >\n          {header !== undefined ? (\n            header\n          ) : (\n            <>\n              {hasRenderableNode(title) ? (\n                <div\n                  data-slot=\"title\"\n                  className={cn(theme.slots.panelTitle, classNames?.title)}\n                >\n                  {title}\n                </div>\n              ) : null}\n              {hasRenderableNode(description) ? (\n                <div\n                  data-slot=\"description\"\n                  className={cn(\n                    theme.slots.panelDescription,\n                    classNames?.description,\n                  )}\n                >\n                  {description}\n                </div>\n              ) : null}\n            </>\n          )}\n        </div>\n      ) : null}\n\n      {children !== undefined && children !== null ? (\n        <div\n          data-slot=\"body\"\n          className={cn(\n            theme.slots.panelBody,\n            bodyIsStandalone && theme.slots.panelBodyStandalone,\n            classNames?.body,\n          )}\n          style={theme.styles.panelBody}\n        >\n          {children}\n        </div>\n      ) : null}\n\n      {footer !== undefined && footer !== null ? (\n        <div\n          data-slot=\"footer\"\n          className={cn(theme.slots.panelFooter, classNames?.footer)}\n          style={theme.styles.panelFooter}\n        >\n          {footer}\n        </div>\n      ) : null}\n    </Component>\n  );\n}\n","import {\n  forwardRef,\n  useRef,\n  useState,\n  type PointerEvent,\n  type Ref,\n} from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n  useMonkeysLocaleMessages,\n} from '../../provider/context';\nimport { resolveBaseAppearance } from './theme';\nimport type { BasePasswordInputProps } from './types';\nimport { cn } from './utils';\n\nfunction setRefs<TElement>(\n  element: TElement | null,\n  ...refs: Array<Ref<TElement> | undefined>\n) {\n  for (const ref of refs) {\n    if (!ref) continue;\n    if (typeof ref === 'function') {\n      ref(element);\n    } else {\n      (ref as { current: TElement | null }).current = element;\n    }\n  }\n}\n\nfunction validateLabel(name: string, value: string) {\n  if (!value.trim()) {\n    throw new TypeError(`BasePasswordInput ${name} must be a non-empty string.`);\n  }\n}\n\nexport const BasePasswordInput = forwardRef<\n  HTMLInputElement,\n  BasePasswordInputProps\n>(function BasePasswordInput(\n  {\n    visible,\n    defaultVisible = false,\n    onVisibleChange,\n    showPasswordLabel,\n    hidePasswordLabel,\n    invalid = false,\n    disabled = false,\n    readOnly = false,\n    appearance,\n    className,\n    classNames,\n    style,\n    'aria-invalid': nativeAriaInvalid,\n    ...inputProps\n  },\n  forwardedRef,\n) {\n  for (const [name, candidate] of [\n    ['defaultVisible', defaultVisible],\n    ['invalid', invalid],\n    ['disabled', disabled],\n    ['readOnly', readOnly],\n  ] as const) {\n    if (typeof candidate !== 'boolean') {\n      throw new TypeError(`BasePasswordInput ${name} must be a boolean.`);\n    }\n  }\n  if (visible !== undefined && typeof visible !== 'boolean') {\n    throw new TypeError('BasePasswordInput visible must be a boolean.');\n  }\n\n  const messages = useMonkeysLocaleMessages();\n  const resolvedShowLabel =\n    showPasswordLabel ?? messages.passwordInput.showPassword;\n  const resolvedHideLabel =\n    hidePasswordLabel ?? messages.passwordInput.hidePassword;\n  validateLabel('showPasswordLabel', resolvedShowLabel);\n  validateLabel('hidePasswordLabel', resolvedHideLabel);\n\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const [uncontrolledVisible, setUncontrolledVisible] =\n    useState(defaultVisible);\n  const isControlled = visible !== undefined;\n  const resolvedVisible = isControlled ? visible : uncontrolledVisible;\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n\n  const handleTogglePointerDown = (event: PointerEvent<HTMLButtonElement>) => {\n    const input = inputRef.current;\n    if (input && input.ownerDocument.activeElement === input) {\n      event.preventDefault();\n    }\n  };\n\n  const handleToggle = () => {\n    if (disabled) return;\n    const nextVisible = !resolvedVisible;\n    if (!isControlled) setUncontrolledVisible(nextVisible);\n    onVisibleChange?.(nextVisible);\n  };\n\n  const toggleLabel = resolvedVisible\n    ? resolvedHideLabel\n    : resolvedShowLabel;\n\n  return (\n    <div\n      {...componentAttributes}\n      data-monkeys-component=\"password-input\"\n      data-slot=\"root\"\n      data-visible={resolvedVisible || undefined}\n      data-invalid={invalid || undefined}\n      data-disabled={disabled || undefined}\n      data-readonly={readOnly || undefined}\n      className={cn(\n        theme.slots.controlWrapper,\n        invalid && theme.slots.controlInvalid,\n        disabled && theme.slots.controlDisabled,\n        readOnly && theme.slots.controlReadOnly,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.control,\n        ...(invalid ? theme.styles.controlInvalid : undefined),\n        ...(disabled ? theme.styles.controlDisabled : undefined),\n        ...style,\n      }}\n    >\n      <input\n        {...inputProps}\n        ref={(element) => setRefs(element, inputRef, forwardedRef)}\n        type={resolvedVisible ? 'text' : 'password'}\n        disabled={disabled}\n        readOnly={readOnly}\n        aria-invalid={nativeAriaInvalid ?? (invalid || undefined)}\n        data-slot=\"control\"\n        className={cn(\n          theme.slots.controlBase,\n          theme.slots.controlInput,\n          theme.slots.passwordInputControl,\n          classNames?.control,\n        )}\n      />\n      <button\n        type=\"button\"\n        aria-label={toggleLabel}\n        aria-pressed={resolvedVisible}\n        disabled={disabled}\n        data-slot=\"toggle\"\n        data-state={resolvedVisible ? 'visible' : 'hidden'}\n        className={cn(\n          theme.slots.passwordInputToggle,\n          classNames?.toggle,\n        )}\n        style={theme.styles.passwordInputToggle}\n        onPointerDown={handleTogglePointerDown}\n        onClick={handleToggle}\n      >\n        {toggleLabel}\n      </button>\n    </div>\n  );\n});\n","import { forwardRef, useState, type ReactNode } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n  useMonkeysLocaleMessages,\n} from '../../provider/context';\nimport type { BasePaginationProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\ntype PaginationItem = number | 'ellipsis';\n\nconst paginationModes = new Set(['compact', 'pages']);\n\nfunction clampPage(page: number, pageCount: number) {\n  return Math.min(Math.max(page, 1), Math.max(pageCount, 1));\n}\n\nfunction assertPositiveInteger(value: unknown, name: string) {\n  if (!Number.isSafeInteger(value) || (value as number) < 1) {\n    throw new RangeError(\n      `BasePagination ${name} must be a positive safe integer.`,\n    );\n  }\n}\n\nfunction assertNonNegativeInteger(value: unknown, name: string) {\n  if (!Number.isSafeInteger(value) || (value as number) < 0) {\n    throw new RangeError(\n      `BasePagination ${name} must be a non-negative safe integer.`,\n    );\n  }\n}\n\nfunction assertOptionalControlLabel(value: ReactNode, name: string) {\n  if (typeof value === 'string' && !value.trim()) {\n    throw new TypeError(\n      `BasePagination ${name} must be a non-empty string when provided.`,\n    );\n  }\n}\n\nfunction assertAccessibleName(\n  ariaLabel: unknown,\n  ariaLabelledBy: unknown,\n) {\n  if (\n    ariaLabel !== undefined &&\n    (typeof ariaLabel !== 'string' || !ariaLabel.trim())\n  ) {\n    throw new TypeError(\n      'BasePagination aria-label must be a non-empty string when provided.',\n    );\n  }\n  if (\n    ariaLabelledBy !== undefined &&\n    (typeof ariaLabelledBy !== 'string' || !ariaLabelledBy.trim())\n  ) {\n    throw new TypeError(\n      'BasePagination aria-labelledby must contain at least one valid ID token.',\n    );\n  }\n  if (typeof ariaLabelledBy === 'string') {\n    const tokens = ariaLabelledBy.trim().split(/\\s+/);\n    if (tokens.some((token) => /[\\u0000-\\u001f\\u007f]/u.test(token))) {\n      throw new TypeError(\n        'BasePagination aria-labelledby must contain only valid ID tokens.',\n      );\n    }\n  }\n}\n\nfunction assertLocaleString(value: unknown, name: string) {\n  if (typeof value !== 'string' || !value.trim()) {\n    throw new TypeError(\n      `BasePagination locale ${name} must resolve to a non-empty string.`,\n    );\n  }\n  return value;\n}\n\nfunction getControlContent(value: ReactNode, fallback: string) {\n  return hasRenderableNode(value) ? value : fallback;\n}\n\nfunction getControlAriaLabel(value: ReactNode, fallback: string) {\n  return typeof value === 'string' && value.trim() ? value : fallback;\n}\n\nfunction getPageItems(\n  currentPage: number,\n  pageCount: number,\n  boundaryCount: number,\n  siblingCount: number,\n): PaginationItem[] {\n  const pages = new Set<number>();\n  const addPage = (page: number) => {\n    if (page >= 1 && page <= pageCount) pages.add(page);\n  };\n\n  for (let offset = 0; offset < boundaryCount; offset += 1) {\n    addPage(1 + offset);\n    addPage(pageCount - offset);\n  }\n  for (let offset = -siblingCount; offset <= siblingCount; offset += 1) {\n    addPage(currentPage + offset);\n  }\n\n  const sortedPages = [...pages].sort((left, right) => left - right);\n  const items: PaginationItem[] = [];\n\n  sortedPages.forEach((page, index) => {\n    const previousPage = sortedPages[index - 1];\n    if (previousPage !== undefined) {\n      const gap = page - previousPage;\n      if (gap === 2) items.push(previousPage + 1);\n      if (gap > 2) items.push('ellipsis');\n    }\n    items.push(page);\n  });\n\n  return items;\n}\n\nexport const BasePagination = forwardRef<HTMLDivElement, BasePaginationProps>(\n  function BasePagination(\n    {\n      page,\n      defaultPage,\n      pageSize = 20,\n      total = 0,\n      pageCount: pageCountProp,\n      hasNext,\n      hasPrevious,\n      mode = 'compact',\n      siblingCount = 1,\n      boundaryCount = 1,\n      label,\n      firstLabel,\n      previousLabel,\n      nextLabel,\n      lastLabel,\n      appearance,\n      className,\n      classNames,\n      style,\n      onPageChange,\n      role = 'navigation',\n      'aria-label': ariaLabel,\n      'aria-labelledby': ariaLabelledBy,\n      ...paginationProps\n    },\n    ref,\n  ) {\n    const messages = useMonkeysLocaleMessages().pagination;\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const [uncontrolledPage, setUncontrolledPage] = useState(\n      () => defaultPage ?? 1,\n    );\n\n    if (page !== undefined) assertPositiveInteger(page, 'page');\n    if (defaultPage !== undefined) {\n      assertPositiveInteger(defaultPage, 'defaultPage');\n    }\n    assertPositiveInteger(pageSize, 'pageSize');\n    assertNonNegativeInteger(total, 'total');\n    if (pageCountProp !== undefined) assertPositiveInteger(pageCountProp, 'pageCount');\n    assertNonNegativeInteger(siblingCount, 'siblingCount');\n    assertNonNegativeInteger(boundaryCount, 'boundaryCount');\n    if (!paginationModes.has(mode)) {\n      throw new TypeError('BasePagination mode must be \"compact\" or \"pages\".');\n    }\n    if (onPageChange !== undefined && typeof onPageChange !== 'function') {\n      throw new TypeError('BasePagination onPageChange must be a function.');\n    }\n    assertOptionalControlLabel(firstLabel, 'firstLabel');\n    assertOptionalControlLabel(previousLabel, 'previousLabel');\n    assertOptionalControlLabel(nextLabel, 'nextLabel');\n    assertOptionalControlLabel(lastLabel, 'lastLabel');\n    assertAccessibleName(ariaLabel, ariaLabelledBy);\n\n    const navigationLabel = assertLocaleString(\n      messages.navigation,\n      'navigation',\n    );\n    const firstMessage = assertLocaleString(messages.first, 'first');\n    const previousMessage = assertLocaleString(messages.previous, 'previous');\n    const nextMessage = assertLocaleString(messages.next, 'next');\n    const lastMessage = assertLocaleString(messages.last, 'last');\n    const pageCount = pageCountProp ?? Math.max(Math.ceil(total / pageSize), 1);\n    const isControlled = page !== undefined;\n    const isUncontrolled = !isControlled && defaultPage !== undefined;\n    const currentPage = clampPage(\n      isControlled ? page : isUncontrolled ? uncontrolledPage : 1,\n      pageCount,\n    );\n    const start = total > 0 ? (currentPage - 1) * pageSize + 1 : 0;\n    const end = Math.min(currentPage * pageSize, total);\n    const canPrevious = hasPrevious ?? currentPage > 1;\n    const canNext = hasNext ?? currentPage < pageCount;\n    const pageItems =\n      mode === 'pages'\n        ? getPageItems(currentPage, pageCount, boundaryCount, siblingCount)\n        : [];\n\n    const requestPage = (requestedPage: number) => {\n      const nextPage = clampPage(requestedPage, pageCount);\n      if (nextPage === currentPage) return;\n      if (isUncontrolled) setUncontrolledPage(nextPage);\n      onPageChange?.(nextPage);\n    };\n\n    const renderControl = (\n      slot: 'first' | 'previous' | 'next' | 'last',\n      targetPage: number,\n      enabled: boolean,\n      content: ReactNode,\n      accessibleLabel: string,\n    ) => (\n      <button\n        type=\"button\"\n        disabled={!enabled}\n        aria-label={accessibleLabel}\n        data-slot={slot}\n        className={cn(\n          theme.slots.paginationButton,\n          !enabled && theme.slots.paginationButtonDisabled,\n          classNames?.button,\n        )}\n        onClick={() => requestPage(targetPage)}\n      >\n        {content}\n      </button>\n    );\n\n    return (\n      <div\n        {...componentAttributes}\n        {...paginationProps}\n        ref={ref}\n        role={role}\n        aria-label={\n          ariaLabel ?? (ariaLabelledBy === undefined ? navigationLabel : undefined)\n        }\n        aria-labelledby={ariaLabelledBy}\n        data-monkeys-component=\"pagination\"\n        data-slot=\"root\"\n        data-mode={mode}\n        data-controlled={isControlled || undefined}\n        data-uncontrolled={isUncontrolled || undefined}\n        className={cn(theme.slots.paginationRoot, classNames?.root, className)}\n        style={{\n          ...theme.styles.pagination,\n          ...style,\n        }}\n      >\n        <div\n          aria-live=\"polite\"\n          data-slot=\"info\"\n          className={cn(theme.slots.paginationInfo, classNames?.info)}\n        >\n          {hasRenderableNode(label)\n            ? label\n            : total > 0\n              ? messages.range({ start, end, total })\n              : messages.emptyResults}\n        </div>\n\n        <div\n          data-slot=\"controls\"\n          className={cn(theme.slots.paginationControls, classNames?.controls)}\n        >\n          {mode === 'pages'\n            ? renderControl(\n                'first',\n                1,\n                canPrevious,\n                getControlContent(firstLabel, firstMessage),\n                getControlAriaLabel(firstLabel, firstMessage),\n              )\n            : null}\n          {renderControl(\n            'previous',\n            currentPage - 1,\n            canPrevious,\n            getControlContent(previousLabel, previousMessage),\n            getControlAriaLabel(previousLabel, previousMessage),\n          )}\n\n          {mode === 'compact' ? (\n            <span\n              aria-current=\"page\"\n              aria-label={assertLocaleString(\n                messages.currentPage({ page: currentPage, pageCount }),\n                'currentPage',\n              )}\n              data-slot=\"page\"\n              data-page={currentPage}\n              className={cn(theme.slots.paginationPage, classNames?.page)}\n            >\n              {currentPage} / {pageCount}\n            </span>\n          ) : (\n            pageItems.map((item, index) => {\n              if (item === 'ellipsis') {\n                return (\n                  <span\n                    key={`ellipsis-${index}`}\n                    aria-hidden=\"true\"\n                    data-slot=\"ellipsis\"\n                    className={cn(\n                      theme.slots.paginationEllipsis,\n                      classNames?.ellipsis,\n                    )}\n                  >\n                    &hellip;\n                  </span>\n                );\n              }\n\n              const isCurrent = item === currentPage;\n              return (\n                <button\n                  key={item}\n                  type=\"button\"\n                  aria-current={isCurrent ? 'page' : undefined}\n                  aria-label={assertLocaleString(\n                    isCurrent\n                      ? messages.currentPage({ page: item, pageCount })\n                      : messages.page({ page: item, pageCount }),\n                    isCurrent ? 'currentPage' : 'page',\n                  )}\n                  data-slot=\"page\"\n                  data-page={item}\n                  data-current={isCurrent || undefined}\n                  className={cn(\n                    theme.slots.paginationButton,\n                    isCurrent && theme.slots.paginationPage,\n                    classNames?.button,\n                    isCurrent && classNames?.page,\n                  )}\n                  onClick={() => requestPage(item)}\n                >\n                  {item}\n                </button>\n              );\n            })\n          )}\n\n          {renderControl(\n            'next',\n            currentPage + 1,\n            canNext,\n            getControlContent(nextLabel, nextMessage),\n            getControlAriaLabel(nextLabel, nextMessage),\n          )}\n          {mode === 'pages'\n            ? renderControl(\n                'last',\n                pageCount,\n                canNext,\n                getControlContent(lastLabel, lastMessage),\n                getControlAriaLabel(lastLabel, lastMessage),\n              )\n            : null}\n        </div>\n      </div>\n    );\n  },\n);\n","import { BasePagination } from './BasePagination';\nimport type { BaseListFooterProps } from './types';\nimport { useMonkeysListFooter, useMonkeysLocaleMessages } from '../../provider/context';\nimport { cn } from './utils';\n\nfunction LoadingIcon() {\n  return <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" className=\"ml-1 inline-block h-3 w-3 animate-spin\" fill=\"none\"><circle cx=\"12\" cy=\"12\" r=\"9\" className=\"opacity-25\" stroke=\"currentColor\" strokeWidth=\"3\" /><path className=\"opacity-75\" fill=\"currentColor\" d=\"M12 3a9 9 0 0 1 9 9h-3a6 6 0 0 0-6-6V3Z\" /></svg>;\n}\nexport function BaseListFooter({ total = 0, loadedStart, loadedEnd, selectedCount, page = 1, pageCount, pageSize = 20, pageSizeOptions, showTotal, showPageSize, paginationMode, hasNext, hasPrevious, loading = false, totalLabel, selectedLabel, pageSizeLabel, appearance, className, classNames, onPageChange, onPageSizeChange, onSummaryClick, ...props }: BaseListFooterProps) {\n  const config = useMonkeysListFooter();\n  const messages = useMonkeysLocaleMessages().pagination;\n  const options = [...new Set(pageSizeOptions ?? config.pageSizeOptions ?? [10, 20, 50, 100])].filter((value) => Number.isSafeInteger(value) && value > 0);\n  const showTotalValue = showTotal ?? config.showTotal ?? true;\n  const showPageSizeValue = showPageSize ?? config.showPageSize ?? true;\n  const requestedMode = paginationMode ?? config.paginationMode ?? 'auto';\n  const mode = requestedMode === 'auto' ? (total > 0 ? 'pages' : 'compact') : requestedMode;\n  const hasRange = loadedStart !== undefined && loadedStart > 0 && loadedEnd !== undefined && loadedEnd >= loadedStart;\n  const summary = showTotalValue ? totalLabel ?? (hasRange ? messages.range({ start: loadedStart, end: loadedEnd, total }) : messages.range({ start: total > 0 ? (page - 1) * pageSize + 1 : 0, end: loadedEnd ?? 0, total })) : undefined;\n  const showPagination = Boolean(onPageChange) && (hasNext !== undefined || hasPrevious !== undefined ? Boolean(hasNext || hasPrevious || total > pageSize) : total > pageSize);\n  const align = config.alignment === 'end' ? 'justify-end' : config.alignment === 'start' ? 'justify-start' : 'justify-between';\n  return <div {...props} className={cn('flex min-w-0 flex-wrap items-center gap-3 py-2 text-sm', align, classNames?.root, className)} data-monkeys-component=\"list-footer\" data-density={config.density}>\n    <div className={cn('min-w-0 text-muted-foreground', classNames?.summary)}>{(() => { const content = <>{selectedLabel ?? (selectedCount !== undefined ? messages.selected({ count: selectedCount }) : null)}{selectedCount !== undefined && summary ? <span className=\"mx-2\">·</span> : null}{summary}{loading ? <LoadingIcon /> : null}</>; return onSummaryClick ? <button type=\"button\" className=\"inline-flex items-center\" onClick={onSummaryClick}>{content}</button> : content; })()}</div>\n    {showPagination ? <BasePagination page={page} pageCount={pageCount} pageSize={pageSize} total={total} mode={mode} hasNext={hasNext} hasPrevious={hasPrevious} onPageChange={onPageChange} appearance={appearance} className={classNames?.pagination} classNames={{ info: 'sr-only' }} /> : null}\n    {showPageSizeValue && onPageSizeChange && options.length > 0 ? <label className={cn('inline-flex items-center gap-2 whitespace-nowrap text-muted-foreground', classNames?.pageSize)}><span className=\"sr-only\">{pageSizeLabel ?? messages.pageSize}</span><select aria-label={typeof pageSizeLabel === 'string' ? pageSizeLabel : messages.pageSize} value={String(pageSize)} className=\"h-8 rounded-md border border-border bg-background px-2 text-sm text-foreground\" onChange={(event) => onPageSizeChange(Number(event.currentTarget.value))}>{options.map((size) => <option key={size} value={size}>{size}</option>)}</select></label> : null}\n  </div>;\n}\n","import { forwardRef, useId } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseProgressProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction clamp(value: number, min: number, max: number) {\n  return Math.min(Math.max(value, min), max);\n}\n\nexport const BaseProgress = forwardRef<HTMLDivElement, BaseProgressProps>(\n  function BaseProgress(\n    {\n      value = 0,\n      max = 100,\n      label,\n      showValue = false,\n      valueFormatter,\n      appearance,\n      className,\n      classNames,\n      style,\n      'aria-label': nativeAriaLabel,\n      'aria-labelledby': nativeAriaLabelledBy,\n      ...progressProps\n    },\n    ref,\n  ) {\n    const generatedLabelId = `${useId()}-label`;\n\n    if (typeof max !== 'number' || !Number.isFinite(max) || max <= 0) {\n      throw new TypeError('BaseProgress max must be a positive finite number.');\n    }\n    if (typeof value !== 'number' || !Number.isFinite(value)) {\n      throw new TypeError('BaseProgress value must be a finite number.');\n    }\n\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const safeValue = clamp(value, 0, max);\n    const percent = (safeValue / max) * 100;\n    const renderedValue =\n      valueFormatter?.(safeValue, max) ?? `${Math.round(percent)}%`;\n    const hasLabel = hasRenderableNode(label);\n    const hasLabelRow = hasLabel || showValue;\n    const labelText = typeof label === 'string' ? label : undefined;\n    const hasExplicitName =\n      nativeAriaLabel !== undefined || nativeAriaLabelledBy !== undefined;\n    const generatedAriaLabelledBy =\n      hasLabel && labelText === undefined && !hasExplicitName\n        ? generatedLabelId\n        : undefined;\n    const state = safeValue === 0 ? 'empty' : safeValue === max ? 'complete' : 'progress';\n\n    return (\n      <div\n        {...componentAttributes}\n        {...progressProps}\n        ref={ref}\n        role=\"progressbar\"\n        aria-valuemin={0}\n        aria-valuemax={max}\n        aria-valuenow={safeValue}\n        aria-label={\n          nativeAriaLabel ??\n          (nativeAriaLabelledBy === undefined ? labelText : undefined)\n        }\n        aria-labelledby={nativeAriaLabelledBy ?? generatedAriaLabelledBy}\n        data-monkeys-component=\"progress\"\n        data-slot=\"root\"\n        data-state={state}\n        data-value={safeValue}\n        data-max={max}\n        className={cn(theme.slots.progressRoot, classNames?.root, className)}\n        style={{\n          ...theme.styles.progressRoot,\n          ...style,\n        }}\n      >\n        {hasLabelRow ? (\n          <div\n            data-slot=\"label-row\"\n            data-state={state}\n            className={cn(theme.slots.progressLabelRow, classNames?.labelRow)}\n          >\n            {hasLabel ? (\n              <span\n                id={generatedAriaLabelledBy}\n                data-slot=\"label\"\n                className={cn(theme.slots.progressLabel, classNames?.label)}\n              >\n                {label}\n              </span>\n            ) : (\n              <span data-slot=\"label\" />\n            )}\n            {showValue ? (\n              <span\n                data-slot=\"value\"\n                data-value={safeValue}\n                className={cn(theme.slots.progressValue, classNames?.value)}\n              >\n                {renderedValue}\n              </span>\n            ) : null}\n          </div>\n        ) : null}\n        <div\n          data-slot=\"track\"\n          data-state={state}\n          className={cn(theme.slots.progressTrack, classNames?.track)}\n        >\n          <div\n            data-slot=\"indicator\"\n            data-state={state}\n            data-value={safeValue}\n            className={cn(theme.slots.progressIndicator, classNames?.indicator)}\n            style={{\n              ...theme.styles.progressIndicator,\n              width: `${percent}%`,\n            }}\n          />\n        </div>\n      </div>\n    );\n  },\n);\n","import { forwardRef, useId, useState, type ChangeEvent } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseRadioGroupProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction toDomId(value: string) {\n  return value.replace(/[^a-zA-Z0-9_-]/g, '-');\n}\n\nconst optionSizeClassNames = {\n  sm: 'px-2 py-1.5 text-xs',\n  md: 'px-3 py-2 text-sm',\n  lg: 'px-4 py-3 text-base',\n} as const;\n\nconst markerSizeClassNames = {\n  sm: 'h-3.5 w-3.5',\n  md: 'h-4 w-4',\n  lg: 'h-5 w-5',\n} as const;\n\nconst indicatorSizeClassNames = {\n  sm: 'h-1.5 w-1.5',\n  md: 'h-2 w-2',\n  lg: 'h-2.5 w-2.5',\n} as const;\n\nexport const BaseRadioGroup = forwardRef<\n  HTMLDivElement,\n  BaseRadioGroupProps\n>(function BaseRadioGroup(\n  {\n    options = [],\n    value,\n    defaultValue,\n    name,\n    form,\n    orientation = 'vertical',\n    required = false,\n    invalid = false,\n    disabled = false,\n    controlSize,\n    appearance,\n    className,\n    classNames,\n    style,\n    children,\n    onChange,\n    onValueChange,\n    id,\n    'aria-invalid': nativeAriaInvalid,\n    ...groupProps\n  },\n  ref,\n) {\n  for (const [stateName, stateValue] of [\n    ['required', required],\n    ['invalid', invalid],\n    ['disabled', disabled],\n  ] as const) {\n    if (typeof stateValue !== 'boolean') {\n      throw new TypeError(`BaseRadioGroup ${stateName} must be a boolean.`);\n    }\n  }\n  if (orientation !== 'horizontal' && orientation !== 'vertical') {\n    throw new TypeError(\n      'BaseRadioGroup orientation must be \"horizontal\" or \"vertical\".',\n    );\n  }\n  if (\n    controlSize !== undefined &&\n    controlSize !== 'sm' &&\n    controlSize !== 'md' &&\n    controlSize !== 'lg'\n  ) {\n    throw new TypeError(\n      'BaseRadioGroup controlSize must be \"sm\", \"md\", or \"lg\".',\n    );\n  }\n  if (!Array.isArray(options)) {\n    throw new TypeError('BaseRadioGroup options must be an array.');\n  }\n  const optionValues = new Set<string>();\n  options.forEach((option, index) => {\n    if (!option || typeof option !== 'object') {\n      throw new TypeError(\n        `BaseRadioGroup option at index ${index} must be an object.`,\n      );\n    }\n    if (typeof option.value !== 'string') {\n      throw new TypeError(\n        `BaseRadioGroup option value at index ${index} must be a string.`,\n      );\n    }\n    if (optionValues.has(option.value)) {\n      const duplicateValue = JSON.stringify(option.value);\n      throw new TypeError(\n        'BaseRadioGroup options must use unique values; ' +\n          `duplicate value ${duplicateValue} at index ${index}.`,\n      );\n    }\n    if (\n      option.disabled !== undefined &&\n      typeof option.disabled !== 'boolean'\n    ) {\n      throw new TypeError(\n        `BaseRadioGroup option disabled at index ${index} must be a boolean.`,\n      );\n    }\n    optionValues.add(option.value);\n  });\n\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n  const generatedId = useId();\n  const rootId = id ?? generatedId;\n  const resolvedName = name ?? rootId;\n  const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n  const isControlled = value !== undefined;\n  const selectedValue = isControlled ? value : uncontrolledValue;\n\n  const handleSelect = (\n    event: ChangeEvent<HTMLInputElement>,\n    optionDisabled?: boolean,\n  ) => {\n    if (disabled || optionDisabled) return;\n    const nextValue = event.currentTarget.value;\n    if (!isControlled) {\n      setUncontrolledValue(nextValue);\n    }\n    onChange?.(event);\n    onValueChange?.(nextValue, event);\n  };\n\n  return (\n    <div\n      {...componentAttributes}\n      {...groupProps}\n      ref={ref}\n      id={id}\n      role=\"radiogroup\"\n      aria-orientation={orientation}\n      aria-required={required || undefined}\n      aria-invalid={nativeAriaInvalid ?? (invalid || undefined)}\n      aria-disabled={disabled || undefined}\n      data-monkeys-component=\"radio-group\"\n      data-slot=\"root\"\n      data-state={disabled ? 'disabled' : 'enabled'}\n      data-orientation={orientation}\n      data-size={controlSize}\n      data-required={required || undefined}\n      data-invalid={invalid || undefined}\n      data-disabled={disabled || undefined}\n      className={cn(\n        theme.slots.radioGroupRoot,\n        orientation === 'horizontal' && 'flex flex-wrap items-center',\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.radioGroup,\n        ...style,\n      }}\n    >\n      {options.map((option, index) => {\n        const optionDisabled = disabled || option.disabled;\n        const checked = option.value === selectedValue;\n        const state = checked ? 'checked' : 'unchecked';\n        const optionId = `${rootId}-${index}-${toDomId(option.value)}`;\n\n        return (\n          <label\n            key={option.value}\n            htmlFor={optionId}\n            data-slot=\"option\"\n            data-state={state}\n            data-size={controlSize}\n            data-invalid={invalid || undefined}\n            data-disabled={optionDisabled || undefined}\n            className={cn(\n              theme.slots.radioOption,\n              optionDisabled && theme.slots.radioOptionDisabled,\n              controlSize && optionSizeClassNames[controlSize],\n              classNames?.option,\n            )}\n            style={theme.styles.radioOption}\n          >\n            <span\n              data-slot=\"marker\"\n              data-state={state}\n              data-size={controlSize}\n              data-invalid={invalid || undefined}\n              data-disabled={optionDisabled || undefined}\n              className={cn(\n                theme.slots.radioMarker,\n                checked && theme.slots.radioMarkerChecked,\n                controlSize && markerSizeClassNames[controlSize],\n                classNames?.marker,\n              )}\n            >\n              <input\n                id={optionId}\n                type=\"radio\"\n                name={resolvedName}\n                form={form}\n                value={option.value}\n                checked={checked}\n                required={required}\n                disabled={optionDisabled}\n                aria-invalid={nativeAriaInvalid ?? (invalid || undefined)}\n                data-slot=\"input\"\n                data-state={state}\n                data-size={controlSize}\n                data-invalid={invalid || undefined}\n                data-disabled={optionDisabled || undefined}\n                className={cn(theme.slots.radioInput, classNames?.input)}\n                onChange={(event) => handleSelect(event, option.disabled)}\n              />\n              {checked ? (\n                <span\n                  aria-hidden=\"true\"\n                  data-slot=\"indicator\"\n                  data-state={state}\n                  data-size={controlSize}\n                  className={cn(\n                    theme.slots.radioIndicator,\n                    controlSize && indicatorSizeClassNames[controlSize],\n                    classNames?.indicator,\n                  )}\n                />\n              ) : null}\n            </span>\n            {hasRenderableNode(option.icon) ? (\n              <span\n                data-slot=\"icon\"\n                className={cn('mt-0.5 shrink-0', classNames?.icon)}\n              >\n                {option.icon}\n              </span>\n            ) : null}\n            <span\n              data-slot=\"content\"\n              className={cn(theme.slots.radioContent, classNames?.content)}\n            >\n              <span\n                data-slot=\"label\"\n                className={cn(theme.slots.radioLabel, classNames?.label)}\n              >\n                {option.label}\n              </span>\n              {hasRenderableNode(option.description) ? (\n                <span\n                  data-slot=\"description\"\n                  className={cn(\n                    theme.slots.radioDescription,\n                    classNames?.description,\n                  )}\n                >\n                  {option.description}\n                </span>\n              ) : null}\n            </span>\n          </label>\n        );\n      })}\n      {children}\n    </div>\n  );\n});\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport { resolveBaseAppearance, resolveBaseLayoutLength } from './theme';\nimport type { BaseScrollAreaAxis, BaseScrollAreaProps } from './types';\nimport { cn } from './utils';\n\nfunction resolveOverflow(axis: BaseScrollAreaAxis) {\n  if (axis === 'x') {\n    return { overflowX: 'auto', overflowY: 'hidden' } as const;\n  }\n  if (axis === 'y') {\n    return { overflowX: 'hidden', overflowY: 'auto' } as const;\n  }\n  if (axis === 'both') {\n    return { overflowX: 'auto', overflowY: 'auto' } as const;\n  }\n  throw new TypeError('BaseScrollArea axis must be \"x\", \"y\", or \"both\".');\n}\n\nexport const BaseScrollArea = forwardRef<HTMLDivElement, BaseScrollAreaProps>(\n  function BaseScrollArea(\n    {\n      children,\n      axis = 'y',\n      maxWidth,\n      maxHeight,\n      appearance,\n      className,\n      classNames,\n      style,\n      ...viewportProps\n    },\n    ref,\n  ) {\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const overflow = resolveOverflow(axis);\n    const resolvedMaxWidth =\n      maxWidth === undefined\n        ? undefined\n        : resolveBaseLayoutLength('BaseScrollArea', 'maxWidth', maxWidth);\n    const resolvedMaxHeight =\n      maxHeight === undefined\n        ? undefined\n        : resolveBaseLayoutLength('BaseScrollArea', 'maxHeight', maxHeight);\n\n    return (\n      <div\n        {...componentAttributes}\n        {...viewportProps}\n        ref={ref}\n        data-monkeys-component=\"scroll-area\"\n        data-slot=\"viewport\"\n        data-axis={axis}\n        className={cn(\n          theme.slots.scrollAreaViewport,\n          classNames?.viewport,\n          className,\n        )}\n        style={{\n          ...theme.styles.scrollArea,\n          ...overflow,\n          maxWidth: resolvedMaxWidth,\n          maxHeight: resolvedMaxHeight,\n          ...style,\n        }}\n      >\n        {children}\n      </div>\n    );\n  },\n);\n","import {\n  forwardRef,\n  useEffect,\n  useId,\n  useRef,\n  useState,\n  type ChangeEvent,\n  type FocusEvent,\n  type FormEvent,\n  type KeyboardEvent,\n} from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseSelectOption, BaseSelectProps } from './types';\nimport { useBaseFieldControl } from './internal/baseFieldContext';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst typeaheadResetDelay = 500;\n\nfunction validateSelectProps({\n  options,\n  value,\n  defaultValue,\n  invalid,\n  disabled,\n  openForPreview,\n  required,\n}: Pick<\n  BaseSelectProps,\n  | 'defaultValue'\n  | 'disabled'\n  | 'invalid'\n  | 'openForPreview'\n  | 'options'\n  | 'required'\n  | 'value'\n>) {\n  for (const [name, state] of [\n    ['invalid', invalid],\n    ['disabled', disabled],\n    ['openForPreview', openForPreview],\n  ] as const) {\n    if (typeof state !== 'boolean') {\n      throw new TypeError(`BaseSelect ${name} must be a boolean.`);\n    }\n  }\n  if (required !== undefined && typeof required !== 'boolean') {\n    throw new TypeError('BaseSelect required must be a boolean.');\n  }\n\n  if (options !== undefined && !Array.isArray(options)) {\n    throw new TypeError('BaseSelect options must be an array.');\n  }\n  options?.forEach((option, index) => {\n    if (!option || typeof option !== 'object') {\n      throw new TypeError(`BaseSelect option at index ${index} must be an object.`);\n    }\n    if (typeof option.value !== 'string') {\n      throw new TypeError(\n        `BaseSelect option value at index ${index} must be a string.`,\n      );\n    }\n    if (\n      option.disabled !== undefined &&\n      typeof option.disabled !== 'boolean'\n    ) {\n      throw new TypeError(\n        `BaseSelect option disabled at index ${index} must be a boolean.`,\n      );\n    }\n    if (\n      option.textValue !== undefined &&\n      typeof option.textValue !== 'string'\n    ) {\n      throw new TypeError(\n        `BaseSelect option textValue at index ${index} must be a string.`,\n      );\n    }\n  });\n\n  if (options?.length) {\n    if (\n      value !== undefined &&\n      typeof value !== 'string' &&\n      typeof value !== 'number'\n    ) {\n      throw new TypeError(\n        'BaseSelect value must be a string or number when options are used.',\n      );\n    }\n    if (\n      defaultValue !== undefined &&\n      typeof defaultValue !== 'string' &&\n      typeof defaultValue !== 'number'\n    ) {\n      throw new TypeError(\n        'BaseSelect defaultValue must be a string or number when options are used.',\n      );\n    }\n  }\n}\n\nfunction normalizeValue(value: BaseSelectProps['value']) {\n  return typeof value === 'string' || typeof value === 'number'\n    ? String(value)\n    : '';\n}\n\nfunction findOption(options: BaseSelectOption[], value: string | undefined) {\n  if (value === undefined) return undefined;\n  return options.find((option) => option.value === value);\n}\n\nfunction getInitialActiveIndex(options: BaseSelectOption[], value: string) {\n  const selectedIndex = options.findIndex(\n    (option) => option.value === value && !option.disabled,\n  );\n  if (selectedIndex >= 0) return selectedIndex;\n  return options.findIndex((option) => !option.disabled);\n}\n\nfunction getNextEnabledIndex(\n  options: BaseSelectOption[],\n  currentIndex: number,\n  direction: 1 | -1,\n) {\n  if (!options.length) return -1;\n  const startIndex = currentIndex >= 0 ? currentIndex : direction === 1 ? -1 : 0;\n\n  for (let offset = 1; offset <= options.length; offset += 1) {\n    const nextIndex =\n      (startIndex + offset * direction + options.length) % options.length;\n    if (!options[nextIndex]?.disabled) {\n      return nextIndex;\n    }\n  }\n\n  return -1;\n}\n\nfunction getBoundaryEnabledIndex(\n  options: BaseSelectOption[],\n  boundary: 'first' | 'last',\n) {\n  if (boundary === 'first') {\n    return options.findIndex((option) => !option.disabled);\n  }\n  for (let index = options.length - 1; index >= 0; index -= 1) {\n    if (!options[index]?.disabled) return index;\n  }\n  return -1;\n}\n\nfunction getOptionText(option: BaseSelectOption) {\n  if (option.textValue !== undefined) return option.textValue;\n  if (typeof option.label === 'string') return option.label;\n  return option.value;\n}\n\nfunction toDomId(value: string) {\n  return value.replace(/[^a-zA-Z0-9_-]/g, '-');\n}\n\nexport const BaseSelect = forwardRef<HTMLSelectElement, BaseSelectProps>(\n  function BaseSelect(\n    {\n      options,\n      placeholder,\n      icon,\n      invalid = false,\n      disabled = false,\n      openForPreview = false,\n      appearance,\n      className,\n      classNames,\n      style,\n      children,\n      value,\n      defaultValue,\n      onBlur,\n      onChange,\n      onFocus,\n      onInvalid,\n      name,\n      id,\n      required,\n      'aria-invalid': nativeAriaInvalid,\n      'aria-label': nativeAriaLabel,\n      'aria-labelledby': nativeAriaLabelledBy,\n      'aria-describedby': nativeAriaDescribedBy,\n      'aria-errormessage': nativeAriaErrorMessage,\n      'aria-required': nativeAriaRequired,\n      ...selectProps\n    },\n    ref,\n  ) {\n    validateSelectProps({\n      options,\n      value,\n      defaultValue,\n      invalid,\n      disabled,\n      openForPreview,\n      required,\n    });\n\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const fieldControl = useBaseFieldControl();\n    const resolvedInvalid = invalid || fieldControl.invalid;\n    const generatedId = useId();\n    const selectId = id ?? generatedId;\n    const triggerId = `${selectId}-button`;\n    const listboxId = `${selectId}-listbox`;\n    const rootRef = useRef<HTMLDivElement | null>(null);\n    const triggerRef = useRef<HTMLButtonElement | null>(null);\n    const selectRef = useRef<HTMLSelectElement | null>(null);\n    const optionRefs = useRef<Array<HTMLButtonElement | null>>([]);\n    const composingRef = useRef(false);\n    const typeaheadBufferRef = useRef('');\n    const typeaheadTimerRef = useRef<{\n      ownerWindow: Window;\n      timerId: number;\n    } | null>(null);\n    const optionList = options ?? [];\n    const isCustomSelect = optionList.length > 0;\n    const forceOpen = openForPreview;\n    const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n    const open = forceOpen || uncontrolledOpen;\n    const [uncontrolledValue, setUncontrolledValue] = useState(() =>\n      normalizeValue(defaultValue),\n    );\n    const isControlled = value !== undefined;\n    const selectedValue = isControlled\n      ? normalizeValue(value)\n      : uncontrolledValue;\n    const selectedOption = findOption(optionList, selectedValue);\n    const [activeIndex, setActiveIndex] = useState(() =>\n      getInitialActiveIndex(optionList, selectedValue),\n    );\n    const resolvedActiveIndex =\n      activeIndex >= 0 && !optionList[activeIndex]?.disabled\n        ? activeIndex\n        : getInitialActiveIndex(optionList, selectedValue);\n    const optionIds = optionList.map(\n      (option, index) =>\n        `${selectId}-option-${index}-${toDomId(option.value)}`,\n    );\n    const visibleLabel = selectedOption?.label ?? placeholder;\n    const isPlaceholder = !selectedOption;\n    const layerDirection = selectProps.dir ?? componentAttributes.dir;\n    const rootState = disabled\n      ? 'disabled'\n      : resolvedInvalid\n        ? 'invalid'\n        : open\n          ? 'open'\n          : 'closed';\n\n    const setSelectRef = (node: HTMLSelectElement | null) => {\n      selectRef.current = node;\n      if (typeof ref === 'function') {\n        ref(node);\n      } else if (ref) {\n        ref.current = node;\n      }\n    };\n\n    const handleNativeBlur = (event: FocusEvent<HTMLSelectElement>) => {\n      onBlur?.(event);\n      fieldControl.notifyBlur(event.currentTarget.value);\n    };\n\n    const handleNativeChange = (event: ChangeEvent<HTMLSelectElement>) => {\n      onChange?.(event);\n      fieldControl.notifyChange(event.currentTarget.value);\n    };\n\n    const resetActiveIndex = () => {\n      setActiveIndex(getInitialActiveIndex(optionList, selectedValue));\n    };\n\n    const cancelAndClose = () => {\n      resetActiveIndex();\n      if (!forceOpen) setUncontrolledOpen(false);\n    };\n\n    const openMenu = (nextActiveIndex?: number) => {\n      setActiveIndex(\n        nextActiveIndex ?? getInitialActiveIndex(optionList, selectedValue),\n      );\n      if (!forceOpen) setUncontrolledOpen(true);\n    };\n\n    const notifyChange = (nextValue: string) => {\n      const selectElement = selectRef.current;\n      if (!selectElement) return;\n      const ownerWindow = selectElement.ownerDocument.defaultView;\n      if (!ownerWindow) {\n        throw new Error(\n          'BaseSelect cannot dispatch change without an owning window.',\n        );\n      }\n      const valueSetter = Object.getOwnPropertyDescriptor(\n        ownerWindow.HTMLSelectElement.prototype,\n        'value',\n      )?.set;\n      if (!valueSetter) {\n        throw new Error('BaseSelect could not resolve the native select value setter.');\n      }\n      valueSetter.call(selectElement, nextValue);\n      selectElement.dispatchEvent(\n        new ownerWindow.Event('change', { bubbles: true }),\n      );\n    };\n\n    const commitIndex = (nextIndex: number) => {\n      const option = optionList[nextIndex];\n      if (!option || option.disabled || disabled) return;\n      setActiveIndex(nextIndex);\n      if (option.value !== selectedValue) {\n        if (!isControlled) {\n          setUncontrolledValue(option.value);\n        }\n        notifyChange(option.value);\n      }\n      if (!forceOpen) setUncontrolledOpen(false);\n    };\n\n    const moveActive = (nextIndex: number) => {\n      if (nextIndex < 0 || optionList[nextIndex]?.disabled) return;\n      setActiveIndex(nextIndex);\n      if (!open) openMenu(nextIndex);\n    };\n\n    const handleTypeahead = (\n      event: KeyboardEvent<HTMLButtonElement>,\n      character: string,\n    ) => {\n      const ownerWindow = event.currentTarget.ownerDocument.defaultView;\n      if (!ownerWindow) return;\n      const nextBuffer = `${typeaheadBufferRef.current}${character}`.toLocaleLowerCase();\n      typeaheadBufferRef.current = nextBuffer;\n      if (typeaheadTimerRef.current) {\n        typeaheadTimerRef.current.ownerWindow.clearTimeout(\n          typeaheadTimerRef.current.timerId,\n        );\n      }\n      typeaheadTimerRef.current = {\n        ownerWindow,\n        timerId: ownerWindow.setTimeout(() => {\n          typeaheadBufferRef.current = '';\n          typeaheadTimerRef.current = null;\n        }, typeaheadResetDelay),\n      };\n\n      const repeatedCharacter = Array.from(nextBuffer).every(\n        (bufferCharacter) => bufferCharacter === nextBuffer[0],\n      );\n      const query = repeatedCharacter ? character.toLocaleLowerCase() : nextBuffer;\n      const startIndex = open\n        ? resolvedActiveIndex\n        : optionList.findIndex(\n            (option) => option.value === selectedValue && !option.disabled,\n          );\n      for (let offset = 1; offset <= optionList.length; offset += 1) {\n        const index = (startIndex + offset + optionList.length) % optionList.length;\n        const option = optionList[index];\n        if (\n          !option?.disabled &&\n          getOptionText(option).trim().toLocaleLowerCase().startsWith(query)\n        ) {\n          event.preventDefault();\n          moveActive(index);\n          return;\n        }\n      }\n    };\n\n    const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n      if (disabled || composingRef.current || event.nativeEvent.isComposing) {\n        return;\n      }\n\n      if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n        event.preventDefault();\n        const selectedIndex = optionList.findIndex(\n          (option) => option.value === selectedValue && !option.disabled,\n        );\n        const currentIndex = open ? resolvedActiveIndex : selectedIndex;\n        moveActive(\n          getNextEnabledIndex(\n            optionList,\n            currentIndex,\n            event.key === 'ArrowDown' ? 1 : -1,\n          ),\n        );\n        return;\n      }\n\n      if (event.key === 'Home' || event.key === 'End') {\n        event.preventDefault();\n        moveActive(\n          getBoundaryEnabledIndex(\n            optionList,\n            event.key === 'Home' ? 'first' : 'last',\n          ),\n        );\n        return;\n      }\n\n      if (event.key === 'Enter' || event.key === ' ') {\n        event.preventDefault();\n        if (open) {\n          commitIndex(resolvedActiveIndex);\n        } else {\n          openMenu();\n        }\n        return;\n      }\n\n      if (event.key === 'Escape' && open) {\n        event.preventDefault();\n        cancelAndClose();\n        return;\n      }\n\n      if (event.key === 'Tab' && open) {\n        commitIndex(resolvedActiveIndex);\n        return;\n      }\n\n      if (\n        event.key.length === 1 &&\n        !event.ctrlKey &&\n        !event.metaKey &&\n        !event.altKey &&\n        !/\\s/.test(event.key)\n      ) {\n        handleTypeahead(event, event.key);\n      }\n    };\n\n    const handleCustomFocus = (event: FocusEvent<HTMLSelectElement>) => {\n      onFocus?.(event);\n      if (!event.defaultPrevented) triggerRef.current?.focus();\n    };\n\n    const handleCustomInvalid = (event: FormEvent<HTMLSelectElement>) => {\n      onInvalid?.(event);\n      event.preventDefault();\n      triggerRef.current?.focus();\n    };\n\n    useEffect(() => {\n      if (!isCustomSelect || !open || forceOpen) return undefined;\n      const ownerDocument = rootRef.current?.ownerDocument;\n      if (!ownerDocument) return undefined;\n\n      const handlePointerDown = (event: PointerEvent) => {\n        if (!rootRef.current?.contains(event.target as Node)) {\n          cancelAndClose();\n        }\n      };\n\n      ownerDocument.addEventListener('pointerdown', handlePointerDown);\n      return () => {\n        ownerDocument.removeEventListener('pointerdown', handlePointerDown);\n      };\n    }, [forceOpen, isCustomSelect, open, optionList, selectedValue]);\n\n    useEffect(() => {\n      if (!isCustomSelect || !open || resolvedActiveIndex < 0) return;\n      optionRefs.current[resolvedActiveIndex]?.scrollIntoView?.({\n        block: 'nearest',\n      });\n    }, [isCustomSelect, open, resolvedActiveIndex]);\n\n    useEffect(() => {\n      if (!isCustomSelect || isControlled) return undefined;\n      const selectElement = selectRef.current;\n      const form = selectElement?.form;\n      const ownerWindow = selectElement?.ownerDocument.defaultView;\n      if (!form || !ownerWindow) return undefined;\n\n      const handleReset = () => {\n        ownerWindow.setTimeout(() => {\n          const resetValue = normalizeValue(defaultValue);\n          setUncontrolledValue(resetValue);\n          setActiveIndex(getInitialActiveIndex(optionList, resetValue));\n          if (!forceOpen) setUncontrolledOpen(false);\n        }, 0);\n      };\n      form.addEventListener('reset', handleReset);\n      return () => form.removeEventListener('reset', handleReset);\n    }, [defaultValue, forceOpen, isControlled, isCustomSelect, optionList]);\n\n    useEffect(\n      () => () => {\n        if (typeaheadTimerRef.current) {\n          typeaheadTimerRef.current.ownerWindow.clearTimeout(\n            typeaheadTimerRef.current.timerId,\n          );\n        }\n      },\n      [],\n    );\n\n    if (!isCustomSelect) {\n      return (\n        <div\n          {...componentAttributes}\n          data-monkeys-component=\"select\"\n          data-slot=\"root\"\n          data-state={rootState}\n          data-native=\"true\"\n          className={cn(\n            theme.slots.controlWrapper,\n            resolvedInvalid && theme.slots.controlInvalid,\n            disabled && theme.slots.controlDisabled,\n            classNames?.root,\n            className,\n          )}\n          style={{\n            ...theme.styles.control,\n            ...(resolvedInvalid ? theme.styles.controlInvalid : undefined),\n            ...(disabled ? theme.styles.controlDisabled : undefined),\n            ...style,\n          }}\n        >\n          {hasRenderableNode(icon) ? (\n            <span className={cn(theme.slots.controlIcon, classNames?.icon)}>\n              {icon}\n            </span>\n          ) : null}\n          <select\n            {...componentAttributes}\n            {...selectProps}\n            id={id}\n            ref={ref}\n            name={name}\n            value={value}\n            defaultValue={defaultValue}\n            required={required}\n            disabled={disabled}\n            aria-invalid={nativeAriaInvalid ?? (resolvedInvalid || undefined)}\n            aria-label={nativeAriaLabel}\n            aria-labelledby={nativeAriaLabelledBy}\n            aria-describedby={nativeAriaDescribedBy}\n            aria-errormessage={nativeAriaErrorMessage}\n            aria-required={nativeAriaRequired}\n            data-monkeys-component=\"select\"\n            data-slot=\"native\"\n            data-state={rootState}\n            data-native=\"true\"\n            onBlur={handleNativeBlur}\n            onFocus={onFocus}\n            onInvalid={onInvalid}\n            onChange={handleNativeChange}\n            className={cn(\n              theme.slots.controlBase,\n              theme.slots.controlSelect,\n              classNames?.control,\n            )}\n          >\n            {hasRenderableNode(placeholder) ? (\n              <option value=\"\" disabled>\n                {placeholder}\n              </option>\n            ) : null}\n            {children}\n          </select>\n          <span className={theme.slots.selectChevron} />\n        </div>\n      );\n    }\n\n    return (\n      <div\n        {...componentAttributes}\n        ref={rootRef}\n        dir={layerDirection}\n        data-monkeys-component=\"select\"\n        data-slot=\"root\"\n        data-state={rootState}\n        data-native=\"false\"\n        className={cn(\n          theme.slots.controlWrapper,\n          'overflow-visible',\n          open && 'z-50',\n          resolvedInvalid && theme.slots.controlInvalid,\n          disabled && theme.slots.controlDisabled,\n          classNames?.root,\n          className,\n        )}\n        style={{\n          ...theme.styles.control,\n          ...(resolvedInvalid ? theme.styles.controlInvalid : undefined),\n          ...(disabled ? theme.styles.controlDisabled : undefined),\n          ...style,\n        }}\n      >\n        {hasRenderableNode(icon) ? (\n          <span className={cn(theme.slots.controlIcon, classNames?.icon)}>\n            {icon}\n          </span>\n        ) : null}\n        <button\n          {...componentAttributes}\n          ref={triggerRef}\n          type=\"button\"\n          id={triggerId}\n          role=\"combobox\"\n          disabled={disabled}\n          dir={layerDirection}\n          aria-haspopup=\"listbox\"\n          aria-expanded={open}\n          aria-controls={listboxId}\n          aria-activedescendant={\n            open && resolvedActiveIndex >= 0\n              ? optionIds[resolvedActiveIndex]\n              : undefined\n          }\n          aria-autocomplete=\"none\"\n          aria-invalid={nativeAriaInvalid ?? (resolvedInvalid || undefined)}\n          aria-label={nativeAriaLabel}\n          aria-labelledby={nativeAriaLabelledBy}\n          aria-describedby={nativeAriaDescribedBy}\n          aria-errormessage={nativeAriaErrorMessage}\n          aria-required={nativeAriaRequired ?? (required || undefined)}\n          data-monkeys-component=\"select\"\n          data-slot=\"trigger\"\n          data-state={rootState}\n          className={cn(\n            theme.slots.controlBase,\n            theme.slots.controlSelect,\n            'flex items-center text-left',\n            classNames?.control,\n          )}\n          onClick={() => {\n            if (open) cancelAndClose();\n            else openMenu();\n          }}\n          onBlur={(event) => {\n            if (!rootRef.current?.contains(event.relatedTarget)) {\n              cancelAndClose();\n              fieldControl.notifyBlur(selectedValue);\n            }\n          }}\n          onCompositionStart={() => {\n            composingRef.current = true;\n          }}\n          onCompositionEnd={() => {\n            composingRef.current = false;\n          }}\n          onKeyDown={handleKeyDown}\n        >\n          <span\n            className={cn(\n              'min-w-0 flex-1 truncate',\n              isPlaceholder && theme.slots.selectPlaceholder,\n              isPlaceholder && classNames?.placeholder,\n            )}\n          >\n            {visibleLabel}\n          </span>\n        </button>\n        <span\n          className={cn(\n            theme.slots.selectChevron,\n            open && 'rotate-[225deg]',\n          )}\n        />\n        <select\n          {...componentAttributes}\n          {...selectProps}\n          ref={setSelectRef}\n          id={id}\n          name={name}\n          value={selectedValue}\n          required={required}\n          disabled={disabled}\n          dir={layerDirection}\n          aria-hidden=\"true\"\n          tabIndex={-1}\n          data-monkeys-component=\"select\"\n          data-slot=\"native\"\n          data-state={rootState}\n          data-native=\"false\"\n          className={theme.slots.selectNative}\n          onBlur={onBlur}\n          onFocus={handleCustomFocus}\n          onInvalid={handleCustomInvalid}\n          onChange={handleNativeChange}\n        >\n          {hasRenderableNode(placeholder) ? (\n            <option value=\"\" disabled>\n              {placeholder}\n            </option>\n          ) : null}\n          {optionList.map((option) => (\n            <option\n              key={option.value}\n              value={option.value}\n              disabled={option.disabled}\n            >\n              {getOptionText(option)}\n            </option>\n          ))}\n        </select>\n        {open ? (\n          <div\n            {...componentAttributes}\n            id={listboxId}\n            role=\"listbox\"\n            dir={layerDirection}\n            aria-labelledby={triggerId}\n            data-monkeys-component=\"select\"\n            data-slot=\"menu\"\n            data-state=\"open\"\n            className={cn(theme.slots.selectMenu, classNames?.menu)}\n            style={theme.styles.selectMenu}\n          >\n            {optionList.map((option, index) => {\n              const selected = option.value === selectedValue;\n              const active = index === resolvedActiveIndex;\n              const optionState = option.disabled\n                ? 'disabled'\n                : active\n                  ? 'active'\n                  : selected\n                    ? 'selected'\n                    : 'idle';\n              return (\n                <button\n                  {...componentAttributes}\n                  ref={(node) => {\n                    optionRefs.current[index] = node;\n                  }}\n                  key={option.value}\n                  id={optionIds[index]}\n                  type=\"button\"\n                  role=\"option\"\n                  tabIndex={-1}\n                  disabled={option.disabled}\n                  dir={layerDirection}\n                  aria-selected={selected}\n                  data-monkeys-component=\"select\"\n                  data-slot=\"option\"\n                  data-state={optionState}\n                  data-active={active || undefined}\n                  data-selected={selected || undefined}\n                  data-disabled={option.disabled || undefined}\n                  className={cn(\n                    theme.slots.selectOption,\n                    active && theme.slots.selectOptionActive,\n                    selected && theme.slots.selectOptionSelected,\n                    option.disabled && theme.slots.selectOptionDisabled,\n                    classNames?.option,\n                  )}\n                  style={{\n                    ...theme.styles.selectOption,\n                    ...(active ? theme.styles.selectOptionActive : undefined),\n                    ...(selected ? theme.styles.selectOptionSelected : undefined),\n                  }}\n                  onMouseDown={(event) => event.preventDefault()}\n                  onClick={() => commitIndex(index)}\n                >\n                  <span className=\"min-w-0 flex-1 truncate\">\n                    {option.label}\n                  </span>\n                </button>\n              );\n            })}\n          </div>\n        ) : null}\n      </div>\n    );\n  },\n);\n","import type { BaseSectionHeaderProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nexport function BaseSectionHeader({\n  eyebrow,\n  title,\n  description,\n  actions,\n  children,\n  appearance,\n  className,\n  classNames,\n  style,\n  ...headerProps\n}: BaseSectionHeaderProps) {\n  const theme = resolveBaseAppearance(appearance);\n  const resolvedDescription = children ?? description;\n\n  return (\n    <div\n      {...headerProps}\n      className={cn(theme.slots.sectionHeaderRoot, classNames?.root, className)}\n      style={{\n        ...theme.styles.sectionHeader,\n        ...style,\n      }}\n    >\n      <div\n        className={cn(theme.slots.sectionHeaderContent, classNames?.content)}\n      >\n        {hasRenderableNode(eyebrow) ? (\n          <div\n            className={cn(\n              theme.slots.sectionHeaderEyebrow,\n              classNames?.eyebrow,\n            )}\n          >\n            {eyebrow}\n          </div>\n        ) : null}\n        {hasRenderableNode(title) ? (\n          <div className={cn(theme.slots.sectionHeaderTitle, classNames?.title)}>\n            {title}\n          </div>\n        ) : null}\n        {hasRenderableNode(resolvedDescription) ? (\n          <div\n            className={cn(\n              theme.slots.sectionHeaderDescription,\n              classNames?.description,\n            )}\n          >\n            {resolvedDescription}\n          </div>\n        ) : null}\n      </div>\n\n      {hasRenderableNode(actions) ? (\n        <div className={cn(theme.slots.sectionHeaderActions, classNames?.actions)}>\n          {actions}\n        </div>\n      ) : null}\n    </div>\n  );\n}\n","import { useState, type KeyboardEvent } from 'react';\n\nimport type { BaseSegmentedControlProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction getInitialSegmentValue(\n  options: BaseSegmentedControlProps['options'],\n  defaultValue?: string,\n) {\n  if (defaultValue && options?.some((option) => option.value === defaultValue)) {\n    const defaultOption = options.find((option) => option.value === defaultValue);\n    if (!defaultOption?.disabled) {\n      return defaultValue;\n    }\n  }\n  return options?.find((option) => !option.disabled)?.value ?? options?.[0]?.value;\n}\n\nexport function BaseSegmentedControl({\n  options = [],\n  value,\n  defaultValue,\n  appearance,\n  className,\n  classNames,\n  style,\n  onValueChange,\n  ...controlProps\n}: BaseSegmentedControlProps) {\n  const theme = resolveBaseAppearance(appearance);\n  const [uncontrolledValue, setUncontrolledValue] = useState(() =>\n    getInitialSegmentValue(options, defaultValue),\n  );\n  const isControlled = value !== undefined;\n  const selectedValue = isControlled ? value : uncontrolledValue;\n\n  const handleSelect = (nextValue: string, disabled?: boolean) => {\n    if (disabled) return;\n    if (!isControlled) {\n      setUncontrolledValue(nextValue);\n    }\n    onValueChange?.(nextValue);\n  };\n\n  const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n    if (!['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'].includes(event.key)) {\n      return;\n    }\n\n    const enabledOptions = options.filter((option) => !option.disabled);\n    if (enabledOptions.length === 0) return;\n\n    event.preventDefault();\n    const currentIndex = Math.max(\n      0,\n      enabledOptions.findIndex((option) => option.value === selectedValue),\n    );\n    const nextIndex =\n      event.key === 'Home'\n        ? 0\n        : event.key === 'End'\n          ? enabledOptions.length - 1\n          : event.key === 'ArrowLeft' || event.key === 'ArrowUp'\n            ? (currentIndex - 1 + enabledOptions.length) % enabledOptions.length\n            : (currentIndex + 1) % enabledOptions.length;\n    const nextOption = enabledOptions[nextIndex];\n    const buttons = event.currentTarget.querySelectorAll<HTMLButtonElement>('[role=\"radio\"]');\n    const target = Array.from(buttons).find(\n      (button) => button.dataset.value === nextOption.value,\n    );\n    handleSelect(nextOption.value);\n    target?.focus();\n  };\n\n  return (\n    <div\n      {...controlProps}\n      role=\"radiogroup\"\n      aria-orientation=\"horizontal\"\n      className={cn(theme.slots.segmentedRoot, classNames?.root, className)}\n      style={{\n        ...theme.styles.segmentedRoot,\n        ...style,\n      }}\n      onKeyDown={handleKeyDown}\n    >\n      {options.map((option) => {\n        const selected = option.value === selectedValue;\n        return (\n          <button\n            key={option.value}\n            type=\"button\"\n            role=\"radio\"\n            data-value={option.value}\n            aria-checked={selected}\n            tabIndex={selected ? 0 : -1}\n            disabled={option.disabled}\n            className={cn(\n              theme.slots.segmentedItem,\n              selected && theme.slots.segmentedItemActive,\n              option.disabled && theme.slots.segmentedItemDisabled,\n              classNames?.item,\n            )}\n            style={theme.styles.segmentedItem}\n            onClick={() => handleSelect(option.value, option.disabled)}\n          >\n            {hasRenderableNode(option.icon) ? (\n              <span className={cn('inline-flex h-4 w-4 shrink-0', classNames?.icon)}>\n                {option.icon}\n              </span>\n            ) : null}\n            <span className={cn('min-w-0 truncate', classNames?.label)}>\n              {option.label}\n            </span>\n          </button>\n        );\n      })}\n    </div>\n  );\n}\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n  useMonkeysLocaleMessages,\n} from '../../provider/context';\nimport { resolveBaseAppearance } from './theme';\nimport type { BaseSpinnerProps } from './types';\nimport { cn } from './utils';\n\nexport const BaseSpinner = forwardRef<HTMLSpanElement, BaseSpinnerProps>(\n  function BaseSpinner(\n    {\n      decorative = false,\n      label,\n      appearance,\n      className,\n      classNames,\n      style,\n      ...spinnerProps\n    },\n    ref,\n  ) {\n    const messages = useMonkeysLocaleMessages();\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n\n    if (typeof decorative !== 'boolean') {\n      throw new TypeError('BaseSpinner decorative must be a boolean.');\n    }\n    if (decorative && label !== undefined) {\n      throw new TypeError(\n        'BaseSpinner label cannot be provided when decorative is true.',\n      );\n    }\n\n    const resolvedLabel = decorative\n      ? undefined\n      : (label ?? messages.loading.spinner);\n    if (\n      !decorative &&\n      (typeof resolvedLabel !== 'string' || !resolvedLabel.trim())\n    ) {\n      throw new TypeError('BaseSpinner label must be a non-empty string.');\n    }\n\n    return (\n      <span\n        {...componentAttributes}\n        {...spinnerProps}\n        ref={ref}\n        role={decorative ? undefined : 'status'}\n        aria-label={resolvedLabel}\n        aria-hidden={decorative ? 'true' : undefined}\n        data-monkeys-component=\"spinner\"\n        data-slot=\"root\"\n        data-decorative={decorative || undefined}\n        className={cn(theme.slots.spinnerRoot, classNames?.root, className)}\n        style={{\n          ...theme.styles.spinner,\n          ...style,\n        }}\n      >\n        <span\n          aria-hidden=\"true\"\n          data-slot=\"indicator\"\n          className={cn(theme.slots.spinnerIndicator, classNames?.indicator)}\n          style={theme.styles.spinnerIndicator}\n        />\n      </span>\n    );\n  },\n);\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport {\n  resolveBaseAppearance,\n  resolveBaseLayoutAlign,\n  resolveBaseLayoutJustify,\n  resolveBaseLayoutLength,\n} from './theme';\nimport type { BaseStackProps } from './types';\nimport { cn } from './utils';\n\nexport const BaseStack = forwardRef<HTMLDivElement, BaseStackProps>(\n  function BaseStack(\n    {\n      children,\n      gap,\n      align = 'stretch',\n      justify = 'start',\n      appearance,\n      className,\n      classNames,\n      style,\n      ...stackProps\n    },\n    ref,\n  ) {\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const resolvedGap =\n      gap === undefined\n        ? undefined\n        : resolveBaseLayoutLength('BaseStack', 'gap', gap);\n\n    return (\n      <div\n        {...componentAttributes}\n        {...stackProps}\n        ref={ref}\n        data-monkeys-component=\"stack\"\n        data-slot=\"root\"\n        data-align={align}\n        data-justify={justify}\n        className={cn(theme.slots.stackRoot, classNames?.root, className)}\n        style={{\n          ...theme.styles.stack,\n          gap: resolvedGap,\n          alignItems: resolveBaseLayoutAlign('BaseStack', align),\n          justifyContent: resolveBaseLayoutJustify('BaseStack', justify),\n          ...style,\n        }}\n      >\n        {children}\n      </div>\n    );\n  },\n);\n","import { forwardRef, useId } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n  useMonkeysLocaleMessages,\n} from '../../provider/context';\nimport { resolveBaseAppearance } from './theme';\nimport type {\n  BaseStepItem,\n  BaseStepsProps,\n  BaseStepsStatusLabels,\n  BaseStepStatus,\n} from './types';\nimport { cn, hasRenderableNode } from './utils';\n\nconst stepStatuses = new Set<BaseStepStatus>([\n  'pending',\n  'current',\n  'completed',\n  'error',\n]);\nconst statusLabelKeys = [\n  'current',\n  'completed',\n  'error',\n  'disabled',\n] as const;\nconst invalidStepIdPattern = /[\\s\\u0000-\\u001f\\u007f]/u;\n\ninterface ValidatedStep {\n  item: BaseStepItem;\n  encodedId: string;\n  status: BaseStepStatus;\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n  if (!value || typeof value !== 'object' || Array.isArray(value)) return false;\n  const prototype = Object.getPrototypeOf(value);\n  return prototype === Object.prototype || prototype === null;\n}\n\nfunction hasStepLabel(value: unknown): boolean {\n  if (!hasRenderableNode(value as BaseStepItem['label'])) return false;\n  if (typeof value === 'string') return Boolean(value.trim());\n  if (Array.isArray(value)) return value.some(hasStepLabel);\n  return true;\n}\n\nfunction encodeStepId(id: string) {\n  try {\n    return encodeURIComponent(id);\n  } catch {\n    throw new TypeError(\n      `BaseSteps item id ${JSON.stringify(id)} must contain valid Unicode.`,\n    );\n  }\n}\n\nfunction validateItems(items: unknown): ValidatedStep[] {\n  if (!Array.isArray(items)) {\n    throw new TypeError('BaseSteps items must be an array.');\n  }\n\n  const ids = new Set<string>();\n  let currentCount = 0;\n\n  const validatedItems = items.map((candidate, index) => {\n    if (!isPlainRecord(candidate)) {\n      throw new TypeError(`BaseSteps item at index ${index} must be an object.`);\n    }\n\n    const item = candidate as unknown as BaseStepItem;\n    if (\n      typeof item.id !== 'string' ||\n      !item.id ||\n      invalidStepIdPattern.test(item.id)\n    ) {\n      throw new TypeError(\n        `BaseSteps item at index ${index} must have a non-empty id without whitespace or control characters.`,\n      );\n    }\n    if (ids.has(item.id)) {\n      throw new TypeError(`BaseSteps item id ${JSON.stringify(item.id)} is duplicated.`);\n    }\n    ids.add(item.id);\n\n    if (!hasStepLabel(item.label)) {\n      throw new TypeError(\n        `BaseSteps item ${JSON.stringify(item.id)} label must contain renderable content.`,\n      );\n    }\n\n    const status = item.status ?? 'pending';\n    if (!stepStatuses.has(status)) {\n      throw new TypeError(\n        `BaseSteps item ${JSON.stringify(item.id)} status must be one of: pending, current, completed, error.`,\n      );\n    }\n    if (status === 'current') currentCount += 1;\n\n    if (item.disabled !== undefined && typeof item.disabled !== 'boolean') {\n      throw new TypeError(\n        `BaseSteps item ${JSON.stringify(item.id)} disabled must be a boolean.`,\n      );\n    }\n    if (item.selectable !== undefined && typeof item.selectable !== 'boolean') {\n      throw new TypeError(\n        `BaseSteps item ${JSON.stringify(item.id)} selectable must be a boolean.`,\n      );\n    }\n\n    return { item, encodedId: encodeStepId(item.id), status };\n  });\n\n  if (currentCount > 1) {\n    throw new RangeError('BaseSteps items may contain at most one current step.');\n  }\n\n  return validatedItems;\n}\n\nfunction resolveStatusLabels(\n  defaults: BaseStepsStatusLabels,\n  override: unknown,\n): BaseStepsStatusLabels {\n  if (override !== undefined && !isPlainRecord(override)) {\n    throw new TypeError('BaseSteps statusLabels must be an object.');\n  }\n\n  const overrideRecord = override as Record<string, unknown> | undefined;\n  for (const key of Object.keys(overrideRecord ?? {})) {\n    if (!statusLabelKeys.includes(key as (typeof statusLabelKeys)[number])) {\n      throw new TypeError(\n        `BaseSteps statusLabels.${key} is not a supported status label.`,\n      );\n    }\n  }\n\n  const resolved = {\n    current: overrideRecord?.current ?? defaults.current,\n    completed: overrideRecord?.completed ?? defaults.completed,\n    error: overrideRecord?.error ?? defaults.error,\n    disabled: overrideRecord?.disabled ?? defaults.disabled,\n  };\n\n  for (const key of statusLabelKeys) {\n    const value = resolved[key];\n    if (typeof value !== 'string' || !value.trim()) {\n      throw new TypeError(\n        `BaseSteps statusLabels.${key} must be a non-empty string.`,\n      );\n    }\n  }\n\n  return resolved as BaseStepsStatusLabels;\n}\n\nfunction validateAccessibleName(\n  ariaLabel: unknown,\n  ariaLabelledBy: unknown,\n) {\n  if (\n    ariaLabel !== undefined &&\n    (typeof ariaLabel !== 'string' || !ariaLabel.trim())\n  ) {\n    throw new TypeError(\n      'BaseSteps aria-label must be a non-empty string when provided.',\n    );\n  }\n  if (ariaLabelledBy === undefined) return;\n  if (typeof ariaLabelledBy !== 'string' || !ariaLabelledBy.trim()) {\n    throw new TypeError(\n      'BaseSteps aria-labelledby must contain at least one valid ID token.',\n    );\n  }\n  const tokens = ariaLabelledBy.trim().split(/\\s+/);\n  if (tokens.some((token) => invalidStepIdPattern.test(token))) {\n    throw new TypeError(\n      'BaseSteps aria-labelledby must contain only valid ID tokens.',\n    );\n  }\n}\n\nfunction getIndicator(status: BaseStepStatus, index: number) {\n  if (status === 'completed') return '\\u2713';\n  if (status === 'error') return '!';\n  return index + 1;\n}\n\nfunction getIndicatorClassName(\n  status: BaseStepStatus,\n  slots: ReturnType<typeof resolveBaseAppearance>['slots'],\n) {\n  return cn(\n    status === 'pending' && slots.stepsIndicatorPending,\n    status === 'current' && slots.stepsIndicatorCurrent,\n    status === 'completed' && slots.stepsIndicatorCompleted,\n    status === 'error' && slots.stepsIndicatorError,\n  );\n}\n\nexport const BaseSteps = forwardRef<HTMLOListElement, BaseStepsProps>(\n  function BaseSteps(\n    {\n      items,\n      orientation = 'horizontal',\n      statusLabels,\n      appearance,\n      className,\n      classNames,\n      style,\n      onStepSelect,\n      'aria-label': ariaLabel,\n      'aria-labelledby': ariaLabelledBy,\n      ...stepsProps\n    },\n    ref,\n  ) {\n    const generatedId = useId();\n    const messages = useMonkeysLocaleMessages().steps;\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n\n    if (orientation !== 'horizontal' && orientation !== 'vertical') {\n      throw new TypeError(\n        'BaseSteps orientation must be \"horizontal\" or \"vertical\".',\n      );\n    }\n    if (onStepSelect !== undefined && typeof onStepSelect !== 'function') {\n      throw new TypeError('BaseSteps onStepSelect must be a function.');\n    }\n    if (typeof messages.label !== 'string' || !messages.label.trim()) {\n      throw new TypeError('BaseSteps locale label must be a non-empty string.');\n    }\n    validateAccessibleName(ariaLabel, ariaLabelledBy);\n\n    const validatedItems = validateItems(items);\n    const resolvedStatusLabels = resolveStatusLabels(messages, statusLabels);\n\n    return (\n      <ol\n        {...componentAttributes}\n        {...stepsProps}\n        ref={ref}\n        role=\"list\"\n        aria-label={\n          ariaLabel ?? (ariaLabelledBy === undefined ? messages.label : undefined)\n        }\n        aria-labelledby={ariaLabelledBy}\n        data-monkeys-component=\"steps\"\n        data-slot=\"root\"\n        data-orientation={orientation}\n        className={cn(\n          theme.slots.stepsRoot,\n          orientation === 'horizontal'\n            ? theme.slots.stepsHorizontal\n            : theme.slots.stepsVertical,\n          classNames?.root,\n          className,\n        )}\n        style={{\n          ...theme.styles.steps,\n          ...style,\n        }}\n      >\n        {validatedItems.map(({ item, encodedId, status }, index) => {\n          const itemDomId = `${generatedId}-step-${encodedId}`;\n          const labelId = `${itemDomId}-label`;\n          const descriptionId = `${itemDomId}-description`;\n          const statusId = `${itemDomId}-status`;\n          const hasDescription = hasRenderableNode(item.description);\n          const statusText =\n            status === 'pending' ? undefined : resolvedStatusLabels[status];\n          const hasStatusText = Boolean(statusText || item.disabled);\n          const interactive =\n            onStepSelect !== undefined && item.selectable !== false;\n          const describedBy = [\n            hasDescription ? descriptionId : undefined,\n            hasStatusText ? statusId : undefined,\n          ]\n            .filter(Boolean)\n            .join(' ') || undefined;\n\n          const content = (\n            <>\n              <span\n                aria-hidden=\"true\"\n                data-slot=\"indicator\"\n                className={cn(\n                  theme.slots.stepsIndicator,\n                  getIndicatorClassName(status, theme.slots),\n                  classNames?.indicator,\n                )}\n                style={theme.styles.stepsIndicator}\n              >\n                {getIndicator(status, index)}\n              </span>\n              <span\n                data-slot=\"content\"\n                className={cn(theme.slots.stepsContent, classNames?.content)}\n              >\n                <span\n                  id={labelId}\n                  data-slot=\"label\"\n                  className={cn(theme.slots.stepsLabel, classNames?.label)}\n                >\n                  {item.label}\n                </span>\n                {hasDescription ? (\n                  <span\n                    id={descriptionId}\n                    data-slot=\"description\"\n                    className={cn(\n                      theme.slots.stepsDescription,\n                      classNames?.description,\n                    )}\n                  >\n                    {item.description}\n                  </span>\n                ) : null}\n                {hasStatusText ? (\n                  <span\n                    id={statusId}\n                    data-slot=\"status\"\n                    className={cn(\n                      theme.slots.stepsStatus,\n                      classNames?.status,\n                    )}\n                  >\n                    {statusText}\n                    {statusText && item.disabled ? '. ' : null}\n                    {item.disabled ? resolvedStatusLabels.disabled : null}\n                  </span>\n                ) : null}\n              </span>\n            </>\n          );\n\n          return (\n            <li\n              key={item.id}\n              id={itemDomId}\n              aria-current={status === 'current' ? 'step' : undefined}\n              aria-disabled={item.disabled || undefined}\n              data-step-id={item.id}\n              data-status={status}\n              data-disabled={item.disabled || undefined}\n              data-selectable={interactive || undefined}\n              className={cn(\n                theme.slots.stepsItem,\n                orientation === 'horizontal'\n                  ? theme.slots.stepsItemHorizontal\n                  : theme.slots.stepsItemVertical,\n                classNames?.item,\n              )}\n              style={theme.styles.stepsItem}\n            >\n              {interactive ? (\n                <button\n                  type=\"button\"\n                  disabled={item.disabled}\n                  aria-labelledby={labelId}\n                  aria-describedby={describedBy}\n                  data-slot=\"trigger\"\n                  className={cn(\n                    theme.slots.stepsTrigger,\n                    theme.slots.stepsTriggerInteractive,\n                    item.disabled && theme.slots.stepsTriggerDisabled,\n                    classNames?.trigger,\n                  )}\n                  style={theme.styles.stepsTrigger}\n                  onClick={() => {\n                    if (item.disabled) return;\n                    onStepSelect(item.id, item, index);\n                  }}\n                >\n                  {content}\n                </button>\n              ) : (\n                <div\n                  data-slot=\"trigger\"\n                  className={cn(\n                    theme.slots.stepsTrigger,\n                    item.disabled && theme.slots.stepsTriggerDisabled,\n                    classNames?.trigger,\n                  )}\n                  style={theme.styles.stepsTrigger}\n                >\n                  {content}\n                </div>\n              )}\n              {index < validatedItems.length - 1 ? (\n                <span\n                  aria-hidden=\"true\"\n                  data-slot=\"connector\"\n                  className={cn(\n                    theme.slots.stepsConnector,\n                    orientation === 'horizontal'\n                      ? theme.slots.stepsConnectorHorizontal\n                      : theme.slots.stepsConnectorVertical,\n                    status === 'completed' &&\n                      theme.slots.stepsConnectorCompleted,\n                    status === 'error' && theme.slots.stepsConnectorError,\n                    classNames?.connector,\n                  )}\n                  style={theme.styles.stepsConnector}\n                />\n              ) : null}\n            </li>\n          );\n        })}\n      </ol>\n    );\n  },\n);\n","import { forwardRef, useState } from 'react';\nimport type { ChangeEvent } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseSwitchProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasNonEmptyRenderableNode, hasRenderableNode } from './utils';\n\nconst trackSizeClassNames = {\n  sm: 'h-5 w-9',\n  md: 'h-6 w-10',\n  lg: 'h-7 w-12',\n} as const;\n\nconst thumbSizeClassNames = {\n  sm: 'h-3.5 w-3.5',\n  md: 'h-4 w-4',\n  lg: 'h-5 w-5',\n} as const;\n\nconst checkedThumbClassNames = {\n  sm: 'translate-x-[18px]',\n  md: 'translate-x-5',\n  lg: 'translate-x-6',\n} as const;\n\nconst densitySize = {\n  compact: 'sm',\n  default: 'md',\n  comfortable: 'lg',\n} as const;\n\nexport const BaseSwitch = forwardRef<HTMLInputElement, BaseSwitchProps>(\n  function BaseSwitch(\n    {\n      label,\n      description,\n      disabled = false,\n      controlSize,\n      appearance,\n      className,\n      classNames,\n      style,\n      checked,\n      defaultChecked,\n      onChange,\n      ...switchProps\n    },\n    ref,\n  ) {\n    if (typeof disabled !== 'boolean') {\n      throw new TypeError('BaseSwitch disabled must be a boolean.');\n    }\n    if (\n      controlSize !== undefined &&\n      controlSize !== 'sm' &&\n      controlSize !== 'md' &&\n      controlSize !== 'lg'\n    ) {\n      throw new TypeError(\n        'BaseSwitch controlSize must be \"sm\", \"md\", or \"lg\".',\n      );\n    }\n\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const hasLabel = hasRenderableNode(label);\n    const hasDescription = hasNonEmptyRenderableNode(description);\n    const [uncontrolledChecked, setUncontrolledChecked] = useState(\n      defaultChecked ?? false,\n    );\n    const isControlled = checked !== undefined;\n    const resolvedChecked = isControlled ? checked : uncontrolledChecked;\n    const state = resolvedChecked ? 'checked' : 'unchecked';\n    const resolvedVisualSize = controlSize ?? densitySize[theme.density];\n\n    const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n      if (disabled) return;\n      if (!isControlled) {\n        setUncontrolledChecked(event.currentTarget.checked);\n      }\n      onChange?.(event);\n    };\n\n    return (\n      <label\n        {...componentAttributes}\n        data-monkeys-component=\"switch\"\n        data-slot=\"root\"\n        data-state={state}\n        data-size={controlSize}\n        data-disabled={disabled || undefined}\n        className={cn(\n          theme.slots.switchRoot,\n          !hasDescription && 'items-center',\n          disabled && theme.slots.switchDisabled,\n          classNames?.root,\n          className,\n        )}\n        style={{\n          ...theme.styles.switchRoot,\n          ...style,\n        }}\n      >\n        <span\n          data-slot=\"track\"\n          data-state={state}\n          data-size={controlSize}\n          className={cn(\n            theme.slots.switchTrack,\n            !hasDescription && 'mt-0',\n            resolvedChecked && theme.slots.switchChecked,\n            controlSize && trackSizeClassNames[controlSize],\n            classNames?.track,\n          )}\n          style={theme.styles.switchTrack}\n        >\n          <input\n            {...switchProps}\n            ref={ref}\n            type=\"checkbox\"\n            role=\"switch\"\n            disabled={disabled}\n            checked={checked}\n            defaultChecked={defaultChecked}\n            aria-checked={resolvedChecked}\n            data-slot=\"input\"\n            data-state={state}\n            data-size={controlSize}\n            data-disabled={disabled || undefined}\n            onChange={handleChange}\n            className={cn(theme.slots.switchInput, classNames?.input)}\n          />\n          <span\n            aria-hidden=\"true\"\n            data-slot=\"thumb\"\n            data-state={state}\n            data-size={controlSize}\n            className={cn(\n              theme.slots.switchThumb,\n              controlSize && thumbSizeClassNames[controlSize],\n              resolvedChecked && checkedThumbClassNames[resolvedVisualSize],\n              classNames?.thumb,\n            )}\n            style={theme.styles.switchThumb}\n          />\n        </span>\n\n        {hasLabel || hasDescription ? (\n          <span\n            data-slot=\"content\"\n            className={cn(theme.slots.switchContent, classNames?.content)}\n          >\n            {hasLabel ? (\n              <span\n                data-slot=\"label\"\n                className={cn(theme.slots.switchLabel, classNames?.label)}\n              >\n                {label}\n              </span>\n            ) : null}\n            {hasDescription ? (\n              <span\n                data-slot=\"description\"\n                className={cn(\n                  theme.slots.switchDescription,\n                  classNames?.description,\n                )}\n              >\n                {description}\n              </span>\n            ) : null}\n          </span>\n        ) : null}\n      </label>\n    );\n  },\n);\n","import { forwardRef, type ReactNode } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n  useMonkeysStatusStates,\n} from '../../provider/context';\nimport type { BaseSystemStateKind, BaseSystemStateProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction SystemStateIcon({ kind }: { kind: BaseSystemStateKind }) {\n  const path: Record<BaseSystemStateKind, ReactNode> = {\n    error: (\n      <>\n        <circle cx=\"12\" cy=\"12\" r=\"9\" />\n        <path d=\"M12 7v6\" />\n        <path d=\"M12 17h.01\" />\n      </>\n    ),\n    permission: (\n      <>\n        <rect x=\"5\" y=\"10\" width=\"14\" height=\"10\" rx=\"2\" />\n        <path d=\"M8 10V7a4 4 0 0 1 8 0v3\" />\n      </>\n    ),\n    offline: (\n      <>\n        <path d=\"M5 12.5a10 10 0 0 1 14 0\" />\n        <path d=\"M8.5 16a5 5 0 0 1 7 0\" />\n        <path d=\"M12 20h.01\" />\n        <path d=\"m4 4 16 16\" />\n      </>\n    ),\n    fallback: (\n      <>\n        <circle cx=\"12\" cy=\"12\" r=\"9\" />\n        <path d=\"M9.5 9a2.5 2.5 0 1 1 4.2 1.8c-1 .8-1.7 1.2-1.7 2.7\" />\n        <path d=\"M12 17h.01\" />\n      </>\n    ),\n  };\n\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-7 w-7\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"1.8\"\n    >\n      {path[kind]}\n    </svg>\n  );\n}\n\nexport const BaseSystemState = forwardRef<HTMLDivElement, BaseSystemStateProps>(\n  function BaseSystemState(\n    {\n      kind = 'fallback',\n      icon,\n      title,\n      description,\n      actions,\n      appearance,\n      className,\n      classNames,\n      style,\n      role,\n      'aria-live': ariaLive,\n      ...stateProps\n    },\n    ref,\n  ) {\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const statusStates = useMonkeysStatusStates();\n    const densityClassName =\n      statusStates.density === 'compact'\n        ? 'min-h-0 px-3 py-3'\n        : statusStates.density === 'comfortable'\n          ? 'min-h-56 px-8 py-12'\n          : undefined;\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const resolvedIcon =\n      icon === undefined ? <SystemStateIcon kind={kind} /> : icon;\n    const resolvedRole =\n      role ?? (kind === 'error' || kind === 'offline' ? 'alert' : 'status');\n\n    return (\n      <div\n        {...componentAttributes}\n        {...stateProps}\n        ref={ref}\n        role={resolvedRole}\n        aria-live={\n          ariaLive ?? (resolvedRole === 'alert' ? 'assertive' : 'polite')\n        }\n        data-monkeys-component=\"system-state\"\n        data-slot=\"root\"\n        data-state={kind}\n        data-density={statusStates.density}\n        className={cn(\n          theme.slots.stateRoot,\n          densityClassName,\n          classNames?.root,\n          className,\n        )}\n        style={{ ...theme.styles.stateRoot, ...style }}\n      >\n        {hasRenderableNode(resolvedIcon) ? (\n          <div\n            data-slot=\"icon\"\n            data-state={kind}\n            className={cn(theme.slots.stateIcon, classNames?.icon)}\n            style={theme.styles.stateIcon}\n          >\n            {resolvedIcon}\n          </div>\n        ) : null}\n        {hasRenderableNode(title) ? (\n          <div\n            data-slot=\"title\"\n            data-state={kind}\n            className={cn(theme.slots.stateTitle, classNames?.title)}\n          >\n            {title}\n          </div>\n        ) : null}\n        {hasRenderableNode(description) ? (\n          <div\n            data-slot=\"description\"\n            data-state={kind}\n            className={cn(\n              theme.slots.stateDescription,\n              classNames?.description,\n            )}\n          >\n            {description}\n          </div>\n        ) : null}\n        {hasRenderableNode(actions) ? (\n          <div\n            data-slot=\"actions\"\n            data-state={kind}\n            className={cn(theme.slots.stateActions, classNames?.actions)}\n          >\n            {actions}\n          </div>\n        ) : null}\n      </div>\n    );\n  },\n);\n","import {\n  Children,\n  createContext,\n  forwardRef,\n  isValidElement,\n  useContext,\n  useEffect,\n  useRef,\n  useState,\n  type CSSProperties,\n  type DragEvent,\n  type ForwardedRef,\n  type KeyboardEvent as ReactKeyboardEvent,\n  type MutableRefObject,\n  type PointerEvent as ReactPointerEvent,\n  type ReactNode,\n  type UIEvent as ReactUIEvent,\n} from \"react\";\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n  useMonkeysLocaleMessages,\n} from \"../../provider/context\";\nimport { resolveBaseAppearance } from \"./theme\";\nimport type {\n  BaseAppearance,\n  BaseResolvedTheme,\n  BaseTableAlign,\n  BaseTableBodyProps,\n  BaseTableCaptionProps,\n  BaseTableCellProps,\n  BaseTableColumnDefinition,\n  BaseTableColumnInteractionOptions,\n  BaseTableContainerProps,\n  BaseTableEmptyProps,\n  BaseTableFooterProps,\n  BaseTableHeaderProps,\n  BaseTableHeadProps,\n  BaseTableLayout,\n  BaseTableLoadingProps,\n  BaseTableProps,\n  BaseTableRowProps,\n  BaseTableSortDirection,\n  BaseTableVerticalAlign,\n} from './types';\nimport { cn, hasRenderableNode } from './utils';\nimport { SkeletonScope, SkeletonItem, useSkeletonMotion } from '../skeleton/motion';\n\nconst DATA_TRANSFER_COLUMN_TYPE = \"application/x-monkeys-base-table-column\";\nconst COLUMN_RESIZE_KEYBOARD_STEP = 8;\n\nfunction assignRef<T>(ref: ForwardedRef<T> | undefined, value: T | null) {\n  if (typeof ref === \"function\") {\n    ref(value);\n  } else if (ref) {\n    ref.current = value;\n  }\n}\n\nfunction assertBoolean(name: string, value: unknown) {\n  if (value !== undefined && typeof value !== \"boolean\") {\n    throw new Error(`BaseTable ${name} must be a boolean.`);\n  }\n}\n\nfunction assertEnum<T extends string>(\n  name: string,\n  value: unknown,\n  values: readonly T[],\n) {\n  if (value !== undefined && !values.includes(value as T)) {\n    throw new Error(\n      `BaseTable ${name} must be one of ${values.map((item) => `\"${item}\"`).join(\", \")}.`,\n    );\n  }\n}\n\nfunction assertOptionalLabel(name: string, value: unknown) {\n  if (\n    value !== undefined &&\n    (typeof value !== \"string\" || value.trim().length === 0)\n  ) {\n    throw new Error(\n      `BaseTable ${name} must be a non-empty string when provided.`,\n    );\n  }\n}\n\nfunction assertOptionalFunction(name: string, value: unknown) {\n  if (value !== undefined && typeof value !== \"function\") {\n    throw new Error(`BaseTable ${name} must be a function when provided.`);\n  }\n}\n\nfunction validateCssSizeValue(\n  value: unknown,\n  name: string,\n  options: { stringAllowed?: boolean } = {},\n) {\n  if (value === undefined) return;\n  if (typeof value === \"number\") {\n    if (!Number.isFinite(value) || value < 0) {\n      throw new Error(\n        `BaseTable ${name} must be a finite non-negative number${\n          options.stringAllowed ? \" or a non-empty CSS size string\" : \"\"\n        }.`,\n      );\n    }\n    return;\n  }\n  if (\n    options.stringAllowed &&\n    typeof value === \"string\" &&\n    value.trim().length > 0\n  ) {\n    return;\n  }\n  throw new Error(\n    `BaseTable ${name} must be ${\n      options.stringAllowed\n        ? \"a finite non-negative number or a non-empty CSS size string\"\n        : \"a finite non-negative number\"\n    }.`,\n  );\n}\n\nfunction validateColumns(columns: unknown) {\n  if (columns === undefined) return undefined;\n  if (!Array.isArray(columns)) {\n    throw new Error(\"BaseTable columns must be an array when provided.\");\n  }\n\n  const ids = new Set<string>();\n  columns.forEach((column, index) => {\n    if (!column || typeof column !== \"object\" || Array.isArray(column)) {\n      throw new Error(`BaseTable column at index ${index} must be an object.`);\n    }\n    const definition = column as BaseTableColumnDefinition;\n    if (\n      typeof definition.id !== \"string\" ||\n      definition.id.trim().length === 0\n    ) {\n      throw new Error(\n        `BaseTable column id at index ${index} must be a non-empty string.`,\n      );\n    }\n    const columnId = definition.id.trim();\n    if (definition.id !== columnId) {\n      throw new Error(\n        `BaseTable column id \"${definition.id}\" must not contain surrounding whitespace.`,\n      );\n    }\n    if (ids.has(columnId)) {\n      throw new Error(`BaseTable columns contain duplicate id \"${columnId}\".`);\n    }\n    ids.add(columnId);\n    validateCssSizeValue(definition.width, `column \"${columnId}\" width`, {\n      stringAllowed: true,\n    });\n    validateCssSizeValue(definition.minWidth, `column \"${columnId}\" minWidth`, {\n      stringAllowed: true,\n    });\n    validateCssSizeValue(definition.maxWidth, `column \"${columnId}\" maxWidth`, {\n      stringAllowed: true,\n    });\n    if (\n      typeof definition.minWidth === \"number\" &&\n      typeof definition.maxWidth === \"number\" &&\n      definition.minWidth > definition.maxWidth\n    ) {\n      throw new Error(\n        `BaseTable column \"${columnId}\" minWidth cannot be greater than maxWidth.`,\n      );\n    }\n  });\n  return ids;\n}\n\nfunction validateColumnOrder(\n  columnOrder: unknown,\n  knownColumnIds?: Set<string>,\n) {\n  if (columnOrder === undefined) return;\n  if (!Array.isArray(columnOrder)) {\n    throw new Error(\"BaseTable columnOrder must be an array when provided.\");\n  }\n\n  const ids = new Set<string>();\n  columnOrder.forEach((value, index) => {\n    if (typeof value !== \"string\" || value.trim().length === 0) {\n      throw new Error(\n        `BaseTable columnOrder entry at index ${index} must be a non-empty string.`,\n      );\n    }\n    const columnId = value.trim();\n    if (value !== columnId) {\n      throw new Error(\n        `BaseTable columnOrder entry \"${value}\" must not contain surrounding whitespace.`,\n      );\n    }\n    if (ids.has(columnId)) {\n      throw new Error(\n        `BaseTable columnOrder contains duplicate id \"${columnId}\".`,\n      );\n    }\n    if (knownColumnIds && !knownColumnIds.has(columnId)) {\n      throw new Error(\n        `BaseTable columnOrder contains unknown column id \"${columnId}\".`,\n      );\n    }\n    ids.add(columnId);\n  });\n\n  if (knownColumnIds && ids.size !== knownColumnIds.size) {\n    const missing = [...knownColumnIds].filter(\n      (columnId) => !ids.has(columnId),\n    );\n    throw new Error(\n      `BaseTable columnOrder must contain every configured column id; missing ${missing\n        .map((columnId) => `\"${columnId}\"`)\n        .join(\", \")}.`,\n    );\n  }\n}\n\nfunction validateColumnSizes(\n  columnSizes: unknown,\n  knownColumnIds?: Set<string>,\n) {\n  if (columnSizes === undefined) return;\n  if (\n    !columnSizes ||\n    typeof columnSizes !== \"object\" ||\n    Array.isArray(columnSizes) ||\n    ![Object.prototype, null].includes(Object.getPrototypeOf(columnSizes))\n  ) {\n    throw new Error(\n      \"BaseTable columnSizes must be a plain record when provided.\",\n    );\n  }\n\n  Object.entries(columnSizes).forEach(([columnId, value]) => {\n    const normalizedColumnId = columnId.trim();\n    if (normalizedColumnId.length === 0) {\n      throw new Error(\"BaseTable columnSizes keys must be non-empty strings.\");\n    }\n    if (columnId !== normalizedColumnId) {\n      throw new Error(\n        `BaseTable columnSizes key \"${columnId}\" must not contain surrounding whitespace.`,\n      );\n    }\n    if (knownColumnIds && !knownColumnIds.has(normalizedColumnId)) {\n      throw new Error(\n        `BaseTable columnSizes contains unknown column id \"${columnId}\".`,\n      );\n    }\n    validateCssSizeValue(value, `columnSizes[\"${columnId}\"]`);\n  });\n}\n\nfunction isRtl(element: HTMLElement) {\n  const ownerWindow = element.ownerDocument.defaultView;\n  if (ownerWindow) {\n    return ownerWindow.getComputedStyle(element).direction === \"rtl\";\n  }\n  return element.closest('[dir=\"rtl\"]') !== null;\n}\n\nfunction setPointerCaptureIfAvailable(target: HTMLElement, pointerId: number) {\n  if (!target.setPointerCapture) return;\n  try {\n    target.setPointerCapture(pointerId);\n  } catch (error) {\n    const OwnerDOMException = target.ownerDocument.defaultView?.DOMException;\n    if (\n      OwnerDOMException &&\n      error instanceof OwnerDOMException &&\n      error.name === \"NotFoundError\"\n    ) {\n      return;\n    }\n    throw error;\n  }\n}\n\ntype BaseTableContextValue = BaseTableColumnInteractionOptions & {\n  appearance?: BaseAppearance;\n  theme: BaseResolvedTheme;\n  layout: BaseTableLayout;\n  columnTemplate?: string;\n  bodyMaxHeight?: number | string;\n  bodyClassName?: string;\n  splitHeaderRef?: MutableRefObject<HTMLTableSectionElement | null>;\n  splitFooterRef?: MutableRefObject<HTMLTableSectionElement | null>;\n  draggingColumnId?: string;\n  setDraggingColumnId: (columnId?: string) => void;\n};\n\nconst BaseTableContext = createContext<BaseTableContextValue | null>(null);\n\nfunction useBaseTableContext(appearance?: BaseAppearance) {\n  const context = useContext(BaseTableContext);\n  const providerAppearance = useMonkeysBaseAppearance(appearance);\n  if (context) {\n    const resolvedAppearance =\n      appearance === undefined ? context.appearance : providerAppearance;\n    return {\n      ...context,\n      theme:\n        appearance === undefined\n          ? context.theme\n          : resolveBaseAppearance(resolvedAppearance),\n      appearance: resolvedAppearance,\n    };\n  }\n\n  const theme = resolveBaseAppearance(providerAppearance);\n  return {\n    appearance: providerAppearance,\n    theme,\n    layout: \"native\",\n    setDraggingColumnId: () => {},\n  } satisfies BaseTableContextValue;\n}\n\nfunction hasSplitScrollTable(children: ReactNode): boolean {\n  let found = false;\n\n  Children.forEach(children, (child) => {\n    if (found || !isValidElement(child)) return;\n\n    const childProps = child.props as {\n      children?: ReactNode;\n      layout?: unknown;\n    };\n\n    if (childProps.layout === \"split-scroll\") {\n      found = true;\n      return;\n    }\n\n    if (childProps.children) {\n      found = hasSplitScrollTable(childProps.children);\n    }\n  });\n\n  return found;\n}\n\nfunction toCssSize(value?: number | string) {\n  if (value === undefined) return undefined;\n  return typeof value === \"number\" ? `${value}px` : value;\n}\n\nfunction validateTableCssSize(\n  value: number | string | undefined,\n  property: string,\n) {\n  if (value === undefined) return undefined;\n  if (typeof value === \"number\") {\n    if (!Number.isFinite(value) || value < 0) {\n      throw new Error(\n        `BaseTable ${property} must be a finite non-negative number when numeric.`,\n      );\n    }\n    return `${value}px`;\n  }\n\n  if (value.trim().length === 0) {\n    throw new Error(`BaseTable ${property} must not be an empty CSS size.`);\n  }\n\n  return value;\n}\n\nfunction validateCssSize(\n  value: number | string | undefined,\n  columnId: string,\n  property: string,\n) {\n  if (value === undefined) return undefined;\n  if (typeof value === \"number\") {\n    if (!Number.isFinite(value) || value < 0) {\n      throw new Error(\n        `BaseTable split-scroll column \"${columnId}\" has invalid ${property}. Expected a finite non-negative number.`,\n      );\n    }\n    return `${value}px`;\n  }\n\n  if (value.trim().length === 0) {\n    throw new Error(\n      `BaseTable split-scroll column \"${columnId}\" has an empty ${property} value.`,\n    );\n  }\n\n  return value;\n}\n\nfunction validateNumericSize(\n  value: number | string | undefined,\n  columnId: string,\n  property: string,\n) {\n  if (value === undefined || typeof value !== \"number\") return undefined;\n  if (!Number.isFinite(value) || value < 0) {\n    throw new Error(\n      `BaseTable split-scroll column \"${columnId}\" has invalid ${property}. Expected a finite non-negative number.`,\n    );\n  }\n  return value;\n}\n\nfunction buildSplitColumnTemplate(\n  columns: BaseTableColumnDefinition[] | undefined,\n  columnSizes: BaseTableColumnInteractionOptions[\"columnSizes\"],\n) {\n  if (!columns?.length) {\n    throw new Error(\n      'BaseTable layout=\"split-scroll\" requires at least one column definition.',\n    );\n  }\n\n  const seenColumnIds = new Set<string>();\n  const tracks = columns.map((column, index) => {\n    const columnId = column.id.trim();\n    if (!columnId) {\n      throw new Error(\n        `BaseTable split-scroll column at index ${index} requires a non-empty id.`,\n      );\n    }\n    if (seenColumnIds.has(columnId)) {\n      throw new Error(\n        `BaseTable layout=\"split-scroll\" received duplicate column id \"${columnId}\".`,\n      );\n    }\n    seenColumnIds.add(columnId);\n\n    const columnSize = columnSizes?.[columnId];\n    const numericMinWidth = validateNumericSize(\n      column.minWidth,\n      columnId,\n      \"minWidth\",\n    );\n    const numericMaxWidth = validateNumericSize(\n      column.maxWidth,\n      columnId,\n      \"maxWidth\",\n    );\n    if (\n      numericMinWidth !== undefined &&\n      numericMaxWidth !== undefined &&\n      numericMaxWidth < numericMinWidth\n    ) {\n      throw new Error(\n        `BaseTable split-scroll column \"${columnId}\" has maxWidth smaller than minWidth.`,\n      );\n    }\n\n    const minWidth = validateCssSize(column.minWidth, columnId, \"minWidth\");\n    const maxWidth = validateCssSize(column.maxWidth, columnId, \"maxWidth\");\n    const baseWidth =\n      columnSize !== undefined\n        ? clampWidth(columnSize, numericMinWidth, numericMaxWidth)\n        : column.width;\n    const width = validateCssSize(baseWidth, columnId, \"width\");\n    if (width) return width;\n\n    return `minmax(${minWidth ?? \"0px\"}, ${maxWidth ?? \"1fr\"})`;\n  });\n\n  return `${tracks.join(\" \")} var(--base-table-split-scrollbar-gutter)`;\n}\n\nfunction clampWidth(value: number, minWidth?: number, maxWidth?: number) {\n  const min = minWidth ?? 48;\n  const max = maxWidth ?? Number.POSITIVE_INFINITY;\n  return Math.min(Math.max(value, min), max);\n}\n\nfunction getNextColumnOrder(\n  order: string[] | undefined,\n  columnId: string,\n  targetColumnId: string,\n) {\n  if (!order || columnId === targetColumnId) return undefined;\n  const fromIndex = order.indexOf(columnId);\n  const toIndex = order.indexOf(targetColumnId);\n  if (fromIndex < 0 || toIndex < 0) return undefined;\n\n  const next = [...order];\n  const [moved] = next.splice(fromIndex, 1);\n  next.splice(toIndex, 0, moved);\n  return next;\n}\n\nfunction sortAriaValue(direction?: BaseTableSortDirection) {\n  switch (direction) {\n    case \"asc\":\n      return \"ascending\";\n    case \"desc\":\n      return \"descending\";\n    default:\n      return undefined;\n  }\n}\n\nfunction getSplitHeadJustifyContent(align: BaseTableAlign) {\n  switch (align) {\n    case \"center\":\n      return \"center\";\n    case \"right\":\n      return \"flex-end\";\n    default:\n      return \"flex-start\";\n  }\n}\n\nfunction getSplitHeadAlignItems(verticalAlign: BaseTableVerticalAlign) {\n  switch (verticalAlign) {\n    case \"top\":\n      return \"flex-start\";\n    case \"bottom\":\n      return \"flex-end\";\n    default:\n      return \"center\";\n  }\n}\n\nfunction SortIndicator({\n  direction,\n  className,\n}: {\n  direction?: BaseTableSortDirection;\n  className?: string;\n}) {\n  return (\n    <span\n      aria-hidden=\"true\"\n      className={cn(\n        className,\n        direction === \"desc\" && \"rotate-180\",\n        (!direction || direction === \"none\") && \"opacity-45\",\n      )}\n    >\n      ▲\n    </span>\n  );\n}\n\nfunction DragHandleIcon() {\n  return (\n    <span aria-hidden=\"true\" className=\"grid gap-0.5\">\n      <span className=\"h-0.5 w-0.5 rounded-full bg-current\" />\n      <span className=\"h-0.5 w-0.5 rounded-full bg-current\" />\n      <span className=\"h-0.5 w-0.5 rounded-full bg-current\" />\n    </span>\n  );\n}\n\nexport const BaseTableContainer = forwardRef<\n  HTMLDivElement,\n  BaseTableContainerProps\n>(function BaseTableContainer(\n  {\n    appearance,\n    attachedFooter = false,\n    children,\n    className,\n    classNames,\n    style,\n    ...containerProps\n  },\n  ref,\n) {\n  assertBoolean(\"attachedFooter\", attachedFooter);\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n  const containsSplitScrollTable = hasSplitScrollTable(children);\n  const splitScrollContainerStyle = containsSplitScrollTable\n    ? ({\n        overflow: \"hidden\",\n        scrollbarGutter: \"auto\",\n      } as CSSProperties)\n    : undefined;\n\n  return (\n    <div\n      {...componentAttributes}\n      {...containerProps}\n      ref={ref}\n      data-monkeys-component=\"table-container\"\n      data-slot=\"container\"\n      data-base-table-container=\"\"\n      data-attached-footer={attachedFooter ? \"\" : undefined}\n      className={cn(\n        theme.slots.tableContainer,\n        attachedFooter && theme.slots.tableContainerFooterAttached,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.tableContainer,\n        ...(attachedFooter\n          ? theme.styles.tableContainerFooterAttached\n          : undefined),\n        ...splitScrollContainerStyle,\n        ...style,\n      }}\n    >\n      {children}\n    </div>\n  );\n});\n\nexport const BaseTable = forwardRef<HTMLTableElement, BaseTableProps>(\n  function BaseTable(\n    {\n      appearance,\n      className,\n      classNames,\n      style,\n      layout = \"native\",\n      columns,\n      bodyMaxHeight,\n      bodyClassName,\n      columnOrder,\n      columnSizes,\n      columnDragEnabled = false,\n      columnResizeEnabled = false,\n      onColumnOrderChange,\n      onColumnSizeChange,\n      ...tableProps\n    },\n    ref,\n  ) {\n    assertEnum(\"layout\", layout, [\"native\", \"split-scroll\"] as const);\n    assertBoolean(\"columnDragEnabled\", columnDragEnabled);\n    assertBoolean(\"columnResizeEnabled\", columnResizeEnabled);\n    assertOptionalFunction(\"onColumnOrderChange\", onColumnOrderChange);\n    assertOptionalFunction(\"onColumnSizeChange\", onColumnSizeChange);\n    validateCssSizeValue(bodyMaxHeight, \"bodyMaxHeight\", {\n      stringAllowed: true,\n    });\n    const knownColumnIds = validateColumns(columns);\n    validateColumnOrder(columnOrder, knownColumnIds);\n    validateColumnSizes(columnSizes, knownColumnIds);\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const [draggingColumnId, setDraggingColumnId] = useState<\n      string | undefined\n    >();\n    const splitHeaderRef = useRef<HTMLTableSectionElement | null>(null);\n    const splitFooterRef = useRef<HTMLTableSectionElement | null>(null);\n    const isSplitScroll = layout === \"split-scroll\";\n    const columnTemplate = isSplitScroll\n      ? buildSplitColumnTemplate(columns, columnSizes)\n      : undefined;\n    const contextValue: BaseTableContextValue = {\n      appearance: resolvedAppearance,\n      theme,\n      layout,\n      columnTemplate,\n      bodyMaxHeight,\n      bodyClassName,\n      splitHeaderRef,\n      splitFooterRef,\n      columnOrder,\n      columnSizes,\n      columnDragEnabled,\n      columnResizeEnabled,\n      onColumnOrderChange,\n      onColumnSizeChange,\n      draggingColumnId,\n      setDraggingColumnId,\n    };\n\n    return (\n      <BaseTableContext.Provider value={contextValue}>\n        <table\n          {...componentAttributes}\n          {...tableProps}\n          ref={ref}\n          data-monkeys-component=\"table\"\n          data-slot=\"root\"\n          data-base-table-layout={layout}\n          className={cn(\n            theme.slots.tableRoot,\n            isSplitScroll && theme.slots.tableSplitRoot,\n            classNames?.root,\n            className,\n          )}\n          style={{\n            ...theme.styles.table,\n            ...(isSplitScroll ? theme.styles.tableSplitRoot : undefined),\n            ...(columnTemplate\n              ? ({\n                  \"--base-table-column-template\": columnTemplate,\n                } as CSSProperties)\n              : undefined),\n            ...style,\n          }}\n        />\n      </BaseTableContext.Provider>\n    );\n  },\n);\n\nexport const BaseTableHeader = forwardRef<\n  HTMLTableSectionElement,\n  BaseTableHeaderProps\n>(function BaseTableHeader(\n  { appearance, className, classNames, style, ...headerProps },\n  ref,\n) {\n  const { layout, splitHeaderRef, theme } = useBaseTableContext(appearance);\n  const isSplitScroll = layout === \"split-scroll\";\n  const setHeaderRef = (node: HTMLTableSectionElement | null) => {\n    if (splitHeaderRef) splitHeaderRef.current = isSplitScroll ? node : null;\n    assignRef(ref, node);\n  };\n\n  return (\n    <thead\n      {...headerProps}\n      ref={setHeaderRef}\n      data-slot=\"header\"\n      className={cn(\n        theme.slots.tableHeader,\n        isSplitScroll && theme.slots.tableSplitHeader,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.tableHeader,\n        ...(isSplitScroll ? theme.styles.tableSplitHeader : undefined),\n        ...style,\n      }}\n    />\n  );\n});\n\nexport const BaseTableBody = forwardRef<\n  HTMLTableSectionElement,\n  BaseTableBodyProps\n>(function BaseTableBody(\n  { appearance, className, classNames, onScroll, style, ...bodyProps },\n  ref,\n) {\n  const {\n    bodyClassName,\n    bodyMaxHeight,\n    layout,\n    splitFooterRef,\n    splitHeaderRef,\n    theme,\n  } = useBaseTableContext(appearance);\n  const isSplitScroll = layout === \"split-scroll\";\n  const handleScroll = isSplitScroll\n    ? (event: ReactUIEvent<HTMLTableSectionElement>) => {\n        const scrollLeft = event.currentTarget.scrollLeft;\n\n        if (splitHeaderRef?.current) {\n          splitHeaderRef.current.scrollLeft = scrollLeft;\n        }\n        if (splitFooterRef?.current) {\n          splitFooterRef.current.scrollLeft = scrollLeft;\n        }\n        onScroll?.(event);\n      }\n    : onScroll;\n\n  return (\n    <tbody\n      {...bodyProps}\n      ref={ref}\n      data-slot=\"body\"\n      onScroll={handleScroll}\n      className={cn(\n        theme.slots.tableBody,\n        isSplitScroll && theme.slots.tableSplitBody,\n        isSplitScroll && bodyClassName,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.tableBody,\n        ...(isSplitScroll ? theme.styles.tableSplitBody : undefined),\n        ...(isSplitScroll && bodyMaxHeight !== undefined\n          ? { maxHeight: validateTableCssSize(bodyMaxHeight, \"bodyMaxHeight\") }\n          : undefined),\n        ...style,\n      }}\n    />\n  );\n});\n\nexport const BaseTableFooter = forwardRef<\n  HTMLTableSectionElement,\n  BaseTableFooterProps\n>(function BaseTableFooter(\n  { appearance, className, classNames, style, ...footerProps },\n  ref,\n) {\n  const { layout, splitFooterRef, theme } = useBaseTableContext(appearance);\n  const isSplitScroll = layout === \"split-scroll\";\n  const setFooterRef = (node: HTMLTableSectionElement | null) => {\n    if (splitFooterRef) splitFooterRef.current = isSplitScroll ? node : null;\n    assignRef(ref, node);\n  };\n\n  return (\n    <tfoot\n      {...footerProps}\n      ref={setFooterRef}\n      data-slot=\"footer\"\n      className={cn(\n        theme.slots.tableFooter,\n        isSplitScroll && theme.slots.tableSplitFooter,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.tableFooter,\n        ...(isSplitScroll ? theme.styles.tableSplitFooter : undefined),\n        ...style,\n      }}\n    />\n  );\n});\n\nexport const BaseTableRow = forwardRef<HTMLTableRowElement, BaseTableRowProps>(\n  function BaseTableRow(\n    {\n      interactive,\n      selected,\n      disabled,\n      appearance,\n      className,\n      classNames,\n      style,\n      ...rowProps\n    },\n    ref,\n  ) {\n    assertBoolean(\"interactive\", interactive);\n    assertBoolean(\"selected\", selected);\n    assertBoolean(\"disabled\", disabled);\n    const { layout, theme } = useBaseTableContext(appearance);\n    const isSplitScroll = layout === \"split-scroll\";\n\n    return (\n      <tr\n        {...rowProps}\n        ref={ref}\n        data-slot=\"row\"\n        aria-disabled={disabled || undefined}\n        data-state={selected ? \"selected\" : undefined}\n        className={cn(\n          theme.slots.tableRow,\n          isSplitScroll && theme.slots.tableSplitRow,\n          interactive && !disabled && theme.slots.tableRowInteractive,\n          selected && theme.slots.tableRowSelected,\n          disabled && theme.slots.tableRowDisabled,\n          classNames?.root,\n          className,\n        )}\n        style={{\n          ...theme.styles.tableRow,\n          ...(isSplitScroll ? theme.styles.tableSplitRow : undefined),\n          ...style,\n        }}\n      />\n    );\n  },\n);\n\nexport const BaseTableHead = forwardRef<\n  HTMLTableCellElement,\n  BaseTableHeadProps\n>(function BaseTableHead(\n  {\n    presentation,\n    columnId,\n    align,\n    verticalAlign,\n    icon,\n    label,\n    description,\n    meta,\n    actions,\n    trailing,\n    sortable,\n    sortDirection = \"none\",\n    sortLabel,\n    onSort,\n    draggable,\n    dragLabel,\n    resizable,\n    resizeLabel,\n    width,\n    minWidth,\n    maxWidth,\n    appearance,\n    className,\n    classNames,\n    style,\n    children,\n    onDragOver,\n    onDrop,\n    ...headProps\n  },\n  forwardedRef,\n) {\n  assertEnum(\"head presentation\", presentation, [\"classic-data-grid\"] as const);\n  assertEnum(\"head align\", align, [\"left\", \"center\", \"right\"] as const);\n  assertEnum(\"head verticalAlign\", verticalAlign, [\n    \"top\",\n    \"middle\",\n    \"bottom\",\n  ] as const);\n  assertEnum(\"head sortDirection\", sortDirection, [\n    \"asc\",\n    \"desc\",\n    \"none\",\n  ] as const);\n  assertBoolean(\"head sortable\", sortable);\n  assertBoolean(\"head draggable\", draggable);\n  assertBoolean(\"head resizable\", resizable);\n  assertOptionalFunction(\"head onSort\", onSort);\n  assertOptionalLabel(\"head sortLabel\", sortLabel);\n  assertOptionalLabel(\"head dragLabel\", dragLabel);\n  assertOptionalLabel(\"head resizeLabel\", resizeLabel);\n  if (\n    columnId !== undefined &&\n    (typeof columnId !== \"string\" || columnId.trim().length === 0)\n  ) {\n    throw new Error(\n      \"BaseTable head columnId must be a non-empty string when provided.\",\n    );\n  }\n  validateCssSizeValue(width, \"head width\", { stringAllowed: true });\n  validateCssSizeValue(minWidth, \"head minWidth\");\n  validateCssSizeValue(maxWidth, \"head maxWidth\");\n  if (minWidth !== undefined && maxWidth !== undefined && minWidth > maxWidth) {\n    throw new Error(\"BaseTable head minWidth cannot be greater than maxWidth.\");\n  }\n  const tableContext = useBaseTableContext(appearance);\n  const { theme } = tableContext;\n  const messages = useMonkeysLocaleMessages().table;\n  const isSplitScroll = tableContext.layout === \"split-scroll\";\n  const classicDataGrid = presentation === \"classic-data-grid\";\n  const resolvedAlign = align ?? (isSplitScroll ? \"center\" : \"left\");\n  const resolvedVerticalAlign = verticalAlign ?? \"middle\";\n  const headRef = useRef<HTMLTableCellElement | null>(null);\n  const resizeCleanupRef = useRef<() => void>(() => {});\n  const [measuredWidth, setMeasuredWidth] = useState<number>();\n  const setHeadRef = (node: HTMLTableCellElement | null) => {\n    headRef.current = node;\n    assignRef(forwardedRef, node);\n  };\n  const controlledWidth =\n    columnId && tableContext.columnSizes?.[columnId] !== undefined\n      ? tableContext.columnSizes[columnId]\n      : width;\n  const canDrag = Boolean(\n    columnId &&\n      draggable !== false &&\n      (draggable || tableContext.columnDragEnabled) &&\n      tableContext.columnOrder &&\n      tableContext.onColumnOrderChange,\n  );\n  const canResize = Boolean(\n    columnId &&\n      resizable !== false &&\n      (resizable || tableContext.columnResizeEnabled) &&\n      tableContext.onColumnSizeChange,\n  );\n  if (canResize && maxWidth !== undefined && maxWidth < (minWidth ?? 48)) {\n    throw new Error(\n      \"BaseTable resizable head maxWidth cannot be smaller than its effective minWidth.\",\n    );\n  }\n  const interactiveSort = Boolean(sortable || onSort);\n  const ariaSort = sortAriaValue(sortDirection);\n\n  const content = hasRenderableNode(label) ? label : children;\n  const hasVisibleSortName =\n    hasRenderableNode(content) || hasRenderableNode(description);\n  const sortAccessibleName =\n    sortLabel ??\n    (!hasVisibleSortName\n      ? messages.sortColumn({ columnId: columnId?.trim() || undefined })\n      : undefined);\n  const usesRichHeader =\n    canDrag ||\n    hasRenderableNode(icon) ||\n    hasRenderableNode(label) ||\n    hasRenderableNode(description) ||\n    hasRenderableNode(meta) ||\n    hasRenderableNode(actions) ||\n    hasRenderableNode(trailing) ||\n    interactiveSort;\n  const renderedContent = classicDataGrid ? (\n    <div\n      className={cn(\n        \"flex h-full min-w-0 select-none items-center\",\n        resolvedAlign === \"center\"\n          ? \"justify-center\"\n          : resolvedAlign === \"right\"\n            ? \"justify-end\"\n            : \"justify-start\",\n        canDrag && \"cursor-grab active:cursor-grabbing\",\n      )}\n      {...(canDrag\n        ? {\n            draggable: true,\n            role: \"button\",\n            tabIndex: 0,\n            \"aria-disabled\": false,\n            \"aria-roledescription\": \"sortable\",\n            onKeyDown: (event: ReactKeyboardEvent<HTMLDivElement>) => {\n              if (\n                !columnId ||\n                !tableContext.columnOrder ||\n                (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\")\n              ) {\n                return;\n              }\n              const currentIndex = tableContext.columnOrder.indexOf(columnId);\n              if (currentIndex < 0) return;\n              const rtl = isRtl(event.currentTarget);\n              const physicalDelta = event.key === \"ArrowLeft\" ? -1 : 1;\n              const nextIndex =\n                currentIndex + (rtl ? -physicalDelta : physicalDelta);\n              const targetColumnId = tableContext.columnOrder[nextIndex];\n              if (!targetColumnId) return;\n              const nextOrder = getNextColumnOrder(\n                tableContext.columnOrder,\n                columnId,\n                targetColumnId,\n              );\n              if (!nextOrder) return;\n              event.preventDefault();\n              tableContext.onColumnOrderChange?.(nextOrder, {\n                columnId,\n                targetColumnId,\n              });\n            },\n            onDragStart: (event: DragEvent<HTMLDivElement>) => {\n              event.stopPropagation();\n              tableContext.setDraggingColumnId(columnId as string);\n              event.dataTransfer.effectAllowed = \"move\";\n              event.dataTransfer.setData(\n                DATA_TRANSFER_COLUMN_TYPE,\n                columnId as string,\n              );\n            },\n            onDragEnd: (event: DragEvent<HTMLDivElement>) => {\n              event.stopPropagation();\n              tableContext.setDraggingColumnId(undefined);\n            },\n          }\n        : {})}\n    >\n      {content}\n    </div>\n  ) : usesRichHeader ? (\n    <div className={cn(theme.slots.tableHeadContent, classNames?.content)}>\n      <div className={cn(theme.slots.tableHeadMain, classNames?.main)}>\n        {canDrag ? (\n          <button\n            type=\"button\"\n            draggable\n            title={dragLabel}\n            aria-label={\n              dragLabel ?? messages.dragColumn({ columnId: columnId as string })\n            }\n            className={cn(\n              theme.slots.tableHeadDragHandle,\n              classNames?.dragHandle,\n            )}\n            onClick={(event) => event.stopPropagation()}\n            onKeyDown={(event) => {\n              if (\n                !columnId ||\n                !tableContext.columnOrder ||\n                (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\")\n              ) {\n                return;\n              }\n              const currentIndex = tableContext.columnOrder.indexOf(columnId);\n              if (currentIndex < 0) return;\n              const rtl = isRtl(event.currentTarget);\n              const physicalDelta = event.key === \"ArrowLeft\" ? -1 : 1;\n              const nextIndex =\n                currentIndex + (rtl ? -physicalDelta : physicalDelta);\n              const targetColumnId = tableContext.columnOrder[nextIndex];\n              if (!targetColumnId) return;\n              const nextOrder = getNextColumnOrder(\n                tableContext.columnOrder,\n                columnId,\n                targetColumnId,\n              );\n              if (!nextOrder) return;\n              event.preventDefault();\n              tableContext.onColumnOrderChange?.(nextOrder, {\n                columnId,\n                targetColumnId,\n              });\n            }}\n            onDragStart={(event) => {\n              event.stopPropagation();\n              tableContext.setDraggingColumnId(columnId);\n              event.dataTransfer.effectAllowed = \"move\";\n              event.dataTransfer.setData(\n                DATA_TRANSFER_COLUMN_TYPE,\n                columnId as string,\n              );\n            }}\n            onDragEnd={(event) => {\n              event.stopPropagation();\n              tableContext.setDraggingColumnId(undefined);\n            }}\n          >\n            <DragHandleIcon />\n          </button>\n        ) : null}\n        {icon ? (\n          <span className={cn(theme.slots.tableHeadIcon, classNames?.icon)}>\n            {icon}\n          </span>\n        ) : null}\n        {interactiveSort ? (\n          <button\n            type=\"button\"\n            disabled={!onSort}\n            title={sortLabel}\n            aria-label={sortAccessibleName}\n            className={cn(\n              theme.slots.tableHeadSortButton,\n              classNames?.sortButton,\n            )}\n            onClick={(event) => {\n              event.stopPropagation();\n              onSort?.(columnId);\n            }}\n          >\n            <span className={cn(theme.slots.tableHeadText, classNames?.text)}>\n              {hasRenderableNode(content) ? (\n                <span\n                  className={cn(theme.slots.tableHeadLabel, classNames?.label)}\n                >\n                  {content}\n                </span>\n              ) : null}\n              {hasRenderableNode(description) ? (\n                <span\n                  className={cn(\n                    theme.slots.tableHeadDescription,\n                    classNames?.description,\n                  )}\n                >\n                  {description}\n                </span>\n              ) : null}\n            </span>\n            <SortIndicator\n              direction={sortDirection}\n              className={cn(\n                theme.slots.tableHeadSortIcon,\n                classNames?.sortIcon,\n              )}\n            />\n          </button>\n        ) : (\n          <span className={cn(theme.slots.tableHeadText, classNames?.text)}>\n            {hasRenderableNode(content) ? (\n              <span\n                className={cn(theme.slots.tableHeadLabel, classNames?.label)}\n              >\n                {content}\n              </span>\n            ) : null}\n            {hasRenderableNode(description) ? (\n              <span\n                className={cn(\n                  theme.slots.tableHeadDescription,\n                  classNames?.description,\n                )}\n              >\n                {description}\n              </span>\n            ) : null}\n          </span>\n        )}\n      </div>\n      {hasRenderableNode(meta) ||\n      hasRenderableNode(actions) ||\n      hasRenderableNode(trailing) ? (\n        <div className={cn(theme.slots.tableHeadActions, classNames?.actions)}>\n          {hasRenderableNode(meta) ? (\n            <span className={cn(theme.slots.tableHeadMeta, classNames?.meta)}>\n              {meta}\n            </span>\n          ) : null}\n          {actions}\n          {trailing}\n        </div>\n      ) : null}\n    </div>\n  ) : (\n    children\n  );\n\n  const handleDragOver = (event: DragEvent<HTMLTableCellElement>) => {\n    onDragOver?.(event);\n    if (\n      !canDrag ||\n      !tableContext.draggingColumnId ||\n      tableContext.draggingColumnId === columnId\n    ) {\n      return;\n    }\n    event.preventDefault();\n    event.dataTransfer.dropEffect = \"move\";\n  };\n\n  const handleDrop = (event: DragEvent<HTMLTableCellElement>) => {\n    onDrop?.(event);\n    if (!canDrag || !columnId) return;\n    const sourceColumnId =\n      tableContext.draggingColumnId ||\n      event.dataTransfer.getData(DATA_TRANSFER_COLUMN_TYPE);\n    if (!sourceColumnId || sourceColumnId === columnId) return;\n\n    const nextOrder = getNextColumnOrder(\n      tableContext.columnOrder,\n      sourceColumnId,\n      columnId,\n    );\n    if (nextOrder) {\n      event.preventDefault();\n      tableContext.onColumnOrderChange?.(nextOrder, {\n        columnId: sourceColumnId,\n        targetColumnId: columnId,\n      });\n    }\n    tableContext.setDraggingColumnId(undefined);\n  };\n\n  const handleResizePointerDown = (event: ReactPointerEvent<HTMLElement>) => {\n    if (\n      !canResize ||\n      !columnId ||\n      !tableContext.onColumnSizeChange ||\n      (event.button !== 0 && event.pointerType !== \"touch\")\n    ) {\n      return;\n    }\n    event.preventDefault();\n    event.stopPropagation();\n    resizeCleanupRef.current();\n\n    const startX = event.clientX;\n    const currentWidth =\n      currentResizeWidth ?? headRef.current?.offsetWidth ?? minWidth ?? 48;\n    const previousWidth = clampWidth(currentWidth, minWidth, maxWidth);\n    const pointerId = event.pointerId;\n    const target = event.currentTarget;\n    const ownerDocument = target.ownerDocument;\n    const rtl = isRtl(target);\n\n    const handlePointerMove = (moveEvent: PointerEvent) => {\n      if (moveEvent.pointerId !== pointerId) return;\n      const nextWidth = clampWidth(\n        previousWidth +\n          (rtl ? startX - moveEvent.clientX : moveEvent.clientX - startX),\n        minWidth,\n        maxWidth,\n      );\n      tableContext.onColumnSizeChange?.(columnId, nextWidth, {\n        columnId,\n        previousWidth,\n        minWidth,\n        maxWidth,\n      });\n    };\n\n    const handleStop = (nextEvent: PointerEvent) => {\n      if (nextEvent.pointerId !== pointerId) return;\n      resizeCleanupRef.current();\n    };\n    const handleLostCapture = (nextEvent: PointerEvent) => {\n      if (nextEvent.pointerId !== pointerId) return;\n      resizeCleanupRef.current();\n    };\n\n    resizeCleanupRef.current = () => {\n      ownerDocument.removeEventListener(\"pointermove\", handlePointerMove);\n      ownerDocument.removeEventListener(\"pointerup\", handleStop);\n      ownerDocument.removeEventListener(\"pointercancel\", handleStop);\n      target.removeEventListener(\"lostpointercapture\", handleLostCapture);\n      if (target.hasPointerCapture?.(pointerId)) {\n        target.releasePointerCapture?.(pointerId);\n      }\n      resizeCleanupRef.current = () => {};\n    };\n    setPointerCaptureIfAvailable(target, pointerId);\n    ownerDocument.addEventListener(\"pointermove\", handlePointerMove);\n    ownerDocument.addEventListener(\"pointerup\", handleStop);\n    ownerDocument.addEventListener(\"pointercancel\", handleStop);\n    target.addEventListener(\"lostpointercapture\", handleLostCapture);\n  };\n\n  const currentResizeWidth =\n    typeof controlledWidth === \"number\"\n      ? clampWidth(controlledWidth, minWidth, maxWidth)\n      : measuredWidth;\n  const announcedResizeWidth =\n    currentResizeWidth ?? clampWidth(minWidth ?? 48, minWidth, maxWidth);\n\n  const handleResizeKeyDown = (\n    event: ReactKeyboardEvent<HTMLButtonElement>,\n  ) => {\n    if (!canResize || !columnId || !tableContext.onColumnSizeChange) return;\n    const rtl = isRtl(event.currentTarget);\n    const previousWidth =\n      currentResizeWidth ??\n      clampWidth(\n        headRef.current?.offsetWidth || minWidth || 48,\n        minWidth,\n        maxWidth,\n      );\n    let nextWidth: number | undefined;\n    if (event.key === \"ArrowLeft\") {\n      nextWidth =\n        previousWidth +\n        (rtl ? COLUMN_RESIZE_KEYBOARD_STEP : -COLUMN_RESIZE_KEYBOARD_STEP);\n    }\n    if (event.key === \"ArrowRight\") {\n      nextWidth =\n        previousWidth +\n        (rtl ? -COLUMN_RESIZE_KEYBOARD_STEP : COLUMN_RESIZE_KEYBOARD_STEP);\n    }\n    if (event.key === \"Home\" && minWidth !== undefined) nextWidth = minWidth;\n    if (event.key === \"End\" && maxWidth !== undefined) nextWidth = maxWidth;\n    if (nextWidth === undefined) return;\n    event.preventDefault();\n    event.stopPropagation();\n    tableContext.onColumnSizeChange(\n      columnId,\n      clampWidth(nextWidth, minWidth, maxWidth),\n      {\n        columnId,\n        previousWidth,\n        minWidth,\n        maxWidth,\n      },\n    );\n  };\n\n  useEffect(() => {\n    if (typeof controlledWidth === \"number\") {\n      setMeasuredWidth(undefined);\n      return;\n    }\n    const measured = headRef.current?.getBoundingClientRect().width;\n    if (measured && Number.isFinite(measured)) {\n      const nextWidth = clampWidth(measured, minWidth, maxWidth);\n      setMeasuredWidth((current) =>\n        current === nextWidth ? current : nextWidth,\n      );\n    }\n  }, [controlledWidth, minWidth, maxWidth, canResize]);\n\n  useEffect(() => {\n    if (!canResize) resizeCleanupRef.current();\n    return () => resizeCleanupRef.current();\n  }, [canResize, columnId, tableContext.onColumnSizeChange]);\n\n  return (\n    <th\n      {...headProps}\n      ref={setHeadRef}\n      data-slot=\"head\"\n      data-v2-header-drag-id={classicDataGrid && canDrag ? columnId : undefined}\n      scope={headProps.scope ?? \"col\"}\n      aria-sort={ariaSort}\n      className={cn(\n        theme.slots.tableHead,\n        isSplitScroll && theme.slots.tableSplitHead,\n        resolvedAlign === \"center\" && theme.slots.tableCellAlignCenter,\n        resolvedAlign === \"right\" && theme.slots.tableCellAlignRight,\n        classicDataGrid &&\n          \"!relative !h-9 !px-3 !align-middle !text-sm !font-medium !text-muted-foreground after:pointer-events-none after:absolute after:bottom-2 after:right-0 after:top-2 after:w-px after:bg-border/50 after:content-['']\",\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.tableHead,\n        ...(isSplitScroll ? theme.styles.tableSplitHead : undefined),\n        width: isSplitScroll ? undefined : toCssSize(controlledWidth),\n        minWidth: isSplitScroll ? undefined : toCssSize(minWidth),\n        maxWidth: isSplitScroll ? undefined : toCssSize(maxWidth),\n        ...(isSplitScroll\n          ? {\n              alignItems: getSplitHeadAlignItems(resolvedVerticalAlign),\n              justifyContent: getSplitHeadJustifyContent(resolvedAlign),\n              textAlign: resolvedAlign,\n            }\n          : verticalAlign\n            ? { verticalAlign }\n            : undefined),\n        ...style,\n      }}\n      onDragOver={handleDragOver}\n      onDrop={handleDrop}\n    >\n      {renderedContent}\n      {canResize && classicDataGrid ? (\n        <div\n          data-column-resize-handle=\"true\"\n          className=\"absolute right-0 top-0 z-20 h-full w-2 cursor-col-resize touch-none select-none hover:bg-muted\"\n          onPointerDown={handleResizePointerDown}\n        />\n      ) : canResize ? (\n        <button\n          type=\"button\"\n          role=\"separator\"\n          aria-orientation=\"vertical\"\n          aria-valuenow={announcedResizeWidth}\n          aria-valuemin={minWidth ?? 48}\n          aria-valuemax={maxWidth}\n          aria-valuetext={`${announcedResizeWidth}px`}\n          title={resizeLabel}\n          aria-label={\n            resizeLabel ??\n            messages.resizeColumn({ columnId: columnId as string })\n          }\n          className={cn(\n            theme.slots.tableHeadResizeHandle,\n            classNames?.resizeHandle,\n          )}\n          onClick={(event) => event.stopPropagation()}\n          onKeyDown={handleResizeKeyDown}\n          onPointerDown={handleResizePointerDown}\n        />\n      ) : null}\n    </th>\n  );\n});\n\nexport const BaseTableCell = forwardRef<\n  HTMLTableCellElement,\n  BaseTableCellProps\n>(function BaseTableCell(\n  { align = \"left\", appearance, className, classNames, style, ...cellProps },\n  ref,\n) {\n  assertEnum(\"cell align\", align, [\"left\", \"center\", \"right\"] as const);\n  const { layout, theme } = useBaseTableContext(appearance);\n  const isSplitScroll = layout === \"split-scroll\";\n\n  return (\n    <td\n      {...cellProps}\n      ref={ref}\n      data-slot=\"cell\"\n      className={cn(\n        theme.slots.tableCell,\n        isSplitScroll && theme.slots.tableSplitCell,\n        align === \"center\" && theme.slots.tableCellAlignCenter,\n        align === \"right\" && theme.slots.tableCellAlignRight,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.tableCell,\n        ...(isSplitScroll ? theme.styles.tableSplitCell : undefined),\n        ...style,\n      }}\n    />\n  );\n});\n\nexport const BaseTableCaption = forwardRef<\n  HTMLTableCaptionElement,\n  BaseTableCaptionProps\n>(function BaseTableCaption(\n  { appearance, className, classNames, style, ...captionProps },\n  ref,\n) {\n  const { theme } = useBaseTableContext(appearance);\n\n  return (\n    <caption\n      {...captionProps}\n      ref={ref}\n      data-slot=\"caption\"\n      className={cn(theme.slots.tableCaption, classNames?.root, className)}\n      style={{\n        ...theme.styles.tableCaption,\n        ...style,\n      }}\n    />\n  );\n});\n\nexport const BaseTableEmpty = forwardRef<\n  HTMLTableRowElement,\n  BaseTableEmptyProps\n>(function BaseTableEmpty(\n  {\n    colSpan,\n    icon,\n    title,\n    description,\n    actions,\n    children,\n    appearance,\n    className,\n    classNames,\n    style,\n    ...emptyProps\n  },\n  ref,\n) {\n  if (!Number.isSafeInteger(colSpan) || colSpan < 1) {\n    throw new Error(\"BaseTable empty colSpan must be a positive safe integer.\");\n  }\n  const { layout, theme } = useBaseTableContext(appearance);\n  const isSplitScroll = layout === \"split-scroll\";\n  const hasStructuredContent =\n    hasRenderableNode(icon) ||\n    hasRenderableNode(title) ||\n    hasRenderableNode(description) ||\n    hasRenderableNode(actions);\n\n  return (\n    <tr\n      {...emptyProps}\n      ref={ref}\n      data-slot=\"empty-row\"\n      className={cn(\n        theme.slots.tableEmptyRow,\n        isSplitScroll && theme.slots.tableSplitRow,\n        classNames?.row,\n        className,\n      )}\n      style={{\n        ...theme.styles.tableEmpty,\n        ...(isSplitScroll ? theme.styles.tableSplitRow : undefined),\n        ...style,\n      }}\n    >\n      <td\n        colSpan={colSpan}\n        data-slot=\"empty-cell\"\n        className={cn(\n          theme.slots.tableEmptyCell,\n          isSplitScroll && theme.slots.tableSplitCell,\n          classNames?.cell,\n        )}\n        style={isSplitScroll ? { gridColumn: \"1 / -1\" } : undefined}\n      >\n        {hasStructuredContent ? (\n          <div\n            className={cn(theme.slots.tableEmptyContent, classNames?.content)}\n          >\n            {hasRenderableNode(icon) ? (\n              <div className={cn(theme.slots.tableEmptyIcon, classNames?.icon)}>\n                {icon}\n              </div>\n            ) : null}\n            {hasRenderableNode(title) ? (\n              <div\n                className={cn(theme.slots.tableEmptyTitle, classNames?.title)}\n              >\n                {title}\n              </div>\n            ) : null}\n            {hasRenderableNode(description) ? (\n              <div\n                className={cn(\n                  theme.slots.tableEmptyDescription,\n                  classNames?.description,\n                )}\n              >\n                {description}\n              </div>\n            ) : null}\n            {hasRenderableNode(actions) ? (\n              <div\n                className={cn(\n                  theme.slots.tableEmptyActions,\n                  classNames?.actions,\n                )}\n              >\n                {actions}\n              </div>\n            ) : null}\n          </div>\n        ) : (\n          children\n        )}\n      </td>\n    </tr>\n  );\n});\n\nfunction BaseTableLoadingSkeleton({\n  baseClassName,\n  className,\n  style,\n}: {\n  baseClassName?: string;\n  className?: string;\n  style?: CSSProperties;\n}) {\n  const motion = useSkeletonMotion();\n  return (\n    <div\n      ref={motion.ref}\n      aria-hidden=\"true\"\n      data-slot=\"loading-skeleton\"\n      data-skeleton-animation={motion.mode}\n      className={cn(\n        baseClassName,\n        motion.mode === 'pulse' && 'animate-pulse motion-reduce:animate-none',\n        className,\n      )}\n      style={{ ...motion.style, ...style }}\n    />\n  );\n}\n\nexport function BaseTableLoading({\n  rows = 3,\n  columns,\n  columnWidths = [],\n  animated = true,\n  animation,\n  rowLabel,\n  appearance,\n  className,\n  classNames,\n  style,\n}: BaseTableLoadingProps) {\n  if (!Number.isSafeInteger(rows) || rows < 0) {\n    throw new Error('BaseTable loading rows must be a non-negative safe integer.');\n  }\n  if (!Number.isSafeInteger(columns) || columns < 1) {\n    throw new Error('BaseTable loading columns must be a positive safe integer.');\n  }\n  if (!Array.isArray(columnWidths)) {\n    throw new Error(\"BaseTable loading columnWidths must be an array.\");\n  }\n  columnWidths.forEach((value, index) =>\n    validateCssSizeValue(value, `loading columnWidths[${index}]`, {\n      stringAllowed: true,\n    }),\n  );\n  assertBoolean(\"loading animated\", animated);\n  assertOptionalLabel(\"loading rowLabel\", rowLabel);\n  const { layout, theme } = useBaseTableContext(appearance);\n  const messages = useMonkeysLocaleMessages().table;\n  const resolvedRowLabel = rowLabel ?? messages.loadingRow;\n  const isSplitScroll = layout === \"split-scroll\";\n\n  return (\n    <SkeletonScope animation={animation} animated={animated}>\n      {Array.from({ length: rows }).map((_, rowIndex) => (\n        <SkeletonItem key={rowIndex} index={rowIndex}>\n          <tr\n            data-slot=\"loading-row\"\n            aria-label={`${resolvedRowLabel} ${rowIndex + 1}`}\n            aria-busy=\"true\"\n            className={cn(\n              theme.slots.tableLoadingRow,\n              isSplitScroll && theme.slots.tableSplitRow,\n              classNames?.row,\n              className,\n            )}\n            style={{\n              ...theme.styles.tableLoading,\n              ...(isSplitScroll ? theme.styles.tableSplitRow : undefined),\n              ...style,\n            }}\n          >\n            {Array.from({ length: columns }).map((__, columnIndex) => (\n              <td\n                key={columnIndex}\n                data-slot=\"loading-cell\"\n                className={cn(\n                  theme.slots.tableLoadingCell,\n                  isSplitScroll && theme.slots.tableSplitCell,\n                  classNames?.cell,\n                )}\n              >\n                <BaseTableLoadingSkeleton\n                  baseClassName={theme.slots.tableLoadingSkeleton}\n                  className={classNames?.skeleton}\n                  style={{\n                    width: toCssSize(columnWidths[columnIndex]),\n                  }}\n                />\n              </td>\n            ))}\n          </tr>\n        </SkeletonItem>\n      ))}\n    </SkeletonScope>\n  );\n}\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseTableFooterBarProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nexport const BaseTableFooterBar = forwardRef<\n  HTMLDivElement,\n  BaseTableFooterBarProps\n>(function BaseTableFooterBar(\n  {\n    appearance,\n    leading,\n    actions,\n    attached = true,\n    children,\n    className,\n    classNames,\n    style,\n    ...footerBarProps\n  },\n  ref,\n) {\n  if (typeof attached !== 'boolean') {\n    throw new Error('BaseTableFooterBar attached must be a boolean.');\n  }\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n\n  return (\n    <div\n      {...componentAttributes}\n      {...footerBarProps}\n      ref={ref}\n      data-monkeys-component=\"table-footer-bar\"\n      data-slot=\"footer-bar\"\n      data-base-table-footer-bar=\"\"\n      data-attached={attached ? '' : undefined}\n      className={cn(\n        theme.slots.tableFooterBar,\n        attached && theme.slots.tableFooterBarAttached,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.tableFooterBar,\n        ...style,\n      }}\n    >\n      {hasRenderableNode(leading) ? (\n        <div className={cn(theme.slots.tableFooterBarLeading, classNames?.leading)}>\n          {leading}\n        </div>\n      ) : null}\n\n      {hasRenderableNode(children) ? (\n        <div className={cn(theme.slots.tableFooterBarContent, classNames?.content)}>\n          {children}\n        </div>\n      ) : null}\n\n      {hasRenderableNode(actions) ? (\n        <div className={cn(theme.slots.tableFooterBarActions, classNames?.actions)}>\n          {actions}\n        </div>\n      ) : null}\n    </div>\n  );\n});\n","import {\n  forwardRef,\n  useId,\n  useRef,\n  useState,\n  type KeyboardEvent,\n} from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseTabsItem, BaseTabsProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction validateTabsProps({\n  items,\n  value,\n  defaultValue,\n  orientation,\n  activationMode,\n}: Pick<\n  BaseTabsProps,\n  'activationMode' | 'defaultValue' | 'items' | 'orientation' | 'value'\n>) {\n  if (!Array.isArray(items)) {\n    throw new TypeError('BaseTabs items must be an array.');\n  }\n  if (value !== undefined && typeof value !== 'string') {\n    throw new TypeError('BaseTabs value must be a string.');\n  }\n  if (defaultValue !== undefined && typeof defaultValue !== 'string') {\n    throw new TypeError('BaseTabs defaultValue must be a string.');\n  }\n  if (orientation !== 'horizontal' && orientation !== 'vertical') {\n    throw new TypeError(\n      'BaseTabs orientation must be \"horizontal\" or \"vertical\".',\n    );\n  }\n  if (activationMode !== 'automatic' && activationMode !== 'manual') {\n    throw new TypeError(\n      'BaseTabs activationMode must be \"automatic\" or \"manual\".',\n    );\n  }\n\n  const values = new Set<string>();\n  items.forEach((item, index) => {\n    if (!item || typeof item !== 'object') {\n      throw new TypeError(`BaseTabs item at index ${index} must be an object.`);\n    }\n    if (typeof item.value !== 'string') {\n      throw new TypeError(\n        `BaseTabs item value at index ${index} must be a string.`,\n      );\n    }\n    if (values.has(item.value)) {\n      throw new TypeError(\n        'BaseTabs items must use unique values; ' +\n          `duplicate value ${JSON.stringify(item.value)} at index ${index}.`,\n      );\n    }\n    if (item.disabled !== undefined && typeof item.disabled !== 'boolean') {\n      throw new TypeError(\n        `BaseTabs item disabled at index ${index} must be a boolean.`,\n      );\n    }\n    values.add(item.value);\n  });\n}\n\nfunction getResolvedValue(items: BaseTabsItem[], candidate?: string) {\n  if (\n    candidate !== undefined &&\n    items.some((item) => item.value === candidate && !item.disabled)\n  ) {\n    return candidate;\n  }\n  return items.find((item) => !item.disabled)?.value;\n}\n\nfunction toDomId(value: string) {\n  return value.replace(/[^a-zA-Z0-9_-]/g, '-');\n}\n\nfunction getDomIdFragments(items: BaseTabsItem[]) {\n  const usedFragments = new Set<string>();\n\n  return items.map((item, index) => {\n    const baseFragment = toDomId(item.value);\n    let fragment = baseFragment;\n\n    if (usedFragments.has(fragment)) {\n      fragment = `${baseFragment}-${index}`;\n      while (usedFragments.has(fragment)) {\n        fragment = `${fragment}-${index}`;\n      }\n    }\n\n    usedFragments.add(fragment);\n    return fragment;\n  });\n}\n\nfunction getHorizontalStep(\n  event: KeyboardEvent<HTMLButtonElement>,\n  key: 'ArrowLeft' | 'ArrowRight',\n) {\n  const view = event.currentTarget.ownerDocument.defaultView;\n  const direction = view?.getComputedStyle(event.currentTarget).direction;\n  const rtl = direction === 'rtl';\n\n  if (key === 'ArrowRight') return rtl ? -1 : 1;\n  return rtl ? 1 : -1;\n}\n\nexport const BaseTabs = forwardRef<HTMLDivElement, BaseTabsProps>(\n  function BaseTabs(\n    {\n      items = [],\n      value,\n      defaultValue,\n      orientation = 'horizontal',\n      activationMode = 'automatic',\n      appearance,\n      className,\n      classNames,\n      style,\n      onValueChange,\n      id,\n      'aria-label': tablistAriaLabel,\n      'aria-labelledby': tablistAriaLabelledBy,\n      ...tabsProps\n    },\n    ref,\n  ) {\n    validateTabsProps({\n      items,\n      value,\n      defaultValue,\n      orientation,\n      activationMode,\n    });\n\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const generatedId = useId();\n    const rootId = id ?? generatedId;\n    const initialCandidate = value !== undefined ? value : defaultValue;\n    const [uncontrolledValue, setUncontrolledValue] = useState(() =>\n      getResolvedValue(items, defaultValue),\n    );\n    const [focusedValue, setFocusedValue] = useState(() =>\n      getResolvedValue(items, initialCandidate),\n    );\n    const triggerRefs = useRef<Array<HTMLButtonElement | null>>([]);\n    const isControlled = value !== undefined;\n    const selectedValue = getResolvedValue(\n      items,\n      isControlled ? value : uncontrolledValue,\n    );\n    const selectedIndex = items.findIndex(\n      (item) => item.value === selectedValue && !item.disabled,\n    );\n    const selectedItem = selectedIndex >= 0 ? items[selectedIndex] : undefined;\n    const enabledIndices = items.reduce<number[]>((indices, item, index) => {\n      if (!item.disabled) indices.push(index);\n      return indices;\n    }, []);\n    const storedFocusIndex = items.findIndex(\n      (item) => item.value === focusedValue && !item.disabled,\n    );\n    const rovingIndex =\n      storedFocusIndex >= 0 ? storedFocusIndex : selectedIndex;\n    const idFragments = getDomIdFragments(items);\n    const groupState = selectedItem ? 'active' : 'disabled';\n    const layerDirection =\n      typeof tabsProps.dir === 'string'\n        ? tabsProps.dir\n        : componentAttributes.dir;\n\n    const activateItem = (item: BaseTabsItem) => {\n      if (item.disabled) return;\n      if (!isControlled) {\n        setUncontrolledValue(item.value);\n      }\n      onValueChange?.(item.value);\n    };\n\n    const moveFocus = (\n      event: KeyboardEvent<HTMLButtonElement>,\n      targetIndex: number,\n    ) => {\n      const targetItem = items[targetIndex];\n      if (!targetItem || targetItem.disabled) return;\n\n      event.preventDefault();\n      setFocusedValue(targetItem.value);\n      triggerRefs.current[targetIndex]?.focus();\n      if (activationMode === 'automatic') {\n        activateItem(targetItem);\n      }\n    };\n\n    const handleKeyDown = (\n      event: KeyboardEvent<HTMLButtonElement>,\n      item: BaseTabsItem,\n      index: number,\n    ) => {\n      if (item.disabled) return;\n\n      if (\n        activationMode === 'manual' &&\n        (event.key === 'Enter' || event.key === ' ')\n      ) {\n        event.preventDefault();\n        activateItem(item);\n        return;\n      }\n\n      if (enabledIndices.length === 0) return;\n      if (event.key === 'Home') {\n        moveFocus(event, enabledIndices[0]);\n        return;\n      }\n      if (event.key === 'End') {\n        moveFocus(event, enabledIndices[enabledIndices.length - 1]);\n        return;\n      }\n\n      let step: number | undefined;\n      if (\n        orientation === 'horizontal' &&\n        (event.key === 'ArrowLeft' || event.key === 'ArrowRight')\n      ) {\n        step = getHorizontalStep(event, event.key);\n      } else if (orientation === 'vertical' && event.key === 'ArrowUp') {\n        step = -1;\n      } else if (orientation === 'vertical' && event.key === 'ArrowDown') {\n        step = 1;\n      }\n      if (step === undefined) return;\n\n      const enabledPosition = enabledIndices.indexOf(index);\n      const nextPosition =\n        (enabledPosition + step + enabledIndices.length) %\n        enabledIndices.length;\n      moveFocus(event, enabledIndices[nextPosition]);\n    };\n\n    return (\n      <div\n        {...componentAttributes}\n        {...tabsProps}\n        ref={ref}\n        id={id}\n        data-monkeys-component=\"tabs\"\n        data-slot=\"root\"\n        data-state={groupState}\n        data-orientation={orientation}\n        data-activation-mode={activationMode}\n        className={cn(theme.slots.tabsRoot, classNames?.root, className)}\n        style={style}\n      >\n        <div\n          {...componentAttributes}\n          dir={layerDirection}\n          role=\"tablist\"\n          aria-label={tablistAriaLabel}\n          aria-labelledby={tablistAriaLabelledBy}\n          aria-orientation={orientation}\n          data-monkeys-component=\"tabs\"\n          data-slot=\"list\"\n          data-state={groupState}\n          data-orientation={orientation}\n          data-activation-mode={activationMode}\n          className={cn(\n            theme.slots.tabsList,\n            orientation === 'vertical' && 'flex-col items-stretch',\n            classNames?.list,\n          )}\n          style={theme.styles.tabsList}\n        >\n          {items.map((item, index) => {\n            const itemId = idFragments[index];\n            const selected = index === selectedIndex;\n            const state = item.disabled\n              ? 'disabled'\n              : selected\n                ? 'active'\n                : 'inactive';\n\n            return (\n              <button\n                {...componentAttributes}\n                ref={(node) => {\n                  triggerRefs.current[index] = node;\n                }}\n                key={item.value}\n                id={`${rootId}-${itemId}-tab`}\n                type=\"button\"\n                role=\"tab\"\n                tabIndex={!item.disabled && index === rovingIndex ? 0 : -1}\n                aria-selected={selected}\n                aria-controls={`${rootId}-${itemId}-panel`}\n                disabled={item.disabled}\n                dir={layerDirection}\n                data-monkeys-component=\"tabs\"\n                data-slot=\"trigger\"\n                data-state={state}\n                data-orientation={orientation}\n                data-activation-mode={activationMode}\n                data-disabled={item.disabled || undefined}\n                className={cn(\n                  theme.slots.tabsTrigger,\n                  selected && theme.slots.tabsTriggerActive,\n                  item.disabled && theme.slots.tabsTriggerDisabled,\n                  classNames?.trigger,\n                )}\n                style={theme.styles.tabsTrigger}\n                onFocus={() => setFocusedValue(item.value)}\n                onKeyDown={(event) => handleKeyDown(event, item, index)}\n                onClick={() => {\n                  setFocusedValue(item.value);\n                  activateItem(item);\n                }}\n              >\n                <span className=\"min-w-0 truncate\">{item.label}</span>\n              </button>\n            );\n          })}\n        </div>\n\n        {selectedItem ? (\n          <div\n            {...componentAttributes}\n            id={`${rootId}-${idFragments[selectedIndex]}-panel`}\n            role=\"tabpanel\"\n            tabIndex={0}\n            aria-labelledby={`${rootId}-${idFragments[selectedIndex]}-tab`}\n            dir={layerDirection}\n            data-monkeys-component=\"tabs\"\n            data-slot=\"panel\"\n            data-state=\"active\"\n            data-orientation={orientation}\n            data-activation-mode={activationMode}\n            className={cn(theme.slots.tabsPanel, classNames?.panel)}\n            style={theme.styles.tabsPanel}\n          >\n            {hasRenderableNode(selectedItem.content) ? (\n              selectedItem.content\n            ) : hasRenderableNode(selectedItem.description) ? (\n              <p className=\"m-0 text-muted-foreground\">\n                {selectedItem.description}\n              </p>\n            ) : null}\n          </div>\n        ) : null}\n      </div>\n    );\n  },\n);\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseTextareaProps } from './types';\nimport { useBaseFieldControl } from './internal/baseFieldContext';\nimport { resolveBaseAppearance } from './theme';\nimport { cn } from './utils';\n\nconst controlSizeClassNames = {\n  sm: 'min-h-20 px-2.5 py-1.5 text-xs leading-5',\n  md: 'min-h-24 px-3 py-2 text-sm leading-6',\n  lg: 'min-h-28 px-3.5 py-2.5 text-base leading-7',\n} as const;\n\nexport const BaseTextarea = forwardRef<HTMLTextAreaElement, BaseTextareaProps>(\n  function BaseTextarea(\n    {\n      invalid = false,\n      disabled = false,\n      readOnly = false,\n      controlSize,\n      appearance,\n      className,\n      classNames,\n      style,\n      'aria-invalid': nativeAriaInvalid,\n      onBlur,\n      onChange,\n      ...textareaProps\n    },\n    ref,\n  ) {\n    for (const [name, value] of [\n      ['invalid', invalid],\n      ['disabled', disabled],\n      ['readOnly', readOnly],\n    ] as const) {\n      if (typeof value !== 'boolean') {\n        throw new TypeError(`BaseTextarea ${name} must be a boolean.`);\n      }\n    }\n    if (\n      controlSize !== undefined &&\n      controlSize !== 'sm' &&\n      controlSize !== 'md' &&\n      controlSize !== 'lg'\n    ) {\n      throw new TypeError(\n        'BaseTextarea controlSize must be \"sm\", \"md\", or \"lg\".',\n      );\n    }\n\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const fieldControl = useBaseFieldControl();\n    const resolvedInvalid = invalid || fieldControl.invalid;\n\n    return (\n      <textarea\n        {...componentAttributes}\n        {...textareaProps}\n        ref={ref}\n        disabled={disabled}\n        readOnly={readOnly}\n        aria-invalid={nativeAriaInvalid ?? (resolvedInvalid || undefined)}\n        data-monkeys-component=\"textarea\"\n        data-slot=\"control\"\n        data-size={controlSize}\n        data-invalid={resolvedInvalid || undefined}\n        data-disabled={disabled || undefined}\n        data-readonly={readOnly || undefined}\n        className={cn(\n          theme.slots.controlWrapper,\n          theme.slots.controlBase,\n          theme.slots.controlTextarea,\n          resolvedInvalid && theme.slots.controlInvalid,\n          disabled && theme.slots.controlDisabled,\n          readOnly && theme.slots.controlReadOnly,\n          controlSize && controlSizeClassNames[controlSize],\n          classNames?.control,\n          className,\n        )}\n        style={{\n          ...theme.styles.control,\n          ...(resolvedInvalid ? theme.styles.controlInvalid : undefined),\n          ...(disabled ? theme.styles.controlDisabled : undefined),\n          ...style,\n        }}\n        onBlur={(event) => {\n          onBlur?.(event);\n          fieldControl.notifyBlur(event.currentTarget.value);\n        }}\n        onChange={(event) => {\n          onChange?.(event);\n          fieldControl.notifyChange(event.currentTarget.value);\n        }}\n      />\n    );\n  },\n);\n","import { createElement, forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport {\n  getBaseTextSizeClassName,\n  getBaseTypographyToneClassName,\n  resolveBaseAppearance,\n} from './theme';\nimport type { BaseTextProps } from './types';\nimport { cn } from './utils';\n\nexport const BaseText = forwardRef<HTMLElement, BaseTextProps>(function BaseText(\n  {\n    as = 'p',\n    children,\n    size = 'md',\n    tone = 'default',\n    appearance,\n    className,\n    classNames,\n    style,\n    ...textProps\n  },\n  ref,\n) {\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n\n  return createElement(\n    as,\n    {\n      ...componentAttributes,\n      ...textProps,\n      ref,\n      'data-monkeys-component': 'text',\n      'data-slot': 'root',\n      'data-size': size,\n      'data-tone': tone,\n      className: cn(\n        theme.slots.textRoot,\n        getBaseTextSizeClassName(theme, size),\n        getBaseTypographyToneClassName(theme, tone),\n        classNames?.root,\n        className,\n      ),\n      style: {\n        ...theme.styles.text,\n        ...style,\n      },\n    },\n    children,\n  );\n});\n","import * as Tooltip from '@radix-ui/react-tooltip';\nimport {\n  Fragment,\n  forwardRef,\n  isValidElement,\n  useState,\n  type ReactNode,\n} from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport { useBaseOverlayPortal } from './internal/overlayPortal';\nimport type { BaseTooltipPlacement, BaseTooltipProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction validateBoolean(value: unknown, name: string) {\n  if (typeof value !== 'boolean') {\n    throw new TypeError(`BaseTooltip ${name} must be a boolean.`);\n  }\n}\n\nfunction validatePlacement(value: unknown) {\n  if (\n    value !== 'top' &&\n    value !== 'bottom' &&\n    value !== 'left' &&\n    value !== 'right'\n  ) {\n    throw new TypeError(\n      'BaseTooltip placement must be \"top\", \"bottom\", \"left\", or \"right\".',\n    );\n  }\n}\n\nfunction normalizeTrigger(children: ReactNode, disabled: boolean) {\n  if (isValidElement(children) && children.type !== Fragment) {\n    return children;\n  }\n\n  return (\n    <span tabIndex={!disabled && hasRenderableNode(children) ? 0 : undefined}>\n      {children}\n    </span>\n  );\n}\n\nexport const BaseTooltip = forwardRef<HTMLSpanElement, BaseTooltipProps>(\n  function BaseTooltip(\n    {\n      content,\n      children,\n      open,\n      defaultOpen = false,\n      placement = 'top',\n      disabled = false,\n      portal = false,\n      appearance,\n      className,\n      classNames,\n      style,\n      onOpenChange,\n      ...tooltipProps\n    },\n    ref,\n  ) {\n    if (open !== undefined) validateBoolean(open, 'open');\n    validateBoolean(defaultOpen, 'defaultOpen');\n    validateBoolean(disabled, 'disabled');\n    validateBoolean(portal, 'portal');\n    validatePlacement(placement);\n\n    const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n    const componentAttributes = useMonkeysComponentAttributes();\n    const theme = resolveBaseAppearance(resolvedAppearance);\n    const overlayPortal = useBaseOverlayPortal({ disabled: !portal });\n    const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n    const isControlled = open !== undefined;\n    const canShow = !disabled && hasRenderableNode(content);\n    const requestedOpen = isControlled ? open : uncontrolledOpen;\n    const isOpen = canShow && requestedOpen;\n    const portalState =\n      portal && overlayPortal.shouldPortal ? 'portaled' : 'inline';\n\n    const handleOpenChange = (nextOpen: boolean) => {\n      if (nextOpen && !canShow) return;\n      if (!isControlled) {\n        setUncontrolledOpen(nextOpen);\n      }\n      onOpenChange?.(nextOpen);\n    };\n\n    const trigger = normalizeTrigger(children, disabled);\n    const tooltipContent = canShow ? (\n      <Tooltip.Content\n        {...componentAttributes}\n        side={placement}\n        sideOffset={8}\n        collisionPadding={8}\n        data-monkeys-component=\"tooltip\"\n        data-slot=\"content\"\n        data-placement={placement}\n        data-portal={portalState}\n        data-disabled={disabled || undefined}\n        className={cn(theme.slots.tooltipContent, classNames?.content)}\n        style={theme.styles.tooltip}\n      >\n        {content}\n      </Tooltip.Content>\n    ) : null;\n\n    return (\n      <span\n        {...componentAttributes}\n        {...tooltipProps}\n        ref={ref}\n        data-monkeys-component=\"tooltip\"\n        data-slot=\"root\"\n        data-state={isOpen ? 'open' : 'closed'}\n        data-placement={placement}\n        data-portal={portalState}\n        data-disabled={disabled || undefined}\n        className={cn(theme.slots.tooltipRoot, classNames?.root, className)}\n        style={style}\n      >\n        <Tooltip.Provider\n          delayDuration={0}\n          skipDelayDuration={0}\n          disableHoverableContent\n        >\n          <Tooltip.Root\n            open={isOpen}\n            onOpenChange={handleOpenChange}\n            delayDuration={0}\n            disableHoverableContent\n          >\n            <span\n              {...componentAttributes}\n              data-monkeys-component=\"tooltip\"\n              data-slot=\"trigger-wrapper\"\n              data-state={isOpen ? 'open' : 'closed'}\n              data-placement={placement}\n              data-portal={portalState}\n              data-disabled={disabled || undefined}\n              className={cn(theme.slots.tooltipTrigger, classNames?.trigger)}\n            >\n              <Tooltip.Trigger\n                asChild\n                {...componentAttributes}\n                data-monkeys-component=\"tooltip\"\n                data-slot=\"trigger\"\n                data-placement={placement}\n                data-portal={portalState}\n                data-disabled={disabled || undefined}\n              >\n                {trigger}\n              </Tooltip.Trigger>\n            </span>\n            {portal && overlayPortal.shouldPortal ? (\n              <Tooltip.Portal {...overlayPortal.radixPortalProps}>\n                {tooltipContent}\n              </Tooltip.Portal>\n            ) : (\n              tooltipContent\n            )}\n          </Tooltip.Root>\n        </Tooltip.Provider>\n      </span>\n    );\n  },\n);\n","import type { BaseToolbarProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nexport function BaseToolbar({\n  leading,\n  title,\n  description,\n  actions,\n  children,\n  appearance,\n  className,\n  classNames,\n  style,\n  ...toolbarProps\n}: BaseToolbarProps) {\n  const theme = resolveBaseAppearance(appearance);\n  const hasTitleBlock = hasRenderableNode(title) || hasRenderableNode(description);\n\n  return (\n    <div\n      {...toolbarProps}\n      className={cn(theme.slots.toolbarRoot, classNames?.root, className)}\n      style={{\n        ...theme.styles.toolbar,\n        ...style,\n      }}\n    >\n      <div className={cn(theme.slots.toolbarLeading, classNames?.leading)}>\n        {hasRenderableNode(leading) ? leading : null}\n        {hasTitleBlock ? (\n          <div className={cn(theme.slots.toolbarContent, classNames?.content)}>\n            {hasRenderableNode(title) ? (\n              <div className={cn(theme.slots.toolbarTitle, classNames?.title)}>\n                {title}\n              </div>\n            ) : null}\n            {hasRenderableNode(description) ? (\n              <div\n                className={cn(\n                  theme.slots.toolbarDescription,\n                  classNames?.description,\n                )}\n              >\n                {description}\n              </div>\n            ) : null}\n          </div>\n        ) : null}\n      </div>\n\n      {hasRenderableNode(children) ? (\n        <div className={cn(theme.slots.toolbarContent, classNames?.content)}>\n          {children}\n        </div>\n      ) : null}\n\n      {hasRenderableNode(actions) ? (\n        <div className={cn(theme.slots.toolbarActions, classNames?.actions)}>\n          {actions}\n        </div>\n      ) : null}\n    </div>\n  );\n}\n","import { forwardRef } from 'react';\n\nimport {\n  useMonkeysBaseAppearance,\n  useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport { resolveBaseAppearance } from './theme';\nimport type { BaseVisuallyHiddenProps } from './types';\nimport { cn } from './utils';\n\nexport const BaseVisuallyHidden = forwardRef<\n  HTMLSpanElement,\n  BaseVisuallyHiddenProps\n>(function BaseVisuallyHidden(\n  {\n    children,\n    focusable = false,\n    appearance,\n    className,\n    classNames,\n    style,\n    ...hiddenProps\n  },\n  ref,\n) {\n  const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const theme = resolveBaseAppearance(resolvedAppearance);\n\n  if (typeof focusable !== 'boolean') {\n    throw new TypeError('BaseVisuallyHidden focusable must be a boolean.');\n  }\n\n  return (\n    <span\n      {...componentAttributes}\n      {...hiddenProps}\n      ref={ref}\n      data-monkeys-component=\"visually-hidden\"\n      data-slot=\"root\"\n      data-focusable={focusable || undefined}\n      className={cn(\n        theme.slots.visuallyHiddenRoot,\n        focusable && theme.slots.visuallyHiddenFocusable,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.visuallyHidden,\n        ...style,\n      }}\n    >\n      {children}\n    </span>\n  );\n});\n","import { createElement, forwardRef, useEffect, useState, type HTMLAttributes } from 'react';\nimport { Wrench } from 'lucide-react';\nimport type { JsonObject } from '@inf-monkeys-tech/monkeys';\nimport { useMonkeysAssetIconResolver, useMonkeysAssetImageResolver, useMonkeysComponentAttributes } from '../../provider/context';\nimport { safeDisplayUrl } from '../safeDisplayUrl';\nimport { cn } from './utils';\n\nexport type BaseAssetIconDescriptor =\n  | { kind: 'image'; src: string }\n  | { kind: 'emoji'; value: string; backgroundColor?: string }\n  | { kind: 'lucide'; name: string };\nexport interface BaseAssetIconProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n  icon: BaseAssetIconDescriptor;\n  alt: string;\n  normalizeImageIcon?: boolean;\n}\nexport const BASE_ASSET_ICON_DESCRIPTOR_SCHEMA: JsonObject = {\n  oneOf: [\n    { type: 'object', additionalProperties: false, required: ['kind', 'src'], properties: { kind: { const: 'image' }, src: { type: 'string', minLength: 1, maxLength: 4096 } } },\n    { type: 'object', additionalProperties: false, required: ['kind', 'value'], properties: { kind: { const: 'emoji' }, value: { type: 'string', minLength: 1, maxLength: 64 }, backgroundColor: { type: 'string', maxLength: 128 } } },\n    { type: 'object', additionalProperties: false, required: ['kind', 'name'], properties: { kind: { const: 'lucide' }, name: { type: 'string', minLength: 1, maxLength: 128 } } },\n  ],\n};\n\nexport type AssetIconTag = 'path' | 'circle' | 'rect' | 'polyline' | 'line' | 'ellipse' | 'polygon';\nexport type AssetIconNode = readonly [tag: AssetIconTag, attributes: Readonly<Record<string, string>>];\n/** Host data remains untrusted until the component validates every node. */\nexport type AssetIconResolver = (name: string) => Promise<unknown>;\nexport type AssetImageResolver = (reference: string, signal: AbortSignal) => Promise<string | undefined>;\nconst attributesByTag: Record<AssetIconTag, readonly string[]> = {\n  path: ['d'], circle: ['cx', 'cy', 'r'], rect: ['x', 'y', 'width', 'height', 'rx', 'ry'],\n  polyline: ['points'], line: ['x1', 'x2', 'y1', 'y2'], ellipse: ['cx', 'cy', 'rx', 'ry'], polygon: ['points'],\n};\nexport function parseAssetIconNodes(value: unknown): readonly AssetIconNode[] | undefined {\n  if (!Array.isArray(value) || !value.length || value.length > 256) return undefined;\n  const result: AssetIconNode[] = [];\n  for (const node of value) {\n    if (!Array.isArray(node) || node.length !== 2 || typeof node[0] !== 'string' || !Object.prototype.hasOwnProperty.call(attributesByTag, node[0])) return undefined;\n    const tag = node[0] as AssetIconTag;\n    const raw = node[1];\n    if (!raw || typeof raw !== 'object' || Array.isArray(raw) || Object.getPrototypeOf(raw) !== Object.prototype) return undefined;\n    const attributes: Record<string, string> = {};\n    for (const [key, descriptor] of Object.entries(Object.getOwnPropertyDescriptors(raw))) {\n      if (!('value' in descriptor) || typeof descriptor.value !== 'string') return undefined;\n      const text = descriptor.value;\n      if (key === 'key') { if (text.length > 256) return undefined; }\n      else if (key === 'fill') { if (text !== 'currentColor' && text !== 'none') return undefined; }\n      else if (!attributesByTag[tag].includes(key)) return undefined;\n      else if (key === 'd') { if (!text.length || text.length > 8192 || !/^[MmZzLlHhVvCcSsQqTtAa0-9eE+.,\\s-]+$/.test(text)) return undefined; }\n      else if (key === 'points') { if (!text.length || text.length > 8192 || !/^[0-9eE+.,\\s-]+$/.test(text)) return undefined; }\n      else if (!text.trim() || text.length > 128 || !Number.isFinite(Number(text))) return undefined;\n      attributes[key] = text;\n    }\n    result.push([tag, attributes]);\n  }\n  return result;\n}\nexport const BaseAssetIcon = forwardRef<HTMLDivElement, BaseAssetIconProps>(function BaseAssetIcon(\n  { icon, alt, normalizeImageIcon = false, className, style, ...props }, ref,\n) {\n  const attributes = useMonkeysComponentAttributes();\n  const resolver = useMonkeysAssetIconResolver();\n  const imageResolver = useMonkeysAssetImageResolver();\n  const imageReference = icon.kind === 'image' ? icon.src : undefined;\n  const [image, setImage] = useState<{ reference: string; resolver: AssetImageResolver; src?: string }>();\n  useEffect(() => {\n    if (!imageReference || !imageResolver) return;\n    const controller = new AbortController();\n    void Promise.resolve().then(() => imageResolver(imageReference, controller.signal)).then(src => {\n      if (!controller.signal.aborted) setImage({ reference: imageReference, resolver: imageResolver, src: safeDisplayUrl(src, 'media') });\n    }).catch(() => { if (!controller.signal.aborted) setImage({ reference: imageReference, resolver: imageResolver }); });\n    return () => controller.abort();\n  }, [imageReference, imageResolver]);\n  const imageSource = imageResolver\n    ? image && image.reference === imageReference && image.resolver === imageResolver ? image.src : undefined\n    : safeDisplayUrl(imageReference, 'media');\n  const name = icon.kind === 'lucide' ? icon.name : undefined;\n  const [loaded, setLoaded] = useState<{ name: string; resolver: AssetIconResolver; nodes: readonly AssetIconNode[] | undefined }>();\n  useEffect(() => {\n    let active = true;\n    if (name && resolver) void Promise.resolve().then(() => resolver(name)).then(value => { if (active) setLoaded({ name, resolver, nodes: parseAssetIconNodes(value) }); }).catch(() => { if (active) setLoaded({ name, resolver, nodes: undefined }); });\n    return () => { active = false; };\n  }, [name, resolver]);\n  const nodes = loaded?.name === name && loaded?.resolver === resolver ? loaded?.nodes : undefined;\n  return <div {...attributes} {...props} ref={ref} role=\"img\" aria-label={alt}\n    className={cn('flex h-11 w-11 shrink-0 items-center justify-center rounded-xl', icon.kind === 'emoji' ? 'text-2xl' : icon.kind === 'image' && !normalizeImageIcon ? 'overflow-hidden border' : 'bg-muted', className)}\n    style={{ ...(icon.kind === 'emoji' && icon.backgroundColor ? { backgroundColor: icon.backgroundColor } : {}), ...style }}>\n    {icon.kind === 'image' ? imageSource ? <img src={imageSource} alt=\"\" aria-hidden=\"true\" loading=\"lazy\" className={normalizeImageIcon ? 'h-5 w-5 object-contain' : 'h-full w-full object-cover'} /> : <Wrench aria-hidden=\"true\" className=\"h-5 w-5 text-muted-foreground\" />\n      : icon.kind === 'emoji' ? <span aria-hidden=\"true\">{icon.value}</span>\n        : nodes ? <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"h-5 w-5 text-muted-foreground\">{nodes.map(([tag, attributes], index) => { const { key, ...props } = attributes; return createElement(tag, { ...props, key: key ?? index }); })}</svg>\n          : <Wrench aria-hidden=\"true\" className=\"h-5 w-5 text-muted-foreground\" />}\n  </div>;\n});\n","export type OverlaySurfaceRole = 'menu' | 'dialog';\n\nconst overlaySurfaceRoleClassNames: Record<OverlaySurfaceRole, string> = {\n  // Keep the public utilities in the built stylesheet and tailwind-merge graph.\n  menu: 'monkeys-overlay-surface--menu bg-menu-surface text-popover-foreground',\n  dialog: 'monkeys-overlay-surface--dialog bg-dialog-surface text-foreground',\n};\n\nexport function getOverlaySurfaceClassName(\n  role: OverlaySurfaceRole,\n  options: { rounded?: boolean } = {},\n) {\n  return [\n    'monkeys-overlay-surface',\n    overlaySurfaceRoleClassNames[role],\n    options.rounded === false ? undefined : 'monkeys-overlay-surface--rounded',\n  ]\n    .filter(Boolean)\n    .join(' ');\n}\n","import {\n  forwardRef,\n  type ComponentPropsWithoutRef,\n  type CSSProperties,\n  type ReactNode,\n} from \"react\";\n\nimport { cn } from \"../base/utils\";\n\nexport interface AppShellSidebarClassNames {\n  root?: string;\n  header?: string;\n  navigation?: string;\n  footer?: string;\n}\n\nexport interface AppShellSidebarProps extends Omit<\n  ComponentPropsWithoutRef<\"aside\">,\n  \"children\"\n> {\n  /**\n   * Primary navigation content. Routing, permissions and navigation state stay\n   * with the consuming application.\n   */\n  navigation: ReactNode;\n  /** Optional content placed above the primary navigation. */\n  header?: ReactNode;\n  /** Optional utility area kept separate from the primary navigation. */\n  footer?: ReactNode;\n  /** Width override. Defaults to the component token, then 16rem. */\n  width?: CSSProperties[\"width\"];\n  classNames?: AppShellSidebarClassNames;\n}\n\nconst rootTokenStyles: CSSProperties = {\n  width: \"var(--monkeys-component-app-shell-sidebar-width, 16rem)\",\n  borderRadius:\n    \"var(--monkeys-component-app-shell-sidebar-radius, var(--radius, 0.75rem))\",\n  background:\n    \"var(--monkeys-component-app-shell-sidebar-background, hsl(var(--card)))\",\n  color:\n    \"var(--monkeys-component-app-shell-sidebar-foreground, hsl(var(--card-foreground)))\",\n  borderColor:\n    \"var(--monkeys-component-app-shell-sidebar-border-color, hsl(var(--border)))\",\n  boxShadow: \"var(--monkeys-component-app-shell-sidebar-shadow, none)\",\n};\n\nconst headerTokenStyles: CSSProperties = {\n  padding:\n    \"var(--monkeys-component-app-shell-sidebar-header-padding, var(--global-spacing, 0.75rem))\",\n  borderColor:\n    \"var(--monkeys-component-app-shell-sidebar-header-border-color, hsl(var(--border)))\",\n};\n\nconst navigationTokenStyles: CSSProperties & {\n  \"--monkeys-component-accordion-item-border-color\": string;\n} = {\n  padding:\n    \"var(--monkeys-component-app-shell-sidebar-navigation-padding, var(--global-spacing, 0.75rem))\",\n  \"--monkeys-component-accordion-item-border-color\": \"transparent\",\n};\n\nconst footerTokenStyles: CSSProperties = {\n  padding:\n    \"var(--monkeys-component-app-shell-sidebar-footer-padding, var(--global-spacing, 0.75rem))\",\n  background:\n    \"var(--monkeys-component-app-shell-sidebar-footer-background, hsl(var(--muted) / 0.22))\",\n  borderColor:\n    \"var(--monkeys-component-app-shell-sidebar-footer-border-color, hsl(var(--border)))\",\n};\n\n/**\n * Persistent, outermost application navigation surface.\n *\n * This is intentionally a single shell component rather than a composition of\n * generic sidebar primitives. It owns the surface hierarchy while applications\n * retain routing and navigation behavior inside the semantic slots.\n */\nexport const AppShellSidebar = forwardRef<HTMLElement, AppShellSidebarProps>(\n  function AppShellSidebar(\n    {\n      navigation,\n      header,\n      footer,\n      width,\n      className,\n      classNames,\n      style,\n      \"aria-label\": ariaLabel = \"Application navigation\",\n      ...props\n    },\n    ref,\n  ) {\n    return (\n      <aside\n        ref={ref}\n        aria-label={ariaLabel}\n        data-app-shell-sidebar=\"\"\n        className={cn(\n          \"relative isolate flex h-full min-h-0 shrink-0 flex-col overflow-hidden border\",\n          classNames?.root,\n          className,\n        )}\n        style={{\n          ...rootTokenStyles,\n          ...(width === undefined ? null : { width }),\n          ...style,\n        }}\n        {...props}\n      >\n        {header ? (\n          <div\n            data-slot=\"header\"\n            className={cn(\"shrink-0 border-b\", classNames?.header)}\n            style={headerTokenStyles}\n          >\n            {header}\n          </div>\n        ) : null}\n\n        <div\n          data-slot=\"navigation\"\n          className={cn(\n            \"relative min-h-0 flex-1 overflow-hidden\",\n            classNames?.navigation,\n          )}\n          style={navigationTokenStyles}\n        >\n          {navigation}\n        </div>\n\n        {footer ? (\n          <div\n            data-slot=\"footer\"\n            className={cn(\"shrink-0 border-t\", classNames?.footer)}\n            style={footerTokenStyles}\n          >\n            {footer}\n          </div>\n        ) : null}\n      </aside>\n    );\n  },\n);\n\nAppShellSidebar.displayName = \"AppShellSidebar\";\n","import type { ReactNode } from 'react';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\n\nimport {\n  BaseAvatar,\n  BaseButton,\n  cn,\n  type BaseAppearance,\n} from '../base';\n\nexport type UserAccountMenuRadius =\n  | 'default'\n  | 'none'\n  | 'sm'\n  | 'md'\n  | 'lg'\n  | 'xl'\n  | 'full';\n\nexport type UserAccountMenuSide = 'top' | 'right' | 'bottom' | 'left';\nexport type UserAccountMenuTriggerVariant = 'avatar' | 'profile';\n\nexport interface UserAccountMenuUser {\n  avatarAlt?: string;\n  avatarUrl?: string;\n  initials?: string;\n  name?: string;\n  secondaryText?: ReactNode;\n}\n\nexport interface UserAccountMenuSelectorOption {\n  disabled?: boolean;\n  icon?: ReactNode;\n  label: ReactNode;\n  value: string;\n}\n\nexport interface UserAccountMenuSelectorConfig {\n  contentWidthClassName?: string;\n  disabled?: boolean;\n  id?: string;\n  icon?: ReactNode;\n  label: ReactNode;\n  onChange?: (value: string) => void;\n  options: UserAccountMenuSelectorOption[];\n  value: string;\n  visible?: boolean;\n}\n\nexport interface UserAccountMenuItem {\n  disabled?: boolean;\n  icon?: ReactNode;\n  id: string;\n  label: ReactNode;\n  onSelect?: () => void;\n  separatorBefore?: boolean;\n  shortcut?: ReactNode;\n  tone?: 'default' | 'danger';\n  visible?: boolean;\n}\n\nexport interface UserAccountMenuClassNames {\n  avatar?: string;\n  content?: string;\n  dangerItem?: string;\n  item?: string;\n  itemIcon?: string;\n  label?: string;\n  root?: string;\n  secondaryText?: string;\n  separator?: string;\n  subContent?: string;\n  subTrigger?: string;\n  trigger?: string;\n  userName?: string;\n}\n\nexport interface UserAccountMenuProps {\n  align?: 'start' | 'center' | 'end';\n  appearance?: BaseAppearance;\n  ariaLabel?: string;\n  className?: string;\n  classNames?: UserAccountMenuClassNames;\n  contentWidthClassName?: string;\n  fallbackName?: string;\n  items?: UserAccountMenuItem[];\n  menuRadius?: UserAccountMenuRadius;\n  selectors?: UserAccountMenuSelectorConfig[];\n  side?: UserAccountMenuSide;\n  sideOffset?: number;\n  triggerEndIcon?: ReactNode;\n  triggerTitle?: string;\n  triggerVariant?: UserAccountMenuTriggerVariant;\n  user: UserAccountMenuUser;\n}\n\nconst defaultAppearance: BaseAppearance = {\n  preset: 'soft',\n  density: 'compact',\n  radius: 'lg',\n  border: 'subtle',\n  background: 'soft',\n};\n\nconst radiusClassNames: Record<UserAccountMenuRadius, string> = {\n  default: 'rounded-md',\n  none: 'rounded-none',\n  sm: 'rounded-sm',\n  md: 'rounded-md',\n  lg: 'rounded-lg',\n  xl: 'rounded-xl',\n  full: 'rounded-full',\n};\n\nfunction CheckIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      className=\"h-3 w-3\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2.25\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    >\n      <path d=\"M20 6 9 17l-5-5\" />\n    </svg>\n  );\n}\n\nfunction MoreIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      className=\"h-4 w-4\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    >\n      <circle cx=\"12\" cy=\"12\" r=\"1\" />\n      <circle cx=\"19\" cy=\"12\" r=\"1\" />\n      <circle cx=\"5\" cy=\"12\" r=\"1\" />\n    </svg>\n  );\n}\n\nfunction renderIcon(icon: ReactNode, className?: string) {\n  if (!icon) return null;\n  return (\n    <span className={cn('inline-flex h-4 w-4 shrink-0 items-center justify-center', className)}>\n      {icon}\n    </span>\n  );\n}\n\nfunction getCurrentOptionLabel(selector: UserAccountMenuSelectorConfig) {\n  return selector.options.find((option) => option.value === selector.value)?.label ?? selector.value;\n}\n\nfunction UserAccountMenuSelector({\n  classNames,\n  menuRadius,\n  selector,\n}: {\n  classNames?: UserAccountMenuClassNames;\n  menuRadius: UserAccountMenuRadius;\n  selector: UserAccountMenuSelectorConfig;\n}) {\n  if (selector.visible === false || selector.options.length === 0) return null;\n\n  const radiusClass = radiusClassNames[menuRadius];\n  const currentLabel = getCurrentOptionLabel(selector);\n\n  return (\n    <DropdownMenu.Sub>\n      <DropdownMenu.SubTrigger\n        disabled={selector.disabled}\n        className={cn(\n          'relative flex cursor-pointer select-none items-center gap-2 px-2 py-2 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] data-[state=open]:bg-[hsl(var(--accent))] data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n          radiusClass,\n          classNames?.subTrigger,\n        )}\n      >\n        {renderIcon(selector.icon)}\n        <span className=\"min-w-0 truncate\">{selector.label}</span>\n        <span className=\"ml-auto min-w-0 max-w-[7rem] truncate text-xs text-[hsl(var(--muted-foreground))]\">\n          {currentLabel}\n        </span>\n      </DropdownMenu.SubTrigger>\n      <DropdownMenu.Portal>\n        <DropdownMenu.SubContent\n          sideOffset={8}\n          className={cn(\n            'z-50 min-w-40 border border-[hsl(var(--border))] bg-[hsl(var(--popover))] p-1.5 text-[hsl(var(--popover-foreground))] shadow-md animate-in fade-in-0 zoom-in-95',\n            radiusClass,\n            selector.contentWidthClassName,\n            classNames?.subContent,\n          )}\n        >\n          <DropdownMenu.RadioGroup value={selector.value} onValueChange={selector.onChange}>\n            {selector.options.map((option) => (\n              <DropdownMenu.RadioItem\n                key={option.value}\n                value={option.value}\n                disabled={option.disabled}\n                className={cn(\n                  'relative flex cursor-pointer select-none items-center gap-2 px-2 py-2 pl-8 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n                  radiusClass,\n                  classNames?.item,\n                )}\n              >\n                <DropdownMenu.ItemIndicator className=\"absolute left-2 inline-flex h-4 w-4 items-center justify-center\">\n                  <CheckIcon />\n                </DropdownMenu.ItemIndicator>\n                {renderIcon(option.icon, classNames?.itemIcon)}\n                <span className=\"min-w-0 truncate\">{option.label}</span>\n              </DropdownMenu.RadioItem>\n            ))}\n          </DropdownMenu.RadioGroup>\n        </DropdownMenu.SubContent>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Sub>\n  );\n}\n\nexport function UserAccountMenu({\n  align = 'end',\n  appearance = defaultAppearance,\n  ariaLabel,\n  className,\n  classNames,\n  contentWidthClassName = 'w-56',\n  fallbackName = 'User',\n  items = [],\n  menuRadius = 'default',\n  selectors = [],\n  side = 'bottom',\n  sideOffset = 8,\n  triggerEndIcon,\n  triggerTitle,\n  triggerVariant = 'avatar',\n  user,\n}: UserAccountMenuProps) {\n  const displayName = user.name?.trim() || fallbackName;\n  const radiusClass = radiusClassNames[menuRadius];\n  const visibleSelectors = selectors.filter(\n    (selector) => selector.visible !== false && selector.options.length > 0,\n  );\n  const visibleItems = items.filter((item) => item.visible !== false);\n  const hasMenuBody = visibleSelectors.length > 0 || visibleItems.length > 0;\n\n  const avatar = (\n    <BaseAvatar\n      appearance={appearance}\n      alt={user.avatarAlt ?? displayName}\n      className={cn('h-8 w-8', classNames?.avatar)}\n      initials={user.initials}\n      name={displayName}\n      size=\"sm\"\n      src={user.avatarUrl}\n    />\n  );\n  const isProfileTrigger = triggerVariant === 'profile';\n\n  return (\n    <DropdownMenu.Root>\n      <DropdownMenu.Trigger asChild>\n        <BaseButton\n          appearance={appearance}\n          ariaLabel={ariaLabel ?? displayName}\n          className={cn(\n            isProfileTrigger\n              ? 'h-auto w-full justify-start rounded-lg border-transparent bg-transparent px-2 py-2 text-left shadow-none transition-all hover:bg-[hsl(var(--muted))]/60'\n              : 'h-9 w-9 overflow-visible rounded-full border-transparent bg-transparent p-0 shadow-none transition-all hover:ring-2 hover:ring-[hsl(var(--ring))]/20',\n            className,\n            classNames?.root,\n            classNames?.trigger,\n          )}\n          classNames={{\n            icon: 'h-8 w-8',\n            label: isProfileTrigger ? 'min-w-0 flex-1 text-left' : undefined,\n          }}\n          endIcon={isProfileTrigger ? (triggerEndIcon ?? <MoreIcon />) : undefined}\n          icon={avatar}\n          iconOnly={!isProfileTrigger}\n          label={\n            isProfileTrigger ? (\n              <span className=\"flex min-w-0 flex-col items-start\">\n                <span className=\"max-w-full truncate text-sm font-medium leading-none text-[hsl(var(--foreground))]\">\n                  {displayName}\n                </span>\n                {user.secondaryText ? (\n                  <span className=\"mt-1 max-w-full truncate text-xs leading-none text-[hsl(var(--muted-foreground))]\">\n                    {user.secondaryText}\n                  </span>\n                ) : null}\n              </span>\n            ) : undefined\n          }\n          title={triggerTitle ?? displayName}\n          tone=\"muted\"\n        />\n      </DropdownMenu.Trigger>\n      <DropdownMenu.Portal>\n        <DropdownMenu.Content\n          align={align}\n          side={side}\n          sideOffset={sideOffset}\n          className={cn(\n            'z-50 border border-[hsl(var(--border))] bg-[hsl(var(--popover))] p-1.5 text-[hsl(var(--popover-foreground))] shadow-md animate-in fade-in-0 zoom-in-95',\n            contentWidthClassName,\n            radiusClass,\n            classNames?.content,\n          )}\n        >\n          <DropdownMenu.Label className={cn('px-2 py-1.5 font-normal', classNames?.label)}>\n            <div className=\"flex min-w-0 items-center gap-2\">\n              {avatar}\n              <div className=\"flex min-w-0 flex-col\">\n                <span className={cn('truncate text-sm font-medium leading-none', classNames?.userName)}>\n                  {displayName}\n                </span>\n                {user.secondaryText ? (\n                  <span\n                    className={cn(\n                      'truncate pt-1 text-xs leading-none text-[hsl(var(--muted-foreground))]',\n                      classNames?.secondaryText,\n                    )}\n                  >\n                    {user.secondaryText}\n                  </span>\n                ) : null}\n              </div>\n            </div>\n          </DropdownMenu.Label>\n\n          {hasMenuBody ? (\n            <DropdownMenu.Separator\n              className={cn('my-1 h-px bg-[hsl(var(--border))]', classNames?.separator)}\n            />\n          ) : null}\n\n          {visibleSelectors.map((selector, index) => (\n            <UserAccountMenuSelector\n              key={selector.id ?? `selector-${index}`}\n              classNames={classNames}\n              menuRadius={menuRadius}\n              selector={selector}\n            />\n          ))}\n\n          {visibleSelectors.length > 0 && visibleItems.length > 0 ? (\n            <DropdownMenu.Separator\n              className={cn('my-1 h-px bg-[hsl(var(--border))]', classNames?.separator)}\n            />\n          ) : null}\n\n          {visibleItems.map((item) => (\n            <div key={item.id}>\n              {item.separatorBefore ? (\n                <DropdownMenu.Separator\n                  className={cn('my-1 h-px bg-[hsl(var(--border))]', classNames?.separator)}\n                />\n              ) : null}\n              <DropdownMenu.Item\n                disabled={item.disabled}\n                onSelect={item.disabled ? undefined : item.onSelect}\n                className={cn(\n                  'relative flex cursor-pointer select-none items-center gap-2 px-2 py-2 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n                  radiusClass,\n                  item.tone === 'danger' &&\n                    'text-[hsl(var(--destructive))] hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--destructive))] focus:text-[hsl(var(--destructive))]',\n                  classNames?.item,\n                  item.tone === 'danger' && classNames?.dangerItem,\n                )}\n              >\n                {renderIcon(item.icon, classNames?.itemIcon)}\n                <span className=\"min-w-0 flex-1 truncate\">{item.label}</span>\n                {item.shortcut ? (\n                  <span className=\"ml-3 shrink-0 text-xs text-[hsl(var(--muted-foreground))]\">\n                    {item.shortcut}\n                  </span>\n                ) : null}\n              </DropdownMenu.Item>\n            </div>\n          ))}\n        </DropdownMenu.Content>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Root>\n  );\n}\n","import {\n  Fragment,\n  useEffect,\n  useRef,\n  useState,\n  type CSSProperties,\n  type ReactNode,\n  type SyntheticEvent,\n} from \"react\";\nimport * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport { BaseButton, BaseTooltip, type BaseAppearance } from \"../base\";\nimport { useMonkeysComponentAttributes } from \"../../provider/context\";\nimport { getOverlaySurfaceClassName } from \"../primitives/internal/overlaySurface\";\nexport { AppShellSidebar } from \"./AppShellSidebar\";\nexport type {\n  AppShellSidebarClassNames,\n  AppShellSidebarProps,\n} from \"./AppShellSidebar\";\nexport { UserAccountMenu } from \"./UserAccountMenu\";\nexport type {\n  UserAccountMenuClassNames,\n  UserAccountMenuItem,\n  UserAccountMenuProps,\n  UserAccountMenuRadius,\n  UserAccountMenuSelectorConfig,\n  UserAccountMenuSelectorOption,\n  UserAccountMenuSide,\n  UserAccountMenuTriggerVariant,\n  UserAccountMenuUser,\n} from \"./UserAccountMenu\";\n\n// ============================================================\n// cn utility (inline clsx + tailwind-merge–lite for zero deps)\n// ============================================================\nexport function cn(...inputs: (string | undefined | null | false)[]): string {\n  return inputs.filter(Boolean).join(\" \");\n}\n\n// ============================================================\n// NavButton\n// ============================================================\nexport interface NavButtonProps {\n  /** 是否处于激活状态 */\n  active?: boolean;\n  /** 是否显示但禁止交互 */\n  disabled?: boolean;\n  /** 左侧图标 */\n  icon?: ReactNode;\n  /** 右侧附加内容（如 chevron） */\n  postfix?: ReactNode;\n  /** 点击回调 */\n  onClick?: () => void;\n  className?: string;\n  children: ReactNode;\n}\n\nexport function NavButton({\n  active,\n  disabled,\n  icon,\n  postfix,\n  onClick,\n  className,\n  children,\n}: NavButtonProps) {\n  return (\n    <button\n      type=\"button\"\n      aria-disabled={disabled}\n      aria-pressed={active}\n      disabled={disabled}\n      className={cn(\n        \"flex w-full cursor-pointer select-none items-center gap-2 rounded-xl border p-2 text-left text-xs text-[hsl(var(--foreground))] transition-colors\",\n        active\n          ? \"border-[hsl(var(--input))] bg-[hsl(var(--muted))] font-bold\"\n          : disabled\n            ? \"border-transparent\"\n            : \"border-transparent hover:border-[hsl(var(--input))]/60 hover:bg-[hsl(var(--muted))]/60\",\n        disabled && \"!cursor-not-allowed opacity-60\",\n        className,\n      )}\n      onClick={onClick}\n    >\n      <div className=\"w-[20px] [&_svg]:h-[16px] [&_svg]:w-[16px]\">{icon}</div>\n      <span className=\"text-sm\">{children}</span>\n      {postfix}\n    </button>\n  );\n}\n\n// ============================================================\n// AppHeader\n// ============================================================\nexport interface HeaderTab {\n  id: string;\n  label: string;\n}\n\nexport interface AppHeaderLogo {\n  /** Logo 图片 URL，若为空则显示 fallback */\n  url?: string;\n  /** 品牌名称 */\n  title: string;\n  /** 点击 Logo 回调 */\n  onClick?: () => void;\n}\n\nexport interface AppHeaderUser {\n  name?: string;\n  email?: string;\n  photo?: string;\n}\n\nexport interface AppHeaderProps {\n  /** 品牌 Logo */\n  logo: AppHeaderLogo;\n  /** 导航 tabs */\n  tabs?: HeaderTab[];\n  /** 当前激活的 tab id */\n  activeTab?: string;\n  /** tab 切换回调 */\n  onTabChange?: (tabId: string) => void;\n  /** 用户信息 */\n  user?: AppHeaderUser;\n  /** 退出登录回调 */\n  onLogout?: () => void;\n  /** 退出登录文案 */\n  logoutLabel?: string;\n  /** 用户菜单中的额外菜单项（在退出登录按钮之前渲染） */\n  userMenuItems?: ReactNode;\n  /** header 右侧额外内容 */\n  extra?: ReactNode;\n  className?: string;\n}\n\nexport function AppHeader({\n  logo,\n  tabs,\n  activeTab,\n  onTabChange,\n  user,\n  onLogout,\n  logoutLabel = \"退出登录\",\n  userMenuItems,\n  extra,\n  className,\n}: AppHeaderProps) {\n  const getUserInitials = (name: string) =>\n    name\n      .split(\" \")\n      .map((n) => n[0])\n      .join(\"\")\n      .toUpperCase()\n      .slice(0, 2);\n\n  return (\n    <header\n      className={cn(\n        \"flex h-[72px] w-full shrink-0 items-center justify-between gap-4 rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))] p-[var(--global-spacing,0.75rem)]\",\n        className,\n      )}\n    >\n      {/* Logo */}\n      <div\n        className=\"flex shrink-0 cursor-pointer items-center gap-2\"\n        onClick={logo.onClick}\n      >\n        <div\n          className={cn(\n            \"flex h-8 w-8 items-center justify-center rounded-lg overflow-hidden\",\n            logo.url\n              ? \"bg-transparent\"\n              : \"bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))]\",\n          )}\n        >\n          {logo.url ? (\n            <img\n              src={logo.url}\n              alt={logo.title}\n              className=\"h-full w-full object-contain\"\n            />\n          ) : (\n            <span className=\"text-sm font-bold\">{logo.title.charAt(0)}</span>\n          )}\n        </div>\n        <span className=\"text-lg font-semibold whitespace-nowrap\">\n          {logo.title}\n        </span>\n      </div>\n\n      {/* Separator + Tabs */}\n      {tabs && tabs.length > 0 && (\n        <>\n          <div className=\"h-1/2 w-px bg-[hsl(var(--border))]\" />\n          <div className=\"flex flex-1 items-center\">\n            <div className=\"inline-flex h-9 items-center gap-1 rounded-md bg-transparent p-1\">\n              {tabs.map((tab) => (\n                <button\n                  key={tab.id}\n                  className={cn(\n                    \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium transition-all\",\n                    tab.id === activeTab\n                      ? \"bg-[hsl(var(--muted))] text-[hsl(var(--foreground))] shadow-sm\"\n                      : \"text-[hsl(var(--muted-foreground))] hover:bg-[hsl(var(--muted))]/50\",\n                  )}\n                  onClick={() => onTabChange?.(tab.id)}\n                >\n                  {tab.label}\n                </button>\n              ))}\n            </div>\n          </div>\n        </>\n      )}\n      {(!tabs || tabs.length === 0) && <div className=\"flex-1\" />}\n\n      {/* Right side */}\n      <div className=\"flex shrink-0 items-center gap-4\">\n        {extra}\n        {user && (\n          <DropdownMenu.Root>\n            <DropdownMenu.Trigger asChild>\n              <button className=\"flex h-8 w-8 items-center justify-center rounded-full hover:ring-2 hover:ring-[hsl(var(--ring))]/20 transition-all overflow-hidden focus-visible:outline-none\">\n                {user.photo ? (\n                  <img\n                    src={user.photo}\n                    alt={user.name}\n                    className=\"h-8 w-8 rounded-full object-cover\"\n                  />\n                ) : (\n                  <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-[hsl(var(--muted))] text-xs font-medium\">\n                    {user.name ? getUserInitials(user.name) : \"U\"}\n                  </div>\n                )}\n              </button>\n            </DropdownMenu.Trigger>\n            <DropdownMenu.Portal>\n              <DropdownMenu.Content\n                className=\"z-50 w-52 rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--popover))] p-1 text-[hsl(var(--popover-foreground))] shadow-md animate-in fade-in-0 zoom-in-95\"\n                sideOffset={5}\n                align=\"end\"\n              >\n                {/* User info label */}\n                <DropdownMenu.Label className=\"flex items-center gap-2 px-2 py-1.5 font-normal\">\n                  {user.photo ? (\n                    <img\n                      src={user.photo}\n                      alt={user.name}\n                      className=\"h-8 w-8 rounded-full object-cover\"\n                    />\n                  ) : (\n                    <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-[hsl(var(--muted))] text-xs font-medium\">\n                      {user.name ? getUserInitials(user.name) : \"U\"}\n                    </div>\n                  )}\n                  <div className=\"flex flex-col\">\n                    <span className=\"text-sm font-medium leading-none\">\n                      {user.name}\n                    </span>\n                    {user.email && (\n                      <span className=\"text-xs text-[hsl(var(--muted-foreground))] leading-none mt-1\">\n                        {user.email}\n                      </span>\n                    )}\n                  </div>\n                </DropdownMenu.Label>\n\n                <DropdownMenu.Separator className=\"h-px bg-[hsl(var(--border))] my-1\" />\n\n                <DropdownMenu.Group>\n                  {userMenuItems}\n\n                  {/* Logout */}\n                  <DropdownMenu.Item\n                    className=\"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm text-[hsl(var(--destructive))] outline-none transition-colors hover:bg-[hsl(var(--accent))]\"\n                    onSelect={() => onLogout?.()}\n                  >\n                    <svg\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      width=\"16\"\n                      height=\"16\"\n                      viewBox=\"0 0 24 24\"\n                      fill=\"none\"\n                      stroke=\"currentColor\"\n                      strokeWidth=\"1.5\"\n                      strokeLinecap=\"round\"\n                      strokeLinejoin=\"round\"\n                    >\n                      <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n                      <polyline points=\"16 17 21 12 16 7\" />\n                      <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" />\n                    </svg>\n                    {logoutLabel}\n                  </DropdownMenu.Item>\n                </DropdownMenu.Group>\n              </DropdownMenu.Content>\n            </DropdownMenu.Portal>\n          </DropdownMenu.Root>\n        )}\n      </div>\n    </header>\n  );\n}\n\n// ============================================================\n// AppSidebar\n// ============================================================\nexport interface SidebarNavItem {\n  id: string;\n  label: string;\n  icon?: ReactNode;\n  disabled?: boolean;\n  /** 如果有 children 则为分组，点击展开/折叠 */\n  children?: SidebarNavItem[];\n}\n\nexport interface SidebarAccount {\n  name?: string;\n  photo?: string;\n}\n\nexport interface AppSidebarProps {\n  /** Logo */\n  logo?: AppHeaderLogo;\n  /** 导航菜单 */\n  navItems: SidebarNavItem[];\n  /** 当前路径/激活的 item id */\n  activeItemId?: string;\n  /** 点击导航项回调 */\n  onNavigate?: (itemId: string) => void;\n  /** 账户信息 */\n  account?: SidebarAccount;\n  /** 退出登录回调 */\n  onLogout?: () => void;\n  /** 退出登录文案 */\n  logoutLabel?: string;\n  /** 底部额外内容（如版本号） */\n  footer?: ReactNode;\n  /** 默认展开的分组 id 列表 */\n  defaultExpandedGroups?: string[];\n  className?: string;\n}\n\nexport function AppSidebar({\n  logo,\n  navItems,\n  activeItemId,\n  onNavigate,\n  account,\n  onLogout,\n  logoutLabel = \"退出登录\",\n  footer,\n  defaultExpandedGroups,\n  className,\n}: AppSidebarProps) {\n  return (\n    <div\n      className={cn(\n        \"flex w-[13.7rem] shrink-0 flex-col justify-between gap-[var(--global-spacing,0.75rem)] overflow-y-hidden rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))] p-5\",\n        className,\n      )}\n    >\n      {/* Logo */}\n      {logo && (\n        <div\n          className=\"flex shrink-0 cursor-pointer items-center gap-2\"\n          onClick={logo.onClick}\n        >\n          <div\n            className={cn(\n              \"flex h-8 w-8 items-center justify-center rounded-lg overflow-hidden\",\n              logo.url\n                ? \"bg-transparent\"\n                : \"bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))]\",\n            )}\n          >\n            {logo.url ? (\n              <img\n                src={logo.url}\n                alt={logo.title}\n                className=\"h-full w-full object-contain\"\n              />\n            ) : (\n              <span className=\"text-sm font-bold\">{logo.title.charAt(0)}</span>\n            )}\n          </div>\n          <span className=\"text-lg font-semibold whitespace-nowrap\">\n            {logo.title}\n          </span>\n        </div>\n      )}\n\n      {/* Navigation */}\n      <SidebarNavList\n        items={navItems}\n        activeItemId={activeItemId}\n        onNavigate={onNavigate}\n        defaultExpandedGroups={defaultExpandedGroups}\n      />\n\n      {/* Account Section */}\n      {(account || footer) && (\n        <div className=\"flex flex-col gap-2\">\n          {account && (\n            <div className=\"flex w-full flex-col gap-2 rounded-lg bg-[hsl(var(--muted))] p-2 shadow-sm\">\n              <div className=\"flex w-full items-center justify-between px-3 py-1\">\n                <div className=\"flex items-center gap-2\">\n                  {account.photo ? (\n                    <img\n                      src={account.photo}\n                      alt={account.name}\n                      className=\"h-5 w-5 rounded-full object-cover\"\n                    />\n                  ) : (\n                    <div className=\"flex h-5 w-5 items-center justify-center rounded-full bg-[hsl(var(--muted))] text-[10px] font-medium\">\n                      {account.name\n                        ? account.name.charAt(0).toUpperCase()\n                        : \"U\"}\n                    </div>\n                  )}\n                  <span className=\"text-xs font-medium truncate max-w-[100px]\">\n                    {account.name}\n                  </span>\n                </div>\n                {onLogout && (\n                  <button\n                    onClick={onLogout}\n                    className=\"flex items-center justify-center text-[hsl(var(--destructive))] hover:opacity-80 transition-opacity\"\n                    title={logoutLabel}\n                  >\n                    <svg\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      width=\"16\"\n                      height=\"16\"\n                      viewBox=\"0 0 24 24\"\n                      fill=\"none\"\n                      stroke=\"currentColor\"\n                      strokeWidth=\"1.5\"\n                      strokeLinecap=\"round\"\n                      strokeLinejoin=\"round\"\n                    >\n                      <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n                      <polyline points=\"16 17 21 12 16 7\" />\n                      <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" />\n                    </svg>\n                  </button>\n                )}\n              </div>\n            </div>\n          )}\n          {footer}\n        </div>\n      )}\n    </div>\n  );\n}\n\n// ============================================================\n// SidebarNavList (internal accordion-style nav)\n// ============================================================\ninterface SidebarNavListProps {\n  items: SidebarNavItem[];\n  activeItemId?: string;\n  onNavigate?: (itemId: string) => void;\n  defaultExpandedGroups?: string[];\n}\n\nfunction SidebarNavList({\n  items,\n  activeItemId,\n  onNavigate,\n  defaultExpandedGroups,\n}: SidebarNavListProps) {\n  const [expanded, setExpanded] = useState<Record<string, boolean>>(() => {\n    const map: Record<string, boolean> = {};\n    (defaultExpandedGroups ?? items.map((i) => i.id)).forEach((id) => {\n      map[id] = true;\n    });\n    return map;\n  });\n  const [localActiveItemId, setLocalActiveItemId] = useState<\n    string | undefined\n  >(activeItemId);\n\n  useEffect(() => {\n    if (activeItemId !== undefined) {\n      setLocalActiveItemId(activeItemId);\n    }\n  }, [activeItemId]);\n\n  const toggle = (id: string) => {\n    setExpanded((prev: Record<string, boolean>) => ({\n      ...prev,\n      [id]: !prev[id],\n    }));\n  };\n  const resolvedActiveItemId = activeItemId ?? localActiveItemId;\n\n  return (\n    <div\n      className=\"h-full flex-1 overflow-y-auto\"\n      style={{ scrollbarWidth: \"none\", msOverflowStyle: \"none\" }}\n    >\n      <style>{`.monkeys-sidebar-nav::-webkit-scrollbar { display: none; }`}</style>\n      <div className=\"monkeys-sidebar-nav flex w-full flex-col gap-2 text-xs text-[hsl(var(--foreground))]\">\n        {items.map((item) => {\n          if (item.children && item.children.length > 0) {\n            const isExpanded = expanded[item.id] ?? true;\n            return (\n              <div key={item.id}>\n                <NavButton\n                  active={item.id === resolvedActiveItemId}\n                  disabled={item.disabled}\n                  icon={item.icon}\n                  onClick={() => toggle(item.id)}\n                  postfix={\n                    <div className=\"flex flex-1 justify-end\">\n                      <svg\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                        width=\"16\"\n                        height=\"16\"\n                        viewBox=\"0 0 24 24\"\n                        fill=\"none\"\n                        stroke=\"currentColor\"\n                        strokeWidth=\"2\"\n                        strokeLinecap=\"round\"\n                        strokeLinejoin=\"round\"\n                        className=\"shrink-0 text-[hsl(var(--foreground))] transition-transform duration-200\"\n                        style={{\n                          transform: isExpanded\n                            ? \"rotate(90deg)\"\n                            : \"rotate(0deg)\",\n                        }}\n                      >\n                        <path d=\"m9 18 6-6-6-6\" />\n                      </svg>\n                    </div>\n                  }\n                >\n                  {item.label}\n                </NavButton>\n                {isExpanded && !item.disabled && (\n                  <div className=\"flex flex-col gap-1 mt-1\">\n                    {item.children.map((child) => (\n                      <NavButton\n                        key={child.id}\n                        active={child.id === resolvedActiveItemId}\n                        disabled={child.disabled}\n                        onClick={() => {\n                          setLocalActiveItemId(child.id);\n                          onNavigate?.(child.id);\n                        }}\n                      >\n                        {child.label}\n                      </NavButton>\n                    ))}\n                  </div>\n                )}\n              </div>\n            );\n          }\n          return (\n            <NavButton\n              key={item.id}\n              icon={item.icon}\n              active={item.id === resolvedActiveItemId}\n              disabled={item.disabled}\n              onClick={() => {\n                setLocalActiveItemId(item.id);\n                onNavigate?.(item.id);\n              }}\n            >\n              {item.label}\n            </NavButton>\n          );\n        })}\n      </div>\n    </div>\n  );\n}\n\n// ============================================================\n// AppLayout\n// ============================================================\nexport interface AppLayoutProps {\n  /** header 组件 */\n  header?: ReactNode;\n  /** sidebar 组件 */\n  sidebar?: ReactNode;\n  /** 主内容 */\n  children: ReactNode;\n  /** 是否 flush 布局（无内边距） */\n  flush?: boolean;\n  className?: string;\n}\n\nexport function AppLayout({\n  header,\n  sidebar,\n  children,\n  flush = false,\n  className,\n}: AppLayoutProps) {\n  return (\n    <div\n      className={cn(\n        \"flex h-screen flex-col gap-[var(--global-spacing,0.75rem)] overflow-hidden p-[var(--global-spacing,0.75rem)]\",\n        className,\n      )}\n      style={{ backgroundColor: \"hsl(var(--muted))\" }}\n    >\n      {header ? header : null}\n      <div className=\"flex flex-1 gap-[var(--global-spacing,0.75rem)] overflow-hidden min-h-0\">\n        {sidebar ? sidebar : null}\n        <main\n          className={cn(\n            \"flex-1 min-h-0 overflow-hidden rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))]\",\n            !flush && \"overflow-y-auto\",\n          )}\n        >\n          {flush ? (\n            children\n          ) : (\n            <div className=\"h-full overflow-y-auto\">{children}</div>\n          )}\n        </main>\n      </div>\n    </div>\n  );\n}\n\n// ============================================================\n// NavigationLayout\n// ============================================================\nexport type NavigationMode = \"sidebar\" | \"headbar\";\nexport type HeadbarLayoutMode = \"boxed\" | \"full-bleed\";\nexport type HeadbarMenuRadius =\n  \"default\" | \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\nexport type HeadbarNavPosition = \"left\" | \"center\" | \"right\";\nexport type HeadbarSurface = \"card\" | \"glassy\" | \"ghost\";\n\nexport interface LayoutNavItem {\n  id: string;\n  label: ReactNode;\n  headbarLabel?: ReactNode;\n  icon?: ReactNode;\n  children?: LayoutNavItem[];\n  disabled?: boolean;\n  trailing?: ReactNode;\n  headbarSecondaryAction?: ReactNode;\n}\n\ninterface NavigationLayoutAction {\n  id: string;\n  label: ReactNode;\n  title?: string;\n  icon?: ReactNode;\n  onClick?: () => void;\n}\n\nexport interface HeadbarLayout {\n  brandTitle?: ReactNode;\n  heightPx?: number;\n  layoutMode?: HeadbarLayoutMode;\n  menuRadius?: HeadbarMenuRadius;\n  navPosition?: HeadbarNavPosition;\n  surface?: HeadbarSurface;\n}\n\nexport interface NavigationLayoutProps {\n  activeItemId?: string;\n  activeRootId?: string;\n  allowModeSwitch?: boolean;\n  accountMenu?: ReactNode;\n  children: ReactNode;\n  className?: string;\n  collapsedSidebarAccountMenu?: ReactNode;\n  collapsedSidebarWidth?: string;\n  contextualSidebar?: boolean;\n  contextualSidebarHeader?: ReactNode;\n  contextualSidebarWidth?: string;\n  defaultMode?: NavigationMode;\n  defaultSidebarCollapsed?: boolean;\n  expandedSidebarWidth?: string;\n  expandSidebarLabel?: string;\n  flush?: boolean;\n  headbarActions?: ReactNode;\n  headbarLayout?: HeadbarLayout;\n  logo?: AppHeaderLogo;\n  mode?: NavigationMode;\n  navItems: LayoutNavItem[];\n  onModeChange?: (mode: NavigationMode) => void;\n  onNavigate?: (itemId: string) => void;\n  onSidebarCollapsedChange?: (collapsed: boolean) => void;\n  renderHeadbarExtra?: ReactNode;\n  collapseSidebarLabel?: string;\n  sidebarCollapsed?: boolean;\n  sidebarAccountMenu?: ReactNode;\n  sidebarFooter?: ReactNode;\n  sidebarHeader?: ReactNode;\n  switchToHeadbarLabel?: string;\n  switchToSidebarLabel?: string;\n}\n\nconst NAVIGATION_LAYOUT_SIDEBAR_EXPANDED_WIDTH = \"13.7rem\";\nconst NAVIGATION_LAYOUT_SIDEBAR_COLLAPSED_WIDTH = \"4.25rem\";\nconst NAVIGATION_LAYOUT_CONTEXTUAL_SIDEBAR_WIDTH = \"15rem\";\nconst NAVIGATION_LAYOUT_TRANSITION_TIMING = \"cubic-bezier(0.22, 1, 0.36, 1)\";\nconst NAVIGATION_LAYOUT_HEADBAR_DEFAULT_HEIGHT_PX = 72;\nconst NAVIGATION_LAYOUT_HEADBAR_MIN_HEIGHT_PX = 56;\nconst NAVIGATION_LAYOUT_HEADBAR_MAX_HEIGHT_PX = 120;\nconst NAVIGATION_LAYOUT_HEADBAR_COMPACT_HEIGHT_THRESHOLD_PX = 64;\nconst NAVIGATION_LAYOUT_HEADBAR_BOXED_VERTICAL_PADDING_PX = 12;\nconst NAVIGATION_LAYOUT_HEADBAR_COMPACT_VERTICAL_PADDING_PX = 8;\nconst NAVIGATION_LAYOUT_HEADBAR_LOGO_DEFAULT_SIZE_PX = 44;\nconst NAVIGATION_LAYOUT_HEADBAR_LOGO_COMPACT_SIZE_PX = 36;\nconst NAVIGATION_LAYOUT_DEFAULT_APPEARANCE: BaseAppearance = {\n  preset: \"soft\",\n  density: \"compact\",\n  radius: \"lg\",\n  border: \"subtle\",\n  background: \"soft\",\n};\n\nconst NAVIGATION_LAYOUT_MENU_RADIUS_CLASS_MAP: Record<\n  Exclude<HeadbarMenuRadius, \"default\">,\n  { all: string; left: string; right: string }\n> = {\n  none: { all: \"rounded-none\", left: \"!rounded-none\", right: \"!rounded-none\" },\n  sm: {\n    all: \"rounded-sm\",\n    left: \"!rounded-l-sm !rounded-r-none\",\n    right: \"!rounded-l-none !rounded-r-sm\",\n  },\n  md: {\n    all: \"rounded-md\",\n    left: \"!rounded-l-md !rounded-r-none\",\n    right: \"!rounded-l-none !rounded-r-md\",\n  },\n  lg: {\n    all: \"rounded-lg\",\n    left: \"!rounded-l-lg !rounded-r-none\",\n    right: \"!rounded-l-none !rounded-r-lg\",\n  },\n  xl: {\n    all: \"rounded-xl\",\n    left: \"!rounded-l-xl !rounded-r-none\",\n    right: \"!rounded-l-none !rounded-r-xl\",\n  },\n  full: {\n    all: \"rounded-full\",\n    left: \"!rounded-l-full !rounded-r-none\",\n    right: \"!rounded-l-none !rounded-r-full\",\n  },\n};\n\nfunction clampHeadbarHeight(value?: number) {\n  if (typeof value !== \"number\" || !Number.isFinite(value))\n    return NAVIGATION_LAYOUT_HEADBAR_DEFAULT_HEIGHT_PX;\n  return Math.min(\n    NAVIGATION_LAYOUT_HEADBAR_MAX_HEIGHT_PX,\n    Math.max(NAVIGATION_LAYOUT_HEADBAR_MIN_HEIGHT_PX, Math.round(value)),\n  );\n}\n\nfunction getHeadbarVerticalPaddingPx(heightPx: number) {\n  return heightPx <= NAVIGATION_LAYOUT_HEADBAR_COMPACT_HEIGHT_THRESHOLD_PX\n    ? NAVIGATION_LAYOUT_HEADBAR_COMPACT_VERTICAL_PADDING_PX\n    : NAVIGATION_LAYOUT_HEADBAR_BOXED_VERTICAL_PADDING_PX;\n}\n\nfunction getHeadbarLogoSizePx(heightPx: number) {\n  return heightPx <= NAVIGATION_LAYOUT_HEADBAR_COMPACT_HEIGHT_THRESHOLD_PX\n    ? NAVIGATION_LAYOUT_HEADBAR_LOGO_COMPACT_SIZE_PX\n    : NAVIGATION_LAYOUT_HEADBAR_LOGO_DEFAULT_SIZE_PX;\n}\n\nfunction getHeadbarMenuRadiusClass(\n  menuRadius: HeadbarMenuRadius = \"default\",\n  part: \"all\" | \"left\" | \"right\" = \"all\",\n) {\n  if (menuRadius === \"default\") {\n    if (part === \"left\") return \"rounded-l-lg rounded-r-none\";\n    if (part === \"right\") return \"rounded-l-none rounded-r-lg\";\n    return \"rounded-lg\";\n  }\n  return NAVIGATION_LAYOUT_MENU_RADIUS_CLASS_MAP[menuRadius][part];\n}\n\nfunction getHeadbarFrameClass(\n  layoutMode: HeadbarLayoutMode = \"boxed\",\n  navPosition: HeadbarNavPosition = \"center\",\n) {\n  const columns =\n    navPosition === \"center\"\n      ? \"grid-cols-[minmax(max-content,1fr)_minmax(0,max-content)_minmax(max-content,1fr)]\"\n      : \"grid-cols-[max-content_minmax(0,1fr)_max-content]\";\n  return layoutMode === \"full-bleed\"\n    ? cn(\n        \"sticky top-0 z-40 grid w-full shrink-0 items-center gap-4 rounded-none border-b border-x-0 border-t-0 border-[hsl(var(--input))] bg-[hsl(var(--background))] p-[var(--global-spacing,0.75rem)]\",\n        columns,\n      )\n    : cn(\n        \"sticky top-0 z-40 grid w-full shrink-0 items-center gap-4 rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))] p-[var(--global-spacing,0.75rem)]\",\n        columns,\n      );\n}\n\nfunction getHeadbarFrameStyle(\n  layoutMode: HeadbarLayoutMode = \"boxed\",\n  heightPx: number,\n  surface: HeadbarSurface = \"card\",\n): CSSProperties {\n  const verticalPaddingPx = getHeadbarVerticalPaddingPx(heightPx);\n  const fallbackBackground = \"hsl(var(--background))\";\n  const style: CSSProperties = {\n    height: `var(--monkeys-component-navigation-headbar-height, ${heightPx}px)`,\n    minHeight: `var(--monkeys-component-navigation-headbar-height, ${heightPx}px)`,\n    paddingTop: `${verticalPaddingPx}px`,\n    paddingBottom: `${verticalPaddingPx}px`,\n    background: `var(--monkeys-component-navigation-headbar-frame-background, ${fallbackBackground})`,\n    color:\n      \"var(--monkeys-component-navigation-headbar-frame-foreground, hsl(var(--foreground)))\",\n    borderColor:\n      surface === \"glassy\"\n        ? \"var(--monkeys-component-navigation-headbar-frame-border-color, rgb(255 255 255 / 0.5))\"\n        : \"var(--monkeys-component-navigation-headbar-frame-border-color, hsl(var(--input)))\",\n    borderRadius:\n      layoutMode === \"full-bleed\"\n        ? \"0\"\n        : \"var(--monkeys-component-navigation-headbar-frame-radius, var(--radius, 0.75rem))\",\n    boxShadow:\n      surface === \"glassy\"\n        ? \"var(--monkeys-component-navigation-headbar-frame-shadow, inset 0 0 0 0 rgb(0 0 0 / 0.1))\"\n        : \"var(--monkeys-component-navigation-headbar-frame-shadow, none)\",\n    backdropFilter: `blur(var(--monkeys-component-navigation-headbar-frame-backdrop-blur, ${surface === \"glassy\" ? \"45px\" : \"0px\"}))`,\n  };\n\n  if (layoutMode === \"full-bleed\") {\n    style.marginLeft = \"calc(var(--global-spacing,0.75rem) * -1)\";\n    style.marginRight = \"calc(var(--global-spacing,0.75rem) * -1)\";\n    style.marginTop = \"calc(var(--global-spacing,0.75rem) * -1)\";\n    style.width = \"calc(100% + (var(--global-spacing,0.75rem) * 2))\";\n  }\n\n  return style;\n}\n\nfunction getHeadbarNavClass(navPosition: HeadbarNavPosition = \"center\") {\n  if (navPosition === \"left\") return \"justify-start\";\n  if (navPosition === \"right\") return \"justify-end\";\n  return \"justify-center\";\n}\n\nfunction getHeadbarItemStyle(\n  active: boolean,\n  useTokenRadius = true,\n): CSSProperties {\n  return {\n    height: \"var(--monkeys-component-navigation-headbar-item-height, 2.25rem)\",\n    borderRadius: useTokenRadius\n      ? \"var(--monkeys-component-navigation-headbar-item-radius, var(--radius, 0.5rem))\"\n      : undefined,\n    paddingInline:\n      \"var(--monkeys-component-navigation-headbar-item-padding-inline, 0.75rem)\",\n    columnGap: \"var(--monkeys-component-navigation-headbar-item-gap, 0.375rem)\",\n    color: active\n      ? \"var(--monkeys-component-navigation-headbar-item-active-foreground, hsl(var(--foreground)))\"\n      : \"var(--monkeys-component-navigation-headbar-item-foreground, hsl(var(--muted-foreground)))\",\n    background: active\n      ? \"var(--monkeys-component-navigation-headbar-item-active-background, hsl(var(--muted)))\"\n      : \"transparent\",\n    borderColor: active\n      ? \"var(--monkeys-component-navigation-headbar-item-active-border-color, transparent)\"\n      : \"transparent\",\n    fontSize:\n      \"var(--monkeys-component-navigation-headbar-item-font-size, 0.875rem)\",\n    fontWeight:\n      \"var(--monkeys-component-navigation-headbar-item-font-weight, 500)\",\n  };\n}\n\nfunction getHeadbarCompoundStyle(\n  active: boolean,\n  useTokenRadius = true,\n): CSSProperties {\n  return {\n    ...getHeadbarItemStyle(active, useTokenRadius),\n    paddingInline: undefined,\n    columnGap: undefined,\n  };\n}\n\nfunction findNavigationRootId(\n  items: LayoutNavItem[],\n  activeItemId?: string,\n): string | undefined {\n  for (const item of items) {\n    if (item.id === activeItemId) return item.id;\n    if (containsNavigationItem(item, activeItemId)) return item.id;\n  }\n  return activeItemId;\n}\n\nfunction containsNavigationItem(\n  item: LayoutNavItem,\n  itemId?: string,\n): boolean {\n  if (!itemId) return false;\n  if (item.id === itemId) return true;\n  return item.children?.some((child) => containsNavigationItem(child, itemId)) ?? false;\n}\n\nfunction findActiveNavigationBranch(\n  item: LayoutNavItem,\n  activeItemId?: string,\n): LayoutNavItem | undefined {\n  return item.children?.find((child) => containsNavigationItem(child, activeItemId));\n}\n\nfunction getNavigationActionTitle(action: NavigationLayoutAction) {\n  return (\n    action.title ||\n    (typeof action.label === \"string\" ? action.label : undefined)\n  );\n}\n\nfunction NavigationLayoutActionButtons({\n  actions,\n  compact,\n}: {\n  actions: NavigationLayoutAction[];\n  compact: boolean;\n}) {\n  if (!actions.length) return null;\n\n  if (compact) {\n    return (\n      <div className=\"flex flex-col items-center gap-2\">\n        {actions.map((action) => {\n          const title = getNavigationActionTitle(action);\n          return (\n            <BaseTooltip\n              key={action.id}\n              appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n              content={action.label}\n              placement=\"right\"\n              portal\n            >\n              <BaseButton\n                appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n                tone=\"muted\"\n                iconOnly\n                icon={action.icon}\n                onClick={action.onClick}\n                title={title}\n                ariaLabel={title}\n                className={cn(\n                  \"h-10 w-10 rounded-lg border-transparent text-[hsl(var(--muted-foreground))] shadow-none\",\n                  \"hover:-translate-y-0.5 hover:border-[hsl(var(--input))]/80 hover:bg-[hsl(var(--muted))] hover:text-[hsl(var(--foreground))]\",\n                  \"active:translate-y-0 active:scale-[0.96]\",\n                )}\n              />\n            </BaseTooltip>\n          );\n        })}\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"flex flex-col gap-2\">\n      {actions.map((action) => (\n        <BaseButton\n          key={action.id}\n          appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n          tone=\"muted\"\n          icon={action.icon}\n          label={<span className=\"truncate\">{action.label}</span>}\n          onClick={action.onClick}\n          title={getNavigationActionTitle(action)}\n          className={cn(\n            \"h-9 w-full justify-start gap-2.5 rounded-lg border-transparent px-3 text-left text-[13px] text-[hsl(var(--muted-foreground))] shadow-none\",\n            \"hover:-translate-y-0.5 hover:border-[hsl(var(--input))]/80 hover:bg-[hsl(var(--muted))]/70 hover:text-[hsl(var(--foreground))]\",\n            \"active:translate-y-0 active:scale-[0.985]\",\n          )}\n        />\n      ))}\n    </div>\n  );\n}\n\nfunction SidebarNavigationList({\n  activeItemId,\n  items,\n  onNavigate,\n  revealRequest,\n}: {\n  activeItemId?: string;\n  items: LayoutNavItem[];\n  onNavigate?: (itemId: string) => void;\n  revealRequest?: { id: string; nonce: number } | null;\n}) {\n  const navRef = useRef<HTMLDivElement | null>(null);\n  const [expandedByRoot, setExpandedByRoot] = useState<Record<string, boolean>>(\n    {},\n  );\n  const canReveal = revealRequest\n    ? items.some((item) => containsNavigationItem(item, revealRequest.id) && !item.disabled)\n    : false;\n\n  const toggleRoot = (id: string) => {\n    setExpandedByRoot((current) => ({\n      ...current,\n      [id]: !current[id],\n    }));\n  };\n\n  useEffect(() => {\n    if (!revealRequest || !canReveal) return;\n    setExpandedByRoot((current) => ({ ...current, [revealRequest.id]: true }));\n\n    const frameId = window.requestAnimationFrame(() => {\n      const targetElement = navRef.current?.querySelector(\n        `[data-navigation-sidebar-item-id=\"${CSS.escape(revealRequest.id)}\"]`,\n      );\n      if (targetElement instanceof HTMLElement) {\n        targetElement.scrollIntoView({\n          behavior: \"auto\",\n          block: \"nearest\",\n          inline: \"nearest\",\n        });\n      }\n    });\n\n    return () => window.cancelAnimationFrame(frameId);\n  }, [canReveal, revealRequest]);\n\n  const renderItems = (navigationItems: LayoutNavItem[], depth = 0): ReactNode =>\n    navigationItems.map((item) => {\n      const isGroup = Boolean(item.children?.length);\n      const containsActiveItem = containsNavigationItem(item, activeItemId);\n      const isExpanded =\n        !item.disabled &&\n        (expandedByRoot[item.id] ?? containsActiveItem);\n\n      return (\n        <div key={item.id} data-navigation-sidebar-item-id={item.id}>\n          <NavButton\n            active={containsActiveItem}\n            className={depth > 0 ? \"pl-3\" : undefined}\n            disabled={item.disabled}\n            icon={item.icon}\n            onClick={() =>\n              isGroup ? toggleRoot(item.id) : onNavigate?.(item.id)\n            }\n            postfix={isGroup ? (\n              <div className=\"flex flex-1 justify-end\">\n                <HeadbarChevronIcon\n                  open={false}\n                  sideways\n                  className=\"text-[hsl(var(--foreground))] transition-transform duration-200\"\n                  style={{ transform: isExpanded ? \"rotate(90deg)\" : \"rotate(0deg)\" }}\n                />\n              </div>\n            ) : undefined}\n          >\n            {item.label}\n          </NavButton>\n          {isGroup && isExpanded ? (\n            <div className=\"mt-1 ml-3 flex flex-col gap-1 border-l border-[hsl(var(--input))] pl-2\">\n              {renderItems(item.children ?? [], depth + 1)}\n            </div>\n          ) : null}\n        </div>\n      );\n    });\n\n  return (\n    <div\n      className=\"h-full flex-1 overflow-y-auto\"\n      style={{ scrollbarWidth: \"none\", msOverflowStyle: \"none\" }}\n    >\n      <style>{`.monkeys-navigation-sidebar-nav::-webkit-scrollbar { display: none; }`}</style>\n      <div\n        ref={navRef}\n        className=\"monkeys-navigation-sidebar-nav flex w-full flex-col gap-2 text-xs text-[hsl(var(--foreground))]\"\n      >\n        {renderItems(items)}\n      </div>\n    </div>\n  );\n}\n\nfunction SidebarBrand({\n  collapsed,\n  logo,\n  title,\n}: {\n  collapsed?: boolean;\n  logo?: AppHeaderLogo;\n  title?: ReactNode;\n}) {\n  if (!logo) return null;\n\n  const brandTitle = title ?? logo.title;\n  const logoMark = (\n    <div\n      className={cn(\n        \"flex h-9 w-9 shrink-0 items-center justify-center overflow-hidden rounded-lg\",\n        logo.url\n          ? \"bg-transparent\"\n          : \"bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))]\",\n      )}\n    >\n      {logo.url ? (\n        <img\n          src={logo.url}\n          alt={logo.title}\n          className=\"h-full w-full object-contain\"\n        />\n      ) : (\n        <span className=\"text-sm font-bold\">{logo.title.charAt(0)}</span>\n      )}\n    </div>\n  );\n\n  if (collapsed) {\n    return (\n      <BaseTooltip\n        appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n        content={brandTitle}\n        placement=\"right\"\n        portal\n      >\n        <BaseButton\n          appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n          ariaLabel={typeof brandTitle === \"string\" ? brandTitle : logo.title}\n          className=\"h-10 w-10 rounded-lg border-transparent bg-transparent p-0 shadow-none hover:bg-[hsl(var(--muted))]/60\"\n          icon={logoMark}\n          iconOnly\n          onClick={logo.onClick}\n          title={typeof brandTitle === \"string\" ? brandTitle : logo.title}\n          tone=\"muted\"\n        />\n      </BaseTooltip>\n    );\n  }\n\n  return (\n    <BaseButton\n      appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n      ariaLabel={logo.title}\n      className=\"h-auto w-full justify-start gap-3 border-transparent bg-transparent p-0 text-left shadow-none hover:bg-transparent\"\n      classNames={{ icon: \"h-9 w-9\" }}\n      icon={logoMark}\n      label={\n        <span className=\"min-w-0 truncate text-sm font-semibold text-[hsl(var(--foreground))]\">\n          {brandTitle}\n        </span>\n      }\n      onClick={logo.onClick}\n      title={typeof brandTitle === \"string\" ? brandTitle : logo.title}\n      tone=\"muted\"\n    />\n  );\n}\n\nfunction Sidebar({\n  accountMenu,\n  activeItemId,\n  actions = [],\n  collapsed,\n  collapsedAccountMenu,\n  footer,\n  header,\n  items,\n  logo,\n  onCollapsedChange,\n  onNavigate,\n  onRevealRoot,\n  revealRequest,\n  title,\n}: {\n  accountMenu?: ReactNode;\n  activeItemId?: string;\n  actions?: NavigationLayoutAction[];\n  collapsed?: boolean;\n  collapsedAccountMenu?: ReactNode;\n  footer?: ReactNode;\n  header?: ReactNode;\n  items: LayoutNavItem[];\n  logo?: AppHeaderLogo;\n  onCollapsedChange?: (collapsed: boolean) => void;\n  onNavigate?: (itemId: string) => void;\n  onRevealRoot?: (rootId: string) => void;\n  revealRequest?: { id: string; nonce: number } | null;\n  title?: ReactNode;\n}) {\n  if (collapsed) {\n    const activeRootId = findNavigationRootId(items, activeItemId);\n\n    return (\n      <div className=\"flex h-full min-h-0 w-full flex-col rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))] p-2 shadow-sm\">\n        <div className=\"mb-3 flex shrink-0 justify-center\">\n          {header ?? <SidebarBrand collapsed logo={logo} title={title} />}\n        </div>\n        <div\n          className=\"flex min-h-0 flex-1 flex-col items-center gap-2 overflow-y-auto pb-3\"\n          style={{ scrollbarWidth: \"none\", msOverflowStyle: \"none\" }}\n        >\n          {items.map((item) => {\n            const isActive = activeRootId === item.id;\n            return (\n              <BaseTooltip\n                key={item.id}\n                appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n                content={item.label}\n                placement=\"right\"\n                portal\n              >\n                <BaseButton\n                  appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n                  tone=\"muted\"\n                  active={isActive}\n                  disabled={item.disabled}\n                  iconOnly\n                  icon={item.icon}\n                  onClick={() => {\n                    if (item.disabled) return;\n                    onRevealRoot?.(item.id);\n                    onCollapsedChange?.(false);\n                    if (item.children?.length) return;\n                    onNavigate?.(item.id);\n                  }}\n                  title={\n                    typeof item.label === \"string\" ? item.label : undefined\n                  }\n                  ariaLabel={\n                    typeof item.label === \"string\" ? item.label : item.id\n                  }\n                  className={cn(\n                    \"h-10 w-10 rounded-lg border text-[hsl(var(--muted-foreground))] shadow-none\",\n                    \"hover:-translate-y-0.5 active:translate-y-0 active:scale-[0.96]\",\n                    isActive\n                      ? \"border-[hsl(var(--input))] bg-[hsl(var(--muted))] text-[hsl(var(--foreground))] shadow-sm\"\n                      : \"border-transparent hover:border-[hsl(var(--input))]/80 hover:bg-[hsl(var(--muted))]/70 hover:text-[hsl(var(--foreground))]\",\n                  )}\n                />\n              </BaseTooltip>\n            );\n          })}\n        </div>\n        <div className=\"-mx-2 mt-2 border-t border-[hsl(var(--input))] bg-[hsl(var(--background))] px-2 pt-2.5 pb-0.5\">\n          <NavigationLayoutActionButtons actions={actions} compact />\n          {collapsedAccountMenu ? (\n            <div className=\"mt-2 flex justify-center border-t border-[hsl(var(--input))] pt-2\">\n              {collapsedAccountMenu}\n            </div>\n          ) : null}\n        </div>\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"flex h-full min-h-0 w-full flex-col justify-between gap-0 overflow-y-hidden rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))] px-5 pt-5 pb-1.5\">\n      <div className=\"mb-4 shrink-0\">\n        {header ?? <SidebarBrand logo={logo} title={title} />}\n      </div>\n      <SidebarNavigationList\n        activeItemId={activeItemId}\n        items={items}\n        onNavigate={onNavigate}\n        revealRequest={revealRequest}\n      />\n      <div className=\"-mx-5 mt-2 border-t border-[hsl(var(--input))] bg-[hsl(var(--background))] px-4 pt-2.5 pb-1\">\n        <NavigationLayoutActionButtons actions={actions} compact={false} />\n        {footer}\n        {accountMenu ? (\n          <div className=\"mt-2 border-t border-[hsl(var(--input))] pt-2\">\n            {accountMenu}\n          </div>\n        ) : null}\n      </div>\n    </div>\n  );\n}\n\nfunction HeadbarChevronIcon({\n  className,\n  open,\n  sideways = false,\n  style,\n}: {\n  className?: string;\n  open: boolean;\n  sideways?: boolean;\n  style?: CSSProperties;\n}) {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      className={cn(\n        \"h-4 w-4 shrink-0\",\n        !sideways && \"transition-transform duration-200\",\n        !sideways && open && \"rotate-180\",\n        className,\n      )}\n      style={style}\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    >\n      <path d={sideways ? \"m9 18 6-6-6-6\" : \"m6 9 6 6 6-6\"} />\n    </svg>\n  );\n}\n\nfunction getHeadbarSummaryTitle(\n  rootLabel: ReactNode,\n  childLabel: ReactNode,\n) {\n  if (typeof rootLabel !== \"string\" || typeof childLabel !== \"string\") {\n    return undefined;\n  }\n\n  const rootText = rootLabel.trim();\n  const childText = childLabel.trim();\n  return rootText && childText ? `${rootText} ${childText}` : undefined;\n}\n\nconst HEADBAR_DROPDOWN_ITEM_CLASS =\n  \"relative flex w-full min-w-0 cursor-pointer select-none items-center gap-2.5 px-3 py-2 text-sm outline-none transition-colors hover:!bg-[var(--monkeys-component-navigation-headbar-item-hover-background,hsl(var(--accent)))] hover:!text-[var(--monkeys-component-navigation-headbar-item-hover-foreground,hsl(var(--accent-foreground)))] focus:!bg-[var(--monkeys-component-navigation-headbar-item-hover-background,hsl(var(--accent)))] focus:!text-[var(--monkeys-component-navigation-headbar-item-hover-foreground,hsl(var(--accent-foreground)))] data-[highlighted]:!bg-[var(--monkeys-component-navigation-headbar-item-hover-background,hsl(var(--accent)))] data-[highlighted]:!text-[var(--monkeys-component-navigation-headbar-item-hover-foreground,hsl(var(--accent-foreground)))]\";\n\nconst HEADBAR_DROPDOWN_CONTENT_STYLE: CSSProperties = {\n  width: \"max-content\",\n  maxWidth: \"min(20rem, var(--radix-dropdown-menu-content-available-width))\",\n  background:\n    \"var(--monkeys-component-navigation-headbar-menu-background, hsl(var(--monkeys-color-menu-surface)))\",\n  borderColor:\n    \"var(--monkeys-component-navigation-headbar-menu-border-color, var(--monkeys-component-overlay-border-color, hsl(var(--monkeys-color-border))))\",\n  color:\n    \"var(--monkeys-component-navigation-headbar-menu-foreground, hsl(var(--monkeys-color-popover-foreground)))\",\n  boxShadow:\n    \"var(--monkeys-component-navigation-headbar-menu-shadow, var(--monkeys-component-overlay-menu-shadow, 0 10px 15px -3px rgb(0 0 0 / 0.1)))\",\n  backdropFilter:\n    \"blur(var(--monkeys-component-navigation-headbar-menu-backdrop-blur, var(--monkeys-component-overlay-backdrop-blur, 0px)))\",\n  WebkitBackdropFilter:\n    \"blur(var(--monkeys-component-navigation-headbar-menu-backdrop-blur, var(--monkeys-component-overlay-backdrop-blur, 0px)))\",\n};\n\nfunction HeadbarDropdownItems({\n  activeItemId,\n  items,\n  menuContentRadiusClass,\n  menuItemRadiusClass,\n  onNavigate,\n  onNavigateComplete,\n  useTokenRadius,\n}: {\n  activeItemId?: string;\n  items: LayoutNavItem[];\n  menuContentRadiusClass: string;\n  menuItemRadiusClass: string;\n  onNavigate?: (itemId: string) => void;\n  onNavigateComplete: () => void;\n  useTokenRadius: boolean;\n}) {\n  const componentAttributes = useMonkeysComponentAttributes();\n\n  return items.map((item) => {\n    const label = (\n      <>\n        {item.icon ? (\n          <span className=\"inline-flex h-4 w-4 shrink-0 items-center justify-center text-[hsl(var(--muted-foreground))]\">\n            {item.icon}\n          </span>\n        ) : null}\n        <span\n          className={cn(\n            \"min-w-0 truncate\",\n            Boolean(item.children?.length) && \"flex-1\",\n          )}\n        >\n          {item.headbarLabel ?? item.label}\n        </span>\n      </>\n    );\n\n    if (item.children?.length) {\n      return (\n        <DropdownMenu.Sub key={item.id}>\n          <DropdownMenu.SubTrigger\n            disabled={item.disabled}\n            className={cn(HEADBAR_DROPDOWN_ITEM_CLASS, menuItemRadiusClass)}\n          >\n            {label}\n            <HeadbarChevronIcon open={false} sideways />\n          </DropdownMenu.SubTrigger>\n          <DropdownMenu.Portal>\n            <DropdownMenu.SubContent\n              {...componentAttributes}\n              sideOffset={4}\n              alignOffset={-6}\n              data-monkeys-component=\"navigation-headbar-menu\"\n              data-slot=\"content\"\n              data-surface=\"menu\"\n              className={cn(\n                \"z-50 border p-1.5 animate-in fade-in-0 zoom-in-95\",\n                getOverlaySurfaceClassName(\"menu\"),\n                menuContentRadiusClass,\n              )}\n              style={{\n                ...HEADBAR_DROPDOWN_CONTENT_STYLE,\n                minWidth: \"12rem\",\n              }}\n            >\n              <HeadbarDropdownItems\n                activeItemId={activeItemId}\n                items={item.children}\n                menuContentRadiusClass={menuContentRadiusClass}\n                menuItemRadiusClass={menuItemRadiusClass}\n                onNavigate={onNavigate}\n                onNavigateComplete={onNavigateComplete}\n                useTokenRadius={useTokenRadius}\n              />\n            </DropdownMenu.SubContent>\n          </DropdownMenu.Portal>\n        </DropdownMenu.Sub>\n      );\n    }\n\n    return (\n      <DropdownMenu.Item\n        key={item.id}\n        disabled={item.disabled}\n        className={cn(HEADBAR_DROPDOWN_ITEM_CLASS, menuItemRadiusClass)}\n        style={getHeadbarItemStyle(item.id === activeItemId, useTokenRadius)}\n        onSelect={() => {\n          if (item.disabled) return;\n          onNavigateComplete();\n          onNavigate?.(item.id);\n        }}\n      >\n        {label}\n        {item.trailing}\n      </DropdownMenu.Item>\n    );\n  });\n}\n\nfunction HeadbarNavMenuItem({\n  activeItemId,\n  compound,\n  isActive,\n  item,\n  label,\n  menuButtonRadiusClass,\n  menuContentRadiusClass,\n  menuItemRadiusClass,\n  onNavigate,\n  title,\n  useTokenRadius,\n}: {\n  activeItemId?: string;\n  compound?: boolean;\n  isActive: boolean;\n  item: LayoutNavItem;\n  label: ReactNode;\n  menuButtonRadiusClass: string;\n  menuContentRadiusClass: string;\n  menuItemRadiusClass: string;\n  onNavigate?: (itemId: string) => void;\n  title?: string;\n  useTokenRadius: boolean;\n}) {\n  const [open, setOpen] = useState(false);\n  const componentAttributes = useMonkeysComponentAttributes();\n  const isOpen = !item.disabled && open;\n  const closeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n  const wasOpenOnPointerDownRef = useRef(false);\n\n  const clearCloseTimer = () => {\n    if (!closeTimerRef.current) return;\n    clearTimeout(closeTimerRef.current);\n    closeTimerRef.current = null;\n  };\n\n  const openMenu = () => {\n    if (item.disabled) return;\n    clearCloseTimer();\n    setOpen(true);\n  };\n\n  const scheduleCloseMenu = () => {\n    clearCloseTimer();\n    closeTimerRef.current = setTimeout(() => {\n      setOpen(false);\n      closeTimerRef.current = null;\n    }, 120);\n  };\n\n  const navigateToFirstEnabledChild = () => {\n    const firstEnabledChild = item.children?.find((child) => !child.disabled);\n    if (!firstEnabledChild) return false;\n\n    setOpen(false);\n    onNavigate?.(firstEnabledChild.id);\n    return true;\n  };\n\n  useEffect(() => clearCloseTimer, []);\n\n  return (\n    <DropdownMenu.Root\n      modal={false}\n      open={isOpen}\n      onOpenChange={(nextOpen) => setOpen(!item.disabled && nextOpen)}\n    >\n      <DropdownMenu.Trigger asChild>\n        <BaseButton\n          appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n          tone=\"muted\"\n          active={isActive || isOpen}\n          icon={item.icon}\n          endIcon={<HeadbarChevronIcon open={isOpen} />}\n          label={label}\n          title={title}\n          disabled={item.disabled}\n          onClick={() => {\n            const wasOpenOnPointerDown = wasOpenOnPointerDownRef.current;\n            wasOpenOnPointerDownRef.current = false;\n            if (wasOpenOnPointerDown && navigateToFirstEnabledChild()) return;\n            setOpen(true);\n          }}\n          onPointerDown={() => {\n            wasOpenOnPointerDownRef.current = isOpen;\n          }}\n          onPointerCancel={() => {\n            wasOpenOnPointerDownRef.current = false;\n          }}\n          onKeyDown={(event) => {\n            if (\n              !isOpen ||\n              (event.key !== \"Enter\" && event.key !== \" \")\n            )\n              return;\n            if (navigateToFirstEnabledChild()) event.preventDefault();\n          }}\n          onMouseEnter={openMenu}\n          onMouseLeave={scheduleCloseMenu}\n          style={getHeadbarItemStyle(\n            isActive || isOpen,\n            compound ? false : useTokenRadius,\n          )}\n          classNames={{\n            icon: \"text-[inherit] [&_*]:!text-[inherit] [&_svg]:!stroke-current\",\n            label:\n              \"flex min-w-0 items-center text-[inherit] [&_*]:!text-[inherit]\",\n          }}\n          className={cn(\n            \"max-w-[12rem] shrink-0 border shadow-none\",\n            compound && \"!rounded-none !border-0 !bg-transparent\",\n            menuButtonRadiusClass,\n            isActive || isOpen\n              ? \"\"\n              : \"hover:!bg-[var(--monkeys-component-navigation-headbar-item-hover-background,hsl(var(--muted)))] hover:!text-[var(--monkeys-component-navigation-headbar-item-hover-foreground,hsl(var(--foreground)))]\",\n          )}\n        />\n      </DropdownMenu.Trigger>\n      <DropdownMenu.Portal>\n        <DropdownMenu.Content\n          {...componentAttributes}\n          align=\"start\"\n          sideOffset={5}\n          data-monkeys-component=\"navigation-headbar-menu\"\n          data-slot=\"content\"\n          data-surface=\"menu\"\n          onCloseAutoFocus={(event) => event.preventDefault()}\n          onMouseEnter={openMenu}\n          onMouseLeave={scheduleCloseMenu}\n          className={cn(\n            \"z-50 border p-1.5 animate-in fade-in-0 zoom-in-95\",\n            getOverlaySurfaceClassName(\"menu\"),\n            menuContentRadiusClass,\n          )}\n          style={{\n            ...HEADBAR_DROPDOWN_CONTENT_STYLE,\n            minWidth: \"var(--radix-dropdown-menu-trigger-width)\",\n          }}\n        >\n          <HeadbarDropdownItems\n            activeItemId={activeItemId}\n            items={item.children ?? []}\n            menuContentRadiusClass={menuContentRadiusClass}\n            menuItemRadiusClass={menuItemRadiusClass}\n            onNavigate={onNavigate}\n            onNavigateComplete={() => setOpen(false)}\n            useTokenRadius={useTokenRadius}\n          />\n        </DropdownMenu.Content>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Root>\n  );\n}\n\nfunction blockEvent(event: SyntheticEvent) {\n  event.preventDefault();\n  event.stopPropagation();\n}\n\nexport interface NavigationHeadbarMenuProps {\n  activeItemId?: string;\n  activeRootId?: string;\n  items: LayoutNavItem[];\n  menuRadius?: HeadbarMenuRadius;\n  onNavigate?: (itemId: string) => void;\n}\n\nexport function NavigationHeadbarMenu({\n  activeItemId,\n  activeRootId,\n  items,\n  menuRadius = \"default\",\n  onNavigate,\n}: NavigationHeadbarMenuProps) {\n  const menuButtonRadiusClass = getHeadbarMenuRadiusClass(menuRadius);\n  const menuContentRadiusClass = getHeadbarMenuRadiusClass(menuRadius);\n  const menuItemRadiusClass = getHeadbarMenuRadiusClass(menuRadius);\n  const useTokenRadius = menuRadius === \"default\";\n\n  return (\n    <div className=\"flex w-max min-w-0 shrink-0 items-center gap-1\">\n      {items.map((item) => {\n        const isActive = activeRootId === item.id || activeItemId === item.id;\n        const hasSecondaryAction = Boolean(item.headbarSecondaryAction);\n        const rootLabel = item.headbarLabel ?? item.label;\n        const activeChild = findActiveNavigationBranch(item, activeItemId);\n        const activeChildLabel = activeChild\n          ? (activeChild.headbarLabel ?? activeChild.label)\n          : undefined;\n        const label = activeChild ? (\n          <span\n            data-navigation-headbar-selected-child={activeChild.id}\n            className=\"flex min-w-0 items-center gap-1.5 whitespace-nowrap\"\n          >\n            <span className=\"shrink-0\">{rootLabel}</span>\n            <span className=\"sr-only\">: </span>\n            <span className=\"min-w-0 truncate\">{activeChildLabel}</span>\n          </span>\n        ) : (\n          <span className=\"truncate whitespace-nowrap\">{rootLabel}</span>\n        );\n        const title = activeChild\n          ? getHeadbarSummaryTitle(rootLabel, activeChildLabel)\n          : undefined;\n\n        const primaryAction = item.children?.length ? (\n          <HeadbarNavMenuItem\n            activeItemId={activeItemId}\n            compound={hasSecondaryAction}\n            isActive={isActive}\n            item={item}\n            label={label}\n            menuButtonRadiusClass={menuButtonRadiusClass}\n            menuContentRadiusClass={menuContentRadiusClass}\n            menuItemRadiusClass={menuItemRadiusClass}\n            onNavigate={onNavigate}\n            title={title}\n            useTokenRadius={useTokenRadius}\n          />\n        ) : (\n          <BaseButton\n            appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n            tone=\"muted\"\n            active={isActive}\n            disabled={item.disabled}\n            icon={item.icon}\n            label={\n              <span className=\"flex min-w-0 items-center gap-1.5\">\n                <span className=\"truncate whitespace-nowrap\">{label}</span>\n                {item.trailing}\n              </span>\n            }\n            onClick={() => onNavigate?.(item.id)}\n            style={getHeadbarItemStyle(\n              isActive,\n              hasSecondaryAction ? false : useTokenRadius,\n            )}\n            classNames={{\n              icon: \"text-[inherit] [&_*]:!text-[inherit] [&_svg]:!stroke-current\",\n              label: \"text-[inherit] [&_*]:!text-[inherit]\",\n            }}\n            className={cn(\n              \"max-w-[12rem] shrink-0 border shadow-none\",\n              hasSecondaryAction &&\n                \"!rounded-none !border-0 !bg-transparent\",\n              menuButtonRadiusClass,\n              isActive\n                ? \"\"\n                : \"hover:!bg-[var(--monkeys-component-navigation-headbar-item-hover-background,hsl(var(--muted)))] hover:!text-[var(--monkeys-component-navigation-headbar-item-hover-foreground,hsl(var(--foreground)))]\",\n            )}\n          />\n        );\n\n        if (!hasSecondaryAction) {\n          return <Fragment key={item.id}>{primaryAction}</Fragment>;\n        }\n\n        return (\n          <div\n            key={item.id}\n            data-navigation-headbar-compound-item={item.id}\n            aria-disabled={item.disabled}\n            className={cn(\n              \"inline-flex min-w-0 shrink-0 items-center gap-0 overflow-hidden border shadow-none\",\n              menuButtonRadiusClass,\n              isActive\n                ? \"\"\n                : \"hover:!bg-[var(--monkeys-component-navigation-headbar-item-hover-background,hsl(var(--muted)))] hover:!text-[var(--monkeys-component-navigation-headbar-item-hover-foreground,hsl(var(--foreground)))]\",\n            )}\n            style={getHeadbarCompoundStyle(isActive, useTokenRadius)}\n          >\n            <span\n              data-navigation-headbar-primary-action=\"\"\n              className=\"inline-flex min-w-0 shrink-0\"\n            >\n              {primaryAction}\n            </span>\n            <span\n              data-navigation-headbar-secondary-action={item.id}\n              {...(item.disabled && {\n                inert: \"\",\n                onClickCapture: blockEvent,\n                onKeyDownCapture: blockEvent,\n                onKeyUpCapture: blockEvent,\n                onPointerDownCapture: blockEvent,\n              })}\n              className={cn(\n                \"inline-flex min-w-0 shrink-0 items-center\",\n                item.disabled && \"!cursor-not-allowed opacity-60\",\n              )}\n            >\n              {item.headbarSecondaryAction}\n            </span>\n          </div>\n        );\n      })}\n    </div>\n  );\n}\n\nexport interface NavigationHeadbarProps {\n  activeItemId?: string;\n  activeRootId?: string;\n  actions?: ReactNode;\n  accountMenu?: ReactNode;\n  className?: string;\n  extra?: ReactNode;\n  layout?: HeadbarLayout;\n  brand?: ReactNode;\n  logo?: AppHeaderLogo;\n  navigation?: ReactNode;\n  navItems?: LayoutNavItem[];\n  onNavigate?: (itemId: string) => void;\n}\n\nexport function NavigationHeadbar({\n  activeItemId,\n  activeRootId,\n  actions,\n  accountMenu,\n  className,\n  extra,\n  layout,\n  brand,\n  logo,\n  navigation,\n  navItems = [],\n  onNavigate,\n}: NavigationHeadbarProps) {\n  const heightPx = clampHeadbarHeight(layout?.heightPx);\n  const layoutMode = layout?.layoutMode ?? \"boxed\";\n  const menuRadius = layout?.menuRadius ?? \"default\";\n  const surface = layout?.surface ?? \"card\";\n  const logoHeightPx = getHeadbarLogoSizePx(heightPx);\n  const frameStyle = getHeadbarFrameStyle(layoutMode, heightPx, surface);\n  const showBrandTitle = Boolean(layout?.brandTitle);\n\n  return (\n    <header\n      className={cn(\n        getHeadbarFrameClass(layoutMode, layout?.navPosition),\n        className,\n      )}\n      data-navigation-headbar=\"\"\n      data-navigation-headbar-surface={surface}\n      style={frameStyle}\n    >\n      <div className=\"flex min-w-0 items-center justify-start\">\n        {brand ??\n          (logo ? (\n            <BaseButton\n              appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n              tone=\"muted\"\n              icon={\n                <div\n                  className={cn(\n                    \"flex items-center justify-center overflow-hidden rounded-lg\",\n                    logo.url\n                      ? \"w-auto max-w-[min(22rem,30vw)] bg-transparent\"\n                      : \"bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))]\",\n                  )}\n                  style={\n                    logo.url\n                      ? { height: logoHeightPx }\n                      : { width: logoHeightPx, height: logoHeightPx }\n                  }\n                >\n                  {logo.url ? (\n                    <img\n                      src={logo.url}\n                      alt={logo.title}\n                      className=\"block h-full w-auto object-contain\"\n                    />\n                  ) : (\n                    <span className=\"text-base font-bold\">\n                      {logo.title.charAt(0)}\n                    </span>\n                  )}\n                </div>\n              }\n              label={\n                showBrandTitle ? (\n                  <span className=\"truncate whitespace-nowrap text-base font-medium text-[hsl(var(--foreground))]\">\n                    {layout?.brandTitle}\n                  </span>\n                ) : null\n              }\n              ariaLabel={logo.title}\n              title={logo.title}\n              className=\"h-auto min-w-0 justify-start border-transparent bg-transparent p-0 shadow-none hover:bg-transparent\"\n              classNames={\n                logo.url ? { icon: \"!h-auto !w-auto shrink-0\" } : undefined\n              }\n              onClick={logo.onClick}\n            />\n          ) : null)}\n      </div>\n\n      <div\n        className={cn(\n          \"flex min-w-0 items-center\",\n          getHeadbarNavClass(layout?.navPosition),\n        )}\n      >\n        <div className=\"no-scrollbar flex max-w-full min-w-0 items-center overflow-x-auto overscroll-x-contain\">\n          {navigation ?? (\n            <NavigationHeadbarMenu\n              activeItemId={activeItemId}\n              activeRootId={activeRootId}\n              items={navItems}\n              menuRadius={menuRadius}\n              onNavigate={onNavigate}\n            />\n          )}\n        </div>\n      </div>\n\n      <div className=\"flex min-w-0 items-center justify-end gap-3\">\n        {actions}\n        {extra}\n        {accountMenu}\n      </div>\n    </header>\n  );\n}\n\nexport function NavigationLayout({\n  activeItemId,\n  activeRootId,\n  allowModeSwitch = false,\n  accountMenu,\n  children,\n  className,\n  collapsedSidebarAccountMenu,\n  collapsedSidebarWidth = NAVIGATION_LAYOUT_SIDEBAR_COLLAPSED_WIDTH,\n  contextualSidebar = false,\n  contextualSidebarHeader,\n  contextualSidebarWidth = NAVIGATION_LAYOUT_CONTEXTUAL_SIDEBAR_WIDTH,\n  defaultMode = \"headbar\",\n  defaultSidebarCollapsed = false,\n  expandedSidebarWidth = NAVIGATION_LAYOUT_SIDEBAR_EXPANDED_WIDTH,\n  expandSidebarLabel = \"Expand sidebar\",\n  flush = false,\n  headbarActions,\n  headbarLayout,\n  logo,\n  mode,\n  navItems,\n  onModeChange,\n  onNavigate,\n  onSidebarCollapsedChange,\n  renderHeadbarExtra,\n  collapseSidebarLabel = \"Collapse sidebar\",\n  sidebarCollapsed: controlledSidebarCollapsed,\n  sidebarAccountMenu,\n  sidebarFooter,\n  sidebarHeader,\n  switchToHeadbarLabel = \"Switch to headbar\",\n  switchToSidebarLabel = \"Switch to sidebar\",\n}: NavigationLayoutProps) {\n  const [uncontrolledMode, setUncontrolledMode] =\n    useState<NavigationMode>(defaultMode);\n  const [uncontrolledSidebarCollapsed, setUncontrolledSidebarCollapsed] =\n    useState(defaultSidebarCollapsed);\n  const [revealRequest, setRevealRequest] = useState<{\n    id: string;\n    nonce: number;\n  } | null>(null);\n  const isModeControlled = mode !== undefined;\n  const isSidebarCollapsedControlled = controlledSidebarCollapsed !== undefined;\n  const navigationMode = isModeControlled ? mode : uncontrolledMode;\n  const sidebarCollapsed = isSidebarCollapsedControlled\n    ? controlledSidebarCollapsed\n    : uncontrolledSidebarCollapsed;\n  const isHeadbarMode = navigationMode === \"headbar\";\n  const sidebarWidth = sidebarCollapsed\n    ? collapsedSidebarWidth\n    : expandedSidebarWidth;\n  const resolvedActiveRootId =\n    activeRootId ?? findNavigationRootId(navItems, activeItemId);\n  const activeRoot = navItems.find((item) => item.id === resolvedActiveRootId);\n  const contextualItems = activeRoot?.children ?? [];\n\n  useEffect(() => {\n    if (!isModeControlled) {\n      setUncontrolledMode(defaultMode);\n    }\n  }, [defaultMode, isModeControlled]);\n\n  useEffect(() => {\n    if (!isSidebarCollapsedControlled) {\n      setUncontrolledSidebarCollapsed(defaultSidebarCollapsed);\n    }\n  }, [defaultSidebarCollapsed, isSidebarCollapsedControlled]);\n\n  const setNavigationMode = (nextMode: NavigationMode) => {\n    if (!isModeControlled) {\n      setUncontrolledMode(nextMode);\n    }\n    onModeChange?.(nextMode);\n  };\n\n  const setCollapsed = (collapsed: boolean) => {\n    if (!isSidebarCollapsedControlled) {\n      setUncontrolledSidebarCollapsed(collapsed);\n    }\n    onSidebarCollapsedChange?.(collapsed);\n  };\n\n  const navigationActions: NavigationLayoutAction[] = [];\n  if (allowModeSwitch) {\n    navigationActions.push({\n      id: \"toggle-headbar\",\n      label: switchToHeadbarLabel,\n      onClick: () => setNavigationMode(\"headbar\"),\n      icon: (\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          className=\"h-[18px] w-[18px] rotate-180\"\n          viewBox=\"0 0 24 24\"\n          fill=\"none\"\n          stroke=\"currentColor\"\n          strokeWidth=\"1.8\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n        >\n          <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n          <path d=\"M3 9h18\" />\n        </svg>\n      ),\n    });\n  }\n  navigationActions.push({\n    id: \"toggle-sidebar\",\n    label: sidebarCollapsed ? expandSidebarLabel : collapseSidebarLabel,\n    onClick: () => setCollapsed(!sidebarCollapsed),\n    icon: (\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        className=\"h-[18px] w-[18px]\"\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        strokeWidth=\"1.8\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      >\n        <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n        <path d=\"M9 3v18\" />\n        <path d={sidebarCollapsed ? \"m14 9 3 3-3 3\" : \"m16 15-3-3 3-3\"} />\n      </svg>\n    ),\n  });\n\n  const sidebar = isHeadbarMode && contextualSidebar && contextualItems.length ? (\n    <aside\n      className=\"relative h-full min-h-0 shrink-0 overflow-hidden\"\n      data-navigation-contextual-sidebar={resolvedActiveRootId}\n      style={{ width: contextualSidebarWidth }}\n    >\n      <div className=\"flex h-full min-h-0 w-full flex-col gap-3 rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))] px-4 py-4\">\n        <div className=\"shrink-0 px-2 text-sm font-semibold text-[hsl(var(--foreground))]\">\n          {contextualSidebarHeader ?? activeRoot?.label}\n        </div>\n        <SidebarNavigationList\n          activeItemId={activeItemId}\n          items={contextualItems}\n          onNavigate={onNavigate}\n        />\n      </div>\n    </aside>\n  ) : isHeadbarMode ? null : (\n    <div\n      className={cn(\n        \"relative h-full min-h-0 shrink-0 transition-[width] duration-260\",\n        sidebarCollapsed ? \"z-20 overflow-visible\" : \"z-10 overflow-hidden\",\n      )}\n      style={{\n        width: sidebarWidth,\n        transitionTimingFunction: NAVIGATION_LAYOUT_TRANSITION_TIMING,\n      }}\n    >\n      <Sidebar\n        accountMenu={sidebarAccountMenu ?? accountMenu}\n        activeItemId={activeItemId}\n        actions={navigationActions}\n        collapsed={sidebarCollapsed}\n        collapsedAccountMenu={collapsedSidebarAccountMenu ?? accountMenu}\n        footer={sidebarFooter}\n        header={sidebarHeader}\n        items={navItems}\n        logo={logo}\n        onCollapsedChange={setCollapsed}\n        onNavigate={onNavigate}\n        onRevealRoot={(rootId) =>\n          setRevealRequest((prev) => ({\n            id: rootId,\n            nonce: (prev?.nonce ?? 0) + 1,\n          }))\n        }\n        revealRequest={revealRequest}\n        title={headbarLayout?.brandTitle}\n      />\n    </div>\n  );\n\n  const header = isHeadbarMode ? (\n    <NavigationHeadbar\n      activeItemId={activeItemId}\n      activeRootId={resolvedActiveRootId}\n      actions={\n        allowModeSwitch ? (\n          <>\n            {headbarActions}\n            <BaseButton\n              appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n              tone=\"muted\"\n              icon={\n                <svg\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  className=\"h-4 w-4 shrink-0\"\n                  viewBox=\"0 0 24 24\"\n                  fill=\"none\"\n                  stroke=\"currentColor\"\n                  strokeWidth=\"1.8\"\n                  strokeLinecap=\"round\"\n                  strokeLinejoin=\"round\"\n                >\n                  <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n                  <path d=\"M9 3v18\" />\n                  <path d=\"m14 9 3 3-3 3\" />\n                </svg>\n              }\n              label={\n                <span className=\"truncate whitespace-nowrap\">\n                  {switchToSidebarLabel}\n                </span>\n              }\n              onClick={() => setNavigationMode(\"sidebar\")}\n              className={cn(\n                \"h-auto min-w-0 shrink px-3 py-2 text-sm font-medium text-[hsl(var(--muted-foreground))] shadow-none hover:border-[hsl(var(--input))]/70 hover:bg-[hsl(var(--muted))]/60 hover:text-[hsl(var(--foreground))]\",\n                getHeadbarMenuRadiusClass(headbarLayout?.menuRadius),\n              )}\n            />\n          </>\n        ) : (\n          headbarActions\n        )\n      }\n      accountMenu={accountMenu}\n      extra={renderHeadbarExtra}\n      layout={headbarLayout}\n      logo={logo}\n      navItems={navItems}\n      onNavigate={onNavigate}\n    />\n  ) : null;\n\n  return (\n    <AppLayout\n      header={header}\n      sidebar={sidebar}\n      flush={flush}\n      className={className}\n    >\n      {children}\n    </AppLayout>\n  );\n}\n","import {\n  createContext,\n  forwardRef,\n  useContext,\n  useMemo,\n  type HTMLAttributes,\n  type ReactNode,\n} from \"react\";\n\nimport { cn } from \"../layout\";\n\nexport type AgentWorkbenchVariant = \"default\" | \"trend\";\nexport type AgentWorkbenchDensity = \"default\" | \"compact\";\nexport type AgentWorkbenchSurfaceLevel =\n  | \"page\"\n  | \"panel\"\n  | \"elevated\"\n  | \"subtle\"\n  | \"overlay\";\n\nexport interface AgentWorkbenchAppearance {\n  variant: AgentWorkbenchVariant;\n  density: AgentWorkbenchDensity;\n}\n\nexport interface AgentWorkbenchAppearanceOptions {\n  variant?: AgentWorkbenchVariant;\n  density?: AgentWorkbenchDensity;\n}\n\nconst DEFAULT_APPEARANCE: AgentWorkbenchAppearance = {\n  variant: \"default\",\n  density: \"default\",\n};\n\nconst AgentWorkbenchAppearanceContext = createContext(DEFAULT_APPEARANCE);\n\nexport function resolveAgentWorkbenchAppearance(\n  inherited: AgentWorkbenchAppearance,\n  options: AgentWorkbenchAppearanceOptions = {},\n): AgentWorkbenchAppearance {\n  const variant = options.variant ?? inherited.variant;\n  return {\n    variant,\n    density:\n      options.density ??\n      (options.variant === \"trend\" ? \"compact\" : inherited.density),\n  };\n}\n\nexport function useAgentWorkbenchAppearance(\n  options: AgentWorkbenchAppearanceOptions = {},\n): AgentWorkbenchAppearance {\n  return resolveAgentWorkbenchAppearance(\n    useContext(AgentWorkbenchAppearanceContext),\n    options,\n  );\n}\n\nexport interface AgentWorkbenchAppearanceProviderProps\n  extends AgentWorkbenchAppearanceOptions {\n  children: ReactNode;\n}\n\nexport function AgentWorkbenchAppearanceProvider({\n  children,\n  variant,\n  density,\n}: AgentWorkbenchAppearanceProviderProps) {\n  const inherited = useContext(AgentWorkbenchAppearanceContext);\n  const appearance = useMemo(\n    () => resolveAgentWorkbenchAppearance(inherited, { variant, density }),\n    [density, inherited, variant],\n  );\n\n  return (\n    <AgentWorkbenchAppearanceContext.Provider value={appearance}>\n      {children}\n    </AgentWorkbenchAppearanceContext.Provider>\n  );\n}\n\nconst SURFACE_CLASSES: Record<AgentWorkbenchSurfaceLevel, string> = {\n  page: \"bg-background text-foreground\",\n  panel: \"bg-card text-card-foreground\",\n  elevated: \"border border-border bg-popover text-popover-foreground shadow-sm\",\n  subtle: \"bg-muted/40 text-foreground\",\n  overlay: \"border border-border bg-popover text-popover-foreground shadow-lg\",\n};\n\nexport interface AgentWorkbenchSurfaceProps\n  extends HTMLAttributes<HTMLDivElement>,\n    AgentWorkbenchAppearanceOptions {\n  level?: AgentWorkbenchSurfaceLevel;\n}\n\n/** Semantic surface primitive shared by Agent workbench regions and overlays. */\nexport const AgentWorkbenchSurface = forwardRef<\n  HTMLDivElement,\n  AgentWorkbenchSurfaceProps\n>(function AgentWorkbenchSurface(\n  { level = \"panel\", variant, density, className, children, ...props },\n  ref,\n) {\n  const appearance = useAgentWorkbenchAppearance({ variant, density });\n\n  return (\n    <div\n      {...props}\n      ref={ref}\n      data-agent-workbench-surface={level}\n      data-agent-workbench-variant={appearance.variant}\n      data-agent-workbench-density={appearance.density}\n      className={cn(SURFACE_CLASSES[level], className)}\n    >\n      {children}\n    </div>\n  );\n});\n","import * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Check, ChevronDown } from \"lucide-react\";\n\nimport { useMonkeysComponentAttributes } from \"../../provider/context\";\nimport { cn } from \"../base/utils\";\nimport { getOverlaySurfaceClassName } from \"./internal/overlaySurface\";\n\n/** Design-owned polymorphic slot for product compositions that need `asChild`. */\nexport const PolymorphicSlot = Slot;\n\nexport const Accordion = AccordionPrimitive.Root;\n\nexport const AccordionItem = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, style, ...props }, ref) => (\n  <AccordionPrimitive.Item\n    ref={ref}\n    className={cn(\"border-b\", className)}\n    style={{\n      borderColor:\n        \"var(--monkeys-component-accordion-item-border-color, hsl(var(--border)))\",\n      ...style,\n    }}\n    {...props}\n  />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\nexport const AccordionTrigger = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n  <AccordionPrimitive.Header className=\"flex\">\n    <AccordionPrimitive.Trigger\n      ref={ref}\n      className={cn(\n        \"flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\n        className,\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronDown\n        aria-hidden=\"true\"\n        className=\"h-4 w-4 shrink-0 transition-transform duration-200\"\n      />\n    </AccordionPrimitive.Trigger>\n  </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = \"AccordionTrigger\";\n\nexport const AccordionContent = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n  <AccordionPrimitive.Content\n    ref={ref}\n    className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n    {...props}\n  >\n    <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n  </AccordionPrimitive.Content>\n));\nAccordionContent.displayName = \"AccordionContent\";\n\nexport const Checkbox = React.forwardRef<\n  React.ElementRef<typeof CheckboxPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n  <CheckboxPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n      className,\n    )}\n    {...props}\n  >\n    <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n      <Check aria-hidden=\"true\" className=\"h-4 w-4\" />\n    </CheckboxPrimitive.Indicator>\n  </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = \"Checkbox\";\n\nexport const buttonVariants = cva(\n  \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_[data-slot=icon]]:text-[inherit] [&_[data-slot=icon]_*]:!text-[inherit] [&_[data-slot=icon]_svg]:!stroke-current [&_[data-slot=icon]_svg_*]:!stroke-current [&_[data-slot=end-icon]]:text-[inherit] [&_[data-slot=end-icon]_*]:!text-[inherit] [&_[data-slot=end-icon]_svg]:!stroke-current [&_[data-slot=end-icon]_svg_*]:!stroke-current [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"bg-primary text-primary-foreground shadow-sm hover:bg-primary/90\",\n        destructive:\n          \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n        outline:\n          \"border border-input bg-control-surface shadow-sm ring-offset-control-surface hover:bg-accent hover:text-accent-foreground\",\n        secondary:\n          \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n        ghost: \"hover:bg-accent hover:text-accent-foreground\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-10 px-4 py-2\",\n        sm: \"h-9 rounded-sm px-3\",\n        lg: \"h-11 rounded-md px-8\",\n        icon: \"h-10 w-10\",\n      },\n    },\n    defaultVariants: { variant: \"default\", size: \"default\" },\n  },\n);\n\nexport interface ButtonProps\n  extends\n    React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  asChild?: boolean;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Component = asChild ? Slot : \"button\";\n    return (\n      <Component\n        ref={ref}\n        className={buttonVariants({ variant, size, className })}\n        {...props}\n      />\n    );\n  },\n);\nButton.displayName = \"Button\";\n\nexport interface ScrollAreaProps extends React.ComponentPropsWithoutRef<\n  typeof ScrollAreaPrimitive.Root\n> {\n  viewportClassName?: string;\n  viewportRef?: React.Ref<HTMLDivElement>;\n  onViewportScroll?: React.UIEventHandler<HTMLDivElement>;\n  scrollbar?: boolean;\n  scrollbarOrientation?: \"vertical\" | \"horizontal\";\n  scrollBarDisabled?: boolean;\n}\n\nexport const ScrollArea = React.forwardRef<\n  React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n  ScrollAreaProps\n>(\n  (\n    {\n      className,\n      children,\n      viewportClassName,\n      viewportRef,\n      onViewportScroll,\n      scrollbar = true,\n      scrollbarOrientation = \"vertical\",\n      scrollBarDisabled = false,\n      ...props\n    },\n    ref,\n  ) => (\n    <ScrollAreaPrimitive.Root\n      ref={ref}\n      className={cn(\n        \"group relative overflow-hidden\",\n        scrollBarDisabled && \"no-scrollbar\",\n        className,\n      )}\n      {...props}\n    >\n      <ScrollAreaPrimitive.Viewport\n        ref={viewportRef}\n        onScroll={onViewportScroll}\n        className={cn(\"h-full w-full rounded-[inherit]\", viewportClassName)}\n      >\n        {children}\n      </ScrollAreaPrimitive.Viewport>\n      {scrollbar ? (\n        <ScrollBar\n          orientation={scrollbarOrientation}\n          className={cn(scrollBarDisabled && \"size-0 p-0\")}\n        />\n      ) : null}\n      <ScrollAreaPrimitive.Corner />\n    </ScrollAreaPrimitive.Root>\n  ),\n);\nScrollArea.displayName = \"ScrollArea\";\n\nexport const ScrollBar = React.forwardRef<\n  React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n  React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n  <ScrollAreaPrimitive.ScrollAreaScrollbar\n    ref={ref}\n    orientation={orientation}\n    className={cn(\n      \"flex touch-none select-none opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100 data-[state=visible]:opacity-100\",\n      orientation === \"vertical\" &&\n        \"h-full w-2.5 border-l border-l-transparent p-px\",\n      orientation === \"horizontal\" &&\n        \"h-2.5 flex-col border-t border-t-transparent p-px\",\n      className,\n    )}\n    {...props}\n  >\n    <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n  </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = \"ScrollBar\";\n\nexport const Switch = React.forwardRef<\n  React.ElementRef<typeof SwitchPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>\n>(({ className, ...props }, ref) => (\n  <SwitchPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n      className,\n    )}\n    {...props}\n  >\n    <SwitchPrimitive.Thumb className=\"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\" />\n  </SwitchPrimitive.Root>\n));\nSwitch.displayName = \"Switch\";\n\nexport type TabsVariant = \"default\" | \"ghost\" | \"rounded\";\nexport type TabsProps = React.ComponentPropsWithoutRef<\n  typeof TabsPrimitive.Root\n> & { variant?: TabsVariant };\nexport const Tabs = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Root>,\n  TabsProps\n>(({ variant = \"default\", ...props }, ref) => (\n  <TabsPrimitive.Root ref={ref} data-variant={variant} {...props} />\n));\nTabs.displayName = \"Tabs\";\nexport const TabsList = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.List>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.List> & {\n    gap?: string | number;\n  }\n>(({ className, gap, style, ...props }, ref) => (\n  <TabsPrimitive.List\n    ref={ref}\n    className={cn(\n      \"inline-flex h-10 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground\",\n      className,\n    )}\n    style={{ gap, ...style }}\n    {...props}\n  />\n));\nTabsList.displayName = \"TabsList\";\nexport const TabsTrigger = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n      className,\n    )}\n    {...props}\n  />\n));\nTabsTrigger.displayName = \"TabsTrigger\";\nexport const TabsContent = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Content\n    ref={ref}\n    className={cn(\n      \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n      className,\n    )}\n    {...props}\n  />\n));\nTabsContent.displayName = \"TabsContent\";\n\nexport const TooltipProvider = TooltipPrimitive.Provider;\nexport const Tooltip = TooltipPrimitive.Root;\nexport const TooltipTrigger = TooltipPrimitive.Trigger;\nexport const TooltipContent = React.forwardRef<\n  React.ElementRef<typeof TooltipPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => {\n  const componentAttributes = useMonkeysComponentAttributes();\n  return (\n    <TooltipPrimitive.Portal>\n      <TooltipPrimitive.Content\n        {...componentAttributes}\n        {...props}\n        ref={ref}\n        sideOffset={sideOffset}\n        data-monkeys-component=\"tooltip\"\n        data-slot=\"content\"\n        data-surface=\"menu\"\n        className={cn(\n          \"z-50 overflow-hidden border px-3 py-1.5 text-xs animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n          getOverlaySurfaceClassName(\"menu\"),\n          className,\n        )}\n      />\n    </TooltipPrimitive.Portal>\n  );\n});\nTooltipContent.displayName = \"TooltipContent\";\n","import * as React from 'react';\n\nimport { cn } from '../base/utils';\n\nexport type ControlAppearance = 'standard' | 'compact' | 'shadow';\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n  appearance?: ControlAppearance;\n}\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(({ className, appearance = 'standard', type, ...props }, ref) => (\n  <input\n    ref={ref}\n    type={type}\n    className={cn(\n      'flex w-full border border-input bg-control-surface px-3 text-foreground ring-offset-control-surface transition-[border-color,background-color,color,box-shadow] file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n      appearance === 'compact' ? 'h-9 rounded-md py-1 text-sm shadow-sm' : 'h-10 rounded-md py-2 text-sm shadow-sm',\n      appearance === 'shadow' && 'rounded-lg shadow-sm shadow-black/[0.02] dark:border-white/10 dark:bg-white/[0.04] dark:shadow-none',\n      className,\n    )}\n    {...props}\n  />\n));\nInput.displayName = 'Input';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n  appearance?: ControlAppearance;\n}\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(({ className, appearance = 'standard', ...props }, ref) => (\n  <textarea\n    ref={ref}\n    className={cn(\n      'flex w-full border border-input bg-control-surface px-3 py-2 text-foreground ring-offset-control-surface placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n      appearance === 'compact' ? 'min-h-[60px] rounded-md text-sm shadow-sm' : 'min-h-[80px] rounded-md text-sm',\n      appearance === 'shadow' && 'shadow-sm shadow-black/[0.02] dark:border-white/10 dark:bg-white/[0.04] dark:shadow-none',\n      className,\n    )}\n    {...props}\n  />\n));\nTextarea.displayName = 'Textarea';\n","import * as React from 'react';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { Input, Textarea } from './FormControls';\nimport { Button } from './InteractiveControls';\nimport { cn } from '../base/utils';\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"input-group\"\n      role=\"group\"\n      className={cn(\n        'group/input-group shadow-xs relative flex w-full items-center rounded-md border border-input outline-none transition-[color,box-shadow] dark:bg-input/30',\n        'h-9 has-[>textarea]:h-auto',\n\n        // Variants based on alignment.\n        'has-[>[data-align=inline-start]]:[&>input]:pl-2',\n        'has-[>[data-align=inline-end]]:[&>input]:pr-2',\n        'has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3',\n        'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3',\n\n        // Focus state.\n        'has-[[data-slot=input-group-control]:focus-visible]:ring-1 has-[[data-slot=input-group-control]:focus-visible]:ring-ring',\n\n        // Error state.\n        'has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-destructive/20 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40',\n\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nconst inputGroupAddonVariants = cva(\n  \"text-muted-foreground flex h-auto cursor-text select-none items-center justify-center gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      align: {\n        'inline-start': 'order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]',\n        'inline-end': 'order-last pr-3 has-[>button]:mr-[-0.4rem] has-[>kbd]:mr-[-0.35rem]',\n        'block-start':\n          '[.border-b]:pb-3 order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5',\n        'block-end': '[.border-t]:pt-3 order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5',\n      },\n    },\n    defaultVariants: {\n      align: 'inline-start',\n    },\n  },\n);\n\nfunction InputGroupAddon({\n  className,\n  align = 'inline-start',\n  ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof inputGroupAddonVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"input-group-addon\"\n      data-align={align}\n      className={cn(inputGroupAddonVariants({ align }), className)}\n      onClick={(e) => {\n        if ((e.target as HTMLElement).closest('button')) {\n          return;\n        }\n        e.currentTarget.parentElement?.querySelector('input')?.focus();\n      }}\n      {...props}\n    />\n  );\n}\n\nconst inputGroupButtonVariants = cva('flex items-center gap-2 text-sm shadow-none', {\n  variants: {\n    size: {\n      xs: \"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5\",\n      sm: 'h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5',\n      'icon-xs': 'size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0',\n      'icon-sm': 'size-8 p-0 has-[>svg]:p-0',\n    },\n  },\n  defaultVariants: {\n    size: 'xs',\n  },\n});\n\nfunction InputGroupButton({\n  className,\n  type = 'button',\n  variant = 'ghost',\n  size = 'xs',\n  ...props\n}: Omit<React.ComponentProps<typeof Button>, 'size'> & VariantProps<typeof inputGroupButtonVariants>) {\n  return (\n    <Button\n      type={type}\n      data-size={size}\n      variant={variant}\n      className={cn(inputGroupButtonVariants({ size }), className)}\n      {...props}\n    />\n  );\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<'span'>) {\n  return (\n    <span\n      className={cn(\n        \"flex items-center gap-2 text-sm text-muted-foreground [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nconst InputGroupInput = React.forwardRef<\n  HTMLInputElement,\n  React.ComponentPropsWithoutRef<'input'>\n>(({ className, ...props }, ref) => (\n  <Input\n    ref={ref}\n    data-slot=\"input-group-control\"\n    className={cn(\n      'flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 focus-visible:ring-offset-0 dark:bg-transparent',\n      className,\n    )}\n    {...props}\n  />\n));\nInputGroupInput.displayName = 'InputGroupInput';\n\nconst InputGroupTextarea = React.forwardRef<\n  HTMLTextAreaElement,\n  React.ComponentPropsWithoutRef<'textarea'>\n>(({ className, ...props }, ref) => (\n  <Textarea\n    ref={ref}\n    data-slot=\"input-group-control\"\n    className={cn(\n      'flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 focus-visible:ring-offset-0 dark:bg-transparent',\n      className,\n    )}\n    {...props}\n  />\n));\nInputGroupTextarea.displayName = 'InputGroupTextarea';\n\nexport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea };\n","import * as React from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown, ChevronRight, ChevronUp, Circle } from 'lucide-react';\n\nimport { useMonkeysComponentAttributes } from '../../provider/context';\nimport { cn } from '../base/utils';\nimport { getOverlaySurfaceClassName } from './internal/overlaySurface';\n\nconst menuItemClassName = 'relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0';\nconst menuContentClassName = `z-50 min-w-[8rem] overflow-hidden border p-1 ${getOverlaySurfaceClassName('menu')} data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`;\n\nexport const DropdownMenu = DropdownMenuPrimitive.Root;\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\nexport const DropdownMenuGroup = DropdownMenuPrimitive.Group;\nexport const DropdownMenuPortal = DropdownMenuPrimitive.Portal;\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub;\nexport const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\nexport const DropdownMenuSubTrigger = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & { inset?: boolean }\n>(({ className, inset, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.SubTrigger ref={ref} className={cn(menuItemClassName, 'data-[state=open]:bg-accent', inset && 'pl-8', className)} {...props}>\n    {children}<ChevronRight aria-hidden=\"true\" className=\"ml-auto\" />\n  </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName = 'DropdownMenuSubTrigger';\nexport const DropdownMenuSubContent = React.forwardRef<React.ElementRef<typeof DropdownMenuPrimitive.SubContent>, React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>>(\n  ({ className, ...props }, ref) => {\n    const componentAttributes = useMonkeysComponentAttributes();\n    return <DropdownMenuPrimitive.SubContent {...componentAttributes} {...props} ref={ref} data-monkeys-component=\"dropdown-menu\" data-slot=\"content\" data-surface=\"menu\" className={cn(menuContentClassName, className)} />;\n  },\n);\nDropdownMenuSubContent.displayName = 'DropdownMenuSubContent';\nexport const DropdownMenuContent = React.forwardRef<React.ElementRef<typeof DropdownMenuPrimitive.Content>, React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>>(\n  ({ className, sideOffset = 4, ...props }, ref) => {\n    const componentAttributes = useMonkeysComponentAttributes();\n    return <DropdownMenuPrimitive.Portal><DropdownMenuPrimitive.Content {...componentAttributes} {...props} ref={ref} sideOffset={sideOffset} data-monkeys-component=\"dropdown-menu\" data-slot=\"content\" data-surface=\"menu\" className={cn(menuContentClassName, className)} /></DropdownMenuPrimitive.Portal>;\n  },\n);\nDropdownMenuContent.displayName = 'DropdownMenuContent';\nexport const DropdownMenuItem = React.forwardRef<React.ElementRef<typeof DropdownMenuPrimitive.Item>, React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & { inset?: boolean }>(\n  ({ className, inset, ...props }, ref) => <DropdownMenuPrimitive.Item ref={ref} className={cn(menuItemClassName, inset && 'pl-8', className)} {...props} />,\n);\nDropdownMenuItem.displayName = 'DropdownMenuItem';\nexport const DropdownMenuCheckboxItem = React.forwardRef<React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>, React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>>(\n  ({ className, children, checked, ...props }, ref) => (\n    <DropdownMenuPrimitive.CheckboxItem ref={ref} className={cn(menuItemClassName, 'pl-8', className)} checked={checked} {...props}>\n      <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\"><DropdownMenuPrimitive.ItemIndicator><Check aria-hidden=\"true\" className=\"h-4 w-4\" /></DropdownMenuPrimitive.ItemIndicator></span>{children}\n    </DropdownMenuPrimitive.CheckboxItem>\n  ),\n);\nDropdownMenuCheckboxItem.displayName = 'DropdownMenuCheckboxItem';\nexport const DropdownMenuRadioItem = React.forwardRef<React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>, React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>>(\n  ({ className, children, ...props }, ref) => (\n    <DropdownMenuPrimitive.RadioItem ref={ref} className={cn(menuItemClassName, 'pl-8', className)} {...props}>\n      <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\"><DropdownMenuPrimitive.ItemIndicator><Circle aria-hidden=\"true\" className=\"h-2 w-2 fill-current\" /></DropdownMenuPrimitive.ItemIndicator></span>{children}\n    </DropdownMenuPrimitive.RadioItem>\n  ),\n);\nDropdownMenuRadioItem.displayName = 'DropdownMenuRadioItem';\nexport const DropdownMenuLabel = React.forwardRef<React.ElementRef<typeof DropdownMenuPrimitive.Label>, React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & { inset?: boolean }>(\n  ({ className, inset, ...props }, ref) => <DropdownMenuPrimitive.Label ref={ref} className={cn('px-2 py-1.5 text-sm font-semibold', inset && 'pl-8', className)} {...props} />,\n);\nDropdownMenuLabel.displayName = 'DropdownMenuLabel';\nexport const DropdownMenuSeparator = React.forwardRef<React.ElementRef<typeof DropdownMenuPrimitive.Separator>, React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>>(\n  ({ className, ...props }, ref) => <DropdownMenuPrimitive.Separator ref={ref} className={cn('-mx-1 my-1 h-px bg-muted', className)} {...props} />,\n);\nDropdownMenuSeparator.displayName = 'DropdownMenuSeparator';\nexport const DropdownMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => <span className={cn('ml-auto text-xs tracking-widest opacity-60', className)} {...props} />;\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut';\n\nexport const Select = SelectPrimitive.Root;\nexport const SelectGroup = SelectPrimitive.Group;\nexport const SelectValue = SelectPrimitive.Value;\nexport interface SelectTriggerProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> {\n  iconClassName?: string;\n  size?: 'default' | 'sm';\n}\nexport const SelectTrigger = React.forwardRef<React.ElementRef<typeof SelectPrimitive.Trigger>, SelectTriggerProps>(\n  ({ className, children, iconClassName, size = 'default', ...props }, ref) => (\n    <SelectPrimitive.Trigger ref={ref} className={cn('flex h-10 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-control-surface px-3 py-2 text-left text-sm text-foreground shadow-sm ring-offset-control-surface data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 [&>span]:min-w-0 [&>span]:flex-1 [&>span]:text-left', size === 'sm' && 'h-8 px-2 py-1 text-xs', className)} {...props}>\n      {children}<SelectPrimitive.Icon asChild><ChevronDown aria-hidden=\"true\" className={cn('h-4 w-4 opacity-50', iconClassName)} /></SelectPrimitive.Icon>\n    </SelectPrimitive.Trigger>\n  ),\n);\nSelectTrigger.displayName = 'SelectTrigger';\nexport const SelectScrollUpButton = React.forwardRef<React.ElementRef<typeof SelectPrimitive.ScrollUpButton>, React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>>(\n  ({ className, ...props }, ref) => <SelectPrimitive.ScrollUpButton ref={ref} className={cn('flex cursor-default items-center justify-center py-1', className)} {...props}><ChevronUp aria-hidden=\"true\" className=\"h-4 w-4\" /></SelectPrimitive.ScrollUpButton>,\n);\nSelectScrollUpButton.displayName = 'SelectScrollUpButton';\nexport const SelectScrollDownButton = React.forwardRef<React.ElementRef<typeof SelectPrimitive.ScrollDownButton>, React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>>(\n  ({ className, ...props }, ref) => <SelectPrimitive.ScrollDownButton ref={ref} className={cn('flex cursor-default items-center justify-center py-1', className)} {...props}><ChevronDown aria-hidden=\"true\" className=\"h-4 w-4\" /></SelectPrimitive.ScrollDownButton>,\n);\nSelectScrollDownButton.displayName = 'SelectScrollDownButton';\nexport interface SelectContentProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content> {\n  viewportClassName?: string;\n  disableTriggerViewportSizing?: boolean;\n}\nexport const SelectContent = React.forwardRef<React.ElementRef<typeof SelectPrimitive.Content>, SelectContentProps>(\n  ({ className, children, position = 'popper', viewportClassName, disableTriggerViewportSizing = false, ...props }, ref) => {\n    const componentAttributes = useMonkeysComponentAttributes();\n    return (\n      <SelectPrimitive.Portal><SelectPrimitive.Content {...componentAttributes} {...props} ref={ref} position={position} data-monkeys-component=\"select\" data-slot=\"content\" data-surface=\"menu\" className={cn(menuContentClassName, 'relative max-h-[var(--radix-select-content-available-height)] overflow-y-auto overflow-x-hidden', position === 'popper' && 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1', className)}>\n        <SelectScrollUpButton /><SelectPrimitive.Viewport className={cn('p-1', position === 'popper' && 'w-full min-w-[var(--radix-select-trigger-width)]', position === 'popper' && !disableTriggerViewportSizing && 'h-[var(--radix-select-trigger-height)]', viewportClassName)}>{children}</SelectPrimitive.Viewport><SelectScrollDownButton />\n      </SelectPrimitive.Content></SelectPrimitive.Portal>\n    );\n  },\n);\nSelectContent.displayName = 'SelectContent';\nexport const SelectLabel = React.forwardRef<React.ElementRef<typeof SelectPrimitive.Label>, React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>>(\n  ({ className, ...props }, ref) => <SelectPrimitive.Label ref={ref} className={cn('px-2 py-1.5 text-sm font-semibold', className)} {...props} />,\n);\nSelectLabel.displayName = 'SelectLabel';\nexport interface SelectItemProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> {\n  indicatorClassName?: string;\n  itemText?: React.ReactNode;\n  hideIndicator?: boolean;\n}\nexport const SelectItem = React.forwardRef<React.ElementRef<typeof SelectPrimitive.Item>, SelectItemProps>(\n  ({ className, children, indicatorClassName, itemText, hideIndicator = false, ...props }, ref) => (\n    <SelectPrimitive.Item ref={ref} className={cn(menuItemClassName, 'w-full', hideIndicator ? 'px-2' : 'pl-8 pr-2', className)} {...props}>\n      {!hideIndicator ? <span className={cn('absolute left-2 flex h-3.5 w-3.5 items-center justify-center', indicatorClassName)}><SelectPrimitive.ItemIndicator><Check aria-hidden=\"true\" className=\"h-4 w-4\" /></SelectPrimitive.ItemIndicator></span> : null}\n      {itemText ? <><SelectPrimitive.ItemText asChild><span className=\"sr-only\">{itemText}</span></SelectPrimitive.ItemText>{children}</> : <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>}\n    </SelectPrimitive.Item>\n  ),\n);\nSelectItem.displayName = 'SelectItem';\nexport const SelectSeparator = React.forwardRef<React.ElementRef<typeof SelectPrimitive.Separator>, React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>>(\n  ({ className, ...props }, ref) => <SelectPrimitive.Separator ref={ref} className={cn('-mx-1 my-1 h-px bg-muted', className)} {...props} />,\n);\nSelectSeparator.displayName = 'SelectSeparator';\n","import * as React from 'react';\n\nimport { cn } from '../base/utils';\n\nexport const MEDIA_PREVIEW_ASPECT_RATIOS = ['1:1', '4:3', '3:4', '16:9', '9:16'] as const;\n\nexport type MediaPreviewRatio = (typeof MEDIA_PREVIEW_ASPECT_RATIOS)[number];\nexport type MediaPreviewAspectRatio = 'square' | 'video' | 'auto' | MediaPreviewRatio;\nexport type MediaPreviewFit = 'contain' | 'cover';\n\nexport const resolveMediaPreviewAspectRatioValue = (aspectRatio: MediaPreviewRatio = '1:1'): number => {\n  const [width, height] = aspectRatio.split(':').map(Number);\n  return width / height;\n};\n\nexport const mediaPreviewFrameClassName = ({\n  aspectRatio = 'square',\n  maxSquareHeight = true,\n  className,\n}: {\n  aspectRatio?: MediaPreviewAspectRatio;\n  maxSquareHeight?: boolean;\n  className?: string;\n} = {}) => cn(\n  'w-full overflow-hidden bg-muted',\n  (aspectRatio === 'square' || aspectRatio === '1:1') && 'aspect-square',\n  (aspectRatio === 'square' || aspectRatio === '1:1') && maxSquareHeight && 'max-h-[300px]',\n  aspectRatio === '4:3' && 'aspect-[4/3]',\n  aspectRatio === '3:4' && 'aspect-[3/4]',\n  (aspectRatio === 'video' || aspectRatio === '16:9') && 'aspect-video',\n  aspectRatio === '9:16' && 'aspect-[9/16]',\n  className,\n);\n\nexport interface MediaPreviewFrameProps extends React.HTMLAttributes<HTMLDivElement> {\n  aspectRatio?: MediaPreviewAspectRatio;\n  maxSquareHeight?: boolean;\n}\n\nexport const MediaPreviewFrame = React.forwardRef<HTMLDivElement, MediaPreviewFrameProps>(\n  ({ aspectRatio = 'square', maxSquareHeight = true, className, ...props }, ref) => (\n    <div ref={ref} className={mediaPreviewFrameClassName({ aspectRatio, maxSquareHeight, className })} {...props} />\n  ),\n);\nMediaPreviewFrame.displayName = 'MediaPreviewFrame';\n\nexport interface MediaPreviewImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n  fit?: MediaPreviewFit;\n}\n\nexport const MediaPreviewImage = React.forwardRef<HTMLImageElement, MediaPreviewImageProps>(\n  ({ fit = 'contain', className, ...props }, ref) => (\n    <img\n      ref={ref}\n      className={cn('block size-full', fit === 'contain' ? 'object-contain' : 'object-cover', className)}\n      {...props}\n    />\n  ),\n);\nMediaPreviewImage.displayName = 'MediaPreviewImage';\n","import * as DialogPrimitive from '@radix-ui/react-dialog';\nimport * as React from 'react';\n\nimport { useMonkeysComponentAttributes } from '../../provider/context';\nimport { cn } from '../base/utils';\nimport { getOverlaySurfaceClassName } from './internal/overlaySurface';\n\nexport const Sheet = DialogPrimitive.Root;\nexport const SheetTrigger = DialogPrimitive.Trigger;\nexport const SheetClose = DialogPrimitive.Close;\nexport const SheetPortal = DialogPrimitive.Portal;\n\nexport const SheetOverlay = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => {\n  const componentAttributes = useMonkeysComponentAttributes();\n  return (\n    <DialogPrimitive.Overlay\n      {...componentAttributes}\n      {...props}\n      ref={ref}\n      data-monkeys-component=\"sheet\"\n      data-slot=\"overlay\"\n      data-monkeys-overlay\n      className={cn(\n        'theme-overlay-backdrop fixed inset-0 z-50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n        className,\n      )}\n    />\n  );\n});\nSheetOverlay.displayName = 'SheetOverlay';\n\nexport type SheetSide = 'top' | 'right' | 'bottom' | 'left';\nexport interface SheetContentProps\n  extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n  side?: SheetSide;\n}\n\nconst sideClassNames: Record<SheetSide, string> = {\n  top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',\n  right: 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',\n  bottom: 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n  left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',\n};\n\nexport const SheetContent = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Content>,\n  SheetContentProps\n>(({ side = 'right', className, children, ...props }, ref) => {\n  const componentAttributes = useMonkeysComponentAttributes();\n  return (\n    <SheetPortal>\n      <SheetOverlay />\n      <DialogPrimitive.Content\n        {...componentAttributes}\n        {...props}\n        ref={ref}\n        data-monkeys-component=\"sheet\"\n        data-slot=\"content\"\n        data-surface=\"dialog\"\n        data-monkeys-dialog-content\n        className={cn(\n          'fixed z-50 gap-4 p-6 transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out',\n          getOverlaySurfaceClassName('dialog', { rounded: false }),\n          sideClassNames[side],\n          className,\n        )}\n      >\n        <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-dialog-surface transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n          <svg aria-hidden=\"true\" className=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n            <path d=\"M18 6 6 18M6 6l12 12\" />\n          </svg>\n          <span className=\"sr-only\">Close</span>\n        </DialogPrimitive.Close>\n        {children}\n      </DialogPrimitive.Content>\n    </SheetPortal>\n  );\n});\nSheetContent.displayName = 'SheetContent';\n\nexport const SheetHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n  <div className={cn('flex flex-col space-y-2 text-center sm:text-left', className)} {...props} />\n);\nexport const SheetFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n  <div className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)} {...props} />\n);\n\nexport const SheetTitle = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Title ref={ref} className={cn('text-lg font-semibold text-foreground', className)} {...props} />\n));\nSheetTitle.displayName = 'SheetTitle';\n\nexport const SheetDescription = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Description ref={ref} className={cn('text-sm text-muted-foreground', className)} {...props} />\n));\nSheetDescription.displayName = 'SheetDescription';\n","import { forwardRef, useCallback, useRef, type HTMLAttributes } from 'react';\n\nimport { SkeletonScope, useSkeletonRef, type SkeletonGroupAnimation } from '../skeleton/motion';\n\nexport interface SkeletonGroupProps extends HTMLAttributes<HTMLDivElement> {\n  animation?: SkeletonGroupAnimation;\n  animated?: boolean;\n}\n\nexport const SkeletonGroup = forwardRef<HTMLDivElement, SkeletonGroupProps>(function SkeletonGroup(\n  { animation, animated, children, ...props },\n  ref,\n) {\n  const containerRef = useRef<HTMLDivElement | null>(null);\n  const receive = useCallback((element: HTMLDivElement | null) => {\n    containerRef.current = element;\n  }, []);\n  const mergedRef = useSkeletonRef(receive, ref);\n  return (\n    <SkeletonScope\n      animation={animation}\n      animated={animated}\n      independent\n      containerRef={containerRef}\n    >\n      <div {...props} ref={mergedRef}>\n        {children}\n      </div>\n    </SkeletonScope>\n  );\n});\n\nexport type { SkeletonAnimation, SkeletonGroupAnimation } from '../skeleton/motion';\n","import type {\n  AgentWorkbenchQuickStartCategory,\n  AgentWorkbenchQuickStartIcon,\n  AgentWorkbenchQuickStartTemplate,\n  AgentWorkbenchQuickStartViewModel,\n} from '@inf-monkeys-tech/monkeys';\nimport { ArrowLeft, ArrowUpRight, Code2, FileText, Palette, Search, ShoppingBag, Sparkles, Upload, type LucideIcon } from 'lucide-react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useMonkeysLocaleMessages } from '../../provider';\nimport { cn } from '../layout';\n\nexport type {\n  AgentWorkbenchQuickStartCategory,\n  AgentWorkbenchQuickStartIcon,\n  AgentWorkbenchQuickStartSection,\n  AgentWorkbenchQuickStartTemplate,\n  AgentWorkbenchQuickStartViewModel,\n} from '@inf-monkeys-tech/monkeys';\n\nexport type AgentWorkbenchQuickStartIntent =\n  | { type: 'change-category'; categoryId?: string }\n  | { type: 'change-section'; categoryId: string; sectionId: string }\n  | {\n      type: 'select-template';\n      templateId: string;\n      prompt: string;\n      files?: File[];\n    };\n\nexport interface AgentWorkbenchQuickStartProps {\n  viewModel: AgentWorkbenchQuickStartViewModel;\n  className?: string;\n  onIntent?: (intent: AgentWorkbenchQuickStartIntent) => void;\n}\n\nconst ICONS: Record<AgentWorkbenchQuickStartIcon, LucideIcon> = {\n  sparkles: Sparkles,\n  palette: Palette,\n  search: Search,\n  'file-text': FileText,\n  code: Code2,\n  'shopping-bag': ShoppingBag,\n};\n\nfunction TemplateVisual({ template }: { template: AgentWorkbenchQuickStartTemplate }) {\n  const Icon = ICONS[template.icon || 'sparkles'];\n\n  if (template.coverImageUrl) {\n    return <img src={template.coverImageUrl} alt=\"\" className=\"size-full bg-muted object-contain\" />;\n  }\n\n  return (\n    <span className=\"flex size-full items-center justify-center bg-gradient-to-br from-primary/5 via-muted/50 to-primary/15\">\n      <span className=\"flex size-14 items-center justify-center rounded-2xl border border-primary/10 bg-background/85 text-primary shadow-sm\">\n        <Icon className=\"size-7\" aria-hidden=\"true\" />\n      </span>\n    </span>\n  );\n}\n\nexport function AgentWorkbenchQuickStart({ viewModel, className, onIntent }: AgentWorkbenchQuickStartProps) {\n  const messages = useMonkeysLocaleMessages().agentWorkbench.quickStart;\n  const fileInputRef = useRef<HTMLInputElement>(null);\n  const [activeCategoryId, setActiveCategoryId] = useState<string>();\n  const [activeSectionId, setActiveSectionId] = useState<string>();\n  const [pendingTemplate, setPendingTemplate] = useState<AgentWorkbenchQuickStartTemplate>();\n  const categories = useMemo(\n    () =>\n      viewModel.categories\n        .map((category) => ({\n          ...category,\n          sections: category.sections\n            .map((section) => ({\n              ...section,\n              templates: section.templates.filter((template) => !template.modes || template.modes.includes(viewModel.mode)),\n            }))\n            .filter((section) => section.templates.length > 0),\n        }))\n        .filter((category) => category.sections.length > 0),\n    [viewModel.categories, viewModel.mode],\n  );\n  const activeCategory = categories.find((category) => category.id === activeCategoryId);\n  const activeSection = activeCategory?.sections.find((section) => section.id === activeSectionId) || activeCategory?.sections[0];\n  const usesCompactList = activeSection?.templates.length\n    ? activeSection.templates.every((template) => !template.coverImageUrl)\n    : false;\n\n  useEffect(() => {\n    if (activeCategoryId && !categories.some((category) => category.id === activeCategoryId)) {\n      setActiveCategoryId(undefined);\n      setActiveSectionId(undefined);\n    }\n  }, [activeCategoryId, categories]);\n\n  if (categories.length === 0) return null;\n\n  const selectCategory = (category: AgentWorkbenchQuickStartCategory) => {\n    setActiveCategoryId(category.id);\n    setActiveSectionId(category.sections[0]?.id);\n    onIntent?.({ type: 'change-category', categoryId: category.id });\n  };\n\n  const selectSection = (sectionId: string) => {\n    if (!activeCategory) return;\n    setActiveSectionId(sectionId);\n    onIntent?.({\n      type: 'change-section',\n      categoryId: activeCategory.id,\n      sectionId,\n    });\n  };\n\n  const selectTemplate = (template: AgentWorkbenchQuickStartTemplate) => {\n    if (viewModel.disabled) return;\n    if (template.action !== 'upload') {\n      onIntent?.({\n        type: 'select-template',\n        templateId: template.id,\n        prompt: template.prompt,\n      });\n      return;\n    }\n\n    const input = fileInputRef.current;\n    if (!input) return;\n    input.accept = template.accept || '*/*';\n    input.multiple = template.multiple === true;\n    setPendingTemplate(template);\n    input.click();\n  };\n\n  return (\n    <section className={cn('agent-workbench-quick-start min-w-0 max-w-full', className)} aria-label={messages.label}>\n      <input\n        ref={fileInputRef}\n        type=\"file\"\n        className=\"hidden\"\n        onChange={(event) => {\n          const files = Array.from(event.target.files || []);\n          if (pendingTemplate && files.length > 0) {\n            onIntent?.({\n              type: 'select-template',\n              templateId: pendingTemplate.id,\n              prompt: pendingTemplate.prompt,\n              files: pendingTemplate.multiple ? files : files.slice(0, 1),\n            });\n          }\n          setPendingTemplate(undefined);\n          event.target.value = '';\n        }}\n      />\n\n      {!activeCategory ? (\n        <div className=\"flex max-w-full items-center justify-center gap-2 overflow-x-auto px-1 pb-1\">\n          {categories.map((category) => {\n            const Icon = ICONS[category.icon || 'sparkles'];\n            return (\n              <button key={category.id} type=\"button\" className=\"inline-flex h-10 shrink-0 items-center gap-2 rounded-full border border-border bg-background px-4 text-sm font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\" onClick={() => selectCategory(category)}>\n                <Icon className=\"size-4 text-muted-foreground\" aria-hidden=\"true\" />\n                {category.label}\n              </button>\n            );\n          })}\n        </div>\n      ) : (\n        <div className=\"space-y-3\">\n          <div className=\"flex min-w-0 max-w-full items-center gap-1 overflow-x-auto pb-1\">\n            <button\n              type=\"button\"\n              className=\"inline-flex h-9 shrink-0 items-center gap-1.5 rounded-full px-3 text-sm font-medium text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n              onClick={() => {\n                setActiveCategoryId(undefined);\n                setActiveSectionId(undefined);\n                onIntent?.({ type: 'change-category' });\n              }}\n            >\n              <ArrowLeft className=\"size-4\" aria-hidden=\"true\" />\n              {messages.back}\n            </button>\n            {activeCategory.sections.map((section) => (\n              <button key={section.id} type=\"button\" aria-pressed={activeSection?.id === section.id} className={cn('h-9 shrink-0 rounded-full px-4 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', activeSection?.id === section.id ? 'bg-muted text-foreground' : 'text-muted-foreground hover:bg-muted/70 hover:text-foreground')} onClick={() => selectSection(section.id)}>\n                {section.label}\n              </button>\n            ))}\n          </div>\n\n          <div\n            data-quick-start-layout={usesCompactList ? 'list' : 'cards'}\n            className={cn(\n              'grid',\n              usesCompactList ? 'grid-cols-1 gap-0' : 'grid-cols-[repeat(auto-fit,minmax(min(100%,14rem),1fr))] gap-3',\n            )}\n          >\n            {activeSection?.templates.map((template) => (\n              <button\n                key={template.id}\n                type=\"button\"\n                disabled={viewModel.disabled}\n                data-quick-start-template-id={template.id}\n                className={cn(\n                  'group min-w-0 overflow-hidden text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n                  usesCompactList\n                    ? 'flex min-h-14 items-center rounded-none border-x-0 border-t-0 bg-transparent shadow-none hover:border-border hover:bg-muted/40 last:border-b-0'\n                    : 'rounded-xl border border-border bg-background hover:border-primary/30 hover:bg-muted/20',\n                )}\n                onClick={() => selectTemplate(template)}\n              >\n                <span className={cn(usesCompactList ? 'min-w-0 flex-1 px-2 py-2.5' : 'block px-4 pb-3 pt-4')}>\n                  <span className={cn('flex items-center gap-2 text-sm text-foreground', usesCompactList ? 'font-medium' : 'font-semibold')}>\n                    {template.title}\n                    {template.action === 'upload' ? (\n                      <span className=\"ml-auto inline-flex items-center gap-1 text-[11px] font-medium text-muted-foreground\">\n                        <Upload className=\"size-3\" aria-hidden=\"true\" />\n                        {messages.addFile}\n                      </span>\n                    ) : null}\n                  </span>\n                  {template.description ? (\n                    <span\n                      className={cn(\n                        'line-clamp-2 block text-xs leading-4 text-muted-foreground',\n                        usesCompactList ? 'mt-0.5 min-h-0 text-muted-foreground/75' : 'mt-1 min-h-8',\n                      )}\n                    >\n                      {template.description}\n                    </span>\n                  ) : null}\n                </span>\n                {usesCompactList ? (\n                  <ArrowUpRight className=\"mr-2 size-4 shrink-0 text-muted-foreground/45\" aria-hidden=\"true\" />\n                ) : (\n                  <span className={cn('block overflow-hidden', template.coverImageUrl ? 'aspect-[5/2]' : 'h-28')}>\n                    <TemplateVisual template={template} />\n                  </span>\n                )}\n              </button>\n            ))}\n          </div>\n        </div>\n      )}\n    </section>\n  );\n}\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\n\nimport { cn } from \"../layout\";\nimport {\n  type AgentWorkbenchAppearanceOptions,\n  useAgentWorkbenchAppearance,\n} from \"./appearance\";\n\nexport interface AgentWorkbenchSidebarContainerClassNames {\n  root?: string;\n  header?: string;\n  search?: string;\n  primaryAction?: string;\n  actions?: string;\n  body?: string;\n  groups?: string;\n  footer?: string;\n}\n\nexport interface AgentWorkbenchSidebarContainerBodyProps\n  extends Omit<HTMLAttributes<HTMLDivElement>, \"children\" | \"className\"> {\n  \"data-agent-workbench-session-scroll-region\"?: boolean | \"\";\n}\n\nexport interface AgentWorkbenchSidebarContainerProps\n  extends Omit<HTMLAttributes<HTMLElement>, \"children\" | \"className\">,\n    AgentWorkbenchAppearanceOptions {\n  children?: ReactNode;\n  header?: ReactNode;\n  search?: ReactNode;\n  primaryAction?: ReactNode;\n  actions?: ReactNode;\n  groups?: ReactNode;\n  footer?: ReactNode;\n  className?: string;\n  classNames?: AgentWorkbenchSidebarContainerClassNames;\n  bodyProps?: AgentWorkbenchSidebarContainerBodyProps;\n  bodyScrollable?: boolean;\n  status?: \"ready\" | \"loading\" | \"empty\" | \"error\";\n  loadingState?: ReactNode;\n  emptyState?: ReactNode;\n  errorState?: ReactNode;\n}\n\n/** Shared structural shell for agent navigation variants. Product data stays in the slots. */\nexport const AgentWorkbenchSidebarContainer = forwardRef<\n  HTMLElement,\n  AgentWorkbenchSidebarContainerProps\n>(function AgentWorkbenchSidebarContainer(\n  {\n    children,\n    header,\n    search,\n    primaryAction,\n    actions,\n    groups,\n    footer,\n    className,\n    classNames,\n    bodyProps,\n    bodyScrollable = true,\n    status = \"ready\",\n    variant,\n    density,\n    loadingState,\n    emptyState,\n    errorState,\n    ...props\n  },\n  ref,\n) {\n  const appearance = useAgentWorkbenchAppearance({ variant, density });\n  const compact = appearance.density === \"compact\";\n  const hasToolbar =\n    search !== undefined ||\n    primaryAction !== undefined ||\n    actions !== undefined;\n  const statusContent =\n    status === \"loading\"\n      ? loadingState\n      : status === \"empty\"\n        ? emptyState\n        : status === \"error\"\n          ? errorState\n          : children;\n  return (\n    <nav\n      ref={ref}\n      data-agent-workbench-variant={appearance.variant}\n      data-agent-workbench-density={appearance.density}\n      data-agent-workbench-status={status}\n      className={cn(\n        \"flex h-full min-h-0 flex-col bg-card text-card-foreground\",\n        classNames?.root,\n        className,\n      )}\n      {...props}\n    >\n      {header !== undefined ? (\n        <div className={cn(\"shrink-0\", classNames?.header)}>{header}</div>\n      ) : null}\n      {hasToolbar ? (\n        <div\n          className={cn(\n            \"shrink-0\",\n            compact ? \"space-y-2 px-3 pb-2 pt-3\" : \"space-y-3 px-4 pb-2 pt-4\",\n            classNames?.search,\n          )}\n        >\n          {search}\n          {primaryAction !== undefined ? (\n            <div className={cn(classNames?.primaryAction)}>{primaryAction}</div>\n          ) : null}\n          {actions !== undefined ? (\n            <div\n              className={cn(\n                \"flex min-w-0 items-center gap-2\",\n                classNames?.actions,\n              )}\n            >\n              {actions}\n            </div>\n          ) : null}\n        </div>\n      ) : null}\n      <div\n        data-agent-workbench-scroll-region={bodyScrollable ? \"\" : undefined}\n        {...bodyProps}\n        tabIndex={bodyProps?.tabIndex ?? (bodyScrollable ? 0 : undefined)}\n        className={cn(\n          \"min-h-0 flex-1\",\n          compact ? \"px-3 pb-3\" : \"px-4 pb-4\",\n          bodyScrollable &&\n            \"overflow-x-hidden overflow-y-auto overscroll-contain\",\n          classNames?.body,\n        )}\n      >\n        {statusContent}\n      </div>\n      {groups !== undefined ? (\n        <div className={cn(\"shrink-0\", classNames?.groups)}>{groups}</div>\n      ) : null}\n      {footer !== undefined ? (\n        <div className={cn(\"shrink-0\", classNames?.footer)}>{footer}</div>\n      ) : null}\n    </nav>\n  );\n});\n\nAgentWorkbenchSidebarContainer.displayName = \"AgentWorkbenchSidebarContainer\";\n","import type {\n  AgentWorkbenchCollectionStatus,\n  AgentWorkbenchSessionItem,\n} from \"@inf-monkeys-tech/monkeys\";\nimport {\n  AlertCircle,\n  Bot,\n  CheckCircle2,\n  Ellipsis,\n  Image as ImageIcon,\n  Loader2,\n  MessageSquare,\n  Pencil,\n  Pin,\n  RefreshCw,\n  Search,\n  SquarePen,\n  Trash2,\n  X,\n} from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\n\nimport { useMonkeysLocale, useMonkeysLocaleMessages } from \"../../provider\";\nimport { cn } from \"../layout\";\nimport {\n  Button,\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n  Input,\n  InputGroup,\n  InputGroupAddon,\n  InputGroupButton,\n  InputGroupInput,\n} from \"../primitives\";\nimport type { AgentWorkbenchVariant } from \"./appearance\";\n\nexport interface AgentWorkbenchSidebarSearchProps {\n  value: string;\n  label: string;\n  placeholder?: string;\n  className?: string;\n  variant?: AgentWorkbenchVariant;\n  onChange: (value: string) => void;\n}\n\nexport function AgentWorkbenchSidebarSearch({\n  value,\n  label,\n  placeholder = label,\n  className,\n  variant = \"default\",\n  onChange,\n}: AgentWorkbenchSidebarSearchProps) {\n  const messages = useMonkeysLocaleMessages().agentWorkbench.navigation;\n  const searchRef = useRef<HTMLInputElement>(null);\n\n  useEffect(() => {\n    const handleShortcut = (event: KeyboardEvent) => {\n      if (\n        !(event.ctrlKey || event.metaKey) ||\n        event.key.toLocaleLowerCase() !== \"k\"\n      )\n        return;\n      event.preventDefault();\n      searchRef.current?.focus();\n      searchRef.current?.select();\n    };\n    window.addEventListener(\"keydown\", handleShortcut);\n    return () => window.removeEventListener(\"keydown\", handleShortcut);\n  }, []);\n\n  return (\n    <InputGroup\n      className={cn(\n        variant === \"trend\"\n          ? \"h-12 rounded-[var(--radius)] border-border bg-card text-foreground\"\n          : \"h-10 rounded-lg bg-card\",\n        className,\n      )}\n    >\n      <InputGroupAddon>\n        <Search className=\"size-4\" aria-hidden=\"true\" />\n      </InputGroupAddon>\n      <InputGroupInput\n        ref={searchRef}\n        type=\"search\"\n        value={value}\n        aria-label={label}\n        placeholder={placeholder}\n        className=\"min-w-0 [&::-webkit-search-cancel-button]:hidden\"\n        onChange={(event) => onChange(event.target.value)}\n        onKeyDown={(event) => {\n          if (event.key !== \"Escape\") return;\n          onChange(\"\");\n          event.currentTarget.blur();\n        }}\n      />\n      {value ? (\n        <InputGroupAddon align=\"inline-end\">\n          <InputGroupButton\n            size=\"icon-xs\"\n            aria-label={messages.clearSearch}\n            onClick={() => onChange(\"\")}\n          >\n            <X className=\"size-3.5\" aria-hidden=\"true\" />\n          </InputGroupButton>\n        </InputGroupAddon>\n      ) : (\n        <InputGroupAddon align=\"inline-end\">\n          <kbd className=\"border border-border px-1.5 py-0.5 text-[10px]\">\n            Ctrl K\n          </kbd>\n        </InputGroupAddon>\n      )}\n    </InputGroup>\n  );\n}\n\nexport function AgentWorkbenchSidebarNewSessionButton({\n  label,\n  className,\n  variant = \"default\",\n  onClick,\n}: {\n  label: string;\n  className?: string;\n  variant?: AgentWorkbenchVariant;\n  onClick: () => void;\n}) {\n  return (\n    <Button\n      type=\"button\"\n      variant={variant === \"trend\" ? \"default\" : \"ghost\"}\n      className={cn(\n        variant === \"trend\"\n          ? \"h-11 w-full justify-center gap-2 rounded-[var(--radius)] border border-primary/60 bg-primary px-3 font-semibold text-primary-foreground hover:bg-primary/90\"\n          : \"h-9 w-full justify-start gap-2 px-3 text-sm\",\n        className,\n      )}\n      onClick={onClick}\n    >\n      <SquarePen className=\"size-4\" aria-hidden=\"true\" />\n      {label}\n    </Button>\n  );\n}\n\nfunction SessionAvatar({ item }: { item: AgentWorkbenchSessionItem }) {\n  const [failed, setFailed] = useState(false);\n  if (item.thumbnailUrl && !failed) {\n    return (\n      <img\n        src={item.thumbnailUrl}\n        alt=\"\"\n        className=\"size-full object-cover\"\n        loading=\"lazy\"\n        onError={() => setFailed(true)}\n      />\n    );\n  }\n  return <ImageIcon className=\"size-5\" aria-hidden=\"true\" />;\n}\n\nfunction SessionMeta({ item }: { item: AgentWorkbenchSessionItem }) {\n  const { locale } = useMonkeysLocale();\n  const messages = useMonkeysLocaleMessages().agentWorkbench.navigation;\n  return (\n    <span className=\"flex min-w-0 items-center gap-1.5\">\n      <span className=\"min-w-0 truncate text-xs text-foreground/80\">\n        {new Intl.DateTimeFormat(locale, {\n          dateStyle: \"medium\",\n          timeStyle: \"short\",\n        }).format(new Date(item.updatedAt))}\n      </span>\n      {item.mode ? (\n        <span\n          className={cn(\n            \"shrink-0 rounded-full px-1.5 py-0.5 text-[10px] font-medium leading-none\",\n            item.mode === \"work\"\n              ? \"bg-primary/10 text-primary\"\n              : \"bg-muted text-foreground\",\n          )}\n        >\n          {item.mode === \"work\" ? messages.work : messages.chat}\n        </span>\n      ) : null}\n    </span>\n  );\n}\n\nfunction StatusIndicator({\n  status,\n}: {\n  status: AgentWorkbenchSessionItem[\"status\"];\n}) {\n  const messages = useMonkeysLocaleMessages().agentWorkbench.navigation;\n  if (status === \"running\") {\n    return (\n      <Loader2\n        className=\"size-4 animate-spin text-primary\"\n        aria-label={messages.running}\n      />\n    );\n  }\n  if (status === \"completed\") {\n    return (\n      <CheckCircle2\n        className=\"size-4 text-primary\"\n        aria-label={messages.completed}\n      />\n    );\n  }\n  if (status === \"error\") {\n    return (\n      <AlertCircle\n        className=\"size-4 text-destructive-text\"\n        aria-label={messages.failed}\n      />\n    );\n  }\n  return null;\n}\n\nexport interface AgentWorkbenchSessionListProps {\n  sessions: AgentWorkbenchSessionItem[];\n  selectedSessionId?: string;\n  status?: AgentWorkbenchCollectionStatus;\n  error?: string;\n  query?: string;\n  emptyLabel: string;\n  noResultsLabel: string;\n  retryLabel?: string;\n  groupByMode?: boolean;\n  showHeading?: boolean;\n  variant?: \"default\" | \"trend\";\n  className?: string;\n  itemClassName?: string;\n  capabilities?: {\n    pin?: boolean;\n    rename?: boolean;\n    delete?: boolean;\n  };\n  onSelect: (sessionId: string) => void;\n  onTogglePin?: (sessionId: string, pinned: boolean) => void;\n  onRename?: (sessionId: string, title: string) => void;\n  onDelete?: (sessionId: string) => void;\n  onRetry?: () => void;\n}\n\nexport function AgentWorkbenchSessionList({\n  sessions,\n  selectedSessionId,\n  status = \"ready\",\n  error,\n  query = \"\",\n  emptyLabel,\n  noResultsLabel,\n  retryLabel,\n  groupByMode = false,\n  showHeading = false,\n  variant = \"default\",\n  className,\n  itemClassName,\n  capabilities,\n  onSelect,\n  onTogglePin,\n  onRename,\n  onDelete,\n  onRetry,\n}: AgentWorkbenchSessionListProps) {\n  const messages = useMonkeysLocaleMessages().agentWorkbench.navigation;\n  const renameInputRef = useRef<HTMLInputElement>(null);\n  const [editingSessionId, setEditingSessionId] = useState<string>();\n  const [editingTitle, setEditingTitle] = useState(\"\");\n\n  useEffect(() => {\n    if (!editingSessionId) return;\n    renameInputRef.current?.focus();\n    renameInputRef.current?.select();\n  }, [editingSessionId]);\n\n  const cancelRename = () => {\n    setEditingSessionId(undefined);\n    setEditingTitle(\"\");\n  };\n  const saveRename = (item: AgentWorkbenchSessionItem) => {\n    const title = editingTitle.trim();\n    if (title && title !== item.title) onRename?.(item.id, title);\n    cancelRename();\n  };\n\n  if (status === \"loading\" && sessions.length === 0) {\n    return (\n      <div\n        className=\"space-y-2 px-1 py-3\"\n        role=\"status\"\n        aria-label={messages.loading}\n      >\n        {Array.from({ length: 4 }, (_, index) => (\n          <div\n            key={index}\n            aria-hidden=\"true\"\n            className={cn(\n              \"animate-pulse rounded-[var(--radius)] bg-muted/70\",\n              variant === \"trend\" ? \"h-10\" : \"h-14\",\n            )}\n          />\n        ))}\n      </div>\n    );\n  }\n  if (status === \"error\") {\n    return (\n      <div className=\"flex flex-col items-center gap-3 px-3 py-8 text-center\">\n        <p\n          className=\"max-w-full break-words text-sm text-muted-foreground\"\n          role=\"alert\"\n        >\n          {error}\n        </p>\n        {onRetry ? (\n          <Button\n            type=\"button\"\n            variant=\"ghost\"\n            size=\"sm\"\n            className=\"gap-1.5 px-0 text-sm text-primary hover:text-primary\"\n            onClick={onRetry}\n          >\n            <RefreshCw className=\"size-3.5\" aria-hidden=\"true\" />\n            {retryLabel ?? messages.retry}\n          </Button>\n        ) : null}\n      </div>\n    );\n  }\n  if (sessions.length === 0) {\n    return (\n      <div className=\"px-3 py-8 text-center text-sm text-muted-foreground\">\n        {query ? noResultsLabel : emptyLabel}\n      </div>\n    );\n  }\n\n  const renderTrendItems = (items: AgentWorkbenchSessionItem[]) => (\n    <div className=\"space-y-3\">\n      {items.map((item) => (\n        <div\n          key={item.id}\n          aria-current={item.id === selectedSessionId ? \"page\" : undefined}\n          data-agent-session-status={item.status ?? \"idle\"}\n          aria-busy={item.status === \"running\" ? \"true\" : undefined}\n          className=\"group flex h-10 w-full min-w-0 items-center rounded-[var(--radius)] border border-transparent bg-muted/60 text-foreground transition hover:bg-muted focus-within:border-ring focus-within:ring-2 focus-within:ring-ring aria-[current=page]:border-primary aria-[current=page]:bg-primary/10\"\n        >\n          <button\n            type=\"button\"\n            title={item.title}\n            className=\"h-full min-w-0 flex-1 truncate px-3 text-left text-sm font-semibold\"\n            onClick={() => onSelect(item.id)}\n          >\n            {item.title}\n          </button>\n          {capabilities?.delete ? (\n            <span\n              data-agent-workbench-item-actions\n              className=\"mr-1 shrink-0 opacity-0 transition-opacity group-aria-[current=page]:opacity-100 group-focus-within:opacity-100 group-hover:opacity-100\"\n              onClick={(event) => event.stopPropagation()}\n              onKeyDown={(event) => event.stopPropagation()}\n            >\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <Button\n                    type=\"button\"\n                    variant=\"ghost\"\n                    size=\"icon\"\n                    aria-label={messages.actions}\n                    className=\"size-8 text-muted-foreground\"\n                  >\n                    <Ellipsis className=\"size-4\" aria-hidden=\"true\" />\n                  </Button>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent align=\"end\">\n                  <DropdownMenuItem\n                    className=\"text-destructive-text\"\n                    onSelect={() => onDelete?.(item.id)}\n                  >\n                    <Trash2 className=\"mr-2 size-4\" aria-hidden=\"true\" />\n                    {messages.delete}\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            </span>\n          ) : null}\n        </div>\n      ))}\n    </div>\n  );\n\n  const renderItems = (items: AgentWorkbenchSessionItem[]) => (\n    <div className=\"space-y-1\">\n      {items.map((item) => {\n        const percent =\n          item.contextUsage && item.contextUsage.maxTokens > 0\n            ? Math.min(\n                100,\n                Math.round(\n                  (item.contextUsage.usedTokens / item.contextUsage.maxTokens) *\n                    100,\n                ),\n              )\n            : undefined;\n        return (\n          <div\n            key={item.id}\n            aria-current={item.id === selectedSessionId ? \"page\" : undefined}\n            className={cn(\n              \"group flex w-full min-w-0 items-center gap-3 rounded-lg border border-transparent px-3 py-2 text-left hover:bg-muted aria-[current=page]:border-primary aria-[current=page]:bg-muted\",\n              itemClassName,\n            )}\n          >\n            {editingSessionId === item.id ? (\n              <div className=\"flex min-w-0 flex-1 items-center gap-3\">\n                <span className=\"flex size-10 shrink-0 items-center justify-center overflow-hidden rounded-lg bg-muted\">\n                  <SessionAvatar item={item} />\n                </span>\n                <span className=\"min-w-0 flex-1\">\n                  <Input\n                    ref={renameInputRef}\n                    value={editingTitle}\n                    aria-label={messages.rename}\n                    appearance=\"compact\"\n                    className=\"h-6 w-full border-primary px-1.5 text-sm font-medium\"\n                    onChange={(event) => setEditingTitle(event.target.value)}\n                    onClick={(event) => event.stopPropagation()}\n                    onBlur={() => saveRename(item)}\n                    onKeyDown={(event) => {\n                      event.stopPropagation();\n                      if (event.key === \"Enter\") {\n                        event.preventDefault();\n                        saveRename(item);\n                      } else if (event.key === \"Escape\") {\n                        event.preventDefault();\n                        cancelRename();\n                      }\n                    }}\n                  />\n                  <SessionMeta item={item} />\n                </span>\n              </div>\n            ) : (\n              <button\n                type=\"button\"\n                title={item.title}\n                className=\"flex min-w-0 flex-1 items-center gap-3 text-left\"\n                onClick={() => onSelect(item.id)}\n              >\n                <span className=\"flex size-10 shrink-0 items-center justify-center overflow-hidden rounded-lg bg-muted\">\n                  <SessionAvatar item={item} />\n                </span>\n                <span className=\"min-w-0 flex-1\">\n                  <span className=\"block truncate text-sm font-medium\">\n                    {item.title}\n                  </span>\n                  <SessionMeta item={item} />\n                </span>\n              </button>\n            )}\n            <span\n              data-agent-workbench-item-actions\n              className=\"flex shrink-0 items-center gap-1\"\n            >\n              {percent !== undefined && item.status === \"idle\" ? (\n                <span\n                  className=\"text-xs text-foreground\"\n                  aria-label={messages.contextUsage({ percent })}\n                >\n                  {percent}%\n                </span>\n              ) : (\n                <StatusIndicator status={item.status} />\n              )}\n              {capabilities?.pin ? (\n                <Button\n                  type=\"button\"\n                  variant=\"ghost\"\n                  size=\"icon\"\n                  aria-label={item.pinned ? messages.unpin : messages.pin}\n                  className={cn(\n                    \"size-8 text-muted-foreground opacity-0 group-hover:opacity-100\",\n                    item.pinned && \"text-primary opacity-100\",\n                  )}\n                  onClick={(event) => {\n                    event.stopPropagation();\n                    onTogglePin?.(item.id, !item.pinned);\n                  }}\n                >\n                  <Pin\n                    className={cn(\"size-4\", item.pinned && \"fill-current\")}\n                  />\n                </Button>\n              ) : null}\n              {capabilities?.rename || capabilities?.delete ? (\n                <span\n                  onClick={(event) => event.stopPropagation()}\n                  onKeyDown={(event) => event.stopPropagation()}\n                >\n                  <DropdownMenu>\n                    <DropdownMenuTrigger asChild>\n                      <Button\n                        type=\"button\"\n                        variant=\"ghost\"\n                        size=\"icon\"\n                        className=\"size-8\"\n                        aria-label={messages.actions}\n                      >\n                        <Ellipsis className=\"size-4\" aria-hidden=\"true\" />\n                      </Button>\n                    </DropdownMenuTrigger>\n                    <DropdownMenuContent align=\"end\">\n                      {capabilities.rename ? (\n                        <DropdownMenuItem\n                          onSelect={() => {\n                            setEditingSessionId(item.id);\n                            setEditingTitle(item.title);\n                          }}\n                        >\n                          <Pencil className=\"mr-2 size-4\" aria-hidden=\"true\" />\n                          {messages.rename}\n                        </DropdownMenuItem>\n                      ) : null}\n                      {capabilities.delete ? (\n                        <DropdownMenuItem\n                          className=\"text-destructive-text\"\n                          onSelect={() => onDelete?.(item.id)}\n                        >\n                          <Trash2 className=\"mr-2 size-4\" aria-hidden=\"true\" />\n                          {messages.delete}\n                        </DropdownMenuItem>\n                      ) : null}\n                    </DropdownMenuContent>\n                  </DropdownMenu>\n                </span>\n              ) : null}\n            </span>\n          </div>\n        );\n      })}\n    </div>\n  );\n\n  return (\n    <div className={cn(\"space-y-2\", className)}>\n      {showHeading && !groupByMode ? (\n        <h3 className=\"mb-2 px-3 text-xs font-medium text-muted-foreground\">\n          {messages.recentSessions}\n        </h3>\n      ) : null}\n      {variant === \"trend\"\n        ? renderTrendItems(sessions)\n        : groupByMode\n          ? [\n              {\n                id: \"chatbot\",\n                label: messages.chats,\n                icon: MessageSquare,\n                items: sessions.filter((item) => item.mode !== \"work\"),\n              },\n              {\n                id: \"agent\",\n                label: messages.agents,\n                icon: Bot,\n                items: sessions.filter((item) => item.mode === \"work\"),\n              },\n            ].map(({ id, label, icon: Icon, items }) => (\n              <details key={id} open aria-label={label}>\n                <summary className=\"flex h-9 cursor-pointer list-none items-center gap-2 rounded-md px-3 text-sm font-semibold hover:bg-muted\">\n                  <Icon\n                    className=\"size-4 shrink-0 text-muted-foreground\"\n                    aria-hidden=\"true\"\n                  />\n                  <span className=\"min-w-0 truncate\">{label}</span>\n                </summary>\n                {renderItems(items)}\n              </details>\n            ))\n          : renderItems(sessions)}\n    </div>\n  );\n}\n","import {\n  resolveAgentWorkbenchSidebarConfig,\n  type AgentWorkbenchSidebarConfig,\n  type AgentWorkbenchAgentItem,\n  type AgentWorkbenchNavigationViewModel,\n} from '@inf-monkeys-tech/monkeys';\nimport { Blocks, Bot, Pin, Plus, RefreshCw, Settings } from 'lucide-react';\nimport { type ReactNode, useMemo, useState } from 'react';\n\nimport { useMonkeysLocaleMessages } from '../../provider';\nimport { cn } from '../layout';\nimport { AgentWorkbenchSidebarContainer } from './AgentWorkbenchSidebarContainer';\nimport {\n  Button,\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from '../primitives';\nimport {\n  AgentWorkbenchSessionList,\n  AgentWorkbenchSidebarNewSessionButton,\n  AgentWorkbenchSidebarSearch,\n} from './AgentWorkbenchSidebarNavigation';\n\nexport type AgentWorkbenchSidebarIntent =\n  | { type: 'change-tab'; tab: 'agents' | 'sessions' }\n  | { type: 'change-search'; query: string }\n  | { type: 'create-agent' }\n  | { type: 'create-session' }\n  | { type: 'select-agent'; itemId: string }\n  | { type: 'select-session'; sessionId: string }\n  | { type: 'toggle-agent-pin'; itemId: string; pinned: boolean }\n  | { type: 'toggle-session-pin'; sessionId: string; pinned: boolean }\n  | { type: 'rename-session'; sessionId: string; title: string }\n  | { type: 'delete-session'; sessionId: string }\n  | { type: 'retry-agents' }\n  | { type: 'retry-sessions' }\n  | { type: 'open-capabilities' }\n  | { type: 'open-agent-settings' };\n\nexport interface AgentWorkbenchSidebarClassNames {\n  root?: string;\n  search?: string;\n  tabs?: string;\n  body?: string;\n  item?: string;\n  footer?: string;\n}\n\nexport interface AgentWorkbenchSidebarProps {\n  viewModel: AgentWorkbenchNavigationViewModel;\n  navigationMode?: 'agents-and-sessions' | 'sessions-only';\n  config?: AgentWorkbenchSidebarConfig;\n  header?: ReactNode;\n  headerActions?: ReactNode;\n  footer?: ReactNode;\n  className?: string;\n  classNames?: AgentWorkbenchSidebarClassNames;\n  onIntent?: (intent: AgentWorkbenchSidebarIntent) => void;\n}\n\nfunction ItemAvatar({ item }: { item: AgentWorkbenchAgentItem }) {\n  const [failed, setFailed] = useState(false);\n  if (item.iconUrl && !failed) {\n    return (\n      <img\n        src={item.iconUrl}\n        alt=\"\"\n        className=\"size-full object-cover\"\n        onError={() => setFailed(true)}\n      />\n    );\n  }\n  const initial = item.name.trim().charAt(0).toLocaleUpperCase();\n  return initial ? (\n    <span className=\"text-sm font-semibold\">{initial}</span>\n  ) : (\n    <Bot className=\"size-4\" />\n  );\n}\n\nfunction CollectionState({\n  status,\n  empty,\n  noResults,\n  hasItems,\n  query,\n  error,\n  onRetry,\n}: {\n  status: 'loading' | 'ready' | 'error';\n  empty: string;\n  noResults: string;\n  hasItems: boolean;\n  query: string;\n  error?: string;\n  onRetry: () => void;\n}) {\n  const messages = useMonkeysLocaleMessages().agentWorkbench.navigation;\n  if (status === 'loading' && !hasItems) {\n    return (\n      <div className=\"px-3 py-8 text-center text-sm text-muted-foreground\">\n        {messages.loading}\n      </div>\n    );\n  }\n  if (status === 'error') {\n    return (\n      <div className=\"flex flex-col items-center gap-3 px-3 py-8 text-center\">\n        <p\n          className=\"max-w-full break-words text-sm text-muted-foreground\"\n          role=\"alert\"\n        >\n          {error}\n        </p>\n        <Button\n          type=\"button\"\n          variant=\"ghost\"\n          size=\"sm\"\n          className=\"gap-1.5 px-0 text-sm text-primary hover:text-primary\"\n          onClick={onRetry}\n        >\n          <RefreshCw className=\"size-3.5\" aria-hidden=\"true\" />\n          {messages.retry}\n        </Button>\n      </div>\n    );\n  }\n  if (!hasItems) {\n    return (\n      <div className=\"px-3 py-8 text-center text-sm text-muted-foreground\">\n        {query ? noResults : empty}\n      </div>\n    );\n  }\n  return null;\n}\n\nexport function AgentWorkbenchSidebar({\n  viewModel,\n  navigationMode,\n  config,\n  header,\n  headerActions,\n  footer,\n  className,\n  classNames,\n  onIntent,\n}: AgentWorkbenchSidebarProps) {\n  const messages = useMonkeysLocaleMessages().agentWorkbench.navigation;\n  const resolvedConfig = useMemo(\n    () => resolveAgentWorkbenchSidebarConfig(config),\n    [config],\n  );\n  const visibleSections = useMemo(\n    () => new Set(resolvedConfig.visibleSections),\n    [resolvedConfig.visibleSections],\n  );\n  const sessionsOnly =\n    navigationMode === 'sessions-only' ||\n    (navigationMode === undefined &&\n      resolvedConfig.navigationMode !== 'default');\n  const showAgents = visibleSections.has('agents') && !sessionsOnly;\n  const showSessions = visibleSections.has('sessions');\n  const query = viewModel.searchQuery.trim().toLocaleLowerCase();\n  const agents = useMemo(\n    () =>\n      viewModel.agents.items.filter(\n        (item) =>\n          !query ||\n          `${item.name} ${item.description ?? ''}`\n            .toLocaleLowerCase()\n            .includes(query),\n      ),\n    [query, viewModel.agents.items],\n  );\n  const sessions = useMemo(\n    () =>\n      viewModel.sessions.items.filter(\n        (item) => !query || item.title.toLocaleLowerCase().includes(query),\n      ),\n    [query, viewModel.sessions.items],\n  );\n  return (\n    <Tabs\n      value={sessionsOnly || !showAgents ? 'sessions' : viewModel.activeTab}\n      onValueChange={(value) => {\n        if (!sessionsOnly && (value === 'agents' || value === 'sessions'))\n          onIntent?.({ type: 'change-tab', tab: value });\n      }}\n      className=\"h-full min-h-0\"\n    >\n      <AgentWorkbenchSidebarContainer\n        data-sidebar-width-percent={resolvedConfig.widthPercent}\n        aria-label={messages.tabsLabel}\n        header={visibleSections.has('header') ? header : undefined}\n        search={\n          visibleSections.has('search') ? (\n            <AgentWorkbenchSidebarSearch\n              value={viewModel.searchQuery}\n              label={sessionsOnly ? messages.searchSessions : messages.search}\n              className={classNames?.search}\n              onChange={(query) => onIntent?.({ type: 'change-search', query })}\n            />\n          ) : undefined\n        }\n        actions={\n          (showAgents && showSessions) || headerActions ? (\n            <>\n              {showAgents && showSessions ? (\n                <TabsList\n                  className={cn(\n                    'grid min-w-0 flex-1 grid-cols-2 text-foreground',\n                    classNames?.tabs,\n                  )}\n                  aria-label={messages.tabsLabel}\n                >\n                  <TabsTrigger value=\"agents\">{messages.agents}</TabsTrigger>\n                  <TabsTrigger value=\"sessions\">\n                    {messages.sessions}\n                  </TabsTrigger>\n                </TabsList>\n              ) : null}\n              {headerActions ? (\n                <div className=\"flex shrink-0 items-center\">\n                  {headerActions}\n                </div>\n              ) : null}\n            </>\n          ) : undefined\n        }\n        footer={\n          visibleSections.has('footer') &&\n          ((!sessionsOnly && viewModel.capabilities.manageAgentSettings) ||\n            footer) ? (\n            <div\n              className={cn('border-t border-border p-4', classNames?.footer)}\n            >\n              {!sessionsOnly && viewModel.capabilities.manageAgentSettings ? (\n                <Button\n                  type=\"button\"\n                  variant=\"ghost\"\n                  className=\"h-10 w-full justify-start gap-2 px-3 text-sm\"\n                  onClick={() => onIntent?.({ type: 'open-agent-settings' })}\n                >\n                  <Settings className=\"size-4\" aria-hidden=\"true\" />\n                  {messages.settings}\n                </Button>\n              ) : null}\n              {footer}\n            </div>\n          ) : undefined\n        }\n        bodyScrollable={false}\n        className={className}\n        classNames={{\n          root: classNames?.root,\n          body: 'flex min-h-0 flex-1 flex-col p-0',\n        }}\n      >\n        {showAgents ? (\n          <TabsContent\n            value=\"agents\"\n            data-agent-workbench-scroll-region\n            className={cn(\n              'mt-0 min-h-0 flex-1 overflow-x-hidden overflow-y-auto overscroll-contain px-4 pb-4',\n              classNames?.body,\n            )}\n          >\n            {viewModel.capabilities.createAgent ? (\n              <Button\n                type=\"button\"\n                variant=\"ghost\"\n                className=\"mb-3 h-9 w-full justify-start gap-2 px-3 text-sm\"\n                onClick={() => onIntent?.({ type: 'create-agent' })}\n              >\n                <Plus className=\"size-4\" aria-hidden=\"true\" />\n                {messages.newAgent}\n              </Button>\n            ) : null}\n            <h3 className=\"mb-2 px-3 text-xs font-medium text-muted-foreground\">\n              {messages.allAgents}\n            </h3>\n            <CollectionState\n              status={viewModel.agents.status}\n              empty={messages.emptyAgents}\n              noResults={messages.noResults}\n              hasItems={agents.length > 0}\n              query={query}\n              error={viewModel.agents.error}\n              onRetry={() => onIntent?.({ type: 'retry-agents' })}\n            />\n            <div className=\"space-y-1\">\n              {agents.map((item) => (\n                <div\n                  key={item.id}\n                  aria-current={\n                    item.id === viewModel.selectedAgentItem ? 'page' : undefined\n                  }\n                  className={cn(\n                    'group flex w-full min-w-0 items-center gap-3 rounded-lg border border-transparent px-3 py-2 text-left hover:bg-muted aria-[current=page]:border-primary aria-[current=page]:bg-muted',\n                    classNames?.item,\n                  )}\n                >\n                  <button\n                    type=\"button\"\n                    title={item.name}\n                    className=\"flex min-w-0 flex-1 items-center gap-3 text-left\"\n                    onClick={() =>\n                      onIntent?.({ type: 'select-agent', itemId: item.id })\n                    }\n                  >\n                    <span className=\"flex size-10 shrink-0 items-center justify-center overflow-hidden rounded-lg bg-muted\">\n                      <ItemAvatar item={item} />\n                    </span>\n                    <span className=\"min-w-0 flex-1\">\n                      <span className=\"block truncate text-sm font-medium\">\n                        {item.name}\n                      </span>\n                      <span className=\"block truncate text-xs text-foreground/80\">\n                        {item.description || messages.noDescription}\n                      </span>\n                    </span>\n                  </button>\n                  {item.builtIn ? (\n                    <span className=\"shrink-0 rounded-full bg-muted px-1.5 py-1 text-[10px] text-foreground\">\n                      {messages.builtIn}\n                    </span>\n                  ) : null}\n                  {viewModel.capabilities.pinAgents ? (\n                    <Button\n                      type=\"button\"\n                      variant=\"ghost\"\n                      size=\"icon\"\n                      aria-label={item.pinned ? messages.unpin : messages.pin}\n                      className={cn(\n                        'size-8 text-muted-foreground opacity-0 group-hover:opacity-100',\n                        item.pinned && 'text-primary opacity-100',\n                      )}\n                      onClick={(event) => {\n                        event.stopPropagation();\n                        onIntent?.({\n                          type: 'toggle-agent-pin',\n                          itemId: item.id,\n                          pinned: !item.pinned,\n                        });\n                      }}\n                      onKeyDown={(event) => {\n                        if (event.key === 'Enter' || event.key === ' ') {\n                          event.preventDefault();\n                          event.stopPropagation();\n                          onIntent?.({\n                            type: 'toggle-agent-pin',\n                            itemId: item.id,\n                            pinned: !item.pinned,\n                          });\n                        }\n                      }}\n                    >\n                      <Pin\n                        className={cn(\n                          'size-4',\n                          item.pinned && 'fill-current',\n                          item.pinPending && 'animate-pulse',\n                        )}\n                      />\n                    </Button>\n                  ) : null}\n                </div>\n              ))}\n            </div>\n          </TabsContent>\n        ) : null}\n\n        {showSessions ? (\n          <TabsContent\n            value=\"sessions\"\n            data-agent-workbench-scroll-region\n            className={cn(\n              'mt-0 min-h-0 flex-1 overflow-x-hidden overflow-y-auto overscroll-contain px-4 pb-4',\n              classNames?.body,\n            )}\n          >\n            {visibleSections.has('new-session') &&\n            viewModel.capabilities.createSession ? (\n              <AgentWorkbenchSidebarNewSessionButton\n                label={messages.newSession}\n                onClick={() => onIntent?.({ type: 'create-session' })}\n              />\n            ) : null}\n            {!sessionsOnly && viewModel.capabilities.manageCapabilities ? (\n              <Button\n                type=\"button\"\n                variant=\"ghost\"\n                className=\"mb-3 h-9 w-full justify-start gap-2 px-3 text-sm\"\n                onClick={() => onIntent?.({ type: 'open-capabilities' })}\n              >\n                <Blocks className=\"size-4\" aria-hidden=\"true\" />\n                {messages.capabilities}\n              </Button>\n            ) : null}\n            <AgentWorkbenchSessionList\n              sessions={sessions}\n              selectedSessionId={viewModel.selectedSessionItem}\n              status={viewModel.sessions.status}\n              error={viewModel.sessions.error}\n              query={query}\n              emptyLabel={messages.emptySessions}\n              noResultsLabel={messages.noResults}\n              groupByMode={sessionsOnly}\n              showHeading={!sessionsOnly}\n              itemClassName={classNames?.item}\n              capabilities={{\n                pin: viewModel.capabilities.pinSessions,\n                rename: viewModel.capabilities.renameSessions,\n                delete: viewModel.capabilities.deleteSessions,\n              }}\n              onSelect={(sessionId) =>\n                onIntent?.({ type: 'select-session', sessionId })\n              }\n              onTogglePin={(sessionId, pinned) =>\n                onIntent?.({ type: 'toggle-session-pin', sessionId, pinned })\n              }\n              onRename={(sessionId, title) =>\n                onIntent?.({ type: 'rename-session', sessionId, title })\n              }\n              onDelete={(sessionId) =>\n                onIntent?.({ type: 'delete-session', sessionId })\n              }\n              onRetry={() => onIntent?.({ type: 'retry-sessions' })}\n            />\n          </TabsContent>\n        ) : null}\n      </AgentWorkbenchSidebarContainer>\n    </Tabs>\n  );\n}\n","import {\n  resolveAgentWorkbenchSidebarConfig,\n  type AgentWorkbenchSessionItem,\n  type AgentWorkbenchSidebarConfig,\n} from \"@inf-monkeys-tech/monkeys\";\nimport {\n  type ReactEventHandler,\n  type ReactNode,\n  useEffect,\n  useMemo,\n  useState,\n} from \"react\";\n\nimport { cn } from \"../layout\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../primitives\";\nimport type { AgentWorkbenchVariant } from \"./appearance\";\nimport { AgentWorkbenchSidebarContainer } from \"./AgentWorkbenchSidebarContainer\";\nimport {\n  AgentWorkbenchSessionList,\n  AgentWorkbenchSidebarNewSessionButton,\n  AgentWorkbenchSidebarSearch,\n} from \"./AgentWorkbenchSidebarNavigation\";\n\nexport interface AgentWorkbenchExploreItem {\n  id: string;\n  title: string;\n  imageUrl?: string;\n  subtitle?: string;\n  mediaVariant?: AgentWorkbenchExploreMediaVariant;\n  mediaTreatment?: AgentWorkbenchExploreMediaTreatment;\n}\n\nexport type AgentWorkbenchExploreMediaVariant =\n  | \"cover\"\n  | \"cover-with-label\"\n  | \"logo\";\n\nexport type AgentWorkbenchExploreMediaTreatment =\n  | \"preserve\"\n  | \"monochrome-light\"\n  | \"invert\";\n\nexport interface AgentWorkbenchExploreCardMediaProps {\n  item: AgentWorkbenchExploreItem;\n  src?: string;\n  className?: string;\n  onError?: ReactEventHandler<HTMLImageElement>;\n}\n\nexport interface AgentWorkbenchExploreGroup {\n  id: string;\n  label: string;\n  items: AgentWorkbenchExploreItem[];\n  itemAspectRatio?: number;\n}\n\nexport interface AgentWorkbenchExploreSidebarLabels {\n  navigation: string;\n  search: string;\n  newSession: string;\n  draftSession: string;\n  emptySessions: string;\n  noResults: string;\n  retry?: string;\n}\n\nexport type AgentWorkbenchExploreSidebarIntent =\n  | { type: \"change-search\"; query: string }\n  | { type: \"create-session\" }\n  | { type: \"retry-sessions\" }\n  | { type: \"select-session\"; sessionId: string }\n  | { type: \"delete-session\"; sessionId: string }\n  | { type: \"change-group\"; groupId: string }\n  | { type: \"select-item\"; groupId: string; item: AgentWorkbenchExploreItem };\n\nexport interface AgentWorkbenchExploreSidebarProps {\n  sessions: AgentWorkbenchSessionItem[];\n  groups?: AgentWorkbenchExploreGroup[];\n  config?: AgentWorkbenchSidebarConfig;\n  labels: AgentWorkbenchExploreSidebarLabels;\n  selectedSessionId?: string;\n  searchQuery?: string;\n  loading?: boolean;\n  error?: string;\n  showDraftSession?: boolean;\n  deleteSessions?: boolean;\n  /** Uses the compact session list treatment for trend workbenches. */\n  variant?: AgentWorkbenchVariant;\n  defaultGroupId?: string;\n  header?: ReactNode;\n  footer?: ReactNode;\n  className?: string;\n  renderItemMedia?: (\n    item: AgentWorkbenchExploreItem,\n    group: AgentWorkbenchExploreGroup,\n  ) => ReactNode;\n  onIntent?: (intent: AgentWorkbenchExploreSidebarIntent) => void;\n}\n\nexport function AgentWorkbenchExploreCardMedia({\n  item,\n  src = item.imageUrl,\n  className,\n  onError,\n}: AgentWorkbenchExploreCardMediaProps) {\n  if (!src) return null;\n\n  const variant = item.mediaVariant ?? \"cover\";\n  const isLogo = variant === \"logo\";\n  const showLabel = variant === \"cover-with-label\";\n  const treatmentClass =\n    item.mediaTreatment === \"monochrome-light\"\n      ? \"brightness-0 invert\"\n      : item.mediaTreatment === \"invert\"\n        ? \"invert\"\n        : \"\";\n\n  return (\n    <>\n      <span\n        className={cn(\n          isLogo\n            ? \"flex size-full items-center justify-center bg-[hsl(var(--monkeys-color-media-surface))] p-5\"\n            : \"block size-full\",\n          className,\n        )}\n      >\n        <img\n          src={src}\n          alt=\"\"\n          className={cn(\n            \"transition-transform duration-300 group-hover:scale-[1.03]\",\n            isLogo\n              ? \"max-h-full max-w-full object-contain\"\n              : \"size-full object-cover\",\n            treatmentClass,\n          )}\n          onError={onError}\n        />\n      </span>\n      {showLabel ? (\n        <span\n          className=\"pointer-events-none absolute inset-x-0 bottom-0 px-3 pb-2.5 pt-8 text-[hsl(var(--monkeys-color-media-foreground))]\"\n          style={{\n            backgroundImage:\n              \"linear-gradient(to top, hsl(var(--monkeys-color-media-overlay) / 0.8), hsl(var(--monkeys-color-media-overlay) / 0.3), transparent)\",\n          }}\n        >\n          <span className=\"block text-base font-semibold leading-tight\">\n            {item.title}\n          </span>\n          {item.subtitle ? (\n            <span className=\"mt-0.5 block text-[11px] leading-tight opacity-75\">\n              {item.subtitle}\n            </span>\n          ) : null}\n        </span>\n      ) : null}\n    </>\n  );\n}\n\nexport function AgentWorkbenchExploreSidebar({\n  sessions,\n  groups: configuredGroups,\n  config,\n  labels,\n  selectedSessionId,\n  searchQuery = \"\",\n  loading = false,\n  error,\n  showDraftSession = !selectedSessionId,\n  deleteSessions = false,\n  variant = \"default\",\n  defaultGroupId,\n  header,\n  footer,\n  className,\n  renderItemMedia,\n  onIntent,\n}: AgentWorkbenchExploreSidebarProps) {\n  const resolvedConfig = useMemo(\n    () => resolveAgentWorkbenchSidebarConfig(config),\n    [config],\n  );\n  const visibleSections = useMemo(\n    () => new Set(resolvedConfig.visibleSections),\n    [resolvedConfig.visibleSections],\n  );\n  const groups = configuredGroups?.length\n    ? configuredGroups\n    : resolvedConfig.groups;\n  const resolvedDefaultGroupId =\n    defaultGroupId ?? resolvedConfig.defaultGroupId;\n  const [activeGroupId, setActiveGroupId] = useState(\n    resolvedDefaultGroupId ?? groups[0]?.id ?? \"\",\n  );\n  const activeGroup =\n    groups.find((group) => group.id === activeGroupId) ?? groups[0];\n  const normalizedQuery = searchQuery.trim().toLocaleLowerCase();\n  const draftVisible =\n    showDraftSession &&\n    (!normalizedQuery ||\n      labels.draftSession.toLocaleLowerCase().includes(normalizedQuery));\n  const filteredSessions = useMemo(\n    () =>\n      sessions.filter(\n        (session) =>\n          !normalizedQuery ||\n          session.title.toLocaleLowerCase().includes(normalizedQuery),\n      ),\n    [normalizedQuery, sessions],\n  );\n\n  useEffect(() => {\n    if (groups.some((group) => group.id === activeGroupId)) return;\n    setActiveGroupId(resolvedDefaultGroupId ?? groups[0]?.id ?? \"\");\n  }, [activeGroupId, groups, resolvedDefaultGroupId]);\n\n  const changeGroup = (groupId: string) => {\n    setActiveGroupId(groupId);\n    onIntent?.({ type: \"change-group\", groupId });\n  };\n\n  const groupNavigation =\n    visibleSections.has(\"groups\") && activeGroup ? (\n      <div className=\"border-t border-border px-4 pb-4 pt-3\">\n        <Tabs value={activeGroup.id} onValueChange={changeGroup}>\n          <TabsList\n            className=\"grid h-10 w-full rounded-[var(--radius)] bg-muted p-0.5 text-foreground\"\n            style={{\n              gridTemplateColumns: `repeat(${groups.length}, minmax(0, 1fr))`,\n            }}\n          >\n            {groups.map((group) => (\n              <TabsTrigger\n                key={group.id}\n                value={group.id}\n                className=\"rounded-md text-sm font-semibold text-foreground data-[state=active]:border data-[state=active]:border-border data-[state=active]:bg-background\"\n              >\n                {group.label}\n              </TabsTrigger>\n            ))}\n          </TabsList>\n          {groups.map((group) => (\n            <TabsContent key={group.id} value={group.id} className=\"mt-3\">\n              <div className=\"grid grid-cols-2 gap-2\">\n                {group.items.map((item) => (\n                  <button\n                    key={item.id}\n                    type=\"button\"\n                    aria-label={item.title}\n                    className=\"group relative aspect-[1.27] overflow-hidden rounded-[var(--radius)] border border-border bg-card text-left transition hover:border-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n                    style={\n                      Number.isFinite(group.itemAspectRatio) &&\n                      Number(group.itemAspectRatio) > 0\n                        ? { aspectRatio: group.itemAspectRatio }\n                        : undefined\n                    }\n                    onClick={() =>\n                      onIntent?.({\n                        type: \"select-item\",\n                        groupId: group.id,\n                        item,\n                      })\n                    }\n                  >\n                    {renderItemMedia?.(item, group) ?? (\n                      <AgentWorkbenchExploreCardMedia item={item} />\n                    )}\n                  </button>\n                ))}\n              </div>\n            </TabsContent>\n          ))}\n        </Tabs>\n      </div>\n    ) : undefined;\n\n  return (\n    <AgentWorkbenchSidebarContainer\n      data-sidebar-style=\"explore\"\n      data-sidebar-width-percent={resolvedConfig.widthPercent}\n      aria-label={labels.navigation}\n      variant={variant}\n      density={variant === \"trend\" ? \"compact\" : undefined}\n      header={visibleSections.has(\"header\") ? header : undefined}\n      search={\n        visibleSections.has(\"search\") ? (\n          <AgentWorkbenchSidebarSearch\n            value={searchQuery}\n            label={labels.search}\n            variant={variant}\n            onChange={(query) => onIntent?.({ type: \"change-search\", query })}\n          />\n        ) : undefined\n      }\n      primaryAction={\n        visibleSections.has(\"new-session\") ? (\n          <AgentWorkbenchSidebarNewSessionButton\n            label={labels.newSession}\n            variant={variant}\n            onClick={() => onIntent?.({ type: \"create-session\" })}\n          />\n        ) : undefined\n      }\n      groups={groupNavigation}\n      footer={visibleSections.has(\"footer\") ? footer : undefined}\n      bodyProps={{ \"data-agent-workbench-session-scroll-region\": \"\" }}\n      className={className}\n      classNames={{ body: \"min-h-[160px] flex-[0_1_280px]\" }}\n    >\n      {visibleSections.has(\"sessions\") ? (\n        <div className=\"space-y-2\">\n          {draftVisible ? (\n            <button\n              type=\"button\"\n              aria-current=\"page\"\n              className=\"block h-10 w-full min-w-0 truncate rounded-[var(--radius)] border border-primary bg-primary/10 px-3 text-left text-sm font-semibold text-foreground\"\n              onClick={() => onIntent?.({ type: \"create-session\" })}\n            >\n              {labels.draftSession}\n            </button>\n          ) : null}\n          {filteredSessions.length > 0 || !draftVisible || loading || error ? (\n            <AgentWorkbenchSessionList\n              sessions={filteredSessions}\n              selectedSessionId={selectedSessionId}\n              status={error ? \"error\" : loading ? \"loading\" : \"ready\"}\n              error={error}\n              query={normalizedQuery}\n              emptyLabel={labels.emptySessions}\n              noResultsLabel={labels.noResults}\n              retryLabel={labels.retry}\n              groupByMode={resolvedConfig.navigationMode !== \"default\"}\n              variant={variant}\n              capabilities={{ delete: deleteSessions }}\n              onSelect={(sessionId) =>\n                onIntent?.({ type: \"select-session\", sessionId })\n              }\n              onDelete={(sessionId) =>\n                onIntent?.({ type: \"delete-session\", sessionId })\n              }\n              onRetry={\n                labels.retry\n                  ? () => onIntent?.({ type: \"retry-sessions\" })\n                  : undefined\n              }\n            />\n          ) : null}\n        </div>\n      ) : null}\n    </AgentWorkbenchSidebarContainer>\n  );\n}\n","import type {\n  AgentSessionCapabilities,\n  AgentSessionEvent,\n  AgentSessionViewModel,\n} from '@inf-monkeys-tech/monkeys';\n\ntype SessionEventType = AgentSessionEvent['eventType'];\nexport type AgentWorkbenchEventOf<Type extends SessionEventType> = Extract<\n  AgentSessionEvent,\n  { eventType: Type }\n>;\n\nconst EVENT_CAPABILITIES = {\n  reasoning: 'reasoning',\n  plan: 'plan',\n  task: 'tasks',\n  tool: 'tools',\n  approval: 'approval',\n  artifact: 'artifacts',\n  usage: 'usage',\n} as const satisfies Partial<\n  Record<SessionEventType, keyof AgentSessionCapabilities>\n>;\n\nexport interface AgentWorkbenchActivityModel {\n  mode: AgentSessionViewModel['snapshot']['mode'];\n  status: AgentSessionViewModel['status'];\n  reasoning: AgentWorkbenchEventOf<'reasoning'>[];\n  plans: AgentWorkbenchEventOf<'plan'>[];\n  tasks: AgentWorkbenchEventOf<'task'>[];\n  tools: AgentWorkbenchEventOf<'tool'>[];\n  approvals: AgentWorkbenchEventOf<'approval'>[];\n  artifacts: AgentWorkbenchEventOf<'artifact'>[];\n  usage?: AgentWorkbenchEventOf<'usage'>;\n  run?: AgentWorkbenchEventOf<'status'> & { resolvedDurationMs?: number };\n}\n\nfunction projectRun(events: AgentSessionEvent[]): AgentWorkbenchActivityModel['run'] {\n  const statuses = events.filter(\n    (event): event is AgentWorkbenchEventOf<'status'> => event.eventType === 'status',\n  );\n  const run = statuses.at(-1);\n  if (!run) return undefined;\n  if (run.payload.status !== 'stopped' || run.payload.durationMs !== undefined) return run;\n\n  const runStatuses = run.runId\n    ? statuses.filter((event) => event.runId === run.runId && event.sequence <= run.sequence)\n    : statuses.filter((event) => event.sequence <= run.sequence);\n  let previousStoppedIndex = -1;\n  for (let index = runStatuses.length - 1; index >= 0; index -= 1) {\n    const event = runStatuses[index];\n    if (event.sequence < run.sequence && event.payload.status === 'stopped') {\n      previousStoppedIndex = index;\n      break;\n    }\n  }\n  const started = runStatuses\n    .slice(previousStoppedIndex + 1)\n    .reverse()\n    .find((event) => event.payload.status === 'running' || event.payload.status === 'queued');\n  const startedAt = started?.payload.startedAt ?? started?.occurredAt;\n  const stoppedAt = run.payload.stoppedAt ?? run.occurredAt;\n  if (!startedAt || !stoppedAt) return run;\n  const durationMs = Date.parse(stoppedAt) - Date.parse(startedAt);\n  return Number.isFinite(durationMs) && durationMs >= 0\n    ? { ...run, resolvedDurationMs: durationMs }\n    : run;\n}\n\nfunction isVisible(\n  event: AgentSessionEvent,\n  capabilities: AgentSessionCapabilities,\n): boolean {\n  const capability = EVENT_CAPABILITIES[\n    event.eventType as keyof typeof EVENT_CAPABILITIES\n  ];\n  return capability ? capabilities[capability] === true : true;\n}\n\nfunction latestBy<Type extends SessionEventType>(\n  events: AgentSessionEvent[],\n  eventType: Type,\n  key: (event: AgentWorkbenchEventOf<Type>) => string,\n): AgentWorkbenchEventOf<Type>[] {\n  const latest = new Map<string, AgentWorkbenchEventOf<Type>>();\n  for (const event of events) {\n    if (event.eventType !== eventType) continue;\n    const typedEvent = event as AgentWorkbenchEventOf<Type>;\n    latest.set(key(typedEvent), typedEvent);\n  }\n  return [...latest.values()].sort(\n    (left, right) => left.sequence - right.sequence,\n  );\n}\n\nexport function createAgentWorkbenchActivityModel(\n  viewModel: AgentSessionViewModel,\n): AgentWorkbenchActivityModel {\n  const visibleEvents = viewModel.events.filter((event) =>\n    isVisible(event, viewModel.snapshot.capabilities),\n  );\n\n  return {\n    mode: viewModel.snapshot.mode,\n    status: viewModel.status,\n    reasoning: latestBy(\n      visibleEvents,\n      'reasoning',\n      (event) => event.payload.reasoningId,\n    ),\n    plans: latestBy(\n      visibleEvents,\n      'plan',\n      (event) => event.payload.planId,\n    ),\n    tasks: latestBy(\n      visibleEvents,\n      'task',\n      (event) => event.payload.taskId,\n    ),\n    tools: latestBy(\n      visibleEvents,\n      'tool',\n      (event) => event.payload.toolCallId,\n    ),\n    approvals: latestBy(\n      visibleEvents,\n      'approval',\n      (event) => event.payload.approvalId,\n    ),\n    artifacts: latestBy(\n      visibleEvents,\n      'artifact',\n      (event) => event.payload.artifactId,\n    ),\n    usage: [...visibleEvents]\n      .reverse()\n      .find(\n        (event): event is AgentWorkbenchEventOf<'usage'> =>\n          event.eventType === 'usage',\n      ),\n    run: projectRun(visibleEvents),\n  };\n}\n","import { Check, Clock3, X } from \"lucide-react\";\n\nimport { useMonkeysLocaleMessages } from \"../../provider\";\nimport { cn } from \"../layout\";\nimport { Button } from \"../primitives\";\nimport type { AgentWorkbenchEventOf } from \"./activity-model\";\n\nexport type AgentWorkbenchApprovalData =\n  AgentWorkbenchEventOf<\"approval\">[\"payload\"];\n\nexport interface AgentWorkbenchApprovalIntent {\n  approvalId: string;\n  approved: boolean;\n}\n\nexport interface AgentWorkbenchApprovalProps {\n  approval: AgentWorkbenchApprovalData;\n  className?: string;\n  onDecision?: (intent: AgentWorkbenchApprovalIntent) => void;\n}\n\nfunction JsonValue({ value }: { value: unknown }) {\n  if (value === undefined) return null;\n  const content =\n    typeof value === \"string\" ? value : JSON.stringify(value, null, 2);\n  return (\n    <pre\n      className=\"max-h-48 max-w-full overflow-auto overscroll-contain whitespace-pre-wrap break-words rounded-md bg-muted p-3 font-mono text-xs text-foreground [overflow-wrap:anywhere]\"\n      tabIndex={0}\n    >\n      {content}\n    </pre>\n  );\n}\n\nexport function AgentWorkbenchApproval({\n  approval,\n  className,\n  onDecision,\n}: AgentWorkbenchApprovalProps) {\n  const messages = useMonkeysLocaleMessages().agentWorkbench.approval;\n  const requested = approval.status === \"requested\";\n  const approved = approval.status === \"approved\";\n\n  return (\n    <article\n      className={cn(\n        \"min-w-0 overflow-hidden rounded-lg border border-border bg-card p-3 text-card-foreground\",\n        className,\n      )}\n      data-agent-approval-status={approval.status}\n    >\n      <div className=\"flex items-start gap-3\">\n        {requested ? (\n          <Clock3\n            className=\"mt-0.5 size-4 shrink-0 text-warning-foreground\"\n            aria-hidden=\"true\"\n          />\n        ) : approved ? (\n          <Check\n            className=\"mt-0.5 size-4 shrink-0 text-success\"\n            aria-hidden=\"true\"\n          />\n        ) : (\n          <X\n            className=\"mt-0.5 size-4 shrink-0 text-destructive-text\"\n            aria-hidden=\"true\"\n          />\n        )}\n        <div className=\"min-w-0 flex-1\">\n          <h3 className=\"break-words text-sm font-medium\">{approval.title}</h3>\n          {approval.description ? (\n            <p\n              tabIndex={0}\n              className=\"mt-1 max-h-32 overflow-auto whitespace-pre-wrap break-words text-sm text-muted-foreground [overflow-wrap:anywhere]\"\n            >\n              {approval.description}\n            </p>\n          ) : null}\n          {approval.requestedAction !== undefined ? (\n            <div className=\"mt-3 min-w-0\">\n              <JsonValue value={approval.requestedAction} />\n            </div>\n          ) : null}\n          {requested ? (\n            <div className=\"mt-3 flex flex-wrap gap-2\">\n              <Button\n                type=\"button\"\n                size=\"sm\"\n                className=\"h-auto px-3 py-1.5 text-sm\"\n                disabled={!onDecision}\n                onClick={() =>\n                  onDecision?.({\n                    approvalId: approval.approvalId,\n                    approved: true,\n                  })\n                }\n              >\n                {messages.approve}\n              </Button>\n              <Button\n                type=\"button\"\n                variant=\"outline\"\n                size=\"sm\"\n                className=\"h-auto px-3 py-1.5 text-sm\"\n                disabled={!onDecision}\n                onClick={() =>\n                  onDecision?.({\n                    approvalId: approval.approvalId,\n                    approved: false,\n                  })\n                }\n              >\n                {messages.reject}\n              </Button>\n            </div>\n          ) : (\n            <p className=\"mt-2 text-xs text-muted-foreground\">\n              {approved ? messages.approved : messages.rejected}\n            </p>\n          )}\n        </div>\n      </div>\n    </article>\n  );\n}\n","import { CheckCircle2, ChevronDown, Clock3, Loader2, TerminalSquare, XCircle } from 'lucide-react';\nimport { useState } from 'react';\n\nimport { useMonkeysLocaleMessages } from '../../provider';\nimport { cn } from '../layout';\nimport type { AgentWorkbenchEventOf } from './activity-model';\n\nexport interface AgentWorkbenchToolClassNames {\n  root?: string;\n  trigger?: string;\n  content?: string;\n  input?: string;\n  output?: string;\n}\n\nexport interface AgentWorkbenchToolProps {\n  event: AgentWorkbenchEventOf<'tool'>;\n  expanded?: boolean;\n  defaultExpanded?: boolean;\n  className?: string;\n  classNames?: AgentWorkbenchToolClassNames;\n  onExpandedChange?: (expanded: boolean) => void;\n}\n\nfunction JsonValue({ value, className }: { value: unknown; className?: string }) {\n  if (value === undefined) return null;\n  const content = typeof value === 'string' ? value : JSON.stringify(value, null, 2);\n  return (\n    <pre\n      tabIndex={0}\n      className={cn(\n        'max-h-64 max-w-full overflow-auto overscroll-contain whitespace-pre-wrap break-words rounded-md bg-muted p-3 font-mono text-xs text-foreground [overflow-wrap:anywhere]',\n        className,\n      )}\n    >\n      {content}\n    </pre>\n  );\n}\n\nfunction ToolStatus({ status }: { status: AgentWorkbenchEventOf<'tool'>['payload']['status'] }) {\n  const messages = useMonkeysLocaleMessages().agentWorkbench.tool.status;\n  const commonClassName = 'size-3.5 shrink-0';\n\n  if (status === 'pending') {\n    return <Clock3 className={commonClassName} aria-hidden=\"true\" />;\n  }\n  if (status === 'running') {\n    return <Loader2 className={cn(commonClassName, 'animate-spin')} aria-hidden=\"true\" />;\n  }\n  if (status === 'completed') {\n    return <CheckCircle2 className={cn(commonClassName, 'text-primary')} aria-hidden=\"true\" />;\n  }\n  return <XCircle className={cn(commonClassName, 'text-destructive-text')} aria-hidden=\"true\" />;\n}\n\nexport function AgentWorkbenchTool({\n  event,\n  expanded,\n  defaultExpanded = event.payload.status === 'failed',\n  className,\n  classNames,\n  onExpandedChange,\n}: AgentWorkbenchToolProps) {\n  const messages = useMonkeysLocaleMessages().agentWorkbench.tool;\n  const [uncontrolledExpanded, setUncontrolledExpanded] = useState(defaultExpanded);\n  const isControlled = expanded !== undefined;\n  const isExpanded = expanded ?? uncontrolledExpanded;\n  const status = event.payload.status;\n  const setExpanded = (nextExpanded: boolean) => {\n    if (!isControlled) setUncontrolledExpanded(nextExpanded);\n    onExpandedChange?.(nextExpanded);\n  };\n\n  return (\n    <details\n      open={isExpanded}\n      className={cn(\n        'group min-w-0 overflow-hidden rounded-lg border border-border bg-card text-card-foreground',\n        classNames?.root,\n        className,\n      )}\n      data-tool-status={status}\n    >\n      <summary\n        className={cn(\n          'flex cursor-pointer list-none items-center gap-2 px-3 py-2.5 text-sm outline-none focus-visible:ring-2 focus-visible:ring-ring [&::-webkit-details-marker]:hidden',\n          classNames?.trigger,\n        )}\n        onClick={(event) => {\n          event.preventDefault();\n          setExpanded(!isExpanded);\n        }}\n      >\n        <TerminalSquare className=\"size-4 shrink-0 text-muted-foreground\" aria-hidden=\"true\" />\n        <span className=\"min-w-0 flex-1 truncate font-medium\">{event.payload.toolName}</span>\n        <span className=\"inline-flex shrink-0 items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-xs text-foreground\">\n          <ToolStatus status={status} />\n          {messages.status[status]}\n        </span>\n        <ChevronDown\n          className=\"size-4 shrink-0 text-muted-foreground transition-transform group-open:rotate-180\"\n          aria-hidden=\"true\"\n        />\n      </summary>\n      <div className={cn('min-w-0 space-y-3 border-t border-border px-3 py-3 text-sm', classNames?.content)}>\n        {event.payload.input !== undefined ? (\n          <div className=\"space-y-1.5\">\n            <div className=\"text-xs font-medium text-muted-foreground\">{messages.input}</div>\n            <JsonValue value={event.payload.input} className={classNames?.input} />\n          </div>\n        ) : null}\n        {event.payload.output !== undefined ? (\n          <div className=\"space-y-1.5\">\n            <div className=\"text-xs font-medium text-muted-foreground\">{messages.output}</div>\n            <JsonValue value={event.payload.output} className={classNames?.output} />\n          </div>\n        ) : null}\n        {event.payload.error ? (\n          <p\n            tabIndex={0}\n            className=\"max-h-32 overflow-auto whitespace-pre-wrap break-words text-sm text-destructive-text [overflow-wrap:anywhere]\"\n            role=\"alert\"\n          >\n            {event.payload.error}\n          </p>\n        ) : null}\n      </div>\n    </details>\n  );\n}\n","import type { AgentSessionViewModel } from \"@inf-monkeys-tech/monkeys\";\nimport {\n  CheckCircle2,\n  ChevronDown,\n  Circle,\n  CircleStop,\n  Clock3,\n  Download,\n  FileOutput,\n  Loader2,\n  XCircle,\n} from \"lucide-react\";\nimport type { ComponentType, ReactNode } from \"react\";\n\nimport { useMonkeysLocaleMessages } from \"../../provider\";\nimport { cn } from \"../layout\";\nimport { Button } from \"../primitives\";\nimport {\n  createAgentWorkbenchActivityModel,\n  type AgentWorkbenchEventOf,\n} from \"./activity-model\";\nimport {\n  AgentWorkbenchApproval,\n  type AgentWorkbenchApprovalIntent,\n} from \"./AgentWorkbenchApproval\";\nimport { AgentWorkbenchTool } from \"./AgentWorkbenchTool\";\n\nexport interface AgentWorkbenchArtifactIntent {\n  artifactId: string;\n  name: string;\n  url: string;\n}\n\nexport interface AgentWorkbenchActivityClassNames {\n  root?: string;\n  item?: string;\n  trigger?: string;\n  content?: string;\n  approval?: string;\n  artifact?: string;\n  usage?: string;\n}\n\nexport interface AgentWorkbenchActivityProps {\n  viewModel?: AgentSessionViewModel;\n  ariaLabel?: string;\n  hiddenToolCallIds?: ReadonlySet<string>;\n  hideReasoning?: boolean;\n  hideStoppedRun?: boolean;\n  className?: string;\n  classNames?: AgentWorkbenchActivityClassNames;\n  onApprovalDecision?: (intent: AgentWorkbenchApprovalIntent) => void;\n  onArtifactOpen?: (intent: AgentWorkbenchArtifactIntent) => void;\n}\n\ninterface ActivityDetailsProps {\n  icon: ComponentType<{ className?: string }>;\n  title: ReactNode;\n  open?: boolean;\n  streaming?: boolean;\n  className?: string;\n  triggerClassName?: string;\n  contentClassName?: string;\n  children: ReactNode;\n}\n\nfunction ActivityDetails({\n  icon: Icon,\n  title,\n  open,\n  streaming,\n  className,\n  triggerClassName,\n  contentClassName,\n  children,\n}: ActivityDetailsProps) {\n  return (\n    <details\n      className={cn(\n        \"group min-w-0 overflow-hidden rounded-lg border border-border bg-card text-card-foreground\",\n        className,\n      )}\n      open={open}\n    >\n      <summary\n        className={cn(\n          \"flex cursor-pointer list-none items-center gap-2 px-3 py-2.5 text-sm font-medium outline-none focus-visible:ring-2 focus-visible:ring-ring [&::-webkit-details-marker]:hidden\",\n          triggerClassName,\n        )}\n      >\n        {streaming ? (\n          <Loader2\n            className=\"size-4 shrink-0 animate-spin\"\n            aria-hidden=\"true\"\n          />\n        ) : (\n          <Icon\n            className=\"size-4 shrink-0 text-muted-foreground\"\n            aria-hidden=\"true\"\n          />\n        )}\n        <span className=\"min-w-0 flex-1 truncate\">{title}</span>\n        <ChevronDown\n          className=\"size-4 shrink-0 text-muted-foreground transition-transform group-open:rotate-180\"\n          aria-hidden=\"true\"\n        />\n      </summary>\n      <div\n        className={cn(\n          \"min-w-0 border-t border-border px-3 py-3 text-sm\",\n          contentClassName,\n        )}\n      >\n        {children}\n      </div>\n    </details>\n  );\n}\n\nfunction StatusIcon({ status }: { status: string }) {\n  if (status === \"completed\" || status === \"passed\") {\n    return <CheckCircle2 className=\"size-4 text-success\" aria-hidden=\"true\" />;\n  }\n  if (status === \"failed\") {\n    return (\n      <XCircle className=\"size-4 text-destructive-text\" aria-hidden=\"true\" />\n    );\n  }\n  if (status === \"running\") {\n    return (\n      <Clock3\n        className=\"size-4 animate-pulse text-warning-foreground\"\n        aria-hidden=\"true\"\n      />\n    );\n  }\n  return <Circle className=\"size-4 text-muted-foreground\" aria-hidden=\"true\" />;\n}\n\nfunction formatDuration(durationMs: number): string {\n  if (durationMs < 1_000) return \"<1s\";\n  const totalSeconds = Math.floor(durationMs / 1_000);\n  const minutes = Math.floor(totalSeconds / 60);\n  const seconds = totalSeconds % 60;\n  return minutes > 0 ? `${minutes}m ${seconds}s` : `${seconds}s`;\n}\n\nfunction RunStatus({\n  event,\n}: {\n  event: AgentWorkbenchEventOf<\"status\"> & { resolvedDurationMs?: number };\n}) {\n  const messages = useMonkeysLocaleMessages().agentWorkbench;\n  const status = event.payload.status;\n  if (status !== \"stopping\" && status !== \"stopped\") return null;\n\n  return (\n    <div\n      className=\"flex items-center gap-2 text-sm text-muted-foreground\"\n      role=\"status\"\n    >\n      {status === \"stopping\" ? (\n        <Loader2 className=\"size-4 animate-spin\" aria-hidden=\"true\" />\n      ) : (\n        <CircleStop className=\"size-4\" aria-hidden=\"true\" />\n      )}\n      <span>\n        {status === \"stopping\"\n          ? messages.run.stopping\n          : messages.run.stoppedAfter({\n              duration: formatDuration(\n                event.payload.durationMs ?? event.resolvedDurationMs ?? 0,\n              ),\n            })}\n      </span>\n    </div>\n  );\n}\n\nexport function AgentWorkbenchActivity({\n  viewModel,\n  ariaLabel,\n  hiddenToolCallIds,\n  hideReasoning = false,\n  hideStoppedRun = false,\n  className,\n  classNames,\n  onApprovalDecision,\n  onArtifactOpen,\n}: AgentWorkbenchActivityProps) {\n  const messages = useMonkeysLocaleMessages().agentWorkbench;\n  if (!viewModel) return null;\n\n  const activity = createAgentWorkbenchActivityModel(viewModel);\n  const reasoning = hideReasoning ? [] : activity.reasoning;\n  const tools = activity.tools.filter(\n    (event) => !hiddenToolCallIds?.has(event.payload.toolCallId),\n  );\n  const approvals = activity.approvals.filter(\n    (event) =>\n      !event.payload.toolCallId ||\n      !hiddenToolCallIds?.has(event.payload.toolCallId),\n  );\n  const usage = activity.usage?.payload;\n  const contextWindow =\n    typeof usage?.contextWindow === \"number\" && usage.contextWindow > 0\n      ? usage.contextWindow\n      : undefined;\n  const showRun =\n    activity.run?.payload.status === \"stopping\" ||\n    (activity.run?.payload.status === \"stopped\" && !hideStoppedRun);\n  const hasActivity =\n    reasoning.length > 0 ||\n    activity.plans.length > 0 ||\n    activity.tasks.length > 0 ||\n    tools.length > 0 ||\n    approvals.length > 0 ||\n    activity.artifacts.length > 0 ||\n    showRun ||\n    contextWindow !== undefined;\n  if (!hasActivity) return null;\n\n  return (\n    <section\n      className={cn(\"space-y-3\", classNames?.root, className)}\n      aria-label={ariaLabel ?? messages.label}\n      data-agent-workbench-mode={activity.mode}\n      data-agent-workbench-status={activity.status}\n    >\n      {reasoning.map((event) => (\n        <ActivityDetails\n          key={event.payload.reasoningId}\n          icon={Circle}\n          title={messages.reasoning}\n          open={event.payload.status === \"streaming\"}\n          streaming={event.payload.status === \"streaming\"}\n          className={classNames?.item}\n          triggerClassName={classNames?.trigger}\n          contentClassName={classNames?.content}\n        >\n          <div\n            tabIndex={0}\n            className=\"max-h-64 overflow-auto whitespace-pre-wrap break-words text-muted-foreground [overflow-wrap:anywhere]\"\n          >\n            {event.payload.text}\n          </div>\n        </ActivityDetails>\n      ))}\n\n      {activity.plans.map((event) => (\n        <ActivityDetails\n          key={event.payload.planId}\n          icon={Circle}\n          title={event.payload.title || messages.plan}\n          open={event.payload.status === \"running\"}\n          streaming={event.payload.status === \"running\"}\n          className={classNames?.item}\n          triggerClassName={classNames?.trigger}\n          contentClassName={classNames?.content}\n        >\n          <ol className=\"space-y-2\">\n            {event.payload.steps.map((step) => (\n              <li key={step.id} className=\"flex min-w-0 items-start gap-2\">\n                <StatusIcon status={step.status} />\n                <span className=\"min-w-0 break-words [overflow-wrap:anywhere]\">\n                  {step.title}\n                </span>\n              </li>\n            ))}\n          </ol>\n        </ActivityDetails>\n      ))}\n\n      {activity.tasks.map((event) => (\n        <ActivityDetails\n          key={event.payload.taskId}\n          icon={Circle}\n          title={event.payload.title}\n          open={event.payload.status === \"running\"}\n          streaming={event.payload.status === \"running\"}\n          className={classNames?.item}\n          triggerClassName={classNames?.trigger}\n          contentClassName={classNames?.content}\n        >\n          <div className=\"flex items-start gap-2\">\n            <StatusIcon status={event.payload.status} />\n            <span className=\"min-w-0 whitespace-pre-wrap break-words text-muted-foreground [overflow-wrap:anywhere]\">\n              {event.payload.detail || messages.taskNoDetail}\n            </span>\n          </div>\n        </ActivityDetails>\n      ))}\n\n      {tools.map((event) => (\n        <AgentWorkbenchTool\n          key={event.payload.toolCallId}\n          event={event}\n          defaultExpanded={event.payload.status === \"failed\"}\n          classNames={{\n            root: classNames?.item,\n            trigger: classNames?.trigger,\n            content: classNames?.content,\n          }}\n        />\n      ))}\n\n      {approvals.map((event) => {\n        return (\n          <AgentWorkbenchApproval\n            key={event.payload.approvalId}\n            approval={event.payload}\n            className={classNames?.approval}\n            onDecision={onApprovalDecision}\n          />\n        );\n      })}\n\n      {activity.artifacts.map((event) => {\n        const canOpen = Boolean(event.payload.url && onArtifactOpen);\n        return (\n          <article\n            key={event.payload.artifactId}\n            className={cn(\n              \"flex items-center gap-3 rounded-lg border border-border bg-card p-3 text-card-foreground\",\n              classNames?.artifact,\n            )}\n          >\n            <FileOutput\n              className=\"size-4 shrink-0 text-muted-foreground\"\n              aria-hidden=\"true\"\n            />\n            <div className=\"min-w-0 flex-1\">\n              <div className=\"truncate text-sm font-medium\">\n                {event.payload.name}\n              </div>\n              <div className=\"text-xs text-muted-foreground\">\n                {messages.artifact[event.payload.status]}\n              </div>\n            </div>\n            {event.payload.url ? (\n              <Button\n                type=\"button\"\n                variant=\"ghost\"\n                size=\"icon\"\n                className=\"text-muted-foreground hover:text-foreground\"\n                aria-label={messages.artifact.open({\n                  name: event.payload.name,\n                })}\n                disabled={!canOpen}\n                onClick={() => {\n                  if (!event.payload.url) return;\n                  onArtifactOpen?.({\n                    artifactId: event.payload.artifactId,\n                    name: event.payload.name,\n                    url: event.payload.url,\n                  });\n                }}\n              >\n                <Download className=\"size-4\" aria-hidden=\"true\" />\n              </Button>\n            ) : null}\n          </article>\n        );\n      })}\n\n      {showRun && activity.run ? <RunStatus event={activity.run} /> : null}\n\n      {usage && contextWindow !== undefined ? (\n        <div\n          className={cn(\"flex justify-end\", classNames?.usage)}\n          aria-label={messages.usage.label}\n        >\n          <span className=\"rounded-full border border-border bg-muted px-2.5 py-1 text-xs text-foreground\">\n            {messages.usage.context({\n              used: usage.contextTokens ?? usage.totalTokens ?? 0,\n              total: contextWindow,\n            })}\n          </span>\n        </div>\n      ) : null}\n    </section>\n  );\n}\n","import type {\n  AgentSessionCapabilities,\n  AgentSessionEvent,\n  AgentSessionViewModel,\n} from '@inf-monkeys-tech/monkeys';\n\nimport type { AgentWorkbenchEventOf } from './activity-model';\n\nconst WORKSPACE_CAPABILITIES = {\n  diff: 'diff',\n  'workspace-file': 'workspaceFiles',\n  terminal: 'terminal',\n  'test-result': 'testResults',\n  artifact: 'artifacts',\n} as const satisfies Partial<\n  Record<AgentSessionEvent['eventType'], keyof AgentSessionCapabilities>\n>;\n\nexport interface AgentWorkbenchTerminalModel {\n  terminalId: string;\n  stdin: string;\n  stdout: string;\n  stderr: string;\n  status: string;\n  exitCode?: number;\n  sequence: number;\n}\n\nexport interface AgentWorkbenchDetailsModel {\n  mode: AgentSessionViewModel['snapshot']['mode'];\n  modelId: string;\n  permissionProfile?: AgentSessionViewModel['snapshot']['permissionProfile'];\n  status: AgentSessionViewModel['status'];\n  sessionId: string;\n  capabilities: AgentSessionCapabilities;\n  resumable: boolean;\n  summary?: AgentWorkbenchEventOf<'summary'>;\n  error?: AgentWorkbenchEventOf<'error'>;\n  run?: AgentWorkbenchEventOf<'status'>;\n  usage?: AgentWorkbenchEventOf<'usage'>;\n  workspace: {\n    diffs: AgentWorkbenchEventOf<'diff'>[];\n    files: AgentWorkbenchEventOf<'workspace-file'>[];\n    terminals: AgentWorkbenchTerminalModel[];\n    tests: AgentWorkbenchEventOf<'test-result'>[];\n    artifacts: AgentWorkbenchEventOf<'artifact'>[];\n  };\n}\n\nfunction latestBy<Type extends AgentSessionEvent['eventType']>(\n  events: AgentSessionEvent[],\n  eventType: Type,\n  key: (event: AgentWorkbenchEventOf<Type>) => string,\n): AgentWorkbenchEventOf<Type>[] {\n  const latest = new Map<string, AgentWorkbenchEventOf<Type>>();\n  for (const event of events) {\n    if (event.eventType !== eventType) continue;\n    const typedEvent = event as AgentWorkbenchEventOf<Type>;\n    latest.set(key(typedEvent), typedEvent);\n  }\n  return [...latest.values()].sort(\n    (left, right) => left.sequence - right.sequence,\n  );\n}\n\nfunction projectTerminals(\n  events: AgentWorkbenchEventOf<'terminal'>[],\n): AgentWorkbenchTerminalModel[] {\n  const terminals = new Map<string, AgentWorkbenchTerminalModel>();\n  for (const event of events) {\n    const current = terminals.get(event.payload.terminalId) ?? {\n      terminalId: event.payload.terminalId,\n      stdin: '',\n      stdout: '',\n      stderr: '',\n      status: '',\n      sequence: event.sequence,\n    };\n    const stream = event.payload.stream;\n    terminals.set(event.payload.terminalId, {\n      ...current,\n      ...(stream === 'status'\n        ? { status: event.payload.chunk }\n        : { [stream]: `${current[stream]}${event.payload.chunk}` }),\n      ...(event.payload.exitCode === undefined\n        ? {}\n        : { exitCode: event.payload.exitCode }),\n      sequence: event.sequence,\n    });\n  }\n  return [...terminals.values()].sort(\n    (left, right) => left.sequence - right.sequence,\n  );\n}\n\nexport function createAgentWorkbenchDetailsModel(\n  viewModel: AgentSessionViewModel,\n): AgentWorkbenchDetailsModel {\n  const capabilities = viewModel.snapshot.capabilities;\n  const workspaceEvents = viewModel.events.filter((event) => {\n    const capability = WORKSPACE_CAPABILITIES[\n      event.eventType as keyof typeof WORKSPACE_CAPABILITIES\n    ];\n    return capability ? capabilities[capability] === true : false;\n  });\n  const run = [...viewModel.events]\n    .reverse()\n    .find(\n      (event): event is AgentWorkbenchEventOf<'status'> =>\n        event.eventType === 'status',\n    );\n  const currentRunId = run?.runId;\n  const summary = [...viewModel.events]\n    .reverse()\n    .find(\n      (event): event is AgentWorkbenchEventOf<'summary'> =>\n        event.eventType === 'summary' &&\n        capabilities.summary === true &&\n        (!currentRunId || event.runId === currentRunId),\n    );\n\n  return {\n    mode: viewModel.snapshot.mode,\n    modelId: viewModel.snapshot.modelId,\n    permissionProfile: viewModel.snapshot.permissionProfile,\n    status: viewModel.status,\n    sessionId: viewModel.sessionId,\n    capabilities,\n    resumable: capabilities.resume === true && viewModel.resumable,\n    summary,\n    error: [...viewModel.events]\n      .reverse()\n      .find(\n        (event): event is AgentWorkbenchEventOf<'error'> =>\n          event.eventType === 'error',\n      ),\n    run,\n    usage: capabilities.usage\n      ? [...viewModel.events]\n          .reverse()\n          .find(\n            (event): event is AgentWorkbenchEventOf<'usage'> =>\n              event.eventType === 'usage',\n          )\n      : undefined,\n    workspace: {\n      diffs: latestBy(workspaceEvents, 'diff', (event) => event.payload.path),\n      files: latestBy(\n        workspaceEvents,\n        'workspace-file',\n        (event) => event.payload.path,\n      ),\n      terminals: projectTerminals(\n        workspaceEvents.filter(\n          (event): event is AgentWorkbenchEventOf<'terminal'> =>\n            event.eventType === 'terminal',\n        ),\n      ),\n      tests: latestBy(\n        workspaceEvents,\n        'test-result',\n        (event) => event.payload.testId,\n      ),\n      artifacts: latestBy(\n        workspaceEvents,\n        'artifact',\n        (event) => event.payload.artifactId,\n      ),\n    },\n  };\n}\n","import type { AgentSessionViewModel } from '@inf-monkeys-tech/monkeys';\nimport {\n  AlertCircle,\n  CheckCircle2,\n  ChevronDown,\n  Circle,\n  Clock3,\n  Copy,\n  Download,\n  FileCode2,\n  FileOutput,\n  Files,\n  GitFork,\n  PencilLine,\n  RefreshCw,\n  RotateCcw,\n  TerminalSquare,\n  TestTube2,\n  X,\n  XCircle,\n} from 'lucide-react';\nimport type { ComponentType, ReactNode } from 'react';\n\nimport { useMonkeysLocale, useMonkeysLocaleMessages } from '../../provider';\nimport { cn } from '../layout';\nimport { Button, Tabs, TabsContent, TabsList, TabsTrigger } from '../primitives';\nimport {\n  createAgentWorkbenchDetailsModel,\n  type AgentWorkbenchDetailsModel,\n} from './details-model';\n\nexport type AgentWorkbenchDetailsTab = 'summary' | 'workspace';\nexport type AgentWorkbenchDetailsState =\n  | 'ready'\n  | 'loading'\n  | 'empty'\n  | 'error';\n\nexport type AgentWorkbenchDetailsIntent =\n  | { type: 'close' }\n  | { type: 'copy-summary'; summaryId: string; text: string }\n  | { type: 'retry'; eventId: string }\n  | { type: 'retry-summary'; eventId: string }\n  | { type: 'resume'; sessionId: string }\n  | { type: 'continue-in-new-task'; sessionId: string }\n  | { type: 'edit-and-rerun'; sessionId: string }\n  | { type: 'export'; sessionId: string };\n\nexport interface AgentWorkbenchTaskDetailsClassNames {\n  root?: string;\n  header?: string;\n  tabs?: string;\n  body?: string;\n  section?: string;\n  code?: string;\n}\n\nexport interface AgentWorkbenchTaskDetailsProps {\n  viewModel?: AgentSessionViewModel;\n  state?: AgentWorkbenchDetailsState;\n  activeTab?: AgentWorkbenchDetailsTab;\n  className?: string;\n  classNames?: AgentWorkbenchTaskDetailsClassNames;\n  onActiveTabChange?: (tab: AgentWorkbenchDetailsTab) => void;\n  onIntent?: (intent: AgentWorkbenchDetailsIntent) => void;\n  onExport?: (intent: Extract<AgentWorkbenchDetailsIntent, { type: 'export' }>) => void;\n  onCopySummary?: (intent: Extract<AgentWorkbenchDetailsIntent, { type: 'copy-summary' }>) => void;\n  onRetry?: (intent: Extract<AgentWorkbenchDetailsIntent, { type: 'retry' }>) => void;\n  onRetrySummary?: (intent: Extract<AgentWorkbenchDetailsIntent, { type: 'retry-summary' }>) => void;\n}\n\nfunction formatDuration(durationMs: number | undefined): string {\n  if (durationMs === undefined) return '-';\n  const seconds = Math.max(0, Math.round(durationMs / 1_000));\n  if (seconds < 60) return `${seconds}s`;\n  return `${Math.floor(seconds / 60)}m ${seconds % 60}s`;\n}\n\nfunction formatDate(value: string | undefined, locale: string): string {\n  if (!value) return '-';\n  const date = new Date(value);\n  if (Number.isNaN(date.getTime())) return '-';\n  return new Intl.DateTimeFormat(locale, {\n    dateStyle: 'medium',\n    timeStyle: 'short',\n  }).format(date);\n}\n\nfunction Count({ value }: { value: number }) {\n  return (\n    <span className=\"rounded-full bg-muted px-1.5 py-0.5 text-[10px] font-semibold text-foreground\">\n      {value}\n    </span>\n  );\n}\n\nfunction DetailsSection({\n  title,\n  count,\n  icon: Icon,\n  className,\n  children,\n}: {\n  title: string;\n  count: number;\n  icon: ComponentType<{ className?: string }>;\n  className?: string;\n  children: ReactNode;\n}) {\n  if (count === 0) return null;\n  return (\n    <details\n      className={cn(\n        'group rounded-lg border border-border bg-card text-card-foreground',\n        className,\n      )}\n      open\n    >\n      <summary className=\"flex cursor-pointer list-none items-center gap-2 px-3 py-2.5 text-sm font-medium outline-none focus-visible:ring-2 focus-visible:ring-ring [&::-webkit-details-marker]:hidden\">\n        <Icon className=\"size-4 text-muted-foreground\" aria-hidden=\"true\" />\n        <span className=\"min-w-0 flex-1 truncate\">{title}</span>\n        <Count value={count} />\n        <ChevronDown\n          className=\"size-4 text-muted-foreground transition-transform group-open:rotate-180\"\n          aria-hidden=\"true\"\n        />\n      </summary>\n      <div className=\"border-t border-border p-3\">{children}</div>\n    </details>\n  );\n}\n\nfunction StatusIcon({ status }: { status: string }) {\n  if (status === 'completed' || status === 'passed') {\n    return <CheckCircle2 className=\"size-4 text-primary\" aria-hidden=\"true\" />;\n  }\n  if (status === 'failed') {\n    return <XCircle className=\"size-4 text-destructive-text\" aria-hidden=\"true\" />;\n  }\n  if (status === 'running') {\n    return <Clock3 className=\"size-4 animate-pulse\" aria-hidden=\"true\" />;\n  }\n  return <Circle className=\"size-4 text-muted-foreground\" aria-hidden=\"true\" />;\n}\n\nfunction StateContent({ state }: { state: Exclude<AgentWorkbenchDetailsState, 'ready'> }) {\n  const messages = useMonkeysLocaleMessages().agentWorkbench.details;\n  const error = state === 'error';\n  return (\n    <div\n      className=\"flex min-h-48 flex-col items-center justify-center gap-2 px-6 text-center\"\n      role={error ? 'alert' : state === 'loading' ? 'status' : undefined}\n      aria-busy={state === 'loading' || undefined}\n    >\n      {state === 'loading' ? (\n        <RefreshCw className=\"size-5 animate-spin text-muted-foreground\" aria-hidden=\"true\" />\n      ) : error ? (\n        <AlertCircle className=\"size-5 text-destructive-text\" aria-hidden=\"true\" />\n      ) : (\n        <FileOutput className=\"size-5 text-muted-foreground\" aria-hidden=\"true\" />\n      )}\n      <div className=\"text-sm font-medium\">{messages.state[state].title}</div>\n      <div className=\"text-xs text-muted-foreground\">\n        {messages.state[state].description}\n      </div>\n    </div>\n  );\n}\n\nfunction SummaryPanel({\n  model,\n  onIntent,\n}: {\n  model: AgentWorkbenchDetailsModel;\n  onIntent?: (intent: AgentWorkbenchDetailsIntent) => void;\n}) {\n  const workbenchMessages = useMonkeysLocaleMessages().agentWorkbench;\n  const messages = workbenchMessages.details;\n  const locale = useMonkeysLocale().locale;\n  const summary = model.summary;\n  const run = model.run?.payload;\n  const error = model.error;\n  const retryable = model.status === 'failed' && error?.payload.retryable;\n  const canResume =\n    model.resumable && ['stopped', 'completed', 'failed'].includes(model.status);\n  const canContinueInNewTask = model.capabilities.threadForking;\n  const canEditAndRerun = model.capabilities.editAndRerun;\n  const tokenUsage =\n    model.usage?.payload.totalTokens ??\n    (model.usage?.payload.inputTokens !== undefined ||\n    model.usage?.payload.outputTokens !== undefined\n      ? (model.usage.payload.inputTokens ?? 0) +\n        (model.usage.payload.outputTokens ?? 0)\n      : undefined);\n\n  return (\n    <div className=\"space-y-3\">\n      <section className=\"rounded-lg border border-border bg-muted/40 p-3\">\n        <div className=\"flex items-center gap-2\">\n          <StatusIcon status={model.status} />\n          <span className=\"text-sm font-semibold\">\n            {messages.status[model.status]}\n          </span>\n        </div>\n        <dl className=\"mt-3 grid grid-cols-2 gap-3 text-xs\">\n          <div>\n            <dt className=\"text-muted-foreground\">{messages.duration}</dt>\n            <dd className=\"mt-0.5 font-medium\">\n              {formatDuration(run?.durationMs)}\n            </dd>\n          </div>\n          <div>\n            <dt className=\"text-muted-foreground\">{messages.updated}</dt>\n            <dd className=\"mt-0.5 truncate font-medium\">\n              {formatDate(\n                run?.stoppedAt ?? run?.completedAt ?? run?.failedAt,\n                locale,\n              )}\n            </dd>\n          </div>\n          <div>\n            <dt className=\"text-muted-foreground\">{messages.model}</dt>\n            <dd className=\"mt-0.5 truncate font-medium\">{model.modelId}</dd>\n          </div>\n          <div>\n            <dt className=\"text-muted-foreground\">{messages.mode}</dt>\n            <dd className=\"mt-0.5 font-medium\">\n              {workbenchMessages.modes[model.mode]}\n            </dd>\n          </div>\n          {model.permissionProfile ? (\n            <div>\n              <dt className=\"text-muted-foreground\">{messages.permissions}</dt>\n              <dd className=\"mt-0.5 font-medium\">\n                {workbenchMessages.composer.permissionOptions[model.permissionProfile]}\n              </dd>\n            </div>\n          ) : null}\n          {tokenUsage !== undefined ? (\n            <div>\n              <dt className=\"text-muted-foreground\">{messages.tokenUsage}</dt>\n              <dd className=\"mt-0.5 font-medium\">\n                {new Intl.NumberFormat(locale).format(tokenUsage)}\n              </dd>\n            </div>\n          ) : null}\n        </dl>\n        {error ? (\n          <div className=\"mt-3 rounded-md border border-destructive/30 bg-destructive/5 p-2.5 text-sm text-destructive-text\" role=\"alert\">\n            {error.payload.message}\n          </div>\n        ) : null}\n        {retryable || canResume ? (\n          <div className=\"mt-3 flex flex-wrap gap-2\">\n            {retryable ? (\n              <Button\n                type=\"button\"\n                variant=\"outline\"\n                size=\"sm\"\n                className=\"h-auto px-2.5 py-1.5 text-xs\"\n                disabled={!onIntent}\n                onClick={() => onIntent?.({ type: 'retry', eventId: error.eventId })}\n              >\n                {messages.actions.retry}\n              </Button>\n            ) : null}\n            {canResume ? (\n              <Button\n                type=\"button\"\n                size=\"sm\"\n                className=\"h-auto px-2.5 py-1.5 text-xs\"\n                disabled={!onIntent}\n                onClick={() =>\n                  onIntent?.({ type: 'resume', sessionId: model.sessionId })\n                }\n              >\n                {messages.actions.resume}\n              </Button>\n            ) : null}\n          </div>\n        ) : null}\n      </section>\n\n      <section className=\"flex flex-wrap gap-2 rounded-lg border border-border bg-card p-3 text-card-foreground\">\n        {canContinueInNewTask ? (\n          <Button\n            type=\"button\"\n            variant=\"outline\"\n            size=\"sm\"\n            className=\"h-auto gap-1.5 px-2.5 py-1.5 text-xs\"\n            disabled={!onIntent}\n            onClick={() => onIntent?.({ type: 'continue-in-new-task', sessionId: model.sessionId })}\n          >\n            <GitFork className=\"size-3.5\" aria-hidden=\"true\" />\n            {messages.actions.continueInNewTask}\n          </Button>\n        ) : null}\n        {canEditAndRerun ? (\n          <Button\n            type=\"button\"\n            variant=\"outline\"\n            size=\"sm\"\n            className=\"h-auto gap-1.5 px-2.5 py-1.5 text-xs\"\n            disabled={!onIntent}\n            onClick={() => onIntent?.({ type: 'edit-and-rerun', sessionId: model.sessionId })}\n          >\n            <PencilLine className=\"size-3.5\" aria-hidden=\"true\" />\n            {messages.actions.editAndRerun}\n          </Button>\n        ) : null}\n        <Button\n          type=\"button\"\n          variant=\"outline\"\n          size=\"sm\"\n          className=\"h-auto gap-1.5 px-2.5 py-1.5 text-xs\"\n          disabled={!onIntent}\n          onClick={() => onIntent?.({ type: 'export', sessionId: model.sessionId })}\n        >\n          <Download className=\"size-3.5\" aria-hidden=\"true\" />\n          {messages.actions.export}\n        </Button>\n      </section>\n\n      <section className=\"rounded-lg border border-border bg-card p-3 text-card-foreground\">\n        <div className=\"flex items-center justify-between gap-2\">\n          <h3 className=\"text-sm font-semibold\">{messages.summary}</h3>\n          {summary?.payload.text ? (\n            <Button\n              type=\"button\"\n              variant=\"ghost\"\n              size=\"icon\"\n              className=\"size-8 text-muted-foreground hover:text-foreground\"\n              aria-label={messages.actions.copySummary}\n              disabled={!onIntent}\n              onClick={() =>\n                onIntent?.({\n                  type: 'copy-summary',\n                  summaryId: summary.payload.summaryId,\n                  text: summary.payload.text,\n                })\n              }\n            >\n              <Copy className=\"size-4\" aria-hidden=\"true\" />\n            </Button>\n          ) : null}\n        </div>\n        {summary?.payload.status === 'failed' ? (\n          <div className=\"mt-3 space-y-2\">\n            <p className=\"text-sm text-destructive-text\" role=\"alert\">\n              {messages.summaryFailed}\n            </p>\n            <Button\n              type=\"button\"\n              variant=\"outline\"\n              size=\"sm\"\n              className=\"h-auto gap-1.5 px-2.5 py-1.5 text-xs\"\n              disabled={!onIntent}\n              onClick={() =>\n                onIntent?.({ type: 'retry-summary', eventId: summary.eventId })\n              }\n            >\n              <RotateCcw className=\"size-3.5\" aria-hidden=\"true\" />\n              {messages.actions.retrySummary}\n            </Button>\n          </div>\n        ) : summary?.payload.text ? (\n          <div className=\"mt-3 space-y-3 text-sm\">\n            <p className=\"whitespace-pre-wrap text-muted-foreground\">\n              {summary.payload.text}\n            </p>\n            {summary.payload.highlights.length > 0 ? (\n              <div>\n                <h4 className=\"text-xs font-medium\">{messages.highlights}</h4>\n                <ul className=\"mt-1 list-disc space-y-1 pl-5 text-muted-foreground\">\n                  {summary.payload.highlights.map((item) => (\n                    <li key={item}>{item}</li>\n                  ))}\n                </ul>\n              </div>\n            ) : null}\n            {summary.payload.pendingItems.length > 0 ? (\n              <div>\n                <h4 className=\"text-xs font-medium\">{messages.pendingItems}</h4>\n                <ul className=\"mt-1 list-disc space-y-1 pl-5 text-muted-foreground\">\n                  {summary.payload.pendingItems.map((item) => (\n                    <li key={item}>{item}</li>\n                  ))}\n                </ul>\n              </div>\n            ) : null}\n          </div>\n        ) : (\n          <p className=\"mt-3 text-sm text-muted-foreground\">\n            {messages.summaryEmpty}\n          </p>\n        )}\n      </section>\n    </div>\n  );\n}\n\nfunction WorkspacePanel({\n  model,\n  sectionClassName,\n  codeClassName,\n}: {\n  model: AgentWorkbenchDetailsModel;\n  sectionClassName?: string;\n  codeClassName?: string;\n}) {\n  const messages = useMonkeysLocaleMessages().agentWorkbench.details.workspace;\n  const workspace = model.workspace;\n  return (\n    <div className=\"space-y-3\">\n      <DetailsSection\n        title={messages.diffs}\n        count={workspace.diffs.length}\n        icon={FileCode2}\n        className={sectionClassName}\n      >\n        <div className=\"space-y-3\">\n          {workspace.diffs.map((event) => (\n            <div key={event.payload.path} className=\"min-w-0\">\n              <div className=\"flex items-center justify-between gap-2 text-xs\">\n                <span className=\"truncate font-medium\">{event.payload.path}</span>\n                <span className=\"shrink-0 text-muted-foreground\">\n                  {messages.diffStatus[event.payload.status]}\n                </span>\n              </div>\n              {event.payload.patch ? (\n                <pre className={cn('mt-2 max-h-72 overflow-auto whitespace-pre-wrap rounded-md bg-muted p-3 font-mono text-xs', codeClassName)}>\n                  {event.payload.patch}\n                </pre>\n              ) : null}\n            </div>\n          ))}\n        </div>\n      </DetailsSection>\n\n      <DetailsSection\n        title={messages.files}\n        count={workspace.files.length}\n        icon={Files}\n        className={sectionClassName}\n      >\n        <ul className=\"space-y-2 text-xs\">\n          {workspace.files.map((event) => (\n            <li key={event.payload.path} className=\"flex items-center gap-2\">\n              <FileOutput className=\"size-3.5 text-muted-foreground\" aria-hidden=\"true\" />\n              <span className=\"min-w-0 flex-1 truncate\">{event.payload.path}</span>\n              <span className=\"text-muted-foreground\">\n                {messages.fileOperation[event.payload.operation]}\n              </span>\n            </li>\n          ))}\n        </ul>\n      </DetailsSection>\n\n      <DetailsSection\n        title={messages.terminals}\n        count={workspace.terminals.length}\n        icon={TerminalSquare}\n        className={sectionClassName}\n      >\n        <div className=\"space-y-3\">\n          {workspace.terminals.map((terminal) => (\n            <div key={terminal.terminalId}>\n              <div className=\"flex justify-between gap-2 text-xs font-medium\">\n                <span>{terminal.terminalId}</span>\n                <span className=\"text-muted-foreground\">\n                  {terminal.exitCode === undefined\n                    ? terminal.status\n                    : messages.exitCode({ code: terminal.exitCode })}\n                </span>\n              </div>\n              <pre className={cn('mt-2 max-h-72 overflow-auto whitespace-pre-wrap rounded-md bg-muted p-3 font-mono text-xs', codeClassName)}>\n                {[terminal.stdin, terminal.stdout, terminal.stderr]\n                  .filter(Boolean)\n                  .join('\\n')}\n              </pre>\n            </div>\n          ))}\n        </div>\n      </DetailsSection>\n\n      <DetailsSection\n        title={messages.tests}\n        count={workspace.tests.length}\n        icon={TestTube2}\n        className={sectionClassName}\n      >\n        <ul className=\"space-y-2 text-xs\">\n          {workspace.tests.map((event) => (\n            <li key={event.payload.testId}>\n              <div className=\"flex items-center gap-2\">\n                <StatusIcon status={event.payload.status} />\n                <span className=\"min-w-0 flex-1 truncate\">{event.payload.name}</span>\n                {event.payload.durationMs === undefined ? null : (\n                  <span className=\"text-muted-foreground\">\n                    {formatDuration(event.payload.durationMs)}\n                  </span>\n                )}\n              </div>\n              {event.payload.output ? (\n                <pre className={cn('mt-2 max-h-48 overflow-auto whitespace-pre-wrap rounded-md bg-muted p-3 font-mono text-xs', codeClassName)}>\n                  {event.payload.output}\n                </pre>\n              ) : null}\n            </li>\n          ))}\n        </ul>\n      </DetailsSection>\n\n      <DetailsSection\n        title={messages.artifacts}\n        count={workspace.artifacts.length}\n        icon={FileOutput}\n        className={sectionClassName}\n      >\n        <ul className=\"space-y-2 text-xs\">\n          {workspace.artifacts.map((event) => (\n            <li key={event.payload.artifactId} className=\"flex items-center gap-2\">\n              <FileOutput className=\"size-3.5 text-muted-foreground\" aria-hidden=\"true\" />\n              <span className=\"min-w-0 flex-1 truncate\">{event.payload.name}</span>\n              <span className=\"text-muted-foreground\">\n                {event.payload.kind}\n              </span>\n            </li>\n          ))}\n        </ul>\n      </DetailsSection>\n    </div>\n  );\n}\n\nexport function AgentWorkbenchTaskDetails({\n  viewModel,\n  state = 'ready',\n  activeTab = 'summary',\n  className,\n  classNames,\n  onActiveTabChange,\n  onIntent,\n  onExport,\n  onCopySummary,\n  onRetry,\n  onRetrySummary,\n}: AgentWorkbenchTaskDetailsProps) {\n  const dispatch = onIntent || onExport || onCopySummary || onRetry || onRetrySummary ? (intent: AgentWorkbenchDetailsIntent) => {\n    if (intent.type === 'export' && onExport) return onExport(intent);\n    if (intent.type === 'copy-summary' && onCopySummary) return onCopySummary(intent);\n    if (intent.type === 'retry' && onRetry) return onRetry(intent);\n    if (intent.type === 'retry-summary' && onRetrySummary) return onRetrySummary(intent);\n    onIntent?.(intent);\n  } : undefined;\n  const messages = useMonkeysLocaleMessages().agentWorkbench.details;\n  if (state !== 'ready') {\n    return (\n      <aside className={cn('flex h-full min-h-0 flex-col border-l border-border bg-background', classNames?.root, className)}>\n        <StateContent state={state} />\n      </aside>\n    );\n  }\n  if (!viewModel) {\n    return (\n      <aside className={cn('flex h-full min-h-0 flex-col border-l border-border bg-background', classNames?.root, className)}>\n        <StateContent state=\"empty\" />\n      </aside>\n    );\n  }\n\n  const model = createAgentWorkbenchDetailsModel(viewModel);\n  const workspaceCount = Object.values(model.workspace).reduce(\n    (total, items) => total + items.length,\n    0,\n  );\n  const workspaceAvailable = workspaceCount > 0;\n  const resolvedTab = activeTab === 'workspace' && !workspaceAvailable ? 'summary' : activeTab;\n  const tabs: Array<{ id: AgentWorkbenchDetailsTab; label: string; count: number }> = [\n    { id: 'summary', label: messages.tabs.summary, count: model.summary ? 1 : 0 },\n    ...(workspaceAvailable\n      ? [{ id: 'workspace' as const, label: messages.tabs.workspace, count: workspaceCount }]\n      : []),\n  ];\n\n  return (\n    <aside\n      className={cn(\n        'flex h-full min-h-0 min-w-0 flex-col border-l border-border bg-background text-foreground',\n        classNames?.root,\n        className,\n      )}\n      data-agent-workbench-mode={model.mode}\n    >\n      <header className={cn('flex shrink-0 items-center gap-2 border-b border-border px-4 py-3', classNames?.header)}>\n        <div className=\"min-w-0 flex-1\">\n          <h2 className=\"truncate text-sm font-semibold\">{messages.title}</h2>\n          <p className=\"mt-0.5 truncate text-xs text-muted-foreground\">\n            {messages.description}\n          </p>\n        </div>\n        {onIntent ? (\n          <Button\n            type=\"button\"\n            variant=\"ghost\"\n            size=\"icon\"\n            className=\"text-muted-foreground hover:text-foreground\"\n            aria-label={messages.actions.close}\n            onClick={() => onIntent({ type: 'close' })}\n          >\n            <X className=\"size-4\" aria-hidden=\"true\" />\n          </Button>\n        ) : null}\n      </header>\n\n      <Tabs\n        value={resolvedTab}\n        className=\"flex min-h-0 flex-1 flex-col\"\n        onValueChange={(tab) => onActiveTabChange?.(tab as AgentWorkbenchDetailsTab)}\n      >\n        <TabsList\n          aria-label={messages.tabs.label}\n          className={cn(\n            'flex h-auto shrink-0 gap-1 rounded-none border-b border-border bg-transparent px-3 py-2',\n            classNames?.tabs,\n          )}\n        >\n          {tabs.map((tab) => (\n            <TabsTrigger\n              key={tab.id}\n              value={tab.id}\n              className=\"min-w-0 flex-1 gap-1 px-2 py-1.5 text-xs shadow-none data-[state=active]:bg-primary/10 data-[state=active]:text-primary data-[state=active]:shadow-none\"\n            >\n              <span className=\"truncate\">{tab.label}</span>\n              <Count value={tab.count} />\n            </TabsTrigger>\n          ))}\n        </TabsList>\n        <TabsContent\n          value=\"summary\"\n          className={cn('mt-0 min-h-0 flex-1 overflow-y-auto p-3', classNames?.body)}\n        >\n          <SummaryPanel model={model} onIntent={dispatch} />\n        </TabsContent>\n        {workspaceAvailable ? (\n          <TabsContent\n            value=\"workspace\"\n            className={cn('mt-0 min-h-0 flex-1 overflow-y-auto p-3', classNames?.body)}\n          >\n            <WorkspacePanel\n              model={model}\n              sectionClassName={classNames?.section}\n              codeClassName={classNames?.code}\n            />\n          </TabsContent>\n        ) : null}\n      </Tabs>\n    </aside>\n  );\n}\n","import { PanelLeft, PanelRight } from \"lucide-react\";\nimport {\n  type CSSProperties,\n  type HTMLAttributes,\n  type PointerEvent as ReactPointerEvent,\n  type ReactNode,\n  useCallback,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState,\n} from \"react\";\n\nimport { cn } from \"../layout\";\nimport { Sheet, SheetContent, SheetTitle } from \"../primitives\";\nimport {\n  type AgentWorkbenchAppearanceOptions,\n  useAgentWorkbenchAppearance,\n} from \"./appearance\";\n\nexport type AgentWorkbenchShellLayout =\n  | \"wide\"\n  | \"compact\"\n  | \"drawer\"\n  | \"mobile\";\n\nexport type AgentWorkbenchShellMeasurement = \"container\" | \"viewport\";\n\nexport interface AgentWorkbenchShellBreakpoints {\n  mobile: number;\n  drawer: number;\n  compact: number;\n  lowHeight: number;\n}\n\nexport const AGENT_WORKBENCH_SHELL_BREAKPOINTS: AgentWorkbenchShellBreakpoints =\n  Object.freeze({\n    mobile: 768,\n    drawer: 1200,\n    compact: 1440,\n    lowHeight: 768,\n  });\n\nexport function resolveAgentWorkbenchShellLayout(\n  width: number,\n  breakpoints: AgentWorkbenchShellBreakpoints = AGENT_WORKBENCH_SHELL_BREAKPOINTS,\n): AgentWorkbenchShellLayout {\n  if (width < breakpoints.mobile) return \"mobile\";\n  if (width < breakpoints.drawer) return \"drawer\";\n  if (width < breakpoints.compact) return \"compact\";\n  return \"wide\";\n}\n\nexport interface AgentWorkbenchShellClassNames {\n  root?: string;\n  controls?: string;\n  sidebar?: string;\n  main?: string;\n  details?: string;\n  sidebarOverlay?: string;\n  detailsOverlay?: string;\n  resizeHandle?: string;\n}\n\nexport interface AgentWorkbenchShellLabels {\n  openSidebar?: string;\n  sidebar?: string;\n  openDetails?: string;\n  details?: string;\n  resizeSidebar?: string;\n  resizeDetails?: string;\n}\n\nexport interface AgentWorkbenchShellProps\n  extends Omit<HTMLAttributes<HTMLDivElement>, \"children\">,\n    AgentWorkbenchAppearanceOptions {\n  /** Left navigation content. The shell only owns its layout and overflow boundary. */\n  sidebar?: ReactNode;\n  /** Primary conversation content. */\n  children: ReactNode;\n  /** Optional right-side task details or artifact workspace. */\n  details?: ReactNode;\n  /** Whether the left navigation is available to the layout. */\n  sidebarOpen?: boolean;\n  /** Whether the left navigation starts expanded in inline layouts. */\n  sidebarDefaultOpen?: boolean;\n  /** Whether the right details region is available to the layout. */\n  detailsOpen?: boolean;\n  /** Notified when a responsive details overlay closes. */\n  onDetailsOpenChange?: (open: boolean) => void;\n  /** Width of the left navigation column in CSS pixels or any valid CSS size. */\n  sidebarWidth?: number | string;\n  /** Width of the right details column in CSS pixels or any valid CSS size. */\n  detailsWidth?: number | string;\n  sidebarMinWidth?: number;\n  sidebarMaxWidth?: number;\n  detailsMinWidth?: number;\n  detailsMaxWidth?: number;\n  mainMinWidth?: number;\n  /** Enables the canonical wide/compact/drawer/mobile layout policy. */\n  responsive?: boolean;\n  /** Container measurement is reusable; viewport keeps nested workbench shells in sync. */\n  responsiveMeasurement?: AgentWorkbenchShellMeasurement;\n  /** Explicit dimensions are useful for deterministic embeds and visual tests. */\n  responsiveWidth?: number;\n  responsiveHeight?: number;\n  breakpoints?: AgentWorkbenchShellBreakpoints;\n  onLayoutChange?: (layout: AgentWorkbenchShellLayout) => void;\n  /** Shows the canonical navigation button whenever the sidebar becomes an overlay. */\n  showResponsiveControls?: boolean;\n  /** Shells with the same group id keep responsive overlays mutually exclusive. */\n  overlayGroupId?: string;\n  /** Enables pointer and keyboard resizing for inline side regions. */\n  resizable?: boolean;\n  widthStorageKey?: string;\n  onSidebarWidthChange?: (width: number) => void;\n  onDetailsWidthChange?: (width: number) => void;\n  labels?: AgentWorkbenchShellLabels;\n  classNames?: AgentWorkbenchShellClassNames;\n}\n\ntype ShellStyle = CSSProperties & {\n  \"--agent-workbench-sidebar-width\"?: string;\n  \"--agent-workbench-details-width\"?: string;\n};\n\ntype MeasuredSize = { width: number; height: number };\ntype ResizeRegion = \"sidebar\" | \"details\";\n\nconst OVERLAY_EVENT = \"monkeys-agent-workbench-overlay-open\";\n\nfunction cssSize(value: number | string): string {\n  return typeof value === \"number\" ? `${value}px` : value;\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n  return Math.min(Math.max(value, min), Math.max(min, max));\n}\n\nfunction initialMeasuredSize(): MeasuredSize {\n  if (typeof window === \"undefined\") return { width: 1440, height: 900 };\n  return {\n    width: window.visualViewport?.width ?? window.innerWidth,\n    height: window.visualViewport?.height ?? window.innerHeight,\n  };\n}\n\nfunction readStoredWidths(\n  storageKey?: string,\n): Partial<Record<ResizeRegion, number>> {\n  if (!storageKey || typeof window === \"undefined\") return {};\n  try {\n    const value = JSON.parse(window.localStorage.getItem(storageKey) ?? \"{}\");\n    return typeof value === \"object\" && value !== null ? value : {};\n  } catch {\n    return {};\n  }\n}\n\nfunction writeStoredWidths(\n  storageKey: string | undefined,\n  widths: Record<ResizeRegion, number>,\n) {\n  if (!storageKey || typeof window === \"undefined\") return;\n  window.localStorage.setItem(storageKey, JSON.stringify(widths));\n}\n\n/**\n * Canonical responsive shell for Agent workbenches.\n *\n * - >=1440px: complete three-column layout.\n * - 1200-1439px: compact navigation + main; details use an overlay.\n * - 768-1199px: main-only layout with mutually exclusive drawers.\n * - <768px: main-only layout with full-screen side panels.\n *\n * Every region remains bounded by one scroll owner. Opening or closing an\n * overlay never reparents the main conversation, so its scroll and runtime\n * state remain intact.\n */\nexport function AgentWorkbenchShell({\n  sidebar,\n  children,\n  details,\n  sidebarOpen = true,\n  sidebarDefaultOpen = true,\n  detailsOpen = true,\n  onDetailsOpenChange,\n  sidebarWidth = 280,\n  detailsWidth = 360,\n  sidebarMinWidth = 240,\n  sidebarMaxWidth = 400,\n  detailsMinWidth = 320,\n  detailsMaxWidth = 720,\n  mainMinWidth = 600,\n  responsive = false,\n  responsiveMeasurement = \"container\",\n  responsiveWidth,\n  responsiveHeight,\n  breakpoints = AGENT_WORKBENCH_SHELL_BREAKPOINTS,\n  onLayoutChange,\n  showResponsiveControls = true,\n  overlayGroupId,\n  resizable = false,\n  widthStorageKey,\n  onSidebarWidthChange,\n  onDetailsWidthChange,\n  labels,\n  variant,\n  density,\n  className,\n  classNames,\n  style,\n  ...rootProps\n}: AgentWorkbenchShellProps) {\n  const appearance = useAgentWorkbenchAppearance({ variant, density });\n  const rootRef = useRef<HTMLDivElement>(null);\n  const sidebarReturnFocusRef = useRef<HTMLElement | null>(null);\n  const detailsReturnFocusRef = useRef<HTMLElement | null>(null);\n  const shellId = useId();\n  const [measuredSize, setMeasuredSize] = useState(initialMeasuredSize);\n  const storedWidths = useMemo(\n    () => readStoredWidths(widthStorageKey),\n    [widthStorageKey],\n  );\n  const [sidebarPixelWidth, setSidebarPixelWidth] = useState(() =>\n    typeof sidebarWidth === \"number\"\n      ? storedWidths.sidebar ?? sidebarWidth\n      : 280,\n  );\n  const [detailsPixelWidth, setDetailsPixelWidth] = useState(() =>\n    typeof detailsWidth === \"number\"\n      ? storedWidths.details ?? detailsWidth\n      : 360,\n  );\n  const [sidebarOverlayOpen, setSidebarOverlayOpen] = useState(false);\n  const [detailsOverlayOpen, setDetailsOverlayOpen] = useState(false);\n  const [sidebarExpanded, setSidebarExpanded] = useState(sidebarDefaultOpen);\n\n  const rememberReturnFocus = useCallback(\n    (region: ResizeRegion, candidate: EventTarget | null = document.activeElement) => {\n      if (\n        !(candidate instanceof HTMLElement) ||\n        candidate === document.body ||\n        candidate === document.documentElement\n      ) {\n        return;\n      }\n      const targetRef =\n        region === \"sidebar\" ? sidebarReturnFocusRef : detailsReturnFocusRef;\n      targetRef.current = candidate;\n    },\n    [],\n  );\n\n  const restoreReturnFocus = useCallback((region: ResizeRegion) => {\n    const targetRef =\n      region === \"sidebar\" ? sidebarReturnFocusRef : detailsReturnFocusRef;\n    const target = targetRef.current;\n    targetRef.current = null;\n    if (!target?.isConnected) return;\n    window.requestAnimationFrame(() => {\n      if (target.isConnected) target.focus();\n    });\n  }, []);\n\n  useEffect(() => {\n    if (typeof sidebarWidth === \"number\") {\n      setSidebarPixelWidth(storedWidths.sidebar ?? sidebarWidth);\n    }\n  }, [sidebarWidth, storedWidths.sidebar]);\n\n  useEffect(() => setSidebarExpanded(sidebarDefaultOpen), [sidebarDefaultOpen]);\n\n  useEffect(() => {\n    if (typeof detailsWidth === \"number\") {\n      setDetailsPixelWidth(storedWidths.details ?? detailsWidth);\n    }\n  }, [detailsWidth, storedWidths.details]);\n\n  useEffect(() => {\n    if (!responsive) return undefined;\n\n    const updateViewport = () => {\n      const viewport = initialMeasuredSize();\n      setMeasuredSize({\n        width: responsiveWidth ?? viewport.width,\n        height: responsiveHeight ?? viewport.height,\n      });\n    };\n\n    if (\n      responsiveMeasurement === \"viewport\" ||\n      responsiveWidth !== undefined ||\n      responsiveHeight !== undefined\n    ) {\n      updateViewport();\n      if (responsiveWidth !== undefined && responsiveHeight !== undefined) {\n        return undefined;\n      }\n      window.addEventListener(\"resize\", updateViewport);\n      window.visualViewport?.addEventListener(\"resize\", updateViewport);\n      return () => {\n        window.removeEventListener(\"resize\", updateViewport);\n        window.visualViewport?.removeEventListener(\"resize\", updateViewport);\n      };\n    }\n\n    const root = rootRef.current;\n    if (!root) return undefined;\n    const updateContainer = () => {\n      const rect = root.getBoundingClientRect();\n      setMeasuredSize({ width: rect.width, height: rect.height });\n    };\n    updateContainer();\n    if (typeof ResizeObserver === \"undefined\") {\n      window.addEventListener(\"resize\", updateContainer);\n      return () => window.removeEventListener(\"resize\", updateContainer);\n    }\n    const observer = new ResizeObserver(updateContainer);\n    observer.observe(root);\n    return () => observer.disconnect();\n  }, [responsive, responsiveHeight, responsiveMeasurement, responsiveWidth]);\n\n  const layout = responsive\n    ? resolveAgentWorkbenchShellLayout(\n        responsiveWidth ?? measuredSize.width,\n        breakpoints,\n      )\n    : \"wide\";\n  const lowHeight =\n    responsive &&\n    (responsiveHeight ?? measuredSize.height) <= breakpoints.lowHeight;\n\n  useEffect(() => onLayoutChange?.(layout), [layout, onLayoutChange]);\n\n  const hasSidebar = sidebar !== undefined && sidebarOpen;\n  const hasDetails = details !== undefined && detailsOpen;\n  const sidebarUsesOverlay = layout === \"drawer\" || layout === \"mobile\";\n  const inlineSidebar =\n    hasSidebar && sidebarExpanded && !sidebarUsesOverlay;\n  const inlineDetails = hasDetails && layout === \"wide\";\n\n  const resolvedSidebarMax = Math.max(\n    sidebarMinWidth,\n    Math.min(\n      sidebarMaxWidth,\n      layout === \"compact\" ? 320 : sidebarMaxWidth,\n      measuredSize.width -\n        (inlineDetails ? detailsPixelWidth : 0) -\n        mainMinWidth,\n    ),\n  );\n  const resolvedDetailsMax = Math.max(\n    detailsMinWidth,\n    Math.min(\n      detailsMaxWidth,\n      measuredSize.width -\n        (inlineSidebar ? sidebarPixelWidth : 0) -\n        mainMinWidth,\n    ),\n  );\n  const resolvedSidebarWidth =\n    typeof sidebarWidth === \"number\"\n      ? clamp(sidebarPixelWidth, sidebarMinWidth, resolvedSidebarMax)\n      : sidebarWidth;\n  const resolvedDetailsWidth =\n    typeof detailsWidth === \"number\"\n      ? clamp(detailsPixelWidth, detailsMinWidth, resolvedDetailsMax)\n      : detailsWidth;\n\n  const requestOverlay = useCallback(\n    (region: ResizeRegion) => {\n      if (!overlayGroupId || typeof window === \"undefined\") return;\n      window.dispatchEvent(\n        new CustomEvent(OVERLAY_EVENT, {\n          detail: { groupId: overlayGroupId, ownerId: shellId, region },\n        }),\n      );\n    },\n    [overlayGroupId, shellId],\n  );\n\n  useEffect(() => {\n    if (!overlayGroupId || typeof window === \"undefined\") return undefined;\n    const handleOverlayOpen = (event: Event) => {\n      const detail = (event as CustomEvent).detail;\n      if (detail?.groupId !== overlayGroupId || detail?.ownerId === shellId)\n        return;\n      setSidebarOverlayOpen(false);\n      setDetailsOverlayOpen((open) => {\n        if (open) onDetailsOpenChange?.(false);\n        return false;\n      });\n    };\n    window.addEventListener(OVERLAY_EVENT, handleOverlayOpen);\n    return () => window.removeEventListener(OVERLAY_EVENT, handleOverlayOpen);\n  }, [onDetailsOpenChange, overlayGroupId, shellId]);\n\n  useEffect(() => {\n    if (inlineSidebar || !hasSidebar) setSidebarOverlayOpen(false);\n  }, [hasSidebar, inlineSidebar]);\n\n  useEffect(() => {\n    if (inlineDetails || !hasDetails) {\n      setDetailsOverlayOpen(false);\n      return;\n    }\n    rememberReturnFocus(\"details\");\n    requestOverlay(\"details\");\n    setDetailsOverlayOpen(true);\n  }, [hasDetails, inlineDetails, rememberReturnFocus, requestOverlay]);\n\n  const persistWidths = useCallback(\n    (sidebarValue: number, detailsValue: number) => {\n      writeStoredWidths(widthStorageKey, {\n        sidebar: sidebarValue,\n        details: detailsValue,\n      });\n    },\n    [widthStorageKey],\n  );\n\n  const updateRegionWidth = useCallback(\n    (region: ResizeRegion, value: number) => {\n      if (region === \"sidebar\") {\n        const next = clamp(value, sidebarMinWidth, resolvedSidebarMax);\n        setSidebarPixelWidth(next);\n        onSidebarWidthChange?.(next);\n        return next;\n      }\n      const next = clamp(value, detailsMinWidth, resolvedDetailsMax);\n      setDetailsPixelWidth(next);\n      onDetailsWidthChange?.(next);\n      return next;\n    },\n    [\n      detailsMinWidth,\n      onDetailsWidthChange,\n      onSidebarWidthChange,\n      resolvedDetailsMax,\n      resolvedSidebarMax,\n      sidebarMinWidth,\n    ],\n  );\n\n  const beginResize = useCallback(\n    (region: ResizeRegion, event: ReactPointerEvent<HTMLButtonElement>) => {\n      if (!resizable || event.button !== 0) return;\n      event.preventDefault();\n      const startX = event.clientX;\n      const startWidth =\n        region === \"sidebar\" ? sidebarPixelWidth : detailsPixelWidth;\n      let latestWidth = startWidth;\n      const previousCursor = document.body.style.cursor;\n      const previousUserSelect = document.body.style.userSelect;\n      document.body.style.cursor = \"col-resize\";\n      document.body.style.userSelect = \"none\";\n\n      const handleMove = (pointerEvent: PointerEvent) => {\n        const delta = pointerEvent.clientX - startX;\n        latestWidth = updateRegionWidth(\n          region,\n          startWidth + (region === \"sidebar\" ? delta : -delta),\n        );\n      };\n      const handleUp = () => {\n        document.body.style.cursor = previousCursor;\n        document.body.style.userSelect = previousUserSelect;\n        window.removeEventListener(\"pointermove\", handleMove);\n        window.removeEventListener(\"pointerup\", handleUp);\n        persistWidths(\n          region === \"sidebar\" ? latestWidth : sidebarPixelWidth,\n          region === \"details\" ? latestWidth : detailsPixelWidth,\n        );\n      };\n      window.addEventListener(\"pointermove\", handleMove);\n      window.addEventListener(\"pointerup\", handleUp, { once: true });\n    },\n    [\n      detailsPixelWidth,\n      persistWidths,\n      resizable,\n      sidebarPixelWidth,\n      updateRegionWidth,\n    ],\n  );\n\n  const resizeWithKeyboard = useCallback(\n    (region: ResizeRegion, direction: number) => {\n      const current =\n        region === \"sidebar\" ? sidebarPixelWidth : detailsPixelWidth;\n      const next = updateRegionWidth(region, current + direction * 16);\n      persistWidths(\n        region === \"sidebar\" ? next : sidebarPixelWidth,\n        region === \"details\" ? next : detailsPixelWidth,\n      );\n    },\n    [detailsPixelWidth, persistWidths, sidebarPixelWidth, updateRegionWidth],\n  );\n\n  const shellStyle: ShellStyle = {\n    \"--agent-workbench-sidebar-width\": inlineSidebar\n      ? cssSize(resolvedSidebarWidth)\n      : \"0px\",\n    \"--agent-workbench-details-width\": inlineDetails\n      ? cssSize(resolvedDetailsWidth)\n      : \"0px\",\n    gridTemplateColumns:\n      inlineSidebar && inlineDetails\n        ? \"var(--agent-workbench-sidebar-width) minmax(0, 1fr) var(--agent-workbench-details-width)\"\n        : inlineSidebar\n          ? \"var(--agent-workbench-sidebar-width) minmax(0, 1fr)\"\n          : inlineDetails\n            ? \"minmax(0, 1fr) var(--agent-workbench-details-width)\"\n            : \"minmax(0, 1fr)\",\n    ...style,\n  };\n\n  const sidebarOverlay = hasSidebar && sidebarUsesOverlay;\n  const sidebarRestoreControl =\n    hasSidebar && !sidebarExpanded && !sidebarUsesOverlay;\n  const detailsOverlay = hasDetails && !inlineDetails;\n  const showControls =\n    responsive &&\n    showResponsiveControls &&\n    (sidebarOverlay || sidebarRestoreControl || detailsOverlay);\n  const mobilePanel = layout === \"mobile\";\n  const controlSize = mobilePanel ? \"size-11\" : \"size-9\";\n  const panelCloseClass = mobilePanel\n    ? \"[&>button]:flex [&>button]:size-11 [&>button]:items-center [&>button]:justify-center\"\n    : \"\";\n\n  return (\n    <div\n      {...rootProps}\n      ref={rootRef}\n      role={rootProps.role ?? \"region\"}\n      aria-label={rootProps[\"aria-label\"] ?? \"Agent workbench\"}\n      data-agent-workbench-shell=\"true\"\n      data-agent-workbench-variant={appearance.variant}\n      data-agent-workbench-density={appearance.density}\n      data-agent-workbench-layout={layout}\n      data-agent-workbench-low-height={lowHeight ? \"true\" : \"false\"}\n      data-sidebar-open={hasSidebar ? \"true\" : \"false\"}\n      data-sidebar-expanded={sidebarExpanded ? \"true\" : \"false\"}\n      data-sidebar-presentation={\n        inlineSidebar ? \"inline\" : sidebarOverlay ? \"overlay\" : \"hidden\"\n      }\n      data-details-open={hasDetails ? \"true\" : \"false\"}\n      data-details-presentation={\n        inlineDetails ? \"inline\" : detailsOverlay ? \"overlay\" : \"hidden\"\n      }\n      className={cn(\n        \"relative grid size-full min-h-0 min-w-0 overflow-hidden bg-background text-foreground\",\n        classNames?.root,\n        className,\n      )}\n      style={shellStyle}\n    >\n      {inlineSidebar ? (\n        <div\n          data-agent-workbench-region=\"sidebar\"\n          className={cn(\n            \"min-h-0 min-w-0 overflow-hidden border-r border-border bg-card text-card-foreground\",\n            classNames?.sidebar,\n          )}\n        >\n          {sidebar}\n        </div>\n      ) : null}\n      <div\n        data-agent-workbench-region=\"main\"\n        className={cn(\n          \"flex min-h-0 min-w-0 flex-col overflow-hidden bg-background\",\n          classNames?.main,\n        )}\n      >\n        {showControls ? (\n          <div\n            data-agent-workbench-responsive-controls=\"true\"\n            className={cn(\n              \"flex min-h-11 shrink-0 items-center gap-1 border-b border-border bg-background px-2\",\n              lowHeight && \"min-h-10\",\n              classNames?.controls,\n            )}\n          >\n            {sidebarOverlay || sidebarRestoreControl ? (\n              <button\n                type=\"button\"\n                className={cn(\n                  \"inline-flex items-center justify-center rounded-[var(--radius)] text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n                  controlSize,\n                )}\n                aria-label={labels?.openSidebar ?? \"Open navigation\"}\n                aria-expanded={\n                  sidebarRestoreControl ? sidebarExpanded : sidebarOverlayOpen\n                }\n                onClick={(event) => {\n                  if (sidebarRestoreControl) {\n                    setSidebarExpanded(true);\n                    return;\n                  }\n                  rememberReturnFocus(\"sidebar\", event.currentTarget);\n                  requestOverlay(\"sidebar\");\n                  setSidebarOverlayOpen(true);\n                }}\n              >\n                <PanelLeft className=\"size-5\" aria-hidden=\"true\" />\n              </button>\n            ) : null}\n            {detailsOverlay && details ? (\n              <button\n                type=\"button\"\n                className={cn(\n                  \"ml-auto inline-flex items-center justify-center rounded-[var(--radius)] text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n                  controlSize,\n                )}\n                aria-label={labels?.openDetails ?? \"Open details\"}\n                aria-expanded={detailsOverlayOpen}\n                onClick={(event) => {\n                  rememberReturnFocus(\"details\", event.currentTarget);\n                  requestOverlay(\"details\");\n                  setDetailsOverlayOpen(true);\n                }}\n              >\n                <PanelRight className=\"size-5\" aria-hidden=\"true\" />\n              </button>\n            ) : null}\n          </div>\n        ) : null}\n        <div className=\"min-h-0 min-w-0 flex-1 overflow-hidden\">{children}</div>\n      </div>\n      {inlineDetails ? (\n        <div\n          data-agent-workbench-region=\"details\"\n          className={cn(\n            \"min-h-0 min-w-0 overflow-hidden border-l border-border bg-card text-card-foreground\",\n            classNames?.details,\n          )}\n        >\n          {details}\n        </div>\n      ) : null}\n\n      {resizable && inlineSidebar && typeof sidebarWidth === \"number\" ? (\n        <button\n          type=\"button\"\n          role=\"separator\"\n          aria-orientation=\"vertical\"\n          aria-label={labels?.resizeSidebar ?? \"Resize navigation\"}\n          aria-valuemin={sidebarMinWidth}\n          aria-valuemax={resolvedSidebarMax}\n          aria-valuenow={Number(resolvedSidebarWidth)}\n          className={cn(\n            \"absolute inset-y-0 z-20 w-2 -translate-x-1/2 cursor-col-resize touch-none bg-transparent outline-none after:absolute after:inset-y-0 after:left-1/2 after:w-px after:-translate-x-1/2 after:bg-border after:transition-colors hover:after:bg-primary focus-visible:after:w-0.5 focus-visible:after:bg-ring\",\n            classNames?.resizeHandle,\n          )}\n          style={{ left: \"var(--agent-workbench-sidebar-width)\" }}\n          onPointerDown={(event) => beginResize(\"sidebar\", event)}\n          onKeyDown={(event) => {\n            if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") return;\n            event.preventDefault();\n            resizeWithKeyboard(\"sidebar\", event.key === \"ArrowRight\" ? 1 : -1);\n          }}\n        />\n      ) : null}\n      {resizable && inlineDetails && typeof detailsWidth === \"number\" ? (\n        <button\n          type=\"button\"\n          role=\"separator\"\n          aria-orientation=\"vertical\"\n          aria-label={labels?.resizeDetails ?? \"Resize details\"}\n          aria-valuemin={detailsMinWidth}\n          aria-valuemax={resolvedDetailsMax}\n          aria-valuenow={Number(resolvedDetailsWidth)}\n          className={cn(\n            \"absolute inset-y-0 right-[var(--agent-workbench-details-width)] z-20 w-2 translate-x-1/2 cursor-col-resize touch-none bg-transparent outline-none after:absolute after:inset-y-0 after:left-1/2 after:w-px after:-translate-x-1/2 after:bg-border after:transition-colors hover:after:bg-primary focus-visible:after:w-0.5 focus-visible:after:bg-ring\",\n            classNames?.resizeHandle,\n          )}\n          onPointerDown={(event) => beginResize(\"details\", event)}\n          onKeyDown={(event) => {\n            if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") return;\n            event.preventDefault();\n            resizeWithKeyboard(\"details\", event.key === \"ArrowLeft\" ? 1 : -1);\n          }}\n        />\n      ) : null}\n\n      {sidebarOverlay ? (\n        <Sheet\n          open={sidebarOverlayOpen}\n          onOpenChange={(open) => {\n            setSidebarOverlayOpen(open);\n            if (!open) restoreReturnFocus(\"sidebar\");\n          }}\n        >\n          <SheetContent\n            side=\"left\"\n            className={cn(\n              \"flex h-dvh flex-col gap-0 overflow-hidden bg-card p-0 text-card-foreground\",\n              mobilePanel\n                ? \"inset-0 size-dvw !max-w-none border-0\"\n                : \"w-[min(360px,90vw)] !max-w-none\",\n              panelCloseClass,\n              classNames?.sidebarOverlay,\n            )}\n          >\n            <SheetTitle className=\"sr-only\">\n              {labels?.sidebar ?? \"Navigation\"}\n            </SheetTitle>\n            <div className=\"min-h-0 flex-1 overflow-hidden\">{sidebar}</div>\n          </SheetContent>\n        </Sheet>\n      ) : null}\n      {detailsOverlay ? (\n        <Sheet\n          open={detailsOverlayOpen}\n          onOpenChange={(open) => {\n            setDetailsOverlayOpen(open);\n            if (!open) {\n              restoreReturnFocus(\"details\");\n              onDetailsOpenChange?.(false);\n            }\n          }}\n        >\n          <SheetContent\n            side=\"right\"\n            className={cn(\n              \"flex h-dvh flex-col gap-0 overflow-hidden bg-card p-0 text-card-foreground\",\n              mobilePanel\n                ? \"inset-0 size-dvw !max-w-none border-0\"\n                : \"w-[min(520px,92vw)] !max-w-none\",\n              panelCloseClass,\n              classNames?.detailsOverlay,\n            )}\n          >\n            <SheetTitle className=\"sr-only\">\n              {labels?.details ?? \"Details\"}\n            </SheetTitle>\n            <div className=\"min-h-0 flex-1 overflow-hidden\">{details}</div>\n          </SheetContent>\n        </Sheet>\n      ) : null}\n    </div>\n  );\n}\n","import React from 'react';\n\nconst FEISHU_ICON_URL =\n  'https://p1-hera.feishucdn.com/tos-cn-i-jbbdkfciu3/84a9f036fe2b44f99b899fff4beeb963~tplv-jbbdkfciu3-image:0:0.image';\n\nexport const FeishuIcon: React.FC<React.ComponentPropsWithoutRef<'img'>> = ({\n  alt = 'feishu',\n  width = 16,\n  height = 16,\n  style,\n  ...props\n}) => (\n  <img\n    src={FEISHU_ICON_URL}\n    alt={alt}\n    width={width}\n    height={height}\n    style={{ display: 'block', ...style }}\n    {...props}\n  />\n);\n\nexport const WeWorkIcon: React.FC<React.SVGProps<SVGSVGElement>> = ({\n  width = 16,\n  height = 16,\n  style,\n  ...props\n}) => (\n  <svg\n    width={width}\n    height={height}\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    style={{ display: 'block', ...style }}\n    {...props}\n  >\n    <path\n      d=\"M13.9 5.25c-4.45 0-8.05 2.84-8.05 6.35 0 1.89 1.06 3.6 2.72 4.76l-.45 2.01c-.1.45.38.8.78.57l2.42-1.38c.82.25 1.69.39 2.58.39 4.45 0 8.05-2.84 8.05-6.35s-3.6-6.35-8.05-6.35Z\"\n      fill=\"#1683FF\"\n    />\n    <path\n      d=\"M10.15 3.7c-4.5 0-8.15 2.86-8.15 6.4 0 1.78.94 3.39 2.45 4.55l-.36 1.88c-.08.43.36.75.75.55l2.18-1.15c.7.18 1.44.27 2.2.27 4.5 0 8.15-2.86 8.15-6.4s-3.65-6.1-7.22-6.1Z\"\n      fill=\"#07C160\"\n    />\n    <circle cx=\"7.2\" cy=\"9.75\" r=\"1.05\" fill=\"#FFFFFF\" />\n    <circle cx=\"11.1\" cy=\"9.75\" r=\"1.05\" fill=\"#FFFFFF\" />\n    <circle cx=\"15.8\" cy=\"11.9\" r=\"0.95\" fill=\"#FFFFFF\" />\n    <circle cx=\"19\" cy=\"11.9\" r=\"0.95\" fill=\"#FFFFFF\" />\n  </svg>\n);\n\nexport const DingtalkIcon: React.FC<React.SVGProps<SVGSVGElement>> = ({\n  className,\n  width = 16,\n  height = 16,\n  style,\n  ...props\n}) => (\n  <svg\n    width={width}\n    height={height}\n    viewBox=\"64 64 896 896\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    className={className}\n    style={{ display: 'block', ...style }}\n    {...props}\n  >\n    <path\n      d=\"M573.7 252.5C422.5 197.4 201.3 96.7 201.3 96.7c-15.7-4.1-17.9 11.1-17.9 11.1-5 61.1 33.6 160.5 53.6 182.8 19.9 22.3 319.1 113.7 319.1 113.7S326 357.9 270.5 341.9c-55.6-16-37.9 17.8-37.9 17.8 11.4 61.7 64.9 131.8 107.2 138.4 42.2 6.6 220.1 4 220.1 4s-35.5 4.1-93.2 11.9c-42.7 5.8-97 12.5-111.1 17.8-33.1 12.5 24 62.6 24 62.6 84.7 76.8 129.7 50.5 129.7 50.5 33.3-10.7 61.4-18.5 85.2-24.2L565 743.1h84.6L603 928l205.3-271.9H700.8l22.3-38.7c.3.5.4.8.4.8S799.8 496.1 829 433.8l.6-1h-.1c5-10.8 8.6-19.7 10-25.8 17-71.3-114.5-99.4-265.8-154.5z\"\n      fill=\"#1683FF\"\n    />\n  </svg>\n);\n\nexport const SSOIcon: React.FC<React.SVGProps<SVGSVGElement>> = ({ width = 16, height = 16, style, ...props }) => (\n  <svg\n    width={width}\n    height={height}\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    style={{ display: 'block', ...style }}\n    {...props}\n  >\n    <path\n      d=\"M12 2.65 5.35 5.4v5.2c0 4.75 2.85 8.98 6.65 10.75 3.8-1.77 6.65-6 6.65-10.75V5.4L12 2.65Z\"\n      fill=\"#2563EB\"\n    />\n    <path\n      d=\"M12 4.65 7.15 6.62v4.02c0 3.5 2 6.72 4.85 8.28 2.85-1.56 4.85-4.78 4.85-8.28V6.62L12 4.65Z\"\n      fill=\"#38BDF8\"\n    />\n    <circle cx=\"12\" cy=\"10.1\" r=\"2.15\" fill=\"#FFFFFF\" />\n    <path d=\"M12 12.25v3.3\" stroke=\"#FFFFFF\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\n    <path d=\"M12 15.05h2.2\" stroke=\"#FFFFFF\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\n  </svg>\n);\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { DingtalkIcon, FeishuIcon, SSOIcon, WeWorkIcon } from '../../icons-oauth';\nimport type { LoginPageLogoLocation, LoginPageProps } from './types';\n\nconst LOGIN_LOGO_POSITIONS: LoginPageLogoLocation[] = ['top', 'middle', 'bottom'];\n\nconst normalizeCssValue = (value?: string) => {\n  const trimmed = value?.trim();\n  return trimmed || undefined;\n};\n\nconst createBackgroundImage = (gradient?: string, imageUrl?: string) => {\n  const resolvedGradient = normalizeCssValue(gradient);\n  const resolvedImageUrl = normalizeCssValue(imageUrl);\n\n  return [resolvedGradient, resolvedImageUrl ? `url(${JSON.stringify(resolvedImageUrl)})` : undefined]\n    .filter(Boolean)\n    .join(', ');\n};\n\nconst normalizeLogoPosition = (position?: LoginPageLogoLocation): LoginPageLogoLocation =>\n  position && LOGIN_LOGO_POSITIONS.includes(position) ? position : 'bottom';\n\nconst normalizeLogoScale = (scale?: number) =>\n  typeof scale === 'number' && Number.isFinite(scale) && scale > 0 ? scale : undefined;\n\nconst resolveLogoUrls = (logo?: LoginPageProps['logo']) => {\n  const url = normalizeCssValue(logo?.url);\n  const lightUrl = normalizeCssValue(logo?.lightUrl) || url;\n  const darkUrl = normalizeCssValue(logo?.darkUrl) || url || lightUrl;\n\n  return { lightUrl, darkUrl };\n};\n\nconst normalizeProviderType = (value?: string) =>\n  normalizeCssValue(value)\n    ?.toLowerCase()\n    .replace(/^oauth[-_:]/, '')\n    .replace(/[\\s_]+/g, '-');\n\nconst getDefaultExternalMethodIcon = (method: NonNullable<LoginPageProps['externalMethods']>[number]) => {\n  const providerType = normalizeProviderType(method.providerType) ?? normalizeProviderType(method.id);\n\n  switch (providerType) {\n    case 'dingtalk':\n    case 'ding-talk':\n    case 'dingding':\n      return <DingtalkIcon aria-hidden=\"true\" />;\n    case 'feishu':\n    case 'lark':\n      return <FeishuIcon alt=\"\" aria-hidden=\"true\" />;\n    case 'wework':\n    case 'wecom':\n    case 'wechat-work':\n    case 'wechatwork':\n      return <WeWorkIcon aria-hidden=\"true\" />;\n    case 'oidc':\n    case 'sso':\n    case 'saml':\n    case 'saml-sso':\n      return <SSOIcon aria-hidden=\"true\" />;\n    default:\n      return null;\n  }\n};\n\nexport function LoginPage({\n  className,\n  style,\n  background,\n  logo,\n  toolbar,\n  title,\n  backAction,\n  methods,\n  activeMethodId,\n  defaultMethodId,\n  onMethodChange,\n  externalLabel,\n  externalMethods = [],\n  externalPanel,\n  callout,\n}: LoginPageProps) {\n  const availableMethods = useMemo(() => methods.filter((method) => !method.hidden), [methods]);\n  const fallbackMethodId = defaultMethodId ?? availableMethods[0]?.id;\n  const [internalMethodId, setInternalMethodId] = useState<string | undefined>(fallbackMethodId);\n  const currentMethodId = activeMethodId ?? internalMethodId;\n  const activeMethod = availableMethods.find((method) => method.id === currentMethodId) ?? availableMethods[0];\n  const hasTabs = availableMethods.length > 1;\n  const showAuthMethods = !externalPanel;\n  const backgroundImage = createBackgroundImage(background?.gradient, background?.imageUrl);\n  const backgroundMode = backgroundImage ? 'custom' : 'default';\n  const logoPosition = normalizeLogoPosition(logo?.position);\n  const logoScale = normalizeLogoScale(logo?.scale);\n  const { lightUrl: logoLightUrl, darkUrl: logoDarkUrl } = resolveLogoUrls(logo);\n  const hasLogo = Boolean(logoLightUrl || logoDarkUrl);\n  const usesSeparateModeLogos = Boolean(logoLightUrl && logoDarkUrl && logoLightUrl !== logoDarkUrl);\n\n  useEffect(() => {\n    if (!availableMethods.length) {\n      setInternalMethodId(undefined);\n      return;\n    }\n\n    if (!currentMethodId || !availableMethods.some((method) => method.id === currentMethodId)) {\n      setInternalMethodId(fallbackMethodId ?? availableMethods[0]?.id);\n    }\n  }, [availableMethods, currentMethodId, fallbackMethodId]);\n\n  const handleMethodChange = (methodId: string) => {\n    if (activeMethodId === undefined) {\n      setInternalMethodId(methodId);\n    }\n    onMethodChange?.(methodId);\n  };\n\n  const renderExternalMethod = (method: NonNullable<LoginPageProps['externalMethods']>[number]) => {\n    const icon = method.icon === undefined ? getDefaultExternalMethodIcon(method) : method.icon;\n    const button = (\n      <button\n        type=\"button\"\n        className=\"login-page__oauth-button\"\n        data-login-part=\"external-button\"\n        data-login-method-id={method.id}\n        onClick={method.onClick}\n        disabled={method.disabled}\n      >\n        {icon ? (\n          <span className=\"login-page__oauth-icon\" data-login-part=\"external-icon\">\n            {icon}\n          </span>\n        ) : null}\n        <span>{method.label}</span>\n      </button>\n    );\n\n    return <React.Fragment key={method.id}>{method.render ? method.render(button) : button}</React.Fragment>;\n  };\n\n  return (\n    <main\n      className={['login-page', className].filter(Boolean).join(' ')}\n      data-login-page\n      data-login-part=\"root\"\n      data-login-background={backgroundMode}\n      style={style}\n    >\n      <div\n        className=\"login-page__background\"\n        data-login-part=\"background\"\n        data-login-background={backgroundMode}\n        style={backgroundImage ? { backgroundImage } : undefined}\n        aria-hidden=\"true\"\n      />\n\n      {toolbar ? (\n        <div className=\"login-page__toolbar\" data-login-part=\"toolbar\">\n          {toolbar}\n        </div>\n      ) : null}\n\n      {hasLogo ? (\n        <div\n          className={`login-page__logo login-page__logo--${logoPosition}`}\n          data-login-part=\"logo\"\n          data-logo-position={logoPosition}\n        >\n          {usesSeparateModeLogos ? (\n            <>\n              <img\n                className=\"login-page__logo-image login-page__logo-image--light\"\n                data-login-part=\"logo-image\"\n                data-login-logo-mode=\"light\"\n                src={logoLightUrl}\n                alt={logo?.alt ?? ''}\n                style={logoScale ? { transform: `scale(${logoScale})` } : undefined}\n              />\n              <img\n                className=\"login-page__logo-image login-page__logo-image--dark\"\n                data-login-part=\"logo-image\"\n                data-login-logo-mode=\"dark\"\n                src={logoDarkUrl}\n                alt={logo?.alt ?? ''}\n                style={logoScale ? { transform: `scale(${logoScale})` } : undefined}\n              />\n            </>\n          ) : (\n            <img\n              className=\"login-page__logo-image\"\n              data-login-part=\"logo-image\"\n              src={logoLightUrl || logoDarkUrl}\n              alt={logo?.alt ?? ''}\n              style={logoScale ? { transform: `scale(${logoScale})` } : undefined}\n            />\n          )}\n        </div>\n      ) : null}\n\n      <section\n        className=\"login-page__form\"\n        data-login-part=\"panel\"\n        aria-label={typeof title === 'string' ? title : undefined}\n      >\n        {backAction ? (\n          <button type=\"button\" className=\"login-page__back\" data-login-part=\"back\" onClick={backAction.onClick}>\n            {backAction.icon ? (\n              <span className=\"login-page__back-icon\" data-login-part=\"back-icon\">\n                {backAction.icon}\n              </span>\n            ) : null}\n            <span>{backAction.label}</span>\n          </button>\n        ) : null}\n\n        {title ? (\n          <h1 className=\"login-page__title\" data-login-part=\"title\">\n            {title}\n          </h1>\n        ) : null}\n\n        {showAuthMethods && hasTabs ? (\n          <div className=\"login-page__tabs\" data-login-part=\"tabs\" role=\"tablist\">\n            {availableMethods.map((method) => {\n              const selected = method.id === activeMethod?.id;\n              return (\n                <button\n                  key={method.id}\n                  type=\"button\"\n                  role=\"tab\"\n                  aria-selected={selected}\n                  className={`login-page__tab ${selected ? 'login-page__tab--active' : ''}`}\n                  data-login-part=\"tab\"\n                  data-login-method-id={method.id}\n                  data-active={selected ? 'true' : 'false'}\n                  onClick={() => handleMethodChange(method.id)}\n                >\n                  {method.icon ? (\n                    <span className=\"login-page__tab-icon\" data-login-part=\"tab-icon\">\n                      {method.icon}\n                    </span>\n                  ) : null}\n                  <span className=\"login-page__tab-label\">{method.label}</span>\n                </button>\n              );\n            })}\n          </div>\n        ) : null}\n\n        {externalPanel ? (\n          <div className=\"login-page__external-panel\" data-login-part=\"external-panel\">\n            {externalPanel.title ? (\n              <div className=\"login-page__external-panel-title\" data-login-part=\"external-panel-title\">\n                {externalPanel.title}\n              </div>\n            ) : null}\n            {externalPanel.description ? (\n              <p className=\"login-page__external-panel-description\" data-login-part=\"external-panel-description\">\n                {externalPanel.description}\n              </p>\n            ) : null}\n            <div className=\"login-page__external-panel-content\" data-login-part=\"external-panel-content\">\n              {externalPanel.content}\n            </div>\n            {externalPanel.footer || externalPanel.backAction ? (\n              <div className=\"login-page__external-panel-footer\" data-login-part=\"external-panel-footer\">\n                {externalPanel.footer}\n                {externalPanel.backAction ? (\n                  <button\n                    type=\"button\"\n                    className=\"login-page__external-panel-back\"\n                    data-login-part=\"external-panel-back\"\n                    onClick={externalPanel.backAction.onClick}\n                  >\n                    {externalPanel.backAction.label}\n                  </button>\n                ) : null}\n              </div>\n            ) : null}\n          </div>\n        ) : showAuthMethods && activeMethod ? (\n          <form\n            className=\"login-page__form-fields\"\n            data-login-part=\"form\"\n            data-login-method-id={activeMethod.id}\n            onSubmit={activeMethod.onSubmit}\n          >\n            {activeMethod.fields.map((field) => (\n              <div className=\"login-page__field\" data-login-part=\"field\" data-login-field-name={field.name} key={field.name}>\n                <input\n                  id={field.id}\n                  name={field.name}\n                  type={field.type ?? 'text'}\n                  value={field.value}\n                  placeholder={field.placeholder}\n                  autoComplete={field.autoComplete}\n                  inputMode={field.inputMode}\n                  maxLength={field.maxLength}\n                  pattern={field.pattern}\n                  disabled={activeMethod.disabled || activeMethod.isLoading || field.disabled}\n                  required={field.required}\n                  className=\"login-page__input\"\n                  data-login-part=\"input\"\n                  onChange={(event) => field.onChange(event.target.value)}\n                />\n              </div>\n            ))}\n\n            {activeMethod.checkbox ? (\n              <label className=\"login-page__remember\" data-login-part=\"checkbox-label\" htmlFor={activeMethod.checkbox.id}>\n                <input\n                  id={activeMethod.checkbox.id}\n                  type=\"checkbox\"\n                  className=\"login-page__checkbox\"\n                  data-login-part=\"checkbox\"\n                  checked={activeMethod.checkbox.checked}\n                  disabled={activeMethod.disabled || activeMethod.isLoading || activeMethod.checkbox.disabled}\n                  onChange={(event) => activeMethod.checkbox?.onChange(event.target.checked)}\n                />\n                <span>{activeMethod.checkbox.label}</span>\n              </label>\n            ) : null}\n\n            {activeMethod.footer || activeMethod.footerAction ? (\n              <div className=\"login-page__method-footer\" data-login-part=\"method-footer\">\n                {activeMethod.footer}\n                {activeMethod.footerAction ? (\n                  <button\n                    type=\"button\"\n                    className=\"login-page__method-footer-action\"\n                    data-login-part=\"method-footer-action\"\n                    data-login-method-id={activeMethod.id}\n                    onClick={activeMethod.footerAction.onClick}\n                    disabled={activeMethod.disabled || activeMethod.isLoading || activeMethod.footerAction.disabled}\n                  >\n                    {activeMethod.footerAction.label}\n                  </button>\n                ) : null}\n              </div>\n            ) : null}\n\n            <button\n              type=\"submit\"\n              className=\"login-page__submit\"\n              data-login-part=\"submit-button\"\n              disabled={activeMethod.disabled || activeMethod.isLoading}\n            >\n              {activeMethod.isLoading && activeMethod.loadingLabel ? activeMethod.loadingLabel : activeMethod.submitLabel}\n            </button>\n          </form>\n        ) : null}\n\n        {callout ? (\n          <div\n            className={`login-page__callout login-page__callout--${callout.tone ?? 'info'}`}\n            data-login-part=\"callout\"\n            data-tone={callout.tone ?? 'info'}\n          >\n            <div className=\"login-page__callout-title\" data-login-part=\"callout-title\">\n              {callout.title}\n            </div>\n            {callout.description ? (\n              <p className=\"login-page__callout-description\" data-login-part=\"callout-description\">\n                {callout.description}\n              </p>\n            ) : null}\n            {callout.detail ? (\n              <p className=\"login-page__callout-detail\" data-login-part=\"callout-detail\">\n                {callout.detail}\n              </p>\n            ) : null}\n            {callout.action ? (\n              <button\n                type=\"button\"\n                className=\"login-page__callout-action\"\n                data-login-part=\"callout-action\"\n                onClick={callout.action.onClick}\n                disabled={callout.action.disabled}\n              >\n                {callout.action.label}\n              </button>\n            ) : null}\n          </div>\n        ) : null}\n\n        {!externalPanel && externalMethods.length ? (\n          <div className=\"login-page__oauth-section\" data-login-part=\"external-methods\">\n            {externalLabel ? (\n              <div className=\"login-page__oauth-label\" data-login-part=\"external-label\">\n                {externalLabel}\n              </div>\n            ) : null}\n            <div className=\"login-page__oauth-list\" data-login-part=\"external-list\">\n              {externalMethods.map(renderExternalMethod)}\n            </div>\n          </div>\n        ) : null}\n      </section>\n    </main>\n  );\n}\n","import { createContext, useContext, useMemo, type ReactNode } from 'react';\n\nimport type { DataExplorerAppearance } from './types';\n\nconst DataExplorerAppearanceContext = createContext<\n  DataExplorerAppearance | undefined\n>(undefined);\n\nexport function DataExplorerAppearanceProvider({\n  appearance,\n  children,\n}: {\n  appearance?: DataExplorerAppearance;\n  children: ReactNode;\n}) {\n  return (\n    <DataExplorerAppearanceContext.Provider value={appearance}>\n      {children}\n    </DataExplorerAppearanceContext.Provider>\n  );\n}\n\nexport function useDataExplorerAppearance(\n  appearance?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n  const inheritedAppearance = useContext(DataExplorerAppearanceContext);\n  return useMemo(() => {\n    if (!appearance) return inheritedAppearance;\n    if (!inheritedAppearance) return appearance;\n    return {\n      ...inheritedAppearance,\n      ...appearance,\n      slots: { ...inheritedAppearance.slots, ...appearance.slots },\n      styles: { ...inheritedAppearance.styles, ...appearance.styles },\n    };\n  }, [appearance, inheritedAppearance]);\n}\n","import type { DataExplorerResolver } from './types';\n\nexport function cn(...parts: Array<string | false | null | undefined>) {\n  return parts.filter(Boolean).join(' ');\n}\n\nexport function resolveDataExplorerValue<TValue, TContext>(\n  value: DataExplorerResolver<TValue, TContext> | undefined,\n  context: TContext | undefined,\n): TValue | undefined {\n  if (typeof value === 'function') {\n    return (value as (resolvedContext: TContext) => TValue)(context as TContext);\n  }\n\n  return value;\n}\n","import type {\n  DataExplorerAppearance,\n  DataExplorerBackground,\n  DataExplorerBorder,\n  DataExplorerControlTone,\n  DataExplorerDensity,\n  DataExplorerRadius,\n  DataExplorerResolvedTheme,\n  DataExplorerSurface,\n  DataExplorerThemeStyles,\n  DataExplorerThemePresetId,\n  DataExplorerThemeSlots,\n} from './types';\nimport { cn } from './utils';\n\ntype ResolvedSlots = Required<DataExplorerThemeSlots>;\n\nconst emptyStyles: DataExplorerThemeStyles = {};\n\nconst baseSlots: ResolvedSlots = {\n  surfaceRoot:\n    'relative flex h-full min-h-0 w-full min-w-0 overflow-hidden rounded-md border border-border bg-background shadow-sm',\n  toolbarRoot:\n    'flex flex-wrap items-center gap-2 border-b border-border bg-background px-4 py-3',\n  toolbarLeading: 'flex items-center gap-2',\n  toolbarSearch:\n    'flex h-10 min-w-52 flex-1 items-center gap-2 rounded-md border border-border bg-background px-3 text-sm',\n  toolbarSearchIcon: 'inline-flex shrink-0 text-muted-foreground',\n  toolbarSearchInput:\n    'min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground',\n  toolbarViewSwitch:\n    'flex items-center rounded-md border border-border bg-background p-0.5',\n  toolbarViewButton:\n    'inline-flex h-9 min-w-9 items-center justify-center gap-2 rounded-md px-2 text-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:pointer-events-none disabled:opacity-50',\n  toolbarViewButtonActive: 'bg-muted text-foreground',\n  toolbarActions: 'flex items-center gap-2',\n  actionBarRoot: 'flex min-w-0 flex-wrap items-center gap-2',\n  actionBarLeading: 'flex shrink-0 items-center gap-2',\n  actionBarActions: 'flex min-w-0 flex-1 flex-wrap items-center gap-2',\n  actionBarTrailing: 'flex shrink-0 items-center gap-2',\n  actionButtonBase:\n    'inline-flex h-9 items-center justify-center gap-2 rounded-md border px-3 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n  actionButtonDefault:\n    'border-border bg-background text-foreground hover:bg-accent/60',\n  actionButtonPrimary:\n    'border-primary/20 bg-primary/10 text-primary hover:bg-primary/15',\n  actionButtonDanger:\n    'border-destructive/20 bg-destructive/10 text-destructive-text hover:bg-destructive/15',\n  actionButtonMuted:\n    'border-border/60 bg-muted/45 text-muted-foreground hover:bg-muted/70 hover:text-foreground',\n  actionButtonActive: 'ring-1 ring-primary/30',\n  actionButtonDisabled: 'cursor-not-allowed opacity-60',\n  actionIconButton: 'w-9 px-0',\n  actionToggleActive: 'border-primary/30 bg-primary/10 text-primary',\n  controlButton:\n    'inline-flex h-10 min-w-0 items-center justify-center gap-2 rounded-md border border-border bg-background px-3 text-sm font-medium text-foreground transition-colors hover:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-60',\n  controlButtonIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n  controlButtonLabel: 'min-w-0 truncate',\n  controlSelectTrigger:\n    'inline-flex h-10 min-w-28 items-center justify-between gap-3 rounded-md border border-border bg-background px-3 text-sm font-medium text-foreground transition-colors hover:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-60',\n  controlSelectValue: 'flex min-w-0 items-center gap-1 truncate',\n  controlCheckbox:\n    'inline-flex h-9 items-center gap-2 rounded-md border border-border bg-background px-3 text-sm font-medium text-foreground transition-colors hover:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-60',\n  controlCheckboxIndicator:\n    'flex h-4 w-4 shrink-0 items-center justify-center rounded border border-border bg-background text-primary',\n  controlCheckboxLabel: 'min-w-0 truncate',\n  menuTrigger:\n    'inline-flex h-8 w-8 items-center justify-center rounded-md text-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n  menuContent:\n    'z-50 min-w-36 rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md outline-none',\n  menuLabel: 'px-2 py-1.5 text-xs font-medium text-muted-foreground',\n  menuSeparator: '-mx-1 my-1 h-px bg-border',\n  menuItem:\n    'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n  menuItemPrimary: 'text-primary focus:text-primary',\n  menuItemDanger: 'text-destructive-text focus:text-destructive-text',\n  menuItemMuted: 'text-muted-foreground',\n  menuItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n  menuItemLabel: 'truncate',\n  cardRoot:\n    'group relative flex min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background transition-shadow',\n  cardInteractive: 'cursor-pointer hover:shadow-sm',\n  cardSelected: 'ring-2 ring-primary',\n  cardDisabled: 'opacity-60',\n  cardHeader: 'p-4',\n  cardMedia: 'shrink-0 overflow-hidden',\n  cardFooter: 'shrink-0 border-t border-border/60 px-4 py-3',\n  recordCardRoot: 'group relative border-border/70 transition-shadow hover:shadow-sm',\n  recordCardActive: 'z-10 ring-2 ring-monkeys-500',\n  footerRoot: 'flex items-center border-t border-border bg-background px-4 py-3',\n  footerSummary:\n    'flex items-center gap-1 whitespace-nowrap text-sm text-muted-foreground',\n  footerJumpButton:\n    'inline-flex items-center gap-1 text-muted-foreground underline-offset-4 hover:text-foreground hover:underline',\n  footerPageSizeSelect:\n    'h-8 rounded-md border border-border bg-background px-2 text-sm text-foreground',\n  previewRoot:\n    'relative h-full min-h-0 w-full flex-1 select-none self-stretch overflow-hidden bg-slate-950',\n  previewPlaceholder:\n    'flex h-full w-full items-center justify-center rounded-xl bg-white/5 px-6 text-center text-sm text-white/60',\n  previewActions: 'absolute right-4 top-4 z-20 flex flex-col gap-2',\n  previewControls: 'absolute bottom-4 right-4 z-20 flex flex-col gap-2',\n  previewZoomLabel:\n    'min-w-[3rem] rounded-full border border-white/15 bg-black/30 px-1 py-1 text-center text-xs font-medium text-white/70 shadow-lg backdrop-blur',\n  previewControlButton:\n    'inline-flex h-9 w-9 items-center justify-center rounded-full border border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur transition hover:bg-black/45',\n  previewNavigationButton:\n    'absolute top-1/2 flex h-10 w-10 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur transition-colors hover:bg-black/45 disabled:pointer-events-none disabled:opacity-40',\n  detailRoot: 'flex h-full flex-col overflow-hidden bg-background',\n  detailHeader:\n    'flex items-center justify-between gap-3 border-b border-border bg-background px-4 py-4 sm:px-5',\n  detailLeading:\n    'flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-muted text-muted-foreground',\n  detailNavigation:\n    'hidden items-center gap-1 rounded-lg border border-border bg-background px-1 py-1 md:flex',\n  detailNavigationButton:\n    'flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:pointer-events-none disabled:opacity-50',\n  detailCloseButton:\n    'flex h-10 w-10 items-center justify-center rounded-full border border-border bg-background text-muted-foreground transition-colors hover:bg-accent hover:text-foreground',\n  detailPreviewPanel:\n    'min-h-0 overflow-hidden border-b border-border bg-background xl:border-b-0',\n  detailPreviewFrame:\n    'relative h-full min-h-0 w-full overflow-hidden bg-background',\n  detailRightPanel:\n    'min-h-0 min-w-0 border-t border-border bg-background xl:border-l xl:border-t-0',\n  detailRightPanelBody:\n    'h-full overflow-y-auto overscroll-contain bg-background p-5',\n  treeShellRoot: 'flex h-full min-h-0 flex-col overflow-hidden',\n  treeShellHeader:\n    'flex shrink-0 items-start justify-between gap-3 px-4 py-3',\n  treeShellTitle: 'truncate text-sm font-semibold',\n  treeShellSubtitle: 'mt-1 text-sm text-muted-foreground',\n  treeShellToolbar: 'flex shrink-0 items-center gap-2',\n  treeShellBody: 'min-h-0 flex-1 overflow-hidden',\n  treeShellFooter: 'shrink-0',\n  treeRoot: 'min-w-0 space-y-1 overflow-hidden text-sm',\n  treeGroup: 'min-w-0 space-y-1',\n  treeGroupHeader: 'group/tree-group flex min-w-0 items-center gap-1',\n  treeGroupHeaderButton:\n    'flex h-9 min-w-0 flex-1 items-center gap-2 rounded-md px-2 text-left font-medium text-muted-foreground transition-colors hover:bg-accent/55 hover:text-foreground',\n  treeGroupContent: 'min-w-0 space-y-0.5',\n  treeGroupActions:\n    'shrink-0 opacity-0 transition-opacity group-hover/tree-group:opacity-100 data-[state=open]:opacity-100',\n  treeNode: 'min-w-0',\n  treeNodeButton:\n    'group/tree-node flex min-h-9 w-full min-w-0 items-center gap-1 rounded-md pr-1 text-left text-sm text-foreground transition-colors hover:bg-accent/55 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1',\n  treeNodeSelected: 'bg-accent text-accent-foreground',\n  treeNodeDisabled: 'cursor-not-allowed opacity-55',\n  treeNodeDragging: 'opacity-50',\n  treeNodeToggle:\n    'inline-flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground',\n  treeNodeIcon:\n    'inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground group-hover/tree-node:text-foreground',\n  treeNodeLabel: 'min-w-0 truncate',\n  treeNodeDescription: 'mt-0.5 truncate text-xs text-muted-foreground',\n  treeNodeMeta: 'ml-2 shrink-0 text-xs text-muted-foreground',\n  treeNodeBadge:\n    'ml-2 shrink-0 rounded-full border border-border bg-muted px-1.5 py-0.5 text-[11px] leading-none text-muted-foreground',\n  treeNodeActions:\n    'ml-1 shrink-0 opacity-0 transition-opacity group-hover/tree-node:opacity-100 data-[state=open]:opacity-100',\n  treeNodeChildren: 'mt-0.5 min-w-0 space-y-0.5',\n  treeNodeDragHandle:\n    'inline-flex h-5 w-5 shrink-0 cursor-grab items-center justify-center rounded text-muted-foreground opacity-0 transition-opacity hover:bg-accent hover:text-foreground active:cursor-grabbing group-hover/tree-node:opacity-100',\n  treeEmpty: 'px-3 py-2 text-xs text-muted-foreground',\n  treeError: 'px-3 py-2 text-xs text-destructive-text',\n  treeLoading: 'px-3 py-2 text-xs text-muted-foreground',\n};\n\nconst surfaceSlots: Record<DataExplorerSurface, Partial<DataExplorerThemeSlots>> = {\n  card: {},\n  flush: {\n    surfaceRoot:\n      'relative flex h-full min-h-0 w-full min-w-0 overflow-hidden',\n  },\n};\n\nconst densitySlots: Record<DataExplorerDensity, Partial<DataExplorerThemeSlots>> = {\n  compact: {\n    treeShellHeader: 'px-3 py-2',\n    toolbarRoot: 'px-3 py-2',\n    toolbarSearch: 'h-9 min-w-48',\n    toolbarViewButton: 'h-8 min-w-8 text-xs',\n    actionButtonBase: 'h-8 px-2.5 text-xs',\n    actionIconButton: 'h-8 w-8 px-0',\n    controlButton: 'h-9 px-2.5 text-xs',\n    controlSelectTrigger: 'h-9 min-w-24 px-2.5 text-xs',\n    controlCheckbox: 'h-8 px-2.5 text-xs',\n    menuTrigger: 'h-8 w-8',\n    footerRoot: 'px-3 py-2',\n    footerPageSizeSelect: 'h-8 text-xs',\n    treeGroupHeaderButton: 'h-8 text-xs',\n    treeNodeButton: 'min-h-8 text-xs',\n    treeEmpty: 'py-1.5 text-xs',\n    treeError: 'py-1.5 text-xs',\n    treeLoading: 'py-1.5 text-xs',\n  },\n  default: {},\n  comfortable: {\n    treeShellHeader: 'px-5 py-4',\n    toolbarRoot: 'px-5 py-4',\n    toolbarSearch: 'h-11',\n    toolbarViewButton: 'h-10 min-w-10',\n    actionButtonBase: 'h-10 px-3.5',\n    actionIconButton: 'h-10 w-10 px-0',\n    controlButton: 'h-11 px-3.5',\n    controlSelectTrigger: 'h-11 min-w-32 px-3.5',\n    controlCheckbox: 'h-10 px-3.5',\n    menuTrigger: 'h-9 w-9',\n    footerRoot: 'px-5 py-3.5',\n    treeGroupHeaderButton: 'h-10',\n    treeNodeButton: 'min-h-10',\n  },\n};\n\nconst radiusSlots: Record<DataExplorerRadius, Partial<DataExplorerThemeSlots>> = {\n  none: {\n    surfaceRoot: 'rounded-none',\n    toolbarSearch: 'rounded-none',\n    toolbarViewSwitch: 'rounded-none',\n    toolbarViewButton: 'rounded-none',\n    actionButtonBase: 'rounded-none',\n    controlButton: 'rounded-none',\n    controlSelectTrigger: 'rounded-none',\n    controlCheckbox: 'rounded-none',\n    controlCheckboxIndicator: 'rounded-none',\n    menuTrigger: 'rounded-none',\n    menuContent: 'rounded-none',\n    menuItem: 'rounded-none',\n    cardRoot: 'rounded-none',\n    footerPageSizeSelect: 'rounded-none',\n    detailLeading: 'rounded-none',\n    detailNavigation: 'rounded-none',\n    detailNavigationButton: 'rounded-none',\n    detailCloseButton: 'rounded-none',\n    treeGroupHeaderButton: 'rounded-none',\n    treeNodeButton: 'rounded-none',\n    treeNodeToggle: 'rounded-none',\n    treeNodeBadge: 'rounded-none',\n    treeNodeDragHandle: 'rounded-none',\n  },\n  sm: {\n    surfaceRoot: 'rounded-sm',\n    toolbarSearch: 'rounded-sm',\n    toolbarViewSwitch: 'rounded-sm',\n    toolbarViewButton: 'rounded-sm',\n    actionButtonBase: 'rounded-sm',\n    controlButton: 'rounded-sm',\n    controlSelectTrigger: 'rounded-sm',\n    controlCheckbox: 'rounded-sm',\n    controlCheckboxIndicator: 'rounded-sm',\n    menuTrigger: 'rounded-sm',\n    menuContent: 'rounded-sm',\n    menuItem: 'rounded-sm',\n    cardRoot: 'rounded-sm',\n    treeGroupHeaderButton: 'rounded-sm',\n    treeNodeButton: 'rounded-sm',\n    treeNodeToggle: 'rounded-sm',\n    treeNodeBadge: 'rounded-sm',\n    treeNodeDragHandle: 'rounded-sm',\n  },\n  md: {},\n  lg: {\n    surfaceRoot: 'rounded-xl',\n    toolbarSearch: 'rounded-lg',\n    toolbarViewSwitch: 'rounded-lg',\n    toolbarViewButton: 'rounded-lg',\n    actionButtonBase: 'rounded-lg',\n    controlButton: 'rounded-lg',\n    controlSelectTrigger: 'rounded-lg',\n    controlCheckbox: 'rounded-lg',\n    controlCheckboxIndicator: 'rounded-md',\n    menuTrigger: 'rounded-lg',\n    menuContent: 'rounded-lg',\n    cardRoot: 'rounded-xl',\n    treeGroupHeaderButton: 'rounded-lg',\n    treeNodeButton: 'rounded-lg',\n    treeNodeToggle: 'rounded-md',\n    treeNodeBadge: 'rounded-lg',\n    treeNodeDragHandle: 'rounded-md',\n  },\n  xl: {\n    surfaceRoot: 'rounded-2xl',\n    toolbarSearch: 'rounded-xl',\n    toolbarViewSwitch: 'rounded-xl',\n    toolbarViewButton: 'rounded-xl',\n    actionButtonBase: 'rounded-xl',\n    controlButton: 'rounded-xl',\n    controlSelectTrigger: 'rounded-xl',\n    controlCheckbox: 'rounded-xl',\n    controlCheckboxIndicator: 'rounded-lg',\n    menuTrigger: 'rounded-xl',\n    menuContent: 'rounded-xl',\n    cardRoot: 'rounded-2xl',\n    treeGroupHeaderButton: 'rounded-xl',\n    treeNodeButton: 'rounded-xl',\n    treeNodeToggle: 'rounded-lg',\n    treeNodeBadge: 'rounded-xl',\n    treeNodeDragHandle: 'rounded-lg',\n  },\n  full: {\n    surfaceRoot: 'rounded-2xl',\n    toolbarSearch: 'rounded-full',\n    toolbarViewSwitch: 'rounded-full',\n    toolbarViewButton: 'rounded-full',\n    actionButtonBase: 'rounded-full',\n    controlButton: 'rounded-full',\n    controlSelectTrigger: 'rounded-full',\n    controlCheckbox: 'rounded-full',\n    controlCheckboxIndicator: 'rounded-full',\n    menuTrigger: 'rounded-full',\n    cardRoot: 'rounded-2xl',\n    treeGroupHeaderButton: 'rounded-full',\n    treeNodeButton: 'rounded-full',\n    treeNodeToggle: 'rounded-full',\n    treeNodeBadge: 'rounded-full',\n    treeNodeDragHandle: 'rounded-full',\n  },\n};\n\nconst borderSlots: Record<DataExplorerBorder, Partial<DataExplorerThemeSlots>> = {\n  none: {\n    surfaceRoot: 'border-transparent',\n    toolbarRoot: 'border-transparent',\n    toolbarSearch: 'border-transparent',\n    toolbarViewSwitch: 'border-transparent',\n    actionButtonBase: 'border-transparent',\n    controlButton: 'border-transparent',\n    controlSelectTrigger: 'border-transparent',\n    controlCheckbox: 'border-transparent',\n    cardRoot: 'border-transparent',\n    footerRoot: 'border-transparent',\n    detailHeader: 'border-transparent',\n    detailPreviewPanel: 'border-transparent',\n    detailRightPanel: 'border-transparent',\n  },\n  subtle: {\n    surfaceRoot: 'border-border/60',\n    toolbarRoot: 'border-border/60',\n    toolbarSearch: 'border-border/60',\n    toolbarViewSwitch: 'border-border/60',\n    actionButtonDefault: 'border-border/60',\n    controlButton: 'border-border/60',\n    controlSelectTrigger: 'border-border/60',\n    controlCheckbox: 'border-border/60',\n    cardRoot: 'border-border/60',\n    footerRoot: 'border-border/60',\n  },\n  solid: {},\n  strong: {\n    surfaceRoot: 'border-foreground/20',\n    toolbarRoot: 'border-foreground/20',\n    toolbarSearch: 'border-foreground/20',\n    toolbarViewSwitch: 'border-foreground/20',\n    actionButtonDefault: 'border-foreground/20',\n    controlButton: 'border-foreground/20',\n    controlSelectTrigger: 'border-foreground/20',\n    controlCheckbox: 'border-foreground/20',\n    cardRoot: 'border-foreground/20',\n    footerRoot: 'border-foreground/20',\n  },\n};\n\nconst backgroundSlots: Record<DataExplorerBackground, Partial<DataExplorerThemeSlots>> = {\n  plain: {},\n  muted: {\n    surfaceRoot: 'bg-card',\n    toolbarRoot: 'bg-muted/20',\n    toolbarSearch: 'bg-background',\n    toolbarViewSwitch: 'bg-background',\n    controlButton: 'bg-background',\n    controlSelectTrigger: 'bg-background',\n    controlCheckbox: 'bg-background',\n    cardRoot: 'bg-card',\n    footerRoot: 'bg-muted/20',\n    detailHeader: 'bg-muted/20',\n  },\n  soft: {\n    surfaceRoot: 'bg-background/95 shadow-sm',\n    toolbarRoot: 'bg-background/95',\n    actionButtonDefault: 'bg-muted/30 hover:bg-muted/55',\n    controlButton: 'bg-muted/30 hover:bg-muted/55',\n    controlSelectTrigger: 'bg-muted/30 hover:bg-muted/55',\n    controlCheckbox: 'bg-muted/30 hover:bg-muted/55',\n    cardRoot: 'bg-background/95 shadow-sm',\n    footerRoot: 'bg-background/95',\n  },\n  glass: {\n    surfaceRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n    toolbarRoot: 'border-white/10 bg-white/5 backdrop-blur-md',\n    toolbarSearch: 'border-white/10 bg-white/5',\n    toolbarViewSwitch: 'border-white/10 bg-white/5',\n    actionButtonDefault:\n      'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n    controlButton:\n      'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n    controlSelectTrigger:\n      'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n    controlCheckbox:\n      'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n    controlCheckboxIndicator: 'border-white/15 bg-white/10',\n    cardRoot: 'border-white/10 bg-white/[0.06] shadow-none',\n    footerRoot: 'border-white/10 bg-white/5 backdrop-blur-md',\n  },\n  'dark-stage': {\n    previewRoot: 'bg-slate-950',\n    previewPlaceholder: 'bg-white/5 text-white/60',\n    actionButtonBase:\n      'inline-flex h-9 items-center justify-center gap-2 rounded-full border px-3 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/45 focus-visible:ring-offset-0',\n    actionButtonDefault:\n      'border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur hover:bg-black/[0.45]',\n    controlButton:\n      'border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur hover:bg-black/[0.45]',\n    controlSelectTrigger:\n      'border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur hover:bg-black/[0.45]',\n    controlCheckbox:\n      'border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur hover:bg-black/[0.45]',\n    actionButtonPrimary:\n      'border-white/25 bg-white/20 text-white shadow-lg backdrop-blur hover:bg-white/28',\n    actionButtonMuted:\n      'border-white/10 bg-black/20 text-white/70 shadow-lg backdrop-blur hover:bg-black/[0.35] hover:text-white',\n    actionIconButton: 'h-9 w-9 px-0',\n  },\n};\n\nconst presetDefaults: Record<\n  DataExplorerThemePresetId,\n  Pick<DataExplorerAppearance, 'density' | 'radius' | 'border' | 'background'>\n> = {\n  default: {\n    density: 'default',\n    radius: 'md',\n    border: 'solid',\n    background: 'plain',\n  },\n  soft: {\n    density: 'default',\n    radius: 'md',\n    border: 'subtle',\n    background: 'plain',\n  },\n  compact: {\n    density: 'compact',\n    radius: 'md',\n    border: 'subtle',\n    background: 'soft',\n  },\n  'tinted-glass': {\n    density: 'default',\n    radius: 'lg',\n    border: 'subtle',\n    background: 'glass',\n  },\n  flat: {\n    density: 'compact',\n    radius: 'none',\n    border: 'solid',\n    background: 'plain',\n  },\n  glass: {\n    density: 'default',\n    radius: 'lg',\n    border: 'subtle',\n    background: 'glass',\n  },\n  'hard-edge': {\n    density: 'compact',\n    radius: 'none',\n    border: 'solid',\n    background: 'plain',\n  },\n};\n\nconst presetSlots: Record<string, Partial<DataExplorerThemeSlots>> = {\n  soft: {\n    actionButtonBase: 'font-medium',\n    controlButton: 'font-medium',\n    controlSelectTrigger: 'font-medium',\n    controlCheckbox: 'font-medium',\n    menuTrigger: 'rounded-full',\n    cardRoot: 'border-border/70',\n  },\n  compact: {\n    toolbarRoot: 'gap-2',\n    actionButtonBase: 'text-xs',\n    controlButton: 'text-xs',\n    controlSelectTrigger: 'text-xs',\n    controlCheckbox: 'text-xs',\n    footerRoot: 'text-xs',\n  },\n  'tinted-glass': {\n    actionButtonDefault:\n      'border-border/60 bg-background/10 text-foreground hover:bg-accent/60',\n    actionButtonPrimary:\n      'border-primary/30 bg-primary/15 text-primary-foreground hover:bg-primary/20',\n    actionButtonMuted:\n      'border-border/50 bg-muted/20 text-muted-foreground hover:bg-muted/45 hover:text-foreground',\n    controlButton:\n      'border-border/60 bg-background/10 text-foreground hover:bg-accent/60',\n    controlSelectTrigger:\n      'border-border/60 bg-background/10 text-foreground hover:bg-accent/60',\n    controlCheckbox:\n      'border-border/60 bg-background/10 text-foreground hover:bg-accent/60',\n    controlCheckboxIndicator: 'border-border/60 bg-background/10 text-primary',\n    menuContent: 'border-border bg-popover text-popover-foreground shadow-2xl',\n    menuSeparator: 'bg-border',\n    menuItem: 'focus:bg-accent focus:text-accent-foreground',\n    cardSelected: 'ring-2 ring-primary',\n    previewRoot: 'bg-background',\n    treeGroupHeaderButton:\n      'text-muted-foreground hover:bg-accent/60 hover:text-foreground',\n    treeNodeButton:\n      'text-foreground hover:bg-accent/60 hover:text-accent-foreground focus-visible:ring-ring',\n    treeNodeSelected: 'bg-accent text-accent-foreground',\n    treeNodeToggle: 'text-muted-foreground hover:bg-accent hover:text-foreground',\n    treeNodeIcon:\n      'text-muted-foreground group-hover/tree-node:text-foreground',\n    treeNodeMeta: 'text-muted-foreground',\n    treeNodeBadge: 'border-border bg-muted text-muted-foreground',\n    treeNodeActions: 'text-muted-foreground',\n    treeNodeDragHandle:\n      'text-muted-foreground hover:bg-accent hover:text-foreground group-hover/tree-node:opacity-100',\n    treeEmpty: 'text-muted-foreground',\n    treeError: 'text-destructive-text',\n    treeLoading: 'text-muted-foreground',\n  },\n  flat: {\n    toolbarRoot: 'border-slate-200 bg-white',\n    toolbarSearch: 'rounded-none border-slate-200 bg-white shadow-none',\n    toolbarViewSwitch: 'rounded-none border-slate-200 bg-white shadow-none',\n    actionButtonBase: 'rounded-none shadow-none',\n    controlButton: 'rounded-none border-slate-200 bg-white text-slate-700 shadow-none hover:bg-slate-50',\n    controlSelectTrigger:\n      'rounded-none border-slate-200 bg-white text-slate-700 shadow-none hover:bg-slate-50',\n    controlCheckbox:\n      'rounded-none border-slate-200 bg-white text-slate-700 shadow-none hover:bg-slate-50',\n    actionButtonDefault:\n      'border-slate-200 bg-white text-slate-700 hover:bg-slate-50',\n    menuTrigger:\n      'rounded-none border border-slate-200 bg-white text-slate-700 shadow-none hover:bg-slate-50',\n    menuContent: 'rounded-none border-slate-200 bg-white shadow-none',\n    cardRoot: 'rounded-none border-slate-200 bg-white shadow-none',\n    footerRoot: 'border-slate-200 bg-white',\n    treeRoot: 'space-y-1 text-sm',\n    treeGroupHeader: 'group/tree-group flex min-w-0 items-center',\n    treeGroupHeaderButton:\n      'h-9 rounded-none px-3 text-slate-600 shadow-none hover:bg-slate-100 hover:text-slate-950',\n    treeGroupContent: 'space-y-1',\n    treeNodeButton:\n      'min-h-9 rounded-none text-slate-700 hover:bg-slate-100 hover:text-slate-950 focus-visible:ring-slate-300',\n    treeNodeSelected: 'bg-slate-100 text-slate-950',\n    treeNodeToggle:\n      'rounded-none text-slate-500 hover:bg-transparent hover:text-slate-950',\n    treeNodeIcon: 'text-slate-500 group-hover/tree-node:text-slate-950',\n    treeNodeDragHandle:\n      'rounded-none text-slate-400 hover:bg-transparent hover:text-slate-700',\n    treeNodeActions: 'text-slate-500',\n  },\n  glass: {\n    menuContent: 'border-white/10 bg-slate-950/90 text-white backdrop-blur-xl',\n    menuSeparator: 'bg-white/10',\n    menuItem: 'focus:bg-white/10 focus:text-white',\n  },\n  'hard-edge': {\n    toolbarRoot: 'border-slate-200 bg-white',\n    actionButtonBase: 'rounded-none shadow-none',\n    controlButton: 'rounded-none shadow-none',\n    controlSelectTrigger: 'rounded-none shadow-none',\n    controlCheckbox: 'rounded-none shadow-none',\n    cardRoot: 'rounded-none border-slate-200 bg-white shadow-none',\n    footerRoot: 'border-slate-200 bg-white',\n    footerPageSizeSelect: 'rounded-none border-slate-200 shadow-none',\n  },\n};\n\nconst slotKeys = Object.keys(baseSlots) as Array<keyof DataExplorerThemeSlots>;\n\nfunction mergeSlots(\n  ...sources: Array<Partial<DataExplorerThemeSlots> | undefined>\n): ResolvedSlots {\n  return slotKeys.reduce((resolved, key) => {\n    resolved[key] = cn(...sources.map((source) => source?.[key]));\n    return resolved;\n  }, {} as ResolvedSlots);\n}\n\nfunction mergeStyles(\n  ...sources: Array<DataExplorerThemeStyles | undefined>\n): DataExplorerThemeStyles {\n  return sources.reduce<DataExplorerThemeStyles>(\n    (resolved, source) => ({\n      ...resolved,\n      ...source,\n    }),\n    {},\n  );\n}\n\nfunction getPresetDefaults(preset: DataExplorerThemePresetId) {\n  const defaults = presetDefaults[preset as keyof typeof presetDefaults];\n  if (!defaults) {\n    throw new TypeError(\n      `Unknown Data Explorer theme preset \"${String(preset)}\". Expected one of: ${Object.keys(presetDefaults).join(', ')}.`,\n    );\n  }\n  return defaults;\n}\n\nexport function resolveDataExplorerAppearance(\n  appearance?: DataExplorerAppearance,\n): DataExplorerResolvedTheme {\n  const preset = appearance?.preset ?? 'default';\n  const surface = appearance?.surface ?? 'card';\n  const defaults = getPresetDefaults(preset);\n  const density = appearance?.density ?? defaults.density ?? 'default';\n  const radius = appearance?.radius ?? defaults.radius ?? 'md';\n  const border = appearance?.border ?? defaults.border ?? 'solid';\n  const background = appearance?.background ?? defaults.background ?? 'plain';\n\n  const slots = mergeSlots(\n    baseSlots,\n    presetSlots[preset],\n    densitySlots[density],\n    radiusSlots[radius],\n    borderSlots[border],\n    backgroundSlots[background],\n    appearance?.slots,\n  );\n  if (surface === 'flush') {\n    slots.surfaceRoot = cn(\n      surfaceSlots.flush.surfaceRoot,\n      appearance?.slots?.surfaceRoot,\n    );\n  }\n\n  return {\n    surface,\n    preset,\n    density,\n    radius,\n    border,\n    background,\n    styles: mergeStyles(emptyStyles, appearance?.styles),\n    slots,\n  };\n}\n\nexport function getDataExplorerActionToneClassName(\n  theme: DataExplorerResolvedTheme,\n  tone: DataExplorerControlTone | undefined,\n  active: boolean,\n) {\n  return cn(\n    tone === 'primary'\n      ? theme.slots.actionButtonPrimary\n      : tone === 'danger'\n        ? theme.slots.actionButtonDanger\n        : tone === 'muted'\n          ? theme.slots.actionButtonMuted\n          : theme.slots.actionButtonDefault,\n    active && theme.slots.actionButtonActive,\n  );\n}\n\nexport function getDataExplorerMenuItemToneClassName(\n  theme: DataExplorerResolvedTheme,\n  tone: DataExplorerControlTone | undefined,\n) {\n  if (tone === 'primary') return theme.slots.menuItemPrimary;\n  if (tone === 'danger') return theme.slots.menuItemDanger;\n  if (tone === 'muted') return theme.slots.menuItemMuted;\n  return undefined;\n}\n","import { forwardRef } from 'react';\nimport type { MouseEvent } from 'react';\n\nimport type { DataExplorerButtonProps } from './types';\nimport { useDataExplorerAppearance } from './appearanceContext';\nimport {\n  getDataExplorerActionToneClassName,\n  resolveDataExplorerAppearance,\n} from './theme';\nimport { cn } from './utils';\n\nfunction LoadingIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-4 w-4 animate-spin\"\n      fill=\"none\"\n    >\n      <circle\n        cx=\"12\"\n        cy=\"12\"\n        r=\"9\"\n        className=\"opacity-25\"\n        stroke=\"currentColor\"\n        strokeWidth=\"3\"\n      />\n      <path\n        className=\"opacity-75\"\n        fill=\"currentColor\"\n        d=\"M12 3a9 9 0 0 1 9 9h-3a6 6 0 0 0-6-6V3Z\"\n      />\n    </svg>\n  );\n}\n\nexport const DataExplorerButton = forwardRef<\n  HTMLButtonElement,\n  DataExplorerButtonProps\n>(function DataExplorerButton(\n  {\n    children,\n    label,\n    icon,\n    endIcon,\n    type = 'button',\n    title,\n    ariaLabel,\n    tone,\n    active = false,\n    iconOnly = false,\n    disabled = false,\n    loading = false,\n    stopPropagation = false,\n    appearance,\n    className,\n    classNames,\n    style,\n    onClick,\n    'aria-label': nativeAriaLabel,\n    ...buttonProps\n  },\n  ref,\n) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const resolvedLabel = children ?? label;\n  const resolvedDisabled = disabled || loading;\n\n  const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n    if (stopPropagation) {\n      event.stopPropagation();\n    }\n    if (resolvedDisabled) return;\n    onClick?.(event);\n  };\n\n  return (\n    <button\n      {...buttonProps}\n      ref={ref}\n      type={type}\n      title={title}\n      aria-label={ariaLabel ?? nativeAriaLabel}\n      aria-pressed={active || undefined}\n      aria-busy={loading || undefined}\n      disabled={resolvedDisabled}\n      className={cn(\n        theme.slots.controlButton,\n        iconOnly && theme.slots.actionIconButton,\n        getDataExplorerActionToneClassName(theme, tone, active),\n        resolvedDisabled && theme.slots.actionButtonDisabled,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.control,\n        ...(active ? theme.styles.controlActive : undefined),\n        ...(resolvedDisabled ? theme.styles.controlDisabled : undefined),\n        ...style,\n      }}\n      onClick={handleClick}\n    >\n      {loading ? (\n        <span className={cn(theme.slots.controlButtonIcon, classNames?.icon)}>\n          <LoadingIcon />\n        </span>\n      ) : icon ? (\n        <span className={cn(theme.slots.controlButtonIcon, classNames?.icon)}>\n          {icon}\n        </span>\n      ) : null}\n      {iconOnly ? (\n        <span className=\"sr-only\">{resolvedLabel}</span>\n      ) : resolvedLabel ? (\n        <span className={cn(theme.slots.controlButtonLabel, classNames?.label)}>\n          {resolvedLabel}\n        </span>\n      ) : null}\n      {endIcon ? (\n        <span className={cn(theme.slots.controlButtonIcon, classNames?.icon)}>\n          {endIcon}\n        </span>\n      ) : null}\n    </button>\n  );\n});\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport type { DataExplorerCheckboxProps } from './types';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn } from './utils';\n\nfunction CheckIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-3.5 w-3.5\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2.5\"\n    >\n      <path d=\"m5 12 4 4L19 6\" />\n    </svg>\n  );\n}\n\nexport function DataExplorerCheckbox({\n  checked = false,\n  icon,\n  label,\n  title,\n  disabled = false,\n  appearance,\n  className,\n  classNames,\n  style,\n  onCheckedChange,\n}: DataExplorerCheckboxProps) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n\n  return (\n    <button\n      type=\"button\"\n      title={title}\n      aria-pressed={checked}\n      disabled={disabled}\n      className={cn(\n        theme.slots.controlCheckbox,\n        checked && theme.slots.actionToggleActive,\n        disabled && theme.slots.actionButtonDisabled,\n        classNames?.root,\n        className,\n      )}\n      style={{\n        ...theme.styles.control,\n        ...(checked ? theme.styles.controlActive : undefined),\n        ...(disabled ? theme.styles.controlDisabled : undefined),\n        ...style,\n      }}\n      onClick={(event) => {\n        event.stopPropagation();\n        if (disabled) return;\n        void onCheckedChange?.(!checked);\n      }}\n    >\n      <span\n        className={cn(\n          theme.slots.controlCheckboxIndicator,\n          classNames?.indicator,\n          icon !== undefined && icon !== null && !checked && classNames?.icon,\n        )}\n      >\n        {checked ? <CheckIcon /> : icon}\n      </span>\n      {label ? (\n        <span className={cn(theme.slots.controlCheckboxLabel, classNames?.label)}>\n          {label}\n        </span>\n      ) : null}\n    </button>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\n\nimport type { DataExplorerSelectProps } from './types';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn } from './utils';\n\nfunction ChevronDownIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"m6 9 6 6 6-6\" />\n    </svg>\n  );\n}\n\nfunction CheckIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"m5 12 4 4L19 6\" />\n    </svg>\n  );\n}\n\nexport function DataExplorerSelect({\n  value = '',\n  options = [],\n  label,\n  placeholder = 'Select',\n  icon,\n  title,\n  triggerLabel,\n  disabled = false,\n  display = 'value',\n  align = 'start',\n  sideOffset = 6,\n  appearance,\n  className,\n  classNames,\n  style,\n  onValueChange,\n}: DataExplorerSelectProps) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const selected = options.find((option) => option.value === value);\n  const valueNode =\n    display === 'label-value' && label ? (\n      <>\n        <span>{label}</span>\n        <span className=\"text-muted-foreground\">\n          {selected?.label ?? placeholder}\n        </span>\n      </>\n    ) : (\n      selected?.label ?? label ?? placeholder\n    );\n\n  return (\n    <DropdownMenu.Root>\n      <DropdownMenu.Trigger asChild>\n        <button\n          type=\"button\"\n          title={title}\n          aria-label={triggerLabel}\n          disabled={disabled || options.length === 0}\n          className={cn(\n            theme.slots.controlSelectTrigger,\n            classNames?.trigger,\n            classNames?.root,\n            className,\n          )}\n          style={{ ...theme.styles.control, ...style }}\n          onClick={(event) => event.stopPropagation()}\n        >\n          {icon ? (\n            <span className={cn(theme.slots.controlButtonIcon, classNames?.icon)}>\n              {icon}\n            </span>\n          ) : null}\n          <span\n            className={cn(theme.slots.controlSelectValue, classNames?.value)}\n          >\n            {valueNode}\n          </span>\n          <ChevronDownIcon />\n        </button>\n      </DropdownMenu.Trigger>\n      <DropdownMenu.Portal>\n        <DropdownMenu.Content\n          align={align}\n          sideOffset={sideOffset}\n          className={cn(theme.slots.menuContent, classNames?.content)}\n          style={theme.styles.menuContent}\n          onClick={(event) => event.stopPropagation()}\n        >\n          <DropdownMenu.RadioGroup\n            value={value}\n            onValueChange={(nextValue) => {\n              if (disabled) return;\n              void onValueChange?.(nextValue);\n            }}\n          >\n            {options.map((option) => (\n              <DropdownMenu.RadioItem\n                key={option.value}\n                value={option.value}\n                title={option.title}\n                disabled={option.disabled}\n                className={cn(theme.slots.menuItem, classNames?.item)}\n                style={theme.styles.menuItem}\n              >\n                <span className={cn(theme.slots.menuItemIcon, classNames?.itemIcon)}>\n                  {option.value === value ? <CheckIcon /> : option.icon}\n                </span>\n                <span className={cn(theme.slots.menuItemLabel, classNames?.itemLabel)}>\n                  {option.label}\n                </span>\n              </DropdownMenu.RadioItem>\n            ))}\n          </DropdownMenu.RadioGroup>\n        </DropdownMenu.Content>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Root>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\n\nimport { DataExplorerButton } from './DataExplorerButton';\nimport { DataExplorerCheckbox } from './DataExplorerCheckbox';\nimport { DataExplorerSelect } from './DataExplorerSelect';\nimport type {\n  DataExplorerToolbarAction,\n  DataExplorerToolbarActionItem,\n  DataExplorerToolbarActionsProps,\n} from './types';\nimport {\n  getDataExplorerMenuItemToneClassName,\n  resolveDataExplorerAppearance,\n} from './theme';\nimport { cn, resolveDataExplorerValue } from './utils';\n\ntype ResolvedTheme = ReturnType<typeof resolveDataExplorerAppearance>;\n\nfunction ChevronDownIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"m6 9 6 6 6-6\" />\n    </svg>\n  );\n}\n\nfunction resolveActionDisabled<TContext>(\n  action: DataExplorerToolbarAction<TContext>,\n  context: TContext | undefined,\n) {\n  return (\n    resolveDataExplorerValue(action.disabled, context) ??\n    resolveDataExplorerValue(action.loading, context) ??\n    false\n  );\n}\n\nfunction getActionCallback<TContext>(\n  action: DataExplorerToolbarAction<TContext>,\n) {\n  return action.onAction ?? action.onClick;\n}\n\nfunction renderMenuItem<TContext>(\n  action: DataExplorerToolbarActionItem<TContext>,\n  context: TContext | undefined,\n  theme: ResolvedTheme,\n  className?: string,\n) {\n  const disabled =\n    (resolveDataExplorerValue(action.disabled, context) ?? false) ||\n    (resolveDataExplorerValue(action.loading, context) ?? false);\n  const active = resolveDataExplorerValue(action.active, context) ?? false;\n\n  return (\n    <div key={action.id}>\n      {action.separatorBefore ? (\n        <DropdownMenu.Separator className={theme.slots.menuSeparator} />\n      ) : null}\n      <DropdownMenu.Item\n        title={action.title}\n        disabled={disabled}\n        className={cn(\n          theme.slots.menuItem,\n          getDataExplorerMenuItemToneClassName(theme, action.tone),\n          active && 'bg-accent text-accent-foreground',\n          className,\n        )}\n        style={theme.styles.menuItem}\n        onSelect={() => {\n          if (!action.onAction || disabled) return;\n          void action.onAction(context as TContext);\n        }}\n      >\n        {action.icon ? (\n          <span className={theme.slots.menuItemIcon}>{action.icon}</span>\n        ) : null}\n        <span className={theme.slots.menuItemLabel}>{action.label}</span>\n      </DropdownMenu.Item>\n      {action.separatorAfter ? (\n        <DropdownMenu.Separator className={theme.slots.menuSeparator} />\n      ) : null}\n    </div>\n  );\n}\n\nfunction renderMenuAction<TContext>(\n  action: DataExplorerToolbarAction<TContext>,\n  context: TContext | undefined,\n  theme: ResolvedTheme,\n  classNames: DataExplorerToolbarActionsProps<TContext>['classNames'],\n  appearance: DataExplorerToolbarActionsProps<TContext>['appearance'],\n) {\n  const disabled = resolveActionDisabled(action, context);\n  const active = resolveDataExplorerValue(action.active, context) ?? false;\n  const visibleItems = (action.items ?? []).filter(\n    (item) => resolveDataExplorerValue(item.visible, context) ?? true,\n  );\n\n  return (\n    <DropdownMenu.Root key={action.id}>\n      <DropdownMenu.Trigger asChild>\n        <DataExplorerButton\n          title={action.title}\n          ariaLabel={action.triggerLabel}\n          disabled={disabled || visibleItems.length === 0}\n          label={action.label}\n          icon={action.icon}\n          endIcon={<ChevronDownIcon />}\n          tone={action.tone}\n          active={active}\n          stopPropagation\n          appearance={appearance}\n          className={classNames?.action}\n        />\n      </DropdownMenu.Trigger>\n      <DropdownMenu.Portal>\n        <DropdownMenu.Content\n          align={action.align ?? 'end'}\n          sideOffset={action.sideOffset ?? 6}\n          className={cn(theme.slots.menuContent, classNames?.menuContent)}\n          style={theme.styles.menuContent}\n          onClick={(event) => event.stopPropagation()}\n        >\n          {action.menuLabel ? (\n            <>\n              <DropdownMenu.Label className={theme.slots.menuLabel}>\n                {action.menuLabel}\n              </DropdownMenu.Label>\n              <DropdownMenu.Separator className={theme.slots.menuSeparator} />\n            </>\n          ) : null}\n          {visibleItems.map((item) =>\n            renderMenuItem(item, context, theme, classNames?.menuItem),\n          )}\n        </DropdownMenu.Content>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Root>\n  );\n}\n\nfunction renderSelectAction<TContext>(\n  action: DataExplorerToolbarAction<TContext>,\n  context: TContext | undefined,\n  classNames: DataExplorerToolbarActionsProps<TContext>['classNames'],\n  appearance: DataExplorerToolbarActionsProps<TContext>['appearance'],\n) {\n  const disabled = resolveActionDisabled(action, context);\n  const value = String(resolveDataExplorerValue(action.value, context) ?? '');\n  const options = action.options ?? [];\n\n  return (\n    <DataExplorerSelect\n      key={action.id}\n      value={value}\n      label={action.label}\n      icon={action.icon}\n      title={action.title}\n      triggerLabel={action.triggerLabel}\n      disabled={disabled}\n      display={action.selectDisplay ?? 'label-value'}\n      align={action.align ?? 'end'}\n      sideOffset={action.sideOffset ?? 6}\n      options={options.map((option) => ({\n        value: option.value,\n        label: option.label,\n        icon: option.icon,\n        title: option.title,\n        disabled: resolveDataExplorerValue(option.disabled, context) ?? false,\n      }))}\n      appearance={appearance}\n      classNames={{\n        trigger: classNames?.action,\n        content: classNames?.menuContent,\n        item: classNames?.menuItem,\n      }}\n      onValueChange={(nextValue) => {\n        if (!action.onValueChange || disabled) return;\n        void action.onValueChange(nextValue, context as TContext);\n      }}\n    />\n  );\n}\n\nfunction renderButtonAction<TContext>(\n  action: DataExplorerToolbarAction<TContext>,\n  context: TContext | undefined,\n  appearance: DataExplorerToolbarActionsProps<TContext>['appearance'],\n  className?: string,\n) {\n  const kind = action.kind ?? 'button';\n  const active =\n    kind === 'toggle'\n      ? resolveDataExplorerValue(action.checked, context) ??\n        resolveDataExplorerValue(action.active, context) ??\n        false\n      : resolveDataExplorerValue(action.active, context) ?? false;\n  const disabled = resolveActionDisabled(action, context);\n  const callback = getActionCallback(action);\n\n  if (kind === 'toggle') {\n    return (\n      <DataExplorerCheckbox\n        key={action.id}\n        checked={active}\n        icon={action.icon}\n        label={action.label}\n        title={action.title}\n        disabled={disabled}\n        appearance={appearance}\n        className={className}\n        onCheckedChange={(checked) => {\n          if (action.onCheckedChange) {\n            void action.onCheckedChange(checked, context as TContext);\n          }\n        }}\n      />\n    );\n  }\n\n  return (\n    <DataExplorerButton\n      key={action.id}\n      label={action.label}\n      icon={action.icon}\n      title={action.title}\n      ariaLabel={kind === 'icon-button' ? action.triggerLabel || action.title : undefined}\n      tone={action.tone}\n      active={active}\n      iconOnly={kind === 'icon-button'}\n      disabled={disabled}\n      loading={resolveDataExplorerValue(action.loading, context) ?? false}\n      stopPropagation\n      appearance={appearance}\n      className={className}\n      onClick={() => {\n        if (!callback) return;\n        void callback(context as TContext);\n      }}\n    />\n  );\n}\n\nexport function DataExplorerToolbarActions<TContext = unknown>({\n  context,\n  actions = [],\n  layout = 'action-bar',\n  appearance,\n  empty,\n  children,\n  className,\n  classNames,\n}: DataExplorerToolbarActionsProps<TContext>) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const renderedActions = actions\n    .filter((action) => resolveDataExplorerValue(action.visible, context) ?? true)\n    .map((action) => {\n      if (action.render) {\n        return <div key={action.id}>{action.render(context as TContext)}</div>;\n      }\n      if (action.renderTrigger) {\n        return <div key={action.id}>{action.renderTrigger(context as TContext)}</div>;\n      }\n      const renderedAction =\n        action.kind === 'menu'\n          ? renderMenuAction(action, context, theme, classNames, appearance)\n          : action.kind === 'select'\n            ? renderSelectAction(action, context, classNames, appearance)\n            : renderButtonAction(action, context, appearance, classNames?.action);\n\n      if (!action.wrapTrigger) {\n        return renderedAction;\n      }\n\n      return (\n        <div key={action.id}>\n          {action.wrapTrigger(renderedAction, context as TContext)}\n        </div>\n      );\n    });\n\n  if (renderedActions.length === 0 && !children && !empty) return null;\n\n  const layoutClassName =\n    layout === 'action-bar'\n      ? theme.slots.actionBarActions\n      : layout === 'toolbar'\n        ? theme.slots.toolbarActions\n        : 'flex items-center gap-2';\n\n  return (\n    <div className={cn(layoutClassName, classNames?.root, className)}>\n      {renderedActions}\n      {children}\n      {renderedActions.length === 0 && !children ? empty : null}\n    </div>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport { DataExplorerToolbarActions } from './DataExplorerToolbarActions';\nimport { resolveDataExplorerAppearance } from './theme';\nimport type { DataExplorerActionBarProps } from './types';\nimport { cn } from './utils';\n\nexport function DataExplorerActionBar<TContext = unknown>({\n  context,\n  actions = [],\n  leading,\n  trailing,\n  children,\n  empty,\n  appearance,\n  className,\n  classNames,\n}: DataExplorerActionBarProps<TContext>) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n\n  const hasContent =\n    !!leading || !!trailing || !!children || actions.length > 0;\n  const hasRenderableContent = hasContent || !!empty;\n\n  if (!hasRenderableContent) {\n    return null;\n  }\n\n  return (\n    <div\n      className={cn(\n        theme.slots.actionBarRoot,\n        classNames?.root,\n        className,\n      )}\n    >\n      {leading ? (\n        <div className={cn(theme.slots.actionBarLeading, classNames?.leading)}>\n          {leading}\n        </div>\n      ) : null}\n\n      <DataExplorerToolbarActions\n        context={context}\n        actions={actions}\n        layout=\"action-bar\"\n        appearance={appearance}\n        empty={!hasContent ? empty : undefined}\n        classNames={{\n          root: classNames?.actions,\n          action: classNames?.action,\n        }}\n      >\n        {children}\n      </DataExplorerToolbarActions>\n\n      {trailing ? (\n        <div className={cn(theme.slots.actionBarTrailing, classNames?.trailing)}>\n          {trailing}\n        </div>\n      ) : null}\n    </div>\n  );\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { ChevronDown, Loader2 } from 'lucide-react';\n\nimport { BaseListFooter } from '../base/BaseListFooter';\nimport { cn } from '../base/utils';\nimport {\n  Button,\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuLabel,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n  Input,\n} from '../primitives';\nimport { useMonkeysLocaleMessages } from '../../provider/context';\nimport type { DataExplorerCollectionFooterProps } from './types';\n\nexport function DataExplorerCollectionFooter({ selectedCount, loadedStart, loadedEnd, total, currentPage = 1, pageSize = Math.max(1, loadedEnd || 1), pageSizeOptions = [], loading, selectedLabel, loadedLabel, pageSizeLabel, pageText, tone = 'default', className, classNames, onJump, onJumpToPage, onPageSizeChange }: DataExplorerCollectionFooterProps) {\n  const messages = useMonkeysLocaleMessages().pagination;\n  const hasRange = typeof loadedStart === 'number' && loadedStart > 0 && loadedEnd >= loadedStart;\n  const resolvedLoadedLabel = loadedLabel ?? (hasRange ? messages.range({ start: loadedStart, end: loadedEnd, total }) : messages.range({ start: 0, end: loadedEnd, total }));\n  const [isEditingJump, setIsEditingJump] = useState(false);\n  const [jumpInput, setJumpInput] = useState(String(currentPage));\n  const jumpInputRef = useRef<HTMLInputElement | null>(null);\n  const maxPage = total > 0 ? Math.max(1, Math.ceil(total / Math.max(1, pageSize))) : 1;\n\n  useEffect(() => {\n    if (!isEditingJump) setJumpInput(String(currentPage));\n  }, [currentPage, isEditingJump]);\n\n  useEffect(() => {\n    if (!isEditingJump) return;\n    const timer = window.setTimeout(() => {\n      jumpInputRef.current?.focus();\n      jumpInputRef.current?.select();\n    }, 0);\n    return () => window.clearTimeout(timer);\n  }, [isEditingJump]);\n\n  if (tone === 'hard-edge') {\n    const confirmJump = () => {\n      const parsed = Math.floor(Number(jumpInput));\n      if (!Number.isFinite(parsed) || Number.isNaN(parsed)) {\n        setJumpInput(String(currentPage));\n        setIsEditingJump(false);\n        return;\n      }\n      const target = Math.min(maxPage, Math.max(1, parsed));\n      setIsEditingJump(false);\n      if (target !== currentPage) onJumpToPage?.(target);\n    };\n    return (\n      <div\n        className={cn('flex items-center border-t bg-background px-4 py-3', classNames?.root, className)}\n        data-monkeys-component=\"collection-footer\"\n        data-tone=\"hard-edge\"\n      >\n        <div className={cn('flex min-w-0 items-center gap-1 whitespace-nowrap text-sm text-muted-foreground', classNames?.summary)}>\n          {selectedCount !== undefined ? <span>{selectedLabel ?? messages.selected({ count: selectedCount })} ·</span> : null}\n          {onJumpToPage && total > 0 ? (\n            isEditingJump ? (\n              <div className=\"flex items-center gap-2\">\n                <span className=\"text-xs text-muted-foreground\">{messages.jumpToPage}</span>\n                <Input\n                  ref={jumpInputRef}\n                  type=\"number\"\n                  inputMode=\"numeric\"\n                  min={1}\n                  max={maxPage}\n                  value={jumpInput}\n                  onChange={(event) => setJumpInput(event.currentTarget.value)}\n                  onKeyDown={(event) => {\n                    if (event.key === 'Enter') {\n                      event.preventDefault();\n                      event.currentTarget.blur();\n                    }\n                    if (event.key === 'Escape') {\n                      event.preventDefault();\n                      setIsEditingJump(false);\n                      setJumpInput(String(currentPage));\n                    }\n                  }}\n                  onBlur={confirmJump}\n                  className=\"h-7 w-20 px-2 text-xs\"\n                  aria-label={messages.jumpToPage}\n                />\n                <span className=\"text-xs text-muted-foreground\">/ {maxPage} {messages.pages}</span>\n              </div>\n            ) : (\n              <button\n                type=\"button\"\n                className={cn('inline-flex items-center text-muted-foreground underline-offset-4 hover:text-foreground hover:underline', classNames?.jumpButton)}\n                onClick={() => {\n                  setJumpInput(String(currentPage));\n                  setIsEditingJump(true);\n                  onJump?.();\n                }}\n                title={messages.clickToJump}\n              >\n                {resolvedLoadedLabel}{pageText ? ` (${pageText})` : null}\n                {loading ? <Loader2 aria-hidden=\"true\" className=\"ml-1 inline-block h-3 w-3 animate-spin\" /> : null}\n              </button>\n            )\n          ) : (\n            <span className=\"inline-flex items-center\">\n              {resolvedLoadedLabel}{pageText ? ` (${pageText})` : null}\n              {loading ? <Loader2 aria-hidden=\"true\" className=\"ml-1 h-3 w-3 animate-spin\" /> : null}\n            </span>\n          )}\n        </div>\n        {onPageSizeChange && pageSizeOptions.length > 0 ? (\n          <div className={cn('ml-auto', classNames?.pageSizeControl)}>\n            <DropdownMenu>\n              <DropdownMenuTrigger asChild>\n                <Button\n                  type=\"button\"\n                  variant=\"outline\"\n                  size=\"sm\"\n                  className={cn('h-8 gap-1 px-2', classNames?.pageSizeButton)}\n                  aria-label={typeof pageSizeLabel === 'string' ? pageSizeLabel : messages.perLoad}\n                >\n                  {pageSize}\n                  <ChevronDown aria-hidden=\"true\" className=\"h-4 w-4\" />\n                </Button>\n              </DropdownMenuTrigger>\n              <DropdownMenuContent align=\"end\" className=\"w-32\">\n                <DropdownMenuLabel>{pageSizeLabel ?? messages.perLoad}</DropdownMenuLabel>\n                <DropdownMenuSeparator />\n                <DropdownMenuRadioGroup\n                  value={String(pageSize)}\n                  onValueChange={(value) => {\n                    const next = Number(value);\n                    if (Number.isFinite(next)) onPageSizeChange(next);\n                  }}\n                >\n                  {pageSizeOptions.map((size) => (\n                    <DropdownMenuRadioItem key={size} value={String(size)}>{size}</DropdownMenuRadioItem>\n                  ))}\n                </DropdownMenuRadioGroup>\n              </DropdownMenuContent>\n            </DropdownMenu>\n          </div>\n        ) : null}\n      </div>\n    );\n  }\n  return <BaseListFooter total={total} loadedStart={loadedStart} loadedEnd={loadedEnd} selectedCount={selectedCount} page={currentPage} pageSize={pageSize} pageSizeOptions={pageSizeOptions} loading={loading} totalLabel={<>{resolvedLoadedLabel} {pageText ? `(${pageText})` : null}</>} selectedLabel={selectedLabel} pageSizeLabel={pageSizeLabel} className={className} classNames={{ root: classNames?.root, summary: classNames?.summary, pageSize: classNames?.pageSizeControl }} onSummaryClick={onJump} onPageSizeChange={onPageSizeChange} />;\n}\n","import type { CSSProperties } from 'react';\n\nimport type { DataExplorerFilterBarProps } from './types';\nimport { cn } from './utils';\n\nfunction toCssSize(value: number | string): string {\n  return typeof value === 'number' ? `${value}px` : value;\n}\n\nexport function DataExplorerFilterBar({\n  label,\n  leading,\n  children,\n  actions,\n  maxFieldsHeight = 80,\n  className,\n  classNames,\n  style,\n  ...props\n}: DataExplorerFilterBarProps) {\n  const fieldsViewportStyle: CSSProperties = {\n    maxHeight: toCssSize(maxFieldsHeight),\n  };\n\n  return (\n    <div\n      className={cn(\n        'border-b border-border/60 bg-background px-8 py-3',\n        classNames?.root,\n        className,\n      )}\n      style={style}\n      {...props}\n    >\n      <div\n        className={cn(\n          'flex min-w-0 items-start gap-2 text-sm',\n          classNames?.layout,\n        )}\n      >\n        {label ? (\n          <div\n            className={cn(\n              'flex h-9 shrink-0 items-center font-semibold text-foreground',\n              classNames?.label,\n            )}\n          >\n            {label}\n          </div>\n        ) : null}\n\n        <div\n          className={cn(\n            'min-w-0 flex-1 overflow-y-auto overscroll-contain',\n            classNames?.fieldsViewport,\n          )}\n          style={fieldsViewportStyle}\n        >\n          <div\n            className={cn(\n              'flex flex-wrap items-center gap-2',\n              classNames?.fields,\n            )}\n          >\n            {leading}\n            {children}\n          </div>\n        </div>\n\n        {actions ? (\n          <div\n            className={cn(\n              'flex shrink-0 items-center gap-2',\n              classNames?.actions,\n            )}\n          >\n            {actions}\n          </div>\n        ) : null}\n      </div>\n    </div>\n  );\n}\n","import type { DataExplorerDetailFieldProps } from \"./types\";\nimport { cn } from \"./utils\";\n\nfunction hasContent(value: unknown) {\n  return (\n    value !== null && value !== undefined && value !== false && value !== \"\"\n  );\n}\n\nexport function DataExplorerDetailField<TContext = unknown>({\n  field,\n  label = field?.label,\n  icon = field?.icon,\n  value = field?.value,\n  helperText = field?.helperText,\n  error = field?.error,\n  required = field?.required ?? false,\n  disabled = field?.disabled ?? false,\n  children,\n  context,\n  className,\n  valueClassName = field?.valueClassName,\n  classNames,\n  dataAttributes = field?.dataAttributes,\n  labelDataAttributes = field?.labelDataAttributes,\n  valueDataAttributes = field?.valueDataAttributes,\n  helperDataAttributes = field?.helperDataAttributes,\n  errorDataAttributes = field?.errorDataAttributes,\n}: DataExplorerDetailFieldProps<TContext>) {\n  const resolvedClassNames = {\n    ...field?.classNames,\n    ...classNames,\n  };\n  const content =\n    children ?? (field?.render ? field.render(context as TContext) : value);\n  const hasError = hasContent(error);\n\n  return (\n    <div\n      {...dataAttributes}\n      title={field?.title}\n      aria-disabled={disabled || undefined}\n      data-disabled={disabled || undefined}\n      data-invalid={hasError || undefined}\n      data-required={required || undefined}\n      className={cn(\n        \"min-w-0 space-y-1\",\n        disabled && \"opacity-60\",\n        resolvedClassNames.root,\n        field?.className,\n        className,\n      )}\n    >\n      <div\n        className={cn(\n          \"flex min-w-0 items-center gap-1.5 text-[13px] font-medium text-muted-foreground\",\n          resolvedClassNames.label,\n        )}\n      >\n        {icon ? (\n          <span\n            className={cn(\n              \"inline-flex shrink-0 items-center justify-center\",\n              resolvedClassNames.icon,\n            )}\n          >\n            {icon}\n          </span>\n        ) : null}\n        <span {...labelDataAttributes} className=\"min-w-0 truncate\">{label}</span>\n        {required ? (\n          <span\n            aria-hidden=\"true\"\n            className={cn(\"text-destructive-text\", resolvedClassNames.required)}\n          >\n            *\n          </span>\n        ) : null}\n      </div>\n      <div\n        {...valueDataAttributes}\n        className={cn(\n          \"min-w-0 max-w-full text-[15px] leading-6 text-foreground [overflow-wrap:anywhere]\",\n          resolvedClassNames.value,\n          valueClassName,\n        )}\n      >\n        {content}\n      </div>\n      {hasContent(helperText) ? (\n        <div\n          {...helperDataAttributes}\n          data-slot=\"helper\"\n          className={cn(\n            \"min-w-0 max-w-full text-xs leading-5 text-muted-foreground [overflow-wrap:anywhere]\",\n            resolvedClassNames.helper,\n          )}\n        >\n          {helperText}\n        </div>\n      ) : null}\n      {hasError ? (\n        <div\n          {...errorDataAttributes}\n          role=\"alert\"\n          data-slot=\"error\"\n          className={cn(\n            \"min-w-0 max-w-full text-xs leading-5 text-destructive-text [overflow-wrap:anywhere]\",\n            resolvedClassNames.error,\n          )}\n        >\n          {error}\n        </div>\n      ) : null}\n    </div>\n  );\n}\n","import { DataExplorerDetailField } from \"./DataExplorerDetailField\";\nimport type { DataExplorerDetailSectionProps } from \"./types\";\nimport { cn, resolveDataExplorerValue } from \"./utils\";\n\nexport function DataExplorerDetailSection<TContext = unknown>({\n  section,\n  title = section?.title,\n  fields = section?.fields,\n  children,\n  context,\n  className,\n  classNames,\n  fieldClassNames,\n}: DataExplorerDetailSectionProps<TContext>) {\n  const resolvedClassNames = {\n    ...section?.classNames,\n    ...classNames,\n  };\n  const visibleFields = (fields || []).filter(\n    (field) => !(resolveDataExplorerValue(field.hidden, context) ?? false),\n  );\n  const sectionChildren =\n    children ??\n    (typeof section?.children === \"function\"\n      ? section.children(context as TContext)\n      : section?.children);\n  const hasContent = Boolean(sectionChildren) || visibleFields.length > 0;\n\n  if (!hasContent || resolveDataExplorerValue(section?.hidden, context)) {\n    return null;\n  }\n\n  return (\n    <section\n      className={cn(\n        \"border-b border-border pb-6 last:border-b-0 last:pb-0\",\n        resolvedClassNames.root,\n        section?.className,\n        className,\n      )}\n    >\n      {title ? (\n        <div\n          className={cn(\n            \"mb-4 text-[15px] font-semibold text-foreground\",\n            resolvedClassNames.title,\n          )}\n        >\n          {title}\n        </div>\n      ) : null}\n      <div className={cn(\"space-y-4\", resolvedClassNames.body)}>\n        {sectionChildren}\n        {visibleFields.map((field, index) => (\n          <DataExplorerDetailField\n            key={field.id || String(index)}\n            field={field}\n            context={context}\n            classNames={fieldClassNames}\n          />\n        ))}\n      </div>\n    </section>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport { DataExplorerDetailSection } from './DataExplorerDetailSection';\nimport type { DataExplorerDetailShellProps } from './types';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn, resolveDataExplorerValue } from './utils';\n\nfunction DefaultCloseIcon() {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      aria-hidden=\"true\"\n      className=\"h-[18px] w-[18px]\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"M18 6 6 18\" />\n      <path d=\"m6 6 12 12\" />\n    </svg>\n  );\n}\n\nfunction DefaultChevronLeftIcon() {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      aria-hidden=\"true\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"m15 18-6-6 6-6\" />\n    </svg>\n  );\n}\n\nfunction DefaultChevronRightIcon() {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      aria-hidden=\"true\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"m9 18 6-6-6-6\" />\n    </svg>\n  );\n}\n\nexport function DataExplorerDetailShell<TContext = unknown>({\n  title,\n  subtitle,\n  leading,\n  actions,\n  preview,\n  previewVisible = true,\n  previewStyle,\n  previewPadded = false,\n  previewCentered = true,\n  sections = [],\n  rightPanel,\n  context,\n  navigation,\n  closeLabel = 'Close',\n  closeIcon,\n  closeVisible = true,\n  onClose,\n  appearance,\n  className,\n  classNames,\n}: DataExplorerDetailShellProps<TContext>) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const hasNavigation =\n    (navigation?.visible ?? true) &&\n    typeof navigation?.count === 'number' &&\n    navigation.count > 1;\n  const visibleSections = sections.filter(\n    (section) =>\n      !(resolveDataExplorerValue(section.hidden, context) ?? false),\n  );\n\n  return (\n    <div\n      className={cn(\n        theme.slots.detailRoot,\n        classNames?.root,\n        className,\n      )}\n      style={theme.styles.detailRoot}\n    >\n      <div\n        className={cn(\n          theme.slots.detailHeader,\n          classNames?.header,\n        )}\n      >\n        <div className={cn('flex min-w-0 items-center gap-3', classNames?.headerMain)}>\n          {leading ? (\n            <div\n              className={cn(\n                theme.slots.detailLeading,\n                classNames?.leading,\n              )}\n            >\n              {leading}\n            </div>\n          ) : null}\n          <div className={cn('min-w-0', classNames?.titleGroup)}>\n            <div\n              className={cn(\n                'truncate text-[20px] font-semibold leading-tight text-foreground',\n                classNames?.title,\n              )}\n            >\n              {title}\n            </div>\n            {subtitle ? (\n              <div\n                className={cn(\n                  'mt-1 min-w-0 truncate text-sm text-muted-foreground',\n                  classNames?.subtitle,\n                )}\n              >\n                {subtitle}\n              </div>\n            ) : null}\n          </div>\n        </div>\n\n        <div className={cn('flex items-center gap-2', classNames?.headerActions)}>\n          {actions}\n          {hasNavigation ? (\n            <div\n              className={cn(\n                theme.slots.detailNavigation,\n                classNames?.navigation,\n              )}\n            >\n              <button\n                type=\"button\"\n                aria-label={navigation?.previousLabel || 'Previous'}\n                className={cn(\n                  theme.slots.detailNavigationButton,\n                  classNames?.navigationButton,\n                )}\n                disabled={!navigation?.onPrevious}\n                onClick={navigation?.onPrevious}\n              >\n                <DefaultChevronLeftIcon />\n              </button>\n              <div\n                className={cn(\n                  'min-w-[74px] text-center text-xs font-medium text-muted-foreground',\n                  classNames?.navigationCount,\n                )}\n              >\n                {navigation.index + 1} / {navigation.count}\n              </div>\n              <button\n                type=\"button\"\n                aria-label={navigation?.nextLabel || 'Next'}\n                className={cn(\n                  theme.slots.detailNavigationButton,\n                  classNames?.navigationButton,\n                )}\n                disabled={!navigation?.onNext}\n                onClick={navigation?.onNext}\n              >\n                <DefaultChevronRightIcon />\n              </button>\n            </div>\n          ) : null}\n\n          {closeVisible ? (\n            <button\n              type=\"button\"\n              aria-label={closeLabel}\n              className={cn(\n                theme.slots.detailCloseButton,\n                classNames?.closeButton,\n              )}\n              onClick={onClose}\n            >\n              {closeIcon ?? <DefaultCloseIcon />}\n            </button>\n          ) : null}\n        </div>\n      </div>\n\n      <div\n        className={cn(\n          'grid min-h-0 flex-1',\n          previewVisible\n            ? 'xl:grid-cols-[minmax(0,1fr)_380px] 2xl:grid-cols-[minmax(0,1fr)_400px]'\n            : 'grid-cols-1',\n          classNames?.body,\n        )}\n      >\n        {previewVisible ? (\n          <div\n            className={cn(\n              theme.slots.detailPreviewPanel,\n              classNames?.previewPanel,\n            )}\n          >\n          <div\n            className={cn(\n              'flex h-full min-h-0 flex-col',\n              classNames?.previewStack,\n            )}\n          >\n            {hasNavigation ? (\n              <div className=\"flex justify-end\">\n                <div\n                  className={cn(\n                    'text-xs text-muted-foreground xl:hidden',\n                    classNames?.previewMobileCount,\n                  )}\n                >\n                  {navigation.index + 1} / {navigation.count}\n                </div>\n              </div>\n            ) : null}\n\n            <div\n              className={cn(\n                'flex min-h-0 flex-1 justify-center',\n                previewCentered && 'items-stretch',\n                classNames?.previewWrapper,\n              )}\n            >\n              <div\n                className={cn(\n                  theme.slots.detailPreviewFrame,\n                  classNames?.previewFrame,\n                )}\n                style={previewStyle}\n              >\n                <div\n                  className={cn(\n                    'relative flex h-full w-full items-center justify-center',\n                    previewPadded && 'p-4',\n                    classNames?.previewContent,\n                  )}\n                >\n                  {preview}\n                </div>\n\n                {hasNavigation ? (\n                  <>\n                    <button\n                      type=\"button\"\n                      aria-label={navigation?.previousLabel || 'Previous'}\n                      className={cn(\n                        theme.slots.previewNavigationButton,\n                        'left-4',\n                        classNames?.previewNavigationButton,\n                      )}\n                      disabled={!navigation?.onPrevious}\n                      onClick={navigation?.onPrevious}\n                    >\n                      <DefaultChevronLeftIcon />\n                    </button>\n                    <button\n                      type=\"button\"\n                      aria-label={navigation?.nextLabel || 'Next'}\n                      className={cn(\n                        theme.slots.previewNavigationButton,\n                        'right-4',\n                        classNames?.previewNavigationButton,\n                      )}\n                      disabled={!navigation?.onNext}\n                      onClick={navigation?.onNext}\n                    >\n                      <DefaultChevronRightIcon />\n                    </button>\n                  </>\n                ) : null}\n              </div>\n            </div>\n          </div>\n          </div>\n        ) : null}\n\n        <div\n          className={cn(\n            theme.slots.detailRightPanel,\n            classNames?.rightPanel,\n          )}\n        >\n          <div\n            className={cn(\n              theme.slots.detailRightPanelBody,\n              classNames?.rightPanelBody,\n            )}\n            style={{ scrollbarGutter: 'stable' }}\n          >\n            {rightPanel ?? (\n              <div className={cn('space-y-6', classNames?.sections)}>\n                {visibleSections.map((section) => (\n                  <DataExplorerDetailSection\n                    key={section.id}\n                    section={section}\n                    context={context}\n                    className={classNames?.section}\n                    fieldClassNames={{ root: classNames?.field }}\n                  />\n                ))}\n              </div>\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport { useState } from 'react';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\n\nimport type {\n  DataExplorerDisplayAction,\n  DataExplorerDisplayActionContext,\n  DataExplorerDisplayActionMenuProps,\n} from './types';\nimport {\n  getDataExplorerMenuItemToneClassName,\n  resolveDataExplorerAppearance,\n} from './theme';\nimport { cn, resolveDataExplorerValue } from './utils';\n\nfunction MoreIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <circle cx=\"12\" cy=\"12\" r=\"1\" />\n      <circle cx=\"19\" cy=\"12\" r=\"1\" />\n      <circle cx=\"5\" cy=\"12\" r=\"1\" />\n    </svg>\n  );\n}\n\nexport function DataExplorerDisplayActionMenu<TSource = unknown>({\n  item,\n  itemId = item?.id,\n  source = item?.source,\n  actions = [],\n  label = 'Actions',\n  triggerLabel = 'Open actions',\n  triggerIcon,\n  align = 'end',\n  sideOffset = 6,\n  appearance,\n  className,\n  classNames,\n}: DataExplorerDisplayActionMenuProps<TSource>) {\n  const [open, setOpen] = useState(false);\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const context: DataExplorerDisplayActionContext<TSource> = {\n    itemId,\n    item,\n    source,\n  };\n  const visibleActions = actions.filter(\n    (action) => resolveDataExplorerValue(action.visible, context) ?? true,\n  );\n\n  if (visibleActions.length === 0) {\n    return null;\n  }\n\n  return (\n    <span className={cn('inline-flex', classNames?.root)}>\n      <DropdownMenu.Root open={open} onOpenChange={setOpen}>\n        <DropdownMenu.Trigger asChild>\n          <button\n            type=\"button\"\n            aria-label={triggerLabel}\n            className={cn(\n              theme.slots.menuTrigger,\n              classNames?.trigger,\n              className,\n            )}\n            onClick={(event) => event.stopPropagation()}\n          >\n            {triggerIcon ?? <MoreIcon />}\n            <span className=\"sr-only\">{triggerLabel}</span>\n          </button>\n        </DropdownMenu.Trigger>\n        <DropdownMenu.Portal>\n          <DropdownMenu.Content\n            align={align}\n            sideOffset={sideOffset}\n            className={cn(\n              theme.slots.menuContent,\n              classNames?.content,\n            )}\n            style={theme.styles.menuContent}\n            onClick={(event) => event.stopPropagation()}\n          >\n            {label ? (\n              <>\n                <DropdownMenu.Label\n                  className={cn(\n                    theme.slots.menuLabel,\n                    classNames?.label,\n                  )}\n                >\n                  {label}\n                </DropdownMenu.Label>\n                <DropdownMenu.Separator\n                  className={cn(\n                    theme.slots.menuSeparator,\n                    classNames?.separator,\n                  )}\n                />\n              </>\n            ) : null}\n\n            {visibleActions.map((action) => {\n              const disabled =\n                (resolveDataExplorerValue(action.disabled, context) ?? false) ||\n                (resolveDataExplorerValue(action.loading, context) ?? false);\n\n              if (action.render) {\n                return (\n                  <div key={action.id}>\n                    {action.separatorBefore ? (\n                      <DropdownMenu.Separator\n                        className={cn(\n                          theme.slots.menuSeparator,\n                          classNames?.separator,\n                        )}\n                      />\n                    ) : null}\n                    {action.render(context)}\n                    {action.separatorAfter ? (\n                      <DropdownMenu.Separator\n                        className={cn(\n                          theme.slots.menuSeparator,\n                          classNames?.separator,\n                        )}\n                      />\n                    ) : null}\n                  </div>\n                );\n              }\n\n              return (\n                <div key={action.id}>\n                  {action.separatorBefore ? (\n                    <DropdownMenu.Separator\n                      className={cn(\n                        '-mx-1 my-1 h-px bg-border',\n                        classNames?.separator,\n                      )}\n                    />\n                  ) : null}\n                  <DropdownMenu.Item\n                    title={action.title}\n                    disabled={disabled}\n                    className={cn(\n                      theme.slots.menuItem,\n                      getDataExplorerMenuItemToneClassName(theme, action.tone),\n                      classNames?.item,\n                      action.className,\n                    )}\n                    style={theme.styles.menuItem}\n                    onSelect={() => {\n                      if (!action.onAction || disabled) {\n                        return;\n                      }\n                      void action.onAction(context);\n                    }}\n                    onContextMenu={(event) => {\n                      if (!action.onContextAction || disabled) {\n                        return;\n                      }\n                      event.preventDefault();\n                      event.stopPropagation();\n                      setOpen(false);\n                      void action.onContextAction(context);\n                    }}\n                  >\n                    {action.icon ? (\n                      <span\n                        className={cn(\n                          theme.slots.menuItemIcon,\n                          classNames?.itemIcon,\n                        )}\n                      >\n                        {action.icon}\n                      </span>\n                    ) : null}\n                    <span\n                      className={cn(\n                        theme.slots.menuItemLabel,\n                        classNames?.itemLabel,\n                      )}\n                    >\n                      {action.label}\n                    </span>\n                  </DropdownMenu.Item>\n                  {action.separatorAfter ? (\n                    <DropdownMenu.Separator\n                      className={cn(\n                        theme.slots.menuSeparator,\n                        classNames?.separator,\n                      )}\n                    />\n                  ) : null}\n                </div>\n              );\n            })}\n          </DropdownMenu.Content>\n        </DropdownMenu.Portal>\n      </DropdownMenu.Root>\n    </span>\n  );\n}\n","import type {\n  DataExplorerDisplayMediaItem,\n  DataExplorerDisplayMediaProps,\n} from './types';\nimport { cn } from './utils';\n\nfunction normalizeMedia<TSource>(\n  media?:\n    | DataExplorerDisplayMediaItem<TSource>\n    | Array<DataExplorerDisplayMediaItem<TSource>>,\n) {\n  if (!media) {\n    return [];\n  }\n  return Array.isArray(media) ? media.filter(Boolean) : [media];\n}\n\nfunction resolveMediaKind(value?: string) {\n  return String(value || 'unknown').toLowerCase();\n}\n\nexport function DataExplorerDisplayMedia<TSource = unknown>({\n  media,\n  fallbackTitle,\n  empty,\n  className,\n  classNames,\n  onOpen,\n}: DataExplorerDisplayMediaProps<TSource>) {\n  const mediaItems = normalizeMedia(media);\n  const primary = mediaItems[0];\n\n  if (!primary) {\n    if (!empty) {\n      return null;\n    }\n    return (\n      <div\n        className={cn(\n          'flex min-h-24 items-center justify-center bg-muted/30 text-sm text-muted-foreground',\n          classNames?.placeholder,\n          className,\n        )}\n      >\n        {empty}\n      </div>\n    );\n  }\n\n  if (primary.node) {\n    return (\n      <div\n        className={cn('min-w-0 overflow-hidden', classNames?.root, className)}\n      >\n        {primary.node}\n      </div>\n    );\n  }\n\n  const kind = resolveMediaKind(primary.kind);\n  const src = String(primary.src || primary.thumbnail || '').trim();\n  const title = primary.title ?? fallbackTitle;\n  const alt = primary.alt || (typeof title === 'string' ? title : 'preview');\n  const canOpen = typeof onOpen === 'function';\n  const mediaNode = (() => {\n    if (!src) {\n      return (\n        <div\n          className={cn(\n            'flex min-h-24 items-center justify-center bg-muted/30 text-sm text-muted-foreground',\n            classNames?.placeholder,\n          )}\n        >\n          {title || 'No preview'}\n        </div>\n      );\n    }\n\n    if (kind === 'image' || kind === 'unknown') {\n      return (\n        <img\n          src={src}\n          alt={alt}\n          className={cn('h-auto w-full object-contain', classNames?.media)}\n          loading=\"lazy\"\n          decoding=\"async\"\n          draggable={false}\n        />\n      );\n    }\n\n    if (kind === 'video') {\n      return (\n        <video\n          src={src}\n          className={cn('h-auto w-full', classNames?.media)}\n          controls\n          preload=\"metadata\"\n        />\n      );\n    }\n\n    if (kind === 'audio') {\n      return (\n        <audio\n          src={src}\n          className={cn('w-full', classNames?.media)}\n          controls\n          preload=\"metadata\"\n        />\n      );\n    }\n\n    return (\n      <div\n        className={cn(\n          'flex min-h-24 flex-col items-center justify-center gap-1 bg-muted/30 p-4 text-center text-sm text-muted-foreground',\n          classNames?.placeholder,\n        )}\n      >\n        {title ? (\n          <span className={cn('max-w-full truncate', classNames?.title)}>\n            {title}\n          </span>\n        ) : null}\n        <span className=\"max-w-full truncate\">{src}</span>\n      </div>\n    );\n  })();\n\n  if (!canOpen) {\n    return (\n      <div\n        className={cn('min-w-0 overflow-hidden', classNames?.root, className)}\n      >\n        {mediaNode}\n      </div>\n    );\n  }\n\n  return (\n    <button\n      type=\"button\"\n      className={cn(\n        'block min-w-0 overflow-hidden text-left',\n        classNames?.root,\n        className,\n      )}\n      onClick={() => onOpen?.(primary, 0)}\n    >\n      {mediaNode}\n    </button>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport type { ReactNode } from 'react';\n\nimport { DataExplorerDisplayMedia } from './DataExplorerDisplayMedia';\nimport type {\n  DataExplorerDisplayBadge,\n  DataExplorerDisplayCardProps,\n  DataExplorerDisplayMetadata,\n  DataExplorerDisplayMediaItem,\n} from './types';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn } from './utils';\n\nfunction isDisplayMedia<TSource>(\n  value: unknown,\n): value is\n  | DataExplorerDisplayMediaItem<TSource>\n  | Array<DataExplorerDisplayMediaItem<TSource>> {\n  if (!value) {\n    return false;\n  }\n  if (Array.isArray(value)) {\n    return value.every(\n      (item) =>\n        !!item &&\n        typeof item === 'object' &&\n        ('src' in item ||\n          'thumbnail' in item ||\n          'node' in item ||\n          'kind' in item),\n    );\n  }\n  return (\n    typeof value === 'object' &&\n    ('src' in value ||\n      'thumbnail' in value ||\n      'node' in value ||\n      'kind' in value)\n  );\n}\n\nfunction renderBadges(badges?: DataExplorerDisplayBadge[]) {\n  if (!badges?.length) {\n    return undefined;\n  }\n\n  return (\n    <>\n      {badges.map((badge, index) => (\n        <span\n          key={badge.id ?? index}\n          title={badge.title}\n          className={cn(\n            'inline-flex max-w-full items-center rounded-full border border-border/60 px-2 py-0.5 text-xs font-medium',\n            badge.tone === 'primary' && 'border-primary/30 bg-primary/10 text-primary',\n            badge.tone === 'success' && 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-[hsl(var(--success,142_72%_29%))]',\n            badge.tone === 'warning' && 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))]',\n            badge.tone === 'danger' && 'border-destructive/30 bg-destructive/10 text-destructive-text',\n            badge.tone === 'muted' && 'bg-muted text-muted-foreground',\n          )}\n        >\n          <span className=\"truncate\">{badge.label}</span>\n        </span>\n      ))}\n    </>\n  );\n}\n\nfunction renderMetadata(metadata?: DataExplorerDisplayMetadata[]) {\n  if (!metadata?.length) {\n    return undefined;\n  }\n\n  return (\n    <dl className=\"grid min-w-0 grid-cols-1 gap-2 text-xs sm:grid-cols-2\">\n      {metadata.map((entry, index) => (\n        <div key={entry.id ?? index} className=\"min-w-0\">\n          {entry.label ? (\n            <dt className=\"truncate text-muted-foreground\" title={entry.title}>\n              {entry.label}\n            </dt>\n          ) : null}\n          <dd className=\"mt-0.5 min-w-0 truncate text-foreground\">\n            {entry.value}\n          </dd>\n        </div>\n      ))}\n    </dl>\n  );\n}\n\nfunction renderKeywords(keywords?: ReactNode[]) {\n  if (!keywords?.length) {\n    return undefined;\n  }\n\n  return (\n    <div className=\"flex min-w-0 flex-wrap gap-1.5\">\n      {keywords.map((keyword, index) => (\n        <span\n          key={index}\n          className=\"max-w-full truncate rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground\"\n        >\n          {keyword}\n        </span>\n      ))}\n    </div>\n  );\n}\n\nexport function DataExplorerDisplayCard<TSource = unknown>({\n  item,\n  title = item?.title,\n  description = item?.description,\n  badges = renderBadges(item?.badges),\n  meta = item?.status,\n  actions,\n  media = item?.media,\n  header,\n  headerLeading,\n  headerContent,\n  overlay,\n  footer,\n  children,\n  selected = item?.selected,\n  disabled = item?.disabled,\n  interactive,\n  role,\n  tabIndex,\n  appearance,\n  className,\n  classNames,\n  onClick,\n  onKeyDown,\n}: DataExplorerDisplayCardProps<TSource>) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const resolvedInteractive = interactive ?? Boolean(onClick || onKeyDown);\n  const hasDefaultHeader = Boolean(\n    headerLeading ||\n      headerContent ||\n      title ||\n      description ||\n      badges ||\n      meta ||\n      actions,\n  );\n  const hasHeader = header !== undefined ? Boolean(header) : hasDefaultHeader;\n  const renderedMedia = isDisplayMedia<TSource>(media) ? (\n    <DataExplorerDisplayMedia media={media} fallbackTitle={title} />\n  ) : (\n    media\n  );\n  const defaultMetadata = renderMetadata(item?.metadata);\n  const defaultKeywords = renderKeywords(item?.keywords);\n  const resolvedChildren =\n    children !== undefined\n      ? children\n      : defaultMetadata || defaultKeywords ? (\n          <>\n            {defaultMetadata}\n            {defaultKeywords}\n          </>\n        )\n      : undefined;\n  const hasBody = Boolean(resolvedChildren);\n\n  return (\n    <article\n      className={cn(\n        theme.slots.cardRoot,\n        resolvedInteractive && !disabled && theme.slots.cardInteractive,\n        selected && theme.slots.cardSelected,\n        disabled && theme.slots.cardDisabled,\n        classNames?.root,\n        className,\n      )}\n      aria-disabled={disabled || undefined}\n      role={role}\n      tabIndex={tabIndex}\n      style={theme.styles.cardRoot}\n      onClick={disabled ? undefined : onClick}\n      onKeyDown={disabled ? undefined : onKeyDown}\n    >\n      {overlay ? (\n        <div className={cn(classNames?.overlay)}>{overlay}</div>\n      ) : null}\n\n      {hasHeader ? (\n        <div className={cn(theme.slots.cardHeader, classNames?.header)}>\n          {header !== undefined ? (\n            header\n          ) : (\n            <div\n              className={cn(\n                'flex min-w-0 items-start justify-between gap-3',\n                classNames?.headerMain,\n              )}\n            >\n              {headerLeading ? (\n                <div\n                  className={cn(\n                    'flex shrink-0 items-center gap-2',\n                    classNames?.headerLeading,\n                  )}\n                >\n                  {headerLeading}\n                </div>\n              ) : null}\n\n              <div className={cn('min-w-0 flex-1', classNames?.headerContent)}>\n                {headerContent ?? (\n                  <>\n                    {title ? (\n                      <div\n                        className={cn(\n                          'truncate text-sm font-semibold leading-none text-foreground',\n                          classNames?.title,\n                        )}\n                      >\n                        {title}\n                      </div>\n                    ) : null}\n                    {description ? (\n                      <div\n                        className={cn(\n                          'mt-1 min-w-0 text-sm text-muted-foreground [overflow-wrap:anywhere]',\n                          classNames?.description,\n                        )}\n                      >\n                        {description}\n                      </div>\n                    ) : null}\n                    {badges ? (\n                      <div\n                        className={cn(\n                          'mt-2 flex flex-wrap items-center gap-2',\n                          classNames?.badges,\n                        )}\n                      >\n                        {badges}\n                      </div>\n                    ) : null}\n                  </>\n                )}\n              </div>\n\n              {meta || actions ? (\n                <div className=\"flex min-w-0 items-center gap-2\">\n                  {meta ? (\n                    <div\n                      className={cn(\n                        'min-w-0 max-w-[12rem] truncate text-sm text-muted-foreground',\n                        classNames?.meta,\n                      )}\n                    >\n                      {meta}\n                    </div>\n                  ) : null}\n                  {actions ? (\n                    <div\n                      className={cn(\n                        'flex shrink-0 items-center gap-2',\n                        classNames?.actions,\n                      )}\n                    >\n                      {actions}\n                    </div>\n                  ) : null}\n                </div>\n              ) : null}\n            </div>\n          )}\n        </div>\n      ) : null}\n\n      {renderedMedia ? (\n        <div className={cn(theme.slots.cardMedia, classNames?.media)}>\n          {renderedMedia}\n        </div>\n      ) : null}\n\n      {hasBody ? (\n        <div className={cn('min-w-0 px-4 pb-4', classNames?.body)}>\n          {resolvedChildren}\n        </div>\n      ) : null}\n\n      {footer ? (\n        <div\n          className={cn(\n            theme.slots.cardFooter,\n            classNames?.footer,\n          )}\n        >\n          {footer}\n        </div>\n      ) : null}\n    </article>\n  );\n}\n","import type { DataExplorerViewItemShellProps } from './types';\nimport { cn } from './utils';\n\nexport function DataExplorerViewItemShell({\n  media,\n  title,\n  description,\n  meta,\n  badges,\n  actions,\n  footer,\n  children,\n  className,\n  classNames,\n}: DataExplorerViewItemShellProps) {\n  const hasHeader =\n    !!title || !!description || !!meta || !!badges || !!actions;\n\n  return (\n    <article\n      className={cn(\n        'flex min-w-0 flex-col overflow-hidden rounded-lg border border-border/60 bg-background',\n        classNames?.root,\n        className,\n      )}\n    >\n      {media ? (\n        <div className={cn('shrink-0 overflow-hidden', classNames?.media)}>\n          {media}\n        </div>\n      ) : null}\n\n      {hasHeader ? (\n        <div className={cn('flex flex-col gap-3 p-4', classNames?.header)}>\n          <div className=\"flex items-start justify-between gap-3\">\n            <div className=\"min-w-0 flex-1\">\n              {title ? (\n                <div\n                  className={cn(\n                    'truncate text-sm font-semibold text-foreground',\n                    classNames?.title,\n                  )}\n                >\n                  {title}\n                </div>\n              ) : null}\n\n              {description ? (\n                <div\n                  className={cn(\n                    'mt-1 text-sm text-muted-foreground',\n                    classNames?.description,\n                  )}\n                >\n                  {description}\n                </div>\n              ) : null}\n            </div>\n\n            {(meta || actions) ? (\n              <div className=\"flex shrink-0 items-center gap-2\">\n                {meta ? (\n                  <div className={cn('text-sm text-muted-foreground', classNames?.meta)}>\n                    {meta}\n                  </div>\n                ) : null}\n\n                {actions ? (\n                  <div className={cn('flex items-center gap-2', classNames?.actions)}>\n                    {actions}\n                  </div>\n                ) : null}\n              </div>\n            ) : null}\n          </div>\n\n          {badges ? (\n            <div className={cn('flex flex-wrap items-center gap-2', classNames?.badges)}>\n              {badges}\n            </div>\n          ) : null}\n        </div>\n      ) : null}\n\n      {children ? (\n        <div className={cn('min-w-0 px-4 pb-4', classNames?.body)}>{children}</div>\n      ) : null}\n\n      {footer ? (\n        <div className={cn('shrink-0 border-t border-border/60 px-4 py-3', classNames?.footer)}>\n          {footer}\n        </div>\n      ) : null}\n    </article>\n  );\n}\n","import type { ComponentProps } from 'react';\n\nimport type { DataExplorerViewItemProps } from './types';\nimport { DataExplorerViewItemShell } from './DataExplorerViewItemShell';\n\nexport function DataExplorerViewItem<TItem = unknown, TContext = unknown>(\n  props: DataExplorerViewItemProps<TItem, TContext>,\n) {\n  const { item, index, itemId, context, capabilities, itemDefinition, className, selected, actions, onOpen, onSelectionChange } =\n    props;\n\n  if (itemDefinition?.render) {\n    return <>{itemDefinition.render(props)}</>;\n  }\n\n  const resolvedShellProps =\n    typeof itemDefinition?.shellProps === 'function'\n      ? itemDefinition.shellProps({\n          item,\n          index,\n          itemId,\n          context,\n          capabilities,\n          itemDefinition,\n          className,\n          selected,\n          actions,\n          onOpen,\n          onSelectionChange,\n        })\n      : itemDefinition?.shellProps;\n\n  return (\n    <DataExplorerViewItemShell\n      {...(resolvedShellProps as Partial<ComponentProps<typeof DataExplorerViewItemShell>> | undefined)}\n      className={className}\n    />\n  );\n}\n","import {\n  Fragment,\n  useCallback,\n  useEffect,\n  useRef,\n  useState,\n  type CSSProperties,\n} from 'react';\n\nimport { DataExplorerViewItem } from './DataExplorerViewItem';\nimport type {\n  DataExplorerViewCollectionLayout,\n  DataExplorerViewCollectionProps,\n  DataExplorerViewId,\n  DataExplorerViewItemProps,\n} from './types';\nimport { cn } from './utils';\n\nfunction getItemsClassName(layout?: DataExplorerViewCollectionLayout) {\n  switch (layout) {\n    case 'list':\n      return 'flex min-h-0 flex-col gap-3';\n    case 'waterfall':\n      return 'columns-1 gap-4 sm:columns-2 lg:columns-3';\n    case 'grid':\n    default:\n      return 'grid min-h-0 gap-4';\n  }\n}\n\nfunction getDefaultItemClassName(layout?: DataExplorerViewCollectionLayout) {\n  if (layout === 'waterfall') {\n    return 'mb-4 break-inside-avoid';\n  }\n\n  return undefined;\n}\n\nfunction defaultResolveItemId<TItem>(_item: TItem, index: number) {\n  return String(index);\n}\n\nfunction resolveMeasuredGridMinColumnWidth(width: number | string) {\n  if (typeof width === 'number') {\n    return `${resolvePositiveNumber(width, 220)}px`;\n  }\n\n  return width;\n}\n\nfunction resolveMeasuredGridSpan(height: number, rowHeight: number, gap: number) {\n  return Math.max(1, Math.ceil((height + gap) / (rowHeight + gap)));\n}\n\nfunction resolvePositiveNumber(value: number | undefined, fallback: number) {\n  return typeof value === 'number' && Number.isFinite(value) && value > 0\n    ? value\n    : fallback;\n}\n\nfunction resolveNonNegativeNumber(value: number | undefined, fallback: number) {\n  return typeof value === 'number' && Number.isFinite(value) && value >= 0\n    ? value\n    : fallback;\n}\n\nexport function DataExplorerViewCollection<\n  TItem = unknown,\n  TContext = unknown,\n  TViewId extends DataExplorerViewId = DataExplorerViewId,\n>({\n  items,\n  activeViewId,\n  context,\n  capabilities,\n  className,\n  classNames,\n  empty,\n  loading,\n  loadingNode,\n  footer,\n  overlay,\n  layout = 'grid',\n  scrollable = true,\n  wrapItems = true,\n  measuredGrid,\n  itemsStyle,\n  itemStyle,\n  selectedIds = [],\n  getItemId,\n  itemDefinition,\n  renderItem,\n  getItemClassName,\n  onOpenItem,\n  onSelectionChange,\n}: DataExplorerViewCollectionProps<TItem, TContext, TViewId>) {\n  const resolvedItems = Array.isArray(items) ? items : [];\n  const selectedIdSet = new Set(selectedIds);\n  const resolveItemId = getItemId ?? defaultResolveItemId;\n  const measuredGridOptions =\n    measuredGrid === true\n      ? {}\n      : measuredGrid && typeof measuredGrid === 'object'\n        ? measuredGrid\n        : undefined;\n  const measuredGridEnabled =\n    layout === 'grid' && Boolean(measuredGridOptions?.enabled ?? measuredGrid);\n  const measuredGridRowHeight = resolvePositiveNumber(\n    measuredGridOptions?.rowHeight,\n    4,\n  );\n  const measuredGridGap = resolveNonNegativeNumber(measuredGridOptions?.gap, 8);\n  const measuredGridMinColumnWidth = measuredGridOptions?.minColumnWidth ?? '220px';\n  const measuredElementsRef = useRef<Map<string, HTMLDivElement>>(new Map());\n  const measuredCallbacksRef = useRef<\n    Map<string, (node: HTMLDivElement | null) => void>\n  >(new Map());\n  const measuredSpansRef = useRef<Map<string, number>>(new Map());\n  const resizeObserverRef = useRef<ResizeObserver | null>(null);\n  const [, setMeasuredLayoutVersion] = useState(0);\n  const resolveItemStyle =\n    typeof itemStyle === 'function'\n      ? (props: DataExplorerViewItemProps<TItem, TContext>) => itemStyle(props)\n      : () => itemStyle;\n\n  useEffect(() => {\n    if (!measuredGridEnabled || typeof ResizeObserver === 'undefined') {\n      return undefined;\n    }\n\n    const resizeObserver = new ResizeObserver((entries) => {\n      let changed = false;\n\n      for (const entry of entries) {\n        const target = entry.target as HTMLDivElement;\n        const id = target.dataset.dataExplorerItemId;\n        if (!id) continue;\n\n        const height = Math.ceil(entry.contentRect.height);\n        const span = resolveMeasuredGridSpan(\n          height,\n          measuredGridRowHeight,\n          measuredGridGap,\n        );\n\n        if (measuredSpansRef.current.get(id) !== span) {\n          measuredSpansRef.current.set(id, span);\n          changed = true;\n        }\n      }\n\n      if (changed) {\n        setMeasuredLayoutVersion((version) => version + 1);\n      }\n    });\n\n    resizeObserverRef.current = resizeObserver;\n    for (const element of measuredElementsRef.current.values()) {\n      resizeObserver.observe(element);\n    }\n\n    return () => {\n      resizeObserver.disconnect();\n      if (resizeObserverRef.current === resizeObserver) {\n        resizeObserverRef.current = null;\n      }\n    };\n  }, [measuredGridEnabled, measuredGridGap, measuredGridRowHeight]);\n\n  useEffect(() => {\n    if (!measuredGridEnabled) {\n      measuredElementsRef.current.clear();\n      measuredCallbacksRef.current.clear();\n      measuredSpansRef.current.clear();\n      return;\n    }\n\n    const ids = new Set(resolvedItems.map((item, index) => resolveItemId(item, index)));\n    let changed = false;\n\n    for (const id of measuredSpansRef.current.keys()) {\n      if (ids.has(id)) continue;\n      measuredSpansRef.current.delete(id);\n      changed = true;\n    }\n\n    for (const [id, element] of measuredElementsRef.current.entries()) {\n      if (ids.has(id)) continue;\n      resizeObserverRef.current?.unobserve(element);\n      measuredElementsRef.current.delete(id);\n    }\n\n    for (const id of measuredCallbacksRef.current.keys()) {\n      if (ids.has(id)) continue;\n      measuredCallbacksRef.current.delete(id);\n    }\n\n    if (changed) {\n      setMeasuredLayoutVersion((version) => version + 1);\n    }\n  }, [measuredGridEnabled, resolvedItems, resolveItemId]);\n\n  const getMeasuredRef = useCallback((itemId: string) => {\n    const cached = measuredCallbacksRef.current.get(itemId);\n    if (cached) return cached;\n\n    const callback = (node: HTMLDivElement | null) => {\n      const previous = measuredElementsRef.current.get(itemId);\n      if (previous && previous !== node) {\n        resizeObserverRef.current?.unobserve(previous);\n        measuredElementsRef.current.delete(itemId);\n      }\n\n      if (node) {\n        node.dataset.dataExplorerItemId = itemId;\n        measuredElementsRef.current.set(itemId, node);\n        resizeObserverRef.current?.observe(node);\n      }\n    };\n\n    measuredCallbacksRef.current.set(itemId, callback);\n    return callback;\n  }, []);\n\n  const getMeasuredGridSpan = (props: DataExplorerViewItemProps<TItem, TContext>) => {\n    const itemId = props.itemId;\n    if (itemId) {\n      const measured = measuredSpansRef.current.get(itemId);\n      if (measured) return measured;\n    }\n\n    const estimate = measuredGridOptions?.estimateItemHeight;\n    const rawEstimatedHeight =\n      typeof estimate === 'function'\n        ? estimate(props)\n        : typeof estimate === 'number'\n          ? estimate\n          : 240;\n    const estimatedHeight = resolvePositiveNumber(rawEstimatedHeight, 240);\n\n    return resolveMeasuredGridSpan(\n      estimatedHeight,\n      measuredGridRowHeight,\n      measuredGridGap,\n    );\n  };\n\n  const resolveMeasuredItemsStyle = (): CSSProperties | undefined => {\n    if (!measuredGridEnabled) return itemsStyle;\n\n    return {\n      ...itemsStyle,\n      gap: measuredGridGap,\n      gridAutoFlow: 'dense',\n      gridAutoRows: measuredGridRowHeight,\n      gridTemplateColumns: `repeat(auto-fill, minmax(${resolveMeasuredGridMinColumnWidth(measuredGridMinColumnWidth)}, 1fr))`,\n    };\n  };\n\n  const renderStatus = () => {\n    if (loading && loadingNode) {\n      return (\n        <div className={cn('flex items-center justify-center p-6 text-sm text-muted-foreground', classNames?.loading)}>\n          {loadingNode}\n        </div>\n      );\n    }\n\n    if (!empty) {\n      return null;\n    }\n\n    return (\n      <div className={cn('flex items-center justify-center p-6 text-sm text-muted-foreground', classNames?.empty)}>\n        {empty}\n      </div>\n    );\n  };\n\n  const handleSelectionChange = (\n    targetItem: TItem,\n    targetIndex: number,\n    targetItemId: string,\n    nextSelected: boolean,\n  ) => {\n    if (!onSelectionChange) {\n      return;\n    }\n\n    const resolvedTargetId = getItemId ? getItemId(targetItem, targetIndex) : targetItemId;\n    const nextSelectedIds = nextSelected\n      ? Array.from(new Set([...selectedIds, resolvedTargetId]))\n      : selectedIds.filter((id) => id !== resolvedTargetId);\n\n    onSelectionChange(nextSelectedIds);\n  };\n\n  if (resolvedItems.length === 0 && !footer && !overlay) {\n    return renderStatus();\n  }\n\n  return (\n    <div\n      className={cn('relative flex min-h-0 flex-1 flex-col overflow-hidden', classNames?.root, className)}\n      data-view-id={activeViewId || undefined}\n    >\n      {resolvedItems.length > 0 ? (\n        <div\n          className={cn(getItemsClassName(layout), scrollable && 'overflow-auto', classNames?.items)}\n          style={resolveMeasuredItemsStyle()}\n        >\n          {resolvedItems.map((item, index) => {\n            const itemId = resolveItemId(item, index);\n            const selected = selectedIdSet.has(itemId);\n            const selectionChange = (targetItem: TItem, nextSelected: boolean) => {\n              handleSelectionChange(targetItem, index, itemId, nextSelected);\n            };\n            const itemProps: DataExplorerViewItemProps<TItem, TContext> = {\n              item,\n              index,\n              itemId,\n              context,\n              capabilities,\n              itemDefinition,\n              selected,\n              onOpen: onOpenItem,\n              onSelectionChange: selectionChange,\n            };\n            const itemClassName = cn(\n              getDefaultItemClassName(layout),\n              classNames?.item,\n              getItemClassName?.({\n                ...itemProps,\n                className: classNames?.item,\n              }),\n            );\n            const currentItemProps = {\n              ...itemProps,\n              className: itemClassName,\n            };\n            const renderedItem = renderItem ? renderItem(currentItemProps) : <DataExplorerViewItem {...currentItemProps} />;\n            const resolvedStyle = resolveItemStyle(currentItemProps);\n            const measuredStyle = measuredGridEnabled\n              ? {\n                  ...resolvedStyle,\n                  gridRowEnd: `span ${getMeasuredGridSpan(currentItemProps)}`,\n                }\n              : resolvedStyle;\n\n            if (!wrapItems) {\n              if (!measuredGridEnabled) {\n                return <Fragment key={itemId}>{renderedItem}</Fragment>;\n              }\n\n              return (\n                <div key={itemId} className={itemClassName} style={measuredStyle}>\n                  <div ref={getMeasuredRef(itemId)}>{renderedItem}</div>\n                </div>\n              );\n            }\n\n            return (\n              <div key={itemId} className={itemClassName} style={measuredStyle}>\n                {measuredGridEnabled ? (\n                  <div ref={getMeasuredRef(itemId)}>{renderedItem}</div>\n                ) : (\n                  renderedItem\n                )}\n              </div>\n            );\n          })}\n        </div>\n      ) : (\n        renderStatus()\n      )}\n\n      {loading && loadingNode && resolvedItems.length > 0 ? (\n        <div className={cn('shrink-0 p-3 text-sm text-muted-foreground', classNames?.loading)}>{loadingNode}</div>\n      ) : null}\n\n      {footer ? <div className={cn('shrink-0', classNames?.footer)}>{footer}</div> : null}\n\n      {overlay ? <div className={cn('absolute inset-0 z-10', classNames?.overlay)}>{overlay}</div> : null}\n    </div>\n  );\n}\n","import { DataExplorerDisplayCard } from './DataExplorerDisplayCard';\nimport type { DataExplorerDisplayListItemProps } from './types';\nimport { cn } from './utils';\n\nexport function DataExplorerDisplayListItem<TSource = unknown>({\n  className,\n  classNames,\n  ...props\n}: DataExplorerDisplayListItemProps<TSource>) {\n  return (\n    <DataExplorerDisplayCard\n      {...props}\n      className={cn('rounded-md', className)}\n      classNames={{\n        ...classNames,\n        root: cn('flex-row items-stretch', classNames?.root),\n        media: cn('w-28 shrink-0', classNames?.media),\n        header: cn('flex min-w-0 flex-1 items-center p-3', classNames?.header),\n        body: cn('px-3 pb-3', classNames?.body),\n      }}\n    />\n  );\n}\n","import { DataExplorerViewCollection } from './DataExplorerViewCollection';\nimport { DataExplorerDisplayCard } from './DataExplorerDisplayCard';\nimport { DataExplorerDisplayListItem } from './DataExplorerDisplayListItem';\nimport { DataExplorerDisplayActionMenu } from './DataExplorerDisplayActionMenu';\nimport type {\n  DataExplorerDisplayCardProps,\n  DataExplorerDisplayCollectionViewProps,\n  DataExplorerDisplayCollectionItemContext,\n  DataExplorerDisplayCollectionItemPropsResolver,\n  DataExplorerDisplayItem,\n  DataExplorerDisplayListItemProps,\n} from './types';\nimport { cn } from './utils';\n\nfunction resolveDisplayItemProps<TProps, TSource>(\n  resolver:\n    | DataExplorerDisplayCollectionItemPropsResolver<TProps, TSource>\n    | undefined,\n  context: DataExplorerDisplayCollectionItemContext<TSource>,\n) {\n  if (!resolver) {\n    return undefined;\n  }\n\n  return typeof resolver === 'function' ? resolver(context) : resolver;\n}\n\nfunction renderDefaultItem<TSource>(\n  context: DataExplorerDisplayCollectionItemContext<TSource>,\n  onOpenItem?: (item: DataExplorerDisplayItem<TSource>) => void,\n  options?: {\n    appearance?: DataExplorerDisplayCollectionViewProps<TSource>['appearance'];\n    cardProps?: DataExplorerDisplayCollectionViewProps<TSource>['cardProps'];\n    listItemProps?: DataExplorerDisplayCollectionViewProps<TSource>['listItemProps'];\n    renderMedia?: DataExplorerDisplayCollectionViewProps<TSource>['renderMedia'];\n    renderActions?: DataExplorerDisplayCollectionViewProps<TSource>['renderActions'];\n  },\n) {\n  const { item, layout } = context;\n  const interactive = Boolean(onOpenItem) && !item.disabled;\n  const renderedActions = options?.renderActions\n    ? options.renderActions(context)\n    : item.actions?.length\n      ? (\n          <DataExplorerDisplayActionMenu\n            item={item}\n            actions={item.actions}\n            appearance={options?.appearance}\n          />\n        )\n      : undefined;\n  const sharedProps: Partial<DataExplorerDisplayCardProps<TSource>> = {\n    media: options?.renderMedia ? options.renderMedia(context) : undefined,\n    actions: renderedActions,\n    appearance: options?.appearance,\n    interactive,\n    onClick: interactive ? () => onOpenItem?.(item) : undefined,\n  };\n\n  if (layout === 'list') {\n    const listItemProps = resolveDisplayItemProps<\n      DataExplorerDisplayListItemProps<TSource>,\n      TSource\n    >(options?.listItemProps, context);\n\n    return (\n      <DataExplorerDisplayListItem\n        {...sharedProps}\n        {...listItemProps}\n        item={item}\n        className={cn(sharedProps.className, listItemProps?.className)}\n      />\n    );\n  }\n\n  const cardProps = resolveDisplayItemProps<\n    DataExplorerDisplayCardProps<TSource>,\n    TSource\n  >(options?.cardProps, context);\n\n  return (\n    <DataExplorerDisplayCard\n      {...sharedProps}\n      {...cardProps}\n      item={item}\n      className={cn(sharedProps.className, cardProps?.className)}\n    />\n  );\n}\n\nexport function DataExplorerDisplayCollectionView<TSource = unknown>({\n  items,\n  activeViewId = 'display',\n  layout = 'grid',\n  appearance,\n  selectedIds,\n  empty,\n  loading,\n  loadingNode,\n  footer,\n  overlay,\n  className,\n  classNames,\n  scrollable,\n  wrapItems,\n  measuredGrid,\n  itemsStyle,\n  itemStyle,\n  getItemClassName,\n  cardProps,\n  listItemProps,\n  renderMedia,\n  renderActions,\n  renderItem,\n  onOpenItem,\n  onSelectionChange,\n}: DataExplorerDisplayCollectionViewProps<TSource>) {\n  return (\n    <DataExplorerViewCollection<\n      DataExplorerDisplayItem<TSource>,\n      undefined,\n      string\n    >\n      activeViewId={activeViewId}\n      items={items}\n      layout={layout}\n      selectedIds={selectedIds}\n      className={className}\n      classNames={classNames}\n      empty={empty}\n      loading={loading}\n      loadingNode={loadingNode}\n      footer={footer}\n      overlay={overlay}\n      scrollable={scrollable}\n      wrapItems={wrapItems}\n      measuredGrid={measuredGrid}\n      itemsStyle={itemsStyle}\n      itemStyle={\n        typeof itemStyle === 'function'\n          ? ({ item, index = 0, itemId = '', selected = false }) =>\n              itemStyle({\n                item,\n                index,\n                itemId,\n                selected,\n                activeViewId,\n                layout,\n              })\n          : itemStyle\n      }\n      getItemId={(item) => item.id}\n      getItemClassName={\n        getItemClassName\n          ? ({ item, index = 0, itemId = '', selected = false }) =>\n              getItemClassName({\n                item,\n                index,\n                itemId,\n                selected,\n                activeViewId,\n                layout,\n              })\n          : undefined\n      }\n      renderItem={({ item, index }) =>\n        (() => {\n          const context: DataExplorerDisplayCollectionItemContext<TSource> = {\n            item,\n            index: index ?? 0,\n            itemId: item.id,\n            selected: selectedIds?.includes(item.id) ?? false,\n            activeViewId,\n            layout,\n          };\n\n          return renderItem\n            ? renderItem(item, context.index, context)\n            : renderDefaultItem(context, onOpenItem, {\n                cardProps,\n                listItemProps,\n                appearance,\n                renderMedia,\n                renderActions,\n              });\n        })()\n      }\n      onOpenItem={onOpenItem}\n      onSelectionChange={onSelectionChange}\n    />\n  );\n}\n","import {\n  useCallback,\n  useEffect,\n  useLayoutEffect,\n  useRef,\n  useState,\n} from 'react';\nimport type { MouseEvent, PointerEvent } from 'react';\n\nimport { DataExplorerToolbarActions } from './DataExplorerToolbarActions';\nimport type { DataExplorerImagePreviewProps } from './types';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn } from './utils';\n\ntype NaturalSize = { width: number; height: number };\n\nconst DEFAULT_ZOOM_STEP = 1.18;\nconst DEFAULT_STAGE_PADDING = 16;\nconst MAX_SAFE_SCALE = 1e6;\nconst MIN_SAFE_SCALE = 1e-6;\n\nconst clamp = (value: number, min: number, max: number) =>\n  Math.min(max, Math.max(min, value));\n\nconst isNoDragTarget = (target: EventTarget | null) =>\n  target instanceof Element && Boolean(target.closest('[data-no-drag=\"true\"]'));\n\nfunction ResetIcon() {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      aria-hidden=\"true\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"M3 12a9 9 0 1 0 3-6.7\" />\n      <path d=\"M3 4v6h6\" />\n    </svg>\n  );\n}\n\nfunction PlusIcon() {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      aria-hidden=\"true\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"M12 5v14\" />\n      <path d=\"M5 12h14\" />\n    </svg>\n  );\n}\n\nfunction MinusIcon() {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      aria-hidden=\"true\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"M5 12h14\" />\n    </svg>\n  );\n}\n\nexport function DataExplorerImagePreview({\n  src,\n  alt = 'Preview image',\n  empty = 'No image preview',\n  actions,\n  actionContext,\n  toolbarActions,\n  zoomStep = DEFAULT_ZOOM_STEP,\n  stagePadding = DEFAULT_STAGE_PADDING,\n  minScale = MIN_SAFE_SCALE,\n  maxScale = MAX_SAFE_SCALE,\n  controlsVisible = true,\n  zoomLabelVisible = false,\n  resetLabel = 'Reset image view',\n  zoomInLabel = 'Zoom in',\n  zoomOutLabel = 'Zoom out',\n  appearance,\n  className,\n  classNames,\n  onLoad,\n  onError,\n}: DataExplorerImagePreviewProps) {\n  const theme = resolveDataExplorerAppearance(\n    appearance ?? { background: 'dark-stage' },\n  );\n  const imageSrc = typeof src === 'string' ? src.trim() : '';\n  const stageRef = useRef<HTMLDivElement>(null);\n  const stageSizeRef = useRef<{ width: number; height: number } | null>(null);\n  const viewRef = useRef({ scale: 1, translateX: stagePadding, translateY: stagePadding });\n  const draggingRef = useRef<\n    | {\n        pointerId: number;\n        startClientX: number;\n        startClientY: number;\n        startTranslateX: number;\n        startTranslateY: number;\n      }\n    | undefined\n  >(undefined);\n  const [naturalSize, setNaturalSize] = useState<NaturalSize | null>(null);\n  const [dragging, setDragging] = useState(false);\n  const [{ scale, translateX, translateY }, setView] = useState(() => ({\n    scale: 1,\n    translateX: stagePadding,\n    translateY: stagePadding,\n  }));\n\n  useEffect(() => {\n    viewRef.current = { scale, translateX, translateY };\n  }, [scale, translateX, translateY]);\n\n  useEffect(() => {\n    setNaturalSize(null);\n    setView({ scale: 1, translateX: stagePadding, translateY: stagePadding });\n  }, [imageSrc, stagePadding]);\n\n  const normalizedMinScale = Number.isFinite(minScale)\n    ? Math.max(MIN_SAFE_SCALE, minScale)\n    : MIN_SAFE_SCALE;\n  const normalizedMaxScale = Number.isFinite(maxScale)\n    ? Math.max(normalizedMinScale, maxScale)\n    : MAX_SAFE_SCALE;\n  const normalizedZoomStep =\n    Number.isFinite(zoomStep) && zoomStep > 1 ? zoomStep : DEFAULT_ZOOM_STEP;\n  const normalizedStagePadding =\n    Number.isFinite(stagePadding) && stagePadding >= 0\n      ? stagePadding\n      : DEFAULT_STAGE_PADDING;\n\n  const resetView = useCallback(\n    (nextNaturalSize?: NaturalSize) => {\n      const stage = stageRef.current;\n      const size = nextNaturalSize ?? naturalSize;\n      if (!stage || !size) return;\n\n      const availableWidth = Math.max(\n        0,\n        stage.clientWidth - normalizedStagePadding * 2,\n      );\n      const availableHeight = Math.max(\n        0,\n        stage.clientHeight - normalizedStagePadding * 2,\n      );\n      if (\n        availableWidth <= 0 ||\n        availableHeight <= 0 ||\n        size.width <= 0 ||\n        size.height <= 0\n      ) {\n        return;\n      }\n\n      const fitScale = Math.min(\n        availableWidth / size.width,\n        availableHeight / size.height,\n      );\n      const nextScale = clamp(\n        fitScale,\n        normalizedMinScale,\n        normalizedMaxScale,\n      );\n      const fittedWidth = size.width * nextScale;\n      const fittedHeight = size.height * nextScale;\n\n      setView({\n        scale: nextScale,\n        translateX: (stage.clientWidth - fittedWidth) / 2,\n        translateY: (stage.clientHeight - fittedHeight) / 2,\n      });\n    },\n    [naturalSize, normalizedMaxScale, normalizedMinScale, normalizedStagePadding],\n  );\n\n  const compensateStageResize = useCallback((width: number, height: number) => {\n    if (!Number.isFinite(width) || !Number.isFinite(height)) return;\n    if (width <= 0 || height <= 0) return;\n\n    const previous = stageSizeRef.current;\n    stageSizeRef.current = { width, height };\n    if (!previous || !imageSrc) return;\n\n    const deltaX = (width - previous.width) / 2;\n    const deltaY = (height - previous.height) / 2;\n    if (deltaX === 0 && deltaY === 0) return;\n\n    setView((current) => ({\n      scale: current.scale,\n      translateX: current.translateX + deltaX,\n      translateY: current.translateY + deltaY,\n    }));\n  }, [imageSrc]);\n\n  useLayoutEffect(() => {\n    const stage = stageRef.current;\n    if (!stage) return;\n\n    compensateStageResize(stage.clientWidth, stage.clientHeight);\n\n    if (typeof ResizeObserver !== 'undefined') {\n      const observer = new ResizeObserver((entries) => {\n        const entry = entries[0];\n        if (!entry) return;\n        compensateStageResize(entry.contentRect.width, entry.contentRect.height);\n      });\n      observer.observe(stage);\n      return () => observer.disconnect();\n    }\n\n    const handleResize = () => {\n      compensateStageResize(stage.clientWidth, stage.clientHeight);\n    };\n    window.addEventListener('resize', handleResize);\n    return () => window.removeEventListener('resize', handleResize);\n  }, [compensateStageResize]);\n\n  const zoomAtPoint = useCallback(\n    (factor: number, stageX: number, stageY: number) => {\n      if (!Number.isFinite(factor) || factor === 1) return;\n      if (!Number.isFinite(stageX) || !Number.isFinite(stageY)) return;\n\n      setView((current) => {\n        const nextScale = clamp(\n          current.scale * factor,\n          normalizedMinScale,\n          normalizedMaxScale,\n        );\n        if (!Number.isFinite(nextScale) || nextScale === current.scale) {\n          return current;\n        }\n\n        const scaleRatio = nextScale / current.scale;\n        return {\n          scale: nextScale,\n          translateX: stageX - (stageX - current.translateX) * scaleRatio,\n          translateY: stageY - (stageY - current.translateY) * scaleRatio,\n        };\n      });\n    },\n    [normalizedMaxScale, normalizedMinScale],\n  );\n\n  useEffect(() => {\n    const stage = stageRef.current;\n    if (!stage || !imageSrc || !naturalSize) return;\n\n    const handleWheel = (event: WheelEvent) => {\n      if (event.ctrlKey) return;\n\n      event.preventDefault();\n      const rect = stage.getBoundingClientRect();\n      const stageX = event.clientX - rect.left;\n      const stageY = event.clientY - rect.top;\n      const factor = Math.pow(normalizedZoomStep, -event.deltaY / 100);\n      zoomAtPoint(factor, stageX, stageY);\n    };\n\n    stage.addEventListener('wheel', handleWheel, { passive: false });\n    return () => stage.removeEventListener('wheel', handleWheel);\n  }, [imageSrc, naturalSize, normalizedZoomStep, zoomAtPoint]);\n\n  const handlePointerDown = useCallback(\n    (event: PointerEvent<HTMLDivElement>) => {\n      if (event.button !== 0) return;\n      if (!imageSrc || !naturalSize) return;\n      if (isNoDragTarget(event.target)) return;\n\n      const stage = stageRef.current;\n      if (!stage) return;\n\n      event.preventDefault();\n      stage.setPointerCapture(event.pointerId);\n      draggingRef.current = {\n        pointerId: event.pointerId,\n        startClientX: event.clientX,\n        startClientY: event.clientY,\n        startTranslateX: viewRef.current.translateX,\n        startTranslateY: viewRef.current.translateY,\n      };\n      setDragging(true);\n    },\n    [imageSrc, naturalSize],\n  );\n\n  const handlePointerMove = useCallback((event: PointerEvent<HTMLDivElement>) => {\n    const drag = draggingRef.current;\n    if (!drag || drag.pointerId !== event.pointerId) return;\n\n    event.preventDefault();\n    setView({\n      scale: viewRef.current.scale,\n      translateX: drag.startTranslateX + event.clientX - drag.startClientX,\n      translateY: drag.startTranslateY + event.clientY - drag.startClientY,\n    });\n  }, []);\n\n  const endDrag = useCallback((event: PointerEvent<HTMLDivElement>) => {\n    const drag = draggingRef.current;\n    if (!drag || drag.pointerId !== event.pointerId) return;\n\n    draggingRef.current = undefined;\n    setDragging(false);\n\n    const stage = stageRef.current;\n    if (stage?.hasPointerCapture(event.pointerId)) {\n      stage.releasePointerCapture(event.pointerId);\n    }\n  }, []);\n\n  const handleDoubleClick = useCallback(\n    (event: MouseEvent<HTMLDivElement>) => {\n      if (!imageSrc || !naturalSize) return;\n      if (isNoDragTarget(event.target)) return;\n      resetView();\n    },\n    [imageSrc, naturalSize, resetView],\n  );\n\n  const handleZoomButtonClick = useCallback(\n    (factor: number) => {\n      const stage = stageRef.current;\n      if (!stage || !naturalSize) return;\n      zoomAtPoint(factor, stage.clientWidth / 2, stage.clientHeight / 2);\n    },\n    [naturalSize, zoomAtPoint],\n  );\n\n  return (\n    <div\n      ref={stageRef}\n      className={cn(\n        theme.slots.previewRoot,\n        imageSrc && naturalSize\n          ? dragging\n            ? 'cursor-grabbing'\n            : 'cursor-grab'\n          : 'cursor-default',\n        classNames?.root,\n        className,\n      )}\n      onPointerDown={handlePointerDown}\n      onPointerMove={handlePointerMove}\n      onPointerUp={endDrag}\n      onPointerCancel={endDrag}\n      onDoubleClick={handleDoubleClick}\n      style={theme.styles.previewRoot}\n    >\n      {imageSrc ? (\n        <div\n          className={cn(\n            'absolute left-0 top-0 will-change-transform',\n            classNames?.imageLayer,\n          )}\n          style={{\n            transform: `translate(${translateX}px, ${translateY}px) scale(${scale})`,\n            transformOrigin: '0 0',\n          }}\n        >\n          <img\n            src={imageSrc}\n            alt={alt}\n            draggable={false}\n            className={cn(\n              'pointer-events-none max-h-none max-w-none select-none',\n              classNames?.image,\n            )}\n            onLoad={(event) => {\n              const width = event.currentTarget.naturalWidth;\n              const height = event.currentTarget.naturalHeight;\n              if (!width || !height) return;\n              const size = { width, height };\n              setNaturalSize(size);\n              resetView(size);\n              onLoad?.(size);\n            }}\n            onError={onError}\n          />\n        </div>\n      ) : (\n        <div\n          className={cn(\n            theme.slots.previewPlaceholder,\n            classNames?.placeholder,\n          )}\n        >\n          {empty}\n        </div>\n      )}\n\n      {toolbarActions?.length || actions ? (\n        <div\n          data-no-drag=\"true\"\n          className={cn(\n            theme.slots.previewActions,\n            classNames?.actions,\n          )}\n        >\n          {toolbarActions?.length ? (\n            <DataExplorerToolbarActions\n              context={actionContext}\n              actions={toolbarActions}\n              layout=\"inline\"\n              appearance={appearance ?? { background: 'dark-stage' }}\n            />\n          ) : null}\n          {actions}\n        </div>\n      ) : null}\n\n      {controlsVisible ? (\n        <div\n          data-no-drag=\"true\"\n          className={cn(\n            theme.slots.previewControls,\n            classNames?.controls,\n          )}\n        >\n          {zoomLabelVisible ? (\n            <span\n              className={cn(\n                theme.slots.previewZoomLabel,\n                classNames?.zoomLabel,\n              )}\n            >\n              {Math.round(scale * 100)}%\n            </span>\n          ) : null}\n          <button\n            type=\"button\"\n            aria-label={zoomOutLabel}\n            disabled={!imageSrc || !naturalSize}\n            className={cn(\n              theme.slots.previewControlButton,\n              'disabled:cursor-not-allowed disabled:opacity-40',\n              classNames?.controlButton,\n            )}\n            onClick={() => handleZoomButtonClick(1 / normalizedZoomStep)}\n          >\n            <MinusIcon />\n          </button>\n          <button\n            type=\"button\"\n            aria-label={zoomInLabel}\n            disabled={!imageSrc || !naturalSize}\n            className={cn(\n              theme.slots.previewControlButton,\n              'disabled:cursor-not-allowed disabled:opacity-40',\n              classNames?.controlButton,\n            )}\n            onClick={() => handleZoomButtonClick(normalizedZoomStep)}\n          >\n            <PlusIcon />\n          </button>\n          <button\n            type=\"button\"\n            aria-label={resetLabel}\n            disabled={!imageSrc || !naturalSize}\n            className={cn(\n              theme.slots.previewControlButton,\n              'disabled:cursor-not-allowed disabled:opacity-40',\n              classNames?.controlButton,\n            )}\n            onClick={() => resetView()}\n          >\n            <ResetIcon />\n          </button>\n        </div>\n      ) : null}\n    </div>\n  );\n}\n","import { FileText, Image as ImageIcon, Loader2, Music2, Video } from 'lucide-react';\nimport { useEffect, useState, type ReactNode } from 'react';\n\nimport { MediaPreviewFrame, MediaPreviewImage } from '../primitives/MediaPreview';\nimport type { DataExplorerMediaPreviewProps } from './types';\nimport { cn } from './utils';\nimport { safeDisplayUrl, safeDisplaySrcSet } from '../safeDisplayUrl';\n\nfunction PreviewIcon({ kind }: { kind: NonNullable<DataExplorerMediaPreviewProps['kind']> }) {\n  const Icon = kind === 'image' ? ImageIcon : kind === 'video' ? Video : kind === 'audio' ? Music2 : FileText;\n  return <Icon className=\"h-6 w-6\" aria-hidden=\"true\" />;\n}\n\nexport function DataExplorerMediaPreview({\n  src,\n  kind = 'image',\n  alt = 'Preview',\n  title,\n  aspectRatio = 'auto',\n  fit = 'contain',\n  controls = true,\n  loading = false,\n  empty = 'No preview available',\n  error = 'Preview is unavailable right now.',\n  className,\n  style,\n  classNames,\n  mediaAttributes,\n  onLoad,\n  onError,\n}: DataExplorerMediaPreviewProps) {\n  const [hasError, setHasError] = useState(false);\n  const resolvedSrc = safeDisplayUrl(src, 'media') ?? '';\n  const safeMediaAttributes = Object.fromEntries(Object.entries(mediaAttributes ?? {}).flatMap(([key, value]) => {\n    const name = key.toLowerCase();\n    if (name === 'src' || name === 'srcdoc' || name === 'dangerouslysetinnerhtml') return [];\n    if (name === 'srcset') return [['srcSet', safeDisplaySrcSet(value)]];\n    if (name === 'poster') return [['poster', safeDisplayUrl(value, 'media')]];\n    return [[key, value]];\n  }));\n\n  useEffect(() => {\n    setHasError(false);\n  }, [resolvedSrc, kind]);\n\n  const renderPlaceholder = (content: ReactNode, placeholderClassName?: string) => (\n    <div\n      className={cn(\n        'flex min-h-24 flex-col items-center justify-center gap-2 bg-muted/30 p-4 text-center text-sm text-muted-foreground',\n        classNames?.placeholder,\n        placeholderClassName,\n      )}\n      role={loading ? 'status' : 'img'}\n      aria-label={typeof content === 'string' ? content : undefined}\n    >\n      {content}\n    </div>\n  );\n\n  if (loading) {\n    return (\n      <div className={cn('min-w-0 overflow-hidden', classNames?.root, className)} style={style} aria-busy=\"true\">\n        <div\n          className={cn(\n            'flex min-h-24 flex-col items-center justify-center gap-2 bg-muted/30 p-4 text-sm text-muted-foreground',\n            classNames?.loading,\n          )}\n        >\n          <Loader2 className=\"h-5 w-5 animate-spin\" aria-hidden=\"true\" />\n          {title || 'Loading preview...'}\n        </div>\n      </div>\n    );\n  }\n\n  if (!resolvedSrc || hasError) {\n    return (\n      <div className={cn('min-w-0 overflow-hidden', classNames?.root, className)} style={style}>\n        {renderPlaceholder(\n          <>\n            <PreviewIcon kind={kind} />\n            <span className={cn('max-w-full truncate', hasError ? classNames?.error : undefined)}>\n              {hasError ? error : empty}\n            </span>\n            {title ? <span className=\"max-w-full truncate text-xs\">{title}</span> : null}\n          </>,\n        )}\n      </div>\n    );\n  }\n\n  const handleError = () => {\n    setHasError(true);\n    onError?.();\n  };\n\n  const media =\n    kind === 'image' ? (\n      <MediaPreviewImage\n        {...safeMediaAttributes}\n        src={resolvedSrc}\n        alt={alt}\n        fit={fit}\n        className={classNames?.media}\n        loading=\"lazy\"\n        decoding=\"async\"\n        draggable={false}\n        onLoad={onLoad}\n        onError={handleError}\n      />\n    ) : kind === 'video' ? (\n      <video\n        {...safeMediaAttributes}\n        src={resolvedSrc}\n        className={cn('block h-auto w-full', fit === 'cover' ? 'object-cover' : 'object-contain', classNames?.media)}\n        controls={controls}\n        preload=\"metadata\"\n        onLoadedData={onLoad}\n        onError={handleError}\n      />\n    ) : kind === 'audio' ? (\n      <audio\n        {...safeMediaAttributes}\n        src={resolvedSrc}\n        className={cn('w-full', classNames?.media)}\n        controls={controls}\n        preload=\"metadata\"\n        onCanPlay={onLoad}\n        onError={handleError}\n      />\n    ) : (\n      renderPlaceholder(\n        <>\n          <PreviewIcon kind=\"file\" />\n          <span className=\"max-w-full truncate\">{title || resolvedSrc}</span>\n        </>,\n      )\n    );\n\n  if (kind === 'image') {\n    return (\n      <MediaPreviewFrame aspectRatio={aspectRatio} className={cn(classNames?.root, className)} style={style}>\n        {media}\n      </MediaPreviewFrame>\n    );\n  }\n\n  return <div className={cn('min-w-0 overflow-hidden', classNames?.root, className)} style={style}>{media}</div>;\n}\n","import type { DataExplorerPageProps } from './types';\nimport {\n  DataExplorerAppearanceProvider,\n  useDataExplorerAppearance,\n} from './appearanceContext';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn } from './utils';\n\nexport function DataExplorerPage({\n  sidebar,\n  tree,\n  toolbar,\n  controls,\n  notices,\n  content,\n  view,\n  detail,\n  appearance,\n  className,\n  classNames,\n}: DataExplorerPageProps) {\n  const resolvedAppearance = useDataExplorerAppearance(appearance);\n  const theme = resolvedAppearance\n    ? resolveDataExplorerAppearance(resolvedAppearance)\n    : undefined;\n  const sidebarNode = tree ?? sidebar;\n  const toolbarNode = controls ?? toolbar;\n  const contentNode = view ?? content;\n\n  return (\n    <DataExplorerAppearanceProvider appearance={resolvedAppearance}>\n      <div\n        className={cn(\n          'flex h-full min-h-0 overflow-hidden',\n          theme?.slots.surfaceRoot,\n          classNames?.root,\n          className,\n        )}\n        style={theme?.styles.surfaceRoot}\n      >\n      {sidebarNode ? (\n        <div\n          className={cn(\n            'min-h-0 shrink-0 overflow-hidden',\n            classNames?.sidebar,\n            classNames?.tree,\n          )}\n        >\n          {sidebarNode}\n        </div>\n      ) : null}\n\n      <div\n        className={cn(\n          'relative flex min-h-0 flex-1 flex-col overflow-hidden',\n          classNames?.main,\n        )}\n      >\n        {toolbarNode ? (\n          <div\n            className={cn('shrink-0', classNames?.toolbar, classNames?.controls)}\n          >\n            {toolbarNode}\n          </div>\n        ) : null}\n\n        {notices ? (\n          <div className={cn('shrink-0', classNames?.notices)}>{notices}</div>\n        ) : null}\n\n        <div\n          className={cn(\n            'flex min-h-0 flex-1 flex-col overflow-hidden',\n            classNames?.content,\n            classNames?.view,\n          )}\n        >\n          {contentNode}\n        </div>\n\n        {detail ? <div className={cn(classNames?.detail)}>{detail}</div> : null}\n      </div>\n      </div>\n    </DataExplorerAppearanceProvider>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport { DataExplorerDisplayCard } from './DataExplorerDisplayCard';\nimport { DataExplorerDisplayMedia } from './DataExplorerDisplayMedia';\nimport type {\n  DataExplorerDisplayItem,\n  DataExplorerRecordCardProps,\n} from './types';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn } from './utils';\n\nfunction DefaultCheckbox<TSource>({\n  item,\n  selected,\n  label,\n  className,\n  onToggleSelection,\n}: {\n  item: DataExplorerDisplayItem<TSource>;\n  selected: boolean;\n  label?: string;\n  className?: string;\n  onToggleSelection?: (item: DataExplorerDisplayItem<TSource>) => void;\n}) {\n  if (!onToggleSelection) {\n    return null;\n  }\n\n  return (\n    <input\n      type=\"checkbox\"\n      checked={selected}\n      aria-label={label}\n      className={cn('h-4 w-4 shrink-0 accent-primary', className)}\n      onChange={() => onToggleSelection(item)}\n      onClick={(event) => event.stopPropagation()}\n    />\n  );\n}\n\nfunction DefaultFavorite<TSource>({\n  item,\n  active,\n  label,\n  className,\n  onToggleFavorite,\n}: {\n  item: DataExplorerDisplayItem<TSource>;\n  active: boolean;\n  label?: string;\n  className?: string;\n  onToggleFavorite?: (item: DataExplorerDisplayItem<TSource>) => void;\n}) {\n  if (!onToggleFavorite) {\n    return null;\n  }\n\n  return (\n    <button\n      type=\"button\"\n      aria-pressed={active}\n      title={label}\n      className={cn(\n        'inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground',\n        active && 'text-[hsl(var(--warning,45_93%_47%))]',\n        className,\n      )}\n      onClick={(event) => {\n        event.stopPropagation();\n        onToggleFavorite(item);\n      }}\n    >\n      <svg\n        aria-hidden=\"true\"\n        viewBox=\"0 0 24 24\"\n        className=\"h-4 w-4\"\n        fill={active ? 'currentColor' : 'none'}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n      >\n        <path d=\"m12 2 3.1 6.3 6.9 1-5 4.9 1.2 6.8-6.2-3.3L5.8 21 7 14.2 2 9.3l6.9-1L12 2Z\" />\n      </svg>\n      <span className=\"sr-only\">{label}</span>\n    </button>\n  );\n}\n\nfunction renderKeywords<TSource>({\n  item,\n  limit,\n  classNames,\n}: {\n  item: DataExplorerDisplayItem<TSource>;\n  limit: number;\n  classNames?: DataExplorerRecordCardProps<TSource>['classNames'];\n}) {\n  const keywords = item.keywords ?? [];\n  if (keywords.length === 0) {\n    return null;\n  }\n\n  const visible = keywords.slice(0, limit);\n  const rest = Math.max(0, keywords.length - visible.length);\n\n  return (\n    <div className={cn('mt-2 flex flex-wrap gap-2', classNames?.keywords)}>\n      {visible.map((keyword, index) => (\n        <span\n          key={index}\n          className={cn(\n            'max-w-full truncate rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground',\n            classNames?.keyword,\n          )}\n          title={typeof keyword === 'string' ? keyword : undefined}\n        >\n          {keyword}\n        </span>\n      ))}\n      {rest > 0 ? (\n        <span\n          className={cn(\n            'rounded-full border border-border px-2 py-0.5 text-xs text-muted-foreground',\n            classNames?.keywordOverflow,\n          )}\n        >\n          +{rest}\n        </span>\n      ) : null}\n    </div>\n  );\n}\n\nexport function DataExplorerRecordCard<TSource = unknown>({\n  item,\n  selected = item.selected ?? false,\n  active,\n  disabled = item.disabled,\n  hasMedia,\n  showHeaderWithMedia = false,\n  selectionVisible,\n  favoriteVisible,\n  overlayControlsAlwaysVisible,\n  favoriteActive = false,\n  favoriteLabel = 'Favorite',\n  favoriteActiveLabel = 'Unfavorite',\n  selectLabel = 'Select item',\n  unselectLabel = 'Unselect item',\n  actions,\n  media,\n  footer,\n  checkbox,\n  favorite,\n  keywordLimit = 3,\n  appearance,\n  className,\n  classNames,\n  onClick,\n  onToggleSelection,\n  onToggleFavorite,\n}: DataExplorerRecordCardProps<TSource>) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const resolvedHasMedia = hasMedia ?? Boolean(media ?? item.media);\n  const shouldRenderHeader = !resolvedHasMedia || showHeaderWithMedia;\n  const shouldShowSelection =\n    selectionVisible ?? Boolean(selected || onToggleSelection);\n  const shouldShowFavorite =\n    favoriteVisible ?? Boolean(favorite || onToggleFavorite);\n  const favoriteTitle = favoriteActive ? favoriteActiveLabel : favoriteLabel;\n  const selectionLabel = selected ? unselectLabel : selectLabel;\n  const renderedSelection =\n    checkbox ??\n    (shouldShowSelection ? (\n      <DefaultCheckbox\n        item={item}\n        selected={selected}\n        label={selectionLabel}\n        className={classNames?.selectionControl}\n        onToggleSelection={onToggleSelection}\n      />\n    ) : null);\n  const renderedFavorite =\n    favorite ??\n    (shouldShowFavorite ? (\n      <DefaultFavorite\n        item={item}\n        active={favoriteActive}\n        label={favoriteTitle}\n        className={classNames?.favoriteControl}\n        onToggleFavorite={onToggleFavorite}\n      />\n    ) : null);\n  const renderedMedia =\n    media ??\n    (item.media ? (\n      <DataExplorerDisplayMedia media={item.media} fallbackTitle={item.title} />\n    ) : undefined);\n  const header = shouldRenderHeader ? (\n    <div className={cn('flex flex-col', classNames?.header)}>\n      <div\n        className={cn(\n          'flex min-w-0 items-center justify-between gap-2',\n          classNames?.headerMain,\n        )}\n      >\n        <div className=\"flex min-w-0 flex-1 items-center gap-2\">\n          {renderedSelection}\n          <div className=\"min-w-0 flex-1\">\n            {item.title ? (\n              <h3\n                className={cn(\n                  'truncate text-sm font-semibold leading-none',\n                  classNames?.title,\n                )}\n              >\n                {item.title}\n              </h3>\n            ) : null}\n          </div>\n        </div>\n        {renderedFavorite || actions ? (\n          <div className=\"flex shrink-0 items-center gap-1\">\n            {renderedFavorite}\n            {actions}\n          </div>\n        ) : null}\n      </div>\n      {renderKeywords({ item, limit: keywordLimit, classNames })}\n    </div>\n  ) : null;\n  const overlay =\n    resolvedHasMedia && (renderedSelection || renderedFavorite || actions) ? (\n      <div className={cn('absolute inset-x-2 top-2 z-10', classNames?.overlay)}>\n        <div\n          className={cn(\n            'flex items-start justify-between gap-1 transition-opacity',\n            selected || overlayControlsAlwaysVisible\n              ? 'opacity-100'\n              : 'opacity-0 group-hover:opacity-100',\n            classNames?.overlayControls,\n          )}\n        >\n          {renderedSelection ?? <span />}\n          <div className=\"flex items-center gap-1\">\n            {renderedFavorite}\n            {actions ? (\n              <div className={cn(classNames?.floatingActions)}>{actions}</div>\n            ) : null}\n          </div>\n        </div>\n      </div>\n    ) : null;\n\n  return (\n    <DataExplorerDisplayCard\n      item={item}\n      selected={selected}\n      disabled={disabled}\n      appearance={appearance}\n      className={cn(\n        theme.slots.recordCardRoot,\n        active && theme.slots.recordCardActive,\n        classNames?.root,\n        className,\n      )}\n      classNames={{\n        overlay: classNames?.overlay,\n        header: cn(resolvedHasMedia ? 'p-3' : 'p-3 pb-2', classNames?.header),\n        media: cn('p-0 bg-muted/30', classNames?.media),\n        footer: classNames?.footer,\n      }}\n      header={header}\n      overlay={overlay}\n      media={\n        renderedMedia ? (\n          <div className={cn('relative overflow-hidden', classNames?.mediaFrame)}>\n            {renderedMedia}\n          </div>\n        ) : undefined\n      }\n      footer={footer}\n      children={null}\n      onClick={onClick}\n    />\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport * as Popover from '@radix-ui/react-popover';\nimport { Check, ChevronDown, Loader2, Search, X } from 'lucide-react';\nimport { useEffect, useMemo, useState } from 'react';\n\nimport type { DataExplorerRecordPickerProps, DataExplorerRecordPickerOption } from './types';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn } from './utils';\n\nconst normalizeValues = (value: string | string[] | undefined, multiple: boolean): string[] => {\n  const values = multiple ? (Array.isArray(value) ? value : value ? [value] : []) : typeof value === 'string' ? [value] : [];\n  return Array.from(new Set(values.filter((item) => typeof item === 'string' && item.length > 0)));\n};\n\nconst getOptionText = (option: DataExplorerRecordPickerOption) =>\n  option.textValue ?? (typeof option.label === 'string' ? option.label : option.value);\n\nexport function DataExplorerRecordPicker({\n  value,\n  activeValue,\n  options = [],\n  createOption,\n  multiple = false,\n  placeholder = 'Select a record',\n  triggerLabel,\n  triggerIcon,\n  searchPlaceholder = 'Search records',\n  emptyState = 'No records found',\n  loadingState,\n  loadingMoreState,\n  errorState,\n  loading = false,\n  loadingMore = false,\n  disabled = false,\n  open,\n  defaultOpen = false,\n  searchValue,\n  defaultSearchValue = '',\n  appearance,\n  className,\n  classNames,\n  triggerProps,\n  dataAttributes,\n  onOpenChange,\n  onListScroll,\n  onSearchValueChange,\n  onValueChange,\n}: DataExplorerRecordPickerProps) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n  const [uncontrolledSearch, setUncontrolledSearch] = useState(defaultSearchValue);\n  const isControlledOpen = open !== undefined;\n  const isOpen = isControlledOpen ? open : uncontrolledOpen;\n  const isControlledSearch = searchValue !== undefined;\n  const query = isControlledSearch ? searchValue : uncontrolledSearch;\n  const selectedValues = useMemo(() => normalizeValues(value, multiple), [multiple, value]);\n  const selectedSet = useMemo(() => new Set(selectedValues), [selectedValues]);\n  const selectedOptions = selectedValues\n    .map((selectedValue) => options.find((option) => option.value === selectedValue))\n    .filter((option): option is DataExplorerRecordPickerOption => Boolean(option));\n  const visibleOptions = createOption ? [createOption, ...options] : options;\n  const triggerValue = selectedOptions.length\n    ? multiple && selectedOptions.length > 1\n      ? `${selectedOptions.slice(0, 2).map((option) => getOptionText(option)).join(', ')} +${selectedOptions.length - 2}`\n      : getOptionText(selectedOptions[0])\n    : placeholder;\n\n  useEffect(() => {\n    if (!isOpen) return;\n    const handleKeyDown = (event: KeyboardEvent) => {\n      if (event.key === 'Escape') onOpenChange?.(false);\n    };\n    window.addEventListener('keydown', handleKeyDown);\n    return () => window.removeEventListener('keydown', handleKeyDown);\n  }, [isOpen, onOpenChange]);\n\n  const setOpen = (nextOpen: boolean) => {\n    if (disabled) return;\n    if (!isControlledOpen) setUncontrolledOpen(nextOpen);\n    onOpenChange?.(nextOpen);\n  };\n\n  const setQuery = (nextQuery: string) => {\n    if (!isControlledSearch) setUncontrolledSearch(nextQuery);\n    onSearchValueChange?.(nextQuery);\n  };\n\n  const handleOptionClick = (option: DataExplorerRecordPickerOption) => {\n    if (disabled || option.disabled) return;\n    if (multiple) {\n      const nextValues = selectedSet.has(option.value)\n        ? selectedValues.filter((selectedValue) => selectedValue !== option.value)\n        : [...selectedValues, option.value];\n      onValueChange?.(nextValues);\n      return;\n    }\n    onValueChange?.(option.value);\n    setOpen(false);\n  };\n\n  const removeValue = (selectedValue: string) => {\n    if (disabled) return;\n    onValueChange?.(selectedValues.filter((valueItem) => valueItem !== selectedValue));\n  };\n\n  return (\n    <div {...dataAttributes?.root} className={cn('relative min-w-0 w-full', classNames?.root, className)}>\n      <Popover.Root open={isOpen} onOpenChange={setOpen}>\n        <Popover.Trigger asChild>\n          <button\n            {...triggerProps}\n            {...dataAttributes?.trigger}\n            type=\"button\"\n            disabled={disabled}\n            aria-label={triggerLabel}\n            aria-expanded={isOpen}\n            className={cn(theme.slots.controlSelectTrigger, classNames?.trigger)}\n          >\n            {triggerIcon}\n            <span {...dataAttributes?.triggerValue} className={cn(theme.slots.controlSelectValue, !selectedOptions.length && 'text-muted-foreground', classNames?.triggerValue)}>{triggerValue}</span>\n            <ChevronDown className=\"h-4 w-4 shrink-0\" aria-hidden=\"true\" />\n          </button>\n        </Popover.Trigger>\n        <Popover.Portal>\n          <Popover.Content\n            {...dataAttributes?.content}\n            align=\"start\"\n            sideOffset={6}\n            className={cn('z-50 w-[min(30rem,calc(100vw-2rem))] rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-md', classNames?.content)}\n            onOpenAutoFocus={(event) => event.preventDefault()}\n          >\n            <label className={cn('flex h-9 items-center gap-2 rounded-md border border-border bg-background px-2 text-sm', classNames?.search)}>\n              <Search className=\"h-4 w-4 shrink-0 text-muted-foreground\" aria-hidden=\"true\" />\n              <input\n                autoFocus\n                value={query}\n                onChange={(event) => setQuery(event.target.value)}\n                placeholder={searchPlaceholder}\n                aria-label={searchPlaceholder}\n                className=\"min-w-0 flex-1 bg-transparent outline-none placeholder:text-muted-foreground\"\n              />\n            </label>\n            <div\n              className={cn('mt-2 max-h-72 overflow-y-auto', classNames?.list)}\n              {...dataAttributes?.list}\n              role=\"listbox\"\n              aria-multiselectable={multiple || undefined}\n              onScroll={onListScroll}\n            >\n              {loading ? (\n                <div {...dataAttributes?.loading} className={cn('flex min-h-16 items-center justify-center gap-2 px-3 py-4 text-sm text-muted-foreground', classNames?.status)}>\n                  <Loader2 className=\"h-4 w-4 animate-spin\" aria-hidden=\"true\" />\n                  {loadingState ?? 'Loading records...'}\n                </div>\n              ) : errorState ? (\n                <div {...dataAttributes?.error} className={cn('px-3 py-4 text-sm text-destructive-text', classNames?.status)}>{errorState}</div>\n              ) : visibleOptions.length === 0 ? (\n                <div {...dataAttributes?.empty} className={cn('px-3 py-4 text-sm text-muted-foreground', classNames?.status)}>{emptyState}</div>\n              ) : (\n                <>\n                  {visibleOptions.map((option) => {\n                    const selected = selectedSet.has(option.value);\n                    return (\n                      <button\n                        key={option.value}\n                        {...dataAttributes?.option}\n                        type=\"button\"\n                        role=\"option\"\n                        aria-selected={selected}\n                        aria-current={activeValue !== undefined && option.value === activeValue ? 'true' : undefined}\n                        disabled={option.disabled}\n                        onClick={() => handleOptionClick(option)}\n                        className={cn(\n                          'flex w-full items-start gap-2 rounded-sm px-2.5 py-2 text-left text-sm transition-colors hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50',\n                          selected && 'bg-accent/60',\n                          classNames?.option,\n                        )}\n                      >\n                        <span className={cn('mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center', classNames?.optionIndicator)}>\n                          {selected ? <Check className=\"h-4 w-4\" aria-hidden=\"true\" /> : null}\n                        </span>\n                        <span className=\"min-w-0 flex-1\">\n                          <span className={cn('block truncate', classNames?.optionLabel)}>{option.label}</span>\n                          {option.description ? <span className={cn('mt-0.5 block truncate text-xs text-muted-foreground', classNames?.optionDescription)}>{option.description}</span> : null}\n                        </span>\n                      </button>\n                    );\n                  })}\n                  {loadingMore ? (\n                    <div\n                      {...dataAttributes?.loadingMore}\n                      className={cn(\n                        'flex items-center justify-center gap-2 px-3 py-2 text-xs text-muted-foreground',\n                        classNames?.status,\n                      )}\n                    >\n                      <Loader2 className=\"h-3.5 w-3.5 animate-spin\" aria-hidden=\"true\" />\n                      {loadingMoreState ?? 'Loading more records...'}\n                    </div>\n                  ) : null}\n                </>\n              )}\n            </div>\n          </Popover.Content>\n        </Popover.Portal>\n      </Popover.Root>\n      {multiple && selectedOptions.length > 0 ? (\n        <div className={cn('mt-2 flex flex-wrap gap-1.5', classNames?.selectedList)}>\n          {selectedOptions.map((option) => (\n            <span key={option.value} className={cn('inline-flex max-w-full items-center gap-1 rounded-full border border-border bg-muted px-2 py-1 text-xs', classNames?.selectedItem)}>\n              <span className={cn('min-w-0 truncate', classNames?.selectedItemLabel)}>{option.label}</span>\n              <button\n                type=\"button\"\n                aria-label={`Remove ${getOptionText(option)}`}\n                onClick={() => removeValue(option.value)}\n                className={cn('inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-muted-foreground hover:bg-accent hover:text-foreground', classNames?.selectedItemRemove)}\n              >\n                <X className=\"h-3 w-3\" aria-hidden=\"true\" />\n              </button>\n            </span>\n          ))}\n        </div>\n      ) : null}\n    </div>\n  );\n}\n","import { UploadCloud } from 'lucide-react';\nimport { useRef, useState, type DragEvent, type ReactNode } from 'react';\n\nimport type { DataExplorerUploadSurfaceProps } from './types';\nimport { cn } from './utils';\n\nexport function DataExplorerUploadSurface({\n  accept,\n  multiple = false,\n  disabled = false,\n  busy = false,\n  title = 'Upload files',\n  description,\n  hint,\n  busyLabel = 'Uploading...',\n  icon,\n  inputProps,\n  className,\n  classNames,\n  onFilesSelected,\n}: DataExplorerUploadSurfaceProps) {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const [isDragging, setIsDragging] = useState(false);\n\n  const emitFiles = (files: FileList | File[]) => {\n    if (disabled || busy) return;\n    const selected = Array.from(files);\n    if (selected.length > 0) onFilesSelected?.(selected);\n  };\n\n  const handleDrop = (event: DragEvent<HTMLDivElement>) => {\n    event.preventDefault();\n    setIsDragging(false);\n    emitFiles(event.dataTransfer.files);\n  };\n\n  const renderText = (value: ReactNode, fallbackClassName: string, slot?: string) =>\n    value ? <span data-slot={slot} className={cn('max-w-full [overflow-wrap:anywhere]', fallbackClassName)}>{value}</span> : null;\n\n  return (\n    <div\n      data-monkeys-component=\"data-explorer-upload-surface\"\n      data-state={busy ? 'busy' : isDragging ? 'dragging' : 'idle'}\n      className={cn(\n        'rounded-[var(--radius)] border border-dashed border-border bg-muted/20 p-6 text-center transition-colors',\n        isDragging && 'border-primary/60 bg-primary/5',\n        (disabled || busy) && 'pointer-events-none opacity-60',\n        classNames?.root,\n        className,\n      )}\n      onDragEnter={(event) => {\n        event.preventDefault();\n        if (!disabled && !busy) setIsDragging(true);\n      }}\n      onDragOver={(event) => event.preventDefault()}\n      onDragLeave={(event) => {\n        event.preventDefault();\n        if (event.currentTarget === event.target) setIsDragging(false);\n      }}\n      onDrop={handleDrop}\n    >\n      <input\n        {...inputProps}\n        ref={inputRef}\n        className=\"sr-only\"\n        type=\"file\"\n        accept={accept}\n        multiple={multiple}\n        disabled={disabled || busy}\n        onChange={(event) => {\n          emitFiles(event.target.files ?? []);\n          event.target.value = '';\n        }}\n      />\n      <button\n        type=\"button\"\n        className={cn('mx-auto flex min-w-0 flex-col items-center gap-2 text-center', classNames?.button)}\n        disabled={disabled || busy}\n        onClick={() => inputRef.current?.click()}\n      >\n        <span className={cn('text-muted-foreground', classNames?.icon)}>\n          {busy ? <span className=\"inline-block h-7 w-7 animate-spin rounded-full border-2 border-primary/25 border-t-primary\" aria-hidden=\"true\" /> : icon ?? <UploadCloud className=\"h-7 w-7\" aria-hidden=\"true\" />}\n        </span>\n        {renderText(busy ? busyLabel : title, 'text-sm font-semibold text-foreground', 'title')}\n        {renderText(description, 'max-w-xl text-xs leading-5 text-muted-foreground', 'description')}\n        {renderText(hint, 'max-w-xl text-xs leading-5 text-muted-foreground', 'hint')}\n      </button>\n    </div>\n  );\n}\n","import type { FormEvent } from 'react';\n\nimport { DataExplorerToolbarActions } from './DataExplorerToolbarActions';\nimport { useDataExplorerAppearance } from './appearanceContext';\nimport { resolveDataExplorerAppearance } from './theme';\nimport type { DataExplorerToolbarShellProps } from './types';\nimport { cn } from './utils';\n\nfunction DefaultSearchIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <circle cx=\"11\" cy=\"11\" r=\"7\" />\n      <path d=\"m20 20-3.5-3.5\" />\n    </svg>\n  );\n}\n\nexport function DataExplorerToolbarShell<TContext = unknown>({\n  rootRef,\n  dataAttributes,\n  context,\n  leading,\n  leadingActions,\n  searchVisible = true,\n  searchValue = '',\n  searchPlaceholder = 'Search data...',\n  searchIcon,\n  viewOptions = [],\n  activeViewId,\n  actions,\n  toolbarActions,\n  appearance,\n  children,\n  className,\n  classNames,\n  onSearchChange,\n  onSearchSubmit,\n  onViewChange,\n}: DataExplorerToolbarShellProps<TContext>) {\n  const handleSubmit = (event: FormEvent<HTMLFormElement>) => {\n    event.preventDefault();\n    onSearchSubmit?.(searchValue);\n  };\n  const resolvedAppearance = useDataExplorerAppearance(appearance);\n  const theme = resolveDataExplorerAppearance(resolvedAppearance);\n\n  return (\n    <div\n      ref={rootRef}\n      {...dataAttributes}\n      className={cn(\n        theme.slots.toolbarRoot,\n        classNames?.root,\n        className,\n      )}\n      style={theme.styles.toolbarRoot}\n    >\n      {leading || leadingActions?.length ? (\n        <div className={cn(theme.slots.toolbarLeading, classNames?.leading)}>\n          {leading}\n          {leadingActions?.length ? (\n            <DataExplorerToolbarActions\n              context={context}\n              actions={leadingActions}\n              layout=\"inline\"\n              appearance={resolvedAppearance}\n              classNames={{\n                action: classNames?.action,\n                menuContent: classNames?.menuContent,\n                menuItem: classNames?.menuItem,\n              }}\n            />\n          ) : null}\n        </div>\n      ) : null}\n\n      {searchVisible ? (\n        <form\n          className={cn(\n            theme.slots.toolbarSearch,\n            classNames?.search,\n          )}\n          style={theme.styles.toolbarSearch}\n          onSubmit={handleSubmit}\n        >\n          <span\n            className={cn(\n              theme.slots.toolbarSearchIcon,\n              classNames?.searchIcon,\n            )}\n          >\n            {searchIcon ?? <DefaultSearchIcon />}\n          </span>\n          <input\n            value={searchValue}\n            placeholder={searchPlaceholder}\n            className={cn(\n              theme.slots.toolbarSearchInput,\n              classNames?.searchInput,\n            )}\n            onChange={(event) => onSearchChange?.(event.currentTarget.value)}\n          />\n        </form>\n      ) : null}\n\n      {viewOptions.length > 0 ? (\n        <div\n          className={cn(\n            theme.slots.toolbarViewSwitch,\n            classNames?.viewSwitch,\n          )}\n          style={theme.styles.toolbarViewSwitch}\n        >\n          {viewOptions.map((option) => {\n            const active = option.id === activeViewId;\n            return (\n              <button\n                key={option.id}\n                type=\"button\"\n                disabled={option.disabled}\n                className={cn(\n                  theme.slots.toolbarViewButton,\n                  active && theme.slots.toolbarViewButtonActive,\n                  classNames?.viewButton,\n                )}\n                onClick={() => onViewChange?.(option.id)}\n              >\n                {option.icon}\n                {option.label ? <span>{option.label}</span> : null}\n              </button>\n            );\n          })}\n        </div>\n      ) : null}\n\n      {toolbarActions?.length ? (\n        <DataExplorerToolbarActions\n          context={context}\n          actions={toolbarActions}\n          layout=\"toolbar\"\n          appearance={appearance}\n          classNames={{\n            root: classNames?.actions,\n            action: classNames?.action,\n            menuContent: classNames?.menuContent,\n            menuItem: classNames?.menuItem,\n          }}\n        />\n      ) : actions || children ? (\n        <div className={cn(theme.slots.toolbarActions, classNames?.actions)}>\n          {actions}\n          {children}\n        </div>\n      ) : null}\n    </div>\n  );\n}\n","import type { ReactNode } from 'react';\n\nimport type { DataExplorerTreeProps } from './types';\nimport { cn } from './utils';\n\nfunction defaultGetChildren<TNode>(node: TNode): TNode[] | undefined {\n  if (!node || typeof node !== 'object') {\n    return undefined;\n  }\n  const candidate = (node as { children?: unknown }).children;\n  return Array.isArray(candidate) ? (candidate as TNode[]) : undefined;\n}\n\nexport function DataExplorerTree<TNode = unknown, TContext = unknown>({\n  nodes = [],\n  context,\n  capabilities,\n  className,\n  classNames,\n  empty,\n  selectedNodeId,\n  getNodeId,\n  getChildren = defaultGetChildren,\n  renderNode,\n  onSelect,\n}: DataExplorerTreeProps<TNode, TContext>) {\n  const resolvedNodes = Array.isArray(nodes) ? nodes : [];\n\n  const renderTreeNodes = (currentNodes: TNode[], depth: number): ReactNode =>\n    currentNodes.map((node, index) => {\n      const nodeId = getNodeId ? getNodeId(node, index) : `${depth}-${index}`;\n      const childNodes = getChildren(node, index, depth) ?? [];\n      const hasChildren = childNodes.length > 0;\n      const selected = String(selectedNodeId ?? '') === String(nodeId);\n      const renderedChildren = hasChildren ? renderTreeNodes(childNodes, depth + 1) : null;\n\n      if (!renderNode) {\n        return renderedChildren;\n      }\n\n      return (\n        <div key={nodeId} className=\"min-w-0\">\n          {renderNode({\n            node,\n            index,\n            depth,\n            context,\n            capabilities,\n            childNodes,\n            hasChildren,\n            selected,\n            onSelect,\n            renderChildren: () => renderedChildren,\n          })}\n        </div>\n      );\n    });\n\n  if (resolvedNodes.length === 0) {\n    if (!empty) {\n      return null;\n    }\n    return <div className={cn(classNames?.empty)}>{empty}</div>;\n  }\n\n  return (\n    <div className={cn('min-w-0', classNames?.root, className)}>\n      {renderTreeNodes(resolvedNodes, 0)}\n    </div>\n  );\n}\n","import type { DataExplorerTreeShellProps } from './types';\nimport { useDataExplorerAppearance } from './appearanceContext';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn } from './utils';\n\nexport function DataExplorerTreeShell({\n  title,\n  subtitle,\n  toolbar,\n  footer,\n  children,\n  appearance,\n  className,\n  classNames,\n}: DataExplorerTreeShellProps) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const hasHeader = !!title || !!subtitle || !!toolbar;\n\n  return (\n    <section\n      className={cn(\n        theme.slots.treeShellRoot,\n        classNames?.root,\n        className,\n      )}\n    >\n      {hasHeader ? (\n        <div\n          className={cn(\n            theme.slots.treeShellHeader,\n            classNames?.header,\n          )}\n        >\n          <div className=\"min-w-0 flex-1\">\n            {title ? (\n              <div className={cn(theme.slots.treeShellTitle, classNames?.title)}>\n                {title}\n              </div>\n            ) : null}\n            {subtitle ? (\n              <div\n                className={cn(\n                  theme.slots.treeShellSubtitle,\n                  classNames?.subtitle,\n                )}\n              >\n                {subtitle}\n              </div>\n            ) : null}\n          </div>\n\n          {toolbar ? (\n            <div className={cn(theme.slots.treeShellToolbar, classNames?.toolbar)}>\n              {toolbar}\n            </div>\n          ) : null}\n        </div>\n      ) : null}\n\n      <div className={cn(theme.slots.treeShellBody, classNames?.body)}>\n        {children}\n      </div>\n\n      {footer ? (\n        <div className={cn(theme.slots.treeShellFooter, classNames?.footer)}>{footer}</div>\n      ) : null}\n    </section>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport type { DragEvent, ReactNode } from \"react\";\n\nimport { useMonkeysLocaleMessages } from '../../provider/context';\nimport { cn } from '../base/utils';\nimport {\n  getDataExplorerMenuItemToneClassName,\n  resolveDataExplorerAppearance,\n} from \"./theme\";\nimport type {\n  DataExplorerViewTreeAction,\n  DataExplorerViewTreeActionContext,\n  DataExplorerViewTreeGroup,\n  DataExplorerViewTreeNode,\n  DataExplorerViewTreeProps,\n  DataExplorerViewTreeReorderPayload,\n} from './types';\nimport { resolveDataExplorerValue } from './utils';\n\ntype TreeGroup<TGroupSource, TNodeSource, TContext> = DataExplorerViewTreeGroup<\n  TGroupSource,\n  TNodeSource,\n  TContext\n>;\n\ntype TreeNode<\n  TNodeSource,\n  TGroupSource = unknown,\n  TContext = unknown,\n> = DataExplorerViewTreeNode<TNodeSource, TGroupSource, TContext>;\n\ntype FlattenedNode<TNodeSource, TGroupSource, TContext> = {\n  node: TreeNode<TNodeSource, TGroupSource, TContext>;\n  group?: TreeGroup<TGroupSource, TNodeSource, TContext>;\n  parentId?: string;\n  index: number;\n};\n\nfunction ChevronIcon({ expanded }: { expanded: boolean }) {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className={cn(\n        \"h-3.5 w-3.5 transition-transform\",\n        expanded && \"rotate-90\",\n      )}\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"m9 18 6-6-6-6\" />\n    </svg>\n  );\n}\n\nfunction MoreIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <circle cx=\"12\" cy=\"12\" r=\"1\" />\n      <circle cx=\"12\" cy=\"5\" r=\"1\" />\n      <circle cx=\"12\" cy=\"19\" r=\"1\" />\n    </svg>\n  );\n}\n\nfunction GripIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-3.5 w-3.5\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <circle cx=\"9\" cy=\"6\" r=\"1\" />\n      <circle cx=\"9\" cy=\"12\" r=\"1\" />\n      <circle cx=\"9\" cy=\"18\" r=\"1\" />\n      <circle cx=\"15\" cy=\"6\" r=\"1\" />\n      <circle cx=\"15\" cy=\"12\" r=\"1\" />\n      <circle cx=\"15\" cy=\"18\" r=\"1\" />\n    </svg>\n  );\n}\n\nfunction collectDefaultExpandedNodeIds<TNodeSource, TGroupSource, TContext>(\n  nodes: Array<TreeNode<TNodeSource, TGroupSource, TContext>> | undefined,\n  defaults: Set<string>,\n) {\n  for (const node of nodes ?? []) {\n    if (node.defaultExpanded) {\n      defaults.add(node.id);\n    }\n    collectDefaultExpandedNodeIds(node.children, defaults);\n  }\n}\n\nfunction buildDefaultNodeExpandedSet<TNodeSource, TGroupSource, TContext>(\n  groups: Array<TreeGroup<TGroupSource, TNodeSource, TContext>>,\n  defaultExpandedNodeIds: string[] | undefined,\n) {\n  const defaults = new Set(defaultExpandedNodeIds ?? []);\n  for (const group of groups) {\n    collectDefaultExpandedNodeIds(group.nodes, defaults);\n  }\n  return defaults;\n}\n\nfunction buildDefaultGroupExpandedSet<TNodeSource, TGroupSource, TContext>(\n  groups: Array<TreeGroup<TGroupSource, TNodeSource, TContext>>,\n  defaultExpandedGroupIds: string[] | undefined,\n) {\n  const defaults = new Set(defaultExpandedGroupIds ?? []);\n  for (const group of groups) {\n    if (group.hideHeader || group.defaultExpanded !== false) {\n      defaults.add(group.id);\n    }\n  }\n  return defaults;\n}\n\nfunction flattenNodes<TNodeSource, TGroupSource, TContext>(\n  nodes: Array<TreeNode<TNodeSource, TGroupSource, TContext>> | undefined,\n  group: TreeGroup<TGroupSource, TNodeSource, TContext> | undefined,\n  parentId: string | undefined,\n  entries: Map<string, FlattenedNode<TNodeSource, TGroupSource, TContext>>,\n) {\n  for (const [index, node] of (nodes ?? []).entries()) {\n    entries.set(node.id, { node, group, parentId, index });\n    flattenNodes(node.children, group, node.id, entries);\n  }\n}\n\nfunction buildFlattenedNodeMap<TNodeSource, TGroupSource, TContext>(\n  groups: Array<TreeGroup<TGroupSource, TNodeSource, TContext>>,\n) {\n  const entries = new Map<\n    string,\n    FlattenedNode<TNodeSource, TGroupSource, TContext>\n  >();\n  for (const group of groups) {\n    flattenNodes(group.nodes, group, undefined, entries);\n  }\n  return entries;\n}\n\nfunction getNodeActions<TNodeSource, TGroupSource, TContext>(\n  node: TreeNode<TNodeSource, TGroupSource, TContext>,\n  globalActions:\n    | Array<DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>>\n    | undefined,\n) {\n  return [\n    ...(globalActions ?? []),\n    ...((node.actions ?? []) as Array<\n      DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>\n    >),\n  ];\n}\n\nfunction getGroupActions<TNodeSource, TGroupSource, TContext>(\n  group: TreeGroup<TGroupSource, TNodeSource, TContext>,\n  globalActions:\n    | Array<DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>>\n    | undefined,\n) {\n  return [\n    ...(globalActions ?? []),\n    ...((group.actions ?? []) as Array<\n      DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>\n    >),\n  ];\n}\n\nexport function DataExplorerViewTree<\n  TNodeSource = unknown,\n  TGroupSource = unknown,\n  TContext = unknown,\n>({\n  groups,\n  nodes,\n  context,\n  selectedNodeId,\n  selectedGroupId,\n  expandedNodeIds,\n  defaultExpandedNodeIds,\n  expandedGroupIds,\n  defaultExpandedGroupIds,\n  resetExpansionKey,\n  nodeActions,\n  groupActions,\n  indentSize = 16,\n  indentOffset = 8,\n  actionIcon,\n  empty,\n  loading = false,\n  loadingNode,\n  error,\n  labels,\n  reorderMode = \"none\",\n  appearance,\n  className,\n  classNames,\n  onSelectNode,\n  onSelectGroup,\n  onExpandedNodeIdsChange,\n  onExpandedGroupIdsChange,\n  onAction,\n  onReorderNodes,\n}: DataExplorerViewTreeProps<TNodeSource, TGroupSource, TContext>) {\n  const internalLabels = useMonkeysLocaleMessages().dataExplorer.viewTree;\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const actionLabel = labels?.actions ?? internalLabels.actions;\n  const expandLabel = labels?.expand ?? internalLabels.expand;\n  const collapseLabel = labels?.collapse ?? internalLabels.collapse;\n  const loadingContent =\n    loadingNode ?? labels?.loading ?? internalLabels.loading;\n  const emptyContent = empty ?? labels?.empty ?? internalLabels.empty;\n  const hasExplicitGroups = Array.isArray(groups);\n  const resolvedGroups = useMemo<\n    Array<TreeGroup<TGroupSource, TNodeSource, TContext>>\n  >(() => {\n    if (hasExplicitGroups) {\n      return groups;\n    }\n    return [\n      {\n        id: \"__root__\",\n        hideHeader: true,\n        defaultExpanded: true,\n        nodes: Array.isArray(nodes) ? nodes : [],\n      },\n    ];\n  }, [groups, hasExplicitGroups, nodes]);\n  const flattenedNodeMap = useMemo(\n    () => buildFlattenedNodeMap(resolvedGroups),\n    [resolvedGroups],\n  );\n  const [internalExpandedNodeIds, setInternalExpandedNodeIds] = useState(() =>\n    buildDefaultNodeExpandedSet(resolvedGroups, defaultExpandedNodeIds),\n  );\n  const [internalExpandedGroupIds, setInternalExpandedGroupIds] = useState(() =>\n    buildDefaultGroupExpandedSet(resolvedGroups, defaultExpandedGroupIds),\n  );\n  const [draggingNodeId, setDraggingNodeId] = useState<string | undefined>();\n  const [dragOverNodeId, setDragOverNodeId] = useState<string | undefined>();\n\n  useEffect(() => {\n    setInternalExpandedNodeIds(\n      buildDefaultNodeExpandedSet(resolvedGroups, defaultExpandedNodeIds),\n    );\n    setInternalExpandedGroupIds(\n      buildDefaultGroupExpandedSet(resolvedGroups, defaultExpandedGroupIds),\n    );\n  }, [defaultExpandedGroupIds, defaultExpandedNodeIds, resetExpansionKey]);\n\n  const resolvedExpandedNodeIds =\n    expandedNodeIds !== undefined\n      ? new Set(expandedNodeIds)\n      : internalExpandedNodeIds;\n  const resolvedExpandedGroupIds =\n    expandedGroupIds !== undefined\n      ? new Set(expandedGroupIds)\n      : internalExpandedGroupIds;\n\n  const setNodeExpanded = (nodeId: string, expanded: boolean) => {\n    const next = new Set(resolvedExpandedNodeIds);\n    if (expanded) {\n      next.add(nodeId);\n    } else {\n      next.delete(nodeId);\n    }\n    if (expandedNodeIds === undefined) {\n      setInternalExpandedNodeIds(next);\n    }\n    onExpandedNodeIdsChange?.([...next]);\n  };\n\n  const setGroupExpanded = (groupId: string, expanded: boolean) => {\n    const next = new Set(resolvedExpandedGroupIds);\n    if (expanded) {\n      next.add(groupId);\n    } else {\n      next.delete(groupId);\n    }\n    if (expandedGroupIds === undefined) {\n      setInternalExpandedGroupIds(next);\n    }\n    onExpandedGroupIdsChange?.([...next]);\n  };\n\n  const createActionContext = (\n    action: DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>,\n    target:\n      | {\n          type: \"node\";\n          node: TreeNode<TNodeSource, TGroupSource, TContext>;\n          group?: TreeGroup<TGroupSource, TNodeSource, TContext>;\n        }\n      | {\n          type: \"group\";\n          group: TreeGroup<TGroupSource, TNodeSource, TContext>;\n        },\n  ): DataExplorerViewTreeActionContext<TNodeSource, TGroupSource, TContext> =>\n    target.type === \"node\"\n      ? {\n          type: \"node\",\n          action,\n          node: target.node,\n          group: target.group,\n          context,\n        }\n      : {\n          type: \"group\",\n          action,\n          group: target.group,\n          context,\n        };\n\n  const renderActions = (\n    actions: Array<\n      DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>\n    >,\n    target:\n      | {\n          type: \"node\";\n          node: TreeNode<TNodeSource, TGroupSource, TContext>;\n          group?: TreeGroup<TGroupSource, TNodeSource, TContext>;\n        }\n      | {\n          type: \"group\";\n          group: TreeGroup<TGroupSource, TNodeSource, TContext>;\n        },\n  ) => {\n    const visibleActions = actions.filter((action) => {\n      const payload = createActionContext(action, target);\n      return resolveDataExplorerValue(action.visible, payload) ?? true;\n    });\n    if (visibleActions.length === 0) return null;\n\n    return (\n      <DropdownMenu.Root>\n        <DropdownMenu.Trigger asChild>\n          <button\n            type=\"button\"\n            title={actionLabel}\n            aria-label={actionLabel}\n            className={cn(\n              theme.slots.menuTrigger,\n              target.type === \"group\"\n                ? theme.slots.treeGroupActions\n                : theme.slots.treeNodeActions,\n              target.type === \"group\"\n                ? classNames?.groupActions\n                : cn(classNames?.nodeActions, classNames?.itemActions),\n            )}\n            onClick={(event) => event.stopPropagation()}\n          >\n            {actionIcon ?? <MoreIcon />}\n          </button>\n        </DropdownMenu.Trigger>\n        <DropdownMenu.Portal>\n          <DropdownMenu.Content\n            align=\"end\"\n            sideOffset={6}\n            className={cn(theme.slots.menuContent, classNames?.menuContent)}\n            style={theme.styles.menuContent}\n            onClick={(event) => event.stopPropagation()}\n          >\n            {visibleActions.map((action) => {\n              const payload = createActionContext(action, target);\n              const disabled =\n                (resolveDataExplorerValue(action.disabled, payload) ?? false) ||\n                (resolveDataExplorerValue(action.loading, payload) ?? false);\n              const active =\n                resolveDataExplorerValue(action.active, payload) ?? false;\n\n              if (action.render) {\n                return <div key={action.id}>{action.render(payload)}</div>;\n              }\n\n              return (\n                <div key={action.id}>\n                  {action.separatorBefore ? (\n                    <DropdownMenu.Separator\n                      className={theme.slots.menuSeparator}\n                    />\n                  ) : null}\n                  <DropdownMenu.Item\n                    title={action.title}\n                    disabled={disabled}\n                    className={cn(\n                      theme.slots.menuItem,\n                      getDataExplorerMenuItemToneClassName(theme, action.tone),\n                      active && \"bg-accent text-accent-foreground\",\n                      classNames?.menuItem,\n                    )}\n                    style={theme.styles.menuItem}\n                    onSelect={() => {\n                      if (disabled) return;\n                      void action.onAction?.(payload);\n                      void onAction?.(payload);\n                    }}\n                  >\n                    {action.icon ? (\n                      <span className={theme.slots.menuItemIcon}>\n                        {action.icon}\n                      </span>\n                    ) : null}\n                    <span className={theme.slots.menuItemLabel}>\n                      {action.label}\n                    </span>\n                  </DropdownMenu.Item>\n                  {action.separatorAfter ? (\n                    <DropdownMenu.Separator\n                      className={theme.slots.menuSeparator}\n                    />\n                  ) : null}\n                </div>\n              );\n            })}\n          </DropdownMenu.Content>\n        </DropdownMenu.Portal>\n      </DropdownMenu.Root>\n    );\n  };\n\n  const handleDrop = (\n    event: DragEvent<HTMLElement>,\n    overNode: TreeNode<TNodeSource, TGroupSource, TContext>,\n  ) => {\n    event.preventDefault();\n    const activeNodeId =\n      draggingNodeId ||\n      event.dataTransfer.getData(\"application/x-data-explorer-node\");\n    if (!activeNodeId || activeNodeId === overNode.id || !onReorderNodes) {\n      setDraggingNodeId(undefined);\n      setDragOverNodeId(undefined);\n      return;\n    }\n\n    const activeEntry = flattenedNodeMap.get(activeNodeId);\n    const overEntry = flattenedNodeMap.get(overNode.id);\n    if (!activeEntry || !overEntry) {\n      setDraggingNodeId(undefined);\n      setDragOverNodeId(undefined);\n      return;\n    }\n\n    const sameParent =\n      activeEntry.parentId === overEntry.parentId &&\n      activeEntry.group?.id === overEntry.group?.id;\n    if (reorderMode === \"same-parent\" && !sameParent) {\n      setDraggingNodeId(undefined);\n      setDragOverNodeId(undefined);\n      return;\n    }\n\n    const payload: DataExplorerViewTreeReorderPayload<\n      TNodeSource,\n      TGroupSource,\n      TContext\n    > = {\n      activeNode: activeEntry.node,\n      overNode: overEntry.node,\n      activeGroup: activeEntry.group,\n      overGroup: overEntry.group,\n      activeParentId: activeEntry.parentId,\n      overParentId: overEntry.parentId,\n      oldIndex: activeEntry.index,\n      newIndex: overEntry.index,\n      sameParent,\n      context,\n    };\n    void onReorderNodes(payload);\n    setDraggingNodeId(undefined);\n    setDragOverNodeId(undefined);\n  };\n\n  const renderNode = (\n    node: TreeNode<TNodeSource, TGroupSource, TContext>,\n    group: TreeGroup<TGroupSource, TNodeSource, TContext> | undefined,\n    depth: number,\n  ): ReactNode => {\n    const childNodes = Array.isArray(node.children) ? node.children : [];\n    const hasChildren = childNodes.length > 0;\n    const isExpanded =\n      node.collapsible === false || resolvedExpandedNodeIds.has(node.id);\n    const isSelected = selectedNodeId === node.id;\n    const isSelectable = node.selectable !== false && !node.disabled;\n    const isReorderable =\n      reorderMode !== \"none\" && !!onReorderNodes && node.reorderable !== false;\n    const isDragging = draggingNodeId === node.id;\n    const isDragOver = dragOverNodeId === node.id && draggingNodeId !== node.id;\n    const actions = getNodeActions(node, nodeActions);\n\n    return (\n      <div\n        key={node.id}\n        data-data-explorer-entry=\"node\"\n        data-data-explorer-node-id={node.id}\n        data-data-explorer-group-id={group?.id}\n        className={cn(\n          theme.slots.treeNode,\n          classNames?.node,\n          classNames?.item,\n          node.className,\n        )}\n        onDragOver={(event) => {\n          if (!draggingNodeId || !isReorderable) return;\n          event.preventDefault();\n          setDragOverNodeId(node.id);\n        }}\n        onDragLeave={() => {\n          if (dragOverNodeId === node.id) {\n            setDragOverNodeId(undefined);\n          }\n        }}\n        onDrop={(event) => handleDrop(event, node)}\n      >\n        <div\n          className={cn(\n            theme.slots.treeNodeButton,\n            isSelected && theme.slots.treeNodeSelected,\n            node.disabled && theme.slots.treeNodeDisabled,\n            isDragging && theme.slots.treeNodeDragging,\n            isDragOver && \"ring-1 ring-primary/30\",\n            isSelected && classNames?.itemSelected,\n            isSelected && classNames?.nodeSelected,\n            node.disabled && classNames?.nodeDisabled,\n            isDragging && classNames?.nodeDragging,\n            classNames?.nodeButton,\n            classNames?.itemButton,\n          )}\n          style={{\n            paddingLeft: `calc(${(node.indentLevel ?? depth) * indentSize + indentOffset}px + var(--data-explorer-tree-group-indent, 0px))`,\n          }}\n          role=\"treeitem\"\n          aria-selected={isSelected || undefined}\n          aria-disabled={node.disabled || undefined}\n          aria-expanded={hasChildren ? isExpanded : undefined}\n          aria-label={node.ariaLabel}\n          tabIndex={isSelectable ? 0 : -1}\n          onClick={() => {\n            if (!isSelectable) return;\n            onSelectNode?.(node, context);\n          }}\n          onKeyDown={(event) => {\n            if (event.target !== event.currentTarget) return;\n            if (!isSelectable) return;\n            if (event.key !== \"Enter\" && event.key !== \" \") return;\n            event.preventDefault();\n            onSelectNode?.(node, context);\n          }}\n        >\n          {isReorderable ? (\n            <span\n              draggable\n              className={cn(\n                theme.slots.treeNodeDragHandle,\n                classNames?.nodeDragHandle,\n              )}\n              onClick={(event) => event.stopPropagation()}\n              onDragStart={(event) => {\n                event.stopPropagation();\n                event.dataTransfer.effectAllowed = \"move\";\n                event.dataTransfer.setData(\n                  \"application/x-data-explorer-node\",\n                  node.id,\n                );\n                setDraggingNodeId(node.id);\n              }}\n              onDragEnd={() => {\n                setDraggingNodeId(undefined);\n                setDragOverNodeId(undefined);\n              }}\n            >\n              <GripIcon />\n            </span>\n          ) : null}\n          {hasChildren ? (\n            <button\n              type=\"button\"\n              className={cn(\n                theme.slots.treeNodeToggle,\n                classNames?.nodeToggle,\n                classNames?.expander,\n              )}\n              aria-label={isExpanded ? collapseLabel : expandLabel}\n              onClick={(event) => {\n                event.stopPropagation();\n                setNodeExpanded(node.id, !isExpanded);\n              }}\n            >\n              <ChevronIcon expanded={isExpanded} />\n            </button>\n          ) : (\n            <span\n              className={cn(theme.slots.treeNodeToggle, classNames?.nodeToggle)}\n            />\n          )}\n          {node.icon ? (\n            <span\n              className={cn(\n                theme.slots.treeNodeIcon,\n                classNames?.nodeIcon,\n                classNames?.itemIcon,\n              )}\n            >\n              {node.icon}\n            </span>\n          ) : null}\n          <span className=\"flex min-w-0 flex-1 flex-col\">\n            <span\n              className={cn(\n                theme.slots.treeNodeLabel,\n                classNames?.nodeLabel,\n                classNames?.itemLabel,\n              )}\n            >\n              {node.label}\n            </span>\n            {node.description ? (\n              <span\n                className={cn(\n                  theme.slots.treeNodeDescription,\n                  classNames?.nodeDescription,\n                )}\n              >\n                {node.description}\n              </span>\n            ) : null}\n          </span>\n          {node.meta ? (\n            <span\n              className={cn(theme.slots.treeNodeMeta, classNames?.nodeMeta)}\n            >\n              {node.meta}\n            </span>\n          ) : null}\n          {node.badge ? (\n            <span\n              className={cn(theme.slots.treeNodeBadge, classNames?.nodeBadge)}\n            >\n              {node.badge}\n            </span>\n          ) : null}\n          {renderActions(actions, { type: \"node\", node, group })}\n        </div>\n        {hasChildren && isExpanded ? (\n          <div\n            className={cn(\n              theme.slots.treeNodeChildren,\n              classNames?.nodeChildren,\n              classNames?.list,\n            )}\n          >\n            {childNodes.map((child) => renderNode(child, group, depth + 1))}\n          </div>\n        ) : null}\n      </div>\n    );\n  };\n\n  const renderPlaceholder = (\n    content: ReactNode,\n    slotClassName: string,\n    classNameOverride: string | undefined,\n  ) => <div className={cn(slotClassName, classNameOverride)}>{content}</div>;\n\n  if (loading) {\n    return (\n      <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n        {renderPlaceholder(\n          loadingContent,\n          theme.slots.treeLoading,\n          classNames?.loading,\n        )}\n      </div>\n    );\n  }\n\n  if (error) {\n    return (\n      <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n        {renderPlaceholder(\n          error ?? labels?.error,\n          theme.slots.treeError,\n          classNames?.error,\n        )}\n      </div>\n    );\n  }\n\n  const hasAnyNodes = resolvedGroups.some(\n    (group) => (group.nodes ?? []).length > 0,\n  );\n  const hasAnyGroupState = resolvedGroups.some(\n    (group) => group.status === \"loading\" || group.error,\n  );\n  const shouldRenderGlobalEmpty =\n    !hasAnyNodes &&\n    !hasAnyGroupState &&\n    (!hasExplicitGroups || resolvedGroups.length === 0);\n  if (shouldRenderGlobalEmpty) {\n    return (\n      <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n        {renderPlaceholder(\n          emptyContent,\n          theme.slots.treeEmpty,\n          classNames?.empty,\n        )}\n      </div>\n    );\n  }\n\n  return (\n    <div\n      className={cn(theme.slots.treeRoot, classNames?.root, className)}\n      role={hasAnyNodes || resolvedGroups.some((group) => !group.hideHeader) ? 'tree' : undefined}\n    >\n      {resolvedGroups.map((group) => {\n        const groupExpanded =\n          group.hideHeader ||\n          group.collapsible === false ||\n          resolvedExpandedGroupIds.has(group.id);\n        const groupNodeCount = group.nodes?.length ?? 0;\n        const actions = getGroupActions(group, groupActions);\n        const groupSelected = selectedGroupId === group.id;\n        const groupCollapsible = group.collapsible !== false;\n        return (\n          <section\n            key={group.id}\n            data-data-explorer-entry=\"group\"\n            data-data-explorer-group-id={group.id}\n            className={cn(\n              theme.slots.treeGroup,\n              classNames?.group,\n              group.className,\n            )}\n          >\n            {!group.hideHeader ? (\n              <div\n                role=\"treeitem\"\n                aria-label={typeof group.label === 'string' ? group.label : undefined}\n                aria-selected={group.selectable ? groupSelected : undefined}\n                aria-expanded={groupCollapsible ? groupExpanded : undefined}\n                className={cn(\n                  theme.slots.treeGroupHeader,\n                  theme.slots.treeGroupHeaderButton,\n                  groupSelected && theme.slots.treeNodeSelected,\n                  classNames?.groupHeader,\n                  classNames?.groupHeaderButton,\n                  groupSelected && classNames?.itemSelected,\n                )}\n              >\n                <button\n                  type=\"button\"\n                  className={cn(\n                    \"flex min-w-0 flex-1 items-center gap-2 text-left outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n                    classNames?.groupLabel,\n                  )}\n                  aria-pressed={group.selectable ? groupSelected : undefined}\n                  aria-expanded={\n                    !group.selectable && groupCollapsible\n                      ? groupExpanded\n                      : undefined\n                  }\n                  onClick={() => {\n                    if (group.selectable) {\n                      onSelectGroup?.(group, context);\n                      return;\n                    }\n                    if (groupCollapsible)\n                      setGroupExpanded(group.id, !groupExpanded);\n                  }}\n                >\n                  {group.icon ? (\n                    <span\n                      className={cn(\n                        theme.slots.treeNodeIcon,\n                        classNames?.nodeIcon,\n                        classNames?.itemIcon,\n                      )}\n                    >\n                      {group.icon}\n                    </span>\n                  ) : null}\n                  <span className=\"flex min-w-0 flex-1 flex-col\">\n                    {group.label ? (\n                      <span\n                        className={cn(\n                          theme.slots.treeNodeLabel,\n                          classNames?.nodeLabel,\n                          classNames?.itemLabel,\n                        )}\n                      >\n                        {group.label}\n                      </span>\n                    ) : null}\n                    {group.description ? (\n                      <span\n                        className={cn(\n                          theme.slots.treeNodeDescription,\n                          classNames?.nodeDescription,\n                        )}\n                      >\n                        {group.description}\n                      </span>\n                    ) : null}\n                  </span>\n                  {group.meta ? (\n                    <span\n                      className={cn(\n                        theme.slots.treeNodeMeta,\n                        classNames?.nodeMeta,\n                      )}\n                    >\n                      {group.meta}\n                    </span>\n                  ) : null}\n                  {group.badge ? (\n                    <span\n                      className={cn(\n                        theme.slots.treeNodeBadge,\n                        classNames?.nodeBadge,\n                      )}\n                    >\n                      {group.badge}\n                    </span>\n                  ) : null}\n                </button>\n                {groupCollapsible ? (\n                  <button\n                    type=\"button\"\n                    className={cn(\n                      theme.slots.treeNodeToggle,\n                      classNames?.expander,\n                    )}\n                    aria-label={groupExpanded ? collapseLabel : expandLabel}\n                    aria-expanded={groupExpanded}\n                    onClick={() => setGroupExpanded(group.id, !groupExpanded)}\n                  >\n                    <ChevronIcon expanded={groupExpanded} />\n                  </button>\n                ) : (\n                  <span className={cn(theme.slots.treeNodeToggle, classNames?.expander)} />\n                )}\n                {renderActions(actions, { type: \"group\", group })}\n              </div>\n            ) : null}\n            {groupExpanded ? (\n              <div\n                role=\"group\"\n                className={cn(\n                  theme.slots.treeGroupContent,\n                  classNames?.groupContent,\n                  classNames?.list,\n                )}\n              >\n                {group.loading || group.status === \"loading\"\n                  ? renderPlaceholder(\n                      loadingContent,\n                      theme.slots.treeLoading,\n                      classNames?.loading,\n                    )\n                  : group.error || group.status === \"error\"\n                    ? renderPlaceholder(\n                        group.error ?? labels?.error ?? internalLabels.error,\n                        theme.slots.treeError,\n                        classNames?.error,\n                      )\n                    : groupNodeCount > 0\n                      ? group.nodes?.map((node) => renderNode(node, group, 0))\n                      : renderPlaceholder(\n                          group.empty ?? emptyContent,\n                          theme.slots.treeEmpty,\n                          classNames?.empty,\n                        )}\n              </div>\n            ) : null}\n          </section>\n        );\n      })}\n    </div>\n  );\n}\n","import { DataExplorerViewCollection } from './DataExplorerViewCollection';\nimport type {\n  DataExplorerViewDefinition,\n  DataExplorerViewId,\n  DataExplorerViewProps,\n  DataExplorerViewRenderProps,\n} from './types';\n\nfunction resolveActiveViewDefinition<\n  TItem,\n  TContext,\n  TViewId extends DataExplorerViewId,\n>(\n  views: Array<DataExplorerViewDefinition<TItem, TContext, TViewId>>,\n  activeViewId?: TViewId,\n  fallbackViewId?: TViewId,\n) {\n  const visibleViews = views.filter((view) => !view.hidden);\n  if (visibleViews.length === 0) {\n    return undefined;\n  }\n\n  if (activeViewId) {\n    const matched = visibleViews.find((view) => view.id === activeViewId);\n    if (matched) {\n      return matched;\n    }\n  }\n\n  if (fallbackViewId) {\n    const fallback = visibleViews.find((view) => view.id === fallbackViewId);\n    if (fallback) {\n      return fallback;\n    }\n  }\n\n  return visibleViews[0];\n}\n\nexport function DataExplorerView<\n  TItem = unknown,\n  TContext = unknown,\n  TViewId extends DataExplorerViewId = DataExplorerViewId,\n>({\n  items,\n  views = [],\n  activeViewId,\n  fallbackViewId,\n  context,\n  capabilities,\n  className,\n  classNames,\n  empty,\n  loading,\n  loadingNode,\n  footer,\n  overlay,\n  layout,\n  collection,\n  selectedIds = [],\n  getItemId,\n  itemDefinition,\n  renderItem,\n  onOpenItem,\n  onSelectionChange,\n}: DataExplorerViewProps<TItem, TContext, TViewId>) {\n  const resolvedItems = Array.isArray(items) ? items : [];\n  const resolvedView = resolveActiveViewDefinition(views, activeViewId, fallbackViewId);\n  const resolvedActiveViewId = (resolvedView?.id ?? activeViewId ?? fallbackViewId ?? '') as TViewId;\n  const resolvedCollection =\n    collection || resolvedView?.collection\n      ? {\n          ...collection,\n          ...resolvedView?.collection,\n          classNames: {\n            ...collection?.classNames,\n            ...resolvedView?.collection?.classNames,\n          },\n        }\n      : undefined;\n  const resolvedLayout = resolvedView?.layout ?? resolvedView?.collection?.layout ?? layout ?? collection?.layout;\n  const resolvedLoading = resolvedView?.collection?.loading ?? collection?.loading ?? loading;\n  const resolvedLoadingNode = resolvedView?.collection?.loadingNode ?? collection?.loadingNode ?? loadingNode;\n  const resolvedFooter = resolvedView?.collection?.footer ?? collection?.footer ?? footer;\n  const resolvedOverlay = resolvedView?.collection?.overlay ?? collection?.overlay ?? overlay;\n  const resolvedEmpty =\n    typeof resolvedView?.empty === 'function'\n      ? resolvedView.empty({\n          items: resolvedItems,\n          activeViewId: resolvedActiveViewId,\n          context,\n          capabilities,\n          className,\n          empty,\n          loading,\n          loadingNode,\n          footer,\n          overlay,\n          layout,\n          collection: resolvedCollection,\n          selectedIds,\n          getItemId,\n          itemDefinition,\n          renderItem,\n          onOpenItem,\n          onSelectionChange,\n        })\n      : resolvedView?.empty ?? empty;\n\n  const renderProps: DataExplorerViewRenderProps<TItem, TContext, TViewId> = {\n    items: resolvedItems,\n    activeViewId: resolvedActiveViewId,\n    context,\n    capabilities,\n    className,\n    empty: resolvedEmpty,\n    loading: resolvedLoading,\n    loadingNode: resolvedLoadingNode,\n    footer: resolvedFooter,\n    overlay: resolvedOverlay,\n    layout: resolvedLayout,\n    collection: resolvedCollection,\n    selectedIds,\n    getItemId,\n    itemDefinition: resolvedView?.itemDefinition ?? itemDefinition,\n    renderItem: resolvedView?.renderItem ?? renderItem,\n    onOpenItem,\n    onSelectionChange,\n  };\n\n  if (resolvedView?.render) {\n    return <>{resolvedView.render(renderProps)}</>;\n  }\n\n  return (\n    <DataExplorerViewCollection<TItem, TContext, TViewId>\n      items={resolvedItems}\n      activeViewId={resolvedActiveViewId}\n      context={context}\n      capabilities={capabilities}\n      className={resolvedCollection?.className ?? className}\n      classNames={{\n        ...classNames,\n        ...resolvedCollection?.classNames,\n      }}\n      empty={resolvedEmpty}\n      loading={renderProps.loading}\n      loadingNode={renderProps.loadingNode}\n      footer={renderProps.footer}\n      overlay={renderProps.overlay}\n      layout={renderProps.layout}\n      scrollable={resolvedCollection?.scrollable}\n      wrapItems={resolvedCollection?.wrapItems}\n      measuredGrid={resolvedCollection?.measuredGrid}\n      itemsStyle={resolvedCollection?.itemsStyle}\n      itemStyle={resolvedCollection?.itemStyle}\n      selectedIds={selectedIds}\n      getItemId={getItemId}\n      itemDefinition={renderProps.itemDefinition}\n      renderItem={renderProps.renderItem}\n      getItemClassName={resolvedView?.getItemClassName}\n      onOpenItem={onOpenItem}\n      onSelectionChange={onSelectionChange}\n    />\n  );\n}\n","import type { DataExplorerViewShellProps } from './types';\nimport { cn } from './utils';\n\nexport function DataExplorerViewShell({\n  header,\n  footer,\n  overlay,\n  empty,\n  isEmpty = false,\n  children,\n  className,\n  classNames,\n}: DataExplorerViewShellProps) {\n  return (\n    <section\n      className={cn(\n        'relative flex min-h-0 flex-1 flex-col overflow-hidden',\n        classNames?.root,\n        className,\n      )}\n    >\n      {header ? (\n        <div className={cn('shrink-0', classNames?.header)}>{header}</div>\n      ) : null}\n\n      <div\n        className={cn(\n          'flex min-h-0 flex-1 flex-col overflow-hidden',\n          classNames?.body,\n        )}\n      >\n        {isEmpty && empty ? (\n          <div\n            className={cn(\n              'flex h-full items-center justify-center p-6 text-sm text-muted-foreground',\n              classNames?.empty,\n            )}\n          >\n            {empty}\n          </div>\n        ) : (\n          children\n        )}\n      </div>\n\n      {footer ? (\n        <div className={cn('shrink-0', classNames?.footer)}>{footer}</div>\n      ) : null}\n\n      {overlay ? (\n        <div className={cn('absolute inset-0', classNames?.overlay)}>{overlay}</div>\n      ) : null}\n    </section>\n  );\n}\n","import type { CSSProperties } from \"react\";\n\nimport { cn } from \"../base/utils\";\nimport type { DataExplorerViewTreeClassNames } from \"../data-explorer\";\nimport type { NavigationSidebarActiveVariant } from \"./types\";\n\nexport const unifiedRow =\n  \"gap-2 rounded-[var(--radius)] border border-transparent text-sm font-medium motion-reduce:transition-none\";\nexport const unifiedIcon =\n  \"size-[var(--monkeys-component-navigation-sidebar-icon-size,1.125rem)] shrink-0 text-inherit [&_svg]:size-full\";\nexport const unifiedInactive =\n  \"text-foreground hover:border-transparent hover:bg-[var(--navigation-internal-hover-background)] hover:text-[var(--navigation-internal-hover-foreground)]\";\nexport const unifiedSelected =\n  \"border-[var(--navigation-internal-selected-border)] bg-[var(--navigation-internal-selected-background)] text-[var(--navigation-internal-selected-foreground)] hover:border-[var(--navigation-internal-selected-border)] hover:bg-[var(--navigation-internal-selected-background)] hover:text-[var(--navigation-internal-selected-foreground)]\";\nexport const unifiedThemeDefaults =\n  \"[--navigation-internal-theme-selected-background:color-mix(in_srgb,hsl(var(--monkeys-color-primary,var(--primary)))_10%,transparent)] [--navigation-internal-theme-selected-foreground:hsl(var(--monkeys-color-primary,var(--primary)))] dark:[--navigation-internal-theme-selected-background:hsl(var(--monkeys-color-accent,var(--accent)))] dark:[--navigation-internal-theme-selected-foreground:hsl(var(--monkeys-color-foreground,var(--foreground)))]\";\n\nexport function unifiedStyle(\n  activeVariant?: NavigationSidebarActiveVariant,\n): CSSProperties {\n  const background = {\n    muted: \"hsl(var(--monkeys-color-accent,var(--accent)))\",\n    soft: \"color-mix(in srgb,hsl(var(--monkeys-color-primary,var(--primary))) 10%,transparent)\",\n    solid: \"hsl(var(--monkeys-color-primary,var(--primary)))\",\n    outline: \"hsl(var(--monkeys-color-background,var(--background)))\",\n  }[activeVariant ?? \"muted\"];\n  const foreground =\n    activeVariant === \"solid\"\n      ? \"hsl(var(--monkeys-color-primary-foreground,var(--primary-foreground)))\"\n      : \"hsl(var(--monkeys-color-foreground,var(--foreground)))\";\n  const border =\n    activeVariant === undefined || activeVariant === \"muted\"\n      ? \"transparent\"\n      : activeVariant === \"soft\"\n        ? \"color-mix(in srgb,hsl(var(--monkeys-color-primary,var(--primary))) 25%,transparent)\"\n        : activeVariant === \"outline\"\n          ? \"color-mix(in srgb,hsl(var(--monkeys-color-primary,var(--primary))) 55%,transparent)\"\n          : \"hsl(var(--monkeys-color-primary,var(--primary)))\";\n\n  return {\n    \"--navigation-internal-default-selected-background\": activeVariant === undefined\n      ? \"var(--navigation-internal-theme-selected-background)\"\n      : background,\n    \"--navigation-internal-default-selected-foreground\": activeVariant === undefined\n      ? \"var(--navigation-internal-theme-selected-foreground)\"\n      : foreground,\n    \"--navigation-internal-selected-background\":\n      \"var(--monkeys-component-navigation-sidebar-row-selected-background,var(--navigation-internal-default-selected-background))\",\n    \"--navigation-internal-selected-foreground\":\n      \"var(--monkeys-component-navigation-sidebar-row-selected-foreground,var(--navigation-internal-default-selected-foreground))\",\n    \"--navigation-internal-selected-border\": `var(--monkeys-component-navigation-sidebar-row-selected-border,${border})`,\n    \"--navigation-internal-hover-background\":\n      \"var(--monkeys-component-navigation-sidebar-row-hover-background,color-mix(in srgb,hsl(var(--monkeys-color-accent,var(--accent))) 65%,transparent))\",\n    \"--navigation-internal-hover-foreground\":\n      \"var(--monkeys-component-navigation-sidebar-row-hover-foreground,hsl(var(--monkeys-color-foreground,var(--foreground))))\",\n  } as CSSProperties;\n}\n\n/** Tree-local fallbacks preserve existing theme overrides without changing route styles. */\nconst treeStateVariables =\n  \"[--navigation-internal-selected-background:var(--monkeys-component-navigation-sidebar-row-selected-background,var(--monkeys-component-navigation-sidebar-tree-row-selected-background,var(--navigation-internal-default-selected-background)))] [--navigation-internal-selected-foreground:var(--monkeys-component-navigation-sidebar-row-selected-foreground,var(--monkeys-component-navigation-sidebar-tree-row-selected-foreground,var(--navigation-internal-default-selected-foreground)))] [--navigation-internal-hover-background:var(--monkeys-component-navigation-sidebar-row-hover-background,var(--monkeys-component-navigation-sidebar-tree-row-hover-background,color-mix(in_srgb,hsl(var(--monkeys-color-accent,var(--accent)))_65%,transparent)))] [--navigation-internal-hover-foreground:var(--monkeys-component-navigation-sidebar-row-hover-foreground,var(--monkeys-component-navigation-sidebar-tree-row-hover-foreground,hsl(var(--monkeys-color-foreground,var(--foreground)))))]\";\n\nconst selectedTreeNode =\n  \"aria-selected:border-[var(--navigation-internal-selected-border)] aria-selected:bg-[var(--navigation-internal-selected-background)] aria-selected:text-[var(--navigation-internal-selected-foreground)] aria-selected:hover:border-[var(--navigation-internal-selected-border)] aria-selected:hover:bg-[var(--navigation-internal-selected-background)] aria-selected:hover:text-[var(--navigation-internal-selected-foreground)]\";\nconst nestedControl =\n  \"rounded-[var(--monkeys-component-navigation-sidebar-action-radius,0.25rem)] text-inherit hover:bg-foreground/10 hover:text-inherit focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\";\n\nexport function unifiedTreeClassNames(\n  height: string,\n  padding: string,\n  overrides: DataExplorerViewTreeClassNames = {},\n): DataExplorerViewTreeClassNames {\n  const row = cn(unifiedRow, height, padding, unifiedInactive);\n  return {\n    ...overrides,\n    root: cn(treeStateVariables, \"space-y-0.5\", overrides.root),\n    group: cn(\n      \"space-y-0.5\",\n      // Indent row contents, keeping guide-free hover and selection full width.\n      \"[&>[role=treeitem]+[role=group]]:[--data-explorer-tree-group-indent:var(--monkeys-component-navigation-sidebar-tree-group-indent,1rem)]\",\n      overrides.group,\n    ),\n    groupHeaderButton: cn(\"h-auto\", row, overrides.groupHeaderButton),\n    nodeButton: cn(row, selectedTreeNode, overrides.nodeButton),\n    itemSelected: cn(unifiedSelected, overrides.itemSelected),\n    nodeIcon: cn(\n      unifiedIcon,\n      \"group-hover/tree-node:text-inherit\",\n      overrides.nodeIcon,\n    ),\n    nodeLabel: cn(\"font-medium\", overrides.nodeLabel),\n    nodeDescription: cn(\"text-inherit\", overrides.nodeDescription),\n    nodeDisabled: cn(\"opacity-50\", overrides.nodeDisabled),\n    groupActions: cn(\n      nestedControl,\n      \"order-2 size-5 p-0 group-focus-within/tree-group:opacity-100\",\n      overrides.groupActions,\n    ),\n    nodeActions: cn(\n      nestedControl,\n      \"order-2 size-5 p-0 group-focus-within/tree-node:opacity-100\",\n      overrides.nodeActions,\n    ),\n    nodeToggle: cn(nestedControl, \"order-1 empty:hidden\", overrides.nodeToggle),\n    expander: cn(nestedControl, \"order-1 empty:hidden\", overrides.expander),\n    nodeDragHandle: cn(nestedControl, overrides.nodeDragHandle),\n  };\n}\n","import * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport {\n  Fragment,\n  forwardRef,\n  useCallback,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState,\n  type ElementType,\n  type ForwardedRef,\n  type KeyboardEvent,\n  type MouseEvent,\n  type MutableRefObject,\n  type PointerEvent,\n  type ReactElement,\n  type ReactNode,\n  type RefAttributes,\n} from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\nimport {\n  DataExplorerViewTree,\n  type DataExplorerViewTreeClassNames,\n} from \"../data-explorer\";\nimport type {\n  NavigationSidebarActiveVariant,\n  NavigationSidebarAppearance,\n  NavigationSidebarCatalogItem,\n  NavigationSidebarCatalogProps,\n  NavigationSidebarCatalogSection,\n  NavigationSidebarClassNames,\n  NavigationSidebarCommonProps,\n  NavigationSidebarDisclosureRouteItem,\n  NavigationSidebarProps,\n  NavigationSidebarRouteChild,\n  NavigationSidebarRouteItem,\n  NavigationSidebarRouteProps,\n  NavigationSidebarStorage,\n  NavigationSidebarTreeProps,\n} from \"./types\";\nimport {\n  unifiedIcon,\n  unifiedInactive,\n  unifiedRow,\n  unifiedSelected,\n  unifiedStyle,\n  unifiedThemeDefaults,\n  unifiedTreeClassNames,\n} from \"./unified-appearance\";\n\ninterface LayoutBounds {\n  defaultWidth: number;\n  minWidth: number;\n  maxWidth: number;\n  collapsedWidth: number;\n  collapseThreshold: number;\n}\n\ninterface StoredLayout {\n  collapsed: boolean;\n  width: number;\n}\n\nfunction CollapseIcon({ collapsed }: { collapsed: boolean }) {\n  return (\n    <svg aria-hidden=\"true\" viewBox=\"0 0 20 20\" className=\"h-4 w-4\" fill=\"none\">\n      <path\n        d={\n          collapsed\n            ? \"M4 4.5h12M4 15.5h12M5 7.5 7.5 10 5 12.5M15 7.5 12.5 10l2.5 2.5\"\n            : \"M4 4.5h12M4 15.5h12M7.5 7.5 5 10l2.5 2.5M12.5 7.5 15 10l-2.5 2.5\"\n        }\n        stroke=\"currentColor\"\n        strokeWidth=\"1.6\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </svg>\n  );\n}\n\nfunction SearchIcon() {\n  return (\n    <svg aria-hidden=\"true\" viewBox=\"0 0 20 20\" className=\"h-4 w-4\" fill=\"none\">\n      <circle cx=\"8.5\" cy=\"8.5\" r=\"5\" stroke=\"currentColor\" strokeWidth=\"1.6\" />\n      <path\n        d=\"m12.2 12.2 3.3 3.3\"\n        stroke=\"currentColor\"\n        strokeWidth=\"1.6\"\n        strokeLinecap=\"round\"\n      />\n    </svg>\n  );\n}\n\nfunction ClearIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 20 20\"\n      className=\"h-3.5 w-3.5\"\n      fill=\"none\"\n    >\n      <path\n        d=\"m6 6 8 8m0-8-8 8\"\n        stroke=\"currentColor\"\n        strokeWidth=\"1.6\"\n        strokeLinecap=\"round\"\n      />\n    </svg>\n  );\n}\n\nfunction MoreIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 20 20\"\n      className=\"h-4 w-4\"\n      fill=\"currentColor\"\n    >\n      <circle cx=\"5\" cy=\"10\" r=\"1.2\" />\n      <circle cx=\"10\" cy=\"10\" r=\"1.2\" />\n      <circle cx=\"15\" cy=\"10\" r=\"1.2\" />\n    </svg>\n  );\n}\n\nfunction DisclosureIcon({ expanded }: { expanded: boolean }) {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 20 20\"\n      className={cn(\n        \"h-4 w-4 transition-transform motion-reduce:transition-none\",\n        expanded && \"rotate-180\",\n      )}\n      fill=\"none\"\n    >\n      <path\n        d=\"m6 8 4 4 4-4\"\n        stroke=\"currentColor\"\n        strokeWidth=\"1.6\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </svg>\n  );\n}\n\nfunction assignRef<T>(ref: ForwardedRef<T>, node: T | null) {\n  if (typeof ref === \"function\") {\n    ref(node);\n  } else if (ref) {\n    (ref as MutableRefObject<T | null>).current = node;\n  }\n}\n\nfunction requireFiniteNumber(name: string, value: number) {\n  if (!Number.isFinite(value)) {\n    throw new RangeError(`NavigationSidebar ${name} must be a finite number.`);\n  }\n}\n\nfunction resolveLayoutBounds(\n  props: NavigationSidebarCommonProps,\n): LayoutBounds {\n  const minWidth = props.minWidth ?? 180;\n  const maxWidth = props.maxWidth ?? 420;\n  const defaultWidth = props.defaultWidth ?? 256;\n  const collapsedWidth = props.collapsedWidth ?? 60;\n  const collapseThreshold = props.collapseThreshold ?? 140;\n\n  requireFiniteNumber(\"minWidth\", minWidth);\n  requireFiniteNumber(\"maxWidth\", maxWidth);\n  requireFiniteNumber(\"defaultWidth\", defaultWidth);\n  requireFiniteNumber(\"collapsedWidth\", collapsedWidth);\n  requireFiniteNumber(\"collapseThreshold\", collapseThreshold);\n\n  if (minWidth <= 0)\n    throw new RangeError(\n      \"NavigationSidebar minWidth must be greater than zero.\",\n    );\n  if (maxWidth < minWidth)\n    throw new RangeError(\n      \"NavigationSidebar maxWidth must be greater than or equal to minWidth.\",\n    );\n  if (collapsedWidth < 0)\n    throw new RangeError(\n      \"NavigationSidebar collapsedWidth cannot be negative.\",\n    );\n  if (collapseThreshold < 0)\n    throw new RangeError(\n      \"NavigationSidebar collapseThreshold cannot be negative.\",\n    );\n\n  return {\n    defaultWidth,\n    minWidth,\n    maxWidth,\n    collapsedWidth,\n    collapseThreshold,\n  };\n}\n\nfunction clampWidth(\n  width: number,\n  bounds: Pick<LayoutBounds, \"minWidth\" | \"maxWidth\">,\n) {\n  return Math.min(Math.max(width, bounds.minWidth), bounds.maxWidth);\n}\n\nfunction reportStorageError(\n  error: unknown,\n  onStorageError: ((error: unknown) => void) | undefined,\n) {\n  if (onStorageError) {\n    onStorageError(error);\n    return;\n  }\n  if (typeof console !== \"undefined\") {\n    console.warn(\"NavigationSidebar could not persist layout state.\", error);\n  }\n}\n\nfunction resolveStorage(storage: NavigationSidebarStorage | undefined) {\n  if (storage) return storage;\n  if (typeof window === \"undefined\") return undefined;\n  return window.localStorage;\n}\n\nfunction readStoredLayout(\n  props: NavigationSidebarCommonProps,\n  bounds: LayoutBounds,\n): StoredLayout {\n  const fallback = {\n    collapsed: props.defaultCollapsed ?? false,\n    width: clampWidth(bounds.defaultWidth, bounds),\n  };\n  if (!props.storageKey) return fallback;\n\n  const storage = resolveStorage(props.storage);\n  if (!storage) return fallback;\n\n  try {\n    const rawValue = storage.getItem(props.storageKey);\n    if (!rawValue) return fallback;\n    const parsedValue = JSON.parse(rawValue) as Partial<StoredLayout>;\n    return {\n      collapsed:\n        typeof parsedValue.collapsed === \"boolean\"\n          ? parsedValue.collapsed\n          : fallback.collapsed,\n      width:\n        typeof parsedValue.width === \"number\" &&\n        Number.isFinite(parsedValue.width)\n          ? clampWidth(parsedValue.width, bounds)\n          : fallback.width,\n    };\n  } catch (error) {\n    reportStorageError(error, props.onStorageError);\n    return fallback;\n  }\n}\n\nfunction getNodeTitle(label: ReactNode, explicitTitle: string | undefined) {\n  if (explicitTitle) return explicitTitle;\n  return typeof label === \"string\" ? label : undefined;\n}\n\nfunction activeVariantClassName(activeVariant: NavigationSidebarActiveVariant) {\n  if (activeVariant === \"solid\")\n    return \"border-primary bg-primary text-primary-foreground shadow-sm\";\n  if (activeVariant === \"outline\")\n    return \"border-primary/55 bg-background text-foreground ring-1 ring-primary/20\";\n  if (activeVariant === \"muted\")\n    return \"border-transparent bg-muted text-foreground\";\n  return \"border-primary/25 bg-primary/10 text-foreground\";\n}\n\nfunction resolveAppearance(\n  appearance: NavigationSidebarAppearance | undefined,\n) {\n  if (appearance?.preset !== undefined && appearance.preset !== \"unified\") {\n    throw new TypeError(\n      `Unknown NavigationSidebar preset \"${appearance.preset}\". Supported preset: unified.`,\n    );\n  }\n  const unified = appearance?.preset === \"unified\";\n  const density = appearance?.density ?? (unified ? \"compact\" : \"default\");\n  const surface = appearance?.surface ?? \"panel\";\n  const activeVariant =\n    appearance?.activeVariant ?? (unified ? \"muted\" : \"soft\");\n  return {\n    unified,\n    density,\n    surface,\n    activeVariant,\n    selected: unified ? unifiedSelected : activeVariantClassName(activeVariant),\n    inactive: unified\n      ? unifiedInactive\n      : \"text-muted-foreground hover:border-border/70 hover:bg-muted/60 hover:text-foreground\",\n    root: cn(\n      surface === \"plain\" && \"border-transparent bg-transparent shadow-none\",\n      surface === \"panel\" &&\n        \"border-border/70 bg-card text-card-foreground shadow-sm\",\n      surface === \"frosted\" &&\n        \"border-border/55 bg-card/80 text-card-foreground shadow-sm backdrop-blur-xl\",\n      surface === \"outlined\" &&\n        \"border-border bg-background text-foreground shadow-none\",\n      unified && \"rounded-[var(--radius)] shadow-none\",\n      unified && unifiedThemeDefaults,\n      unified &&\n        surface === \"panel\" &&\n        \"border-[var(--monkeys-component-navigation-sidebar-border,hsl(var(--monkeys-color-border,var(--border))))] bg-[var(--monkeys-component-navigation-sidebar-background,hsl(var(--monkeys-color-card,var(--card))))] text-foreground\",\n    ),\n    itemHeight:\n      density === \"compact\"\n        ? unified\n          ? \"min-h-[var(--monkeys-component-navigation-sidebar-row-height,2.5rem)]\"\n          : \"min-h-9\"\n        : density === \"comfortable\"\n          ? \"min-h-14\"\n          : \"min-h-11\",\n    itemPadding:\n      density === \"compact\"\n        ? unified\n          ? \"px-2 py-2\"\n          : \"px-2 py-1.5\"\n        : density === \"comfortable\"\n          ? \"px-3 py-3\"\n          : \"px-3 py-2\",\n    searchHeight:\n      density === \"compact\"\n        ? unified\n          ? \"h-[var(--monkeys-component-navigation-sidebar-row-height,2.5rem)]\"\n          : \"h-8\"\n        : density === \"comfortable\"\n          ? \"h-10\"\n          : \"h-9\",\n  };\n}\n\nconst navigationTreeRowHoverClassName =\n  \"hover:bg-[var(--monkeys-component-navigation-sidebar-tree-row-hover-background,hsl(var(--muted)))] hover:text-[var(--monkeys-component-navigation-sidebar-tree-row-hover-foreground,hsl(var(--foreground)))]\";\n\nconst navigationTreeRowSelectedClassName =\n  \"bg-[var(--monkeys-component-navigation-sidebar-tree-row-selected-background,hsl(var(--accent)))] text-[var(--monkeys-component-navigation-sidebar-tree-row-selected-foreground,hsl(var(--accent-foreground)))] hover:bg-[var(--monkeys-component-navigation-sidebar-tree-row-selected-background,hsl(var(--accent)))] hover:text-[var(--monkeys-component-navigation-sidebar-tree-row-selected-foreground,hsl(var(--accent-foreground)))]\";\n\nconst navigationTreeNestedControlClassName =\n  \"hover:!bg-transparent hover:!text-inherit focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\";\n\nfunction resolveNavigationTreeClassNames(\n  classNames: DataExplorerViewTreeClassNames | undefined,\n): DataExplorerViewTreeClassNames {\n  return {\n    ...classNames,\n    groupHeader: cn(navigationTreeRowHoverClassName, classNames?.groupHeader),\n    itemSelected: cn(\n      navigationTreeRowSelectedClassName,\n      classNames?.itemSelected,\n    ),\n    nodeButton: cn(\n      navigationTreeRowHoverClassName,\n      \"aria-selected:bg-[var(--monkeys-component-navigation-sidebar-tree-row-selected-background,hsl(var(--accent)))] aria-selected:text-[var(--monkeys-component-navigation-sidebar-tree-row-selected-foreground,hsl(var(--accent-foreground)))] aria-selected:hover:bg-[var(--monkeys-component-navigation-sidebar-tree-row-selected-background,hsl(var(--accent)))] aria-selected:hover:text-[var(--monkeys-component-navigation-sidebar-tree-row-selected-foreground,hsl(var(--accent-foreground)))]\",\n      classNames?.nodeButton,\n    ),\n    expander: cn(\n      navigationTreeNestedControlClassName,\n      classNames?.expander,\n    ),\n    nodeToggle: cn(\n      navigationTreeNestedControlClassName,\n      classNames?.nodeToggle,\n    ),\n    groupActions: cn(\n      navigationTreeNestedControlClassName,\n      classNames?.groupActions,\n    ),\n    nodeActions: cn(\n      navigationTreeNestedControlClassName,\n      classNames?.nodeActions,\n    ),\n    nodeDragHandle: cn(\n      navigationTreeNestedControlClassName,\n      classNames?.nodeDragHandle,\n    ),\n  };\n}\n\ninterface EntryButtonProps {\n  item: NavigationSidebarCatalogItem | NavigationSidebarRouteItem;\n  active: boolean;\n  collapsed: boolean;\n  itemAs?: ElementType;\n  appearance: ReturnType<typeof resolveAppearance>;\n  classNames?: NavigationSidebarClassNames;\n  mobile?: boolean;\n  embedded?: boolean;\n  onSelect?: () => void;\n  ariaControls?: string;\n  ariaExpanded?: boolean;\n  endIndicator?: ReactNode;\n}\n\nfunction entryClassName({\n  item,\n  active,\n  collapsed,\n  mobile,\n  embedded = false,\n  appearance,\n  classNames,\n  domClassName,\n}: {\n  item: NavigationSidebarCatalogItem | NavigationSidebarRouteItem;\n  active: boolean;\n  collapsed: boolean;\n  mobile: boolean;\n  embedded?: boolean;\n  appearance: ReturnType<typeof resolveAppearance>;\n  classNames?: NavigationSidebarClassNames;\n  domClassName?: string;\n}) {\n  return cn(\n    \"group/navigation-item relative flex w-full min-w-0 items-center gap-3 rounded-[var(--radius)] border border-transparent text-left text-sm outline-none transition-[background-color,border-color,color,box-shadow] focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n    appearance.itemHeight,\n    appearance.itemPadding,\n    appearance.unified && unifiedRow,\n    embedded\n      ? \"min-h-0 self-stretch border-0 bg-transparent text-inherit hover:bg-transparent hover:text-inherit\"\n      : active\n        ? appearance.selected\n        : appearance.inactive,\n    collapsed && !mobile && \"justify-center px-0\",\n    item.disabled && \"pointer-events-none opacity-50\",\n    classNames?.item,\n    active && classNames?.itemActive,\n    mobile && classNames?.mobileItem,\n    domClassName,\n    item.className,\n  );\n}\n\nfunction EntryContent({\n  item,\n  collapsed,\n  mobile,\n  classNames,\n  endIndicator,\n  appearance,\n}: {\n  item: NavigationSidebarCatalogItem | NavigationSidebarRouteItem;\n  collapsed: boolean;\n  mobile: boolean;\n  classNames?: NavigationSidebarClassNames;\n  endIndicator?: ReactNode;\n  appearance: ReturnType<typeof resolveAppearance>;\n}) {\n  return (\n    <>\n      {hasRenderableNode(item.icon) ? (\n        <span\n          className={cn(\n            \"flex size-5 shrink-0 items-center justify-center [&_svg]:size-full\",\n            appearance.unified && unifiedIcon,\n            classNames?.itemIcon,\n          )}\n          aria-hidden=\"true\"\n        >\n          {item.icon}\n        </span>\n      ) : null}\n      {mobile || !collapsed ? (\n        <span\n          className={cn(\n            \"flex min-w-0 flex-1 flex-col\",\n            classNames?.itemContent,\n          )}\n        >\n          <span\n            className={cn(\n              \"min-w-0 truncate font-semibold\",\n              appearance.unified && \"font-medium\",\n              classNames?.itemLabel,\n            )}\n          >\n            {item.label}\n          </span>\n          {hasRenderableNode(item.description) ? (\n            <span\n              className={cn(\n                \"mt-0.5 truncate text-xs font-normal\",\n                appearance.unified && \"text-inherit\",\n                classNames?.itemDescription,\n              )}\n            >\n              {item.description}\n            </span>\n          ) : null}\n        </span>\n      ) : null}\n      {(mobile || !collapsed) && hasRenderableNode(item.meta) ? (\n        <span\n          className={cn(\n            \"shrink-0 text-xs text-muted-foreground\",\n            classNames?.itemMeta,\n          )}\n        >\n          {item.meta}\n        </span>\n      ) : null}\n      {(mobile || !collapsed) && hasRenderableNode(item.endContent) ? (\n        <span className={cn(\"shrink-0\", classNames?.itemEndContent)}>\n          {item.endContent}\n        </span>\n      ) : null}\n      {(mobile || !collapsed) && hasRenderableNode(endIndicator) ? (\n        <span className=\"flex shrink-0 items-center justify-center\">\n          {endIndicator}\n        </span>\n      ) : null}\n    </>\n  );\n}\n\nfunction EntryButton({\n  item,\n  active,\n  collapsed,\n  itemAs,\n  appearance,\n  classNames,\n  mobile = false,\n  embedded = false,\n  onSelect,\n  ariaControls,\n  ariaExpanded,\n  endIndicator,\n}: EntryButtonProps) {\n  const ItemComponent = itemAs ?? (item.href ? \"a\" : \"button\");\n  const title = getNodeTitle(item.label, item.title);\n  const domProps = item.domProps ?? {};\n  const handleClick = (event: MouseEvent<HTMLElement>) => {\n    if (item.disabled) {\n      event.preventDefault();\n      return;\n    }\n    item.onClick?.(event);\n    onSelect?.();\n  };\n  const componentProps = {\n    ...domProps,\n    ...(item.to ? { to: item.to } : {}),\n    ...(item.href ? { href: item.href } : {}),\n    ...(ItemComponent === \"button\"\n      ? { type: \"button\", disabled: item.disabled }\n      : {}),\n    title,\n    \"aria-current\": active ? \"page\" : undefined,\n    \"aria-disabled\": item.disabled || undefined,\n    \"aria-controls\": ariaControls,\n    \"aria-expanded\": ariaExpanded,\n    tabIndex: item.disabled ? -1 : domProps.tabIndex,\n    onClick: handleClick,\n  };\n\n  return (\n    <ItemComponent\n      {...componentProps}\n      data-navigation-sidebar-item-id={item.id}\n      data-active={active ? \"true\" : \"false\"}\n      data-expanded={ariaExpanded === undefined ? undefined : String(ariaExpanded)}\n      className={entryClassName({\n        item,\n        active,\n        collapsed,\n        mobile,\n        embedded,\n        appearance,\n        classNames,\n        domClassName: domProps.className,\n      })}\n    >\n      <EntryContent\n        appearance={appearance}\n        item={item}\n        collapsed={collapsed}\n        mobile={mobile}\n        classNames={classNames}\n        endIndicator={endIndicator}\n      />\n    </ItemComponent>\n  );\n}\n\nfunction EntryPresentation({\n  item,\n  appearance,\n  classNames,\n}: {\n  item: NavigationSidebarRouteItem;\n  appearance: ReturnType<typeof resolveAppearance>;\n  classNames?: NavigationSidebarClassNames;\n}) {\n  const domProps = item.domProps ?? {};\n  return (\n    <div\n      {...domProps}\n      data-navigation-sidebar-item-id={item.id}\n      aria-disabled={item.disabled || undefined}\n      title={getNodeTitle(item.label, item.title)}\n      className={entryClassName({\n        item,\n        active: false,\n        collapsed: false,\n        mobile: true,\n        embedded: true,\n        appearance,\n        classNames,\n        domClassName: domProps.className,\n      })}\n    >\n      <EntryContent\n        appearance={appearance}\n        item={item}\n        collapsed={false}\n        mobile\n        classNames={classNames}\n      />\n    </div>\n  );\n}\n\nfunction routeRowClassName({\n  active,\n  appearance,\n}: {\n  active: boolean;\n  appearance: ReturnType<typeof resolveAppearance>;\n}) {\n  return cn(\n    \"flex w-full min-w-0 items-center gap-0.5 rounded-[var(--radius)] border border-transparent pr-1 text-sm transition-[background-color,border-color,color,box-shadow] motion-reduce:transition-none\",\n    appearance.itemHeight,\n    appearance.unified && unifiedRow,\n    active ? appearance.selected : appearance.inactive,\n  );\n}\n\nfunction filterCatalogItems(\n  items: NavigationSidebarCatalogItem[],\n  activeFilterId: string | undefined,\n) {\n  if (!activeFilterId) return items;\n  return items.filter(\n    (item) =>\n      !item.filterIds?.length || item.filterIds.includes(activeFilterId),\n  );\n}\n\nfunction CatalogContent({\n  props,\n  collapsed,\n  appearance,\n}: {\n  props: NavigationSidebarCatalogProps;\n  collapsed: boolean;\n  appearance: ReturnType<typeof resolveAppearance>;\n}) {\n  const {\n    items = [],\n    sections = [],\n    filters = [],\n    activeFilterId,\n    activeItemId,\n    onFilterSelect,\n    itemAs,\n    layout = \"single\",\n    empty,\n    ariaLabel,\n    classNames,\n  } = props;\n  const filteredItems = filterCatalogItems(items, activeFilterId);\n  const filteredSections = sections\n    .map((section) => ({\n      ...section,\n      items: filterCatalogItems(section.items, activeFilterId),\n    }))\n    .filter((section) => section.items.length > 0);\n  const hasItems = filteredItems.length > 0 || filteredSections.length > 0;\n\n  const filtersNode =\n    filters.length > 0 && !collapsed ? (\n      <div\n        role=\"group\"\n        className={cn(\n          layout === \"split\"\n            ? \"flex min-w-32 flex-col gap-1 border-r border-border/60 pr-2\"\n            : \"flex flex-wrap gap-1\",\n          classNames?.filterList,\n        )}\n        aria-label={ariaLabel ? `${ariaLabel} filters` : undefined}\n      >\n        {filters.map((filter) => {\n          const active = filter.id === activeFilterId;\n          return (\n            <button\n              key={filter.id}\n              type=\"button\"\n              title={\n                filter.title ??\n                (typeof filter.label === \"string\" ? filter.label : undefined)\n              }\n              aria-pressed={active}\n              disabled={filter.disabled}\n              className={cn(\n                \"inline-flex min-h-8 items-center gap-2 rounded-md px-2.5 text-xs font-medium text-muted-foreground outline-none transition-colors hover:bg-muted/60 hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n                active && \"bg-muted text-foreground\",\n                classNames?.filterItem,\n                active && classNames?.filterItemActive,\n              )}\n              onClick={() => onFilterSelect?.(filter)}\n            >\n              {hasRenderableNode(filter.icon) ? (\n                <span aria-hidden=\"true\">{filter.icon}</span>\n              ) : null}\n              <span className=\"truncate\">{filter.label}</span>\n            </button>\n          );\n        })}\n      </div>\n    ) : null;\n\n  const listNode = hasItems ? (\n    <div className={cn(\"min-w-0 flex-1\", classNames?.list)}>\n      {filteredItems.length > 0 ? (\n        <ul className=\"grid list-none gap-1 p-0\">\n          {filteredItems.map((item) => (\n            <li key={item.id}>\n              <EntryButton\n                item={item}\n                active={item.active ?? item.id === activeItemId}\n                collapsed={collapsed}\n                itemAs={itemAs}\n                appearance={appearance}\n                classNames={classNames}\n              />\n            </li>\n          ))}\n        </ul>\n      ) : null}\n      {filteredSections.map((section) => (\n        <section\n          key={section.id}\n          className={cn(\n            \"mt-3 first:mt-0\",\n            classNames?.section,\n            section.className,\n          )}\n        >\n          {!collapsed && hasRenderableNode(section.label) ? (\n            <div\n              className={cn(\n                \"mb-1 px-2 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground\",\n                classNames?.sectionLabel,\n                section.labelClassName,\n              )}\n            >\n              {section.label}\n            </div>\n          ) : null}\n          <ul className=\"grid list-none gap-1 p-0\">\n            {section.items.map((item) => (\n              <li key={item.id}>\n                <EntryButton\n                  item={item}\n                  active={item.active ?? item.id === activeItemId}\n                  collapsed={collapsed}\n                  itemAs={itemAs}\n                  appearance={appearance}\n                  classNames={classNames}\n                />\n              </li>\n            ))}\n          </ul>\n        </section>\n      ))}\n    </div>\n  ) : (\n    <div className=\"px-3 py-8 text-center text-sm text-muted-foreground\">\n      {empty}\n    </div>\n  );\n\n  return (\n    <nav\n      aria-label={ariaLabel}\n      className={cn(layout === \"split\" && !collapsed && \"flex min-w-0 gap-2\")}\n    >\n      {filtersNode}\n      {listNode}\n    </nav>\n  );\n}\n\nfunction ChildEntry({\n  child,\n  parent,\n  active,\n  interactive,\n  onSelect,\n  appearance,\n  classNames,\n  embedded = false,\n}: {\n  child: NavigationSidebarRouteChild;\n  parent: NavigationSidebarRouteItem;\n  active: boolean;\n  interactive: boolean;\n  onSelect?: (\n    child: NavigationSidebarRouteChild,\n    parent: NavigationSidebarRouteItem,\n  ) => void;\n  appearance: ReturnType<typeof resolveAppearance>;\n  classNames?: NavigationSidebarClassNames;\n  embedded?: boolean;\n}) {\n  const Component = interactive ? \"button\" : \"div\";\n  const domProps = child.domProps ?? {};\n  return (\n    <Component\n      {...domProps}\n      {...(interactive ? { type: \"button\" } : {})}\n      data-navigation-sidebar-child-id={child.id}\n      aria-current={interactive && active ? \"page\" : undefined}\n      aria-disabled={child.disabled || undefined}\n      title={getNodeTitle(child.label, child.title)}\n      disabled={interactive ? child.disabled : undefined}\n      className={cn(\n        \"flex w-full min-w-0 flex-1 items-center gap-3 rounded-[var(--radius)] border border-transparent text-left text-sm font-semibold outline-none transition-[background-color,border-color,color,box-shadow] focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n        appearance.itemHeight,\n        appearance.itemPadding,\n        appearance.unified && unifiedRow,\n        embedded\n          ? \"min-h-0 self-stretch border-0 bg-transparent text-inherit hover:bg-transparent hover:text-inherit\"\n          : active\n            ? appearance.selected\n            : appearance.inactive,\n        child.disabled && \"pointer-events-none opacity-50\",\n        classNames?.childItem,\n        active && classNames?.childItemActive,\n        domProps.className,\n        child.className,\n      )}\n      onClick={\n        interactive && !child.disabled\n          ? () => onSelect?.(child, parent)\n          : undefined\n      }\n    >\n      {hasRenderableNode(child.icon) ? (\n        <span\n          className={cn(\n            \"flex size-5 shrink-0 items-center justify-center [&_svg]:size-full\",\n            appearance.unified && unifiedIcon,\n          )}\n          aria-hidden=\"true\"\n        >\n          {child.icon}\n        </span>\n      ) : null}\n      <span className=\"min-w-0 truncate\">{child.label}</span>\n    </Component>\n  );\n}\n\nfunction RouteActions({\n  itemId,\n  actions,\n  kind,\n  className,\n  mobile = false,\n}: {\n  itemId: string;\n  actions: ReactNode;\n  kind: \"item\" | \"child\";\n  className?: string;\n  mobile?: boolean;\n}) {\n  if (!hasRenderableNode(actions)) return null;\n  return (\n    <div\n      data-navigation-sidebar-item-actions={\n        kind === \"item\" ? itemId : undefined\n      }\n      data-navigation-sidebar-child-actions={\n        kind === \"child\" ? itemId : undefined\n      }\n      data-navigation-sidebar-actions-mobile={mobile ? \"true\" : undefined}\n      className={cn(\n        \"ml-auto flex shrink-0 items-center gap-1 [&>button]:border-0 [&>button]:bg-transparent [&>button]:shadow-none [&>button:hover]:bg-muted\",\n        className,\n      )}\n    >\n      {actions}\n    </div>\n  );\n}\n\nfunction isDisclosureRouteItem(\n  item: NavigationSidebarRouteItem,\n): item is NavigationSidebarDisclosureRouteItem {\n  return item.interaction === \"disclosure\";\n}\n\nfunction validateRouteItems(routeItems: NavigationSidebarRouteItem[]) {\n  const itemIds = new Set<string>();\n  const childIds = new Set<string>();\n  const collapsibleItemIds = new Set<string>();\n\n  for (const item of routeItems) {\n    const itemId = item.id;\n    if (itemIds.has(itemId)) {\n      throw new RangeError(\n        `NavigationSidebar route item ids must be unique; received \"${itemId}\" more than once.`,\n      );\n    }\n    itemIds.add(itemId);\n\n    const disclosure = isDisclosureRouteItem(item);\n    if (disclosure) {\n      if (!item.children.length) {\n        throw new RangeError(\n          `NavigationSidebar disclosure item \"${item.id}\" must include at least one child.`,\n        );\n      }\n      if (\n        item.href !== undefined ||\n        item.to !== undefined ||\n        item.onClick !== undefined\n      ) {\n        throw new TypeError(\n          `NavigationSidebar disclosure item \"${itemId}\" cannot define href, to, or onClick.`,\n        );\n      }\n      collapsibleItemIds.add(item.id);\n    } else if (item.childrenPresentation === \"collapsible\") {\n      if (!item.children?.length) {\n        throw new RangeError(\n          `NavigationSidebar collapsible route item \"${item.id}\" must include at least one child.`,\n        );\n      }\n      collapsibleItemIds.add(item.id);\n    }\n\n    for (const child of item.children ?? []) {\n      if (childIds.has(child.id)) {\n        throw new RangeError(\n          `NavigationSidebar route child ids must be unique; received \"${child.id}\" more than once.`,\n        );\n      }\n      childIds.add(child.id);\n    }\n  }\n\n  return collapsibleItemIds;\n}\n\nfunction RouteChildrenToggle({\n  item,\n  expanded,\n  controls,\n  label,\n  onToggle,\n  classNames,\n}: {\n  item: NavigationSidebarRouteItem;\n  expanded: boolean;\n  controls: string;\n  label: string;\n  onToggle: () => void;\n  classNames?: NavigationSidebarClassNames;\n}) {\n  const itemLabel = typeof item.label === \"string\" ? item.label : item.id;\n  return (\n    <button\n      type=\"button\"\n      disabled={item.disabled}\n      aria-expanded={expanded}\n      aria-controls={controls}\n      aria-label={`${label}: ${itemLabel}`}\n      title={label}\n      data-navigation-sidebar-disclosure-trigger={item.id}\n      className={cn(\n        \"inline-flex h-8 w-7 shrink-0 items-center justify-center rounded-md border-0 bg-transparent text-muted-foreground shadow-none outline-none hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n        classNames?.childMenuTrigger,\n      )}\n      onClick={onToggle}\n    >\n      <DisclosureIcon expanded={expanded} />\n    </button>\n  );\n}\n\nfunction CollapsedChildMenu({\n  item,\n  activeChildId,\n  label,\n  onChildSelect,\n  classNames,\n  appearance,\n  triggerVariant = \"submenu\",\n  mobile = false,\n}: {\n  item: NavigationSidebarRouteItem;\n  activeChildId?: string;\n  label: string;\n  onChildSelect?: (\n    child: NavigationSidebarRouteChild,\n    parent: NavigationSidebarRouteItem,\n  ) => void;\n  classNames?: NavigationSidebarClassNames;\n  appearance?: ReturnType<typeof resolveAppearance>;\n  triggerVariant?: \"submenu\" | \"item\" | \"disclosure\";\n  mobile?: boolean;\n}) {\n  const enabledChildren = (item.children ?? []).filter(\n    (child) => !child.disabled,\n  );\n  if (!item.children?.length) return null;\n  if (\n    triggerVariant === \"submenu\" &&\n    (!onChildSelect || enabledChildren.length === 0)\n  )\n    return null;\n  const itemLabel = typeof item.label === \"string\" ? item.label : item.id;\n  const itemTriggerDisabled =\n    Boolean(item.disabled) || !onChildSelect || enabledChildren.length === 0;\n  const domProps = item.domProps ?? {};\n  return (\n    <DropdownMenu.Root>\n      <DropdownMenu.Trigger asChild>\n        {triggerVariant === \"item\" && appearance ? (\n          <button\n            {...domProps}\n            type=\"button\"\n            disabled={itemTriggerDisabled}\n            aria-label={`${label}: ${itemLabel}`}\n            title={label}\n            data-navigation-sidebar-item-id={item.id}\n            data-navigation-sidebar-disclosure-menu=\"true\"\n            className={entryClassName({\n              item,\n              active: false,\n              collapsed: !mobile,\n              mobile,\n              appearance,\n              classNames,\n              domClassName: domProps.className,\n            })}\n          >\n            <EntryContent\n              appearance={appearance}\n              item={item}\n              collapsed={!mobile}\n              mobile={mobile}\n              classNames={classNames}\n              endIndicator={mobile ? <DisclosureIcon expanded={false} /> : undefined}\n            />\n          </button>\n        ) : (\n          <button\n            type=\"button\"\n            disabled={\n              triggerVariant === \"disclosure\" ? itemTriggerDisabled : undefined\n            }\n            data-navigation-sidebar-disclosure-trigger={\n              triggerVariant === \"disclosure\" ? item.id : undefined\n            }\n            className={cn(\n              \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border-0 bg-transparent text-muted-foreground shadow-none outline-none hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n              triggerVariant === \"disclosure\" ? \"w-7\" : \"w-6\",\n              classNames?.childMenuTrigger,\n            )}\n            aria-label={`${label}: ${itemLabel}`}\n            title={label}\n          >\n            {triggerVariant === \"disclosure\" ? (\n              <DisclosureIcon expanded={false} />\n            ) : (\n              <MoreIcon />\n            )}\n          </button>\n        )}\n      </DropdownMenu.Trigger>\n      <DropdownMenu.Portal>\n        <DropdownMenu.Content\n          side=\"right\"\n          align=\"start\"\n          sideOffset={8}\n          className={cn(\n            \"z-50 min-w-40 rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md outline-none\",\n            classNames?.childMenuContent,\n          )}\n        >\n          {item.children?.map((child) => (\n            <DropdownMenu.Item\n              key={child.id}\n              disabled={child.disabled}\n              data-navigation-sidebar-child-id={child.id}\n              data-active={child.id === activeChildId ? \"true\" : \"false\"}\n              className={cn(\n                \"flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n                child.id === activeChildId &&\n                  \"bg-accent text-accent-foreground\",\n              )}\n              onSelect={() => onChildSelect?.(child, item)}\n            >\n              {hasRenderableNode(child.icon) ? (\n                <span aria-hidden=\"true\">{child.icon}</span>\n              ) : null}\n              <span className=\"truncate\">{child.label}</span>\n            </DropdownMenu.Item>\n          ))}\n        </DropdownMenu.Content>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Root>\n  );\n}\n\nfunction RouteContent({\n  props,\n  collapsed,\n  appearance,\n}: {\n  props: NavigationSidebarRouteProps;\n  collapsed: boolean;\n  appearance: ReturnType<typeof resolveAppearance>;\n}) {\n  const {\n    routeItems,\n    activeItemId,\n    activeChildId,\n    expandedItemIds,\n    defaultExpandedItemIds = [],\n    itemAs,\n    onItemSelect,\n    onChildSelect,\n    onExpandedItemIdsChange,\n    collapsedChildMenuLabel = \"Open submenu\",\n    disclosureLabel = \"Toggle submenu\",\n    ariaLabel,\n    classNames,\n  } = props;\n  const disclosureId = useId();\n  const collapsibleItemIds = useMemo(\n    () => validateRouteItems(routeItems),\n    [routeItems],\n  );\n  const [internalExpandedItemIds, setInternalExpandedItemIds] = useState(\n    () => defaultExpandedItemIds,\n  );\n  const isExpandedControlled = expandedItemIds !== undefined;\n  const resolvedExpandedItemIds =\n    expandedItemIds ?? internalExpandedItemIds;\n  const normalizedExpandedItemIds = useMemo(\n    () =>\n      resolvedExpandedItemIds.filter((itemId) =>\n        collapsibleItemIds.has(itemId),\n      ),\n    [collapsibleItemIds, resolvedExpandedItemIds],\n  );\n  const expandedItemIdSet = useMemo(\n    () => new Set(normalizedExpandedItemIds),\n    [normalizedExpandedItemIds],\n  );\n  const toggleItemExpanded = useCallback(\n    (item: NavigationSidebarRouteItem) => {\n      if (item.disabled || !collapsibleItemIds.has(item.id)) return;\n      const nextExpandedItemIds = expandedItemIdSet.has(item.id)\n        ? normalizedExpandedItemIds.filter((itemId) => itemId !== item.id)\n        : [...normalizedExpandedItemIds, item.id];\n      if (!isExpandedControlled) {\n        setInternalExpandedItemIds(nextExpandedItemIds);\n      }\n      onExpandedItemIdsChange?.(nextExpandedItemIds);\n    },\n    [\n      collapsibleItemIds,\n      expandedItemIdSet,\n      isExpandedControlled,\n      normalizedExpandedItemIds,\n      onExpandedItemIdsChange,\n    ],\n  );\n  return (\n    <nav aria-label={ariaLabel}>\n      <ul\n        className={cn(\n          \"grid list-none gap-2 p-0\",\n          appearance.unified && \"gap-0.5\",\n          classNames?.list,\n        )}\n      >\n        {routeItems.map((item, itemIndex) => {\n          const disclosure = isDisclosureRouteItem(item);\n          const active = !disclosure && item.id === activeItemId;\n          const hasChildren = Boolean(item.children?.length);\n          const childrenCollapsible = collapsibleItemIds.has(item.id);\n          const childrenExpanded =\n            !childrenCollapsible || expandedItemIdSet.has(item.id);\n          const showItemActions =\n            !collapsed && hasRenderableNode(item.actions);\n          const compoundItemRow =\n            (collapsed && hasChildren && Boolean(onChildSelect)) ||\n            (!collapsed && childrenCollapsible && !disclosure) ||\n            showItemActions;\n          const childListId = `${disclosureId}-route-children-${itemIndex}`;\n          return (\n            <li key={item.id} className=\"grid min-w-0 gap-1\">\n              {collapsed && disclosure ? (\n                <CollapsedChildMenu\n                  item={item}\n                  activeChildId={activeChildId}\n                  label={collapsedChildMenuLabel}\n                  onChildSelect={onChildSelect}\n                  classNames={classNames}\n                  appearance={appearance}\n                  triggerVariant=\"item\"\n                />\n              ) : (\n                <div\n                  data-navigation-sidebar-item-row={\n                    compoundItemRow ? item.id : undefined\n                  }\n                  data-active={compoundItemRow ? String(active) : undefined}\n                  className={\n                    compoundItemRow\n                      ? routeRowClassName({ active, appearance })\n                      : undefined\n                  }\n                >\n                  <EntryButton\n                    item={item}\n                    active={active}\n                    collapsed={collapsed}\n                    embedded={compoundItemRow}\n                    itemAs={disclosure ? \"button\" : itemAs}\n                    appearance={appearance}\n                    classNames={classNames}\n                    onSelect={\n                      disclosure\n                        ? () => toggleItemExpanded(item)\n                        : onItemSelect\n                          ? () => onItemSelect(item)\n                          : undefined\n                    }\n                    ariaControls={\n                      !collapsed && childrenCollapsible && disclosure\n                        ? childListId\n                        : undefined\n                    }\n                    ariaExpanded={\n                      !collapsed && childrenCollapsible && disclosure\n                        ? childrenExpanded\n                        : undefined\n                    }\n                    endIndicator={\n                      !collapsed && disclosure && !showItemActions ? (\n                        <DisclosureIcon expanded={childrenExpanded} />\n                      ) : undefined\n                    }\n                  />\n                  {showItemActions ? (\n                    <RouteActions\n                      itemId={item.id}\n                      actions={item.actions}\n                      kind=\"item\"\n                      className={classNames?.itemActions}\n                    />\n                  ) : null}\n                  {collapsed && onChildSelect ? (\n                    <CollapsedChildMenu\n                      item={item}\n                      activeChildId={activeChildId}\n                      label={collapsedChildMenuLabel}\n                      onChildSelect={onChildSelect}\n                      classNames={classNames}\n                    />\n                  ) : null}\n                  {!collapsed &&\n                  childrenCollapsible &&\n                  (!disclosure || showItemActions) ? (\n                    <RouteChildrenToggle\n                      item={item}\n                      expanded={childrenExpanded}\n                      controls={childListId}\n                      label={disclosureLabel}\n                      onToggle={() => toggleItemExpanded(item)}\n                      classNames={classNames}\n                    />\n                  ) : null}\n                </div>\n              )}\n              {!collapsed && hasChildren ? (\n                <ul\n                  id={childListId}\n                  hidden={!childrenExpanded}\n                  style={childrenExpanded ? undefined : { display: \"none\" }}\n                  className={cn(\n                    \"ml-5 grid list-none gap-0.5 border-l border-border/70 py-1 pl-3\",\n                    appearance.unified && \"border-border\",\n                    classNames?.childList,\n                  )}\n                >\n                  {item.children?.map((child) => {\n                    const hasChildActions = hasRenderableNode(child.actions);\n                    const childActive = child.id === activeChildId;\n                    const childEntry = (\n                      <ChildEntry\n                        child={child}\n                        parent={item}\n                        active={childActive}\n                        interactive={Boolean(onChildSelect)}\n                        onSelect={onChildSelect}\n                        appearance={appearance}\n                        classNames={classNames}\n                        embedded={hasChildActions}\n                      />\n                    );\n                    return (\n                      <li key={child.id}>\n                        {hasChildActions ? (\n                          <div\n                            data-navigation-sidebar-child-row={child.id}\n                            data-active={String(childActive)}\n                            className={routeRowClassName({\n                              active: childActive,\n                              appearance,\n                            })}\n                          >\n                            {childEntry}\n                            <RouteActions\n                              itemId={child.id}\n                              actions={child.actions}\n                              kind=\"child\"\n                              className={classNames?.childActions}\n                            />\n                          </div>\n                        ) : (\n                          childEntry\n                        )}\n                      </li>\n                    );\n                  })}\n                </ul>\n              ) : null}\n            </li>\n          );\n        })}\n      </ul>\n    </nav>\n  );\n}\n\nfunction flattenCatalogItems(\n  items: NavigationSidebarCatalogItem[],\n  sections: NavigationSidebarCatalogSection[],\n  activeFilterId: string | undefined,\n) {\n  return [\n    ...filterCatalogItems(items, activeFilterId),\n    ...sections.flatMap((section) =>\n      filterCatalogItems(section.items, activeFilterId),\n    ),\n  ];\n}\n\nfunction MobileNavigation({\n  props,\n  appearance,\n}: {\n  props: NavigationSidebarCatalogProps | NavigationSidebarRouteProps;\n  appearance: ReturnType<typeof resolveAppearance>;\n}) {\n  if (!props.mobile || props.mobile.mode !== \"horizontal\") return null;\n  const classNames = props.classNames;\n  const items =\n    props.kind === \"catalog\"\n      ? flattenCatalogItems(\n          props.items ?? [],\n          props.sections ?? [],\n          props.activeFilterId,\n        )\n      : props.routeItems;\n  return (\n    <nav\n      aria-label={props.ariaLabel}\n      className={cn(\n        \"flex gap-2 overflow-x-auto pb-1\",\n        classNames?.mobileNav,\n        props.mobile.className,\n      )}\n    >\n      {items.map((item) => {\n        const mobileClassNames = {\n          ...classNames,\n          mobileItem: cn(\n            classNames?.mobileItem,\n            props.mobile?.itemClassName,\n          ),\n        };\n        const routeItem =\n          props.kind === \"route\"\n            ? (item as NavigationSidebarRouteItem)\n            : undefined;\n        const showRouteActions =\n          routeItem !== undefined && hasRenderableNode(routeItem.actions);\n        if (props.kind === \"route\" && isDisclosureRouteItem(item)) {\n          return showRouteActions ? (\n            <div\n              key={item.id}\n              data-navigation-sidebar-item-row={item.id}\n              data-active=\"false\"\n              className={cn(\n                routeRowClassName({ active: false, appearance }),\n                \"shrink-0\",\n              )}\n            >\n              <EntryPresentation\n                item={item}\n                appearance={appearance}\n                classNames={mobileClassNames}\n              />\n              <RouteActions\n                itemId={item.id}\n                actions={item.actions}\n                kind=\"item\"\n                className={classNames?.itemActions}\n                mobile\n              />\n              <CollapsedChildMenu\n                item={item}\n                activeChildId={props.activeChildId}\n                label={props.collapsedChildMenuLabel ?? \"Open submenu\"}\n                onChildSelect={props.onChildSelect}\n                classNames={mobileClassNames}\n                appearance={appearance}\n                triggerVariant=\"disclosure\"\n                mobile\n              />\n            </div>\n          ) : (\n            <Fragment key={item.id}>\n              <CollapsedChildMenu\n                item={item}\n                activeChildId={props.activeChildId}\n                label={props.collapsedChildMenuLabel ?? \"Open submenu\"}\n                onChildSelect={props.onChildSelect}\n                classNames={mobileClassNames}\n                appearance={appearance}\n                triggerVariant=\"item\"\n                mobile\n              />\n            </Fragment>\n          );\n        }\n        const active =\n          props.kind === \"catalog\"\n            ? ((item as NavigationSidebarCatalogItem).active ??\n              item.id === props.activeItemId)\n            : item.id === props.activeItemId;\n        const entryButton = (\n          <EntryButton\n            item={item}\n            active={active}\n            collapsed={false}\n            embedded={showRouteActions}\n            itemAs={props.itemAs}\n            appearance={appearance}\n            classNames={mobileClassNames}\n            mobile\n            onSelect={\n              props.kind === \"route\" && props.onItemSelect\n                ? () =>\n                    props.onItemSelect?.(item as NavigationSidebarRouteItem)\n                : undefined\n            }\n          />\n        );\n        return showRouteActions && routeItem ? (\n          <div\n            key={item.id}\n            data-navigation-sidebar-item-row={item.id}\n            data-active={String(active)}\n            className={cn(\n              routeRowClassName({ active, appearance }),\n              \"shrink-0\",\n            )}\n          >\n            {entryButton}\n            <RouteActions\n              itemId={routeItem.id}\n              actions={routeItem.actions}\n              kind=\"item\"\n              className={classNames?.itemActions}\n              mobile\n            />\n          </div>\n        ) : (\n          <Fragment key={item.id}>{entryButton}</Fragment>\n        );\n      })}\n    </nav>\n  );\n}\n\nfunction NavigationSidebarInner<\n  TNodeSource = unknown,\n  TGroupSource = unknown,\n  TContext = unknown,\n>(\n  props: NavigationSidebarProps<TNodeSource, TGroupSource, TContext>,\n  ref: ForwardedRef<HTMLElement>,\n) {\n  const bounds = resolveLayoutBounds(props);\n  if (props.width !== undefined) requireFiniteNumber(\"width\", props.width);\n  const initialLayoutRef = useRef<StoredLayout | null>(null);\n  if (!initialLayoutRef.current) {\n    initialLayoutRef.current = readStoredLayout(props, bounds);\n  }\n\n  const sidebarRef = useRef<HTMLElement | null>(null);\n  const [internalCollapsed, setInternalCollapsed] = useState(\n    initialLayoutRef.current.collapsed,\n  );\n  const [internalWidth, setInternalWidth] = useState(\n    initialLayoutRef.current.width,\n  );\n  const [internalSearchValue, setInternalSearchValue] = useState(\n    props.search?.defaultValue ?? \"\",\n  );\n  const [isResizing, setIsResizing] = useState(false);\n  const resolvedCollapsed = props.collapsed ?? internalCollapsed;\n  const resolvedWidth = clampWidth(props.width ?? internalWidth, bounds);\n  const resolvedSearchValue = props.search?.value ?? internalSearchValue;\n  const isCollapsedControlled = props.collapsed !== undefined;\n  const isWidthControlled = props.width !== undefined;\n  const appearance = useMemo(\n    () => resolveAppearance(props.appearance),\n    [props.appearance],\n  );\n  const collapsible = props.collapsible ?? true;\n  const resizable = props.resizable ?? true;\n  const collapsePlacement = collapsible\n    ? (props.collapsePlacement ?? \"header\")\n    : \"none\";\n  const collapseLabel = props.collapseLabel ?? \"Collapse sidebar\";\n  const expandLabel = props.expandLabel ?? \"Expand sidebar\";\n  const resizeLabel = props.resizeLabel ?? \"Resize sidebar\";\n  const contentVisible = !resolvedCollapsed || bounds.collapsedWidth > 0;\n\n  const setSidebarRef = (node: HTMLElement | null) => {\n    sidebarRef.current = node;\n    assignRef(ref, node);\n  };\n\n  const updateCollapsed = useCallback(\n    (nextCollapsed: boolean) => {\n      if (!collapsible && nextCollapsed) return;\n      if (!isCollapsedControlled) setInternalCollapsed(nextCollapsed);\n      props.onCollapsedChange?.(nextCollapsed);\n    },\n    [collapsible, isCollapsedControlled, props.onCollapsedChange],\n  );\n\n  const updateWidth = useCallback(\n    (nextWidth: number) => {\n      const clampedWidth = clampWidth(nextWidth, bounds);\n      if (!isWidthControlled) setInternalWidth(clampedWidth);\n      props.onWidthChange?.(clampedWidth);\n    },\n    [bounds.maxWidth, bounds.minWidth, isWidthControlled, props.onWidthChange],\n  );\n\n  useEffect(() => {\n    if (!props.storageKey) return;\n    const storage = resolveStorage(props.storage);\n    if (!storage) return;\n    try {\n      storage.setItem(\n        props.storageKey,\n        JSON.stringify({\n          collapsed: resolvedCollapsed,\n          width: resolvedWidth,\n        }),\n      );\n    } catch (error) {\n      reportStorageError(error, props.onStorageError);\n    }\n  }, [\n    props.onStorageError,\n    props.storage,\n    props.storageKey,\n    resolvedCollapsed,\n    resolvedWidth,\n  ]);\n\n  useEffect(() => {\n    if (!isResizing) return undefined;\n    const previousCursor = document.body.style.cursor;\n    const previousUserSelect = document.body.style.userSelect;\n    const handlePointerMove = (event: globalThis.PointerEvent) => {\n      const sidebar = sidebarRef.current;\n      if (!sidebar) return;\n      const nextWidth = event.clientX - sidebar.getBoundingClientRect().left;\n      if (collapsible && nextWidth < bounds.collapseThreshold) {\n        updateCollapsed(true);\n        return;\n      }\n      updateCollapsed(false);\n      updateWidth(nextWidth);\n    };\n    const handlePointerUp = () => setIsResizing(false);\n    window.addEventListener(\"pointermove\", handlePointerMove);\n    window.addEventListener(\"pointerup\", handlePointerUp);\n    document.body.style.cursor = \"col-resize\";\n    document.body.style.userSelect = \"none\";\n    return () => {\n      window.removeEventListener(\"pointermove\", handlePointerMove);\n      window.removeEventListener(\"pointerup\", handlePointerUp);\n      document.body.style.cursor = previousCursor;\n      document.body.style.userSelect = previousUserSelect;\n    };\n  }, [\n    bounds.collapseThreshold,\n    collapsible,\n    isResizing,\n    updateCollapsed,\n    updateWidth,\n  ]);\n\n  const handleResizeKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n    if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") return;\n    event.preventDefault();\n    if (event.key === \"ArrowLeft\") {\n      const nextWidth = resolvedWidth - 24;\n      if (collapsible && nextWidth < bounds.collapseThreshold) {\n        updateCollapsed(true);\n      } else {\n        updateWidth(nextWidth);\n      }\n      return;\n    }\n    if (resolvedCollapsed) updateCollapsed(false);\n    updateWidth(Math.max(resolvedWidth + 24, bounds.minWidth));\n  };\n\n  const collapseButton = (extraClassName?: string) => (\n    <button\n      type=\"button\"\n      className={cn(\n        \"inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-md text-muted-foreground outline-none transition-colors hover:bg-muted/60 hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n        props.classNames?.collapseButton,\n        extraClassName,\n      )}\n      aria-label={resolvedCollapsed ? expandLabel : collapseLabel}\n      title={resolvedCollapsed ? expandLabel : collapseLabel}\n      aria-expanded={!resolvedCollapsed}\n      onClick={() => updateCollapsed(!resolvedCollapsed)}\n    >\n      <CollapseIcon collapsed={resolvedCollapsed} />\n    </button>\n  );\n\n  const hasHeader =\n    hasRenderableNode(props.title) ||\n    hasRenderableNode(props.headerLeading) ||\n    hasRenderableNode(props.headerActions) ||\n    collapsePlacement === \"header\";\n\n  const renderContent = () => {\n    if (props.kind === \"catalog\") {\n      return (\n        <CatalogContent\n          props={props}\n          collapsed={resolvedCollapsed}\n          appearance={appearance}\n        />\n      );\n    }\n    if (props.kind === \"route\") {\n      return (\n        <RouteContent\n          props={props}\n          collapsed={resolvedCollapsed}\n          appearance={appearance}\n        />\n      );\n    }\n    const treeProps = (\n      props as NavigationSidebarTreeProps<TNodeSource, TGroupSource, TContext>\n    ).tree;\n    return (\n      <DataExplorerViewTree\n        {...treeProps}\n        classNames={\n          appearance.unified\n            ? unifiedTreeClassNames(\n                appearance.itemHeight,\n                appearance.itemPadding,\n                treeProps.classNames,\n              )\n            : resolveNavigationTreeClassNames(treeProps.classNames)\n        }\n      />\n    );\n  };\n\n  return (\n    <>\n      <aside\n        {...props.rootDomProps}\n        ref={setSidebarRef}\n        aria-label={props.ariaLabel}\n        data-monkeys-component={props.dataComponent ?? \"navigation-sidebar\"}\n        data-navigation-sidebar-kind={props.kind}\n        data-navigation-sidebar-preset={props.appearance?.preset}\n        data-collapsed={resolvedCollapsed ? \"true\" : \"false\"}\n        className={cn(\n          \"relative flex h-full min-h-0 shrink-0 flex-col overflow-visible rounded-[calc(var(--radius)+0.25rem)] border transition-[width,opacity] duration-300 motion-reduce:transition-none\",\n          appearance.root,\n          props.desktopClassName,\n          props.classNames?.root,\n          props.rootDomProps?.className,\n          props.className,\n        )}\n        style={{\n          ...(appearance.unified ? unifiedStyle(props.appearance?.activeVariant) : {}),\n          ...props.style,\n          width:\n            props.widthMode === \"fill\"\n              ? undefined\n              : resolvedCollapsed\n                ? bounds.collapsedWidth\n                : resolvedWidth,\n          transition: isResizing ? \"none\" : props.style?.transition,\n        }}\n      >\n        {resizable ? (\n          <button\n            type=\"button\"\n            role=\"separator\"\n            aria-orientation=\"vertical\"\n            aria-valuemin={bounds.minWidth}\n            aria-valuemax={bounds.maxWidth}\n            aria-valuenow={resolvedWidth}\n            aria-label={resizeLabel}\n            title={resizeLabel}\n            className={cn(\n              \"group/resize absolute -right-1.5 bottom-0 top-0 z-40 w-3 cursor-col-resize bg-transparent outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n              props.classNames?.resizeHandle,\n            )}\n            onPointerDown={(event: PointerEvent<HTMLButtonElement>) => {\n              event.preventDefault();\n              setIsResizing(true);\n            }}\n            onKeyDown={handleResizeKeyDown}\n          >\n            <span className=\"pointer-events-none absolute bottom-3 right-1/2 top-3 w-px translate-x-1/2 rounded-full bg-border opacity-0 transition-opacity group-hover/resize:opacity-100 group-focus-visible/resize:opacity-100\" />\n          </button>\n        ) : null}\n\n        {collapsePlacement === \"edge\"\n          ? collapseButton(\n              \"absolute -right-3 top-1/2 z-50 -translate-y-1/2 border border-border bg-background shadow-sm\",\n            )\n          : null}\n\n        {contentVisible ? (\n          <div className=\"flex h-full min-h-0 w-full min-w-0 flex-col overflow-hidden\">\n            {hasHeader ? (\n              <div\n                className={cn(\n                  \"flex min-h-12 min-w-0 items-center gap-2 border-b border-border/60 px-3\",\n                  appearance.unified &&\n                    \"min-h-14 border-border px-[var(--monkeys-component-navigation-sidebar-content-inline-padding,var(--global-spacing,0.75rem))]\",\n                  resolvedCollapsed && \"justify-center px-1\",\n                  props.classNames?.header,\n                )}\n              >\n                {hasRenderableNode(props.headerLeading) ? (\n                  <span\n                    className={cn(\n                      \"flex shrink-0 items-center justify-center\",\n                      props.classNames?.headerLeading,\n                    )}\n                  >\n                    {props.headerLeading}\n                  </span>\n                ) : null}\n                {!resolvedCollapsed && hasRenderableNode(props.title) ? (\n                  <div\n                    className={cn(\n                      \"min-w-0 flex-1 truncate text-sm font-semibold\",\n                      props.classNames?.title,\n                    )}\n                  >\n                    {props.title}\n                  </div>\n                ) : null}\n                {!resolvedCollapsed &&\n                hasRenderableNode(props.headerActions) ? (\n                  <div\n                    className={cn(\n                      \"flex shrink-0 items-center gap-1\",\n                      props.classNames?.headerActions,\n                    )}\n                  >\n                    {props.headerActions}\n                  </div>\n                ) : null}\n                {collapsePlacement === \"header\" ? collapseButton() : null}\n              </div>\n            ) : null}\n\n            {!resolvedCollapsed && props.search ? (\n              <div\n                className={cn(\n                  \"px-[var(--monkeys-component-navigation-sidebar-content-inline-padding,var(--global-spacing,0.75rem))] pb-2 pt-3\",\n                  appearance.unified && \"pb-1\",\n                  props.classNames?.search,\n                )}\n              >\n                <div\n                  className={cn(\n                    \"flex items-center gap-2 rounded-md border border-input bg-[var(--monkeys-component-navigation-sidebar-search-background,hsl(var(--monkeys-color-control-surface)))] px-3 text-muted-foreground ring-offset-control-surface focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\n                    appearance.searchHeight,\n                    appearance.unified &&\n                      \"rounded-[var(--radius)] border-border bg-[var(--monkeys-component-navigation-sidebar-search-background,transparent)] px-2\",\n                  )}\n                >\n                  <span\n                    className={cn(\n                      \"flex shrink-0\",\n                      appearance.unified && unifiedIcon,\n                      props.classNames?.searchIcon,\n                    )}\n                    aria-hidden=\"true\"\n                  >\n                    {props.search.icon ?? <SearchIcon />}\n                  </span>\n                  <input\n                    type=\"search\"\n                    value={resolvedSearchValue}\n                    placeholder={props.search.placeholder}\n                    aria-label={props.search.ariaLabel}\n                    className={cn(\n                      \"min-w-0 flex-1 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground\",\n                      props.classNames?.searchInput,\n                    )}\n                    onChange={(event) => {\n                      const nextValue = event.currentTarget.value;\n                      if (props.search?.value === undefined)\n                        setInternalSearchValue(nextValue);\n                      props.search?.onValueChange?.(nextValue);\n                    }}\n                  />\n                  {resolvedSearchValue && props.search.clearLabel ? (\n                    <button\n                      type=\"button\"\n                      className={cn(\n                        \"inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n                        props.classNames?.searchClear,\n                      )}\n                      aria-label={props.search.clearLabel}\n                      title={props.search.clearLabel}\n                      onClick={() => {\n                        if (props.search?.value === undefined)\n                          setInternalSearchValue(\"\");\n                        props.search?.onValueChange?.(\"\");\n                      }}\n                    >\n                      <ClearIcon />\n                    </button>\n                  ) : null}\n                </div>\n              </div>\n            ) : null}\n\n            <div\n              className={cn(\n                \"min-h-0 flex-1 overflow-y-auto px-[var(--monkeys-component-navigation-sidebar-content-inline-padding,var(--global-spacing,0.75rem))] py-3\",\n                appearance.unified && props.search && \"pt-1\",\n                resolvedCollapsed && \"px-1.5\",\n                props.classNames?.content,\n              )}\n            >\n              {renderContent()}\n            </div>\n\n            {hasRenderableNode(props.footer) ||\n            collapsePlacement === \"footer\" ? (\n              <div\n                className={cn(\n                  \"flex shrink-0 items-center gap-2 border-t border-border/70 p-3\",\n                  appearance.unified && \"border-border\",\n                  resolvedCollapsed && \"justify-center px-1\",\n                  props.classNames?.footer,\n                )}\n              >\n                {!resolvedCollapsed && hasRenderableNode(props.footer) ? (\n                  <div className=\"min-w-0 flex-1\">{props.footer}</div>\n                ) : null}\n                {collapsePlacement === \"footer\" ? collapseButton() : null}\n              </div>\n            ) : null}\n          </div>\n        ) : null}\n      </aside>\n      {props.kind !== \"tree\" ? (\n        <MobileNavigation props={props} appearance={appearance} />\n      ) : null}\n    </>\n  );\n}\n\nexport type NavigationSidebarComponent = <\n  TNodeSource = unknown,\n  TGroupSource = unknown,\n  TContext = unknown,\n>(\n  props: NavigationSidebarProps<TNodeSource, TGroupSource, TContext> &\n    RefAttributes<HTMLElement>,\n) => ReactElement | null;\n\nexport const NavigationSidebar = forwardRef(\n  NavigationSidebarInner,\n) as NavigationSidebarComponent;\n","import {\n  forwardRef,\n  type CSSProperties,\n  type ElementType,\n  type MouseEvent,\n  type ReactNode,\n} from 'react';\n\nimport { cn } from '../base/utils';\nimport { NavigationSidebar } from '../navigation-sidebar';\nimport { BaseAssetIcon, BaseBadge } from '../base';\n\nexport interface WorkbenchResizableSidebarItem {\n  id: string;\n  label: ReactNode;\n  icon?: ReactNode;\n  iconName?: string;\n  count?: number;\n  active?: boolean;\n  disabled?: boolean;\n  href?: string;\n  to?: string;\n  title?: string;\n  endContent?: ReactNode;\n  className?: string;\n  onClick?: (event: MouseEvent<HTMLElement>) => void;\n}\n\nexport interface WorkbenchResizableSidebarSection {\n  id: string;\n  label?: ReactNode;\n  items: WorkbenchResizableSidebarItem[];\n  className?: string;\n  labelClassName?: string;\n}\n\nexport interface WorkbenchResizableSidebarClassNames {\n  root?: string;\n  header?: string;\n  title?: string;\n  collapseButton?: string;\n  list?: string;\n  section?: string;\n  sectionLabel?: string;\n  item?: string;\n  itemIcon?: string;\n  itemLabel?: string;\n  resizeHandle?: string;\n  mobileNav?: string;\n  mobileItem?: string;\n}\n\nexport interface WorkbenchResizableSidebarProps {\n  title?: ReactNode;\n  items: WorkbenchResizableSidebarItem[];\n  sections?: WorkbenchResizableSidebarSection[];\n  activeItemId?: string;\n  onItemSelect?: (value: { itemId: string }) => void;\n  itemAs?: ElementType;\n  collapsed?: boolean;\n  defaultCollapsed?: boolean;\n  onCollapsedChange?: (collapsed: boolean) => void;\n  width?: number;\n  onWidthChange?: (width: number) => void;\n  defaultWidth?: number;\n  minWidth?: number;\n  maxWidth?: number;\n  collapsedWidth?: number;\n  collapseThreshold?: number;\n  storageKey?: string;\n  resizable?: boolean;\n  collapsible?: boolean;\n  collapseLabel?: string;\n  expandLabel?: string;\n  resizeLabel?: string;\n  desktopClassName?: string;\n  mobileClassName?: string;\n  className?: string;\n  classNames?: WorkbenchResizableSidebarClassNames;\n  style?: CSSProperties;\n}\n\nexport const WorkbenchResizableSidebar = forwardRef<HTMLElement, WorkbenchResizableSidebarProps>(\n  function WorkbenchResizableSidebar(\n    {\n      title,\n      items,\n      sections = [],\n      activeItemId,\n      onItemSelect,\n      itemAs,\n      collapsed,\n      defaultCollapsed = false,\n      onCollapsedChange,\n      width,\n      onWidthChange,\n      defaultWidth = 220,\n      minWidth = 180,\n      maxWidth = 420,\n      collapsedWidth = 60,\n      collapseThreshold = 140,\n      storageKey,\n      resizable = true,\n      collapsible = true,\n      collapseLabel = 'Collapse sidebar',\n      expandLabel = 'Expand sidebar',\n      resizeLabel = 'Resize sidebar',\n      desktopClassName = 'hidden md:flex',\n      mobileClassName = 'flex md:hidden',\n      className,\n      classNames,\n      style,\n      ...domProps\n    },\n    ref,\n  ) {\n    const project = (item: WorkbenchResizableSidebarItem): WorkbenchResizableSidebarItem => ({\n      ...item,\n      icon: item.icon ?? (item.iconName ? <BaseAssetIcon icon={{ kind: 'lucide', name: item.iconName }} alt=\"\" className=\"h-4 w-4 rounded-none bg-transparent\" /> : undefined),\n      endContent: item.endContent ?? (item.count !== undefined ? <BaseBadge>{item.count}</BaseBadge> : undefined),\n      onClick: event => {\n        if (item.disabled) return;\n        item.onClick?.(event);\n        if (!event.defaultPrevented) onItemSelect?.({ itemId: item.id });\n      },\n    });\n    return (\n      <NavigationSidebar\n        ref={ref}\n        kind=\"catalog\"\n        title={title}\n        items={items.map(project)}\n        sections={sections.map(section => ({ ...section, items: section.items.map(project) }))}\n        activeItemId={activeItemId}\n        itemAs={itemAs}\n        collapsed={collapsed}\n        defaultCollapsed={defaultCollapsed}\n        onCollapsedChange={onCollapsedChange}\n        width={width}\n        onWidthChange={onWidthChange}\n        defaultWidth={defaultWidth}\n        minWidth={minWidth}\n        maxWidth={maxWidth}\n        collapsedWidth={collapsedWidth}\n        collapseThreshold={collapseThreshold}\n        storageKey={storageKey}\n        resizable={resizable}\n        collapsible={collapsible}\n        collapsePlacement=\"header\"\n        collapseLabel={collapseLabel}\n        expandLabel={expandLabel}\n        resizeLabel={resizeLabel}\n        desktopClassName={desktopClassName}\n        dataComponent=\"workbench-resizable-sidebar\"\n        rootDomProps={{ ...domProps, 'data-workbench-resizable-sidebar': '' }}\n        appearance={{\n          density: 'compact',\n          surface: 'panel',\n          activeVariant: 'soft',\n        }}\n        mobile={{ mode: 'horizontal', className: mobileClassName }}\n        className={cn('rounded-xl', className)}\n        classNames={{\n          root: classNames?.root,\n          header: cn('min-h-12 border-0', classNames?.header),\n          title: cn('text-[11px] font-medium uppercase text-muted-foreground', classNames?.title),\n          collapseButton: classNames?.collapseButton,\n          content: cn('space-y-2', classNames?.list),\n          section: classNames?.section,\n          sectionLabel: classNames?.sectionLabel,\n          item: cn('h-9 min-h-9 rounded-md px-2 text-[12px] shadow-none', classNames?.item),\n          itemIcon: cn('[&_svg]:h-3.5 [&_svg]:w-3.5', classNames?.itemIcon),\n          itemLabel: classNames?.itemLabel,\n          resizeHandle: classNames?.resizeHandle,\n          mobileNav: classNames?.mobileNav,\n          mobileItem: cn('h-9 min-h-9 shrink-0 px-3 text-xs', classNames?.mobileItem),\n        }}\n        style={style}\n      />\n    );\n  },\n);\n","import {\n  forwardRef,\n  type ComponentPropsWithoutRef,\n  type CSSProperties,\n  type ElementType,\n  type ReactNode,\n} from 'react';\n\nimport { cn } from '../base/utils';\n\nexport interface WorkbenchContentPaneClassNames {\n  root?: string;\n  header?: string;\n  body?: string;\n  footer?: string;\n}\n\nexport interface WorkbenchContentPaneBodyProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'className'> {\n  className?: string;\n}\n\nexport interface WorkbenchContentPaneProps extends Omit<ComponentPropsWithoutRef<'section'>, 'children' | 'className' | 'style'> {\n  as?: ElementType;\n  bodyAs?: ElementType;\n  header?: ReactNode;\n  footer?: ReactNode;\n  children?: ReactNode;\n  className?: string;\n  headerClassName?: string;\n  bodyClassName?: string;\n  footerClassName?: string;\n  bodyProps?: WorkbenchContentPaneBodyProps;\n  classNames?: WorkbenchContentPaneClassNames;\n  style?: CSSProperties;\n  [key: string]: any;\n}\n\nfunction shouldRenderBodyWrapper(props: {\n  header?: ReactNode;\n  footer?: ReactNode;\n  bodyAs?: ElementType;\n  bodyClassName?: string;\n  bodyProps?: WorkbenchContentPaneBodyProps;\n  classNames?: WorkbenchContentPaneClassNames;\n}) {\n  return Boolean(\n    props.header ||\n      props.footer ||\n      props.bodyAs ||\n      props.bodyClassName ||\n      props.bodyProps ||\n      props.classNames?.body,\n  );\n}\n\nexport const WorkbenchContentPane = forwardRef<HTMLElement, WorkbenchContentPaneProps>(\n  function WorkbenchContentPane(\n    {\n      as: Component = 'section',\n      bodyAs: BodyComponent = 'div',\n      header,\n      footer,\n      children,\n      className,\n      headerClassName,\n      bodyClassName,\n      footerClassName,\n      bodyProps,\n      classNames,\n      style,\n      ...props\n    },\n    ref,\n  ) {\n    const renderBodyWrapper = shouldRenderBodyWrapper({\n      header,\n      footer,\n      bodyAs: BodyComponent === 'div' ? undefined : BodyComponent,\n      bodyClassName,\n      bodyProps,\n      classNames,\n    });\n    const { className: bodyPropsClassName, ...restBodyProps } = bodyProps ?? {};\n\n    return (\n      <Component\n        ref={ref}\n        data-workbench-content-pane\n        className={cn(\n          'workbench-surface-subtle flex h-full min-w-0 flex-1 flex-col overflow-hidden rounded-lg border border-border/50 transition-all duration-300 dark:border-border/40',\n          classNames?.root,\n          className,\n        )}\n        style={style}\n        {...props}\n      >\n        {header ? (\n          <div className={cn('shrink-0 border-b border-border/40 px-4 py-3 dark:border-border/30', classNames?.header, headerClassName)}>\n            {header}\n          </div>\n        ) : null}\n        {renderBodyWrapper ? (\n          <BodyComponent\n            className={cn('min-h-0 flex-1 overflow-hidden', classNames?.body, bodyClassName, bodyPropsClassName)}\n            {...restBodyProps}\n          >\n            {children}\n          </BodyComponent>\n        ) : (\n          children\n        )}\n        {footer ? (\n          <div className={cn('shrink-0 border-t border-border/40 px-4 py-3 dark:border-border/30', classNames?.footer, footerClassName)}>\n            {footer}\n          </div>\n        ) : null}\n      </Component>\n    );\n  },\n);\n","import {\n  useEffect,\n  useLayoutEffect,\n  useRef,\n  useState,\n  type ReactNode,\n} from 'react';\n\nimport {\n  BaseButton,\n  BaseCheckbox,\n  BaseField,\n  BaseInput,\n  BaseSelect,\n  BaseSegmentedControl,\n} from '../base';\nimport { cn } from '../base/utils';\nimport type { WorkbenchGalleryColumn } from './workbenchGalleryUtils';\n\nexport interface WorkbenchGallerySettingsValue {\n  visibleColumnKeys?: string[];\n  galleryFieldKey?: string;\n  galleryLayout?: 'fixed' | 'masonry' | string;\n  galleryDensity?: 'compact' | 'comfortable' | 'detailed' | string;\n  galleryGridColumns?: number | 'auto' | string;\n  galleryBentoColumns?: 1 | 2 | 3 | number;\n  galleryDetailVisibility?: 'all' | 'limit' | string;\n  galleryDetailLimit?: number | string;\n  [key: string]: any;\n}\n\nexport interface WorkbenchGallerySettingsOption<Value extends string | number = string> {\n  value: Value;\n  label: ReactNode;\n  disabled?: boolean;\n}\n\nexport interface WorkbenchGallerySettingsLabels {\n  settingsButton?: ReactNode;\n  title?: ReactNode;\n  visibleColumns?: ReactNode;\n  coverField?: ReactNode;\n  autoDetect?: ReactNode;\n  cardDensity?: ReactNode;\n  cardColumns?: ReactNode;\n  detailColumns?: ReactNode;\n  fieldVisibility?: ReactNode;\n  fieldLimit?: ReactNode;\n  fieldLimitHint?: ReactNode;\n  layout?: ReactNode;\n  compact?: ReactNode;\n  comfortable?: ReactNode;\n  detailed?: ReactNode;\n  autoColumns?: ReactNode;\n  columns?: (count: number) => ReactNode;\n  bentoColumns?: (count: number) => ReactNode;\n  topLimit?: ReactNode;\n  allFields?: ReactNode;\n  adaptiveGrid?: ReactNode;\n  masonry?: ReactNode;\n}\n\nexport interface WorkbenchGallerySettingsPanelClassNames {\n  root?: string;\n  section?: string;\n  sectionHeader?: string;\n  columnList?: string;\n  columnItem?: string;\n  control?: string;\n}\n\nexport interface WorkbenchGallerySettingsPanelProps {\n  columns?: WorkbenchGalleryColumn[];\n  galleryFieldOptions?: WorkbenchGalleryColumn[];\n  value?: WorkbenchGallerySettingsValue;\n  onValueChange?: (\n    nextValue: WorkbenchGallerySettingsValue,\n    patch: Partial<WorkbenchGallerySettingsValue>,\n  ) => void;\n  labels?: WorkbenchGallerySettingsLabels;\n  densityOptions?: Array<WorkbenchGallerySettingsOption>;\n  gridColumnOptions?: Array<WorkbenchGallerySettingsOption<number | 'auto'>>;\n  bentoColumnOptions?: Array<WorkbenchGallerySettingsOption<number>>;\n  detailVisibilityOptions?: Array<WorkbenchGallerySettingsOption>;\n  layoutOptions?: Array<WorkbenchGallerySettingsOption>;\n  getColumnLabel?: (column: WorkbenchGalleryColumn) => ReactNode;\n  getColumnDescription?: (column: WorkbenchGalleryColumn) => ReactNode;\n  showColumnVisibility?: boolean;\n  showGalleryControls?: boolean;\n  showLayoutControl?: boolean;\n  showGridColumns?: boolean;\n  showDetailColumns?: boolean;\n  allowEmptyVisibleColumns?: boolean;\n  className?: string;\n  classNames?: WorkbenchGallerySettingsPanelClassNames;\n}\n\nexport interface WorkbenchGallerySettingsButtonClassNames {\n  root?: string;\n  trigger?: string;\n  popover?: string;\n  header?: string;\n  panel?: string;\n}\n\nexport interface WorkbenchGallerySettingsButtonProps extends WorkbenchGallerySettingsPanelProps {\n  open?: boolean;\n  defaultOpen?: boolean;\n  onOpenChange?: (open: boolean) => void;\n  triggerIcon?: ReactNode;\n  triggerLabel?: ReactNode;\n  triggerTitle?: string;\n  align?: 'start' | 'end';\n  popoverWidth?: number;\n  panelHeader?: ReactNode;\n  panelBefore?: ReactNode;\n  panelAfter?: ReactNode;\n  panelClassName?: string;\n  buttonClassName?: string;\n  popoverClassName?: string;\n  buttonClassNames?: WorkbenchGallerySettingsButtonClassNames;\n}\n\nconst defaultLabels: Required<WorkbenchGallerySettingsLabels> = {\n  settingsButton: 'Gallery settings',\n  title: 'Gallery settings',\n  visibleColumns: 'Visible fields',\n  coverField: 'Cover field',\n  autoDetect: 'Auto',\n  cardDensity: 'Card density',\n  cardColumns: 'Cards per row',\n  detailColumns: 'Detail columns',\n  fieldVisibility: 'Field visibility',\n  fieldLimit: 'Field limit',\n  fieldLimitHint: 'Uses current field order',\n  layout: 'Gallery layout',\n  compact: 'Compact',\n  comfortable: 'Standard',\n  detailed: 'Detailed',\n  autoColumns: 'Auto',\n  columns: (count) => `${count}`,\n  bentoColumns: (count) => `${count}`,\n  topLimit: 'First fields',\n  allFields: 'All fields',\n  adaptiveGrid: 'Grid',\n  masonry: 'Masonry',\n};\n\nfunction normalizeColumnKey(column: WorkbenchGalleryColumn | undefined) {\n  return String(column?.key || '');\n}\n\nfunction getDefaultColumnLabel(column: WorkbenchGalleryColumn) {\n  return column.label ?? column.key;\n}\n\nfunction getDefaultVisibleColumnKeys(columns: WorkbenchGalleryColumn[]) {\n  return columns\n    .filter((column) => normalizeColumnKey(column) && column.hidden !== true)\n    .map((column) => normalizeColumnKey(column));\n}\n\nfunction getResolvedVisibleColumnKeys({\n  columns,\n  visibleColumnKeys,\n  allowEmptyVisibleColumns,\n}: {\n  columns: WorkbenchGalleryColumn[];\n  visibleColumnKeys?: string[];\n  allowEmptyVisibleColumns?: boolean;\n}) {\n  const validKeys = new Set(columns.map(normalizeColumnKey).filter(Boolean));\n  const controlledKeys = Array.isArray(visibleColumnKeys)\n    ? visibleColumnKeys.filter((key) => validKeys.has(String(key)))\n    : null;\n\n  if (controlledKeys && (controlledKeys.length || allowEmptyVisibleColumns)) {\n    return controlledKeys;\n  }\n\n  return getDefaultVisibleColumnKeys(columns);\n}\n\nfunction getDefaultDensityOptions(\n  labels: Required<WorkbenchGallerySettingsLabels>,\n): Array<WorkbenchGallerySettingsOption> {\n  return [\n    { value: 'compact', label: labels.compact },\n    { value: 'comfortable', label: labels.comfortable },\n    { value: 'detailed', label: labels.detailed },\n  ];\n}\n\nfunction getDefaultGridColumnOptions(\n  labels: Required<WorkbenchGallerySettingsLabels>,\n): Array<WorkbenchGallerySettingsOption<number | 'auto'>> {\n  return [\n    { value: 'auto' as const, label: labels.autoColumns },\n    { value: 1, label: labels.columns(1) },\n    { value: 2, label: labels.columns(2) },\n    { value: 3, label: labels.columns(3) },\n    { value: 4, label: labels.columns(4) },\n  ];\n}\n\nfunction getDefaultBentoColumnOptions(\n  labels: Required<WorkbenchGallerySettingsLabels>,\n): Array<WorkbenchGallerySettingsOption<number>> {\n  return [\n    { value: 1, label: labels.bentoColumns(1) },\n    { value: 2, label: labels.bentoColumns(2) },\n    { value: 3, label: labels.bentoColumns(3) },\n  ];\n}\n\nfunction getDefaultDetailVisibilityOptions(\n  labels: Required<WorkbenchGallerySettingsLabels>,\n): Array<WorkbenchGallerySettingsOption> {\n  return [\n    { value: 'limit', label: labels.topLimit },\n    { value: 'all', label: labels.allFields },\n  ];\n}\n\nfunction getDefaultLayoutOptions(\n  labels: Required<WorkbenchGallerySettingsLabels>,\n): Array<WorkbenchGallerySettingsOption> {\n  return [\n    { value: 'fixed', label: labels.adaptiveGrid },\n    { value: 'masonry', label: labels.masonry },\n  ];\n}\n\nfunction normalizeOptionValue(value: string | number) {\n  return String(value);\n}\n\nfunction getOptionValue<Value extends string | number>(\n  options: Array<WorkbenchGallerySettingsOption<Value>>,\n  rawValue: unknown,\n  fallbackValue: Value,\n) {\n  const valueText = String(rawValue ?? fallbackValue);\n  return options.some((option) => String(option.value) === valueText)\n    ? valueText\n    : String(fallbackValue);\n}\n\nfunction parseNumberOption(value: string) {\n  const parsed = Number.parseInt(value, 10);\n  return Number.isFinite(parsed) ? parsed : 1;\n}\n\nconst compactSegmentedClassNames = {\n  root: 'flex w-full flex-wrap',\n  item: 'min-w-[58px] flex-1 px-2 text-[11px]',\n  label: 'text-[11px]',\n};\n\nexport function WorkbenchGallerySettingsPanel({\n  columns = [],\n  galleryFieldOptions,\n  value,\n  onValueChange,\n  labels,\n  densityOptions,\n  gridColumnOptions,\n  bentoColumnOptions,\n  detailVisibilityOptions,\n  layoutOptions,\n  getColumnLabel = getDefaultColumnLabel,\n  getColumnDescription,\n  showColumnVisibility = true,\n  showGalleryControls = true,\n  showLayoutControl = true,\n  showGridColumns = true,\n  showDetailColumns = true,\n  allowEmptyVisibleColumns = false,\n  className,\n  classNames,\n}: WorkbenchGallerySettingsPanelProps) {\n  const resolvedLabels = { ...defaultLabels, ...labels };\n  const resolvedValue = value || {};\n  const resolvedColumns = columns.filter((column) => normalizeColumnKey(column));\n  const resolvedVisibleColumnKeys = getResolvedVisibleColumnKeys({\n    columns: resolvedColumns,\n    visibleColumnKeys: resolvedValue.visibleColumnKeys,\n    allowEmptyVisibleColumns,\n  });\n  const visibleColumnKeySet = new Set(resolvedVisibleColumnKeys);\n  const resolvedGalleryFieldOptions = (galleryFieldOptions || resolvedColumns)\n    .filter((column) => normalizeColumnKey(column));\n  const resolvedDensityOptions = densityOptions || getDefaultDensityOptions(resolvedLabels);\n  const resolvedGridColumnOptions = gridColumnOptions || getDefaultGridColumnOptions(resolvedLabels);\n  const resolvedBentoColumnOptions = bentoColumnOptions || getDefaultBentoColumnOptions(resolvedLabels);\n  const resolvedDetailVisibilityOptions = detailVisibilityOptions || getDefaultDetailVisibilityOptions(resolvedLabels);\n  const resolvedLayoutOptions = layoutOptions || getDefaultLayoutOptions(resolvedLabels);\n  const canUpdate = typeof onValueChange === 'function';\n\n  const updateValue = (patch: Partial<WorkbenchGallerySettingsValue>) => {\n    onValueChange?.({ ...resolvedValue, ...patch }, patch);\n  };\n\n  const toggleColumn = (columnKey: string) => {\n    if (!canUpdate) return;\n    const nextVisibleSet = new Set(resolvedVisibleColumnKeys);\n    if (nextVisibleSet.has(columnKey)) {\n      nextVisibleSet.delete(columnKey);\n    } else {\n      nextVisibleSet.add(columnKey);\n    }\n\n    let nextVisibleColumnKeys = resolvedColumns\n      .map(normalizeColumnKey)\n      .filter((key) => nextVisibleSet.has(key));\n\n    if (!nextVisibleColumnKeys.length && !allowEmptyVisibleColumns) {\n      nextVisibleColumnKeys = [columnKey];\n    }\n\n    updateValue({ visibleColumnKeys: nextVisibleColumnKeys });\n  };\n\n  const shouldRenderColumnVisibility = showColumnVisibility && resolvedColumns.length > 0;\n  const shouldRenderGalleryControls = showGalleryControls;\n\n  return (\n    <div className={cn('space-y-3 text-foreground', classNames?.root, className)}>\n      {shouldRenderColumnVisibility ? (\n        <section className={cn('space-y-2', classNames?.section)}>\n          <div className={cn('text-[10px] font-medium uppercase tracking-wide text-muted-foreground', classNames?.sectionHeader)}>\n            {resolvedLabels.visibleColumns}\n          </div>\n          <div className={cn('max-h-[220px] space-y-1 overflow-y-auto pr-1', classNames?.columnList)}>\n            {resolvedColumns.map((column) => {\n              const columnKey = normalizeColumnKey(column);\n              return (\n                <BaseCheckbox\n                  key={`workbench-gallery-column-${columnKey}`}\n                  checked={visibleColumnKeySet.has(columnKey)}\n                  disabled={!canUpdate}\n                  label={getColumnLabel(column)}\n                  description={getColumnDescription?.(column)}\n                  onChange={() => toggleColumn(columnKey)}\n                  className={cn('flex w-full rounded-lg px-2 py-1.5 hover:bg-muted/50', classNames?.columnItem)}\n                />\n              );\n            })}\n          </div>\n        </section>\n      ) : null}\n\n      {shouldRenderGalleryControls ? (\n        <section className={cn('space-y-3 border-t border-border/60 pt-3', classNames?.section)}>\n          <BaseField\n            label={resolvedLabels.coverField}\n            classNames={{\n              label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n            }}\n          >\n            <BaseSelect\n              value={String(resolvedValue.galleryFieldKey || 'auto')}\n              options={[\n                { value: 'auto', label: resolvedLabels.autoDetect },\n                ...resolvedGalleryFieldOptions.map((column) => ({\n                  value: normalizeColumnKey(column),\n                  label: getColumnLabel(column),\n                })),\n              ]}\n              disabled={!canUpdate}\n              onChange={(event) => updateValue({ galleryFieldKey: event.currentTarget.value || 'auto' })}\n              className={classNames?.control}\n            />\n          </BaseField>\n\n          <BaseField\n            label={resolvedLabels.cardDensity}\n            classNames={{\n              label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n            }}\n          >\n            <BaseSegmentedControl\n              value={getOptionValue(resolvedDensityOptions, resolvedValue.galleryDensity, 'comfortable')}\n              options={resolvedDensityOptions.map((option) => ({\n                value: normalizeOptionValue(option.value),\n                label: option.label,\n                disabled: option.disabled,\n              }))}\n              onValueChange={(nextValue) => updateValue({ galleryDensity: nextValue })}\n              className={cn('w-full', classNames?.control)}\n              classNames={compactSegmentedClassNames}\n            />\n          </BaseField>\n\n          {showGridColumns ? (\n            <BaseField\n              label={resolvedLabels.cardColumns}\n              classNames={{\n                label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n              }}\n            >\n              <BaseSegmentedControl\n                value={getOptionValue(resolvedGridColumnOptions, resolvedValue.galleryGridColumns, 'auto')}\n                options={resolvedGridColumnOptions.map((option) => ({\n                  value: normalizeOptionValue(option.value),\n                  label: option.label,\n                  disabled: option.disabled,\n                }))}\n                onValueChange={(nextValue) => updateValue({\n                  galleryGridColumns: nextValue === 'auto' ? 'auto' : parseNumberOption(nextValue),\n                })}\n                className={cn('w-full', classNames?.control)}\n                classNames={compactSegmentedClassNames}\n              />\n            </BaseField>\n          ) : null}\n\n          {showDetailColumns ? (\n            <BaseField\n              label={resolvedLabels.detailColumns}\n              classNames={{\n                label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n              }}\n            >\n              <BaseSegmentedControl\n                value={getOptionValue(resolvedBentoColumnOptions, resolvedValue.galleryBentoColumns, 2)}\n                options={resolvedBentoColumnOptions.map((option) => ({\n                  value: normalizeOptionValue(option.value),\n                  label: option.label,\n                  disabled: option.disabled,\n                }))}\n                onValueChange={(nextValue) => updateValue({ galleryBentoColumns: parseNumberOption(nextValue) })}\n                className={cn('w-full', classNames?.control)}\n                classNames={compactSegmentedClassNames}\n              />\n            </BaseField>\n          ) : null}\n\n          <BaseField\n            label={resolvedLabels.fieldVisibility}\n            classNames={{\n              label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n            }}\n          >\n            <BaseSegmentedControl\n              value={getOptionValue(resolvedDetailVisibilityOptions, resolvedValue.galleryDetailVisibility, 'limit')}\n              options={resolvedDetailVisibilityOptions.map((option) => ({\n                value: normalizeOptionValue(option.value),\n                label: option.label,\n                disabled: option.disabled,\n              }))}\n              onValueChange={(nextValue) => updateValue({ galleryDetailVisibility: nextValue })}\n              className={cn('w-full', classNames?.control)}\n              classNames={compactSegmentedClassNames}\n            />\n          </BaseField>\n\n          {resolvedValue.galleryDetailVisibility !== 'all' ? (\n            <BaseField\n              label={resolvedLabels.fieldLimit}\n              description={resolvedLabels.fieldLimitHint}\n              classNames={{\n                label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n                description: 'text-[10px]',\n              }}\n            >\n              <BaseInput\n                type=\"number\"\n                min={1}\n                step={1}\n                value={String(resolvedValue.galleryDetailLimit || 4)}\n                disabled={!canUpdate}\n                onChange={(event) => updateValue({ galleryDetailLimit: event.currentTarget.value })}\n                className={classNames?.control}\n              />\n            </BaseField>\n          ) : null}\n\n          {showLayoutControl ? (\n            <BaseField\n              label={resolvedLabels.layout}\n              classNames={{\n                label: 'text-[10px] uppercase tracking-wide text-muted-foreground',\n              }}\n            >\n              <BaseSegmentedControl\n                value={getOptionValue(resolvedLayoutOptions, resolvedValue.galleryLayout, 'fixed')}\n                options={resolvedLayoutOptions.map((option) => ({\n                  value: normalizeOptionValue(option.value),\n                  label: option.label,\n                  disabled: option.disabled,\n                }))}\n                onValueChange={(nextValue) => updateValue({ galleryLayout: nextValue })}\n                className={cn('w-full', classNames?.control)}\n                classNames={compactSegmentedClassNames}\n              />\n            </BaseField>\n          ) : null}\n        </section>\n      ) : null}\n    </div>\n  );\n}\n\nexport function WorkbenchGallerySettingsButton({\n  open,\n  defaultOpen = false,\n  onOpenChange,\n  triggerIcon,\n  triggerLabel,\n  triggerTitle,\n  align = 'end',\n  popoverWidth = 320,\n  panelHeader,\n  panelBefore,\n  panelAfter,\n  panelClassName,\n  buttonClassName,\n  popoverClassName,\n  buttonClassNames,\n  labels,\n  className,\n  classNames,\n  ...panelProps\n}: WorkbenchGallerySettingsButtonProps) {\n  const resolvedLabels = { ...defaultLabels, ...labels };\n  const rootRef = useRef<HTMLDivElement | null>(null);\n  const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n  const [popoverStyle, setPopoverStyle] = useState<{\n    left?: number;\n    top?: number;\n    width?: number;\n    maxHeight?: string;\n  }>({});\n  const isControlled = open !== undefined;\n  const isOpen = isControlled ? Boolean(open) : uncontrolledOpen;\n\n  const setOpen = (nextOpen: boolean) => {\n    if (!isControlled) {\n      setUncontrolledOpen(nextOpen);\n    }\n    onOpenChange?.(nextOpen);\n  };\n\n  useLayoutEffect(() => {\n    if (!isOpen) return undefined;\n\n    const updatePopoverPosition = () => {\n      const triggerRect = rootRef.current?.getBoundingClientRect();\n      if (!triggerRect || typeof window === 'undefined') return;\n\n      const viewportPadding = 12;\n      const availableWidth = Math.max(window.innerWidth - viewportPadding * 2, 0);\n      const resolvedWidth = Math.min(popoverWidth, availableWidth || popoverWidth);\n      const preferredLeft = align === 'start'\n        ? triggerRect.left\n        : triggerRect.right - resolvedWidth;\n      const left = Math.min(\n        Math.max(preferredLeft, viewportPadding),\n        Math.max(window.innerWidth - resolvedWidth - viewportPadding, viewportPadding),\n      );\n      const top = Math.min(\n        triggerRect.bottom + 8,\n        Math.max(window.innerHeight - 80, viewportPadding),\n      );\n\n      setPopoverStyle({\n        left,\n        top,\n        width: resolvedWidth,\n        maxHeight: `calc(100vh - ${Math.round(top + viewportPadding)}px)`,\n      });\n    };\n    const handlePointerDown = (event: PointerEvent) => {\n      if (!rootRef.current?.contains(event.target as Node)) {\n        setOpen(false);\n      }\n    };\n    const handleKeyDown = (event: KeyboardEvent) => {\n      if (event.key === 'Escape') setOpen(false);\n    };\n\n    updatePopoverPosition();\n    window.addEventListener('resize', updatePopoverPosition);\n    window.addEventListener('scroll', updatePopoverPosition, true);\n    window.addEventListener('pointerdown', handlePointerDown);\n    window.addEventListener('keydown', handleKeyDown);\n    return () => {\n      window.removeEventListener('resize', updatePopoverPosition);\n      window.removeEventListener('scroll', updatePopoverPosition, true);\n      window.removeEventListener('pointerdown', handlePointerDown);\n      window.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [align, isOpen, popoverWidth]);\n\n  const resolvedTriggerLabel = triggerLabel ?? resolvedLabels.settingsButton;\n  const resolvedPanelHeader = panelHeader ?? resolvedLabels.title;\n\n  return (\n    <div ref={rootRef} className={cn('relative inline-flex', buttonClassNames?.root, className)}>\n      <BaseButton\n        icon={triggerIcon}\n        label={resolvedTriggerLabel}\n        title={triggerTitle || (typeof resolvedTriggerLabel === 'string' ? resolvedTriggerLabel : undefined)}\n        iconOnly={Boolean(triggerIcon)}\n        active={isOpen}\n        tone=\"muted\"\n        aria-haspopup=\"dialog\"\n        aria-expanded={isOpen}\n        className={cn(buttonClassNames?.trigger, buttonClassName)}\n        onClick={() => setOpen(!isOpen)}\n      />\n\n      {isOpen ? (\n        <div\n          role=\"dialog\"\n          aria-label={typeof resolvedPanelHeader === 'string' ? resolvedPanelHeader : undefined}\n          className={cn(\n            'fixed z-50 overflow-y-auto rounded-xl border border-border bg-card p-3 text-foreground shadow-lg',\n            align === 'start' ? 'origin-top-left' : 'origin-top-right',\n            buttonClassNames?.popover,\n            popoverClassName,\n          )}\n          style={popoverStyle}\n        >\n          {resolvedPanelHeader ? (\n            <div className={cn('mb-3 text-[11px] font-medium text-foreground', buttonClassNames?.header)}>\n              {resolvedPanelHeader}\n            </div>\n          ) : null}\n          {panelBefore}\n          <WorkbenchGallerySettingsPanel\n            {...panelProps}\n            labels={resolvedLabels}\n            className={cn(buttonClassNames?.panel, panelClassName)}\n            classNames={classNames}\n          />\n          {panelAfter}\n        </div>\n      ) : null}\n    </div>\n  );\n}\n","import {\n  forwardRef,\n  useEffect,\n  useRef,\n  useState,\n  type ComponentPropsWithoutRef,\n  type ElementType,\n  type ReactNode,\n} from 'react';\n\nimport { cn } from '../base/utils';\nimport {\n  WorkbenchGallerySettingsButton,\n  type WorkbenchGallerySettingsButtonProps,\n} from './WorkbenchGallerySettings';\n\nexport interface WorkbenchContentToolbarViewModeOption {\n  value: string;\n  label: ReactNode;\n  icon?: ReactNode;\n  disabled?: boolean;\n}\n\nexport interface WorkbenchContentToolbarClassNames {\n  root?: string;\n  start?: string;\n  end?: string;\n  viewModeRoot?: string;\n  viewModeTrigger?: string;\n  viewModeMenu?: string;\n  viewModeItem?: string;\n  settings?: string;\n}\n\nexport interface WorkbenchContentToolbarProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'className'> {\n  as?: ElementType;\n  children?: ReactNode;\n  end?: ReactNode;\n  viewMode?: string;\n  viewModeOptions?: WorkbenchContentToolbarViewModeOption[];\n  onViewModeChange?: (nextValue: string, option: WorkbenchContentToolbarViewModeOption) => void;\n  gallerySettings?: WorkbenchGallerySettingsButtonProps | false;\n  gallerySettingsPlacement?: 'start' | 'end';\n  className?: string;\n  startClassName?: string;\n  endClassName?: string;\n  classNames?: WorkbenchContentToolbarClassNames;\n  [key: string]: any;\n}\n\nfunction TableViewIcon() {\n  return (\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" className=\"h-3.5 w-3.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n      <rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"2\" />\n      <path d=\"M3 10h18M9 4v16\" />\n    </svg>\n  );\n}\n\nfunction GalleryViewIcon() {\n  return (\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" className=\"h-3.5 w-3.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n      <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1.5\" />\n      <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1.5\" />\n      <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1.5\" />\n      <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" rx=\"1.5\" />\n    </svg>\n  );\n}\n\nfunction SettingsIcon() {\n  return (\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" className=\"h-3.5 w-3.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n      <path d=\"M20 7h-9M7 7H4M14 17H4M20 17h-3\" />\n      <circle cx=\"9\" cy=\"7\" r=\"2\" />\n      <circle cx=\"16\" cy=\"17\" r=\"2\" />\n    </svg>\n  );\n}\n\nfunction ChevronDownIcon({ open }: { open: boolean }) {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className={cn('h-3 w-3 opacity-55 transition-transform', open && 'rotate-180')}\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"m6 9 6 6 6-6\" />\n    </svg>\n  );\n}\n\nconst defaultViewModeOptions: WorkbenchContentToolbarViewModeOption[] = [\n  { value: 'list', label: 'Table view', icon: <TableViewIcon /> },\n  { value: 'gallery', label: 'Gallery view', icon: <GalleryViewIcon /> },\n];\n\nfunction getViewModeOptionIcon(option: WorkbenchContentToolbarViewModeOption) {\n  if (option.icon !== undefined) return option.icon;\n  if (option.value === 'list' || option.value === 'table') return <TableViewIcon />;\n  if (option.value === 'gallery') return <GalleryViewIcon />;\n  return null;\n}\n\nfunction getSettingsTriggerLabel(settings: WorkbenchGallerySettingsButtonProps) {\n  return settings.triggerLabel ?? settings.labels?.settingsButton ?? 'Settings';\n}\n\nfunction WorkbenchContentToolbarViewModeControl({\n  value,\n  options,\n  onValueChange,\n  classNames,\n}: {\n  value?: string;\n  options: WorkbenchContentToolbarViewModeOption[];\n  onValueChange?: (nextValue: string, option: WorkbenchContentToolbarViewModeOption) => void;\n  classNames?: WorkbenchContentToolbarClassNames;\n}) {\n  const rootRef = useRef<HTMLDivElement | null>(null);\n  const [open, setOpen] = useState(false);\n  const activeOption = options.find((option) => option.value === value) || options.find((option) => !option.disabled) || options[0];\n  const activeIcon = activeOption ? getViewModeOptionIcon(activeOption) : null;\n\n  useEffect(() => {\n    if (!open) return undefined;\n\n    const handlePointerDown = (event: PointerEvent) => {\n      if (!rootRef.current?.contains(event.target as Node)) {\n        setOpen(false);\n      }\n    };\n    const handleKeyDown = (event: KeyboardEvent) => {\n      if (event.key === 'Escape') setOpen(false);\n    };\n\n    window.addEventListener('pointerdown', handlePointerDown);\n    window.addEventListener('keydown', handleKeyDown);\n    return () => {\n      window.removeEventListener('pointerdown', handlePointerDown);\n      window.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [open]);\n\n  if (!activeOption) return null;\n\n  return (\n    <div ref={rootRef} className={cn('relative inline-flex', classNames?.viewModeRoot)}>\n      <button\n        type=\"button\"\n        aria-haspopup=\"listbox\"\n        aria-expanded={open}\n        className={cn(\n          'inline-flex h-7 min-w-0 items-center justify-center gap-1.5 rounded-md border border-border/70 bg-card px-2 text-xs font-medium text-foreground shadow-none transition-colors hover:bg-muted/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/25',\n          classNames?.viewModeTrigger,\n        )}\n        onClick={() => setOpen((current) => !current)}\n      >\n        {activeIcon ? (\n          <span className=\"inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center text-muted-foreground\">\n            {activeIcon}\n          </span>\n        ) : null}\n        <span className=\"min-w-0 truncate\">{activeOption.label}</span>\n        <ChevronDownIcon open={open} />\n      </button>\n\n      {open ? (\n        <div\n          role=\"listbox\"\n          className={cn(\n            'absolute left-0 top-full z-50 mt-2 min-w-[160px] overflow-hidden rounded-xl border border-border/60 bg-card/95 p-1.5 text-xs text-foreground shadow-lg backdrop-blur-xl',\n            classNames?.viewModeMenu,\n          )}\n        >\n          {options.map((option) => {\n            const selected = option.value === activeOption.value;\n            const optionIcon = getViewModeOptionIcon(option);\n            return (\n              <button\n                key={option.value}\n                type=\"button\"\n                role=\"option\"\n                aria-selected={selected}\n                disabled={option.disabled}\n                className={cn(\n                  'flex min-h-8 w-full items-center gap-2 rounded-lg px-2.5 py-1.5 text-left text-xs font-medium text-muted-foreground transition-colors hover:bg-muted/55 hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50',\n                  selected && 'bg-muted/60 text-foreground',\n                  classNames?.viewModeItem,\n                )}\n                onClick={() => {\n                  if (option.disabled) return;\n                  onValueChange?.(option.value, option);\n                  setOpen(false);\n                }}\n              >\n                {optionIcon ? (\n                  <span className=\"inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center\">\n                    {optionIcon}\n                  </span>\n                ) : null}\n                <span className=\"min-w-0 truncate\">{option.label}</span>\n              </button>\n            );\n          })}\n        </div>\n      ) : null}\n    </div>\n  );\n}\n\nexport const WorkbenchContentToolbar = forwardRef<HTMLElement, WorkbenchContentToolbarProps>(\n  function WorkbenchContentToolbar(\n    {\n      as: Component = 'div',\n      children,\n      end,\n      viewMode,\n      viewModeOptions,\n      onViewModeChange,\n      gallerySettings,\n      gallerySettingsPlacement = 'start',\n      className,\n      startClassName,\n      endClassName,\n      classNames,\n      ...props\n    },\n    ref,\n  ) {\n    const resolvedViewModeOptions = viewModeOptions || (viewMode ? defaultViewModeOptions : []);\n    const resolvedGallerySettings = gallerySettings && typeof gallerySettings === 'object' ? gallerySettings : null;\n    const shouldRenderViewMode = Boolean(resolvedViewModeOptions.length);\n    const shouldRenderSettings = Boolean(resolvedGallerySettings);\n    const shouldRenderSettingsInStart = shouldRenderSettings && gallerySettingsPlacement !== 'end';\n    const shouldRenderSettingsInEnd = shouldRenderSettings && gallerySettingsPlacement === 'end';\n    const shouldRenderStart = shouldRenderViewMode || shouldRenderSettingsInStart || Boolean(children);\n    const shouldRenderEnd = Boolean(end) || shouldRenderSettingsInEnd;\n\n    return (\n      <Component\n        ref={ref}\n        data-workbench-content-toolbar\n        className={cn(\n          'flex min-h-[46px] shrink-0 flex-col gap-2 border-b border-border/60 px-4 py-2 md:flex-row md:items-center md:justify-between',\n          classNames?.root,\n          className,\n        )}\n        {...props}\n      >\n        {shouldRenderStart ? (\n          <div className={cn('flex flex-wrap items-center gap-2', classNames?.start, startClassName)}>\n            {shouldRenderViewMode ? (\n              <WorkbenchContentToolbarViewModeControl\n                value={viewMode}\n                options={resolvedViewModeOptions}\n                onValueChange={onViewModeChange}\n                classNames={classNames}\n              />\n            ) : null}\n            {shouldRenderSettingsInStart && resolvedGallerySettings ? (\n              <WorkbenchGallerySettingsButton\n                align=\"end\"\n                triggerIcon={<SettingsIcon />}\n                triggerLabel={getSettingsTriggerLabel(resolvedGallerySettings)}\n                {...resolvedGallerySettings}\n                buttonClassName={cn(\n                  '!h-7 !w-7 !min-h-0 !rounded-md !p-0 text-xs',\n                  classNames?.settings,\n                  resolvedGallerySettings.buttonClassName,\n                )}\n              />\n            ) : null}\n            {children}\n          </div>\n        ) : null}\n        {shouldRenderEnd ? (\n          <div className={cn('flex shrink-0 items-center gap-2', classNames?.end, endClassName)}>\n            {end}\n            {shouldRenderSettingsInEnd && resolvedGallerySettings ? (\n              <WorkbenchGallerySettingsButton\n                align=\"end\"\n                triggerIcon={<SettingsIcon />}\n                triggerLabel={getSettingsTriggerLabel(resolvedGallerySettings)}\n                {...resolvedGallerySettings}\n                buttonClassName={cn(\n                  '!h-7 !w-7 !min-h-0 !rounded-md !p-0 text-xs',\n                  classNames?.settings,\n                  resolvedGallerySettings.buttonClassName,\n                )}\n              />\n            ) : null}\n          </div>\n        ) : null}\n      </Component>\n    );\n  },\n);\n","import {\n  Children,\n  forwardRef,\n  isValidElement,\n  type ComponentPropsWithoutRef,\n  type CSSProperties,\n  type ElementType,\n  type ReactNode,\n} from 'react';\n\nimport { BaseDescriptionList } from '../base';\nimport { cn } from '../base/utils';\n\nexport interface WorkbenchDetailSidebarClassNames {\n  root?: string;\n  header?: string;\n  body?: string;\n  footer?: string;\n  resizeHandle?: string;\n  autoBody?: string;\n  section?: string;\n  sectionHeader?: string;\n  sectionTitle?: string;\n  sectionDescription?: string;\n  descriptionList?: string;\n  descriptionListItem?: string;\n  descriptionListTerm?: string;\n  descriptionListValue?: string;\n  fieldLabel?: string;\n  fieldLabelIcon?: string;\n  fieldValue?: string;\n  mediaValue?: string;\n  mediaImage?: string;\n  mediaCaption?: string;\n  emptyState?: string;\n}\n\nexport interface WorkbenchDetailSidebarBodyProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'className'> {\n  className?: string;\n}\n\nexport interface WorkbenchDetailSidebarField<Row = any> {\n  key: string;\n  label?: ReactNode;\n  labelIcon?: ReactNode | ElementType;\n  icon?: ReactNode | ElementType;\n  renderType?: string;\n  value?: ReactNode | ((record: Row | null | undefined, field: WorkbenchDetailSidebarField<Row>) => ReactNode);\n  description?: ReactNode;\n  hidden?: boolean | ((field: WorkbenchDetailSidebarField<Row>, record: Row | null | undefined) => boolean);\n  emptyValue?: ReactNode;\n  [key: string]: any;\n}\n\nexport interface WorkbenchDetailSidebarSection<Row = any> {\n  id?: string;\n  title?: ReactNode;\n  description?: ReactNode;\n  fields?: WorkbenchDetailSidebarField<Row>[];\n  columns?: 1 | 2 | 3;\n  hidden?: boolean | ((section: WorkbenchDetailSidebarSection<Row>, record: Row | null | undefined) => boolean);\n  emptyState?: ReactNode;\n  [key: string]: any;\n}\n\nexport interface WorkbenchDetailSidebarRenderContext<Row = any> {\n  field: WorkbenchDetailSidebarField<Row>;\n  fieldIndex: number;\n  section: WorkbenchDetailSidebarSection<Row>;\n  sectionIndex: number;\n  record: Row | null | undefined;\n}\n\nexport interface WorkbenchDetailSidebarProps<Row = any> extends Omit<ComponentPropsWithoutRef<'aside'>, 'children' | 'className' | 'style'> {\n  as?: ElementType;\n  bodyAs?: ElementType;\n  open?: boolean;\n  width?: number | string;\n  header?: ReactNode;\n  footer?: ReactNode;\n  resizeHandle?: ReactNode;\n  children?: ReactNode;\n  record?: Row | null;\n  fields?: WorkbenchDetailSidebarField<Row>[];\n  sections?: WorkbenchDetailSidebarSection<Row>[];\n  fieldColumns?: 1 | 2 | 3;\n  emptyValue?: ReactNode;\n  emptyState?: ReactNode;\n  getFieldValue?: (\n    field: WorkbenchDetailSidebarField<Row>,\n    record: Row | null | undefined,\n    context: WorkbenchDetailSidebarRenderContext<Row>,\n  ) => unknown;\n  renderFieldValue?: (\n    field: WorkbenchDetailSidebarField<Row>,\n    record: Row | null | undefined,\n    context: WorkbenchDetailSidebarRenderContext<Row>,\n  ) => ReactNode;\n  formatFieldValue?: (\n    value: unknown,\n    context: WorkbenchDetailSidebarRenderContext<Row>,\n  ) => ReactNode;\n  formatFieldLabel?: (\n    label: ReactNode,\n    context: Omit<WorkbenchDetailSidebarRenderContext<Row>, 'fieldIndex'> & {\n      field: WorkbenchDetailSidebarField<Row>;\n      fieldIndex?: number;\n    },\n  ) => ReactNode;\n  className?: string;\n  headerClassName?: string;\n  bodyClassName?: string;\n  footerClassName?: string;\n  resizeHandleClassName?: string;\n  bodyProps?: WorkbenchDetailSidebarBodyProps;\n  classNames?: WorkbenchDetailSidebarClassNames;\n  style?: CSSProperties;\n  [key: string]: any;\n}\n\nfunction shouldRenderBodyWrapper(props: {\n  header?: ReactNode;\n  footer?: ReactNode;\n  bodyAs?: ElementType;\n  bodyClassName?: string;\n  bodyProps?: WorkbenchDetailSidebarBodyProps;\n  classNames?: WorkbenchDetailSidebarClassNames;\n}) {\n  return Boolean(\n    props.header ||\n      props.footer ||\n      props.bodyAs ||\n      props.bodyClassName ||\n      props.bodyProps ||\n      props.classNames?.body,\n  );\n}\n\nfunction hasRenderableChildren(children: ReactNode): boolean {\n  if (children === null || children === undefined || typeof children === 'boolean') return false;\n  if (typeof children === 'string') return children.trim().length > 0;\n  if (Array.isArray(children)) return children.some(hasRenderableChildren);\n\n  const childList = Children.toArray(children);\n  if (!childList.length) return false;\n\n  return childList.some((child) => (typeof child === 'string' ? child.trim().length > 0 : true));\n}\n\nfunction resolveWidthStyle(open: boolean | undefined, width: number | string | undefined) {\n  if (width === undefined) return {};\n  if (open === undefined) return { width };\n\n  return {\n    width: open ? width : 0,\n    opacity: open ? 1 : 0,\n  };\n}\n\nfunction getFallbackFieldLabel(field: WorkbenchDetailSidebarField) {\n  return field.label ?? field.key;\n}\n\nfunction getObjectDisplayValue(value: Record<string, any>) {\n  const displayKeys = ['text', 'label', 'title', 'display', 'value', 'recordId'];\n\n  for (const key of displayKeys) {\n    if (!Object.prototype.hasOwnProperty.call(value, key)) continue;\n\n    const displayValue = value[key];\n    if (displayValue !== null && displayValue !== undefined && displayValue !== '') {\n      return displayValue;\n    }\n  }\n\n  return undefined;\n}\n\nfunction isEmptyDetailValue(value: unknown) {\n  return value === null || value === undefined || value === '';\n}\n\nfunction isPlainDisplayValue(value: ReactNode) {\n  return ['string', 'number', 'boolean'].includes(typeof value);\n}\n\nfunction getMediaDisplayData(value: unknown) {\n  if (!value) return null;\n\n  if (typeof value === 'string') {\n    const isDataImage = value.startsWith('data:image/');\n    const isImageUrl = /\\.(avif|gif|jpe?g|png|svg|webp)(\\?.*)?$/i.test(value);\n    return isDataImage || isImageUrl ? { src: value } : null;\n  }\n\n  if (typeof value !== 'object' || isValidElement(value)) return null;\n\n  const media = value as Record<string, any>;\n  const src = media.src || media.url || media.thumbnail || media.preview || media.image;\n\n  return src\n    ? {\n      src: String(src),\n      alt: media.alt || media.label || media.title || '',\n      caption: media.caption || media.description || media.label || media.title,\n    }\n    : null;\n}\n\nfunction shouldRenderAsMedia(field: WorkbenchDetailSidebarField | undefined, value: unknown) {\n  const renderType = String(field?.renderType || '').toLowerCase();\n  return ['image', 'media', 'preview', 'thumbnail'].includes(renderType) || Boolean(getMediaDisplayData(value));\n}\n\nfunction renderMaybeFieldIcon(icon: ReactNode | ElementType | undefined, className?: string) {\n  if (!icon) {\n    return (\n      <span className={cn('relative inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center', className)}>\n        <span className=\"absolute inset-0 rounded-full border border-primary/25 bg-primary/10\" />\n        <span className=\"h-1.5 w-1.5 rounded-full bg-primary\" />\n      </span>\n    );\n  }\n\n  if (typeof icon === 'string' || typeof icon === 'number') {\n    return (\n      <span className={cn('inline-flex h-3.5 min-w-3.5 shrink-0 items-center justify-center rounded-sm text-[10px] font-semibold text-primary', className)}>\n        {icon}\n      </span>\n    );\n  }\n\n  if (typeof icon === 'boolean') return null;\n\n  if (isValidElement(icon)) return icon;\n\n  const IconComponent = icon as ElementType;\n  return <IconComponent className={cn('h-3.5 w-3.5 shrink-0 text-primary', className)} />;\n}\n\nfunction renderDetailFieldLabel<Row>(\n  label: ReactNode,\n  field: WorkbenchDetailSidebarField<Row>,\n  classNames?: WorkbenchDetailSidebarClassNames,\n) {\n  return (\n    <span className={cn('inline-flex min-w-0 items-center gap-1.5 text-[11px] font-semibold text-foreground', classNames?.fieldLabel)}>\n      {renderMaybeFieldIcon(field.labelIcon || field.icon, classNames?.fieldLabelIcon)}\n      <span className=\"min-w-0 truncate\">{label}</span>\n    </span>\n  );\n}\n\nfunction WorkbenchDetailSidebarMediaValue({\n  media,\n  classNames,\n}: {\n  media: NonNullable<ReturnType<typeof getMediaDisplayData>>;\n  classNames?: WorkbenchDetailSidebarClassNames;\n}) {\n  return (\n    <div className={cn('grid gap-2', classNames?.mediaValue)}>\n      <div className=\"overflow-hidden rounded-md border border-border/55 bg-muted/20 dark:border-border/45 dark:bg-muted/10\">\n        <img\n          src={media.src}\n          alt={String(media.alt || '')}\n          className={cn('block aspect-[16/9] w-full object-cover', classNames?.mediaImage)}\n        />\n      </div>\n      {media.caption ? (\n        <div className={cn('truncate text-[11px] leading-4 text-muted-foreground', classNames?.mediaCaption)}>\n          {media.caption}\n        </div>\n      ) : null}\n    </div>\n  );\n}\n\nfunction getDefaultDetailDisplayValue(\n  value: unknown,\n  emptyValue: ReactNode,\n  field?: WorkbenchDetailSidebarField,\n  classNames?: WorkbenchDetailSidebarClassNames,\n): ReactNode {\n  if (isEmptyDetailValue(value)) return emptyValue;\n  if (isValidElement(value)) return value;\n  if (shouldRenderAsMedia(field, value)) {\n    const media = getMediaDisplayData(value);\n    if (media) return <WorkbenchDetailSidebarMediaValue media={media} classNames={classNames} />;\n  }\n  if (Array.isArray(value)) {\n    const parts: ReactNode[] = value\n      .map((item) => getDefaultDetailDisplayValue(item, '', undefined, classNames))\n      .filter((item) => !isEmptyDetailValue(item));\n\n    if (!parts.length) return emptyValue;\n    if (parts.every(isPlainDisplayValue)) return parts.map(String).join(' · ');\n\n    return (\n      <span className=\"inline-flex flex-wrap items-center gap-1\">\n        {parts.map((part, index) => (\n          <span key={index} className=\"inline-flex items-center gap-1\">\n            {index > 0 ? <span className=\"text-muted-foreground\">·</span> : null}\n            {isPlainDisplayValue(part) ? String(part) : part}\n          </span>\n        ))}\n      </span>\n    );\n  }\n  if (typeof value === 'object') {\n    const displayValue = getObjectDisplayValue(value as Record<string, any>);\n    return displayValue === undefined\n      ? emptyValue\n      : getDefaultDetailDisplayValue(displayValue, emptyValue, field, classNames);\n  }\n  return String(value);\n}\n\nfunction getDefaultFieldValue<Row>(\n  field: WorkbenchDetailSidebarField<Row>,\n  record: Row | null | undefined,\n) {\n  if (Object.prototype.hasOwnProperty.call(field, 'value')) {\n    return typeof field.value === 'function'\n      ? field.value(record, field)\n      : field.value;\n  }\n\n  return record ? (record as any)?.[field.key] : undefined;\n}\n\nfunction shouldHideField<Row>(\n  field: WorkbenchDetailSidebarField<Row>,\n  record: Row | null | undefined,\n) {\n  return typeof field.hidden === 'function'\n    ? field.hidden(field, record)\n    : Boolean(field.hidden);\n}\n\nfunction shouldHideSection<Row>(\n  section: WorkbenchDetailSidebarSection<Row>,\n  record: Row | null | undefined,\n) {\n  return typeof section.hidden === 'function'\n    ? section.hidden(section, record)\n    : Boolean(section.hidden);\n}\n\nfunction WorkbenchDetailSidebarAutoContent<Row = any>({\n  record,\n  fields,\n  sections,\n  fieldColumns = 1,\n  emptyValue = '—',\n  emptyState,\n  getFieldValue,\n  renderFieldValue,\n  formatFieldValue,\n  formatFieldLabel,\n  classNames,\n}: Pick<\n  WorkbenchDetailSidebarProps<Row>,\n  | 'record'\n  | 'fields'\n  | 'sections'\n  | 'fieldColumns'\n  | 'emptyValue'\n  | 'emptyState'\n  | 'getFieldValue'\n  | 'renderFieldValue'\n  | 'formatFieldValue'\n  | 'formatFieldLabel'\n  | 'classNames'\n>) {\n  const resolvedSections = sections?.length\n    ? sections\n    : fields?.length\n      ? [{ fields, columns: fieldColumns }]\n      : [];\n  const visibleSections = resolvedSections.filter((section) => !shouldHideSection(section, record));\n\n  if (!visibleSections.length) {\n    return emptyState ? (\n      <div className={cn('rounded-lg border border-dashed border-border/60 px-3 py-6 text-center text-xs text-muted-foreground', classNames?.emptyState)}>\n        {emptyState}\n      </div>\n    ) : null;\n  }\n\n  return (\n    <div className={cn('space-y-3', classNames?.autoBody)}>\n      {visibleSections.map((section, sectionIndex) => {\n        const visibleFields = (section.fields || []).filter((field) => !shouldHideField(field, record));\n        const sectionKey = section.id || `section-${sectionIndex}`;\n\n        if (!visibleFields.length && !section.emptyState) return null;\n\n        const items = visibleFields.map((field, fieldIndex) => {\n          const context: WorkbenchDetailSidebarRenderContext<Row> = {\n            field,\n            fieldIndex,\n            section,\n            sectionIndex,\n            record,\n          };\n          const rawValue = getFieldValue\n            ? getFieldValue(field, record, context)\n            : getDefaultFieldValue(field, record);\n          const value = renderFieldValue\n            ? renderFieldValue(field, record, context)\n            : formatFieldValue\n              ? formatFieldValue(rawValue, context)\n              : getDefaultDetailDisplayValue(rawValue, field.emptyValue ?? emptyValue, field, classNames);\n          const fieldLabel = formatFieldLabel\n            ? formatFieldLabel(getFallbackFieldLabel(field), context)\n            : getFallbackFieldLabel(field);\n\n          return {\n            term: renderDetailFieldLabel(fieldLabel, field, classNames),\n            value,\n          };\n        });\n\n        return (\n          <section key={sectionKey} className={cn('min-w-0 space-y-3', classNames?.section)}>\n            {section.title || section.description ? (\n              <div className={cn('min-w-0 space-y-1.5', classNames?.sectionHeader)}>\n                {section.title ? (\n                  <div className={cn('inline-flex max-w-full items-center gap-2 rounded-md border border-primary/20 bg-primary/5 px-2.5 py-1.5 text-xs font-medium text-primary dark:border-primary/25 dark:bg-primary/10', classNames?.sectionTitle)}>\n                    {section.title}\n                  </div>\n                ) : null}\n                {section.description ? (\n                  <div className={cn('text-[11px] leading-5 text-muted-foreground', classNames?.sectionDescription)}>\n                    {section.description}\n                  </div>\n                ) : null}\n              </div>\n            ) : null}\n            {items.length ? (\n              <BaseDescriptionList\n                items={items}\n                columns={section.columns || fieldColumns}\n                className={cn('gap-3', classNames?.descriptionList)}\n                classNames={{\n                  item: cn('!border-0 !bg-transparent !p-0 !shadow-none !gap-1.5', classNames?.descriptionListItem),\n                  term: cn('!normal-case !tracking-normal !text-foreground', classNames?.descriptionListTerm),\n                  value: cn(\n                    'min-h-10 rounded-md border border-border/55 bg-muted/25 px-3 py-2 text-xs leading-5 text-foreground shadow-[inset_0_1px_0_hsl(var(--background)/0.8)] dark:border-border/45 dark:bg-white/[0.035]',\n                    classNames?.fieldValue,\n                    classNames?.descriptionListValue,\n                  ),\n                }}\n              />\n            ) : (\n              <div className={cn('py-3 text-center text-xs text-muted-foreground', classNames?.emptyState)}>\n                {section.emptyState}\n              </div>\n            )}\n          </section>\n        );\n      })}\n    </div>\n  );\n}\n\nexport const WorkbenchDetailSidebar = forwardRef<HTMLElement, WorkbenchDetailSidebarProps>(\n  function WorkbenchDetailSidebar(\n    {\n      as: Component = 'aside',\n      bodyAs: BodyComponent = 'div',\n      open,\n      width,\n      header,\n      footer,\n      resizeHandle,\n      children,\n      record,\n      fields,\n      sections,\n      fieldColumns,\n      emptyValue,\n      emptyState,\n      getFieldValue,\n      renderFieldValue,\n      formatFieldValue,\n      formatFieldLabel,\n      className,\n      headerClassName,\n      bodyClassName,\n      footerClassName,\n      resizeHandleClassName,\n      bodyProps,\n      classNames,\n      style,\n      ...props\n    },\n    ref,\n  ) {\n    const autoContent = hasRenderableChildren(children) ? children : (\n      <WorkbenchDetailSidebarAutoContent\n        record={record}\n        fields={fields}\n        sections={sections}\n        fieldColumns={fieldColumns}\n        emptyValue={emptyValue}\n        emptyState={emptyState}\n        getFieldValue={getFieldValue}\n        renderFieldValue={renderFieldValue}\n        formatFieldValue={formatFieldValue}\n        formatFieldLabel={formatFieldLabel}\n        classNames={classNames}\n      />\n    );\n    const renderBodyWrapper = shouldRenderBodyWrapper({\n      header,\n      footer,\n      bodyAs: BodyComponent === 'div' ? undefined : BodyComponent,\n      bodyClassName,\n      bodyProps,\n      classNames,\n    });\n    const { className: bodyPropsClassName, ...restBodyProps } = bodyProps ?? {};\n\n    return (\n      <Component\n        ref={ref}\n        data-workbench-detail-sidebar\n        data-open={open === undefined ? undefined : open ? 'true' : 'false'}\n        className={cn(\n          'workbench-surface-subtle relative flex flex-shrink-0 flex-col self-stretch overflow-hidden rounded-lg border border-border/50 transition-all duration-300 dark:border-border/40',\n          open === false && 'pointer-events-none',\n          classNames?.root,\n          className,\n        )}\n        style={{\n          ...resolveWidthStyle(open, width),\n          ...style,\n        }}\n        {...props}\n      >\n        {resizeHandle ? (\n          <div className={cn(classNames?.resizeHandle, resizeHandleClassName)}>\n            {resizeHandle}\n          </div>\n        ) : null}\n        {header ? (\n          <div className={cn('shrink-0 border-b border-border/40 px-4 py-3 dark:border-border/30', classNames?.header, headerClassName)}>\n            {header}\n          </div>\n        ) : null}\n        {renderBodyWrapper ? (\n          <BodyComponent\n            className={cn('min-h-0 flex-1 overflow-y-auto', classNames?.body, bodyClassName, bodyPropsClassName)}\n            {...restBodyProps}\n          >\n            {autoContent}\n          </BodyComponent>\n        ) : (\n          autoContent\n        )}\n        {footer ? (\n          <div className={cn('shrink-0 border-t border-border/40 px-4 py-3 dark:border-border/30', classNames?.footer, footerClassName)}>\n            {footer}\n          </div>\n        ) : null}\n      </Component>\n    );\n  },\n);\n","import {\n  isValidElement,\n  type ComponentType,\n  type ReactElement,\n  type ReactNode,\n} from 'react';\n\nexport type WorkbenchIconCandidate =\n  | ReactNode\n  | ComponentType<{ className?: string }>\n  | null\n  | undefined;\n\nfunction isWorkbenchIconComponent(\n  icon: WorkbenchIconCandidate,\n): icon is ComponentType<{ className?: string }> {\n  if (typeof icon === 'function') return true;\n  return typeof icon === 'object' && icon !== null && !isValidElement(icon) && '$$typeof' in icon;\n}\n\nexport function renderWorkbenchIcon(icon: WorkbenchIconCandidate, className: string) {\n  if (!icon) return null;\n  if (isValidElement(icon)) return icon as ReactElement;\n  if (isWorkbenchIconComponent(icon)) {\n    const Icon = icon as ComponentType<{ className?: string }>;\n    return <Icon className={className} />;\n  }\n  return icon;\n}\n\nexport function getWorkbenchIconComponent(icon: WorkbenchIconCandidate) {\n  if (!icon || !isWorkbenchIconComponent(icon)) return null;\n  return icon;\n}\n","import {\n  type ComponentType,\n  type CSSProperties,\n  type ReactNode,\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from \"react\";\n\nimport {\n  BaseTable,\n  BaseTableBody,\n  BaseTableCell,\n  BaseTableContainer,\n  BaseTableEmpty,\n  BaseTableHead,\n  BaseTableHeader,\n  BaseTableRow,\n} from \"../base/BaseTable\";\nimport type {\n  BaseAppearance,\n  BaseTableColumnOrderChangeDetail,\n  BaseTableColumnSizeChangeDetail,\n  BaseTableColumnSizes,\n  BaseTableSortDirection,\n} from \"../base/types\";\nimport { cn, hasRenderableNode } from \"../base/utils\";\nimport { renderWorkbenchIcon } from \"./workbenchIconUtils\";\n\nexport interface WorkbenchTableViewColumn {\n  key: string;\n  label?: ReactNode;\n  helperText?: ReactNode;\n  renderType?: string;\n  type?: string;\n  description?: ReactNode;\n  meta?: ReactNode;\n  actions?: ReactNode;\n  trailing?: ReactNode;\n  wrap?: boolean;\n  align?: \"left\" | \"center\" | \"right\";\n  width?: number | string;\n  minWidth?: number | string;\n  maxWidth?: number | string;\n  sortable?: boolean;\n  sortDirection?: BaseTableSortDirection;\n  sortLabel?: string;\n  draggable?: boolean;\n  dragLabel?: string;\n  resizable?: boolean;\n  resizeLabel?: string;\n  compactHeaderClassName?: string;\n  compactCellClassName?: string;\n  headerClassName?: string;\n  cellClassName?: string;\n  headerStyle?: CSSProperties;\n  cellStyle?: CSSProperties;\n  [key: string]: any;\n}\n\nexport interface WorkbenchTableViewClassNames {\n  root?: string;\n  scrollArea?: string;\n  table?: string;\n  header?: string;\n  headerRow?: string;\n  headerCell?: string;\n  body?: string;\n  row?: string;\n  cell?: string;\n  footer?: string;\n  helper?: string;\n}\n\nexport interface WorkbenchTableViewRenderContext<Row = any> {\n  row: Row;\n  rowIndex: number;\n  column: WorkbenchTableViewColumn;\n  columnIndex: number;\n  compact: boolean;\n  surface: \"list\" | string;\n}\n\nexport interface WorkbenchTableViewHeaderContext<Row = any> {\n  column: WorkbenchTableViewColumn;\n  columnIndex: number;\n  columns: WorkbenchTableViewColumn[];\n  rows: Row[];\n  columnType?: string;\n}\n\nexport interface WorkbenchTableScrollRestoration {\n  key: string;\n  read(): { x: number; y: number; rowKey?: string; rowOffset?: number } | undefined;\n  write(position: { x: number; y: number; rowKey?: string; rowOffset?: number }): void;\n}\n\nexport interface WorkbenchTableViewProps<Row = any> {\n  scrollRestoration?: WorkbenchTableScrollRestoration;\n  rows?: Row[];\n  columns?: WorkbenchTableViewColumn[];\n  onRowClick?: (row: Row, rowIndex: number) => void;\n  selectedRowKey?: string;\n  selectedLinkKey?: string;\n  activePrimaryColumn?: WorkbenchTableViewColumn | null;\n  activeTablePrimaryColumn?: WorkbenchTableViewColumn | null;\n  renderedRowCount?: number;\n  totalRowCount?: number;\n  tableMinWidth?: number;\n  minWidth?: number;\n  bodyMaxHeight?: number | string;\n  stickyFirstColumn?: boolean;\n  appearance?: BaseAppearance;\n  headerPresentation?: \"classic-data-grid\";\n  fillRemainingWidthColumnKey?: string;\n  columnOrder?: string[];\n  columnSizes?: BaseTableColumnSizes;\n  columnDragEnabled?: boolean;\n  columnResizeEnabled?: boolean;\n  className?: string;\n  tableClassName?: string;\n  rowClassName?: string | ((row: Row, rowIndex: number) => string | undefined);\n  classNames?: WorkbenchTableViewClassNames;\n  style?: CSSProperties;\n  renderCell?: (\n    column: WorkbenchTableViewColumn,\n    row: Row,\n    context: WorkbenchTableViewRenderContext<Row>,\n  ) => ReactNode;\n  renderFieldValue?: (\n    column: WorkbenchTableViewColumn,\n    row: Row,\n    context: WorkbenchTableViewRenderContext<Row>,\n  ) => ReactNode;\n  renderColumnHeader?: (\n    column: WorkbenchTableViewColumn,\n    context: WorkbenchTableViewHeaderContext<Row>,\n  ) => ReactNode;\n  onColumnOrderChange?: (\n    nextOrder: string[],\n    detail: BaseTableColumnOrderChangeDetail,\n  ) => void;\n  onColumnSizeChange?: (\n    columnId: string,\n    width: number,\n    detail: BaseTableColumnSizeChangeDetail,\n  ) => void;\n  onSort?: (columnKey: string, column: WorkbenchTableViewColumn) => void;\n  formatLabel?: (\n    value: ReactNode,\n    context?: { column?: WorkbenchTableViewColumn },\n  ) => ReactNode;\n  getColumnDataType?: (\n    columnKey: string,\n    rows: Row[],\n    column?: WorkbenchTableViewColumn,\n  ) => string | undefined;\n  getColumnIcon?: (\n    columnType?: string,\n    column?: WorkbenchTableViewColumn,\n  ) => ReactNode | ComponentType<{ className?: string }> | null | undefined;\n  getColumnTypeIcon?: (\n    columnType?: string,\n    column?: WorkbenchTableViewColumn,\n  ) => ReactNode | ComponentType<{ className?: string }> | null | undefined;\n  getRowKey?: (row: Row, rowIndex: number) => string | number;\n  getRowSelectionKey?: (\n    row: Row,\n    rowIndex: number,\n  ) => string | number | undefined;\n  isActionColumn?: (column: WorkbenchTableViewColumn) => boolean;\n  isActionField?: (column: WorkbenchTableViewColumn) => boolean;\n  isRowDisabled?: (row: Row, rowIndex: number) => boolean;\n  isWorkbenchPlaceholderRow?: (row: Row, rowIndex?: number) => boolean;\n  emptyState?: ReactNode;\n  hiddenRowsMessage?:\n    | ReactNode\n    | ((\n        hiddenRowCount: number,\n        renderedRowCount: number,\n        totalRowCount: number,\n      ) => ReactNode);\n  scrollFooter?: ReactNode;\n}\n\nfunction toCssSize(value: number | string | undefined) {\n  if (value === undefined) return undefined;\n  return typeof value === \"number\" ? `${value}px` : value;\n}\n\nconst DEFAULT_WORKBENCH_COLUMN_WIDTH = 160;\nconst DEFAULT_WORKBENCH_ICON_COLUMN_WIDTH = 56;\nconst DEFAULT_WORKBENCH_ACTION_COLUMN_WIDTH = 128;\n\nfunction numericCssSize(value: number | string | undefined) {\n  if (typeof value === \"number\" && Number.isFinite(value) && value > 0)\n    return value;\n  if (typeof value !== \"string\") return undefined;\n  const match = value.trim().match(/^(\\d+(?:\\.\\d+)?)px$/i);\n  return match ? Number(match[1]) : undefined;\n}\n\nfunction defaultWorkbenchColumnWidth(\n  column: WorkbenchTableViewColumn,\n  action: boolean,\n) {\n  if (column.renderType === \"icon\") return DEFAULT_WORKBENCH_ICON_COLUMN_WIDTH;\n  if (action) return DEFAULT_WORKBENCH_ACTION_COLUMN_WIDTH;\n  return DEFAULT_WORKBENCH_COLUMN_WIDTH;\n}\n\nfunction resolvedWorkbenchColumnWidth(\n  column: WorkbenchTableViewColumn,\n  controlledWidth: number | undefined,\n  action: boolean,\n) {\n  return (\n    controlledWidth ??\n    numericCssSize(column.width) ??\n    numericCssSize(column.minWidth) ??\n    defaultWorkbenchColumnWidth(column, action)\n  );\n}\n\nfunction defaultFormatLabel(value: ReactNode) {\n  if (value === undefined || value === null || value === false) return null;\n  return value;\n}\n\nfunction toTitle(value: ReactNode) {\n  if (typeof value === \"string\" || typeof value === \"number\")\n    return String(value);\n  return undefined;\n}\n\nfunction defaultGetRowKey(row: any, rowIndex: number) {\n  return row?.id ?? row?.key ?? row?.linkKey ?? rowIndex;\n}\n\nfunction defaultGetRowSelectionKey(row: any) {\n  return row?.linkKey ?? row?.id ?? row?.key;\n}\n\nfunction getOrderedColumns(\n  columns: WorkbenchTableViewColumn[],\n  columnOrder?: string[],\n) {\n  if (!columnOrder?.length) return columns;\n\n  const columnMap = new Map(columns.map((column) => [column.key, column]));\n  const orderedColumns = columnOrder\n    .map((columnKey) => columnMap.get(columnKey))\n    .filter(Boolean) as WorkbenchTableViewColumn[];\n  const orderedKeySet = new Set(orderedColumns.map((column) => column.key));\n  const remainingColumns = columns.filter(\n    (column) => !orderedKeySet.has(column.key),\n  );\n\n  return [...orderedColumns, ...remainingColumns];\n}\n\nfunction normalizeColumnOrder(columnKeys: string[], columnOrder?: string[]) {\n  const validColumnKeys = new Set(columnKeys);\n  const orderedKeys = (columnOrder || []).filter((columnKey) =>\n    validColumnKeys.has(columnKey),\n  );\n  const orderedKeySet = new Set(orderedKeys);\n  const remainingKeys = columnKeys.filter(\n    (columnKey) => !orderedKeySet.has(columnKey),\n  );\n\n  return [...orderedKeys, ...remainingKeys];\n}\n\nfunction WorkbenchTableHeaderHelper({\n  helperText,\n  className,\n}: {\n  helperText?: ReactNode;\n  className?: string;\n}) {\n  if (!hasRenderableNode(helperText)) return null;\n\n  return (\n    <span className={cn(\"group relative inline-flex items-center\", className)}>\n      <button\n        type=\"button\"\n        title={toTitle(helperText)}\n        aria-label={toTitle(helperText) || \"Field help\"}\n        className=\"inline-flex h-4 w-4 items-center justify-center rounded-full border border-border/60 bg-background text-[10px] font-semibold normal-case tracking-normal text-muted-foreground shadow-sm transition-colors hover:border-primary/40 hover:text-primary focus-visible:border-primary/40 focus-visible:text-primary focus-visible:outline-none\"\n        onClick={(event) => event.stopPropagation()}\n      >\n        ?\n      </button>\n      <span\n        role=\"tooltip\"\n        className=\"pointer-events-none absolute left-1/2 top-full z-40 mt-2 hidden w-72 -translate-x-1/2 whitespace-pre-line rounded-lg border border-border/60 bg-card px-3 py-2 text-[11px] font-normal normal-case leading-5 tracking-normal text-foreground shadow-sm backdrop-blur-sm group-hover:block group-focus-within:block\"\n      >\n        {helperText}\n      </span>\n    </span>\n  );\n}\n\nexport function WorkbenchTableView<Row = any>({\n  rows = [],\n  columns = [],\n  onRowClick,\n  selectedRowKey,\n  selectedLinkKey,\n  activePrimaryColumn,\n  activeTablePrimaryColumn,\n  renderedRowCount,\n  totalRowCount,\n  tableMinWidth,\n  minWidth,\n  bodyMaxHeight = \"min(58vh, 38rem)\",\n  stickyFirstColumn = true,\n  appearance,\n  headerPresentation,\n  fillRemainingWidthColumnKey,\n  columnOrder,\n  columnSizes,\n  columnDragEnabled,\n  columnResizeEnabled,\n  className,\n  tableClassName,\n  rowClassName,\n  classNames,\n  style,\n  renderCell,\n  renderFieldValue,\n  renderColumnHeader,\n  onColumnOrderChange,\n  onColumnSizeChange,\n  onSort,\n  formatLabel = defaultFormatLabel,\n  getColumnDataType,\n  getColumnIcon,\n  getColumnTypeIcon,\n  getRowKey = defaultGetRowKey,\n  getRowSelectionKey = defaultGetRowSelectionKey,\n  isActionColumn,\n  isActionField,\n  isRowDisabled,\n  isWorkbenchPlaceholderRow,\n  emptyState = \"-\",\n  hiddenRowsMessage,\n  scrollFooter,\n  scrollRestoration,\n}: WorkbenchTableViewProps<Row>) {\n  const columnKeySignature = columns.map((column) => column.key).join(\"\\u0001\");\n  const defaultColumnOrder = useMemo(\n    () => (columnKeySignature ? columnKeySignature.split(\"\\u0001\") : []),\n    [columnKeySignature],\n  );\n  const [internalColumnOrder, setInternalColumnOrder] =\n    useState(defaultColumnOrder);\n  const [internalColumnSizes, setInternalColumnSizes] =\n    useState<BaseTableColumnSizes>({});\n  const scrollAreaRef = useRef<HTMLDivElement | null>(null);\n  const rowElements = useRef(new Map<string, HTMLTableRowElement>());\n  const scrollAdapter = useRef(scrollRestoration);\n  scrollAdapter.current = scrollRestoration;\n  const restoredScrollKey = useRef<string | undefined>(undefined);\n  const saveScroll = useCallback(() => {\n    const viewport = scrollAreaRef.current;\n    const adapter = scrollAdapter.current;\n    if (!viewport || !adapter || restoredScrollKey.current !== adapter.key) return;\n    const top = viewport.getBoundingClientRect().top;\n    const anchor = Array.from(rowElements.current.entries()).find(([, element]) => element.getBoundingClientRect().bottom > top);\n    adapter.write({ x: viewport.scrollLeft, y: viewport.scrollTop,\n      ...(anchor ? { rowKey: anchor[0], rowOffset: anchor[1].getBoundingClientRect().top - top } : {}) });\n  }, []);\n  useEffect(() => {\n    const viewport = scrollAreaRef.current;\n    const adapter = scrollAdapter.current;\n    if (!viewport || !adapter || restoredScrollKey.current === adapter.key || rows.length === 0) return;\n    const position = adapter.read();\n    const restore = () => {\n      const anchor = position?.rowKey ? rowElements.current.get(position.rowKey) : undefined;\n      const y = anchor && typeof position?.rowOffset === 'number'\n        ? viewport.scrollTop + anchor.getBoundingClientRect().top - viewport.getBoundingClientRect().top - position.rowOffset\n        : position?.y ?? 0;\n      viewport.scrollTo({ left: position?.x ?? 0, top: Math.max(0, y), behavior: 'auto' });\n      restoredScrollKey.current = adapter.key;\n    };\n    const ownerWindow = viewport.ownerDocument.defaultView;\n    if (!ownerWindow) { restore(); return; }\n    const frame = ownerWindow.requestAnimationFrame(restore);\n    return () => ownerWindow.cancelAnimationFrame(frame);\n  }, [rows, scrollRestoration?.key]);\n  useEffect(() => {\n    const ownerWindow = scrollAreaRef.current?.ownerDocument.defaultView;\n    ownerWindow?.addEventListener('pagehide', saveScroll);\n    return () => { ownerWindow?.removeEventListener('pagehide', saveScroll); saveScroll(); };\n  }, [saveScroll]);\n  const [tableViewportWidth, setTableViewportWidth] = useState<number>();\n\n  useEffect(() => {\n    setInternalColumnOrder((current) =>\n      normalizeColumnOrder(defaultColumnOrder, current),\n    );\n  }, [defaultColumnOrder]);\n\n  const resolvedColumnOrder = columnOrder\n    ? normalizeColumnOrder(defaultColumnOrder, columnOrder)\n    : internalColumnOrder;\n  const resolvedColumnSizes = columnSizes ?? internalColumnSizes;\n  const handleColumnOrderChange = useCallback(\n    (nextOrder: string[], detail: BaseTableColumnOrderChangeDetail) => {\n      const normalizedOrder = normalizeColumnOrder(\n        defaultColumnOrder,\n        nextOrder,\n      );\n      if (!columnOrder) {\n        setInternalColumnOrder(normalizedOrder);\n      }\n      onColumnOrderChange?.(normalizedOrder, detail);\n    },\n    [columnOrder, defaultColumnOrder, onColumnOrderChange],\n  );\n  const handleColumnSizeChange = useCallback(\n    (\n      columnId: string,\n      width: number,\n      detail: BaseTableColumnSizeChangeDetail,\n    ) => {\n      if (!columnSizes) {\n        setInternalColumnSizes((current) => ({\n          ...current,\n          [columnId]: width,\n        }));\n      }\n      onColumnSizeChange?.(columnId, width, detail);\n    },\n    [columnSizes, onColumnSizeChange],\n  );\n  const resolvedSelectedKey = selectedRowKey ?? selectedLinkKey;\n  const resolvedActivePrimaryColumn =\n    activePrimaryColumn ?? activeTablePrimaryColumn;\n  const sourceOrderedColumns = getOrderedColumns(columns, resolvedColumnOrder);\n  const fixedTableWidth = fillRemainingWidthColumnKey\n    ? sourceOrderedColumns.reduce((total, column) => {\n        if (column.key === fillRemainingWidthColumnKey) return total;\n        return (\n          total +\n          resolvedWorkbenchColumnWidth(\n            column,\n            resolvedColumnSizes[column.key],\n            isActionColumn?.(column) ?? isActionField?.(column) ?? false,\n          )\n        );\n      }, 0)\n    : undefined;\n  const remainingTableWidth =\n    fillRemainingWidthColumnKey &&\n    fixedTableWidth !== undefined &&\n    tableViewportWidth !== undefined\n      ? Math.max(0, Math.round(tableViewportWidth - fixedTableWidth))\n      : undefined;\n  const orderedColumns = sourceOrderedColumns.flatMap((column) => {\n    if (column.key !== fillRemainingWidthColumnKey) return [column];\n    if (remainingTableWidth === 0) return [];\n    if (remainingTableWidth === undefined) return [column];\n    return [\n      {\n        ...column,\n        width: remainingTableWidth,\n        minWidth: remainingTableWidth,\n        maxWidth: remainingTableWidth,\n      },\n    ];\n  });\n  const hiddenRowCount = Math.max(\n    0,\n    Number(totalRowCount || rows.length) -\n      Number(renderedRowCount || rows.length),\n  );\n  const renderValue =\n    renderCell ??\n    renderFieldValue ??\n    ((column: WorkbenchTableViewColumn, row: Row) =>\n      (row as any)?.[column.key]);\n  const isAction = isActionColumn ?? isActionField ?? (() => false);\n  const isDisabled =\n    isRowDisabled ?? isWorkbenchPlaceholderRow ?? (() => false);\n  const resolveColumnIcon = getColumnIcon ?? getColumnTypeIcon;\n  const resolvedTableWidth =\n    fixedTableWidth !== undefined && remainingTableWidth !== undefined\n      ? fixedTableWidth + remainingTableWidth\n      : undefined;\n  const resolvedMinWidth =\n    resolvedTableWidth ??\n    tableMinWidth ??\n    minWidth ??\n    Math.max(\n      760,\n      orderedColumns.reduce(\n        (total, column) =>\n          total +\n          resolvedWorkbenchColumnWidth(\n            column,\n            resolvedColumnSizes[column.key],\n            isAction(column),\n          ),\n        0,\n      ),\n    );\n\n  useEffect(() => {\n    if (!fillRemainingWidthColumnKey) {\n      setTableViewportWidth(undefined);\n      return;\n    }\n    const scrollArea = scrollAreaRef.current;\n    if (!scrollArea) return;\n    const ownerWindow = scrollArea.ownerDocument.defaultView;\n    const updateWidth = () => {\n      const nextWidth = Math.round(scrollArea.getBoundingClientRect().width);\n      if (!Number.isFinite(nextWidth) || nextWidth <= 0) return;\n      setTableViewportWidth((current) =>\n        current === nextWidth ? current : nextWidth,\n      );\n    };\n    updateWidth();\n    const Observer = ownerWindow?.ResizeObserver;\n    const observer = Observer ? new Observer(updateWidth) : undefined;\n    observer?.observe(scrollArea);\n    ownerWindow?.addEventListener(\"resize\", updateWidth);\n    return () => {\n      observer?.disconnect();\n      ownerWindow?.removeEventListener(\"resize\", updateWidth);\n    };\n  }, [fillRemainingWidthColumnKey]);\n\n  const footer =\n    hiddenRowCount > 0 && hiddenRowsMessage\n      ? typeof hiddenRowsMessage === \"function\"\n        ? hiddenRowsMessage(\n            hiddenRowCount,\n            renderedRowCount || rows.length,\n            totalRowCount || rows.length,\n          )\n        : hiddenRowsMessage\n      : null;\n\n  return (\n    <BaseTableContainer\n      appearance={appearance}\n      className={cn(\n        \"w-full overflow-hidden rounded-lg border border-border/40 bg-muted/15 dark:border-border/35 dark:bg-muted/10\",\n        classNames?.root,\n        className,\n      )}\n      style={style}\n    >\n      <div\n        ref={scrollAreaRef}\n        onScroll={saveScroll}\n        className={cn(\"w-full overflow-auto\", classNames?.scrollArea)}\n        style={{ maxHeight: toCssSize(bodyMaxHeight) }}\n      >\n        <BaseTable\n          appearance={appearance}\n          columnOrder={resolvedColumnOrder}\n          columnSizes={resolvedColumnSizes}\n          columnDragEnabled={columnDragEnabled}\n          columnResizeEnabled={columnResizeEnabled}\n          onColumnOrderChange={handleColumnOrderChange}\n          onColumnSizeChange={handleColumnSizeChange}\n          className={cn(\n            \"w-full table-auto text-left text-xs\",\n            classNames?.table,\n            tableClassName,\n          )}\n          style={{\n            width: resolvedTableWidth,\n            minWidth: resolvedMinWidth,\n          }}\n        >\n          <BaseTableHeader\n            appearance={appearance}\n            className={cn(\n              \"text-[10px] font-mono uppercase tracking-wide text-muted-foreground\",\n              classNames?.header,\n            )}\n          >\n            <BaseTableRow\n              className={cn(\"hover:bg-transparent\", classNames?.headerRow)}\n            >\n              {orderedColumns.map((column, columnIndex) => {\n                const defaultColumnWidth = defaultWorkbenchColumnWidth(\n                  column,\n                  isAction(column),\n                );\n                const columnType =\n                  column.renderType ||\n                  column.type ||\n                  getColumnDataType?.(column.key, rows, column);\n                const columnIcon = renderWorkbenchIcon(\n                  resolveColumnIcon?.(columnType, column),\n                  \"h-3.5 w-3.5 shrink-0 text-primary\",\n                );\n                const previousColumn = orderedColumns[columnIndex - 1];\n                const followsRecordIcon =\n                  previousColumn?.renderType === \"icon\" &&\n                  column.key === resolvedActivePrimaryColumn?.key;\n                const headerContent = renderColumnHeader\n                  ? renderColumnHeader(column, {\n                      column,\n                      columnIndex,\n                      columns: orderedColumns,\n                      rows,\n                      columnType,\n                    })\n                  : formatLabel(column.label, { column });\n                const headerTrailing =\n                  !renderColumnHeader &&\n                  (hasRenderableNode(column.trailing) ||\n                    hasRenderableNode(column.helperText)) ? (\n                    <span className=\"inline-flex items-center gap-1.5\">\n                      {hasRenderableNode(column.trailing)\n                        ? formatLabel(column.trailing, { column })\n                        : null}\n                      <WorkbenchTableHeaderHelper\n                        helperText={formatLabel(column.helperText, { column })}\n                        className={classNames?.helper}\n                      />\n                    </span>\n                  ) : undefined;\n                const sortable = Boolean(column.sortable);\n                const handleSort =\n                  sortable && onSort\n                    ? () => onSort(column.key, column)\n                    : undefined;\n\n                return (\n                  <BaseTableHead\n                    appearance={appearance}\n                    presentation={headerPresentation}\n                    key={column.key}\n                    columnId={column.key}\n                    align={column.align}\n                    icon={renderColumnHeader ? undefined : columnIcon}\n                    label={headerContent}\n                    description={\n                      renderColumnHeader\n                        ? undefined\n                        : formatLabel(column.description, { column })\n                    }\n                    meta={\n                      renderColumnHeader\n                        ? undefined\n                        : formatLabel(column.meta, { column })\n                    }\n                    actions={column.actions}\n                    trailing={headerTrailing}\n                    sortable={sortable}\n                    sortDirection={column.sortDirection}\n                    sortLabel={column.sortLabel}\n                    onSort={handleSort}\n                    draggable={column.draggable}\n                    dragLabel={column.dragLabel}\n                    resizable={column.resizable}\n                    resizeLabel={column.resizeLabel}\n                    width={column.width ?? defaultColumnWidth}\n                    minWidth={\n                      typeof column.minWidth === \"number\"\n                        ? column.minWidth\n                        : undefined\n                    }\n                    maxWidth={\n                      typeof column.maxWidth === \"number\"\n                        ? column.maxWidth\n                        : undefined\n                    }\n                    className={cn(\n                      \"sticky top-0 z-20 h-auto whitespace-nowrap bg-card/95 px-4 py-3 font-medium backdrop-blur-sm supports-[backdrop-filter]:bg-card/90\",\n                      stickyFirstColumn &&\n                        columnIndex === 0 &&\n                        \"md:left-0 md:z-30 md:shadow-[1px_0_0_0_hsl(var(--border)/0.35)]\",\n                      column.compactHeaderClassName,\n                      column.renderType === \"icon\" && \"pl-3 pr-1\",\n                      followsRecordIcon && \"pl-2\",\n                      classNames?.headerCell,\n                      column.headerClassName,\n                    )}\n                    style={{\n                      minWidth:\n                        typeof column.minWidth === \"string\"\n                          ? column.minWidth\n                          : undefined,\n                      maxWidth:\n                        typeof column.maxWidth === \"string\"\n                          ? column.maxWidth\n                          : undefined,\n                      ...column.headerStyle,\n                    }}\n                  />\n                );\n              })}\n            </BaseTableRow>\n          </BaseTableHeader>\n          <BaseTableBody\n            appearance={appearance}\n            className={cn(\n              \"divide-y divide-border/35 dark:divide-border/30\",\n              classNames?.body,\n            )}\n          >\n            {rows.length ? (\n              rows.map((row, rowIndex) => {\n                const key = getRowKey(row, rowIndex);\n                const disabled = isDisabled(row, rowIndex);\n                const selectionKey = getRowSelectionKey(row, rowIndex);\n                const selected = Boolean(\n                  resolvedSelectedKey &&\n                    String(selectionKey) === String(resolvedSelectedKey),\n                );\n                const resolvedRowClassName =\n                  typeof rowClassName === \"function\"\n                    ? rowClassName(row, rowIndex)\n                    : rowClassName;\n\n                return (\n                  <BaseTableRow\n                    appearance={appearance}\n                    key={key}\n                    ref={(element) => { if (element) rowElements.current.set(String(key), element); else rowElements.current.delete(String(key)); }}\n                    interactive={Boolean(onRowClick) && !disabled}\n                    selected={selected}\n                    disabled={disabled}\n                    onClick={() => {\n                      if (!disabled) {\n                        onRowClick?.(row, rowIndex);\n                      }\n                    }}\n                    className={cn(\n                      onRowClick && !disabled\n                        ? \"cursor-pointer\"\n                        : \"cursor-default\",\n                      selected\n                        ? \"bg-primary/10 hover:bg-primary/15\"\n                        : disabled\n                          ? \"\"\n                          : \"hover:bg-muted/25 dark:hover:bg-muted/15\",\n                      classNames?.row,\n                      resolvedRowClassName,\n                    )}\n                  >\n                    {orderedColumns.map((column, columnIndex) => {\n                      const shouldWrap =\n                        isAction(column) || column.wrap === true;\n                      const previousColumn = orderedColumns[columnIndex - 1];\n                      const followsRecordIcon =\n                        previousColumn?.renderType === \"icon\" &&\n                        column.key === resolvedActivePrimaryColumn?.key;\n\n                      return (\n                        <BaseTableCell\n                          appearance={appearance}\n                          key={`${key}-${column.key}`}\n                          align={column.align}\n                          className={cn(\n                            shouldWrap\n                              ? \"align-top whitespace-normal\"\n                              : \"whitespace-nowrap\",\n                            \"px-4 py-3 text-muted-foreground\",\n                            !shouldWrap && \"overflow-hidden text-ellipsis\",\n                            stickyFirstColumn &&\n                              columnIndex === 0 &&\n                              \"md:sticky md:left-0 md:z-10 md:bg-card/95 md:text-foreground md:shadow-[1px_0_0_0_hsl(var(--border)/0.3)]\",\n                            column.compactCellClassName,\n                            column.renderType === \"icon\" && \"pl-3 pr-1\",\n                            followsRecordIcon && \"pl-2\",\n                            classNames?.cell,\n                            column.cellClassName,\n                          )}\n                          style={column.cellStyle}\n                        >\n                          {renderValue(column, row, {\n                            row,\n                            rowIndex,\n                            column,\n                            columnIndex,\n                            compact: true,\n                            surface: \"list\",\n                          })}\n                        </BaseTableCell>\n                      );\n                    })}\n                  </BaseTableRow>\n                );\n              })\n            ) : (\n              <BaseTableEmpty\n                appearance={appearance}\n                colSpan={Math.max(orderedColumns.length, 1)}\n                classNames={{\n                  cell: \"px-4 py-10 text-center text-sm text-muted-foreground\",\n                }}\n              >\n                {emptyState}\n              </BaseTableEmpty>\n            )}\n          </BaseTableBody>\n        </BaseTable>\n        {hasRenderableNode(scrollFooter) ? (\n          <div style={{ minWidth: resolvedMinWidth }}>{scrollFooter}</div>\n        ) : null}\n      </div>\n      {footer ? (\n        <div\n          className={cn(\n            \"border-t border-border/40 px-4 py-2 text-[11px] text-muted-foreground dark:border-border/30\",\n            classNames?.footer,\n          )}\n        >\n          {footer}\n        </div>\n      ) : null}\n    </BaseTableContainer>\n  );\n}\n","import {\n  type CSSProperties,\n  type ReactNode,\n  useCallback,\n  useEffect,\n  useMemo,\n  useState,\n} from 'react';\n\nimport { useMonkeysLocaleMessages } from '../../provider/context';\nimport {\n  BaseContextMenu,\n  BaseContextMenuContent,\n  BaseContextMenuItem,\n  BaseContextMenuLabel,\n  BaseContextMenuSeparator,\n  BaseContextMenuTrigger,\n} from '../base/BaseContextMenu';\nimport {\n  BaseTable,\n  BaseTableBody,\n  BaseTableCell,\n  BaseTableContainer,\n  BaseTableEmpty,\n  BaseTableHead,\n  BaseTableHeader,\n  BaseTableRow,\n} from '../base/BaseTable';\nimport type {\n  BaseAppearance,\n  BaseTableColumnOrderChangeDetail,\n  BaseTableColumnSizeChangeDetail,\n  BaseTableColumnSizes,\n  BaseTableSortDirection,\n} from '../base/types';\nimport { cn, hasRenderableNode } from '../base/utils';\n\nexport interface InteractiveTableColumn {\n  key: string;\n  label?: ReactNode;\n  description?: ReactNode;\n  align?: 'left' | 'center' | 'right';\n  width?: number | string;\n  minWidth?: number;\n  maxWidth?: number;\n  sortable?: boolean;\n  sortDirection?: BaseTableSortDirection;\n  sortLabel?: string;\n  draggable?: boolean;\n  resizable?: boolean;\n  className?: string;\n  headerClassName?: string;\n  cellClassName?: string;\n  wrap?: boolean;\n  [key: string]: any;\n}\n\nexport interface InteractiveTableClassNames {\n  root?: string;\n  header?: string;\n  headerLeading?: string;\n  headerTitle?: string;\n  headerDescription?: string;\n  headerActions?: string;\n  scrollArea?: string;\n  table?: string;\n  tableHeader?: string;\n  headerRow?: string;\n  headerCell?: string;\n  body?: string;\n  row?: string;\n  pinnedTopRow?: string;\n  cell?: string;\n  empty?: string;\n}\n\nexport interface InteractiveTableRenderContext<Row = any> {\n  row: Row;\n  rowIndex: number;\n  column: InteractiveTableColumn;\n  columnIndex: number;\n  isPinnedTopRow: boolean;\n}\n\nexport interface InteractiveTableHeaderContext<Row = any> {\n  column: InteractiveTableColumn;\n  columnIndex: number;\n  columns: InteractiveTableColumn[];\n  rows: Row[];\n}\n\nexport interface InteractiveTableRowState {\n  disabled?: boolean;\n  pending?: boolean;\n  saving?: boolean;\n  selected?: boolean;\n}\n\nexport interface InteractiveTableHeaderProps {\n  title?: ReactNode;\n  description?: ReactNode;\n  actions?: ReactNode;\n  resetColumnSizesLabel?: ReactNode;\n}\n\nexport interface InteractiveTableColumnMenuLabels {\n  columnActions?: ReactNode;\n  freezeColumn?: ReactNode;\n  freezeEndColumn?: ReactNode;\n  unfreezeColumn?: ReactNode;\n  unfreezeEndColumn?: ReactNode;\n  unfreezeAllColumns?: ReactNode;\n  resetColumnWidth?: ReactNode;\n  frozenColumnTitle?: string;\n}\n\nexport interface InteractiveTableProps<Row = any, PinnedTopRow = Row> {\n  rows?: Row[];\n  columns?: InteractiveTableColumn[];\n  pinnedTopRows?: PinnedTopRow[];\n  getRowKey?: (row: Row, rowIndex: number) => string | number;\n  getPinnedTopRowKey?: (row: PinnedTopRow, rowIndex: number) => string | number;\n  renderCell?: (column: InteractiveTableColumn, row: Row, context: InteractiveTableRenderContext<Row>) => ReactNode;\n  renderPinnedTopCell?: (\n    column: InteractiveTableColumn,\n    row: PinnedTopRow,\n    context: InteractiveTableRenderContext<PinnedTopRow>,\n  ) => ReactNode;\n  renderColumnHeader?: (column: InteractiveTableColumn, context: InteractiveTableHeaderContext<Row>) => ReactNode;\n  onRowClick?: (row: Row, rowIndex: number) => void;\n  getRowState?: (row: Row, rowIndex: number) => InteractiveTableRowState | undefined;\n  rowClassName?: string | ((row: Row, rowIndex: number) => string | undefined);\n  pinnedTopRowClassName?: string | ((row: PinnedTopRow, rowIndex: number) => string | undefined);\n  emptyState?: ReactNode;\n  header?: InteractiveTableHeaderProps;\n  showResetColumnSizes?: boolean;\n  columnMenuLabels?: InteractiveTableColumnMenuLabels;\n  columnStorageKey?: string;\n  columnOrder?: string[];\n  columnSizes?: BaseTableColumnSizes;\n  defaultColumnSizes?: BaseTableColumnSizes;\n  columnDragEnabled?: boolean;\n  columnResizeEnabled?: boolean;\n  frozenColumnCount?: number;\n  frozenEndColumnCount?: number;\n  tableMinWidth?: number;\n  bodyMaxHeight?: number | string;\n  appearance?: BaseAppearance;\n  className?: string;\n  tableClassName?: string;\n  classNames?: InteractiveTableClassNames;\n  style?: CSSProperties;\n  onColumnOrderChange?: (nextOrder: string[], detail: BaseTableColumnOrderChangeDetail) => void;\n  onColumnSizeChange?: (columnId: string, width: number, detail: BaseTableColumnSizeChangeDetail) => void;\n  onResetColumnSizes?: (nextSizes: BaseTableColumnSizes) => void;\n  onFrozenColumnCountChange?: (nextCount: number) => void;\n  onFrozenEndColumnCountChange?: (nextCount: number) => void;\n  onSort?: (columnKey: string, column: InteractiveTableColumn) => void;\n}\n\nexport interface InteractiveTableEditableTextCellProps {\n  value?: string | null;\n  placeholder?: string;\n  disabled?: boolean;\n  multiline?: boolean;\n  commitOnBlur?: boolean;\n  className?: string;\n  inputClassName?: string;\n  onCommit?: (value: string) => void | Promise<void>;\n}\n\nexport interface InteractiveTableReadonlyCellProps {\n  children?: ReactNode;\n  mono?: boolean;\n  className?: string;\n}\n\nexport interface InteractiveTableSelectOption<T extends string = string> {\n  value: T;\n  label: string;\n}\n\nexport interface InteractiveTableSelectCellProps<T extends string = string> {\n  value: T;\n  options: Array<InteractiveTableSelectOption<T>>;\n  disabled?: boolean;\n  ariaLabel: string;\n  children: ReactNode;\n  className?: string;\n  onChange?: (nextValue: T) => void;\n}\n\nfunction toCssSize(value: number | string | undefined) {\n  if (value === undefined) return undefined;\n  return typeof value === 'number' ? `${value}px` : value;\n}\n\nfunction isBrowser() {\n  return typeof window !== 'undefined';\n}\n\nfunction defaultGetRowKey(row: any, rowIndex: number) {\n  return row?.id ?? row?.key ?? rowIndex;\n}\n\nfunction getColumnDefaultSize(column: InteractiveTableColumn) {\n  if (typeof column.width === 'number') return column.width;\n  if (typeof column.minWidth === 'number') return column.minWidth;\n  return 160;\n}\n\nfunction buildDefaultColumnSizes(columns: InteractiveTableColumn[], explicit?: BaseTableColumnSizes) {\n  return columns.reduce<BaseTableColumnSizes>((acc, column) => {\n    acc[column.key] = explicit?.[column.key] ?? getColumnDefaultSize(column);\n    return acc;\n  }, {});\n}\n\nfunction loadStoredColumnSizes(storageKey: string | undefined, defaults: BaseTableColumnSizes) {\n  if (!storageKey || !isBrowser()) return defaults;\n\n  try {\n    const parsed = JSON.parse(window.localStorage.getItem(storageKey) || '{}');\n    return Object.keys(defaults).reduce<BaseTableColumnSizes>((acc, key) => {\n      const value = Number(parsed?.[key]);\n      acc[key] = Number.isFinite(value) ? value : defaults[key];\n      return acc;\n    }, {});\n  } catch {\n    return defaults;\n  }\n}\n\nfunction persistColumnSizes(storageKey: string | undefined, sizes: BaseTableColumnSizes) {\n  if (!storageKey || !isBrowser()) return;\n  window.localStorage.setItem(storageKey, JSON.stringify(sizes));\n}\n\nfunction getFrozenColumnStorageKey(storageKey: string | undefined) {\n  return storageKey ? `${storageKey}.frozenColumnCount` : undefined;\n}\n\nfunction getFrozenEndColumnStorageKey(storageKey: string | undefined) {\n  return storageKey ? `${storageKey}.frozenEndColumnCount` : undefined;\n}\n\nfunction clampFrozenColumnCount(count: number, columnCount: number) {\n  if (!Number.isFinite(count)) return 0;\n  return Math.max(0, Math.min(Math.round(count), columnCount));\n}\n\nfunction normalizeFrozenColumnCounts(startCount: number, endCount: number, columnCount: number) {\n  const normalizedStartCount = clampFrozenColumnCount(startCount, columnCount);\n  const normalizedEndCount = clampFrozenColumnCount(endCount, Math.max(0, columnCount - normalizedStartCount));\n  return {\n    startCount: normalizedStartCount,\n    endCount: normalizedEndCount,\n  };\n}\n\nfunction loadStoredFrozenColumnCount(\n  storageKey: string | undefined,\n  defaultCount: number,\n  columnCount: number,\n) {\n  const fallback = clampFrozenColumnCount(defaultCount, columnCount);\n  const frozenStorageKey = getFrozenColumnStorageKey(storageKey);\n  if (!frozenStorageKey || !isBrowser()) return fallback;\n\n  try {\n    const storedValue = window.localStorage.getItem(frozenStorageKey);\n    if (storedValue === null) return fallback;\n    const value = Number(storedValue);\n    return Number.isFinite(value) ? clampFrozenColumnCount(value, columnCount) : fallback;\n  } catch {\n    return fallback;\n  }\n}\n\nfunction persistFrozenColumnCount(storageKey: string | undefined, count: number) {\n  const frozenStorageKey = getFrozenColumnStorageKey(storageKey);\n  if (!frozenStorageKey || !isBrowser()) return;\n  window.localStorage.setItem(frozenStorageKey, String(count));\n}\n\nfunction loadStoredFrozenEndColumnCount(\n  storageKey: string | undefined,\n  defaultCount: number,\n  columnCount: number,\n) {\n  const fallback = clampFrozenColumnCount(defaultCount, columnCount);\n  const frozenStorageKey = getFrozenEndColumnStorageKey(storageKey);\n  if (!frozenStorageKey || !isBrowser()) return fallback;\n\n  try {\n    const storedValue = window.localStorage.getItem(frozenStorageKey);\n    if (storedValue === null) return fallback;\n    const value = Number(storedValue);\n    return Number.isFinite(value) ? clampFrozenColumnCount(value, columnCount) : fallback;\n  } catch {\n    return fallback;\n  }\n}\n\nfunction persistFrozenEndColumnCount(storageKey: string | undefined, count: number) {\n  const frozenStorageKey = getFrozenEndColumnStorageKey(storageKey);\n  if (!frozenStorageKey || !isBrowser()) return;\n  window.localStorage.setItem(frozenStorageKey, String(count));\n}\n\nfunction normalizeColumnOrder(columnKeys: string[], columnOrder?: string[]) {\n  const validColumnKeys = new Set(columnKeys);\n  const orderedKeys = (columnOrder || []).filter((columnKey) => validColumnKeys.has(columnKey));\n  const orderedKeySet = new Set(orderedKeys);\n  const remainingKeys = columnKeys.filter((columnKey) => !orderedKeySet.has(columnKey));\n  return [...orderedKeys, ...remainingKeys];\n}\n\nfunction getOrderedColumns(columns: InteractiveTableColumn[], columnOrder?: string[]) {\n  const normalizedOrder = normalizeColumnOrder(columns.map((column) => column.key), columnOrder);\n  const columnMap = new Map(columns.map((column) => [column.key, column]));\n  return normalizedOrder.map((columnKey) => columnMap.get(columnKey)).filter(Boolean) as InteractiveTableColumn[];\n}\n\nfunction getColumnNumericWidth(column: InteractiveTableColumn, columnSizes: BaseTableColumnSizes) {\n  const controlledWidth = columnSizes[column.key];\n  if (typeof controlledWidth === 'number') return controlledWidth;\n  return getColumnDefaultSize(column);\n}\n\nfunction buildFrozenOffsets(\n  columns: InteractiveTableColumn[],\n  columnSizes: BaseTableColumnSizes,\n  frozenColumnCount: number,\n) {\n  const offsets = new Map<string, number>();\n  let left = 0;\n  columns.slice(0, Math.max(0, frozenColumnCount)).forEach((column) => {\n    offsets.set(column.key, left);\n    left += getColumnNumericWidth(column, columnSizes);\n  });\n  return offsets;\n}\n\nfunction buildFrozenEndOffsets(\n  columns: InteractiveTableColumn[],\n  columnSizes: BaseTableColumnSizes,\n  frozenEndColumnCount: number,\n) {\n  const offsets = new Map<string, number>();\n  let right = 0;\n  columns.slice(Math.max(0, columns.length - frozenEndColumnCount)).reverse().forEach((column) => {\n    offsets.set(column.key, right);\n    right += getColumnNumericWidth(column, columnSizes);\n  });\n  return offsets;\n}\n\nfunction resolveRowClassName<Row>(\n  rowClassName: string | ((row: Row, rowIndex: number) => string | undefined) | undefined,\n  row: Row,\n  rowIndex: number,\n) {\n  return typeof rowClassName === 'function' ? rowClassName(row, rowIndex) : rowClassName;\n}\n\nfunction renderDefaultCell<Row>(column: InteractiveTableColumn, row: Row) {\n  const value = (row as any)?.[column.key];\n  if (value === undefined || value === null || value === '') return '—';\n  return String(value);\n}\n\nfunction InteractiveTableCellContent({\n  children,\n  wrap,\n}: {\n  children: ReactNode;\n  wrap?: boolean;\n}) {\n  return (\n    <div\n      className={cn(\n        'min-w-0 max-w-full overflow-auto overscroll-contain [scrollbar-width:thin]',\n        wrap ? 'max-h-20 whitespace-pre-wrap break-words leading-5' : 'whitespace-nowrap',\n      )}\n    >\n      {children}\n    </div>\n  );\n}\n\nfunction PinIcon({ className }: { className?: string }) {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 16 16\"\n      className={className}\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"1.75\"\n    >\n      <path d=\"M5.25 2.75h5.5\" />\n      <path d=\"M6.25 2.75v4L4.5 9.25h7L9.75 6.75v-4\" />\n      <path d=\"M8 9.25v4\" />\n    </svg>\n  );\n}\n\nexport function InteractiveTable<Row = any, PinnedTopRow = Row>({\n  rows = [],\n  columns = [],\n  pinnedTopRows = [],\n  getRowKey = defaultGetRowKey,\n  getPinnedTopRowKey = defaultGetRowKey,\n  renderCell,\n  renderPinnedTopCell,\n  renderColumnHeader,\n  onRowClick,\n  getRowState,\n  rowClassName,\n  pinnedTopRowClassName,\n  emptyState = '—',\n  columnMenuLabels,\n  columnStorageKey,\n  columnOrder,\n  columnSizes,\n  defaultColumnSizes,\n  columnDragEnabled = false,\n  columnResizeEnabled = true,\n  frozenColumnCount = 0,\n  frozenEndColumnCount = 0,\n  tableMinWidth,\n  bodyMaxHeight = 'min(60vh, 42rem)',\n  appearance,\n  className,\n  tableClassName,\n  classNames,\n  style,\n  onColumnOrderChange,\n  onColumnSizeChange,\n  onResetColumnSizes,\n  onFrozenColumnCountChange,\n  onFrozenEndColumnCountChange,\n  onSort,\n}: InteractiveTableProps<Row, PinnedTopRow>) {\n  const internalLabels = useMonkeysLocaleMessages().workbench.interactiveTable;\n  const columnKeySignature = columns.map((column) => column.key).join('\\u0001');\n  const defaultOrder = useMemo(\n    () => (columnKeySignature ? columnKeySignature.split('\\u0001') : []),\n    [columnKeySignature],\n  );\n  const defaultSizes = useMemo(\n    () => buildDefaultColumnSizes(columns, defaultColumnSizes),\n    [columns, defaultColumnSizes],\n  );\n  const [internalColumnOrder, setInternalColumnOrder] = useState(defaultOrder);\n  const [internalColumnSizes, setInternalColumnSizes] = useState<BaseTableColumnSizes>(() => (\n    loadStoredColumnSizes(columnStorageKey, defaultSizes)\n  ));\n  const [internalFrozenColumnCount, setInternalFrozenColumnCount] = useState(() => (\n    loadStoredFrozenColumnCount(columnStorageKey, frozenColumnCount, columns.length)\n  ));\n  const [internalFrozenEndColumnCount, setInternalFrozenEndColumnCount] = useState(() => (\n    loadStoredFrozenEndColumnCount(columnStorageKey, frozenEndColumnCount, columns.length)\n  ));\n\n  useEffect(() => {\n    setInternalColumnOrder((current) => normalizeColumnOrder(defaultOrder, current));\n  }, [defaultOrder]);\n\n  useEffect(() => {\n    if (columnSizes) return;\n    setInternalColumnSizes(loadStoredColumnSizes(columnStorageKey, defaultSizes));\n  }, [columnSizes, columnStorageKey, defaultSizes]);\n\n  useEffect(() => {\n    setInternalFrozenColumnCount(loadStoredFrozenColumnCount(columnStorageKey, frozenColumnCount, columns.length));\n  }, [columnStorageKey, columns.length, frozenColumnCount]);\n\n  useEffect(() => {\n    setInternalFrozenEndColumnCount(loadStoredFrozenEndColumnCount(columnStorageKey, frozenEndColumnCount, columns.length));\n  }, [columnStorageKey, columns.length, frozenEndColumnCount]);\n\n  const resolvedColumnOrder = columnOrder\n    ? normalizeColumnOrder(defaultOrder, columnOrder)\n    : internalColumnOrder;\n  const resolvedColumnSizes = columnSizes ?? internalColumnSizes;\n  const orderedColumns = getOrderedColumns(columns, resolvedColumnOrder);\n  const {\n    startCount: resolvedFrozenColumnCount,\n    endCount: resolvedFrozenEndColumnCount,\n  } = normalizeFrozenColumnCounts(internalFrozenColumnCount, internalFrozenEndColumnCount, orderedColumns.length);\n  const frozenOffsets = buildFrozenOffsets(orderedColumns, resolvedColumnSizes, resolvedFrozenColumnCount);\n  const frozenEndOffsets = buildFrozenEndOffsets(orderedColumns, resolvedColumnSizes, resolvedFrozenEndColumnCount);\n  const resolvedMinWidth = tableMinWidth ?? Math.max(760, orderedColumns.reduce((total, column) => total + getColumnNumericWidth(column, resolvedColumnSizes), 0));\n  const labels = {\n    columnActions: columnMenuLabels?.columnActions ?? internalLabels.columnActions,\n    freezeColumn: columnMenuLabels?.freezeColumn ?? internalLabels.freezeColumn,\n    freezeEndColumn: columnMenuLabels?.freezeEndColumn ?? internalLabels.freezeEndColumn,\n    unfreezeColumn: columnMenuLabels?.unfreezeColumn ?? internalLabels.unfreezeColumn,\n    unfreezeEndColumn:\n      columnMenuLabels?.unfreezeEndColumn ?? internalLabels.unfreezeEndColumn,\n    unfreezeAllColumns:\n      columnMenuLabels?.unfreezeAllColumns ?? internalLabels.unfreezeAllColumns,\n    resetColumnWidth:\n      columnMenuLabels?.resetColumnWidth ?? internalLabels.resetColumnWidth,\n    frozenColumnTitle:\n      columnMenuLabels?.frozenColumnTitle ?? internalLabels.frozenColumnTitle,\n  };\n\n  const handleColumnOrderChange = useCallback((nextOrder: string[], detail: BaseTableColumnOrderChangeDetail) => {\n    const normalizedOrder = normalizeColumnOrder(defaultOrder, nextOrder);\n    if (!columnOrder) {\n      setInternalColumnOrder(normalizedOrder);\n    }\n    onColumnOrderChange?.(normalizedOrder, detail);\n  }, [columnOrder, defaultOrder, onColumnOrderChange]);\n\n  const handleColumnSizeChange = useCallback((columnId: string, width: number, detail: BaseTableColumnSizeChangeDetail) => {\n    const column = columns.find((item) => item.key === columnId);\n    const minWidth = column?.minWidth;\n    const maxWidth = column?.maxWidth;\n    const nextWidth = Math.max(\n      typeof minWidth === 'number' ? minWidth : 0,\n      Math.min(width, typeof maxWidth === 'number' ? maxWidth : Number.POSITIVE_INFINITY),\n    );\n    const nextSizes = {\n      ...resolvedColumnSizes,\n      [columnId]: nextWidth,\n    };\n    if (!columnSizes) {\n      setInternalColumnSizes(nextSizes);\n    }\n    persistColumnSizes(columnStorageKey, nextSizes);\n    onColumnSizeChange?.(columnId, nextWidth, detail);\n  }, [columnSizes, columnStorageKey, columns, onColumnSizeChange, resolvedColumnSizes]);\n\n  const handleResetColumnSize = useCallback((column: InteractiveTableColumn) => {\n    const nextWidth = defaultSizes[column.key] ?? getColumnDefaultSize(column);\n    const previousWidth = getColumnNumericWidth(column, resolvedColumnSizes);\n    const nextSizes = {\n      ...resolvedColumnSizes,\n      [column.key]: nextWidth,\n    };\n    if (!columnSizes) {\n      setInternalColumnSizes(nextSizes);\n    }\n    persistColumnSizes(columnStorageKey, nextSizes);\n    onColumnSizeChange?.(column.key, nextWidth, {\n      columnId: column.key,\n      previousWidth,\n      minWidth: column.minWidth,\n      maxWidth: column.maxWidth,\n    });\n    onResetColumnSizes?.(nextSizes);\n  }, [columnSizes, columnStorageKey, defaultSizes, onColumnSizeChange, onResetColumnSizes, resolvedColumnSizes]);\n\n  const setFrozenColumnCount = useCallback((nextCount: number) => {\n    const normalizedCount = clampFrozenColumnCount(nextCount, Math.max(0, orderedColumns.length - resolvedFrozenEndColumnCount));\n    setInternalFrozenColumnCount(normalizedCount);\n    persistFrozenColumnCount(columnStorageKey, normalizedCount);\n    onFrozenColumnCountChange?.(normalizedCount);\n  }, [columnStorageKey, onFrozenColumnCountChange, orderedColumns.length, resolvedFrozenEndColumnCount]);\n\n  const setFrozenEndColumnCount = useCallback((nextCount: number) => {\n    const normalizedCount = clampFrozenColumnCount(nextCount, Math.max(0, orderedColumns.length - resolvedFrozenColumnCount));\n    setInternalFrozenEndColumnCount(normalizedCount);\n    persistFrozenEndColumnCount(columnStorageKey, normalizedCount);\n    onFrozenEndColumnCountChange?.(normalizedCount);\n  }, [columnStorageKey, onFrozenEndColumnCountChange, orderedColumns.length, resolvedFrozenColumnCount]);\n\n  const getFrozenPosition = (columnIndex: number) => {\n    if (columnIndex < resolvedFrozenColumnCount) return 'start';\n    if (columnIndex >= orderedColumns.length - resolvedFrozenEndColumnCount) return 'end';\n    return undefined;\n  };\n\n  const getFrozenClassName = (column: InteractiveTableColumn, columnIndex: number, isHeader = false) => {\n    const position = getFrozenPosition(columnIndex);\n    if (!position) return undefined;\n    return cn(\n      'sticky',\n      position === 'start' ? 'shadow-[1px_0_0_0_hsl(var(--border)/0.45)]' : 'shadow-[-1px_0_0_0_hsl(var(--border)/0.45)]',\n      isHeader ? 'bg-muted/60' : 'bg-inherit',\n      isHeader ? 'z-40' : 'z-20',\n      (columnIndex === 0 || columnIndex === orderedColumns.length - 1) && (isHeader ? 'z-50' : 'z-30'),\n    );\n  };\n\n  const getFrozenStyle = (column: InteractiveTableColumn, columnIndex: number): CSSProperties | undefined => {\n    const position = getFrozenPosition(columnIndex);\n    if (position === 'start') return { left: frozenOffsets.get(column.key) ?? 0 };\n    if (position === 'end') return { right: frozenEndOffsets.get(column.key) ?? 0 };\n    return undefined;\n  };\n\n  return (\n    <BaseTableContainer\n      appearance={appearance}\n      className={cn('flex h-full min-h-0 flex-col overflow-hidden rounded-lg border border-border/60 bg-card', classNames?.root, className)}\n      style={style}\n    >\n      <div\n        className={cn('min-h-0 flex-1 overflow-auto', classNames?.scrollArea)}\n        style={{ maxHeight: toCssSize(bodyMaxHeight) }}\n      >\n        <BaseTable\n          appearance={appearance}\n          columnOrder={resolvedColumnOrder}\n          columnSizes={resolvedColumnSizes}\n          columnDragEnabled={columnDragEnabled}\n          columnResizeEnabled={columnResizeEnabled}\n          onColumnOrderChange={handleColumnOrderChange}\n          onColumnSizeChange={handleColumnSizeChange}\n          className={cn('w-full table-fixed text-left text-xs', classNames?.table, tableClassName)}\n          style={{ minWidth: resolvedMinWidth }}\n        >\n          <colgroup>\n            {orderedColumns.map((column) => (\n              <col\n                key={column.key}\n                style={{\n                  width: toCssSize(resolvedColumnSizes[column.key] ?? column.width),\n                  minWidth: toCssSize(column.minWidth),\n                }}\n              />\n            ))}\n          </colgroup>\n          <BaseTableHeader appearance={appearance} className={cn('border-b border-border/60 bg-muted/60 text-[11px] font-medium text-muted-foreground', classNames?.tableHeader)}>\n            <BaseTableRow appearance={appearance} className={cn('hover:bg-transparent', classNames?.headerRow)}>\n              {orderedColumns.map((column, columnIndex) => {\n                const headerContent = renderColumnHeader\n                  ? renderColumnHeader(column, { column, columnIndex, columns: orderedColumns, rows })\n                  : column.label;\n                const sortable = Boolean(column.sortable);\n                const handleSort = sortable && onSort\n                  ? () => onSort(column.key, column)\n                  : undefined;\n                const isFrozenStart = columnIndex < resolvedFrozenColumnCount;\n                const isFrozenEnd = columnIndex >= orderedColumns.length - resolvedFrozenEndColumnCount;\n                const isFrozen = isFrozenStart || isFrozenEnd;\n                const isColumnAtDefaultWidth = getColumnNumericWidth(column, resolvedColumnSizes) === (defaultSizes[column.key] ?? getColumnDefaultSize(column));\n\n                return (\n                  <BaseContextMenu key={column.key} modal={false}>\n                    <BaseContextMenuTrigger asChild appearance={appearance}>\n                      <BaseTableHead\n                        appearance={appearance}\n                        columnId={column.key}\n                        align={column.align}\n                        label={headerContent}\n                        description={column.description}\n                        trailing={isFrozen ? (\n                          <span title={labels.frozenColumnTitle} className=\"inline-flex h-5 w-5 items-center justify-center rounded text-primary\">\n                            <PinIcon className=\"h-3.5 w-3.5\" />\n                          </span>\n                        ) : null}\n                        sortable={sortable}\n                        sortDirection={column.sortDirection}\n                        sortLabel={column.sortLabel}\n                        onSort={handleSort}\n                        draggable={column.draggable}\n                        resizable={column.resizable}\n                        width={column.width}\n                        minWidth={column.minWidth}\n                        maxWidth={column.maxWidth}\n                        className={cn(\n                          'sticky top-0 h-9 whitespace-nowrap border-r border-border/50 bg-muted/60 px-2.5 py-2 backdrop-blur',\n                          getFrozenClassName(column, columnIndex, true),\n                          column.headerClassName,\n                          column.className,\n                          classNames?.headerCell,\n                        )}\n                        style={getFrozenStyle(column, columnIndex)}\n                      />\n                    </BaseContextMenuTrigger>\n                    <BaseContextMenuContent appearance={appearance} alignOffset={-4} className=\"min-w-44\">\n                      <BaseContextMenuLabel appearance={appearance}>\n                        {labels.columnActions}\n                      </BaseContextMenuLabel>\n                      {isFrozen ? (\n                        <BaseContextMenuItem\n                          appearance={appearance}\n                          onSelect={() => {\n                            if (isFrozenEnd) setFrozenEndColumnCount(orderedColumns.length - columnIndex - 1);\n                            else setFrozenColumnCount(columnIndex);\n                          }}\n                        >\n                          {isFrozenEnd ? labels.unfreezeEndColumn : labels.unfreezeColumn}\n                        </BaseContextMenuItem>\n                      ) : (\n                        <BaseContextMenuItem\n                          appearance={appearance}\n                          onSelect={() => setFrozenColumnCount(columnIndex + 1)}\n                        >\n                          {labels.freezeColumn}\n                        </BaseContextMenuItem>\n                      )}\n                      {!isFrozen ? (\n                        <BaseContextMenuItem\n                          appearance={appearance}\n                          onSelect={() => setFrozenEndColumnCount(orderedColumns.length - columnIndex)}\n                        >\n                          {labels.freezeEndColumn}\n                        </BaseContextMenuItem>\n                      ) : null}\n                      <BaseContextMenuItem\n                        appearance={appearance}\n                        disabled={resolvedFrozenColumnCount === 0 && resolvedFrozenEndColumnCount === 0}\n                        onSelect={() => {\n                          setFrozenColumnCount(0);\n                          setFrozenEndColumnCount(0);\n                        }}\n                      >\n                        {labels.unfreezeAllColumns}\n                      </BaseContextMenuItem>\n                      <BaseContextMenuSeparator appearance={appearance} />\n                      <BaseContextMenuItem\n                        appearance={appearance}\n                        disabled={isColumnAtDefaultWidth}\n                        onSelect={() => handleResetColumnSize(column)}\n                      >\n                        {labels.resetColumnWidth}\n                      </BaseContextMenuItem>\n                    </BaseContextMenuContent>\n                  </BaseContextMenu>\n                );\n              })}\n            </BaseTableRow>\n          </BaseTableHeader>\n          <BaseTableBody appearance={appearance} className={cn('divide-y divide-border/50', classNames?.body)}>\n            {pinnedTopRows.map((row, rowIndex) => {\n              const key = getPinnedTopRowKey(row, rowIndex);\n              const resolvedRowClassName = resolveRowClassName(pinnedTopRowClassName, row, rowIndex);\n              return (\n                <BaseTableRow\n                  appearance={appearance}\n                  key={`pinned-${key}`}\n                  className={cn('bg-card/95', classNames?.pinnedTopRow, resolvedRowClassName)}\n                >\n                  {orderedColumns.map((column, columnIndex) => (\n                    <BaseTableCell\n                      appearance={appearance}\n                      key={`pinned-${key}-${column.key}`}\n                      align={column.align}\n                      className={cn(\n                        'h-[52px] border-r border-border/50 px-2.5 py-1.5 align-middle',\n                        column.wrap ? 'whitespace-normal' : 'whitespace-nowrap',\n                        getFrozenClassName(column, columnIndex),\n                        column.cellClassName,\n                        classNames?.cell,\n                      )}\n                      style={getFrozenStyle(column, columnIndex)}\n                    >\n                      <InteractiveTableCellContent wrap={column.wrap}>\n                        {renderPinnedTopCell\n                          ? renderPinnedTopCell(column, row, { row, rowIndex, column, columnIndex, isPinnedTopRow: true })\n                          : renderDefaultCell(column, row)}\n                      </InteractiveTableCellContent>\n                    </BaseTableCell>\n                  ))}\n                </BaseTableRow>\n              );\n            })}\n            {rows.length ? rows.map((row, rowIndex) => {\n              const key = getRowKey(row, rowIndex);\n              const state = getRowState?.(row, rowIndex) || {};\n              const resolvedRowClassName = resolveRowClassName(rowClassName, row, rowIndex);\n\n              return (\n                <BaseTableRow\n                  appearance={appearance}\n                  key={key}\n                  interactive={Boolean(onRowClick) && !state.disabled}\n                  selected={state.selected}\n                  disabled={state.disabled}\n                  onClick={() => {\n                    if (!state.disabled) onRowClick?.(row, rowIndex);\n                  }}\n                  className={cn(\n                    'min-h-[52px] bg-card transition-colors',\n                    state.saving && 'bg-primary/5',\n                    state.pending && 'opacity-80',\n                    onRowClick && !state.disabled ? 'cursor-pointer hover:bg-muted/30' : 'hover:bg-muted/30',\n                    classNames?.row,\n                    resolvedRowClassName,\n                  )}\n                >\n                  {orderedColumns.map((column, columnIndex) => (\n                    <BaseTableCell\n                      appearance={appearance}\n                      key={`${key}-${column.key}`}\n                      align={column.align}\n                      className={cn(\n                        'h-[52px] border-r border-border/50 px-2.5 py-1.5 align-middle',\n                        column.wrap ? 'whitespace-normal' : 'whitespace-nowrap',\n                        getFrozenClassName(column, columnIndex),\n                        column.cellClassName,\n                        classNames?.cell,\n                      )}\n                      style={getFrozenStyle(column, columnIndex)}\n                    >\n                      <InteractiveTableCellContent wrap={column.wrap}>\n                        {renderCell\n                          ? renderCell(column, row, { row, rowIndex, column, columnIndex, isPinnedTopRow: false })\n                          : renderDefaultCell(column, row)}\n                      </InteractiveTableCellContent>\n                    </BaseTableCell>\n                  ))}\n                </BaseTableRow>\n              );\n            }) : pinnedTopRows.length ? null : (\n              <BaseTableEmpty\n                appearance={appearance}\n                colSpan={Math.max(orderedColumns.length, 1)}\n                className={classNames?.empty}\n              >\n                {emptyState}\n              </BaseTableEmpty>\n            )}\n          </BaseTableBody>\n        </BaseTable>\n      </div>\n    </BaseTableContainer>\n  );\n}\n\nexport function InteractiveTableEditableTextCell({\n  value,\n  placeholder,\n  disabled,\n  multiline = false,\n  commitOnBlur = true,\n  className,\n  inputClassName,\n  onCommit,\n}: InteractiveTableEditableTextCellProps) {\n  const initialValue = String(value || '');\n  const [draft, setDraft] = useState(initialValue);\n\n  useEffect(() => {\n    setDraft(initialValue);\n  }, [initialValue]);\n\n  const commit = useCallback(async () => {\n    const nextValue = String(draft || '').trim();\n    const previousValue = String(initialValue || '').trim();\n    if (nextValue === previousValue) return;\n    try {\n      await onCommit?.(nextValue);\n    } catch {\n      setDraft(initialValue);\n    }\n  }, [draft, initialValue, onCommit]);\n\n  const controlClassName = cn(\n    'w-full resize-none rounded-sm border border-transparent bg-transparent px-1.5 py-1 text-xs text-foreground outline-none transition-colors',\n    'placeholder:text-muted-foreground/70 hover:border-border/60 hover:bg-background focus:border-primary/45 focus:bg-background',\n    multiline ? 'min-h-[42px] leading-5' : 'h-8',\n    disabled && 'cursor-not-allowed text-muted-foreground hover:border-transparent hover:bg-transparent',\n    inputClassName,\n  );\n\n  if (multiline) {\n    return (\n      <textarea\n        className={cn(controlClassName, className)}\n        disabled={disabled}\n        value={draft}\n        placeholder={placeholder}\n        onChange={(event) => setDraft(event.target.value)}\n        onBlur={() => {\n          if (commitOnBlur) void commit();\n        }}\n        onKeyDown={(event) => {\n          if ((event.metaKey || event.ctrlKey) && event.key === 'Enter') {\n            event.currentTarget.blur();\n          }\n          if (event.key === 'Escape') {\n            setDraft(initialValue);\n            event.currentTarget.blur();\n          }\n        }}\n      />\n    );\n  }\n\n  return (\n    <input\n      className={cn(controlClassName, className)}\n      disabled={disabled}\n      value={draft}\n      placeholder={placeholder}\n      onChange={(event) => setDraft(event.target.value)}\n      onBlur={() => {\n        if (commitOnBlur) void commit();\n      }}\n      onKeyDown={(event) => {\n        if (event.key === 'Enter') event.currentTarget.blur();\n        if (event.key === 'Escape') {\n          setDraft(initialValue);\n          event.currentTarget.blur();\n        }\n      }}\n    />\n  );\n}\n\nexport function InteractiveTableReadonlyCell({\n  children,\n  mono = false,\n  className,\n}: InteractiveTableReadonlyCellProps) {\n  return (\n    <div className={cn('min-w-0 text-xs text-muted-foreground', mono && 'font-mono', className)}>\n      {hasRenderableNode(children) ? children : '—'}\n    </div>\n  );\n}\n\nexport function InteractiveTableSelectCell<T extends string = string>({\n  value,\n  options,\n  disabled,\n  ariaLabel,\n  children,\n  className,\n  onChange,\n}: InteractiveTableSelectCellProps<T>) {\n  return (\n    <div className={cn('relative flex w-full items-center', className)}>\n      {children}\n      <select\n        aria-label={ariaLabel}\n        disabled={disabled}\n        value={value}\n        onChange={(event) => onChange?.(event.target.value as T)}\n        className=\"absolute inset-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n      >\n        {options.map((option) => (\n          <option key={option.value} value={option.value}>\n            {option.label}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../base/utils';\n\nconst imageExtPattern = /\\.(png|jpe?g|webp|gif|svg|bmp|avif)$/i;\nconst audioExtPattern = /\\.(wav|mp3|ogg|m4a|flac|aac)$/i;\n\nexport interface WorkbenchGalleryColumn {\n  key: string;\n  label?: ReactNode;\n  renderType?: string;\n  type?: string;\n  wrap?: boolean;\n  [key: string]: any;\n}\n\nconst isLikelyUrl = (value: unknown) => /^https?:\\/\\//i.test(String(value || ''));\nconst getColumnRenderKind = (column: WorkbenchGalleryColumn | undefined) => String(column?.renderType || column?.type || '').toLowerCase();\nconst isImageLikeValue = (value: unknown) => String(value || '').startsWith('data:image/') || imageExtPattern.test(String(value || ''));\nconst isAudioLikeValue = (value: unknown) => String(value || '').startsWith('data:audio/') || audioExtPattern.test(String(value || ''));\nconst escapeSvgText = (value: unknown) => String(value || '')\n  .replace(/&/g, '&amp;')\n  .replace(/</g, '&lt;')\n  .replace(/>/g, '&gt;');\n\nexport const getDefaultGalleryFieldValue = (column?: WorkbenchGalleryColumn, row?: any) => {\n  if (!column) return null;\n  return row?.[column.key] ?? null;\n};\n\nexport const getDefaultGalleryDisplayText = (value: unknown) => {\n  if (value === null || value === undefined || value === '') return '—';\n  if (Array.isArray(value)) {\n    const parts = value.map((item) => {\n      if (typeof item === 'string') return item;\n      if (!item || typeof item !== 'object') return '';\n      const objectItem = item as Record<string, any>;\n      return objectItem.text || objectItem.label || objectItem.title || objectItem.display || objectItem.value || objectItem.recordId || '';\n    }).filter(Boolean);\n    return parts.join(' · ') || '—';\n  }\n  if (typeof value === 'object') {\n    const objectValue = value as Record<string, any>;\n    return String(objectValue.text || objectValue.label || objectValue.title || objectValue.display || objectValue.value || '—');\n  }\n  return String(value);\n};\n\nexport const isDefaultGalleryImageField = (column: WorkbenchGalleryColumn = { key: '' }, value: unknown) => (\n  getColumnRenderKind(column) === 'image' || isImageLikeValue(value)\n);\n\nexport const isDefaultGalleryAudioField = (column: WorkbenchGalleryColumn = { key: '' }, value: unknown) => (\n  getColumnRenderKind(column) === 'audio' || isAudioLikeValue(value)\n);\n\nexport const getDefaultGalleryImagePreviewSrc = (value: unknown, rowId?: string | number, columnLabel?: ReactNode) => {\n  if (isLikelyUrl(value) || String(value || '').startsWith('data:image/')) return String(value);\n  const title = escapeSvgText(value || columnLabel || rowId || '');\n  const titleText = title\n    ? `<text x='68' y='450' fill='white' font-family='Inter, Arial' font-size='52' font-weight='700'>${title}</text>`\n    : '';\n  const svg = `<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 960 540'><defs><linearGradient id='g' x1='0' y1='0' x2='1' y2='1'><stop offset='0%' stop-color='#0f172a'/><stop offset='55%' stop-color='#1d4ed8'/><stop offset='100%' stop-color='#14b8a6'/></linearGradient></defs><rect width='960' height='540' fill='url(#g)'/><g opacity='0.28'><circle cx='780' cy='130' r='150' fill='#67e8f9'/><circle cx='180' cy='430' r='170' fill='#a78bfa'/></g>${titleText}</svg>`;\n  return `data:image/svg+xml;utf8,${encodeURIComponent(svg)}`;\n};\n\nexport const isDefaultGalleryMediaColumn = (\n  column: WorkbenchGalleryColumn | undefined,\n  row: any,\n  {\n    getFieldValue = getDefaultGalleryFieldValue,\n    shouldEnhanceMultimodal = true,\n    isImageField = isDefaultGalleryImageField,\n    isAudioField = isDefaultGalleryAudioField,\n  }: {\n    getFieldValue?: (column: WorkbenchGalleryColumn, row: any) => unknown;\n    shouldEnhanceMultimodal?: boolean;\n    isImageField?: (column: WorkbenchGalleryColumn, value: unknown) => boolean;\n    isAudioField?: (column: WorkbenchGalleryColumn, value: unknown) => boolean;\n  } = {},\n) => {\n  if (!column || !shouldEnhanceMultimodal) return false;\n  const value = getFieldValue(column, row);\n  return isImageField(column, value) || isAudioField(column, value);\n};\n\nexport const isDefaultGalleryTitleCandidate = (\n  column: WorkbenchGalleryColumn | undefined,\n  row: any,\n  { isMediaColumn = () => false }: { isMediaColumn?: (column: WorkbenchGalleryColumn, row: any) => boolean } = {},\n) => {\n  if (!column || column.renderType === 'icon') return false;\n  return !isMediaColumn(column, row);\n};\n\nexport const isDefaultGallerySummaryCandidate = (\n  column: WorkbenchGalleryColumn | undefined,\n  row: any,\n  { isMediaColumn = () => false }: { isMediaColumn?: (column: WorkbenchGalleryColumn, row: any) => boolean } = {},\n) => {\n  if (!column || column.renderType === 'icon') return false;\n  return !isMediaColumn(column, row);\n};\n\nexport const renderDefaultGalleryFieldValue = (\n  column: WorkbenchGalleryColumn,\n  row: any,\n  {\n    compact = false,\n    getFieldValue = getDefaultGalleryFieldValue,\n    getDisplayText = getDefaultGalleryDisplayText,\n  }: {\n    compact?: boolean;\n    getFieldValue?: (column: WorkbenchGalleryColumn, row: any) => unknown;\n    getDisplayText?: (value: unknown) => ReactNode;\n  } = {},\n) => {\n  const value = getFieldValue(column, row);\n  return (\n    <span className={cn('leading-relaxed', compact && column?.wrap === true && 'line-clamp-2 block')}>\n      {getDisplayText(value)}\n    </span>\n  );\n};\n","import {\n  type ComponentType,\n  type ReactNode,\n} from 'react';\n\nimport { cn, hasRenderableNode } from '../base/utils';\nimport {\n  getDefaultGalleryDisplayText,\n  getDefaultGalleryFieldValue,\n  getDefaultGalleryImagePreviewSrc,\n  isDefaultGalleryAudioField,\n  isDefaultGalleryImageField,\n  isDefaultGalleryMediaColumn,\n  isDefaultGallerySummaryCandidate,\n  isDefaultGalleryTitleCandidate,\n  renderDefaultGalleryFieldValue,\n  type WorkbenchGalleryColumn,\n} from './workbenchGalleryUtils';\nimport {\n  getWorkbenchIconComponent,\n  renderWorkbenchIcon,\n} from './workbenchIconUtils';\n\nexport interface WorkbenchGalleryRecordVisual {\n  Icon?: ComponentType<{ className?: string }> | ReactNode;\n  icon?: ComponentType<{ className?: string }> | ReactNode;\n  chipClassName?: string;\n  iconClassName?: string;\n  label?: ReactNode;\n  title?: ReactNode;\n  [key: string]: any;\n}\n\nexport interface WorkbenchGalleryLabels {\n  fieldCount?: (count: number) => ReactNode;\n  coverOnlyHint?: ReactNode;\n}\n\nexport interface WorkbenchGalleryCardProps<Row = any> {\n  row: Row;\n  columns: WorkbenchGalleryColumn[];\n  onClick?: () => void;\n  cardInteraction?: 'button' | 'container';\n  isSelected?: boolean;\n  isMasonry?: boolean;\n  galleryFieldKey?: string;\n  galleryDensity?: 'compact' | 'comfortable' | 'detailed' | string;\n  galleryBentoColumns?: 1 | 2 | 3 | number;\n  galleryDetailVisibility?: 'all' | 'limit' | string;\n  galleryDetailLimit?: number | string;\n  galleryDetailPresentation?: 'tiles' | 'lines';\n  shouldEnhanceMultimodal?: boolean;\n  getFieldValue?: (column: WorkbenchGalleryColumn, row: Row) => unknown;\n  isMediaColumn?: (column: WorkbenchGalleryColumn, row: Row) => boolean;\n  isTitleCandidate?: (column: WorkbenchGalleryColumn, row: Row) => boolean;\n  isSummaryCandidate?: (column: WorkbenchGalleryColumn, row: Row) => boolean;\n  getDisplayText?: (value: unknown) => ReactNode;\n  renderFieldValue?: (\n    column: WorkbenchGalleryColumn,\n    row: Row,\n    context: { compact?: boolean; surface?: string },\n  ) => ReactNode;\n  getImagePreviewSrc?: (value: unknown, rowId?: string | number, columnLabel?: ReactNode) => string;\n  isImageField?: (column: WorkbenchGalleryColumn, value: unknown) => boolean;\n  isAudioField?: (column: WorkbenchGalleryColumn, value: unknown) => boolean;\n  AudioPlayerComponent?: ComponentType<{ filename: string }>;\n  cardVariant?: 'default' | 'image-only' | 'preview-only' | 'chromatic-bento' | string;\n  renderPreview?: (context: WorkbenchGalleryCardRenderContext<Row>) => ReactNode;\n  renderMeta?: (context: WorkbenchGalleryCardMetaContext<Row>) => ReactNode;\n  renderLeadingVisual?: (context: WorkbenchGalleryCardMetaContext<Row> & { iconVisual?: WorkbenchGalleryRecordVisual | null }) => ReactNode;\n  resolveRecordVisual?: (value: unknown, row: Row, iconColumn?: WorkbenchGalleryColumn) => WorkbenchGalleryRecordVisual | null | undefined;\n  hiddenDetailFieldKeys?: string[];\n  labels?: WorkbenchGalleryLabels;\n  formatLabel?: (value: ReactNode, context?: { column?: WorkbenchGalleryColumn }) => ReactNode;\n  className?: string;\n}\n\nexport interface WorkbenchGalleryCardRenderContext<Row = any> {\n  row: Row;\n  mediaColumn?: WorkbenchGalleryColumn | null;\n  mediaValue: unknown;\n  isImageMedia: boolean;\n  isAudioMedia: boolean;\n  iconVisual?: WorkbenchGalleryRecordVisual | null;\n  IconComponent?: ComponentType<{ className?: string }> | null;\n  previewClassName: string;\n}\n\nexport interface WorkbenchGalleryCardMetaContext<Row = any> {\n  row: Row;\n  contentColumns: WorkbenchGalleryColumn[];\n  detailColumns: WorkbenchGalleryColumn[];\n  titleColumn?: WorkbenchGalleryColumn | null;\n  summaryColumn?: WorkbenchGalleryColumn | null;\n  getDisplayText: (value: unknown) => ReactNode;\n  getFieldValue: (column: WorkbenchGalleryColumn, row: Row) => unknown;\n}\n\nconst getDefaultGalleryDetailLimit = (density?: string) => {\n  if (density === 'compact') return 2;\n  if (density === 'detailed') return 6;\n  return 4;\n};\n\nconst getNormalizedGalleryBentoColumns = (columns: unknown, density?: string) => {\n  if (columns === 1 || columns === 2 || columns === 3) return Number(columns);\n  return density === 'detailed' ? 1 : 2;\n};\n\nconst getNormalizedGalleryDetailLimit = ({\n  density,\n  visibility,\n  limit,\n}: {\n  density?: string;\n  visibility?: string;\n  limit?: number | string;\n}) => {\n  if (visibility === 'all') return Number.POSITIVE_INFINITY;\n  const parsedLimit = Number.parseInt(String(limit), 10);\n  if (Number.isFinite(parsedLimit) && parsedLimit > 0) return parsedLimit;\n  return getDefaultGalleryDetailLimit(density);\n};\n\nconst getGalleryCardPaddingClassName = (density?: string) => {\n  if (density === 'compact') return 'p-3';\n  if (density === 'detailed') return 'p-4';\n  return 'p-3.5';\n};\n\nconst getGalleryPreviewClassName = (density?: string, isMasonry?: boolean) => {\n  if (isMasonry) return 'h-auto w-full object-cover';\n  if (density === 'compact') return 'h-32 w-full object-cover';\n  if (density === 'detailed') return 'h-48 w-full object-cover';\n  return 'h-40 w-full object-cover';\n};\n\nconst getGalleryDetailGridClassName = (columns: number) => {\n  if (columns === 1) return 'grid-cols-1';\n  if (columns === 3) return 'grid-cols-1 sm:grid-cols-2 2xl:grid-cols-3';\n  return 'grid-cols-1 sm:grid-cols-2';\n};\n\nfunction getIconComponent(icon: WorkbenchGalleryRecordVisual['Icon']) {\n  return getWorkbenchIconComponent(icon) as ComponentType<{ className?: string }> | null;\n}\n\nfunction defaultFormatLabel(value: ReactNode) {\n  return value;\n}\n\nfunction getLabelText(value: ReactNode) {\n  if (typeof value === 'string' || typeof value === 'number') return String(value);\n  return '';\n}\n\nexport function WorkbenchGalleryCard<Row = any>({\n  row,\n  columns,\n  onClick,\n  cardInteraction = 'button',\n  isSelected = false,\n  isMasonry = false,\n  galleryFieldKey = 'auto',\n  galleryDensity = 'comfortable',\n  galleryBentoColumns,\n  galleryDetailVisibility = 'limit',\n  galleryDetailLimit,\n  galleryDetailPresentation = 'tiles',\n  shouldEnhanceMultimodal = true,\n  getFieldValue,\n  isMediaColumn,\n  isTitleCandidate,\n  isSummaryCandidate,\n  getDisplayText,\n  renderFieldValue,\n  getImagePreviewSrc,\n  isImageField,\n  isAudioField,\n  AudioPlayerComponent,\n  cardVariant = 'default',\n  renderPreview,\n  renderMeta,\n  renderLeadingVisual,\n  resolveRecordVisual,\n  hiddenDetailFieldKeys = [],\n  labels,\n  formatLabel = defaultFormatLabel,\n  className,\n}: WorkbenchGalleryCardProps<Row>) {\n  const resolvedGetFieldValue = getFieldValue || getDefaultGalleryFieldValue;\n  const resolvedGetDisplayText = getDisplayText || getDefaultGalleryDisplayText;\n  const resolvedIsImageField = isImageField || isDefaultGalleryImageField;\n  const resolvedIsAudioField = isAudioField || isDefaultGalleryAudioField;\n  const resolvedGetImagePreviewSrc = getImagePreviewSrc || getDefaultGalleryImagePreviewSrc;\n  const resolvedIsMediaColumn = isMediaColumn || ((column: WorkbenchGalleryColumn, candidateRow: Row) => (\n    isDefaultGalleryMediaColumn(column, candidateRow, {\n      getFieldValue: resolvedGetFieldValue as any,\n      shouldEnhanceMultimodal,\n      isImageField: resolvedIsImageField,\n      isAudioField: resolvedIsAudioField,\n    })\n  ));\n  const resolvedIsTitleCandidate = isTitleCandidate || ((column: WorkbenchGalleryColumn, candidateRow: Row) => (\n    isDefaultGalleryTitleCandidate(column, candidateRow, { isMediaColumn: resolvedIsMediaColumn as any })\n  ));\n  const resolvedIsSummaryCandidate = isSummaryCandidate || ((column: WorkbenchGalleryColumn, candidateRow: Row) => (\n    isDefaultGallerySummaryCandidate(column, candidateRow, { isMediaColumn: resolvedIsMediaColumn as any })\n  ));\n  const resolvedRenderFieldValue = renderFieldValue || ((column: WorkbenchGalleryColumn, candidateRow: Row, { compact } = {}) => (\n    renderDefaultGalleryFieldValue(column, candidateRow, {\n      compact,\n      getFieldValue: resolvedGetFieldValue as any,\n      getDisplayText: resolvedGetDisplayText,\n    })\n  ));\n  const isPreviewOnly = cardVariant === 'preview-only';\n  const isImageOnly = cardVariant === 'image-only';\n  const isChromaticBento = cardVariant === 'chromatic-bento';\n  const selectedGalleryColumn = galleryFieldKey !== 'auto'\n    ? columns.find((column) => column.key === galleryFieldKey && resolvedIsMediaColumn(column, row))\n    : null;\n  const mediaColumn = selectedGalleryColumn || (shouldEnhanceMultimodal ? columns.find((column) => resolvedIsMediaColumn(column, row)) : null);\n  const iconColumn = columns.find((column) => column.renderType === 'icon');\n  const iconVisual = iconColumn && resolveRecordVisual ? resolveRecordVisual((row as any)[iconColumn.key], row, iconColumn) : null;\n  const IconComponent = getIconComponent(iconVisual?.Icon || iconVisual?.icon);\n  const mediaValue = mediaColumn ? resolvedGetFieldValue(mediaColumn, row) : null;\n  const isImageMedia = mediaColumn ? resolvedIsImageField(mediaColumn, mediaValue) : false;\n  const isAudioMedia = mediaColumn ? resolvedIsAudioField(mediaColumn, mediaValue) : false;\n  const contentColumns = columns.filter((column) => column.key !== mediaColumn?.key && column.renderType !== 'icon');\n  const titleCandidates = contentColumns.filter((column) => {\n    if (!column || resolvedIsMediaColumn(column, row) || !resolvedIsTitleCandidate(column, row)) return false;\n    const value = resolvedGetFieldValue(column, row);\n    return !(value === null || value === undefined || value === '');\n  });\n  const titleColumn = titleCandidates[0] || null;\n  const titleText = titleColumn ? resolvedGetDisplayText(resolvedGetFieldValue(titleColumn, row)) : resolvedGetDisplayText((row as any).linkKey || (row as any).id);\n  const summaryCandidates = contentColumns.filter(column => column && column.key !== titleColumn?.key && !resolvedIsMediaColumn(column, row) && resolvedIsSummaryCandidate(column, row));\n  const summaries = summaryCandidates.map(column => ({ column, text: String(resolvedGetDisplayText(resolvedGetFieldValue(column, row))) }));\n  const summaryColumn = (summaries.find(({ text }) => text !== '—' && text.length > 12)\n    || summaries.find(({ text }) => text !== '—'))?.column || null;\n  const summaryText = summaryColumn ? resolvedGetDisplayText(resolvedGetFieldValue(summaryColumn, row)) : '';\n  const hiddenDetailKeySet = new Set(hiddenDetailFieldKeys);\n  const detailColumns = contentColumns\n    .filter((column) => column.key !== titleColumn?.key && column.key !== summaryColumn?.key && !hiddenDetailKeySet.has(column.key));\n  const resolvedDetailLimit = getNormalizedGalleryDetailLimit({\n    density: galleryDensity,\n    visibility: galleryDetailVisibility,\n    limit: galleryDetailLimit,\n  });\n  const visibleDetailColumns = Number.isFinite(resolvedDetailLimit)\n    ? detailColumns.slice(0, resolvedDetailLimit)\n    : detailColumns;\n  const isDetailedCard = galleryDensity === 'detailed';\n  const resolvedBentoColumns = getNormalizedGalleryBentoColumns(galleryBentoColumns, galleryDensity);\n  const cardPaddingClassName = getGalleryCardPaddingClassName(galleryDensity);\n  const detailGridClassName = getGalleryDetailGridClassName(resolvedBentoColumns);\n  const lineDetails = galleryDetailPresentation === 'lines';\n  const previewClassName = isImageOnly\n    ? 'block h-auto w-full transition-transform duration-500 group-hover:scale-[1.02]'\n    : getGalleryPreviewClassName(galleryDensity, isMasonry);\n  const customPreview = typeof renderPreview === 'function'\n    ? renderPreview({\n      row,\n      mediaColumn,\n      mediaValue,\n      isImageMedia,\n      isAudioMedia,\n      iconVisual,\n      IconComponent,\n      previewClassName,\n    })\n    : null;\n  const metaContext = { row, contentColumns, detailColumns, titleColumn, summaryColumn, getDisplayText: resolvedGetDisplayText, getFieldValue: resolvedGetFieldValue as any };\n  const metaContent = renderMeta?.(metaContext) ?? null;\n  const customLeadingVisual = renderLeadingVisual?.({ ...metaContext, iconVisual }) ?? null;\n  const defaultLeadingVisual = !customLeadingVisual && iconVisual ? (\n    <div className={cn('flex h-9 w-9 items-center justify-center rounded-lg border', iconVisual.chipClassName || 'border-primary/20 bg-primary/10 text-primary')}>\n      {renderWorkbenchIcon(iconVisual.Icon || iconVisual.icon, cn('h-4 w-4', iconVisual.iconClassName || 'text-primary'))}\n    </div>\n  ) : null;\n  const leadingVisual = customLeadingVisual || defaultLeadingVisual;\n  const defaultMetaClassName = isChromaticBento\n    ? 'shrink-0 rounded-full border border-border/40 bg-muted/25 px-2.5 py-1 text-[10px] text-muted-foreground transition-all duration-300 group-hover:border-primary/30 group-hover:bg-primary/10 group-hover:text-primary dark:border-border/35 dark:bg-muted/15'\n    : 'shrink-0 rounded-md border border-border/40 bg-muted/25 px-2 py-1 text-[10px] text-muted-foreground dark:border-border/35 dark:bg-muted/15';\n  const detailCellClassName = isChromaticBento\n    ? 'rounded-xl border border-border/35 bg-muted/20 px-3 py-2.5 transition-all duration-300 group-hover:border-primary/25 group-hover:bg-primary/5 dark:border-border/30 dark:bg-muted/10'\n    : 'rounded-lg border border-border/35 bg-muted/20 px-2.5 py-2 dark:border-border/30 dark:bg-muted/10';\n  const detailLabelClassName = isChromaticBento\n    ? 'text-[10px] uppercase tracking-[0.14em] text-muted-foreground transition-colors duration-300 group-hover:text-foreground'\n    : 'text-[10px] uppercase tracking-[0.12em] text-muted-foreground';\n  const detailValueClassName = isChromaticBento\n    ? 'mt-1.5 text-[11px] text-muted-foreground transition-colors duration-300 group-hover:text-foreground [&_*]:max-w-full [&_pre]:text-[11px] [&_pre]:leading-relaxed'\n    : 'mt-1.5 text-[11px] text-foreground [&_*]:max-w-full [&_pre]:text-[11px] [&_pre]:leading-relaxed';\n  const fieldCountLabel = labels?.fieldCount?.(contentColumns.length);\n  const coverOnlyHint = labels?.coverOnlyHint;\n\n  const Root = cardInteraction === 'container' ? 'div' : 'button';\n  return (\n    <Root\n      type={cardInteraction === 'button' ? 'button' : undefined}\n      onClick={cardInteraction === 'button' ? onClick : undefined}\n      aria-label={getLabelText(titleText)}\n      className={cn(\n        'group relative w-full rounded-lg text-left transition-all duration-300',\n        isImageOnly\n          ? 'overflow-hidden bg-transparent p-0 shadow-none'\n          : isPreviewOnly\n            ? 'overflow-hidden bg-transparent p-0'\n            : cn('overflow-hidden border', isChromaticBento && 'shadow-none'),\n        !isPreviewOnly && !isImageOnly && cardPaddingClassName,\n        !isPreviewOnly && !isImageOnly && (isSelected\n          ? (isChromaticBento\n            ? 'border-primary/35 bg-background/85 ring-1 ring-primary/20'\n            : 'border-primary/40 bg-primary/10 ring-1 ring-primary/30')\n          : (isChromaticBento\n            ? 'workbench-surface-card hover:-translate-y-1 hover:border-primary/20'\n            : 'workbench-surface-card hover:border-primary/30')),\n        isPreviewOnly && isSelected && 'ring-1 ring-primary/30',\n        isImageOnly && (isSelected ? 'ring-1 ring-primary/30' : 'hover:-translate-y-0.5'),\n        isMasonry ? 'block h-full w-full min-w-0' : 'h-full min-w-0',\n        className,\n      )}\n    >\n      {isChromaticBento ? (\n        <div\n          aria-hidden=\"true\"\n          className={cn(\n            'pointer-events-none absolute inset-0 bg-[radial-gradient(circle_at_top_right,hsl(var(--primary)/0.18),transparent_40%),radial-gradient(circle_at_bottom_left,hsl(var(--accent)/0.18),transparent_45%)] opacity-0 transition-opacity duration-300',\n            isSelected ? 'opacity-100' : 'group-hover:opacity-100',\n          )}\n        />\n      ) : null}\n\n      <div className={cn('relative z-[1]', (isImageOnly || isPreviewOnly) && 'rounded-[inherit]')}>\n        {customPreview ?? (\n          <>\n            {isImageMedia && mediaColumn ? (\n              <div className={cn(\n                'overflow-hidden bg-card/50',\n                isImageOnly\n                  ? 'rounded-[inherit] bg-transparent'\n                  : isPreviewOnly\n                    ? 'rounded-[inherit]'\n                    : 'mb-3 rounded-lg border border-border/70',\n              )}>\n                <img\n                  src={resolvedGetImagePreviewSrc(mediaValue, (row as any).id, mediaColumn.label)}\n                  alt={String(mediaValue || mediaColumn.label || '')}\n                  className={previewClassName}\n                  loading=\"lazy\"\n                  referrerPolicy=\"no-referrer\"\n                  onError={(event) => {\n                    event.currentTarget.onerror = null;\n                    event.currentTarget.src = resolvedGetImagePreviewSrc('', (row as any).id, mediaColumn.label);\n                  }}\n                />\n              </div>\n            ) : null}\n\n            {!isImageMedia && iconVisual && isPreviewOnly ? (\n              <div className={cn(\n                'flex items-center justify-center',\n                'rounded-[inherit] border py-10', iconVisual.chipClassName || 'border-primary/20 bg-primary/5',\n              )}>\n                {renderWorkbenchIcon(iconVisual.Icon || iconVisual.icon, cn('h-10 w-10', iconVisual.iconClassName || 'text-primary'))}\n              </div>\n            ) : null}\n\n            {isAudioMedia && AudioPlayerComponent ? (\n              <div className={cn(!isPreviewOnly && 'mb-3')}>\n                <AudioPlayerComponent filename={String(mediaValue)} />\n              </div>\n            ) : null}\n          </>\n        )}\n\n        {!isPreviewOnly && !isImageOnly ? (\n          <>\n            <div className=\"flex items-start gap-3\">\n              {leadingVisual ? <div className=\"shrink-0\">{leadingVisual}</div> : null}\n              <div className=\"flex min-w-0 flex-1 items-start justify-between gap-3\">\n                <div className=\"min-w-0 flex-1\">\n                  <div className={cn(\n                    'flex items-center gap-2 text-sm font-semibold',\n                    isChromaticBento ? 'text-muted-foreground transition-colors duration-300 group-hover:text-foreground' : 'text-foreground',\n                  )}>\n                    <span className=\"truncate\">{cardInteraction === 'container' && onClick ? <button type=\"button\" onClick={onClick} className=\"border-0 bg-transparent p-0 text-left hover:underline\" style={{ font: 'inherit', color: 'inherit' }}>{titleText}</button> : titleText}</span>\n                  </div>\n                  {summaryText && summaryText !== titleText ? (\n                    <div className={cn(\n                      'mt-1 text-[11px] leading-5 text-muted-foreground',\n                      isDetailedCard ? 'line-clamp-4' : 'line-clamp-2',\n                      isChromaticBento && 'transition-colors duration-300 group-hover:text-foreground',\n                    )}>\n                      {summaryText}\n                    </div>\n                  ) : null}\n                </div>\n                {metaContent ?? (hasRenderableNode(fieldCountLabel) ? (\n                  <span className={defaultMetaClassName}>\n                    {fieldCountLabel}\n                  </span>\n                ) : null)}\n              </div>\n            </div>\n\n            {visibleDetailColumns.length > 0 ? (\n              <div data-gallery-detail-presentation={galleryDetailPresentation} className={cn('mt-3 grid grid-flow-row gap-2', lineDetails ? 'grid-cols-1' : detailGridClassName)}>\n                {visibleDetailColumns.map((column) => (\n                  <div key={`${(row as any).id || (row as any).linkKey}-${column.key}`} className={lineDetails ? 'flex min-w-0 items-start gap-2 text-xs' : detailCellClassName}>\n                    {column.label ? <div className={lineDetails ? 'shrink-0 text-muted-foreground' : detailLabelClassName}>{formatLabel(column.label, { column })}</div> : null}\n                    <div className={lineDetails ? 'min-w-0 text-foreground' : cn(detailValueClassName, !column.label && 'mt-0')}>\n                      {resolvedRenderFieldValue(column, row, { compact: galleryDensity !== 'detailed', surface: 'gallery' })}\n                    </div>\n                  </div>\n                ))}\n              </div>\n            ) : null}\n\n            {!summaryText && visibleDetailColumns.length === 0 && hasRenderableNode(coverOnlyHint) ? (\n              <div className={cn(\n                'mt-3 text-[11px] text-muted-foreground',\n                isChromaticBento && 'transition-colors duration-300 group-hover:text-foreground',\n              )}>\n                {coverOnlyHint}\n              </div>\n            ) : null}\n          </>\n        ) : null}\n      </div>\n    </Root>\n  );\n}\n","import {\n  useEffect,\n  useLayoutEffect,\n  useMemo,\n  useRef,\n  useState,\n  type HTMLAttributes,\n  type ReactNode,\n} from 'react';\n\nimport { cn } from '../base/utils';\n\nconst DEFAULT_MASONRY_GAP_PX = 12;\nconst DEFAULT_MASONRY_ROW_HEIGHT_PX = 8;\nconst DEFAULT_MASONRY_COLUMN_WIDTH_PX = 280;\nconst DEFAULT_MASONRY_ITEM_HEIGHT_PX = 240;\nconst useIsomorphicLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\nexport interface WorkbenchMasonryItemSize {\n  width?: number | string;\n  height?: number | string;\n  columnSpan?: number;\n  rowSpan?: number;\n}\n\nexport interface WorkbenchMasonryLayoutContext {\n  columnCount: number;\n  columnSpan?: number;\n  columnWidth: number;\n  containerWidth: number;\n  gap: number;\n  itemWidth?: number;\n  placementStrategy: 'shelf' | 'shortest' | 'dense';\n  rowSpan?: number;\n  rowHeight: number;\n  size?: WorkbenchMasonryItemSize;\n}\n\nexport interface WorkbenchMasonryLayoutProps<Item = any> {\n  items?: readonly Item[];\n  renderItem: (item: Item, context: WorkbenchMasonryLayoutContext) => ReactNode;\n  getItemKey?: (item: Item, index: number) => string | number;\n  getItemSize?: (item: Item, context: WorkbenchMasonryLayoutContext) => WorkbenchMasonryItemSize | undefined;\n  columnWidth?: number | string;\n  columnCount?: number;\n  gap?: number;\n  rowHeight?: number;\n  placementStrategy?: 'shelf' | 'shortest' | 'dense';\n  containerProps?: Omit<HTMLAttributes<HTMLDivElement>, 'children'>;\n  getItemProps?: (\n    item: Item,\n    context: WorkbenchMasonryLayoutContext,\n  ) => Omit<HTMLAttributes<HTMLDivElement>, 'children'>;\n  className?: string;\n}\n\nfunction clamp(value: number, min: number, max: number) {\n  return Math.min(Math.max(value, min), max);\n}\n\nfunction getRootFontSize(node: Element | null) {\n  if (typeof window === 'undefined') return 16;\n  const target = node || document.documentElement;\n  const parsed = Number.parseFloat(window.getComputedStyle(target).fontSize);\n  return Number.isFinite(parsed) && parsed > 0 ? parsed : 16;\n}\n\nfunction resolveLengthToPixels(value: number | string | undefined, fallback: number, node: Element | null) {\n  if (typeof value === 'number' && Number.isFinite(value) && value > 0) return value;\n  if (typeof value !== 'string') return fallback;\n\n  const normalized = value.trim().toLowerCase();\n  if (!normalized) return fallback;\n\n  if (/^\\d+(\\.\\d+)?$/.test(normalized)) {\n    const parsed = Number.parseFloat(normalized);\n    return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;\n  }\n\n  if (normalized.endsWith('px')) {\n    const parsed = Number.parseFloat(normalized);\n    return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;\n  }\n\n  if (normalized.endsWith('rem')) {\n    const parsed = Number.parseFloat(normalized);\n    if (!Number.isFinite(parsed) || parsed <= 0) return fallback;\n    return parsed * getRootFontSize(node);\n  }\n\n  return fallback;\n}\n\nfunction areMeasurementMapsEqual(prev: Record<string, number>, next: Record<string, number>) {\n  const prevKeys = Object.keys(prev);\n  const nextKeys = Object.keys(next);\n  if (prevKeys.length !== nextKeys.length) return false;\n\n  for (const key of nextKeys) {\n    if (prev[key] !== next[key]) return false;\n  }\n\n  return true;\n}\n\nfunction getMasonryColumnCount({\n  containerWidth,\n  itemCount,\n  targetColumnWidth,\n  gap,\n}: {\n  containerWidth: number;\n  itemCount: number;\n  targetColumnWidth: number;\n  gap: number;\n}) {\n  if (!containerWidth) return 1;\n\n  const safeItemCount = Math.max(itemCount, 1);\n  const maxCandidate = Math.max(\n    1,\n    Math.min(\n      safeItemCount,\n      Math.ceil((containerWidth + gap) / (Math.max(targetColumnWidth * 0.58, 1) + gap)),\n    ),\n  );\n\n  let bestCount = 1;\n  let bestScore = Number.POSITIVE_INFINITY;\n\n  for (let candidateCount = 1; candidateCount <= maxCandidate; candidateCount += 1) {\n    const actualColumnWidth = (containerWidth - gap * Math.max(candidateCount - 1, 0)) / candidateCount;\n    if (!Number.isFinite(actualColumnWidth) || actualColumnWidth <= 0) continue;\n\n    const underflowPenalty = Math.max(0, targetColumnWidth * 0.78 - actualColumnWidth);\n    const overflowPenalty = Math.max(0, actualColumnWidth - targetColumnWidth * 1.35);\n    const candidateScore = Math.abs(actualColumnWidth - targetColumnWidth) + underflowPenalty * 3 + overflowPenalty * 2;\n\n    if (candidateScore < bestScore) {\n      bestScore = candidateScore;\n      bestCount = candidateCount;\n    }\n  }\n\n  return bestCount;\n}\n\nfunction getItemColumnSpan({\n  size,\n  columnWidth,\n  columnCount,\n  gap,\n}: {\n  size?: WorkbenchMasonryItemSize;\n  columnWidth: number;\n  columnCount: number;\n  gap: number;\n}) {\n  if (Number.isFinite(size?.columnSpan) && Number(size?.columnSpan) > 0) {\n    return clamp(Math.round(Number(size?.columnSpan)), 1, columnCount);\n  }\n\n  const itemWidth = resolveLengthToPixels(size?.width, columnWidth, null);\n  return clamp(Math.ceil((itemWidth + gap) / (columnWidth + gap)), 1, columnCount);\n}\n\nfunction getItemRowSpan({\n  size,\n  measuredHeight,\n  rowHeight,\n  gap,\n}: {\n  size?: WorkbenchMasonryItemSize;\n  measuredHeight?: number;\n  rowHeight: number;\n  gap: number;\n}) {\n  if (Number.isFinite(size?.rowSpan) && Number(size?.rowSpan) > 0) {\n    return Math.max(1, Math.round(Number(size?.rowSpan)));\n  }\n\n  const itemHeight = Number.isFinite(measuredHeight) && Number(measuredHeight) > 0\n    ? Number(measuredHeight)\n    : resolveLengthToPixels(size?.height, DEFAULT_MASONRY_ITEM_HEIGHT_PX, null);\n\n  return Math.max(1, Math.ceil((itemHeight + gap) / (rowHeight + gap)));\n}\n\nfunction getResolvedItemHeight({\n  size,\n  measuredHeight,\n}: {\n  size?: WorkbenchMasonryItemSize;\n  measuredHeight?: number;\n}) {\n  return Number.isFinite(measuredHeight) && Number(measuredHeight) > 0\n    ? Number(measuredHeight)\n    : resolveLengthToPixels(size?.height, DEFAULT_MASONRY_ITEM_HEIGHT_PX, null);\n}\n\nexport function WorkbenchMasonryLayout<Item = any>({\n  items = [],\n  renderItem,\n  getItemKey = (item: any, index: number) => item?.id ?? item?.key ?? index,\n  getItemSize,\n  columnWidth = DEFAULT_MASONRY_COLUMN_WIDTH_PX,\n  columnCount: requestedColumnCount,\n  gap = DEFAULT_MASONRY_GAP_PX,\n  rowHeight = DEFAULT_MASONRY_ROW_HEIGHT_PX,\n  placementStrategy = 'shelf',\n  containerProps,\n  getItemProps,\n  className,\n}: WorkbenchMasonryLayoutProps<Item>) {\n  const containerRef = useRef<HTMLDivElement | null>(null);\n  const itemNodesRef = useRef(new Map<string, HTMLDivElement>());\n  const itemObserverRef = useRef<ResizeObserver | null>(null);\n  const [containerWidth, setContainerWidth] = useState(0);\n  const [measuredHeights, setMeasuredHeights] = useState<Record<string, number>>({});\n  const itemKeys = useMemo(\n    () => items.map((item, index) => String(getItemKey(item, index))),\n    [getItemKey, items],\n  );\n  const itemKeysSignature = itemKeys.join('|');\n\n  useEffect(() => {\n    const node = containerRef.current;\n    if (!node) return undefined;\n\n    const updateWidth = () => {\n      const nextWidth = Math.round(node.getBoundingClientRect().width);\n      setContainerWidth((prevWidth) => (prevWidth === nextWidth ? prevWidth : nextWidth));\n    };\n\n    updateWidth();\n\n    if (typeof ResizeObserver === 'function') {\n      const observer = new ResizeObserver(() => updateWidth());\n      observer.observe(node);\n      return () => observer.disconnect();\n    }\n\n    window.addEventListener('resize', updateWidth);\n    return () => window.removeEventListener('resize', updateWidth);\n  }, []);\n\n  useEffect(() => {\n    setMeasuredHeights((prev) => {\n      const currentItemKeys = new Set(itemKeys);\n      const next = Object.fromEntries(\n        Object.entries(prev).filter(([key]) => currentItemKeys.has(key)),\n      );\n\n      return areMeasurementMapsEqual(prev, next) ? prev : next;\n    });\n  }, [itemKeys, itemKeysSignature]);\n\n  const resolvedTargetColumnWidth = resolveLengthToPixels(\n    columnWidth,\n    DEFAULT_MASONRY_COLUMN_WIDTH_PX,\n    containerRef.current,\n  );\n  const isDensePlacement = placementStrategy === 'dense';\n  const normalizedRequestedColumnCount = Number.isFinite(requestedColumnCount) && Number(requestedColumnCount) > 0\n    ? clamp(Math.round(Number(requestedColumnCount)), 1, 24)\n    : undefined;\n  const columnCount = normalizedRequestedColumnCount || getMasonryColumnCount({\n      containerWidth,\n      itemCount: items.length,\n      targetColumnWidth: resolvedTargetColumnWidth,\n      gap,\n    });\n  const resolvedColumnWidth = containerWidth > 0\n    ? (containerWidth - gap * Math.max(columnCount - 1, 0)) / columnCount\n    : resolvedTargetColumnWidth;\n\n  const layoutItems = useMemo(() => items.map((item, index) => {\n    const key = itemKeys[index];\n    const size = typeof getItemSize === 'function'\n      ? getItemSize(item, {\n        columnCount,\n        columnWidth: resolvedColumnWidth,\n        containerWidth,\n        gap,\n        placementStrategy,\n        rowHeight,\n      }) || {}\n      : {};\n\n    return {\n      key,\n      item,\n      size,\n      columnSpan: getItemColumnSpan({\n        size,\n        columnWidth: resolvedColumnWidth,\n        columnCount,\n        gap,\n      }),\n      rowSpan: getItemRowSpan({\n        size,\n        measuredHeight: measuredHeights[key],\n        rowHeight,\n        gap,\n      }),\n    };\n  }), [\n    columnCount,\n    containerWidth,\n    gap,\n    getItemSize,\n    itemKeys,\n    items,\n    measuredHeights,\n    placementStrategy,\n    resolvedColumnWidth,\n    rowHeight,\n  ]);\n\n  useIsomorphicLayoutEffect(() => {\n    const nextMeasurements: Record<string, number> = {};\n\n    itemNodesRef.current.forEach((node, key) => {\n      const nextHeight = Math.ceil(node.getBoundingClientRect().height);\n      if (Number.isFinite(nextHeight) && nextHeight > 0) {\n        nextMeasurements[key] = nextHeight;\n      }\n    });\n\n    setMeasuredHeights((prev) => {\n      if (!Object.keys(nextMeasurements).length) return prev;\n      const merged = { ...prev, ...nextMeasurements };\n      return areMeasurementMapsEqual(prev, merged) ? prev : merged;\n    });\n  }, [columnCount, isDensePlacement, itemKeysSignature, resolvedColumnWidth]);\n\n  useEffect(() => {\n    if (typeof ResizeObserver !== 'function') return undefined;\n\n    const observer = new ResizeObserver((entries) => {\n      setMeasuredHeights((prev) => {\n        const next = { ...prev };\n        let didChange = false;\n\n        for (const entry of entries) {\n          const key = (entry.target as HTMLElement).dataset.masonryKey;\n          if (!key) continue;\n          const nextHeight = Math.ceil(entry.contentRect.height);\n          if (!Number.isFinite(nextHeight) || nextHeight <= 0 || next[key] === nextHeight) continue;\n          next[key] = nextHeight;\n          didChange = true;\n        }\n\n        return didChange ? next : prev;\n      });\n    });\n\n    itemObserverRef.current = observer;\n    itemNodesRef.current.forEach((node) => observer.observe(node));\n\n    return () => {\n      observer.disconnect();\n      itemObserverRef.current = null;\n    };\n  }, [isDensePlacement, itemKeysSignature]);\n\n  const registerItemNode = (key: string, node: HTMLDivElement | null) => {\n    const currentNodes = itemNodesRef.current;\n    const previousNode = currentNodes.get(key);\n\n    if (previousNode && previousNode !== node && itemObserverRef.current) {\n      itemObserverRef.current.unobserve(previousNode);\n    }\n\n    if (!node) {\n      currentNodes.delete(key);\n      return;\n    }\n\n    node.dataset.masonryKey = key;\n    currentNodes.set(key, node);\n\n    if (itemObserverRef.current) {\n      itemObserverRef.current.observe(node);\n    }\n  };\n\n  if (!isDensePlacement) {\n    const orderedLayout = (() => {\n      const columnBottoms = Array.from({ length: columnCount }, () => 0);\n      let nextColumnIndex = 0;\n      let maxBottom = 0;\n\n      const positionedItems = layoutItems.map(({ key, item, columnSpan, rowSpan, size }) => {\n        const resolvedSpan = clamp(columnSpan, 1, columnCount);\n        let startColumn = nextColumnIndex;\n\n        if (placementStrategy === 'shortest') {\n          let shortestBottom = Number.POSITIVE_INFINITY;\n          for (let candidate = 0; candidate <= columnCount - resolvedSpan; candidate += 1) {\n            const candidateBottom = Math.max(...columnBottoms.slice(candidate, candidate + resolvedSpan));\n            if (candidateBottom < shortestBottom) {\n              shortestBottom = candidateBottom;\n              startColumn = candidate;\n            }\n          }\n        } else {\n          if (startColumn + resolvedSpan > columnCount) {\n            startColumn = 0;\n          }\n\n          startColumn = Math.min(startColumn, columnCount - resolvedSpan);\n        }\n\n        const itemWidth = resolvedColumnWidth * resolvedSpan + gap * Math.max(resolvedSpan - 1, 0);\n        const itemHeight = getResolvedItemHeight({\n          size,\n          measuredHeight: measuredHeights[key],\n        });\n        const top = Math.max(...columnBottoms.slice(startColumn, startColumn + resolvedSpan));\n        const left = startColumn * (resolvedColumnWidth + gap);\n        const bottom = top + itemHeight;\n\n        for (let columnIndex = startColumn; columnIndex < startColumn + resolvedSpan; columnIndex += 1) {\n          columnBottoms[columnIndex] = bottom + gap;\n        }\n\n        maxBottom = Math.max(maxBottom, bottom);\n        if (placementStrategy !== 'shortest') {\n          nextColumnIndex = startColumn + resolvedSpan;\n\n          if (nextColumnIndex >= columnCount) {\n            nextColumnIndex = 0;\n          }\n        }\n\n        return {\n          key,\n          item,\n          columnSpan: resolvedSpan,\n          itemHeight,\n          itemWidth,\n          left,\n          rowSpan,\n          size,\n          top,\n        };\n      });\n\n      return {\n        containerHeight: Math.max(0, maxBottom),\n        positionedItems,\n      };\n    })();\n\n    return (\n      <div\n        ref={containerRef}\n        {...containerProps}\n        className={cn('relative w-full', className, containerProps?.className)}\n        style={{ ...containerProps?.style, height: `${orderedLayout.containerHeight}px` }}\n      >\n        {orderedLayout.positionedItems.map(({ key, item, columnSpan, rowSpan, size, itemWidth, left, top }) => {\n          const unresolvedSingleColumnWidth = containerWidth <= 0 && columnCount === 1;\n          const itemWidthValue = unresolvedSingleColumnWidth ? '100%' : `${itemWidth}px`;\n          const layoutContext: WorkbenchMasonryLayoutContext = {\n            columnCount,\n            columnSpan,\n            columnWidth: resolvedColumnWidth,\n            containerWidth,\n            gap,\n            itemWidth,\n            placementStrategy,\n            rowSpan,\n            rowHeight,\n            size,\n          };\n          const itemProps = getItemProps?.(item, layoutContext);\n\n          return (\n            <div\n              key={key}\n              {...itemProps}\n              className={cn('absolute min-w-0', itemProps?.className)}\n              style={{\n                ...itemProps?.style,\n                left: unresolvedSingleColumnWidth ? 0 : `${left}px`,\n                top: `${top}px`,\n                width: itemWidthValue,\n                maxWidth: itemWidthValue,\n              }}\n            >\n              <div ref={(node) => registerItemNode(key, node)} role=\"presentation\" className=\"min-w-0\">\n                {renderItem(item, layoutContext)}\n              </div>\n            </div>\n          );\n        })}\n      </div>\n    );\n  }\n\n  return (\n    <div\n      ref={containerRef}\n      {...containerProps}\n      className={cn('grid w-full items-start', className, containerProps?.className)}\n      style={{\n        ...containerProps?.style,\n        gap: `${gap}px`,\n        gridAutoFlow: 'row dense',\n        gridAutoRows: `${rowHeight}px`,\n        gridTemplateColumns: `repeat(${columnCount}, minmax(0, 1fr))`,\n      }}\n    >\n      {layoutItems.map(({ key, item, columnSpan, rowSpan, size }) => {\n        const layoutContext: WorkbenchMasonryLayoutContext = {\n              columnCount,\n              columnSpan,\n              columnWidth: resolvedColumnWidth,\n              containerWidth,\n              gap,\n              placementStrategy,\n              rowSpan,\n              rowHeight,\n              size,\n        };\n        const itemProps = getItemProps?.(item, layoutContext);\n        return (\n          <div\n            key={key}\n            {...itemProps}\n            className={cn('min-w-0', itemProps?.className)}\n            style={{\n              ...itemProps?.style,\n              gridColumn: `span ${columnSpan}`,\n              gridRow: `span ${rowSpan}`,\n            }}\n          >\n            <div ref={(node) => registerItemNode(key, node)} role=\"presentation\" className=\"min-w-0\">\n              {renderItem(item, layoutContext)}\n            </div>\n          </div>\n        );\n      })}\n    </div>\n  );\n}\n","import { useMemo, type CSSProperties } from 'react';\n\nimport { BaseSkeleton } from '../base/BaseSkeleton';\nimport { cn } from '../base/utils';\nimport { SkeletonScope, SkeletonItem, type SkeletonGroupAnimation } from '../skeleton/motion';\nimport { WorkbenchMasonryLayout } from './WorkbenchMasonryLayout';\n\nexport type WorkbenchCollectionLoadingVariant = 'skeleton' | 'spinner';\n\nexport interface WorkbenchCollectionSkeletonConfig {\n  count?: number;\n  loadMoreCount?: number;\n  aspectRatios?: readonly number[];\n  animated?: boolean;\n  animation?: SkeletonGroupAnimation;\n}\n\ntype WorkbenchCollectionSkeletonLayoutMode = 'grid' | 'masonry' | 'dense' | 'rail';\n\ninterface WorkbenchCollectionSkeletonItem {\n  index: number;\n  aspectRatio: number;\n  key: string;\n}\n\ninterface WorkbenchCollectionSkeletonProps {\n  mode: WorkbenchCollectionSkeletonLayoutMode;\n  phase: 'initial' | 'load-more';\n  columnCount: number;\n  columnWidth: number;\n  cardWidth?: number | string;\n  gap: number;\n  rowHeight: number;\n  config?: WorkbenchCollectionSkeletonConfig;\n  ariaLabel: string;\n  className?: string;\n}\n\nconst DEFAULT_PROVISIONAL_CAPACITY = 12;\nconst DEFAULT_GRID_ASPECT_RATIOS = [1] as const;\nconst DEFAULT_RAIL_ASPECT_RATIOS = [4 / 3] as const;\nconst DEFAULT_MASONRY_ASPECT_RATIOS = [1, 4 / 5, 3 / 2, 3 / 4, 5 / 4] as const;\nconst MIN_SKELETON_ASPECT_RATIO = 0.5;\nconst MAX_SKELETON_ASPECT_RATIO = 2;\nconst SKELETON_BACKGROUND_COLOR = 'hsl(var(--monkeys-color-muted, var(--muted)))';\n\nfunction clamp(value: number, min: number, max: number) {\n  return Math.min(Math.max(value, min), max);\n}\n\nfunction normalizeCount(value: number | undefined, fallback: number, max: number) {\n  if (typeof value !== 'number' || !Number.isFinite(value) || value <= 0) return fallback;\n  return clamp(Math.round(value), 1, max);\n}\n\nfunction getDefaultAspectRatios(mode: WorkbenchCollectionSkeletonLayoutMode) {\n  if (mode === 'masonry' || mode === 'dense') return DEFAULT_MASONRY_ASPECT_RATIOS;\n  if (mode === 'rail') return DEFAULT_RAIL_ASPECT_RATIOS;\n  return DEFAULT_GRID_ASPECT_RATIOS;\n}\n\nfunction resolveAspectRatios(\n  mode: WorkbenchCollectionSkeletonLayoutMode,\n  values: readonly number[] | undefined,\n) {\n  const normalized = values\n    ?.filter((value) => typeof value === 'number' && Number.isFinite(value) && value > 0)\n    .map((value) => clamp(value, MIN_SKELETON_ASPECT_RATIO, MAX_SKELETON_ASPECT_RATIO));\n  return normalized?.length ? normalized : getDefaultAspectRatios(mode);\n}\n\nexport function resolveWorkbenchCollectionSkeletonCapacity(\n  config?: WorkbenchCollectionSkeletonConfig,\n) {\n  return normalizeCount(config?.count, DEFAULT_PROVISIONAL_CAPACITY, 48);\n}\n\nexport function resolveWorkbenchCollectionLoadingVariant(\n  value: unknown,\n): WorkbenchCollectionLoadingVariant {\n  if (value === undefined) return 'skeleton';\n  if (value === 'skeleton' || value === 'spinner') return value;\n  throw new TypeError('WorkbenchCollection loading.variant must be \"skeleton\" or \"spinner\".');\n}\n\nfunction resolveSkeletonCount({\n  columnCount,\n  config,\n  phase,\n}: Pick<WorkbenchCollectionSkeletonProps, 'columnCount' | 'config' | 'phase'>) {\n  if (phase === 'initial') {\n    const fallback = clamp(columnCount * 2, 6, 24);\n    return normalizeCount(config?.count, fallback, 48);\n  }\n  const fallback = clamp(columnCount, 1, 12);\n  return normalizeCount(config?.loadMoreCount, fallback, 24);\n}\n\nfunction getSkeletonHeight(columnWidth: number, aspectRatio: number) {\n  return Math.max(1, columnWidth / aspectRatio);\n}\n\nexport function WorkbenchCollectionSkeleton({\n  mode,\n  phase,\n  columnCount,\n  columnWidth,\n  cardWidth,\n  gap,\n  rowHeight,\n  config,\n  ariaLabel,\n  className,\n}: WorkbenchCollectionSkeletonProps) {\n  const count = resolveSkeletonCount({ columnCount, config, phase });\n  const aspectRatios = resolveAspectRatios(mode, config?.aspectRatios);\n  const animated = config?.animated ?? true;\n  const items = useMemo<WorkbenchCollectionSkeletonItem[]>(\n    () =>\n      Array.from({ length: count }, (_, index) => ({\n        aspectRatio: aspectRatios[index % aspectRatios.length],\n        key: `${phase}-${index}`,\n        index,\n      })),\n    [aspectRatios, count, phase],\n  );\n  const renderSkeleton = (item: WorkbenchCollectionSkeletonItem, style?: CSSProperties) => (\n    <SkeletonItem index={item.index}>\n      <BaseSkeleton\n        variant=\"block\"\n        animated={animated}\n        className=\"h-auto w-full rounded-lg\"\n        style={{\n          backgroundColor: SKELETON_BACKGROUND_COLOR,\n          ...(style ?? { aspectRatio: String(item.aspectRatio) }),\n        }}\n        data-collection-skeleton-item=\"\"\n        data-skeleton-aspect-ratio={item.aspectRatio}\n      />\n    </SkeletonItem>\n  );\n\n  return (\n    <SkeletonScope animation={config?.animation} animated={animated}>\n      <div\n        role=\"status\"\n        aria-label={ariaLabel}\n        aria-atomic=\"true\"\n        data-collection-loading={phase}\n        data-layout-mode={mode}\n        className=\"min-w-0\"\n      >\n        {mode === 'masonry' || mode === 'dense' ? (\n          <WorkbenchMasonryLayout\n            items={items}\n            columnCount={columnCount}\n            columnWidth={columnWidth}\n            gap={gap}\n            rowHeight={rowHeight}\n            placementStrategy={mode === 'dense' ? 'dense' : 'shortest'}\n            className={className}\n            containerProps={{ 'aria-hidden': true }}\n            getItemKey={(item) => item.key}\n            getItemSize={(item, layout) => ({\n              height: getSkeletonHeight(layout.columnWidth, item.aspectRatio),\n            })}\n            renderItem={(item, layout) =>\n              renderSkeleton(item, {\n                height: `${getSkeletonHeight(layout.columnWidth, item.aspectRatio)}px`,\n              })\n            }\n          />\n        ) : mode === 'rail' ? (\n          <div\n            aria-hidden=\"true\"\n            className={cn('grid min-w-0 grid-flow-col items-start overflow-x-auto', className)}\n            style={{\n              gap,\n              gridAutoColumns:\n                typeof cardWidth === 'number' ? `${cardWidth}px` : cardWidth ?? `${columnWidth}px`,\n            }}\n          >\n            {items.map((item) => (\n              <div key={item.key}>{renderSkeleton(item)}</div>\n            ))}\n          </div>\n        ) : (\n          <div\n            aria-hidden=\"true\"\n            className={cn('grid min-w-0 items-start', className)}\n            style={{ gap, gridTemplateColumns: `repeat(${columnCount}, minmax(0, 1fr))` }}\n          >\n            {items.map((item) => (\n              <div key={item.key}>{renderSkeleton(item)}</div>\n            ))}\n          </div>\n        )}\n      </div>\n    </SkeletonScope>\n  );\n}\n","import {\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\n\nexport type WorkbenchCollectionKey = string | number;\nexport type WorkbenchCollectionSelectionMode = 'none' | 'single' | 'multiple';\nexport type WorkbenchCollectionSelectionBehavior = 'replace' | 'toggle' | 'range';\n\nexport interface WorkbenchCollectionSelectionIntent {\n  behavior?: WorkbenchCollectionSelectionBehavior;\n  shiftKey?: boolean;\n}\n\nexport interface WorkbenchCollectionSelectionChangeDetails<Item> {\n  item: Item;\n  index: number;\n  key: WorkbenchCollectionKey;\n  behavior: WorkbenchCollectionSelectionBehavior;\n}\n\nexport interface UseWorkbenchCollectionSelectionOptions<Item> {\n  items: readonly Item[];\n  getItemKey: (item: Item, index: number) => WorkbenchCollectionKey;\n  mode?: WorkbenchCollectionSelectionMode;\n  behavior?: WorkbenchCollectionSelectionBehavior;\n  selectedKeys?: Iterable<WorkbenchCollectionKey>;\n  defaultSelectedKeys?: Iterable<WorkbenchCollectionKey>;\n  isItemDisabled?: (item: Item, index: number) => boolean;\n  onSelectionChange?: (\n    selectedKeys: ReadonlySet<WorkbenchCollectionKey>,\n    details: WorkbenchCollectionSelectionChangeDetails<Item>,\n  ) => void;\n}\n\nexport interface WorkbenchCollectionSelectionController {\n  mode: WorkbenchCollectionSelectionMode;\n  selectedKeys: ReadonlySet<WorkbenchCollectionKey>;\n  isSelected: (key: WorkbenchCollectionKey) => boolean;\n  selectKey: (key: WorkbenchCollectionKey, intent?: WorkbenchCollectionSelectionIntent) => void;\n  resetAnchor: () => void;\n}\n\ninterface NormalizedSelectionItem<Item> {\n  item: Item;\n  index: number;\n  key: WorkbenchCollectionKey;\n}\n\nfunction setsEqual<Value>(left: ReadonlySet<Value>, right: ReadonlySet<Value>) {\n  if (left.size !== right.size) return false;\n  for (const value of left) {\n    if (!right.has(value)) return false;\n  }\n  return true;\n}\n\nfunction getComparableKey(key: WorkbenchCollectionKey) {\n  return String(key);\n}\n\nfunction getDefaultBehavior(mode: WorkbenchCollectionSelectionMode) {\n  return mode === 'multiple' ? 'toggle' : 'replace';\n}\n\nexport function useWorkbenchCollectionSelection<Item>({\n  items,\n  getItemKey,\n  mode = 'none',\n  behavior,\n  selectedKeys: controlledSelectedKeys,\n  defaultSelectedKeys,\n  isItemDisabled,\n  onSelectionChange,\n}: UseWorkbenchCollectionSelectionOptions<Item>): WorkbenchCollectionSelectionController {\n  const controlled = controlledSelectedKeys !== undefined;\n  const [internalSelectedKeys, setInternalSelectedKeys] = useState<Set<WorkbenchCollectionKey>>(\n    () => new Set(defaultSelectedKeys ?? []),\n  );\n  const anchorKeyRef = useRef<WorkbenchCollectionKey | null>(null);\n  const onSelectionChangeRef = useRef(onSelectionChange);\n  onSelectionChangeRef.current = onSelectionChange;\n\n  const normalizedItems = useMemo<NormalizedSelectionItem<Item>[]>(() => {\n    const seenKeys = new Map<string, number>();\n    return items.map((item, index) => {\n      const key = getItemKey(item, index);\n      const comparableKey = getComparableKey(key);\n      const duplicateIndex = seenKeys.get(comparableKey);\n      if (duplicateIndex !== undefined) {\n        throw new TypeError(\n          `useWorkbenchCollectionSelection received duplicate item key \"${comparableKey}\" at indices ${duplicateIndex} and ${index}.`,\n        );\n      }\n      seenKeys.set(comparableKey, index);\n      return { item, index, key };\n    });\n  }, [getItemKey, items]);\n\n  const itemByKey = useMemo(() => {\n    const entries = new Map<WorkbenchCollectionKey, NormalizedSelectionItem<Item>>();\n    normalizedItems.forEach((entry) => entries.set(entry.key, entry));\n    return entries;\n  }, [normalizedItems]);\n\n  const selectedKeys = useMemo<ReadonlySet<WorkbenchCollectionKey>>(\n    () => mode === 'none'\n      ? new Set()\n      : controlled\n        ? new Set(controlledSelectedKeys ?? [])\n        : internalSelectedKeys,\n    [controlled, controlledSelectedKeys, internalSelectedKeys, mode],\n  );\n  const selectedKeysRef = useRef(selectedKeys);\n  selectedKeysRef.current = selectedKeys;\n\n  const resetAnchor = useCallback(() => {\n    anchorKeyRef.current = null;\n  }, []);\n\n  useEffect(() => {\n    if (controlled) return;\n    const availableKeys = new Set(normalizedItems.map(({ key }) => key));\n    setInternalSelectedKeys((previous) => {\n      const next = new Set(Array.from(previous).filter((key) => availableKeys.has(key)));\n      if (setsEqual(previous, next)) return previous;\n      selectedKeysRef.current = next;\n      return next;\n    });\n  }, [controlled, normalizedItems]);\n\n  useEffect(() => {\n    const anchorKey = anchorKeyRef.current;\n    if (mode !== 'multiple' || selectedKeys.size === 0 || anchorKey === null) {\n      resetAnchor();\n      return;\n    }\n    const anchor = itemByKey.get(anchorKey);\n    if (!anchor || isItemDisabled?.(anchor.item, anchor.index)) resetAnchor();\n  }, [isItemDisabled, itemByKey, mode, resetAnchor, selectedKeys.size]);\n\n  const selectKey = useCallback((\n    key: WorkbenchCollectionKey,\n    intent: WorkbenchCollectionSelectionIntent = {},\n  ) => {\n    if (mode === 'none') return;\n    const entry = itemByKey.get(key);\n    if (!entry || isItemDisabled?.(entry.item, entry.index)) return;\n\n    const current = new Set(selectedKeysRef.current);\n    const configuredBehavior = behavior ?? getDefaultBehavior(mode);\n    let effectiveBehavior = intent.shiftKey && mode === 'multiple'\n      ? 'range'\n      : intent.behavior ?? configuredBehavior;\n\n    if (mode === 'single') {\n      effectiveBehavior = effectiveBehavior === 'toggle' ? 'toggle' : 'replace';\n    }\n\n    const anchor = anchorKeyRef.current === null\n      ? undefined\n      : itemByKey.get(anchorKeyRef.current);\n    const hasValidAnchor = Boolean(\n      anchor && !isItemDisabled?.(anchor.item, anchor.index),\n    );\n    if (mode === 'multiple' && effectiveBehavior === 'range' && !hasValidAnchor) {\n      effectiveBehavior = configuredBehavior === 'range' ? 'toggle' : configuredBehavior;\n    }\n\n    const next = new Set<WorkbenchCollectionKey>();\n    if (mode === 'single') {\n      if (!(effectiveBehavior === 'toggle' && current.has(entry.key))) next.add(entry.key);\n    } else if (effectiveBehavior === 'range' && anchor) {\n      current.forEach((selectedKey) => next.add(selectedKey));\n      const start = Math.min(anchor.index, entry.index);\n      const end = Math.max(anchor.index, entry.index);\n      normalizedItems.slice(start, end + 1).forEach((candidate) => {\n        if (!isItemDisabled?.(candidate.item, candidate.index)) next.add(candidate.key);\n      });\n    } else if (effectiveBehavior === 'replace') {\n      next.add(entry.key);\n    } else {\n      current.forEach((selectedKey) => next.add(selectedKey));\n      if (next.has(entry.key)) next.delete(entry.key);\n      else next.add(entry.key);\n    }\n\n    anchorKeyRef.current = mode === 'multiple' ? entry.key : null;\n    if (!controlled) {\n      selectedKeysRef.current = next;\n      setInternalSelectedKeys(next);\n    }\n    onSelectionChangeRef.current?.(next, {\n      item: entry.item,\n      index: entry.index,\n      key: entry.key,\n      behavior: effectiveBehavior,\n    });\n  }, [behavior, controlled, isItemDisabled, itemByKey, mode, normalizedItems]);\n\n  const isSelected = useCallback(\n    (key: WorkbenchCollectionKey) => selectedKeys.has(key),\n    [selectedKeys],\n  );\n\n  return {\n    mode,\n    selectedKeys,\n    isSelected,\n    selectKey,\n    resetAnchor,\n  };\n}\n","import {\n  Fragment,\n  useCallback,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState,\n  type CSSProperties,\n  type DragEvent,\n  type HTMLAttributes,\n  type KeyboardEvent,\n  type MouseEvent,\n  type ReactNode,\n} from 'react';\n\nimport { BaseButton } from '../base/BaseButton';\nimport { BaseEmptyState } from '../base/BaseEmptyState';\nimport { BaseLoadingState } from '../base/BaseLoadingState';\nimport { BaseSystemState } from '../base/BaseSystemState';\nimport { cn, hasRenderableNode } from '../base/utils';\nimport {\n  useMonkeysComponentAttributes,\n  useMonkeysLocaleMessages,\n  useMonkeysStatusStates,\n} from '../../provider';\nimport {\n  WorkbenchMasonryLayout,\n  type WorkbenchMasonryItemSize,\n  type WorkbenchMasonryLayoutContext,\n} from './WorkbenchMasonryLayout';\nimport {\n  resolveWorkbenchCollectionLoadingVariant,\n  resolveWorkbenchCollectionSkeletonCapacity,\n  WorkbenchCollectionSkeleton,\n  type WorkbenchCollectionLoadingVariant,\n  type WorkbenchCollectionSkeletonConfig,\n} from './WorkbenchCollectionSkeleton';\nimport {\n  useWorkbenchCollectionSelection,\n  type WorkbenchCollectionKey,\n  type WorkbenchCollectionSelectionBehavior,\n  type WorkbenchCollectionSelectionMode,\n} from './useWorkbenchCollectionSelection';\n\nexport type {\n  WorkbenchCollectionLoadingVariant,\n  WorkbenchCollectionSkeletonConfig,\n} from './WorkbenchCollectionSkeleton';\nexport type {\n  WorkbenchCollectionKey,\n  WorkbenchCollectionSelectionBehavior,\n  WorkbenchCollectionSelectionMode,\n} from './useWorkbenchCollectionSelection';\n\nexport type WorkbenchCollectionLayoutMode = 'grid' | 'masonry' | 'dense' | 'rail';\nexport type WorkbenchCollectionActivationEvent = MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>;\nexport type WorkbenchCollectionItemStatus = 'idle' | 'loading' | 'pending' | 'failed' | string;\nexport type WorkbenchCollectionItemSlotName =\n  | 'media'\n  | 'fallback'\n  | 'statusOverlay'\n  | 'top'\n  | 'selectionControl'\n  | 'header'\n  | 'title'\n  | 'body'\n  | 'meta'\n  | 'badges'\n  | 'actions'\n  | 'footer'\n  | 'detail'\n  | 'detailTrigger';\nexport type WorkbenchCollectionResponsive<Value> = Value | {\n  mobile?: Value;\n  tablet?: Value;\n  desktop?: Value;\n};\n\nexport type WorkbenchCollectionItemSize = WorkbenchMasonryItemSize;\n\nexport interface WorkbenchCollectionLayoutContext {\n  mode: WorkbenchCollectionLayoutMode;\n  columnCount: number;\n  columnSpan?: number;\n  columnWidth: number;\n  containerWidth: number;\n  gap: number;\n  itemWidth?: number;\n  placementStrategy: 'shelf' | 'shortest' | 'dense';\n  rowSpan?: number;\n  rowHeight: number;\n  size?: WorkbenchCollectionItemSize;\n}\n\nexport interface WorkbenchCollectionLayoutSnapshot {\n  mode: WorkbenchCollectionLayoutMode;\n  columnCount: number;\n  columnWidth: number;\n  containerWidth: number;\n  gap: number;\n  itemCount: number;\n}\n\nexport interface WorkbenchCollectionItemContext<Item> {\n  item: Item;\n  index: number;\n  key: WorkbenchCollectionKey;\n  status: WorkbenchCollectionItemStatus;\n  disabled: boolean;\n  selected: boolean;\n  selectionMode: WorkbenchCollectionSelectionMode;\n  layout: WorkbenchCollectionLayoutContext;\n  select: (behavior?: WorkbenchCollectionSelectionBehavior) => void;\n  selectFromEvent: (\n    event: Pick<WorkbenchCollectionActivationEvent, 'shiftKey'>,\n    behavior?: WorkbenchCollectionSelectionBehavior,\n  ) => void;\n  preview: () => void;\n  detail: () => void;\n  renderSlot: (name: WorkbenchCollectionItemSlotName) => ReactNode;\n  notifyMediaLoad: () => void;\n  notifyMediaError: (error?: unknown) => void;\n}\n\nexport interface WorkbenchCollectionStateConfig {\n  loading?: boolean;\n  loadingMore?: boolean;\n  error?: unknown;\n  empty?: boolean;\n  hasMore?: boolean;\n  permission?: boolean;\n  offline?: boolean;\n}\n\nexport interface WorkbenchCollectionSelectionConfig<Item> {\n  mode?: WorkbenchCollectionSelectionMode;\n  selectedKeys?: Iterable<WorkbenchCollectionKey>;\n  defaultSelectedKeys?: Iterable<WorkbenchCollectionKey>;\n  behavior?: WorkbenchCollectionSelectionBehavior;\n  isItemDisabled?: (item: Item, index: number) => boolean;\n}\n\nexport interface WorkbenchCollectionGroupingConfig<Item> {\n  getGroupKey: (item: Item, index: number) => WorkbenchCollectionKey;\n  getGroupLabel?: (groupKey: WorkbenchCollectionKey, firstItem: Item) => ReactNode;\n}\n\nexport interface WorkbenchCollectionLoadingConfig {\n  rootMargin?: string;\n  threshold?: number;\n  /** Request another page while the configured scroll viewport is not filled. */\n  autoFill?: boolean;\n  /** Collection loading defaults to a layout-aware skeleton. */\n  variant?: WorkbenchCollectionLoadingVariant;\n  skeleton?: WorkbenchCollectionSkeletonConfig;\n}\n\nexport type WorkbenchCollectionHoverEffect =\n  | 'none'\n  | 'highlight'\n  | 'lift'\n  | 'scale'\n  | 'shadow'\n  | 'lift-shadow';\n\nexport type WorkbenchCollectionTitleVisibility = 'always' | 'hover' | 'never';\nexport type WorkbenchCollectionTitlePlacement =\n  | 'above'\n  | 'below'\n  | 'overlay-top'\n  | 'overlay-center'\n  | 'overlay-bottom';\nexport type WorkbenchCollectionActionsVisibility = 'always' | 'hover' | 'never';\nexport type WorkbenchCollectionActionsPlacement =\n  | 'above'\n  | 'below'\n  | 'overlay-top'\n  | 'overlay-bottom';\nexport type WorkbenchCollectionItemAlign = 'start' | 'center' | 'end';\n\nexport interface WorkbenchCollectionItemTitleConfig<Item> {\n  getContent?: (item: Item, context: WorkbenchCollectionItemContext<Item>) => ReactNode;\n  visibility?: WorkbenchCollectionTitleVisibility;\n  placement?: WorkbenchCollectionTitlePlacement;\n  align?: WorkbenchCollectionItemAlign;\n  maxLines?: number;\n  surface?: 'none' | 'surface' | 'scrim';\n}\n\nexport interface WorkbenchCollectionItemActionsConfig {\n  visibility?: WorkbenchCollectionActionsVisibility;\n  placement?: WorkbenchCollectionActionsPlacement;\n  align?: WorkbenchCollectionItemAlign;\n  wrap?: boolean;\n}\n\nexport interface WorkbenchCollectionItemConfig<Item> {\n  title?: WorkbenchCollectionItemTitleConfig<Item>;\n  actions?: WorkbenchCollectionItemActionsConfig;\n}\n\nexport interface WorkbenchCollectionAppearanceConfig {\n  density?: 'compact' | 'comfortable' | 'detailed' | string;\n  radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | string;\n  mediaFit?: 'cover' | 'contain' | 'natural';\n  hover?: WorkbenchCollectionHoverEffect;\n  selection?: 'none' | 'ring' | 'outline';\n}\n\nexport interface WorkbenchCollectionLabels {\n  collection: string;\n  loading: string;\n  empty: string;\n  loadError: string;\n  refreshError: string;\n  retry: string;\n  loadingMore: string;\n  permission: string;\n  offline: string;\n  requestAccess: string;\n}\n\nexport interface WorkbenchCollectionVirtualizationRenderOptions<Item> {\n  items: readonly Item[];\n  keys: readonly WorkbenchCollectionKey[];\n  layout: WorkbenchCollectionLayoutConfig<Item>;\n  scrollOwner: HTMLElement | null;\n  renderItem: (item: Item, index: number, layout: WorkbenchCollectionLayoutContext) => ReactNode;\n}\n\nexport interface WorkbenchCollectionVirtualizationAdapter<Item> {\n  supports?: (mode: WorkbenchCollectionLayoutMode) => boolean;\n  render: (options: WorkbenchCollectionVirtualizationRenderOptions<Item>) => ReactNode;\n}\n\nexport interface WorkbenchCollectionVirtualizationConfig<Item> {\n  enabled?: boolean;\n  adapter?: WorkbenchCollectionVirtualizationAdapter<Item>;\n  fallback?: 'render-all' | 'error';\n}\n\nexport interface WorkbenchCollectionLayoutConfig<Item> {\n  mode: WorkbenchCollectionLayoutMode;\n  columns?: WorkbenchCollectionResponsive<number> | 'auto';\n  /** Control whether an underfilled automatic grid stretches its items or preserves full-grid card widths. */\n  underfilledBehavior?: 'stretch-items' | 'preserve-columns';\n  maxColumns?: WorkbenchCollectionResponsive<number>;\n  minCardWidth?: number | string;\n  idealCardWidth?: number | string;\n  maxCardWidth?: number | string;\n  cardWidth?: number | string;\n  columnWidth?: number | string;\n  gap?: number;\n  rowHeight?: number;\n  placementStrategy?: 'shelf' | 'shortest' | 'dense';\n  padding?: number | string;\n  fillHeight?: boolean;\n  maxHeight?: number | string;\n  scrollOwner?: 'self' | 'parent' | HTMLElement | null;\n  getItemSize?: (\n    item: Item,\n    context: WorkbenchCollectionLayoutContext,\n  ) => WorkbenchCollectionItemSize | undefined;\n  getItemAspectRatio?: (item: Item, index: number) => number | undefined;\n}\n\nexport interface WorkbenchCollectionConfig<Item> {\n  getItemKey?: (item: Item, index: number) => WorkbenchCollectionKey;\n  getItemStatus?: (item: Item, index: number) => WorkbenchCollectionItemStatus;\n  layout: WorkbenchCollectionLayoutConfig<Item>;\n  state?: WorkbenchCollectionStateConfig;\n  selection?: WorkbenchCollectionSelectionConfig<Item>;\n  grouping?: WorkbenchCollectionGroupingConfig<Item>;\n  loading?: WorkbenchCollectionLoadingConfig;\n  virtualization?: WorkbenchCollectionVirtualizationConfig<Item>;\n  item?: WorkbenchCollectionItemConfig<Item>;\n  appearance?: WorkbenchCollectionAppearanceConfig;\n  labels?: Partial<WorkbenchCollectionLabels>;\n  scrollRestorationKey?: string;\n}\n\nexport interface WorkbenchCollectionSlotContext<Item> {\n  items: readonly Item[];\n  error?: unknown;\n  loading: boolean;\n  loadingMore: boolean;\n  selectedKeys: ReadonlySet<WorkbenchCollectionKey>;\n  retry: () => void;\n}\n\nexport interface WorkbenchCollectionGroupContext<Item> {\n  key: WorkbenchCollectionKey;\n  label?: ReactNode;\n  items: readonly Item[];\n  groupIndex: number;\n}\n\nexport type WorkbenchCollectionItemSlots<Item> = Partial<Record<\n  WorkbenchCollectionItemSlotName,\n  (item: Item, context: WorkbenchCollectionItemContext<Item>) => ReactNode\n>>;\n\nexport interface WorkbenchCollectionSlots<Item> {\n  header?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  toolbar?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  beforeItems?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  groupHeading?: (\n    group: WorkbenchCollectionGroupContext<Item>,\n    context: WorkbenchCollectionSlotContext<Item>,\n  ) => ReactNode;\n  selectionToolbar?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  loading?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  empty?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  error?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  permission?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  offline?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  loadMore?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  footer?: ReactNode | ((context: WorkbenchCollectionSlotContext<Item>) => ReactNode);\n  item?: WorkbenchCollectionItemSlots<Item>;\n}\n\nexport interface WorkbenchCollectionCallbacks<Item> {\n  onItemClick?: (item: Item, context: WorkbenchCollectionItemContext<Item>, event: WorkbenchCollectionActivationEvent) => void;\n  onItemDoubleClick?: (item: Item, context: WorkbenchCollectionItemContext<Item>, event: MouseEvent<HTMLElement>) => void;\n  onItemHoverChange?: (\n    item: Item,\n    context: WorkbenchCollectionItemContext<Item>,\n    hovered: boolean,\n    event: MouseEvent<HTMLElement>,\n  ) => void;\n  onItemPreview?: (item: Item, context: WorkbenchCollectionItemContext<Item>) => void;\n  onItemDetail?: (item: Item, context: WorkbenchCollectionItemContext<Item>) => void;\n  onItemDragStart?: (item: Item, context: WorkbenchCollectionItemContext<Item>, event: DragEvent<HTMLElement>) => void;\n  onItemDrop?: (item: Item, context: WorkbenchCollectionItemContext<Item>, event: DragEvent<HTMLElement>) => void;\n  onSelectionChange?: (\n    selectedKeys: ReadonlySet<WorkbenchCollectionKey>,\n    details: { item: Item; key: WorkbenchCollectionKey; behavior: WorkbenchCollectionSelectionBehavior },\n  ) => void;\n  onLoadMore?: () => void | Promise<void>;\n  onRetry?: () => void;\n  onRequestAccess?: () => void;\n  onLayoutChange?: (snapshot: WorkbenchCollectionLayoutSnapshot) => void;\n  onLayoutReady?: (snapshot: WorkbenchCollectionLayoutSnapshot) => void;\n  onMediaLoad?: (item: Item, context: WorkbenchCollectionItemContext<Item>) => void;\n  onMediaError?: (item: Item, context: WorkbenchCollectionItemContext<Item>, error?: unknown) => void;\n}\n\nexport interface WorkbenchCollectionClassNames {\n  root?: string;\n  header?: string;\n  toolbar?: string;\n  selectionToolbar?: string;\n  beforeItems?: string;\n  items?: string;\n  layout?: string;\n  group?: string;\n  groupHeading?: string;\n  item?: string;\n  itemContent?: string;\n  itemTitle?: string;\n  itemActions?: string;\n  status?: string;\n  loadMore?: string;\n  footer?: string;\n}\n\nexport interface WorkbenchCollectionProps<Item> {\n  items: readonly Item[];\n  config: WorkbenchCollectionConfig<Item>;\n  renderItem: (item: Item, context: WorkbenchCollectionItemContext<Item>) => ReactNode;\n  slots?: WorkbenchCollectionSlots<Item>;\n  callbacks?: WorkbenchCollectionCallbacks<Item>;\n  className?: string;\n  classNames?: WorkbenchCollectionClassNames;\n  style?: CSSProperties;\n  ariaLabel?: string;\n}\n\ninterface NormalizedCollectionItem<Item> {\n  item: Item;\n  index: number;\n  key: WorkbenchCollectionKey;\n  stringKey: string;\n}\n\ninterface NormalizedCollectionGroup<Item> {\n  key: WorkbenchCollectionKey;\n  stringKey: string;\n  label?: ReactNode;\n  items: NormalizedCollectionItem<Item>[];\n}\n\nconst DEFAULT_GAP_PX = 12;\nconst DEFAULT_ROW_HEIGHT_PX = 8;\nconst DEFAULT_CARD_WIDTH_PX = 280;\nconst BREAKPOINT_TABLET_PX = 640;\nconst BREAKPOINT_DESKTOP_PX = 1024;\nconst MAX_COLUMN_COUNT = 24;\n\nfunction clamp(value: number, min: number, max: number) {\n  return Math.min(Math.max(value, min), max);\n}\n\nfunction resolveRenderableSlot<Context>(\n  slot: ReactNode | ((context: Context) => ReactNode) | undefined,\n  context: Context,\n) {\n  return typeof slot === 'function' ? slot(context) : slot;\n}\n\nfunction resolveLengthToPixels(value: number | string | undefined, fallback: number, node: Element | null) {\n  if (typeof value === 'number' && Number.isFinite(value) && value > 0) return value;\n  if (typeof value !== 'string') return fallback;\n  const normalized = value.trim().toLowerCase();\n  if (!normalized) return fallback;\n  if (/^\\d+(\\.\\d+)?(px)?$/.test(normalized)) {\n    const parsed = Number.parseFloat(normalized);\n    return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;\n  }\n  if (normalized.endsWith('rem')) {\n    const parsed = Number.parseFloat(normalized);\n    const rootFontSize = typeof window === 'undefined'\n      ? 16\n      : Number.parseFloat(window.getComputedStyle(node || document.documentElement).fontSize) || 16;\n    return Number.isFinite(parsed) && parsed > 0 ? parsed * rootFontSize : fallback;\n  }\n  return fallback;\n}\n\nfunction normalizeColumns(value: unknown) {\n  if (typeof value !== 'number' || !Number.isFinite(value) || value <= 0) return undefined;\n  return clamp(Math.round(value), 1, MAX_COLUMN_COUNT);\n}\n\nfunction resolveResponsiveColumns(\n  columns: WorkbenchCollectionResponsive<number> | 'auto' | undefined,\n  containerWidth: number,\n) {\n  if (columns === 'auto' || columns === undefined) return undefined;\n  if (typeof columns === 'number') return normalizeColumns(columns);\n  const mobile = normalizeColumns(columns.mobile);\n  const tablet = normalizeColumns(columns.tablet);\n  const desktop = normalizeColumns(columns.desktop);\n  if (containerWidth >= BREAKPOINT_DESKTOP_PX) return desktop ?? tablet ?? mobile;\n  if (containerWidth >= BREAKPOINT_TABLET_PX) return tablet ?? mobile ?? desktop;\n  return mobile ?? tablet ?? desktop;\n}\n\nfunction resolveColumnCount({\n  containerWidth,\n  itemCount,\n  gap,\n  columns,\n  underfilledBehavior,\n  maxColumns,\n  minCardWidth,\n  idealCardWidth,\n  maxCardWidth,\n  node,\n}: {\n  containerWidth: number;\n  itemCount: number;\n  gap: number;\n  columns: WorkbenchCollectionResponsive<number> | 'auto' | undefined;\n  underfilledBehavior?: 'stretch-items' | 'preserve-columns';\n  maxColumns?: WorkbenchCollectionResponsive<number>;\n  minCardWidth?: number | string;\n  idealCardWidth?: number | string;\n  maxCardWidth?: number | string;\n  node: Element | null;\n}) {\n  const fixedColumns = resolveResponsiveColumns(columns, containerWidth);\n  const resolvedMaxColumns = resolveResponsiveColumns(maxColumns, containerWidth);\n  if (fixedColumns) return resolvedMaxColumns ? Math.min(fixedColumns, resolvedMaxColumns) : fixedColumns;\n  if (!containerWidth) return 1;\n\n  const idealWidth = resolveLengthToPixels(idealCardWidth, DEFAULT_CARD_WIDTH_PX, node);\n  const minWidth = resolveLengthToPixels(minCardWidth, idealWidth * 0.78, node);\n  const maxWidth = Math.max(\n    minWidth,\n    resolveLengthToPixels(maxCardWidth, idealWidth * 1.35, node),\n  );\n  const safeItemCount = Math.max(itemCount, 1);\n  const maxCandidate = Math.max(\n    1,\n    Math.min(\n      underfilledBehavior === 'preserve-columns' ? MAX_COLUMN_COUNT : safeItemCount,\n      Math.ceil((containerWidth + gap) / (Math.max(minWidth * 0.75, 1) + gap)),\n    ),\n  );\n\n  let bestCount = 1;\n  let bestScore = Number.POSITIVE_INFINITY;\n  for (let candidate = 1; candidate <= maxCandidate; candidate += 1) {\n    const width = (containerWidth - gap * Math.max(candidate - 1, 0)) / candidate;\n    if (!Number.isFinite(width) || width <= 0) continue;\n    const score = Math.abs(width - idealWidth)\n      + Math.max(0, minWidth - width) * 3\n      + Math.max(0, width - maxWidth) * 2;\n    if (score < bestScore) {\n      bestScore = score;\n      bestCount = candidate;\n    }\n  }\n  return resolvedMaxColumns ? Math.min(bestCount, resolvedMaxColumns) : bestCount;\n}\n\nfunction normalizeGap(value: unknown) {\n  return typeof value === 'number' && Number.isFinite(value) && value >= 0\n    ? value\n    : DEFAULT_GAP_PX;\n}\n\nfunction normalizeRowHeight(value: unknown) {\n  return typeof value === 'number' && Number.isFinite(value) && value > 0\n    ? value\n    : DEFAULT_ROW_HEIGHT_PX;\n}\n\nfunction normalizeThreshold(value: unknown) {\n  return typeof value === 'number' && Number.isFinite(value)\n    ? clamp(value, 0, 1)\n    : 0;\n}\n\nfunction normalizeItemSize(\n  size: WorkbenchCollectionItemSize | undefined,\n  aspectRatio: number | undefined,\n  columnWidth: number,\n) {\n  const normalizedAspectRatio = Number.isFinite(aspectRatio) && Number(aspectRatio) > 0\n    ? Number(aspectRatio)\n    : undefined;\n  const normalizedHeight = size?.height ?? (\n    normalizedAspectRatio ? Math.max(1, columnWidth / normalizedAspectRatio) : undefined\n  );\n  return {\n    ...size,\n    height: normalizedHeight,\n  };\n}\n\nfunction getDefaultItemKey<Item>(item: Item, index: number): WorkbenchCollectionKey {\n  if (item && typeof item === 'object') {\n    const candidate = item as Record<string, unknown>;\n    if (typeof candidate.id === 'string' || typeof candidate.id === 'number') return candidate.id;\n    if (typeof candidate.key === 'string' || typeof candidate.key === 'number') return candidate.key;\n  }\n  return index;\n}\n\nfunction getScrollStorageKey(key: string) {\n  return `@inf-monkeys-tech/monkeys-design:workbench-collection:${key}`;\n}\n\nfunction getParentScrollOwner(node: HTMLElement | null) {\n  let current = node?.parentElement ?? null;\n  while (current) {\n    if (typeof window === 'undefined') return current;\n    const overflowY = window.getComputedStyle(current).overflowY;\n    if (overflowY === 'auto' || overflowY === 'scroll') return current;\n    current = current.parentElement;\n  }\n  return null;\n}\n\nfunction isInteractiveEventTarget(target: EventTarget | null, currentTarget: HTMLElement) {\n  if (typeof Element === 'undefined' || !(target instanceof Element) || target === currentTarget) return false;\n  const control = target.closest(\n    'a, button, input, select, textarea, summary, [contenteditable=\"true\"], [data-collection-action]',\n  );\n  return Boolean(control && currentTarget.contains(control));\n}\n\nfunction normalizeTitleMaxLines(value: number | undefined) {\n  if (!Number.isFinite(value) || Number(value) <= 0) return undefined;\n  return clamp(Math.round(Number(value)), 1, 12);\n}\n\nexport function WorkbenchCollection<Item>({\n  items,\n  config,\n  renderItem,\n  slots,\n  callbacks,\n  className,\n  classNames,\n  style,\n  ariaLabel,\n}: WorkbenchCollectionProps<Item>) {\n  const componentAttributes = useMonkeysComponentAttributes();\n  const localeMessages = useMonkeysLocaleMessages().workbench.collection;\n  const statusStates = useMonkeysStatusStates();\n  const componentId = useId().replace(/:/g, '');\n  const rootRef = useRef<HTMLElement | null>(null);\n  const itemsRef = useRef<HTMLDivElement | null>(null);\n  const loadMoreRef = useRef<HTMLDivElement | null>(null);\n  const loadMoreRequestPendingRef = useRef(false);\n  const loadMoreIntersectionActiveRef = useRef(false);\n  const loadMoreIntersectionConsumedRef = useRef(false);\n  const loadMoreScrollValidationPendingRef = useRef(false);\n  const observedLoadMoreTargetRef = useRef<HTMLDivElement | null>(null);\n  const layoutReadyRef = useRef(false);\n  const [containerWidth, setContainerWidth] = useState(0);\n  const [itemsNode, setItemsNode] = useState<HTMLDivElement | null>(null);\n  const callbacksRef = useRef(callbacks);\n  callbacksRef.current = callbacks;\n  const registerItemsNode = useCallback((node: HTMLDivElement | null) => {\n    itemsRef.current = node;\n    setItemsNode(node);\n  }, []);\n\n  const mode = config.layout.mode;\n  if (mode !== 'grid' && mode !== 'masonry' && mode !== 'dense' && mode !== 'rail') {\n    throw new TypeError(`WorkbenchCollection layout.mode \"${String(mode)}\" is not supported.`);\n  }\n  const gap = normalizeGap(config.layout.gap);\n  const rowHeight = normalizeRowHeight(config.layout.rowHeight);\n  const getItemKey = config.getItemKey ?? getDefaultItemKey;\n  const normalizedItems = useMemo<NormalizedCollectionItem<Item>[]>(() => (\n    items.map((item, index) => {\n      const key = getItemKey(item, index);\n      return { item, index, key, stringKey: String(key) };\n    })\n  ), [getItemKey, items]);\n  const keysSignature = normalizedItems.map(({ stringKey }) => stringKey).join('\\u0001');\n  const state = config.state;\n  const loading = state?.loading === true;\n  const loadingMore = state?.loadingMore === true;\n  const hasMore = state?.hasMore === true;\n  const loadingVariant = resolveWorkbenchCollectionLoadingVariant(config.loading?.variant);\n  const layoutItemCount = loading && normalizedItems.length === 0 && loadingVariant === 'skeleton'\n    ? resolveWorkbenchCollectionSkeletonCapacity(config.loading?.skeleton)\n    : normalizedItems.length;\n\n  const selectionMode = config.selection?.mode ?? 'none';\n  const isSelectionItemDisabled = useCallback(\n    (entry: NormalizedCollectionItem<Item>) => (\n      config.selection?.isItemDisabled?.(entry.item, entry.index) ?? false\n    ),\n    [config.selection?.isItemDisabled],\n  );\n  const getSelectionItemKey = useCallback(\n    (entry: NormalizedCollectionItem<Item>) => entry.key,\n    [],\n  );\n  const handleSelectionChange = useCallback((\n    next: ReadonlySet<WorkbenchCollectionKey>,\n    details: {\n      item: NormalizedCollectionItem<Item>;\n      key: WorkbenchCollectionKey;\n      behavior: WorkbenchCollectionSelectionBehavior;\n    },\n  ) => {\n    callbacksRef.current?.onSelectionChange?.(next, {\n      item: details.item.item,\n      key: details.key,\n      behavior: details.behavior,\n    });\n  }, []);\n  const { selectedKeys, selectKey } = useWorkbenchCollectionSelection({\n    items: normalizedItems,\n    getItemKey: getSelectionItemKey,\n    mode: selectionMode,\n    behavior: config.selection?.behavior,\n    selectedKeys: config.selection?.selectedKeys,\n    defaultSelectedKeys: config.selection?.defaultSelectedKeys,\n    isItemDisabled: isSelectionItemDisabled,\n    onSelectionChange: handleSelectionChange,\n  });\n\n  useEffect(() => {\n    const node = itemsNode;\n    if (!node) return undefined;\n    const updateWidth = () => {\n      const nextWidth = Math.round(node.getBoundingClientRect().width);\n      setContainerWidth((previous) => previous === nextWidth ? previous : nextWidth);\n    };\n    updateWidth();\n    if (typeof ResizeObserver === 'function') {\n      const observer = new ResizeObserver(updateWidth);\n      observer.observe(node);\n      return () => observer.disconnect();\n    }\n    if (typeof window === 'undefined') return undefined;\n    window.addEventListener('resize', updateWidth);\n    return () => window.removeEventListener('resize', updateWidth);\n  }, [itemsNode]);\n\n  const columnCount = resolveColumnCount({\n    containerWidth,\n    itemCount: layoutItemCount,\n    gap,\n    columns: config.layout.columns,\n    underfilledBehavior: config.layout.underfilledBehavior,\n    maxColumns: config.layout.maxColumns,\n    minCardWidth: config.layout.minCardWidth,\n    idealCardWidth: config.layout.idealCardWidth ?? config.layout.columnWidth,\n    maxCardWidth: config.layout.maxCardWidth,\n    node: itemsRef.current,\n  });\n  const columnWidth = containerWidth > 0\n    ? Math.max(0, (containerWidth - gap * Math.max(columnCount - 1, 0)) / columnCount)\n    : resolveLengthToPixels(\n        config.layout.cardWidth ?? config.layout.columnWidth ?? config.layout.idealCardWidth,\n        DEFAULT_CARD_WIDTH_PX,\n        itemsRef.current,\n      );\n  const placementStrategy = config.layout.placementStrategy ?? (\n    mode === 'dense' ? 'dense' : mode === 'masonry' ? 'shortest' : 'shelf'\n  );\n  const labels = useMemo<WorkbenchCollectionLabels>(() => ({\n    collection: config.labels?.collection ?? localeMessages.label,\n    loading: config.labels?.loading ?? localeMessages.loading,\n    empty: config.labels?.empty ?? localeMessages.empty,\n    loadError: config.labels?.loadError ?? localeMessages.loadError,\n    refreshError: config.labels?.refreshError ?? localeMessages.refreshError,\n    retry: config.labels?.retry ?? localeMessages.retry,\n    loadingMore: config.labels?.loadingMore ?? localeMessages.loadingMore,\n    permission: config.labels?.permission ?? localeMessages.permission,\n    offline: config.labels?.offline ?? localeMessages.offline,\n    requestAccess: config.labels?.requestAccess ?? localeMessages.requestAccess,\n  }), [config.labels, localeMessages]);\n\n  const virtualizationError = useMemo(() => {\n    const virtualization = config.virtualization;\n    if (virtualization?.enabled !== true || virtualization.fallback !== 'error') return null;\n    if (!virtualization.adapter) {\n      return new Error('WorkbenchCollection virtualization requires an adapter.');\n    }\n    if (virtualization.adapter.supports?.(mode) === false) {\n      return new Error(`WorkbenchCollection virtualization adapter does not support mode \"${mode}\".`);\n    }\n    return null;\n  }, [config.virtualization, mode]);\n\n  const layoutSnapshot = useMemo<WorkbenchCollectionLayoutSnapshot>(() => ({\n    mode,\n    columnCount,\n    columnWidth,\n    containerWidth,\n    gap,\n    itemCount: normalizedItems.length,\n  }), [columnCount, columnWidth, containerWidth, gap, mode, normalizedItems.length]);\n\n  useEffect(() => {\n    callbacksRef.current?.onLayoutChange?.(layoutSnapshot);\n    if (containerWidth > 0 && !layoutReadyRef.current) {\n      layoutReadyRef.current = true;\n      callbacksRef.current?.onLayoutReady?.(layoutSnapshot);\n    }\n  }, [layoutSnapshot, containerWidth]);\n\n  useEffect(() => {\n    layoutReadyRef.current = false;\n  }, [mode]);\n\n  const resolveScrollOwner = useCallback(() => {\n    const requestedOwner = config.layout.scrollOwner;\n    if (requestedOwner && requestedOwner !== 'self' && requestedOwner !== 'parent') return requestedOwner;\n    if (requestedOwner === 'parent') return getParentScrollOwner(rootRef.current);\n    return rootRef.current;\n  }, [config.layout.scrollOwner]);\n\n  useEffect(() => {\n    const restorationKey = config.scrollRestorationKey?.trim();\n    if (!restorationKey || typeof window === 'undefined') return undefined;\n    const owner = resolveScrollOwner();\n    if (!owner) return undefined;\n    const storageKey = getScrollStorageKey(restorationKey);\n    try {\n      const stored = Number.parseFloat(window.sessionStorage.getItem(storageKey) ?? '');\n      if (Number.isFinite(stored) && stored >= 0) owner.scrollTop = stored;\n    } catch {\n      // Storage can be unavailable in sandboxed or privacy-restricted contexts.\n    }\n    const saveScrollPosition = () => {\n      try {\n        window.sessionStorage.setItem(storageKey, String(owner.scrollTop));\n      } catch {\n        // Scroll restoration is optional and must never break collection rendering.\n      }\n    };\n    owner.addEventListener('scroll', saveScrollPosition, { passive: true });\n    return () => {\n      saveScrollPosition();\n      owner.removeEventListener('scroll', saveScrollPosition);\n    };\n  }, [config.scrollRestorationKey, resolveScrollOwner]);\n\n  const canLoadMore = typeof callbacks?.onLoadMore === 'function';\n  const effectiveError = state?.error ?? virtualizationError;\n\n  useEffect(() => {\n    if (!canLoadMore || !hasMore) {\n      loadMoreIntersectionActiveRef.current = false;\n      loadMoreIntersectionConsumedRef.current = false;\n      loadMoreScrollValidationPendingRef.current = false;\n    }\n  }, [canLoadMore, hasMore]);\n\n  const requestLoadMore = useCallback(() => {\n    if (!canLoadMore || !hasMore || loadingMore || loadMoreRequestPendingRef.current) return;\n    loadMoreRequestPendingRef.current = true;\n    const releaseRequest = () => {\n      loadMoreRequestPendingRef.current = false;\n    };\n    try {\n      const result = callbacksRef.current?.onLoadMore?.();\n      if (result && typeof result.then === 'function') {\n        void result.then(releaseRequest, releaseRequest);\n      } else {\n        releaseRequest();\n      }\n    } catch (error) {\n      releaseRequest();\n      throw error;\n    }\n  }, [canLoadMore, hasMore, loadingMore]);\n\n  useEffect(() => {\n    const sentinel = loadMoreRef.current;\n    if (observedLoadMoreTargetRef.current !== sentinel) {\n      observedLoadMoreTargetRef.current = sentinel;\n      loadMoreIntersectionActiveRef.current = false;\n      loadMoreIntersectionConsumedRef.current = false;\n      loadMoreScrollValidationPendingRef.current = false;\n    }\n    if (!sentinel || !canLoadMore || !hasMore) return undefined;\n    if (typeof IntersectionObserver !== 'function') return undefined;\n    const owner = resolveScrollOwner();\n    let observerHasDelivered = false;\n    const observer = new IntersectionObserver((entries) => {\n      const isIntersecting = entries.some((entry) => entry.isIntersecting);\n      if (loadMoreScrollValidationPendingRef.current) {\n        observerHasDelivered = true;\n        loadMoreScrollValidationPendingRef.current = false;\n        loadMoreIntersectionActiveRef.current = isIntersecting;\n        if (!isIntersecting) {\n          loadMoreIntersectionConsumedRef.current = false;\n          return;\n        }\n        if (loadMoreIntersectionConsumedRef.current) return;\n        loadMoreIntersectionConsumedRef.current = true;\n        requestLoadMore();\n        return;\n      }\n      if (!observerHasDelivered) {\n        observerHasDelivered = true;\n        loadMoreIntersectionActiveRef.current = isIntersecting;\n        if (!isIntersecting) loadMoreIntersectionConsumedRef.current = false;\n        return;\n      }\n      if (!isIntersecting) {\n        loadMoreIntersectionActiveRef.current = false;\n        loadMoreIntersectionConsumedRef.current = false;\n        return;\n      }\n      if (loadMoreIntersectionActiveRef.current) return;\n      loadMoreIntersectionActiveRef.current = true;\n      loadMoreIntersectionConsumedRef.current = true;\n      requestLoadMore();\n    }, {\n      root: owner === rootRef.current ? owner : owner || null,\n      rootMargin: config.loading?.rootMargin ?? '240px',\n      threshold: normalizeThreshold(config.loading?.threshold),\n    });\n    const scrollTarget = owner ?? (typeof window === 'undefined' ? null : window);\n    const validateActiveIntersection = () => {\n      if (\n        !loadMoreIntersectionActiveRef.current\n        || loadMoreIntersectionConsumedRef.current\n        || loadMoreScrollValidationPendingRef.current\n      ) return;\n      loadMoreScrollValidationPendingRef.current = true;\n      observer.unobserve(sentinel);\n      observer.takeRecords();\n      observer.observe(sentinel);\n    };\n    observer.observe(sentinel);\n    scrollTarget?.addEventListener('scroll', validateActiveIntersection, { passive: true });\n    return () => {\n      observer.disconnect();\n      scrollTarget?.removeEventListener('scroll', validateActiveIntersection);\n    };\n  }, [canLoadMore, config.loading?.rootMargin, config.loading?.threshold, hasMore, keysSignature, loadingMore, normalizedItems.length, requestLoadMore, resolveScrollOwner]);\n\n  useEffect(() => {\n    if (!config.loading?.autoFill || !canLoadMore || !hasMore || loadingMore) return;\n    const sentinel = loadMoreRef.current;\n    if (!sentinel) return;\n    const owner = resolveScrollOwner()\n      ?? (config.layout.scrollOwner === 'parent' ? rootRef.current?.parentElement ?? null : null)\n      ?? rootRef.current;\n    if (!owner || owner.clientHeight <= 0) return;\n    if (owner.scrollHeight <= owner.clientHeight + 1) {\n      loadMoreIntersectionConsumedRef.current = true;\n      requestLoadMore();\n    }\n  }, [\n    canLoadMore,\n    config.layout.scrollOwner,\n    config.loading?.autoFill,\n    hasMore,\n    keysSignature,\n    loadingMore,\n    normalizedItems.length,\n    requestLoadMore,\n    resolveScrollOwner,\n  ]);\n\n  const groups = useMemo<NormalizedCollectionGroup<Item>[]>(() => {\n    if (!config.grouping) {\n      return [{ key: '__all__', stringKey: '__all__', items: normalizedItems }];\n    }\n    const grouped = new Map<string, NormalizedCollectionGroup<Item>>();\n    normalizedItems.forEach((entry) => {\n      const groupKey = config.grouping?.getGroupKey(entry.item, entry.index) ?? '__all__';\n      const stringKey = String(groupKey);\n      const existing = grouped.get(stringKey);\n      if (existing) {\n        existing.items.push(entry);\n        return;\n      }\n      grouped.set(stringKey, {\n        key: groupKey,\n        stringKey,\n        label: config.grouping?.getGroupLabel?.(groupKey, entry.item),\n        items: [entry],\n      });\n    });\n    return Array.from(grouped.values());\n  }, [config.grouping, normalizedItems]);\n\n  const createItemContext = useCallback((\n    entry: NormalizedCollectionItem<Item>,\n    layout: WorkbenchCollectionLayoutContext,\n  ): WorkbenchCollectionItemContext<Item> => {\n    const disabled = config.selection?.isItemDisabled?.(entry.item, entry.index) ?? false;\n    const context: WorkbenchCollectionItemContext<Item> = {\n      item: entry.item,\n      index: entry.index,\n      key: entry.key,\n      status: config.getItemStatus?.(entry.item, entry.index) ?? 'idle',\n      disabled,\n      selected: selectedKeys.has(entry.key),\n      selectionMode,\n      layout,\n      select: (behavior) => selectKey(entry.key, { behavior }),\n      selectFromEvent: (event, behavior) => selectKey(entry.key, {\n        behavior,\n        shiftKey: event.shiftKey,\n      }),\n      preview: () => callbacks?.onItemPreview?.(entry.item, context),\n      detail: () => callbacks?.onItemDetail?.(entry.item, context),\n      renderSlot: (name) => {\n        return slots?.item?.[name]?.(entry.item, context);\n      },\n      notifyMediaLoad: () => callbacks?.onMediaLoad?.(entry.item, context),\n      notifyMediaError: (error) => callbacks?.onMediaError?.(entry.item, context, error),\n    };\n    return context;\n  }, [callbacks, config.getItemStatus, config.selection, selectedKeys, selectKey, selectionMode, slots?.item]);\n\n  const getItemInteractionProps = useCallback((\n    entry: NormalizedCollectionItem<Item>,\n    context: WorkbenchCollectionItemContext<Item>,\n  ): HTMLAttributes<HTMLDivElement> & Record<`data-${string}`, string | boolean | undefined> => {\n    const handleKeyboard = (event: KeyboardEvent<HTMLDivElement>) => {\n      if (event.target !== event.currentTarget || (event.key !== 'Enter' && event.key !== ' ')) return;\n      event.preventDefault();\n      if (selectionMode !== 'none') context.selectFromEvent(event);\n      else callbacks?.onItemClick?.(entry.item, context, event);\n    };\n    return {\n      id: `${componentId}-item-${entry.index}`,\n      'data-monkeys-collection-item': '',\n      'data-item-key': entry.stringKey,\n      'data-selected': context.selected || undefined,\n      'data-disabled': context.disabled || undefined,\n      'data-status': context.status,\n      role: selectionMode === 'none' ? 'listitem' : 'option',\n      'aria-selected': selectionMode === 'none' ? undefined : context.selected,\n      'aria-disabled': context.disabled || undefined,\n      tabIndex:\n        callbacks?.onItemClick || selectionMode !== 'none' || config.item?.title?.visibility === 'hover' ? 0 : undefined,\n      draggable: callbacks?.onItemDragStart ? true : undefined,\n      className: cn(\n        'min-w-0 group/workbench-collection-item outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n        config.appearance?.hover && config.appearance.hover !== 'none'\n          && 'transition-[transform,box-shadow,background-color] duration-200',\n        config.appearance?.hover === 'highlight' && 'hover:bg-muted/30',\n        config.appearance?.hover === 'lift' && 'hover:-translate-y-0.5 motion-reduce:transform-none',\n        config.appearance?.hover === 'scale' && 'hover:scale-[1.01] motion-reduce:transform-none',\n        config.appearance?.hover === 'shadow' && 'hover:shadow-md',\n        config.appearance?.hover === 'lift-shadow'\n          && 'hover:-translate-y-0.5 hover:shadow-md motion-reduce:transform-none',\n        config.appearance?.selection === 'ring' && context.selected && 'ring-2 ring-primary',\n        config.appearance?.selection === 'outline' && context.selected && 'outline outline-2 outline-primary',\n        classNames?.item,\n      ),\n      onClick: (event) => {\n        if (isInteractiveEventTarget(event.target, event.currentTarget)) return;\n        if (selectionMode !== 'none') context.selectFromEvent(event);\n        callbacks?.onItemClick?.(entry.item, context, event);\n      },\n      onDoubleClick: (event) => {\n        if (isInteractiveEventTarget(event.target, event.currentTarget)) return;\n        callbacks?.onItemDoubleClick?.(entry.item, context, event);\n      },\n      onMouseEnter: (event) => callbacks?.onItemHoverChange?.(entry.item, context, true, event),\n      onMouseLeave: (event) => callbacks?.onItemHoverChange?.(entry.item, context, false, event),\n      onKeyDown: handleKeyboard,\n      onDragStart: (event) => callbacks?.onItemDragStart?.(entry.item, context, event),\n      onDragOver: callbacks?.onItemDrop ? (event) => event.preventDefault() : undefined,\n      onDrop: (event) => callbacks?.onItemDrop?.(entry.item, context, event),\n    };\n  }, [callbacks, classNames?.item, componentId, config.appearance, config.item?.title?.visibility, selectionMode]);\n\n  const renderItemContent = useCallback((\n    entry: NormalizedCollectionItem<Item>,\n    context: WorkbenchCollectionItemContext<Item>,\n  ) => {\n    const content = renderItem(entry.item, context);\n    const titleConfig = config.item?.title;\n    const visibility = titleConfig?.visibility ?? 'always';\n    const title = titleConfig && visibility !== 'never'\n      ? titleConfig.getContent?.(entry.item, context) ?? context.renderSlot('title')\n      : null;\n    const hasTitle = Boolean(titleConfig && hasRenderableNode(title));\n    const placement = titleConfig?.placement ?? 'below';\n    const titleOverlay = hasTitle && placement.startsWith('overlay-');\n    const maxLines = normalizeTitleMaxLines(titleConfig?.maxLines);\n    const surface = titleConfig?.surface ?? (titleOverlay ? 'scrim' : 'none');\n    const titleNode = hasTitle ? (\n      <div\n        data-collection-item-title=\"\"\n        data-title-placement={placement}\n        data-title-visibility={visibility}\n        className={cn(\n          'min-w-0 px-1 py-2 text-sm font-medium text-foreground',\n          titleConfig?.align === 'center' && 'text-center',\n          titleConfig?.align === 'end' && 'text-right',\n          visibility === 'hover'\n            && '!opacity-0 transition-opacity group-hover/workbench-collection-item:!opacity-100 group-focus-within/workbench-collection-item:!opacity-100',\n          titleOverlay && 'pointer-events-none absolute inset-x-0 z-10 px-3 py-2',\n          placement === 'overlay-top' && 'top-0',\n          placement === 'overlay-center' && 'top-1/2 -translate-y-1/2 motion-reduce:transform-none',\n          placement === 'overlay-bottom' && 'bottom-0',\n          surface === 'surface' && 'bg-background/90 backdrop-blur-sm',\n          surface === 'scrim' && placement === 'overlay-top'\n            && 'bg-gradient-to-b from-background/90 to-transparent pb-8',\n          surface === 'scrim' && placement === 'overlay-bottom'\n            && 'bg-gradient-to-t from-background/90 to-transparent pt-8',\n          surface === 'scrim' && placement === 'overlay-center'\n            && 'bg-background/75 backdrop-blur-sm',\n          Boolean(maxLines) && 'overflow-hidden [display:-webkit-box] [-webkit-box-orient:vertical]',\n          classNames?.itemTitle,\n        )}\n        style={maxLines ? { WebkitLineClamp: maxLines } : undefined}\n      >\n        {title}\n      </div>\n    ) : null;\n\n    const actionsConfig = config.item?.actions;\n    const actionsVisibility = actionsConfig?.visibility ?? 'always';\n    const actions = actionsConfig && actionsVisibility !== 'never' ? context.renderSlot('actions') : null;\n    const hasActions = Boolean(actionsConfig && hasRenderableNode(actions));\n    const actionsPlacement = actionsConfig?.placement ?? 'overlay-bottom';\n    const actionsOverlay = hasActions && actionsPlacement.startsWith('overlay-');\n    const actionsNode = hasActions ? (\n      <div\n        data-collection-item-actions=\"\"\n        data-actions-placement={actionsPlacement}\n        data-actions-align={actionsConfig?.align ?? 'center'}\n        data-actions-visibility={actionsVisibility}\n        className={cn(\n          'flex min-w-0 items-center gap-2 px-2 py-2',\n          actionsConfig?.align === 'start' && 'justify-start',\n          (actionsConfig?.align === undefined || actionsConfig.align === 'center') && 'justify-center',\n          actionsConfig?.align === 'end' && 'justify-end',\n          actionsConfig?.wrap !== false && 'flex-wrap',\n          actionsVisibility === 'hover'\n            && '!opacity-0 transition-opacity group-hover/workbench-collection-item:!opacity-100 group-focus-within/workbench-collection-item:!opacity-100 [@media(hover:none)]:!opacity-100',\n          actionsOverlay && 'pointer-events-none absolute inset-x-0 z-20',\n          actionsPlacement === 'overlay-top' && 'top-1',\n          actionsPlacement === 'overlay-bottom' && 'bottom-1',\n          classNames?.itemActions,\n        )}\n      >\n        <div className={cn('pointer-events-auto flex items-center gap-2', actionsConfig?.wrap !== false && 'flex-wrap')}>\n          {actions}\n        </div>\n      </div>\n    ) : null;\n\n    if (!hasTitle && !hasActions) return content;\n\n    return (\n      <div\n        className={cn('min-w-0', (titleOverlay || actionsOverlay) && 'relative', classNames?.itemContent)}\n        data-collection-item-content=\"\"\n      >\n        {placement === 'above' ? titleNode : null}\n        {actionsPlacement === 'above' ? actionsNode : null}\n        {content}\n        {placement === 'below' || titleOverlay ? titleNode : null}\n        {actionsPlacement === 'below' || actionsOverlay ? actionsNode : null}\n      </div>\n    );\n  }, [classNames?.itemActions, classNames?.itemContent, classNames?.itemTitle, config.item, renderItem]);\n\n  const renderEntry = useCallback((\n    entry: NormalizedCollectionItem<Item>,\n    layout: WorkbenchCollectionLayoutContext,\n    includeShell = true,\n  ) => {\n    const context = createItemContext(entry, layout);\n    const content = renderItemContent(entry, context);\n    if (!includeShell) return content;\n    return (\n      <div {...getItemInteractionProps(entry, context)}>\n        {content}\n      </div>\n    );\n  }, [createItemContext, getItemInteractionProps, renderItemContent]);\n\n  const baseLayoutContext = useMemo<WorkbenchCollectionLayoutContext>(() => ({\n    mode,\n    columnCount,\n    columnWidth,\n    containerWidth,\n    gap,\n    placementStrategy,\n    rowHeight,\n  }), [columnCount, columnWidth, containerWidth, gap, mode, placementStrategy, rowHeight]);\n\n  const renderGroupItems = (group: NormalizedCollectionGroup<Item>) => {\n    const virtualization = config.virtualization;\n    const adapter = virtualization?.adapter;\n    const virtualizationRequested = virtualization?.enabled === true;\n    if (virtualizationRequested && (!adapter || adapter.supports?.(mode) === false)) {\n      if (virtualization?.fallback === 'error') {\n        return null;\n      }\n    }\n    if (virtualizationRequested && adapter && adapter.supports?.(mode) !== false) {\n      return adapter.render({\n        items: group.items.map(({ item }) => item),\n        keys: group.items.map(({ key }) => key),\n        layout: config.layout,\n        scrollOwner: resolveScrollOwner(),\n        renderItem: (item, localIndex, layout) => {\n          const entry = group.items[localIndex];\n          return entry\n            ? <Fragment key={entry.stringKey}>{renderEntry(entry, layout)}</Fragment>\n            : null;\n        },\n      });\n    }\n\n    if (mode === 'masonry' || mode === 'dense') {\n      return (\n        <WorkbenchMasonryLayout\n          items={group.items}\n          columnCount={columnCount}\n          columnWidth={config.layout.cardWidth ?? config.layout.columnWidth ?? config.layout.idealCardWidth}\n          gap={gap}\n          rowHeight={rowHeight}\n          placementStrategy={mode === 'dense' ? 'dense' : placementStrategy}\n          className={classNames?.layout}\n          containerProps={{\n            role: selectionMode === 'none' ? 'list' : 'listbox',\n            'aria-label': ariaLabel ?? labels.collection,\n            'aria-multiselectable': selectionMode === 'multiple' || undefined,\n          }}\n          getItemProps={(entry, masonryLayout) => {\n            const context = createItemContext(entry, { ...masonryLayout, mode });\n            return getItemInteractionProps(entry, context);\n          }}\n          getItemKey={(entry) => entry.key}\n          getItemSize={(entry, masonryLayout) => {\n            const layout: WorkbenchCollectionLayoutContext = {\n              ...masonryLayout,\n              mode,\n            };\n            const customSize = config.layout.getItemSize?.(entry.item, layout);\n            const aspectRatio = config.layout.getItemAspectRatio?.(entry.item, entry.index);\n            return normalizeItemSize(customSize, aspectRatio, masonryLayout.columnWidth);\n          }}\n          renderItem={(entry, masonryLayout: WorkbenchMasonryLayoutContext) => renderEntry(entry, {\n            ...masonryLayout,\n            mode,\n          }, false)}\n        />\n      );\n    }\n\n    if (mode === 'rail') {\n      const cardWidth = config.layout.cardWidth ?? config.layout.idealCardWidth ?? DEFAULT_CARD_WIDTH_PX;\n      return (\n        <div\n          role={selectionMode === 'none' ? 'list' : 'listbox'}\n          aria-label={ariaLabel ?? labels.collection}\n          aria-multiselectable={selectionMode === 'multiple' || undefined}\n          className={cn('grid min-w-0 grid-flow-col items-start overflow-x-auto', classNames?.layout)}\n          style={{ gap, gridAutoColumns: typeof cardWidth === 'number' ? `${cardWidth}px` : cardWidth }}\n        >\n          {group.items.map((entry) => (\n            <Fragment key={entry.stringKey}>{renderEntry(entry, baseLayoutContext)}</Fragment>\n          ))}\n        </div>\n      );\n    }\n\n    return (\n      <div\n        role={selectionMode === 'none' ? 'list' : 'listbox'}\n        aria-label={ariaLabel ?? labels.collection}\n        aria-multiselectable={selectionMode === 'multiple' || undefined}\n        className={cn('grid min-w-0 items-start', classNames?.layout)}\n        style={{\n          gap,\n          gridTemplateColumns: `repeat(${columnCount}, minmax(0, 1fr))`,\n        }}\n      >\n        {group.items.map((entry) => {\n          const customSize = config.layout.getItemSize?.(entry.item, baseLayoutContext);\n          const span = clamp(Math.round(Number(customSize?.columnSpan) || 1), 1, columnCount);\n          const aspectRatio = config.layout.getItemAspectRatio?.(entry.item, entry.index);\n          return (\n            <div\n              key={entry.stringKey}\n              {...getItemInteractionProps(\n                entry,\n                createItemContext(entry, { ...baseLayoutContext, columnSpan: span, size: customSize }),\n              )}\n              style={{\n                gridColumn: span > 1 ? `span ${span}` : undefined,\n                aspectRatio: Number.isFinite(aspectRatio) && Number(aspectRatio) > 0\n                  ? String(aspectRatio)\n                  : undefined,\n              }}\n            >\n              {renderEntry(entry, { ...baseLayoutContext, columnSpan: span, size: customSize }, false)}\n            </div>\n          );\n        })}\n      </div>\n    );\n  };\n\n  const slotContext: WorkbenchCollectionSlotContext<Item> = {\n    items,\n    error: effectiveError,\n    loading,\n    loadingMore,\n    selectedKeys,\n    retry: () => callbacks?.onRetry?.(),\n  };\n  const header = resolveRenderableSlot(slots?.header, slotContext);\n  const toolbar = resolveRenderableSlot(slots?.toolbar, slotContext);\n  const selectionToolbar = selectedKeys.size > 0\n    ? resolveRenderableSlot(slots?.selectionToolbar, slotContext)\n    : null;\n  const beforeItems = resolveRenderableSlot(slots?.beforeItems, slotContext);\n  const footer = resolveRenderableSlot(slots?.footer, slotContext);\n  const showPermission = state?.permission === true;\n  const showOffline = state?.offline === true && !showPermission;\n  const showInitialLoading = loading && items.length === 0 && !showPermission && !showOffline;\n  const showInitialError = Boolean(effectiveError) && items.length === 0 && !showPermission && !showOffline && !showInitialLoading;\n  const showEmpty = !showPermission && !showOffline && !showInitialLoading && !showInitialError && (state?.empty === true || items.length === 0);\n  const loadingSlot = resolveRenderableSlot(slots?.loading, slotContext);\n  const errorSlot = resolveRenderableSlot(slots?.error, slotContext);\n  const permissionSlot = resolveRenderableSlot(slots?.permission, slotContext);\n  const offlineSlot = resolveRenderableSlot(slots?.offline, slotContext);\n  const emptySlot = resolveRenderableSlot(slots?.empty, slotContext);\n  const loadMoreSlot = resolveRenderableSlot(slots?.loadMore, slotContext);\n  const selfScrollable = config.layout.scrollOwner === 'self'\n    || (config.layout.scrollOwner === undefined && (config.layout.fillHeight || config.layout.maxHeight));\n  const rootStyle: CSSProperties = {\n    ...style,\n    padding: config.layout.padding ?? style?.padding,\n    height: config.layout.fillHeight ? '100%' : style?.height,\n    maxHeight: config.layout.maxHeight ?? style?.maxHeight,\n    overflow: selfScrollable ? 'auto' : style?.overflow,\n  };\n\n  return (\n    <section\n      ref={rootRef}\n      {...componentAttributes}\n      data-monkeys-component=\"workbench-collection\"\n      data-layout-mode={mode}\n      data-density={config.appearance?.density}\n      data-radius={config.appearance?.radius}\n      data-media-fit={config.appearance?.mediaFit}\n      data-hover-effect={config.appearance?.hover}\n      aria-label={ariaLabel ?? labels.collection}\n      aria-busy={loading || loadingMore || undefined}\n      className={cn('min-h-0 min-w-0', config.layout.fillHeight && 'h-full', classNames?.root, className)}\n      style={rootStyle}\n    >\n      {hasRenderableNode(header) ? <div className={classNames?.header}>{header}</div> : null}\n      {hasRenderableNode(toolbar) ? <div className={classNames?.toolbar}>{toolbar}</div> : null}\n      {hasRenderableNode(selectionToolbar) ? (\n        <div className={classNames?.selectionToolbar}>{selectionToolbar}</div>\n      ) : null}\n      {hasRenderableNode(beforeItems) ? <div className={classNames?.beforeItems}>{beforeItems}</div> : null}\n\n      {showPermission ? (\n        hasRenderableNode(permissionSlot) ? permissionSlot : (\n          <BaseSystemState\n            kind=\"permission\"\n            title={labels.permission}\n            actions={statusStates.permission?.showRequestAccess !== false && callbacks?.onRequestAccess\n              ? <BaseButton size=\"sm\" label={labels.requestAccess} onClick={callbacks.onRequestAccess} />\n              : undefined}\n          />\n        )\n      ) : showOffline ? (\n        hasRenderableNode(offlineSlot) ? offlineSlot : (\n          <BaseSystemState\n            kind=\"offline\"\n            title={labels.offline}\n            actions={statusStates.error?.showRetry !== false && callbacks?.onRetry\n              ? <BaseButton size=\"sm\" label={labels.retry} onClick={callbacks.onRetry} />\n              : undefined}\n          />\n        )\n      ) : showInitialLoading ? (\n        hasRenderableNode(loadingSlot) ? loadingSlot : loadingVariant === 'spinner' ? (\n          <BaseLoadingState title={labels.loading} variant=\"spinner\" />\n        ) : (\n          <div\n            ref={registerItemsNode}\n            className={cn('min-w-0', classNames?.items)}\n          >\n            <WorkbenchCollectionSkeleton\n              mode={mode}\n              phase=\"initial\"\n              columnCount={columnCount}\n              columnWidth={columnWidth}\n              cardWidth={config.layout.cardWidth ?? config.layout.idealCardWidth}\n              gap={gap}\n              rowHeight={rowHeight}\n              config={config.loading?.skeleton}\n              ariaLabel={labels.loading}\n              className={classNames?.layout}\n            />\n          </div>\n        )\n      ) : showInitialError ? (\n        hasRenderableNode(errorSlot) ? errorSlot : (\n          <BaseSystemState\n            kind=\"error\"\n            title={labels.loadError}\n            actions={statusStates.error?.showRetry !== false && callbacks?.onRetry\n              ? <BaseButton size=\"sm\" label={labels.retry} onClick={callbacks.onRetry} />\n              : undefined}\n          />\n        )\n      ) : showEmpty ? (\n        hasRenderableNode(emptySlot) ? emptySlot : <BaseEmptyState title={labels.empty} />\n      ) : (\n        <div\n          ref={registerItemsNode}\n          className={cn('min-w-0', classNames?.items)}\n        >\n          {groups.map((group, groupIndex) => {\n            const groupContext: WorkbenchCollectionGroupContext<Item> = {\n              key: group.key,\n              label: group.label,\n              items: group.items.map(({ item }) => item),\n              groupIndex,\n            };\n            const heading = config.grouping\n              ? slots?.groupHeading?.(groupContext, slotContext) ?? group.label\n              : null;\n            const headingId = `${componentId}-group-${groupIndex}`;\n            return (\n              <div\n                key={group.stringKey}\n                data-collection-group={group.stringKey}\n                className={classNames?.group}\n              >\n                {hasRenderableNode(heading) ? (\n                  <div id={headingId} role=\"heading\" aria-level={2} className={classNames?.groupHeading}>\n                    {heading}\n                  </div>\n                ) : null}\n                {renderGroupItems(group)}\n              </div>\n            );\n          })}\n        </div>\n      )}\n\n      {items.length > 0 && effectiveError ? (\n        <div className={classNames?.status}>\n          {hasRenderableNode(errorSlot) ? errorSlot : (\n            <BaseSystemState\n              kind=\"error\"\n              title={labels.refreshError}\n              actions={statusStates.error?.showRetry !== false && callbacks?.onRetry\n                ? <BaseButton size=\"sm\" label={labels.retry} onClick={callbacks.onRetry} />\n                : undefined}\n            />\n          )}\n        </div>\n      ) : null}\n\n      {items.length > 0 && (hasMore || loadingMore) ? (\n        <div ref={loadMoreRef} className={classNames?.loadMore} data-collection-load-more=\"\">\n          {hasRenderableNode(loadMoreSlot)\n            ? loadMoreSlot\n            : loadingMore\n              ? loadingVariant === 'spinner'\n                ? <BaseLoadingState title={labels.loadingMore} variant=\"spinner\" />\n                : (\n                    <WorkbenchCollectionSkeleton\n                      mode={mode}\n                      phase=\"load-more\"\n                      columnCount={columnCount}\n                      columnWidth={columnWidth}\n                      cardWidth={config.layout.cardWidth ?? config.layout.idealCardWidth}\n                      gap={gap}\n                      rowHeight={rowHeight}\n                      config={config.loading?.skeleton}\n                      ariaLabel={labels.loadingMore}\n                      className={classNames?.layout}\n                    />\n                  )\n              : null}\n        </div>\n      ) : null}\n      {hasRenderableNode(footer) ? <div className={classNames?.footer}>{footer}</div> : null}\n    </section>\n  );\n}\n","import {\n  WorkbenchGalleryCard,\n  type WorkbenchGalleryCardProps,\n} from './WorkbenchGalleryCard';\nimport {\n  type WorkbenchMasonryItemSize,\n} from './WorkbenchMasonryLayout';\nimport { WorkbenchCollection } from './WorkbenchCollection';\nimport {\n  getDefaultGalleryDisplayText,\n  getDefaultGalleryFieldValue,\n  isDefaultGalleryAudioField,\n  isDefaultGalleryImageField,\n  isDefaultGalleryMediaColumn,\n  isDefaultGallerySummaryCandidate,\n  isDefaultGalleryTitleCandidate,\n  type WorkbenchGalleryColumn,\n} from './workbenchGalleryUtils';\n\nconst GALLERY_GRID_GAP_PX = 12;\n\nexport interface WorkbenchGalleryViewProps<Row = any>\n  extends Omit<WorkbenchGalleryCardProps<Row>, 'row' | 'columns' | 'onClick' | 'isSelected' | 'isMasonry'> {\n  rows?: Row[];\n  columns?: WorkbenchGalleryColumn[];\n  onRowClick?: (row: Row, rowIndex: number) => void;\n  selectedLinkKey?: string;\n  selectedRowKey?: string;\n  className?: string;\n  isMasonry?: boolean;\n  galleryLayoutMode?: 'auto' | 'rail' | string;\n  galleryRailCardWidth?: number;\n  galleryGridColumns?: number | 'auto' | string;\n  galleryGridCardWidth?: number | string;\n  galleryMasonryColumnWidth?: number | string;\n  masonryPlacementStrategy?: 'shelf' | 'dense';\n  getMasonryItemSize?: (\n    row: Row,\n    context: {\n      defaultSize: WorkbenchMasonryItemSize;\n      columnCount: number;\n      columnWidth: number;\n      containerWidth: number;\n      gap: number;\n      placementStrategy: 'shelf' | 'dense';\n      rowHeight: number;\n    },\n  ) => WorkbenchMasonryItemSize | undefined;\n}\n\nfunction getNormalizedGalleryGridCardWidth(cardWidth: unknown) {\n  if (typeof cardWidth === 'number' && Number.isFinite(cardWidth) && cardWidth > 0) {\n    return `${cardWidth}px`;\n  }\n\n  if (typeof cardWidth === 'string' && cardWidth.trim()) {\n    return cardWidth.trim();\n  }\n\n  return undefined;\n}\n\nfunction getDefaultGalleryDetailLimit(density?: string) {\n  if (density === 'compact') return 2;\n  if (density === 'detailed') return 6;\n  return 4;\n}\n\nfunction getNormalizedGalleryBentoColumns(columns: unknown, density?: string) {\n  if (columns === 1 || columns === 2 || columns === 3) return Number(columns);\n  return density === 'detailed' ? 1 : 2;\n}\n\nfunction getNormalizedGalleryDetailLimit({\n  density,\n  visibility,\n  limit,\n}: {\n  density?: string;\n  visibility?: string;\n  limit?: number | string;\n}) {\n  if (visibility === 'all') return Number.POSITIVE_INFINITY;\n  const parsedLimit = Number.parseInt(String(limit), 10);\n  if (Number.isFinite(parsedLimit) && parsedLimit > 0) return parsedLimit;\n  return getDefaultGalleryDetailLimit(density);\n}\n\nfunction getGalleryCardWidthMetrics(density?: string) {\n  if (density === 'compact') return { min: 220, ideal: 244, max: 268 };\n  if (density === 'detailed') return { min: 320, ideal: 372, max: 420 };\n  return { min: 260, ideal: 304, max: 348 };\n}\n\nfunction getNormalizedGalleryGridColumns(columns: unknown) {\n  if (columns === undefined || columns === null || columns === '' || columns === 'auto') {\n    return undefined;\n  }\n\n  const parsedColumns = Number.parseInt(String(columns), 10);\n  if (!Number.isFinite(parsedColumns) || parsedColumns <= 0) return undefined;\n  return Math.max(1, Math.min(parsedColumns, 8));\n}\n\nfunction getGalleryTextLength(value: unknown) {\n  if (value === null || value === undefined) return 0;\n  const text = String(value).trim();\n  return text && text !== '—' ? text.length : 0;\n}\n\nfunction getGalleryFieldText<Row>({\n  column,\n  row,\n  getFieldValue,\n  getDisplayText,\n}: {\n  column?: WorkbenchGalleryColumn | null;\n  row: Row;\n  getFieldValue: (column: WorkbenchGalleryColumn, row: Row) => unknown;\n  getDisplayText: (value: unknown) => unknown;\n}) {\n  if (!column) return '';\n  const rawValue = getFieldValue(column, row);\n  if (rawValue === null || rawValue === undefined || rawValue === '') return '';\n  const textValue = getDisplayText(rawValue);\n  return textValue === '—' ? '' : String(textValue);\n}\n\nfunction estimateLineCount({\n  text,\n  charsPerLine,\n  maxLines,\n}: {\n  text: unknown;\n  charsPerLine: number;\n  maxLines: number;\n}) {\n  const textLength = getGalleryTextLength(text);\n  if (!textLength) return 0;\n  return Math.max(1, Math.min(maxLines, Math.ceil(textLength / charsPerLine)));\n}\n\nfunction estimateGalleryDetailCellHeight({\n  text,\n  density,\n  bentoColumns,\n}: {\n  text: unknown;\n  density?: string;\n  bentoColumns: number;\n}) {\n  const baseHeight = density === 'detailed' ? 54 : density === 'compact' ? 44 : 48;\n  const charsPerLine = bentoColumns === 1\n    ? (density === 'detailed' ? 32 : 26)\n    : (density === 'detailed' ? 18 : 15);\n  const maxLines = density === 'detailed' ? 3 : 2;\n  const lineCount = estimateLineCount({ text, charsPerLine, maxLines });\n\n  if (!lineCount) return baseHeight;\n  return baseHeight + Math.max(0, lineCount - 1) * 16;\n}\n\nfunction estimateGalleryDetailGridHeight({\n  columns,\n  density,\n  bentoColumns,\n}: {\n  columns: Array<{ text: string }>;\n  density?: string;\n  bentoColumns: number;\n}) {\n  if (!columns.length) return 0;\n\n  const cellHeights = columns.map((column) => estimateGalleryDetailCellHeight({\n    text: column.text,\n    density,\n    bentoColumns,\n  }));\n\n  if (bentoColumns === 1) {\n    return 12 + cellHeights.reduce((sum, height) => sum + height, 0) + Math.max(0, columns.length - 1) * 8;\n  }\n\n  let totalHeight = 12;\n\n  for (let index = 0; index < cellHeights.length; index += bentoColumns) {\n    const rowHeights = cellHeights.slice(index, index + bentoColumns);\n    totalHeight += Math.max(...rowHeights);\n    if (index + bentoColumns < cellHeights.length) totalHeight += 8;\n  }\n\n  return totalHeight;\n}\n\nfunction getDefaultGalleryMasonryItemSize<Row>({\n  row,\n  columns,\n  galleryFieldKey,\n  galleryDensity,\n  galleryBentoColumns,\n  galleryDetailVisibility,\n  galleryDetailLimit,\n  getFieldValue,\n  isMediaColumn,\n  isTitleCandidate,\n  isSummaryCandidate,\n  getDisplayText,\n  isImageField,\n  isAudioField,\n  cardVariant,\n  renderPreview,\n  renderLeadingVisual,\n  hiddenDetailFieldKeys,\n  layout,\n  resolveRecordVisual,\n}: {\n  row: Row;\n  columns: WorkbenchGalleryColumn[];\n  galleryFieldKey?: string;\n  galleryDensity?: string;\n  galleryBentoColumns?: number;\n  galleryDetailVisibility?: string;\n  galleryDetailLimit?: number | string;\n  getFieldValue: (column: WorkbenchGalleryColumn, row: Row) => unknown;\n  isMediaColumn: (column: WorkbenchGalleryColumn, row: Row) => boolean;\n  isTitleCandidate: (column: WorkbenchGalleryColumn, row: Row) => boolean;\n  isSummaryCandidate: (column: WorkbenchGalleryColumn, row: Row) => boolean;\n  getDisplayText: (value: unknown) => unknown;\n  isImageField: (column: WorkbenchGalleryColumn, value: unknown) => boolean;\n  isAudioField: (column: WorkbenchGalleryColumn, value: unknown) => boolean;\n  cardVariant?: string;\n  renderPreview?: unknown;\n  renderLeadingVisual?: unknown;\n  hiddenDetailFieldKeys?: string[];\n  layout?: { columnWidth?: number };\n  resolveRecordVisual?: WorkbenchGalleryCardProps<Row>['resolveRecordVisual'];\n}) {\n  const iconColumn = columns.find((column) => column.renderType === 'icon');\n  const iconVisual = iconColumn && resolveRecordVisual ? resolveRecordVisual((row as any)?.[iconColumn.key], row, iconColumn) : null;\n  const selectedGalleryColumn = galleryFieldKey !== 'auto'\n    ? columns.find((column) => column.key === galleryFieldKey && isMediaColumn(column, row))\n    : null;\n  const mediaColumn = selectedGalleryColumn || columns.find((column) => isMediaColumn(column, row)) || null;\n  const mediaValue = mediaColumn ? getFieldValue(mediaColumn, row) : null;\n  const isImageMedia = mediaColumn ? isImageField(mediaColumn, mediaValue) : false;\n  const isAudioMedia = mediaColumn ? isAudioField(mediaColumn, mediaValue) : false;\n  const hasDefaultLeadingVisual = Boolean(iconVisual);\n  const hasLeadingVisual = Boolean(renderLeadingVisual) || hasDefaultLeadingVisual;\n  const contentColumns = columns.filter((column) => column.key !== mediaColumn?.key && column.renderType !== 'icon');\n  const titleCandidates = contentColumns.filter((column) => {\n    if (!column || isMediaColumn(column, row) || !isTitleCandidate(column, row)) return false;\n    const value = getFieldValue(column, row);\n    return !(value === null || value === undefined || value === '');\n  });\n  const titleColumn = titleCandidates[0] || null;\n  const titleText = titleColumn\n    ? getGalleryFieldText({ column: titleColumn, row, getFieldValue, getDisplayText })\n    : String(getDisplayText((row as any)?.linkKey || (row as any)?.id || ''));\n  const summaryColumn = contentColumns.find((column) => {\n    if (!column || column.key === titleColumn?.key || isMediaColumn(column, row) || !isSummaryCandidate(column, row)) return false;\n    const summaryText = getGalleryFieldText({ column, row, getFieldValue, getDisplayText });\n    return summaryText.length > 12;\n  }) || contentColumns.find((column) => {\n    if (!column || column.key === titleColumn?.key || isMediaColumn(column, row) || !isSummaryCandidate(column, row)) return false;\n    return getGalleryTextLength(getGalleryFieldText({ column, row, getFieldValue, getDisplayText })) > 0;\n  }) || null;\n  const summaryText = summaryColumn ? getGalleryFieldText({ column: summaryColumn, row, getFieldValue, getDisplayText }) : '';\n  const hiddenDetailKeySet = new Set(hiddenDetailFieldKeys);\n  const detailColumns = contentColumns\n    .filter((column) => column.key !== titleColumn?.key && column.key !== summaryColumn?.key && !hiddenDetailKeySet.has(column.key))\n    .map((column) => ({\n      column,\n      text: getGalleryFieldText({ column, row, getFieldValue, getDisplayText }),\n    }));\n  const resolvedDetailLimit = getNormalizedGalleryDetailLimit({\n    density: galleryDensity,\n    visibility: galleryDetailVisibility,\n    limit: galleryDetailLimit,\n  });\n  const visibleDetailColumns = Number.isFinite(resolvedDetailLimit)\n    ? detailColumns.slice(0, resolvedDetailLimit)\n    : detailColumns;\n  const hiddenDetailCount = Math.max(detailColumns.length - visibleDetailColumns.length, 0);\n  const resolvedBentoColumns = getNormalizedGalleryBentoColumns(galleryBentoColumns, galleryDensity);\n  const resolvedColumnWidth = layout?.columnWidth || getGalleryCardWidthMetrics(galleryDensity).ideal;\n\n  if (cardVariant === 'image-only') {\n    return {\n      width: resolvedColumnWidth,\n      height: Math.round(resolvedColumnWidth * 1.25),\n    };\n  }\n\n  if (cardVariant === 'preview-only') {\n    return {\n      width: resolvedColumnWidth,\n      height: Math.round(resolvedColumnWidth * 0.82),\n    };\n  }\n\n  let estimatedHeight = galleryDensity === 'detailed' ? 84 : galleryDensity === 'compact' ? 64 : 72;\n\n  if (typeof renderPreview === 'function') {\n    estimatedHeight += galleryDensity === 'detailed' ? 188 : galleryDensity === 'compact' ? 140 : 164;\n  } else if (isImageMedia) {\n    estimatedHeight += Math.round(resolvedColumnWidth * (galleryDensity === 'detailed' ? 0.72 : 0.62)) + 12;\n  } else if (isAudioMedia) {\n    estimatedHeight += 92;\n  }\n\n  const titleLines = estimateLineCount({\n    text: titleText,\n    charsPerLine: galleryDensity === 'detailed' ? 26 : 24,\n    maxLines: 2,\n  }) || 1;\n  const summaryLines = estimateLineCount({\n    text: summaryText,\n    charsPerLine: hasLeadingVisual ? 22 : (galleryDensity === 'detailed' ? 30 : 26),\n    maxLines: galleryDensity === 'detailed' ? 4 : 2,\n  });\n  const textHeaderHeight = 26 + titleLines * 18 + (summaryLines > 0 ? summaryLines * 16 + 4 : 0);\n  estimatedHeight += Math.max(hasLeadingVisual ? 56 : 0, textHeaderHeight);\n  estimatedHeight += estimateGalleryDetailGridHeight({\n    columns: visibleDetailColumns,\n    density: galleryDensity,\n    bentoColumns: resolvedBentoColumns,\n  });\n\n  if (hiddenDetailCount > 0) estimatedHeight += 18;\n  if (!summaryText && visibleDetailColumns.length === 0) estimatedHeight += 24;\n\n  return {\n    width: resolvedColumnWidth,\n    height: estimatedHeight,\n  };\n}\n\nexport function WorkbenchGalleryView<Row = any>({\n  rows = [],\n  columns = [],\n  onRowClick,\n  cardInteraction = 'button',\n  selectedLinkKey,\n  selectedRowKey,\n  className,\n  isMasonry = false,\n  galleryLayoutMode = 'auto',\n  galleryRailCardWidth,\n  galleryGridColumns,\n  galleryGridCardWidth,\n  galleryMasonryColumnWidth,\n  masonryPlacementStrategy = 'shelf',\n  galleryFieldKey = 'auto',\n  galleryDensity = 'comfortable',\n  galleryBentoColumns = 2,\n  galleryDetailVisibility = 'limit',\n  galleryDetailLimit,\n  shouldEnhanceMultimodal = true,\n  getFieldValue,\n  isMediaColumn,\n  isTitleCandidate,\n  isSummaryCandidate,\n  getDisplayText,\n  renderFieldValue,\n  getImagePreviewSrc,\n  isImageField,\n  isAudioField,\n  AudioPlayerComponent,\n  cardVariant = 'default',\n  galleryDetailPresentation,\n  renderPreview,\n  renderMeta,\n  renderLeadingVisual,\n  resolveRecordVisual,\n  hiddenDetailFieldKeys = [],\n  labels,\n  formatLabel,\n  getMasonryItemSize,\n}: WorkbenchGalleryViewProps<Row>) {\n  const { min: resolvedMinCardWidth, ideal: resolvedIdealCardWidth, max: resolvedMaxCardWidth } = getGalleryCardWidthMetrics(galleryDensity);\n  const resolvedRailCardWidth = galleryRailCardWidth || resolvedMinCardWidth;\n  const resolvedGridColumnCount = getNormalizedGalleryGridColumns(galleryGridColumns);\n  const resolvedGridCardWidth = getNormalizedGalleryGridCardWidth(galleryGridCardWidth);\n  const resolvedMasonryColumnWidth = galleryMasonryColumnWidth || resolvedMinCardWidth;\n  const isRailLayout = galleryLayoutMode === 'rail';\n  const resolvedGetFieldValue = getFieldValue || getDefaultGalleryFieldValue;\n  const resolvedGetDisplayText = getDisplayText || getDefaultGalleryDisplayText;\n  const resolvedIsImageField = isImageField || isDefaultGalleryImageField;\n  const resolvedIsAudioField = isAudioField || isDefaultGalleryAudioField;\n  const resolvedIsMediaColumn = isMediaColumn || ((column: WorkbenchGalleryColumn, row: Row) => (\n    isDefaultGalleryMediaColumn(column, row, {\n      getFieldValue: resolvedGetFieldValue as any,\n      shouldEnhanceMultimodal,\n      isImageField: resolvedIsImageField,\n      isAudioField: resolvedIsAudioField,\n    })\n  ));\n  const resolvedIsTitleCandidate = isTitleCandidate || ((column: WorkbenchGalleryColumn, row: Row) => (\n    isDefaultGalleryTitleCandidate(column, row, { isMediaColumn: resolvedIsMediaColumn as any })\n  ));\n  const resolvedIsSummaryCandidate = isSummaryCandidate || ((column: WorkbenchGalleryColumn, row: Row) => (\n    isDefaultGallerySummaryCandidate(column, row, { isMediaColumn: resolvedIsMediaColumn as any })\n  ));\n  const resolvedRenderFieldValue = renderFieldValue || ((column: WorkbenchGalleryColumn, row: Row, { compact } = {}) => (\n    <span>{resolvedGetDisplayText(resolvedGetFieldValue(column, row))}</span>\n  ));\n\n  const renderGalleryCard = (row: Row, rowIndex: number) => (\n    <WorkbenchGalleryCard\n      key={(row as any)?.id || (row as any)?.linkKey || rowIndex}\n      row={row}\n      columns={columns}\n      cardInteraction={cardInteraction}\n      onClick={onRowClick ? () => onRowClick(row, rowIndex) : undefined}\n      isSelected={String((row as any)?.linkKey || (row as any)?.id || '') === String(selectedRowKey || selectedLinkKey || '')}\n      isMasonry={isMasonry}\n      galleryFieldKey={galleryFieldKey}\n      galleryDensity={galleryDensity}\n      galleryBentoColumns={galleryBentoColumns}\n      galleryDetailVisibility={galleryDetailVisibility}\n      galleryDetailLimit={galleryDetailLimit}\n      galleryDetailPresentation={galleryDetailPresentation}\n      shouldEnhanceMultimodal={shouldEnhanceMultimodal}\n      getFieldValue={resolvedGetFieldValue as any}\n      isMediaColumn={resolvedIsMediaColumn as any}\n      isTitleCandidate={resolvedIsTitleCandidate as any}\n      isSummaryCandidate={resolvedIsSummaryCandidate as any}\n      getDisplayText={resolvedGetDisplayText}\n      renderFieldValue={resolvedRenderFieldValue as any}\n      getImagePreviewSrc={getImagePreviewSrc}\n      isImageField={resolvedIsImageField}\n      isAudioField={resolvedIsAudioField}\n      AudioPlayerComponent={AudioPlayerComponent}\n      cardVariant={cardVariant}\n      renderPreview={renderPreview}\n      renderMeta={renderMeta}\n      renderLeadingVisual={renderLeadingVisual}\n      resolveRecordVisual={resolveRecordVisual}\n      hiddenDetailFieldKeys={hiddenDetailFieldKeys}\n      labels={labels}\n      formatLabel={formatLabel}\n    />\n  );\n\n  const collectionMode = isMasonry\n    ? masonryPlacementStrategy === 'dense' ? 'dense' : 'masonry'\n    : isRailLayout ? 'rail' : 'grid';\n\n  return (\n    <WorkbenchCollection\n      items={rows}\n      classNames={{ layout: className }}\n      config={{\n        getItemKey: (row: Row, rowIndex: number) => (row as any)?.id || (row as any)?.linkKey || rowIndex,\n        layout: {\n          mode: collectionMode,\n          gap: GALLERY_GRID_GAP_PX,\n          columns: isMasonry\n            ? 'auto'\n            : resolvedGridColumnCount\n              ? {\n                  mobile: 1,\n                  tablet: Math.min(2, resolvedGridColumnCount),\n                  desktop: resolvedGridColumnCount,\n                }\n              : 'auto',\n          cardWidth: isRailLayout ? resolvedRailCardWidth : undefined,\n          minCardWidth: resolvedGridCardWidth ?? resolvedMinCardWidth,\n          idealCardWidth: isMasonry\n            ? resolvedMasonryColumnWidth\n            : resolvedGridCardWidth ?? resolvedIdealCardWidth,\n          maxCardWidth: resolvedGridCardWidth ?? resolvedMaxCardWidth,\n          placementStrategy: masonryPlacementStrategy,\n          getItemSize: isMasonry\n            ? (row: Row, layout) => {\n              const defaultSize = getDefaultGalleryMasonryItemSize({\n                row,\n                columns,\n                galleryFieldKey,\n                galleryDensity,\n                galleryBentoColumns,\n                galleryDetailVisibility,\n                galleryDetailLimit,\n                getFieldValue: resolvedGetFieldValue as any,\n                isMediaColumn: resolvedIsMediaColumn as any,\n                isTitleCandidate: resolvedIsTitleCandidate as any,\n                isSummaryCandidate: resolvedIsSummaryCandidate as any,\n                getDisplayText: resolvedGetDisplayText,\n                isImageField: resolvedIsImageField,\n                isAudioField: resolvedIsAudioField,\n                cardVariant,\n                renderPreview,\n                renderLeadingVisual,\n                hiddenDetailFieldKeys,\n                layout,\n                resolveRecordVisual,\n              });\n\n              if (typeof getMasonryItemSize !== 'function') return defaultSize;\n              const customSize = getMasonryItemSize(row, {\n                ...layout,\n                placementStrategy: layout.placementStrategy === 'dense' ? 'dense' : 'shelf',\n                defaultSize,\n              }) || {};\n              return {\n                ...defaultSize,\n                ...customSize,\n              };\n            }\n            : undefined,\n        },\n      }}\n      renderItem={(row, context) => renderGalleryCard(row, context.index)}\n    />\n  );\n}\n","import { useCallback, useMemo, useState, type CSSProperties, type ReactNode } from 'react';\nimport {\n  DndContext,\n  DragOverlay,\n  PointerSensor,\n  useDraggable,\n  useDroppable,\n  useSensor,\n  useSensors,\n  type DragEndEvent,\n  type DragStartEvent,\n} from '@dnd-kit/core';\n\nimport { cn } from '../base/utils';\nimport { BaseButton } from '../base/BaseButton';\n\nexport interface WorkbenchLaneColumn<ColumnId extends string = string> {\n  id: ColumnId;\n  label?: ReactNode;\n  icon?: ReactNode;\n  className?: string;\n  headerClassName?: string;\n  bodyClassName?: string;\n  badgeClassName?: string;\n  iconClassName?: string;\n}\n\nexport interface WorkbenchLaneClassNames {\n  root?: string;\n  column?: string;\n  columnHeader?: string;\n  columnIcon?: string;\n  columnBadge?: string;\n  columnCount?: string;\n  columnBody?: string;\n  cardWrapper?: string;\n  overlayWrapper?: string;\n  emptyColumn?: string;\n}\n\nexport interface WorkbenchLaneRenderCardContext<Row = any, ColumnId extends string = string> {\n  row: Row;\n  rowIndex: number;\n  column: WorkbenchLaneColumn<ColumnId>;\n  isDragging: boolean;\n  isOverlay: boolean;\n}\n\nexport interface WorkbenchLaneViewProps<Row = any, ColumnId extends string = string> {\n  rows?: Row[];\n  columns?: Array<WorkbenchLaneColumn<ColumnId>>;\n  getRowId?: (row: Row, rowIndex: number) => string;\n  getColumnId?: (row: Row, rowIndex: number) => ColumnId;\n  renderCard?: (row: Row, context: WorkbenchLaneRenderCardContext<Row, ColumnId>) => ReactNode;\n  renderOverlayCard?: (row: Row, context: WorkbenchLaneRenderCardContext<Row, ColumnId>) => ReactNode;\n  onMoveRow?: (rowId: string, nextColumnId: ColumnId, row: Row) => void;\n  onSelectRow?: (intent: { rowId: string }) => void;\n  emptyColumn?: ReactNode;\n  activationDistance?: number;\n  columnWidth?: number | string;\n  columnMinHeight?: number | string;\n  className?: string;\n  classNames?: WorkbenchLaneClassNames;\n  style?: CSSProperties;\n}\n\nfunction toCssSize(value: number | string | undefined) {\n  if (value === undefined) return undefined;\n  return typeof value === 'number' ? `${value}px` : value;\n}\n\nfunction defaultGetRowId(row: any, rowIndex: number) {\n  return String(row?.id ?? row?.key ?? rowIndex);\n}\n\nfunction defaultGetColumnId<ColumnId extends string = string>(row: any) {\n  return String(row?.columnId ?? row?.status ?? '') as ColumnId;\n}\n\nfunction defaultRenderCard<Row>(row: Row) {\n  const value = (row as any)?.title ?? (row as any)?.name ?? (row as any)?.id ?? 'Untitled';\n  return (\n    <div className=\"rounded-lg border border-border/70 bg-card px-3 py-2 text-sm text-foreground shadow-sm\">\n      {String(value)}\n    </div>\n  );\n}\n\ninterface WorkbenchLaneDraggableCardProps<Row, ColumnId extends string> {\n  row: Row;\n  rowId: string;\n  rowIndex: number;\n  column: WorkbenchLaneColumn<ColumnId>;\n  classNames?: WorkbenchLaneClassNames;\n  renderCard: (row: Row, context: WorkbenchLaneRenderCardContext<Row, ColumnId>) => ReactNode;\n}\n\nfunction WorkbenchLaneDraggableCard<Row, ColumnId extends string>({\n  row,\n  rowId,\n  rowIndex,\n  column,\n  classNames,\n  renderCard,\n}: WorkbenchLaneDraggableCardProps<Row, ColumnId>) {\n  const { attributes, listeners, setNodeRef, isDragging } = useDraggable({ id: rowId });\n\n  return (\n    <div\n      ref={setNodeRef}\n      {...listeners}\n      {...attributes}\n      className={cn('touch-none', classNames?.cardWrapper)}\n    >\n      {renderCard(row, { row, rowIndex, column, isDragging, isOverlay: false })}\n    </div>\n  );\n}\n\ninterface WorkbenchLaneColumnViewProps<Row, ColumnId extends string> {\n  column: WorkbenchLaneColumn<ColumnId>;\n  columnRows: Array<{ row: Row; rowIndex: number; rowId: string }>;\n  columnWidth?: number | string;\n  columnMinHeight?: number | string;\n  emptyColumn?: ReactNode;\n  classNames?: WorkbenchLaneClassNames;\n  renderCard: (row: Row, context: WorkbenchLaneRenderCardContext<Row, ColumnId>) => ReactNode;\n}\n\nfunction WorkbenchLaneColumnView<Row, ColumnId extends string>({\n  column,\n  columnRows,\n  columnWidth,\n  columnMinHeight,\n  emptyColumn,\n  classNames,\n  renderCard,\n}: WorkbenchLaneColumnViewProps<Row, ColumnId>) {\n  const { setNodeRef, isOver } = useDroppable({ id: column.id });\n\n  return (\n    <section\n      className={cn(\n        'flex shrink-0 flex-col rounded-xl border border-border/60 bg-card p-2 shadow-sm',\n        classNames?.column,\n        column.className,\n      )}\n      style={{ width: toCssSize(columnWidth) ?? '280px' }}\n    >\n      <div className={cn('flex h-10 items-center gap-2 px-1', classNames?.columnHeader, column.headerClassName)}>\n        {column.icon ? (\n          <span className={cn('inline-flex h-4 w-4 items-center justify-center text-muted-foreground', classNames?.columnIcon, column.iconClassName)}>\n            {column.icon}\n          </span>\n        ) : null}\n        <span className={cn('inline-flex items-center rounded px-2 py-0.5 text-xs font-semibold bg-muted text-muted-foreground', classNames?.columnBadge, column.badgeClassName)}>\n          {column.label ?? column.id}\n        </span>\n        <span className={cn('text-xs text-muted-foreground', classNames?.columnCount)}>{columnRows.length}</span>\n      </div>\n      <div\n        ref={setNodeRef}\n        className={cn(\n          'mt-1 flex min-h-[200px] flex-1 flex-col gap-2 overflow-y-auto rounded-lg p-1 transition-colors [scrollbar-width:thin]',\n          isOver && 'bg-accent/60',\n          classNames?.columnBody,\n          column.bodyClassName,\n        )}\n        style={{ minHeight: toCssSize(columnMinHeight) }}\n      >\n        {columnRows.length ? columnRows.map(({ row, rowIndex, rowId }) => (\n          <WorkbenchLaneDraggableCard\n            key={rowId}\n            row={row}\n            rowId={rowId}\n            rowIndex={rowIndex}\n            column={column}\n            classNames={classNames}\n            renderCard={renderCard}\n          />\n        )) : emptyColumn ? (\n          <div className={cn('flex min-h-24 items-center justify-center rounded-lg border border-dashed border-border/60 px-3 py-4 text-xs text-muted-foreground', classNames?.emptyColumn)}>\n            {emptyColumn}\n          </div>\n        ) : null}\n      </div>\n    </section>\n  );\n}\n\nexport function WorkbenchLaneView<Row = any, ColumnId extends string = string>({\n  rows = [],\n  columns = [],\n  getRowId = defaultGetRowId,\n  getColumnId = defaultGetColumnId<ColumnId>,\n  renderCard,\n  renderOverlayCard,\n  onMoveRow,\n  onSelectRow,\n  emptyColumn,\n  activationDistance = 5,\n  columnWidth = 280,\n  columnMinHeight,\n  className,\n  classNames,\n  style,\n}: WorkbenchLaneViewProps<Row, ColumnId>) {\n  const cardRenderer = renderCard ?? ((row: Row, context: WorkbenchLaneRenderCardContext<Row, ColumnId>) => onSelectRow\n    ? <BaseButton className=\"w-full justify-start whitespace-normal text-left\" onClick={() => onSelectRow({ rowId: getRowId(row, context.rowIndex) })}>{String((row as any)?.title ?? (row as any)?.name ?? getRowId(row, context.rowIndex))}</BaseButton>\n    : defaultRenderCard(row));\n  const [activeRowId, setActiveRowId] = useState<string | null>(null);\n  const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: activationDistance } }));\n  const columnMap = useMemo(() => new Map(columns.map((column) => [column.id, column])), [columns]);\n  const rowEntries = useMemo(() => rows.map((row, rowIndex) => ({\n    row,\n    rowIndex,\n    rowId: getRowId(row, rowIndex),\n    columnId: getColumnId(row, rowIndex),\n  })), [getColumnId, getRowId, rows]);\n  const activeEntry = activeRowId ? rowEntries.find((entry) => entry.rowId === activeRowId) : undefined;\n  const rowsByColumn = useMemo(() => {\n    const next = new Map<ColumnId, Array<{ row: Row; rowIndex: number; rowId: string }>>();\n    columns.forEach((column) => next.set(column.id, []));\n    rowEntries.forEach(({ row, rowIndex, rowId, columnId }) => {\n      next.get(columnId)?.push({ row, rowIndex, rowId });\n    });\n    return next;\n  }, [columns, rowEntries]);\n  const activeColumn = activeEntry ? columnMap.get(activeEntry.columnId) : undefined;\n\n  const handleDragStart = useCallback((event: DragStartEvent) => {\n    setActiveRowId(String(event.active.id));\n  }, []);\n\n  const handleDragEnd = useCallback((event: DragEndEvent) => {\n    setActiveRowId(null);\n    const rowId = String(event.active.id);\n    const nextColumnId = String(event.over?.id ?? '') as ColumnId;\n    const activeRow = rowEntries.find((entry) => entry.rowId === rowId);\n    if (!activeRow || !columnMap.has(nextColumnId) || activeRow.columnId === nextColumnId) return;\n    onMoveRow?.(rowId, nextColumnId, activeRow.row);\n  }, [columnMap, onMoveRow, rowEntries]);\n\n  const handleDragCancel = useCallback(() => {\n    setActiveRowId(null);\n  }, []);\n\n  return (\n    <DndContext sensors={sensors} onDragStart={handleDragStart} onDragEnd={handleDragEnd} onDragCancel={handleDragCancel}>\n      <div\n        className={cn('flex min-h-0 flex-1 gap-4 overflow-x-auto p-4 [scrollbar-width:thin]', classNames?.root, className)}\n        style={style}\n      >\n        {columns.map((column) => (\n          <WorkbenchLaneColumnView\n            key={column.id}\n            column={column}\n            columnRows={rowsByColumn.get(column.id) || []}\n            columnWidth={columnWidth}\n            columnMinHeight={columnMinHeight}\n            emptyColumn={emptyColumn}\n            classNames={classNames}\n            renderCard={cardRenderer}\n          />\n        ))}\n      </div>\n      <DragOverlay>\n        {activeEntry && activeColumn ? (\n          <div className={cn(classNames?.overlayWrapper)}>\n            {(renderOverlayCard || cardRenderer)(activeEntry.row, {\n              row: activeEntry.row,\n              rowIndex: activeEntry.rowIndex,\n              column: activeColumn,\n              isDragging: false,\n              isOverlay: true,\n            })}\n          </div>\n        ) : null}\n      </DragOverlay>\n    </DndContext>\n  );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport interface WorkbenchMetricItem {\n  id: string;\n  label: ReactNode;\n  value: ReactNode;\n  progress?: number;\n  description?: ReactNode;\n}\n\nexport type WorkbenchMetricGridVariant = \"bars\" | \"cards\" | \"list\";\nexport type WorkbenchMetricGridDensity = \"compact\" | \"comfortable\";\n\nexport interface WorkbenchMetricGridProps {\n  items: WorkbenchMetricItem[];\n  variant?: WorkbenchMetricGridVariant;\n  density?: WorkbenchMetricGridDensity;\n  emptyState?: ReactNode;\n  ariaLabel?: string;\n  className?: string;\n  itemClassName?: string;\n}\n\nconst normalizeProgress = (value: number | undefined) => {\n  if (!Number.isFinite(value)) return undefined;\n  return Math.min(1, Math.max(0, Number(value)));\n};\n\nexport function WorkbenchMetricGrid({\n  items,\n  variant = \"bars\",\n  density = \"comfortable\",\n  emptyState = null,\n  ariaLabel = \"Metrics\",\n  className,\n  itemClassName,\n}: WorkbenchMetricGridProps) {\n  if (!items.length) {\n    return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n  }\n\n  if (variant === \"list\") {\n    return (\n      <dl\n        aria-label={ariaLabel}\n        data-monkeys-component=\"workbench-metric-grid\"\n        data-metric-variant={variant}\n        data-metric-density={density}\n        className={cn(\n          \"grid min-w-0\",\n          density === \"compact\" ? \"gap-2\" : \"gap-3\",\n          className,\n        )}\n      >\n        {items.map((item) => (\n          <div\n            key={item.id}\n            className={cn(\n              \"flex min-w-0 items-start justify-between gap-4\",\n              density === \"compact\" ? \"text-xs\" : \"text-sm\",\n              itemClassName,\n            )}\n          >\n            <dt className=\"min-w-0 text-muted-foreground\">\n              <span className=\"block truncate\">{item.label}</span>\n              {hasRenderableNode(item.description) ? (\n                <span className=\"mt-0.5 block text-[0.6875rem] leading-4 text-muted-foreground/80\">\n                  {item.description}\n                </span>\n              ) : null}\n            </dt>\n            <dd className=\"shrink-0 font-semibold tabular-nums text-foreground\">\n              {item.value}\n            </dd>\n          </div>\n        ))}\n      </dl>\n    );\n  }\n\n  if (variant === \"cards\") {\n    return (\n      <dl\n        aria-label={ariaLabel}\n        data-monkeys-component=\"workbench-metric-grid\"\n        data-metric-variant={variant}\n        data-metric-density={density}\n        className={cn(\n          \"grid min-w-0 [grid-template-columns:repeat(auto-fit,minmax(9rem,1fr))]\",\n          density === \"compact\" ? \"gap-2\" : \"gap-3\",\n          className,\n        )}\n      >\n        {items.map((item) => (\n          <div\n            key={item.id}\n            className={cn(\n              \"min-w-0 rounded-lg border border-border/70 bg-card text-card-foreground\",\n              density === \"compact\" ? \"p-3\" : \"p-4\",\n              itemClassName,\n            )}\n          >\n            <dt className=\"truncate text-xs font-medium text-muted-foreground\">\n              {item.label}\n            </dt>\n            <dd\n              className={cn(\n                \"font-semibold tabular-nums text-foreground\",\n                density === \"compact\" ? \"mt-1.5 text-xl\" : \"mt-2 text-2xl\",\n              )}\n            >\n              {item.value}\n            </dd>\n            {hasRenderableNode(item.description) ? (\n              <div className=\"mt-2 text-xs leading-5 text-muted-foreground\">\n                {item.description}\n              </div>\n            ) : null}\n          </div>\n        ))}\n      </dl>\n    );\n  }\n\n  return (\n    <dl\n      aria-label={ariaLabel}\n      data-monkeys-component=\"workbench-metric-grid\"\n      data-metric-variant={variant}\n      data-metric-density={density}\n      className={cn(\n        \"grid min-w-0 [grid-template-columns:repeat(auto-fit,minmax(5.5rem,1fr))]\",\n        density === \"compact\" ? \"gap-2\" : \"gap-3\",\n        className,\n      )}\n    >\n      {items.map((item) => {\n        const progress = normalizeProgress(item.progress);\n        return (\n          <div key={item.id} className={cn(\"min-w-0\", itemClassName)}>\n            <div\n              role={progress === undefined ? undefined : \"meter\"}\n              aria-label={\n                progress === undefined ? undefined : String(item.label)\n              }\n              aria-valuemin={progress === undefined ? undefined : 0}\n              aria-valuemax={progress === undefined ? undefined : 100}\n              aria-valuenow={\n                progress === undefined ? undefined : Math.round(progress * 100)\n              }\n              className={cn(\n                \"overflow-hidden rounded-full bg-muted\",\n                density === \"compact\" ? \"h-1.5\" : \"h-2\",\n              )}\n            >\n              {progress === undefined ? null : (\n                <span\n                  className=\"block h-full rounded-full bg-primary transition-[width] duration-200 motion-reduce:transition-none\"\n                  style={{\n                    width: `${Math.max(progress > 0 ? 4 : 0, progress * 100)}%`,\n                  }}\n                />\n              )}\n            </div>\n            <div className=\"mt-1.5 flex min-w-0 items-baseline justify-between gap-2\">\n              <dt className=\"truncate text-[0.6875rem] text-muted-foreground\">\n                {item.label}\n              </dt>\n              <dd className=\"shrink-0 text-xs font-semibold tabular-nums text-foreground\">\n                {item.value}\n              </dd>\n            </div>\n          </div>\n        );\n      })}\n    </dl>\n  );\n}\n","import type { CSSProperties, KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\nimport type { WorkbenchVisualizationTone } from \"./WorkbenchScatterPlot\";\n\nexport interface WorkbenchRelationshipNode {\n  id: string;\n  label: string;\n  meta?: string;\n  tone?: WorkbenchVisualizationTone;\n}\n\nexport interface WorkbenchRelationshipEdge {\n  id?: string;\n  sourceId: string;\n  targetId: string;\n  label?: string;\n}\n\nexport interface WorkbenchRelationshipGraphProps {\n  nodes: WorkbenchRelationshipNode[];\n  edges: WorkbenchRelationshipEdge[];\n  selectedNodeId?: string;\n  onNodeSelect?: (node: WorkbenchRelationshipNode) => void;\n  width?: number;\n  height?: number;\n  emptyState?: ReactNode;\n  ariaLabel?: string;\n  className?: string;\n  variant?: \"default\" | \"radar\";\n}\n\nconst toneClassNames: Record<WorkbenchVisualizationTone, string> = {\n  primary: \"fill-primary/10 stroke-primary text-primary\",\n  secondary:\n    \"fill-secondary stroke-secondary-foreground text-secondary-foreground\",\n  accent: \"fill-accent stroke-accent-foreground text-accent-foreground\",\n  muted: \"fill-muted stroke-muted-foreground text-muted-foreground\",\n};\n\nconst radarToneVariable: Record<WorkbenchVisualizationTone, string> = {\n  primary: \"--radar-series-one\",\n  secondary: \"--radar-series-two\",\n  accent: \"--radar-series-three\",\n  muted: \"--radar-series-four\",\n};\n\nconst radarToneFallback: Record<WorkbenchVisualizationTone, string> = {\n  primary: \"var(--primary)\",\n  secondary: \"var(--secondary-foreground)\",\n  accent: \"var(--accent-foreground)\",\n  muted: \"var(--muted-foreground)\",\n};\n\nconst radarToneColor = (tone: WorkbenchVisualizationTone, alpha = 1) =>\n  `hsl(var(${radarToneVariable[tone]}, ${radarToneFallback[tone]}) / ${alpha})`;\n\nconst activateNode = (\n  event: KeyboardEvent<SVGGElement>,\n  node: WorkbenchRelationshipNode,\n  onNodeSelect?: (node: WorkbenchRelationshipNode) => void,\n) => {\n  if (!onNodeSelect || (event.key !== \"Enter\" && event.key !== \" \")) return;\n  event.preventDefault();\n  onNodeSelect(node);\n};\n\nexport function WorkbenchRelationshipGraph({\n  nodes,\n  edges,\n  selectedNodeId,\n  onNodeSelect,\n  width = 900,\n  height = 440,\n  emptyState = null,\n  ariaLabel = \"Relationship graph\",\n  className,\n  variant = \"default\",\n}: WorkbenchRelationshipGraphProps) {\n  if (!nodes.length) {\n    return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n  }\n\n  const radar = variant === \"radar\";\n  const radius = Math.min(width, height) * (radar ? 0.37 : 0.35);\n  const selectedIndex = selectedNodeId\n    ? nodes.findIndex((node) => node.id === selectedNodeId)\n    : -1;\n  const orbitNodes = selectedIndex >= 0\n    ? nodes.filter((_, index) => index !== selectedIndex)\n    : nodes;\n  const positions = new Map(\n    nodes.map((node, index) => {\n      if (nodes.length === 1)\n        return [node.id, { x: width / 2, y: height / 2 }] as const;\n      if (radar && index === selectedIndex) {\n        return [node.id, { x: width / 2, y: height / 2 }] as const;\n      }\n      const orbitIndex = orbitNodes.findIndex((item) => item.id === node.id);\n      const angle = (Math.PI * 2 * orbitIndex) / orbitNodes.length - Math.PI / 2;\n      return [\n        node.id,\n        {\n          x: width / 2 + Math.cos(angle) * radius,\n          y: height / 2 + Math.sin(angle) * radius,\n        },\n      ] as const;\n    }),\n  );\n\n  return (\n    <div\n      data-monkeys-component=\"workbench-relationship-graph\"\n      data-workbench-relationship-variant={variant}\n      className={cn(\n        \"relative min-w-0 overflow-hidden rounded-lg border\",\n        radar\n          ? \"min-h-[42rem]\"\n          : \"overflow-x-auto border-border/70 bg-card\",\n        className,\n      )}\n      style={radar ? {\n        backgroundColor: \"hsl(var(--radar-canvas, var(--background)))\",\n        borderColor: \"hsl(var(--radar-shell-border, var(--border)))\",\n        backgroundImage:\n          \"linear-gradient(hsl(var(--radar-grid, var(--border)) / 0.28) 1px, transparent 1px), linear-gradient(90deg, hsl(var(--radar-grid, var(--border)) / 0.28) 1px, transparent 1px), radial-gradient(circle at center, hsl(var(--primary) / 0.1), transparent 45%)\",\n        backgroundSize: \"4rem 4rem, 4rem 4rem, 100% 100%\",\n      } : undefined}\n    >\n      <svg\n        viewBox={`0 0 ${width} ${height}`}\n        className={cn(radar ? \"absolute inset-0 size-full\" : \"min-w-[42rem]\")}\n        preserveAspectRatio={radar ? \"xMidYMid meet\" : undefined}\n        role=\"img\"\n        aria-label={ariaLabel}\n      >\n        {edges.map((edge, index) => {\n          const source = positions.get(edge.sourceId);\n          const target = positions.get(edge.targetId);\n          if (!source || !target) return null;\n          return (\n            <line\n              key={edge.id || `${edge.sourceId}:${edge.targetId}:${index}`}\n              x1={source.x}\n              y1={source.y}\n              x2={target.x}\n              y2={target.y}\n              className={radar ? undefined : \"stroke-border\"}\n              strokeWidth={radar ? \"2\" : \"1.5\"}\n              style={radar ? {\n                stroke: \"hsl(var(--radar-axis, var(--primary)) / 0.46)\",\n                filter: \"drop-shadow(0 0 0.35rem hsl(var(--primary) / 0.34))\",\n              } : undefined}\n            >\n              <title>\n                {edge.label || `${edge.sourceId} to ${edge.targetId}`}\n              </title>\n            </line>\n          );\n        })}\n        {nodes.map((node) => {\n          const point = positions.get(node.id)!;\n          const selected = node.id === selectedNodeId;\n          const tone = node.tone || \"muted\";\n          const radarNodeStyle: CSSProperties | undefined = radar ? {\n            color: radarToneColor(tone),\n          } : undefined;\n          return (\n            <g\n              key={node.id}\n              transform={`translate(${point.x}, ${point.y})`}\n              role={onNodeSelect ? \"button\" : undefined}\n              tabIndex={onNodeSelect ? 0 : undefined}\n              aria-label={\n                node.meta ? `${node.label}, ${node.meta}` : node.label\n              }\n              aria-pressed={onNodeSelect ? selected : undefined}\n              onClick={onNodeSelect ? () => onNodeSelect(node) : undefined}\n              onKeyDown={(event) => activateNode(event, node, onNodeSelect)}\n              className={cn(\n                radar ? \"outline-none\" : toneClassNames[tone],\n                onNodeSelect && \"cursor-pointer outline-none\",\n              )}\n              style={radarNodeStyle}\n            >\n              <circle\n                r={radar && selected ? \"50\" : radar ? \"40\" : \"36\"}\n                className={cn(\n                  \"stroke-1 transition-[stroke-width] duration-150 motion-reduce:transition-none\",\n                  selected && \"stroke-[3]\",\n                )}\n                style={radar ? {\n                  fill: radarToneColor(tone, selected ? 0.22 : 0.12),\n                  stroke: radarToneColor(tone, selected ? 1 : 0.78),\n                  filter: `drop-shadow(0 0 ${selected ? \"1.4rem\" : \"0.75rem\"} ${radarToneColor(tone, 0.62)})`,\n                } : undefined}\n              />\n              <text\n                textAnchor=\"middle\"\n                y={node.meta ? -3 : 4}\n                className={cn(\n                  \"pointer-events-none fill-current font-semibold\",\n                  radar ? \"text-[0.875rem]\" : \"text-xs\",\n                )}\n              >\n                {node.label.slice(0, 18)}\n              </text>\n              {node.meta ? (\n                <text\n                  textAnchor=\"middle\"\n                  y=\"16\"\n                  className={cn(\n                    \"pointer-events-none text-[0.625rem]\",\n                    radar ? \"fill-current opacity-70\" : \"fill-muted-foreground\",\n                  )}\n                >\n                  {node.meta.slice(0, 22)}\n                </text>\n              ) : null}\n            </g>\n          );\n        })}\n      </svg>\n    </div>\n  );\n}\n","import type { KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport type WorkbenchVisualizationTone =\n  \"primary\" | \"secondary\" | \"accent\" | \"muted\";\n\nexport interface WorkbenchScatterPoint {\n  id: string;\n  label: string;\n  x: number;\n  y: number;\n  size?: number;\n  description?: string;\n  tone?: WorkbenchVisualizationTone;\n}\n\nexport interface WorkbenchScatterAxis {\n  label: string;\n  min?: number;\n  max?: number;\n}\n\nexport interface WorkbenchScatterThresholds {\n  x?: number;\n  y?: number;\n}\n\nexport interface WorkbenchScatterPlotProps {\n  points: WorkbenchScatterPoint[];\n  xAxis: WorkbenchScatterAxis;\n  yAxis: WorkbenchScatterAxis;\n  thresholds?: WorkbenchScatterThresholds;\n  selectedPointId?: string;\n  onPointSelect?: (point: WorkbenchScatterPoint) => void;\n  width?: number;\n  height?: number;\n  emptyState?: ReactNode;\n  ariaLabel?: string;\n  className?: string;\n}\n\nconst toneClassNames: Record<WorkbenchVisualizationTone, string> = {\n  primary: \"fill-primary stroke-primary\",\n  secondary: \"fill-secondary stroke-secondary-foreground\",\n  accent: \"fill-accent stroke-accent-foreground\",\n  muted: \"fill-muted stroke-muted-foreground\",\n};\n\nconst finiteValues = (values: number[]) => values.filter(Number.isFinite);\n\nconst getDomain = (values: number[], min?: number, max?: number) => {\n  const candidates = finiteValues(values);\n  const lower = Number.isFinite(min) ? Number(min) : Math.min(...candidates, 0);\n  const upper = Number.isFinite(max) ? Number(max) : Math.max(...candidates, 1);\n  if (lower === upper) return [lower, upper + 1] as const;\n  return lower < upper ? ([lower, upper] as const) : ([upper, lower] as const);\n};\n\nconst scale = (\n  value: number,\n  domain: readonly [number, number],\n  start: number,\n  end: number,\n) => start + ((value - domain[0]) / (domain[1] - domain[0])) * (end - start);\n\nconst clamp = (value: number, min: number, max: number) =>\n  Math.min(max, Math.max(min, value));\n\nconst activatePoint = (\n  event: KeyboardEvent<SVGGElement>,\n  point: WorkbenchScatterPoint,\n  onPointSelect?: (point: WorkbenchScatterPoint) => void,\n) => {\n  if (!onPointSelect || (event.key !== \"Enter\" && event.key !== \" \")) return;\n  event.preventDefault();\n  onPointSelect(point);\n};\n\nexport function WorkbenchScatterPlot({\n  points,\n  xAxis,\n  yAxis,\n  thresholds,\n  selectedPointId,\n  onPointSelect,\n  width = 900,\n  height = 420,\n  emptyState = null,\n  ariaLabel = `${xAxis.label} by ${yAxis.label}`,\n  className,\n}: WorkbenchScatterPlotProps) {\n  const validPoints = points.filter(\n    (point) => Number.isFinite(point.x) && Number.isFinite(point.y),\n  );\n  if (!validPoints.length) {\n    return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n  }\n\n  const padding = 56;\n  const xDomain = getDomain(\n    validPoints.map((point) => point.x),\n    xAxis.min,\n    xAxis.max,\n  );\n  const yDomain = getDomain(\n    validPoints.map((point) => point.y),\n    yAxis.min,\n    yAxis.max,\n  );\n  const sizeDomain = getDomain(validPoints.map((point) => point.size ?? 1));\n  const plotLeft = padding;\n  const plotRight = width - padding;\n  const plotTop = padding;\n  const plotBottom = height - padding;\n  const xThreshold = Number.isFinite(thresholds?.x)\n    ? scale(Number(thresholds?.x), xDomain, plotLeft, plotRight)\n    : undefined;\n  const yThreshold = Number.isFinite(thresholds?.y)\n    ? scale(Number(thresholds?.y), yDomain, plotBottom, plotTop)\n    : undefined;\n\n  return (\n    <div\n      data-monkeys-component=\"workbench-scatter-plot\"\n      className={cn(\n        \"min-w-0 overflow-x-auto rounded-lg border border-border/70 bg-card p-3\",\n        className,\n      )}\n    >\n      <svg\n        viewBox={`0 0 ${width} ${height}`}\n        className=\"min-w-[42rem]\"\n        role=\"img\"\n        aria-label={ariaLabel}\n      >\n        <line\n          x1={plotLeft}\n          y1={plotBottom}\n          x2={plotRight}\n          y2={plotBottom}\n          className=\"stroke-border\"\n        />\n        <line\n          x1={plotLeft}\n          y1={plotTop}\n          x2={plotLeft}\n          y2={plotBottom}\n          className=\"stroke-border\"\n        />\n        {xThreshold === undefined ? null : (\n          <line\n            x1={clamp(xThreshold, plotLeft, plotRight)}\n            y1={plotTop}\n            x2={clamp(xThreshold, plotLeft, plotRight)}\n            y2={plotBottom}\n            className=\"stroke-muted-foreground/50\"\n            strokeDasharray=\"5 5\"\n          />\n        )}\n        {yThreshold === undefined ? null : (\n          <line\n            x1={plotLeft}\n            y1={clamp(yThreshold, plotTop, plotBottom)}\n            x2={plotRight}\n            y2={clamp(yThreshold, plotTop, plotBottom)}\n            className=\"stroke-muted-foreground/50\"\n            strokeDasharray=\"5 5\"\n          />\n        )}\n        <text\n          x={width / 2}\n          y={height - 12}\n          textAnchor=\"middle\"\n          className=\"fill-muted-foreground text-xs\"\n        >\n          {xAxis.label}\n        </text>\n        <text\n          x=\"16\"\n          y={height / 2}\n          textAnchor=\"middle\"\n          transform={`rotate(-90 16 ${height / 2})`}\n          className=\"fill-muted-foreground text-xs\"\n        >\n          {yAxis.label}\n        </text>\n        {validPoints.map((point) => {\n          const x = clamp(\n            scale(point.x, xDomain, plotLeft, plotRight),\n            plotLeft,\n            plotRight,\n          );\n          const y = clamp(\n            scale(point.y, yDomain, plotBottom, plotTop),\n            plotTop,\n            plotBottom,\n          );\n          const radius =\n            point.size === undefined\n              ? 9\n              : clamp(scale(point.size, sizeDomain, 7, 18), 7, 18);\n          const selected = selectedPointId === point.id;\n          return (\n            <g\n              key={point.id}\n              transform={`translate(${x}, ${y})`}\n              role={onPointSelect ? \"button\" : undefined}\n              tabIndex={onPointSelect ? 0 : undefined}\n              aria-label={`${point.label}: ${xAxis.label} ${point.x}, ${yAxis.label} ${point.y}`}\n              aria-pressed={onPointSelect ? selected : undefined}\n              onClick={onPointSelect ? () => onPointSelect(point) : undefined}\n              onKeyDown={(event) => activatePoint(event, point, onPointSelect)}\n              className={cn(onPointSelect && \"cursor-pointer outline-none\")}\n            >\n              <circle\n                r={radius}\n                className={cn(\n                  \"stroke-1 opacity-80 transition-opacity duration-150 motion-reduce:transition-none\",\n                  toneClassNames[point.tone || \"primary\"],\n                  selected ? \"opacity-100 stroke-[3]\" : \"hover:opacity-100\",\n                )}\n              />\n              <text\n                y={-radius - 7}\n                textAnchor=\"middle\"\n                className=\"pointer-events-none fill-foreground text-[0.6875rem] font-semibold\"\n              >\n                {point.label.slice(0, 24)}\n              </text>\n              <title>{point.description || point.label}</title>\n            </g>\n          );\n        })}\n      </svg>\n    </div>\n  );\n}\n","import type { KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport type WorkbenchJourneyItemState = \"complete\" | \"current\" | \"upcoming\";\n\nexport interface WorkbenchJourneyItem {\n  id: string;\n  label: ReactNode;\n  eyebrow?: ReactNode;\n  state?: WorkbenchJourneyItemState;\n  disabled?: boolean;\n}\n\nexport interface WorkbenchJourneyNavigationProps {\n  items: WorkbenchJourneyItem[];\n  onItemSelect?: (item: WorkbenchJourneyItem) => void;\n  ariaLabel?: string;\n  className?: string;\n}\n\nconst activateItem = (\n  event: KeyboardEvent<HTMLButtonElement>,\n  item: WorkbenchJourneyItem,\n  onItemSelect?: (item: WorkbenchJourneyItem) => void,\n) => {\n  if (!onItemSelect || item.disabled || (event.key !== \"Enter\" && event.key !== \" \"))\n    return;\n  event.preventDefault();\n  onItemSelect(item);\n};\n\nexport function WorkbenchJourneyNavigation({\n  items,\n  onItemSelect,\n  ariaLabel = \"Journey\",\n  className,\n}: WorkbenchJourneyNavigationProps) {\n  return (\n    <nav\n      aria-label={ariaLabel}\n      data-monkeys-component=\"workbench-journey-navigation\"\n      className={cn(\n        \"min-w-0 overflow-x-auto rounded-lg border border-border/70 bg-card p-2\",\n        className,\n      )}\n    >\n      <ol className=\"flex min-w-max items-stretch gap-1\">\n        {items.map((item, index) => {\n          const state = item.state || \"upcoming\";\n          return (\n            <li key={item.id} className=\"flex items-center\">\n              {index ? (\n                <span className=\"mx-1 h-px w-5 bg-border\" aria-hidden=\"true\" />\n              ) : null}\n              <button\n                type=\"button\"\n                disabled={item.disabled}\n                aria-current={state === \"current\" ? \"page\" : undefined}\n                onClick={\n                  onItemSelect && !item.disabled\n                    ? () => onItemSelect(item)\n                    : undefined\n                }\n                onKeyDown={(event) => activateItem(event, item, onItemSelect)}\n                className={cn(\n                  \"min-w-28 rounded-md border px-3 py-2 text-left outline-none transition-colors duration-150 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background motion-reduce:transition-none\",\n                  state === \"current\" &&\n                    \"border-primary bg-primary text-primary-foreground\",\n                  state === \"complete\" &&\n                    \"border-primary/30 bg-primary/10 text-foreground\",\n                  state === \"upcoming\" &&\n                    \"border-transparent bg-muted/50 text-muted-foreground\",\n                  item.disabled && \"cursor-not-allowed opacity-50\",\n                )}\n              >\n                {hasRenderableNode(item.eyebrow) ? (\n                  <span\n                    className={cn(\n                      \"block text-[0.625rem] font-semibold uppercase tracking-[0.14em]\",\n                      state === \"current\"\n                        ? \"text-primary-foreground/75\"\n                        : \"text-muted-foreground\",\n                    )}\n                  >\n                    {item.eyebrow}\n                  </span>\n                ) : null}\n                <span className=\"mt-0.5 block text-xs font-semibold\">\n                  {item.label}\n                </span>\n              </button>\n            </li>\n          );\n        })}\n      </ol>\n    </nav>\n  );\n}\n","import type { KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport interface WorkbenchRankedListMetric {\n  id: string;\n  label: ReactNode;\n  value: ReactNode;\n}\n\nexport interface WorkbenchRankedListItem {\n  id: string;\n  label: ReactNode;\n  description?: ReactNode;\n  score?: ReactNode;\n  tags?: ReactNode[];\n  metrics?: WorkbenchRankedListMetric[];\n  leading?: ReactNode;\n  trailing?: ReactNode;\n}\n\nexport interface WorkbenchRankedListProps {\n  items: WorkbenchRankedListItem[];\n  selectedItemId?: string;\n  onItemSelect?: (item: WorkbenchRankedListItem) => void;\n  emptyState?: ReactNode;\n  ariaLabel?: string;\n  className?: string;\n}\n\nconst activateItem = (\n  event: KeyboardEvent<HTMLButtonElement>,\n  item: WorkbenchRankedListItem,\n  onItemSelect?: (item: WorkbenchRankedListItem) => void,\n) => {\n  if (!onItemSelect || (event.key !== \"Enter\" && event.key !== \" \")) return;\n  event.preventDefault();\n  onItemSelect(item);\n};\n\nexport function WorkbenchRankedList({\n  items,\n  selectedItemId,\n  onItemSelect,\n  emptyState = null,\n  ariaLabel = \"Ranked items\",\n  className,\n}: WorkbenchRankedListProps) {\n  if (!items.length) {\n    return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n  }\n\n  return (\n    <ol\n      aria-label={ariaLabel}\n      data-monkeys-component=\"workbench-ranked-list\"\n      className={cn(\"grid min-w-0 gap-2\", className)}\n    >\n      {items.map((item, index) => {\n        const selected = selectedItemId === item.id;\n        return (\n          <li key={item.id}>\n            <button\n              type=\"button\"\n              aria-pressed={onItemSelect ? selected : undefined}\n              onClick={\n                onItemSelect ? () => onItemSelect(item) : undefined\n              }\n              onKeyDown={(event) => activateItem(event, item, onItemSelect)}\n              className={cn(\n                \"grid w-full min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-3 rounded-lg border bg-card p-3 text-left text-card-foreground outline-none transition-colors duration-150 focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n                selected\n                  ? \"border-primary bg-primary/5\"\n                  : \"border-border/70 hover:border-primary/40 hover:bg-accent/50\",\n                !onItemSelect && \"cursor-default\",\n              )}\n            >\n              <span className=\"flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-xs font-semibold tabular-nums text-muted-foreground\">\n                {item.leading || index + 1}\n              </span>\n              <span className=\"min-w-0\">\n                <span className=\"block truncate text-sm font-semibold text-foreground\">\n                  {item.label}\n                </span>\n                {hasRenderableNode(item.description) ? (\n                  <span className=\"mt-1 block text-xs leading-5 text-muted-foreground\">\n                    {item.description}\n                  </span>\n                ) : null}\n                {item.tags?.length ? (\n                  <span className=\"mt-2 flex flex-wrap gap-1.5\">\n                    {item.tags.map((tag, tagIndex) => (\n                      <span\n                        key={`${item.id}:tag:${tagIndex}`}\n                        className=\"rounded-full bg-secondary px-2 py-0.5 text-[0.625rem] font-medium text-secondary-foreground\"\n                      >\n                        {tag}\n                      </span>\n                    ))}\n                  </span>\n                ) : null}\n                {item.metrics?.length ? (\n                  <span className=\"mt-2 grid grid-cols-2 gap-x-4 gap-y-1 sm:grid-cols-4\">\n                    {item.metrics.map((metric) => (\n                      <span key={metric.id} className=\"min-w-0\">\n                        <span className=\"block truncate text-[0.625rem] text-muted-foreground\">\n                          {metric.label}\n                        </span>\n                        <span className=\"block text-xs font-semibold tabular-nums text-foreground\">\n                          {metric.value}\n                        </span>\n                      </span>\n                    ))}\n                  </span>\n                ) : null}\n              </span>\n              <span className=\"shrink-0 text-right\">\n                {hasRenderableNode(item.score) ? (\n                  <span className=\"block text-lg font-semibold tabular-nums text-primary\">\n                    {item.score}\n                  </span>\n                ) : null}\n                {hasRenderableNode(item.trailing) ? (\n                  <span className=\"mt-1 block text-muted-foreground\">\n                    {item.trailing}\n                  </span>\n                ) : null}\n              </span>\n            </button>\n          </li>\n        );\n      })}\n    </ol>\n  );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\n\nexport interface WorkbenchSelectionTrayItem {\n  id: string;\n  label: ReactNode;\n  meta?: ReactNode;\n}\n\nexport interface WorkbenchSelectionTrayProps {\n  title: ReactNode;\n  description?: ReactNode;\n  items: WorkbenchSelectionTrayItem[];\n  onRemove?: (item: WorkbenchSelectionTrayItem) => void;\n  removeLabel?: (item: WorkbenchSelectionTrayItem) => string;\n  actions?: ReactNode;\n  emptyState?: ReactNode;\n  className?: string;\n}\n\nexport function WorkbenchSelectionTray({\n  title,\n  description,\n  items,\n  onRemove,\n  removeLabel = () => \"Remove\",\n  actions,\n  emptyState = null,\n  className,\n}: WorkbenchSelectionTrayProps) {\n  return (\n    <section\n      data-monkeys-component=\"workbench-selection-tray\"\n      className={cn(\n        \"rounded-lg border border-border/70 bg-card p-4 text-card-foreground\",\n        className,\n      )}\n    >\n      <div className=\"flex flex-wrap items-start justify-between gap-3\">\n        <div className=\"min-w-0\">\n          <h2 className=\"text-sm font-semibold text-foreground\">{title}</h2>\n          {hasRenderableNode(description) ? (\n            <p className=\"mt-1 text-xs leading-5 text-muted-foreground\">\n              {description}\n            </p>\n          ) : null}\n        </div>\n        <span className=\"rounded-full bg-primary/10 px-2.5 py-1 text-xs font-semibold tabular-nums text-primary\">\n          {items.length}\n        </span>\n      </div>\n      {items.length ? (\n        <ul className=\"mt-3 flex flex-wrap gap-2\">\n          {items.map((item) => (\n            <li\n              key={item.id}\n              className=\"flex max-w-full items-center gap-2 rounded-full border border-border bg-background px-3 py-1.5 text-xs text-foreground\"\n            >\n              <span className=\"min-w-0 truncate font-medium\">{item.label}</span>\n              {hasRenderableNode(item.meta) ? (\n                <span className=\"shrink-0 text-muted-foreground\">{item.meta}</span>\n              ) : null}\n              {onRemove ? (\n                <button\n                  type=\"button\"\n                  aria-label={removeLabel(item)}\n                  onClick={() => onRemove(item)}\n                  className=\"rounded-full px-1 text-muted-foreground outline-none hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring\"\n                >\n                  ×\n                </button>\n              ) : null}\n            </li>\n          ))}\n        </ul>\n      ) : (\n        <div className=\"mt-3 rounded-md border border-dashed border-border px-4 py-5 text-center text-xs text-muted-foreground\">\n          {emptyState}\n        </div>\n      )}\n      {hasRenderableNode(actions) ? (\n        <div className=\"mt-4 flex flex-wrap justify-end gap-2 border-t border-border pt-4\">\n          {actions}\n        </div>\n      ) : null}\n    </section>\n  );\n}\n","/** Browser-local display only; numeric units are explicit, never inferred from magnitude. */\nexport function renderDateTimeValue(value: unknown, numericUnit: 'milliseconds' | 'seconds' = 'milliseconds', locale?: string): string {\n  if (numericUnit !== 'milliseconds' && numericUnit !== 'seconds') return '—';\n  let instant: number;\n  if (typeof value === 'number') {\n    instant = numericUnit === 'seconds' ? value * 1000 : value;\n  } else if (typeof value === 'string') {\n    // Require a timezone so a server-produced value cannot silently become local wall time.\n    const match = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?(Z|[+-]\\d{2}:\\d{2})$/.exec(value);\n    if (!match) return '—';\n    const year = Number(match[1]), month = Number(match[2]), day = Number(match[3]);\n    const hour = Number(match[4]), minute = Number(match[5]), second = Number(match[6]);\n    const calendar = new Date(0);\n    calendar.setUTCFullYear(year, month - 1, day);\n    if (calendar.getUTCFullYear() !== year || calendar.getUTCMonth() !== month - 1 || calendar.getUTCDate() !== day || hour > 23 || minute > 59 || second > 59) return '—';\n    instant = Date.parse(value);\n  } else return '—';\n  if (!Number.isFinite(instant)) return '—';\n  const date = new Date(instant);\n  if (!Number.isFinite(date.getTime())) return '—';\n  try { return date.toLocaleString(locale); } catch { return '—'; }\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\nimport { useMonkeysLocale } from '../../provider/context';\nimport { renderDateTimeValue } from '../capabilities/dateTimeValue';\n\nexport interface WorkbenchEvidenceItem {\n  id: string;\n  title?: ReactNode;\n  titleKey?: string;\n  description?: ReactNode;\n  descriptionKey?: string;\n  source?: ReactNode;\n  sourceKey?: string;\n  timestamp?: ReactNode;\n  timestampValue?: string | number;\n  marker?: ReactNode;\n  action?: ReactNode;\n}\n\nexport interface WorkbenchEvidenceListProps {\n  items: WorkbenchEvidenceItem[];\n  emptyState?: ReactNode;\n  ariaLabel?: string;\n  className?: string;\n  translate?: (key: string) => string;\n}\n\nexport function WorkbenchEvidenceList({\n  items,\n  emptyState = null,\n  ariaLabel = \"Evidence\",\n  className,\n  translate = key => key,\n}: WorkbenchEvidenceListProps) {\n  const { locale } = useMonkeysLocale();\n  if (!items.length) {\n    return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n  }\n\n  return (\n    <ol\n      aria-label={ariaLabel}\n      data-monkeys-component=\"workbench-evidence-list\"\n      className={cn(\"grid min-w-0 gap-0\", className)}\n    >\n      {items.map((item, index) => (\n        <li\n          key={item.id}\n          className=\"grid min-w-0 grid-cols-[1.25rem_minmax(0,1fr)_auto] gap-3\"\n        >\n          <span className=\"flex flex-col items-center\" aria-hidden=\"true\">\n            <span className=\"mt-1 flex size-5 items-center justify-center rounded-full border border-primary/40 bg-primary/10 text-[0.625rem] font-semibold text-primary\">\n              {item.marker || index + 1}\n            </span>\n            {index < items.length - 1 ? (\n              <span className=\"min-h-8 w-px flex-1 bg-border\" />\n            ) : null}\n          </span>\n          <span className=\"min-w-0 pb-5\">\n            <span className=\"block text-sm font-semibold text-foreground\">\n              {item.titleKey ? translate(item.titleKey) : item.title}\n            </span>\n            {hasRenderableNode(item.description) || item.descriptionKey ? (\n              <span className=\"mt-1 block text-xs leading-5 text-muted-foreground\">\n                {item.descriptionKey ? translate(item.descriptionKey) : item.description}\n              </span>\n            ) : null}\n            {hasRenderableNode(item.source) || item.sourceKey ||\n            hasRenderableNode(item.timestamp) || item.timestampValue !== undefined ? (\n              <span className=\"mt-1.5 flex flex-wrap gap-x-3 gap-y-1 text-[0.6875rem] text-muted-foreground\">\n                {hasRenderableNode(item.source) || item.sourceKey ? (\n                  <span>{item.sourceKey ? translate(item.sourceKey) : item.source}</span>\n                ) : null}\n                {hasRenderableNode(item.timestamp) || item.timestampValue !== undefined ? (\n                  <time>{item.timestampValue !== undefined ? renderDateTimeValue(item.timestampValue, 'milliseconds', locale) : item.timestamp}</time>\n                ) : null}\n              </span>\n            ) : null}\n          </span>\n          {hasRenderableNode(item.action) ? (\n            <span className=\"pb-5\">{item.action}</span>\n          ) : null}\n        </li>\n      ))}\n    </ol>\n  );\n}\n","import type { KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\nimport { WorkbenchCollection } from \"./WorkbenchCollection\";\n\nexport interface WorkbenchAssetGalleryItem {\n  id: string;\n  url: string;\n  alt: string;\n  title?: ReactNode;\n  description?: ReactNode;\n  badges?: ReactNode[];\n}\n\nexport interface WorkbenchAssetGalleryProps {\n  items: WorkbenchAssetGalleryItem[];\n  selectedItemId?: string;\n  onItemSelect?: (item: WorkbenchAssetGalleryItem) => void;\n  emptyState?: ReactNode;\n  ariaLabel?: string;\n  className?: string;\n}\n\nconst activateItem = (\n  event: KeyboardEvent<HTMLButtonElement>,\n  item: WorkbenchAssetGalleryItem,\n  onItemSelect?: (item: WorkbenchAssetGalleryItem) => void,\n) => {\n  if (!onItemSelect || (event.key !== \"Enter\" && event.key !== \" \")) return;\n  event.preventDefault();\n  onItemSelect(item);\n};\n\nexport function WorkbenchAssetGallery({\n  items,\n  selectedItemId,\n  onItemSelect,\n  emptyState = null,\n  ariaLabel = \"Assets\",\n  className,\n}: WorkbenchAssetGalleryProps) {\n  if (!items.length) {\n    return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n  }\n\n  return (\n    <div data-monkeys-component=\"workbench-asset-gallery\">\n      <WorkbenchCollection<WorkbenchAssetGalleryItem>\n        items={items}\n        config={{\n          getItemKey: (item) => item.id,\n          layout: {\n            mode: \"grid\",\n            columns: \"auto\",\n            minCardWidth: \"12rem\",\n            idealCardWidth: \"16rem\",\n            gap: 12,\n          },\n          appearance: { hover: \"none\" },\n        }}\n        ariaLabel={ariaLabel}\n        className={className}\n        renderItem={(item) => {\n          const selected = selectedItemId === item.id;\n          return (\n            <button\n              type=\"button\"\n              aria-pressed={onItemSelect ? selected : undefined}\n              onClick={onItemSelect ? () => onItemSelect(item) : undefined}\n              onKeyDown={(event) => activateItem(event, item, onItemSelect)}\n              className={cn(\n                \"group w-full overflow-hidden rounded-lg border bg-card text-left text-card-foreground outline-none transition-colors duration-150 focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n                selected\n                  ? \"border-primary ring-1 ring-primary\"\n                  : \"border-border/70 hover:border-primary/40\",\n                !onItemSelect && \"cursor-default\",\n              )}\n            >\n              <span className=\"block aspect-[4/3] overflow-hidden bg-muted\">\n                <img\n                  src={item.url}\n                  alt={item.alt}\n                  loading=\"lazy\"\n                  className=\"size-full object-cover transition-transform duration-200 group-hover:scale-[1.02] motion-reduce:transition-none\"\n                />\n              </span>\n              <span className=\"block p-3\">\n                {hasRenderableNode(item.title) ? (\n                  <span className=\"block truncate text-sm font-semibold text-foreground\">\n                    {item.title}\n                  </span>\n                ) : null}\n                {hasRenderableNode(item.description) ? (\n                  <span className=\"mt-1 block text-xs leading-5 text-muted-foreground\">\n                    {item.description}\n                  </span>\n                ) : null}\n                {item.badges?.length ? (\n                  <span className=\"mt-2 flex flex-wrap gap-1.5\">\n                    {item.badges.map((badge, index) => (\n                      <span\n                        key={`${item.id}:badge:${index}`}\n                        className=\"rounded-full bg-secondary px-2 py-0.5 text-[0.625rem] text-secondary-foreground\"\n                      >\n                        {badge}\n                      </span>\n                    ))}\n                  </span>\n                ) : null}\n              </span>\n            </button>\n          );\n        }}\n      />\n    </div>\n  );\n}\n","import type { WorkbenchVisualizationTone } from \"./WorkbenchScatterPlot\";\n\nconst toneVariable: Record<WorkbenchVisualizationTone, string> = {\n  primary: \"--radar-series-one\",\n  secondary: \"--radar-series-two\",\n  accent: \"--radar-series-three\",\n  muted: \"--radar-series-four\",\n};\n\nconst toneFallback: Record<WorkbenchVisualizationTone, string> = {\n  primary: \"var(--primary)\",\n  secondary: \"var(--secondary-foreground)\",\n  accent: \"var(--accent-foreground)\",\n  muted: \"var(--muted-foreground)\",\n};\n\nexport const workbenchVisualizationToneColor = (tone: WorkbenchVisualizationTone) =>\n  `hsl(var(${toneVariable[tone]}, ${toneFallback[tone]}))`;\n\nexport const workbenchVisualizationToneColorWithAlpha = (\n  tone: WorkbenchVisualizationTone,\n  alpha: number,\n) => `hsl(var(${toneVariable[tone]}, ${toneFallback[tone]}) / ${alpha})`;\n","import type { CSSProperties, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\nimport { NavigationSidebar } from \"../navigation-sidebar\";\nimport type { WorkbenchVisualizationTone } from \"./WorkbenchScatterPlot\";\nimport {\n  workbenchVisualizationToneColor,\n  workbenchVisualizationToneColorWithAlpha,\n} from \"./workbenchVisualizationTone\";\n\nexport interface WorkbenchRadarNavigationChild {\n  id: string;\n  label: ReactNode;\n  icon?: ReactNode;\n}\n\nexport interface WorkbenchRadarNavigationItem {\n  id: string;\n  label: ReactNode;\n  icon?: ReactNode;\n  children?: WorkbenchRadarNavigationChild[];\n}\n\nexport interface WorkbenchRadarWorkspaceProps {\n  navigationItems?: WorkbenchRadarNavigationItem[];\n  activeNavigationId?: string;\n  activeNavigationChildId?: string;\n  onNavigationSelect?: (item: WorkbenchRadarNavigationItem) => void;\n  onNavigationChildSelect?: (\n    child: WorkbenchRadarNavigationChild,\n    parent: WorkbenchRadarNavigationItem,\n  ) => void;\n  navigationFooter?: ReactNode;\n  navigation?: ReactNode;\n  children: ReactNode;\n  inspector?: ReactNode;\n  inspectorLabel?: string;\n  className?: string;\n  contentClassName?: string;\n  minimumHeight?: string | number;\n  ariaLabel?: string;\n}\n\nconst radarWorkspaceStyle: CSSProperties = {\n  backgroundColor: \"hsl(var(--radar-canvas, var(--background)))\",\n  color: \"hsl(var(--foreground))\",\n};\n\nconst radarPanelStyle: CSSProperties = {\n  backgroundColor: \"hsl(var(--radar-panel, var(--card)))\",\n  borderColor: \"hsl(var(--radar-border, var(--border)))\",\n};\n\nexport interface WorkbenchRadarNavigationProps {\n  items: WorkbenchRadarNavigationItem[];\n  activeItemId?: string;\n  activeChildId?: string;\n  onItemSelect?: (item: WorkbenchRadarNavigationItem) => void;\n  onChildSelect?: (\n    child: WorkbenchRadarNavigationChild,\n    parent: WorkbenchRadarNavigationItem,\n  ) => void;\n  footer?: ReactNode;\n  ariaLabel?: string;\n}\n\nexport function WorkbenchRadarNavigation({\n  items,\n  activeItemId,\n  activeChildId,\n  onItemSelect,\n  onChildSelect,\n  footer,\n  ariaLabel = \"Radar navigation\",\n}: WorkbenchRadarNavigationProps) {\n  return (\n    <NavigationSidebar\n      kind=\"route\"\n      routeItems={items.map((item) => ({\n        ...item,\n        children: item.children?.map((child) => ({\n          ...child,\n          domProps: { \"data-radar-navigation-child-id\": child.id },\n        })),\n      }))}\n      activeItemId={activeItemId}\n      activeChildId={activeChildId}\n      onItemSelect={\n        onItemSelect\n          ? (item) => onItemSelect(item as WorkbenchRadarNavigationItem)\n          : undefined\n      }\n      onChildSelect={\n        onChildSelect\n          ? (child, parent) =>\n              onChildSelect(\n                child as WorkbenchRadarNavigationChild,\n                parent as WorkbenchRadarNavigationItem,\n              )\n          : undefined\n      }\n      footer={footer}\n      ariaLabel={ariaLabel}\n      dataComponent=\"workbench-radar-navigation\"\n      widthMode=\"fill\"\n      resizable={false}\n      collapsible={false}\n      appearance={{\n        density: \"default\",\n        surface: \"outlined\",\n        activeVariant: \"solid\",\n      }}\n      className=\"min-w-0 self-stretch rounded-lg\"\n      classNames={{\n        content: \"p-3\",\n        list: \"gap-2\",\n        item: \"min-h-11 px-3 py-2 text-sm font-semibold\",\n        itemActive:\n          \"bg-primary text-primary-foreground shadow-[0_0_1.25rem_hsl(var(--primary)/0.28)]\",\n        childList: \"ml-5 gap-0.5 border-l border-border/70 py-1 pl-3\",\n        childItem: \"min-h-9 px-2 text-xs font-medium\",\n        childItemActive: \"border-primary/40 bg-primary/15 text-primary\",\n        footer: \"p-3\",\n      }}\n      style={radarPanelStyle}\n    />\n  );\n}\n\nexport function WorkbenchRadarWorkspace({\n  navigationItems = [],\n  activeNavigationId,\n  activeNavigationChildId,\n  onNavigationSelect,\n  onNavigationChildSelect,\n  navigationFooter,\n  navigation,\n  children,\n  inspector,\n  inspectorLabel = \"Context controls\",\n  className,\n  contentClassName,\n  minimumHeight = \"calc(100dvh - 1rem)\",\n  ariaLabel = \"Radar workspace\",\n}: WorkbenchRadarWorkspaceProps) {\n  return (\n    <section\n      data-monkeys-component=\"workbench-radar-workspace\"\n      data-radar-active-navigation-id={activeNavigationId}\n      aria-label={ariaLabel}\n      className={cn(\n        \"grid min-w-0 gap-3 overflow-hidden p-3 lg:grid-cols-[12.5rem_minmax(0,1fr)] xl:grid-cols-[12.5rem_minmax(0,1fr)_20rem]\",\n        className,\n      )}\n      style={{ ...radarWorkspaceStyle, minHeight: minimumHeight }}\n    >\n      {hasRenderableNode(navigation) ? (\n        navigation\n      ) : (\n        <WorkbenchRadarNavigation\n          items={navigationItems}\n          activeItemId={activeNavigationId}\n          activeChildId={activeNavigationChildId}\n          onItemSelect={onNavigationSelect}\n          onChildSelect={onNavigationChildSelect}\n          footer={navigationFooter}\n        />\n      )}\n\n      <div\n        data-radar-workspace-region=\"content\"\n        className={cn(\n          \"relative min-h-[42rem] min-w-0 overflow-hidden rounded-lg border\",\n          contentClassName,\n        )}\n        style={{\n          backgroundColor: \"hsl(var(--radar-canvas, var(--background)))\",\n          borderColor: \"hsl(var(--radar-shell-border, var(--border)))\",\n          boxShadow:\n            \"inset 0 0 0 1px hsl(var(--radar-grid, var(--border)) / 0.22)\",\n        }}\n      >\n        {children}\n      </div>\n\n      {hasRenderableNode(inspector) ? (\n        <aside\n          aria-label={inspectorLabel}\n          data-radar-workspace-region=\"inspector\"\n          className=\"min-h-0 overflow-y-auto rounded-lg border lg:col-span-2 xl:col-span-1\"\n          style={radarPanelStyle}\n        >\n          {inspector}\n        </aside>\n      ) : null}\n    </section>\n  );\n}\n\nexport function WorkbenchRadarInspectorSection({\n  title,\n  icon,\n  description,\n  children,\n  className,\n}: {\n  title: ReactNode;\n  icon?: ReactNode;\n  description?: ReactNode;\n  children?: ReactNode;\n  className?: string;\n}) {\n  return (\n    <section\n      data-monkeys-component=\"workbench-radar-inspector-section\"\n      className={cn(\"border-b border-border/70 p-4 last:border-b-0\", className)}\n    >\n      <div className=\"flex items-center gap-2 text-sm font-semibold text-primary\">\n        {hasRenderableNode(icon) ? (\n          <span aria-hidden=\"true\">{icon}</span>\n        ) : null}\n        <h2>{title}</h2>\n      </div>\n      {hasRenderableNode(description) ? (\n        <p className=\"mt-1 text-xs leading-5 text-muted-foreground\">\n          {description}\n        </p>\n      ) : null}\n      {hasRenderableNode(children) ? (\n        <div className=\"mt-3\">{children}</div>\n      ) : null}\n    </section>\n  );\n}\n\nexport interface WorkbenchRadarFilterRowDisclosureBase {\n  expanded: boolean;\n  controls: string;\n  expandLabel: string;\n  collapseLabel: string;\n  onToggle: () => void;\n}\n\nexport interface WorkbenchRadarFilterRowIntegratedDisclosure extends WorkbenchRadarFilterRowDisclosureBase {\n  mode: \"integrated\";\n}\n\nexport interface WorkbenchRadarFilterRowSeparateDisclosure extends WorkbenchRadarFilterRowDisclosureBase {\n  mode: \"separate\";\n}\n\ninterface WorkbenchRadarFilterRowBaseProps {\n  label: ReactNode;\n  value?: ReactNode;\n  icon?: ReactNode;\n  disabled?: boolean;\n  tone?: WorkbenchVisualizationTone;\n  className?: string;\n}\n\nexport type WorkbenchRadarFilterRowProps = WorkbenchRadarFilterRowBaseProps &\n  (\n    | {\n        onSelect: () => void;\n        selected?: boolean;\n        disclosure?: never;\n      }\n    | {\n        onSelect?: never;\n        selected?: never;\n        disclosure: WorkbenchRadarFilterRowIntegratedDisclosure;\n      }\n    | {\n        onSelect: () => void;\n        selected?: boolean;\n        disclosure: WorkbenchRadarFilterRowSeparateDisclosure;\n      }\n  );\n\nexport interface WorkbenchRadarFilterChipProps {\n  label: ReactNode;\n  value?: ReactNode;\n  icon?: ReactNode;\n  selected?: boolean;\n  disabled?: boolean;\n  onSelect?: () => void;\n  className?: string;\n}\n\ntype WorkbenchRadarFilterStyle = CSSProperties & {\n  \"--workbench-radar-filter-tone\"?: string;\n  \"--tw-ring-color\"?: string;\n};\n\nfunction assertValidRadarFilterRowProps(props: WorkbenchRadarFilterRowProps) {\n  const { disclosure, onSelect } = props;\n  const invalid =\n    (!disclosure && !onSelect) ||\n    (disclosure?.mode === \"integrated\" &&\n      (Boolean(onSelect) || props.selected !== undefined)) ||\n    (disclosure?.mode === \"separate\" && !onSelect);\n\n  if (invalid) {\n    throw new Error(\"Invalid WorkbenchRadarFilterRow props.\");\n  }\n}\n\nexport function WorkbenchRadarFilterRow(props: WorkbenchRadarFilterRowProps) {\n  assertValidRadarFilterRowProps(props);\n\n  const {\n    label,\n    value,\n    icon,\n    selected,\n    disabled = false,\n    tone,\n    onSelect,\n    disclosure,\n    className,\n  } = props;\n  const isSelected = selected ?? false;\n  const selectedClasses = isSelected\n    ? undefined\n    : \"monkeys-workbench-radar-filter-row--idle\";\n  const disabledClasses = disabled\n    ? \"monkeys-workbench-radar-filter-disabled\"\n    : undefined;\n  const resolvedTone = tone ?? \"primary\";\n  const toneColor = workbenchVisualizationToneColor(resolvedTone);\n  const style: WorkbenchRadarFilterStyle = {\n    \"--workbench-radar-filter-tone\": toneColor,\n    \"--tw-ring-color\": tone ? toneColor : \"hsl(var(--ring))\",\n    ...(isSelected || tone\n      ? {\n          backgroundColor: workbenchVisualizationToneColorWithAlpha(\n            resolvedTone,\n            isSelected ? 0.14 : 0.08,\n          ),\n          borderColor: toneColor,\n        }\n      : {}),\n  };\n  const content = (\n    <>\n      {hasRenderableNode(icon) ? (\n        <span\n          className={cn(\n            \"flex size-4 shrink-0 items-center justify-center\",\n            tone\n              ? \"text-[var(--workbench-radar-filter-tone)]\"\n              : \"text-muted-foreground\",\n          )}\n          aria-hidden=\"true\"\n        >\n          {icon}\n        </span>\n      ) : null}\n      <span className=\"min-w-0 truncate\">{label}</span>\n      {hasRenderableNode(value) ? (\n        <span className=\"ml-auto shrink-0 tabular-nums text-muted-foreground\">\n          {value}\n        </span>\n      ) : null}\n    </>\n  );\n  const disclosureIcon = disclosure ? (\n    <span\n      aria-hidden=\"true\"\n      className={cn(\n        \"text-lg leading-none transition-transform motion-reduce:transition-none\",\n        disclosure.expanded && \"rotate-90\",\n      )}\n    >\n      ›\n    </span>\n  ) : null;\n\n  if (disclosure?.mode === \"separate\") {\n    const disclosureLabel = disclosure.expanded\n      ? disclosure.collapseLabel\n      : disclosure.expandLabel;\n\n    return (\n      <div\n        data-monkeys-component=\"workbench-radar-filter-row\"\n        className={cn(\n          \"monkeys-workbench-radar-filter-row monkeys-workbench-radar-filter-row--separate\",\n          selectedClasses,\n          disabledClasses,\n          className,\n        )}\n        style={style}\n      >\n        <button\n          type=\"button\"\n          aria-pressed={selected}\n          disabled={disabled}\n          onClick={onSelect}\n          className={cn(\n            \"monkeys-workbench-radar-filter-control monkeys-workbench-radar-filter-row__action\",\n            disabledClasses,\n          )}\n        >\n          {content}\n        </button>\n        <button\n          type=\"button\"\n          aria-expanded={disclosure.expanded}\n          aria-controls={disclosure.controls}\n          aria-label={disclosureLabel}\n          disabled={disabled}\n          onClick={disclosure.onToggle}\n          className={cn(\n            \"monkeys-workbench-radar-filter-row__disclosure\",\n            disabledClasses,\n          )}\n        >\n          {disclosureIcon}\n        </button>\n      </div>\n    );\n  }\n\n  const integratedDisclosure =\n    disclosure?.mode === \"integrated\" ? disclosure : undefined;\n  const disclosureLabel = integratedDisclosure\n    ? integratedDisclosure.expanded\n      ? integratedDisclosure.collapseLabel\n      : integratedDisclosure.expandLabel\n    : undefined;\n\n  return (\n    <button\n      type=\"button\"\n      data-monkeys-component=\"workbench-radar-filter-row\"\n      aria-label={disclosureLabel}\n      aria-pressed={integratedDisclosure ? undefined : selected}\n      aria-expanded={integratedDisclosure?.expanded}\n      aria-controls={integratedDisclosure?.controls}\n      disabled={disabled}\n      onClick={integratedDisclosure?.onToggle ?? onSelect}\n      className={cn(\n        \"monkeys-workbench-radar-filter-control monkeys-workbench-radar-filter-row\",\n        selectedClasses,\n        disabledClasses,\n        className,\n      )}\n      style={style}\n    >\n      {content}\n      {integratedDisclosure ? (\n        <span className=\"ml-auto shrink-0 text-muted-foreground\">\n          {disclosureIcon}\n        </span>\n      ) : null}\n    </button>\n  );\n}\n\nexport function WorkbenchRadarFilterChip({\n  label,\n  value,\n  icon,\n  selected = false,\n  disabled = false,\n  onSelect,\n  className,\n}: WorkbenchRadarFilterChipProps) {\n  const interactive = Boolean(onSelect) || disabled;\n  const Comp = interactive ? \"button\" : \"div\";\n  return (\n    <Comp\n      type={interactive ? \"button\" : undefined}\n      aria-pressed={onSelect && !disabled ? selected : undefined}\n      disabled={interactive ? disabled : undefined}\n      onClick={onSelect}\n      className={cn(\n        \"flex min-w-0 items-center border text-xs font-semibold outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n        \"monkeys-workbench-radar-filter-control rounded-full\",\n        selected\n          ? \"border-primary bg-primary/20 text-primary\"\n          : \"border-border bg-background/40 text-foreground hover:border-primary/60 hover:bg-primary/10\",\n        disabled && \"cursor-not-allowed opacity-50\",\n        className,\n      )}\n    >\n      {hasRenderableNode(icon) ? (\n        <span className=\"shrink-0\" aria-hidden=\"true\">\n          {icon}\n        </span>\n      ) : null}\n      <span className=\"min-w-0 truncate\">{label}</span>\n      {hasRenderableNode(value) ? (\n        <span className=\"ml-auto shrink-0 text-muted-foreground\">{value}</span>\n      ) : null}\n    </Comp>\n  );\n}\n","import type { CSSProperties, KeyboardEvent, ReactNode } from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\nimport type {\n  WorkbenchScatterAxis,\n  WorkbenchScatterPoint,\n  WorkbenchScatterThresholds,\n  WorkbenchVisualizationTone,\n} from \"./WorkbenchScatterPlot\";\nimport {\n  workbenchVisualizationToneColor as toneColor,\n  workbenchVisualizationToneColorWithAlpha as toneColorWithAlpha,\n} from \"./workbenchVisualizationTone\";\n\nexport interface WorkbenchRadarQuadrant {\n  id: \"low-high\" | \"high-high\" | \"low-low\" | \"high-low\";\n  title: ReactNode;\n  description?: ReactNode;\n}\n\nexport interface WorkbenchRadarLegendItem {\n  id: string;\n  label: ReactNode;\n  tone?: WorkbenchVisualizationTone;\n}\n\nexport interface WorkbenchRadarMatrixProps {\n  points: WorkbenchScatterPoint[];\n  xAxis: WorkbenchScatterAxis;\n  yAxis: WorkbenchScatterAxis;\n  thresholds?: WorkbenchScatterThresholds;\n  quadrants?: WorkbenchRadarQuadrant[];\n  legend?: WorkbenchRadarLegendItem[];\n  selectedPointId?: string;\n  onPointSelect?: (point: WorkbenchScatterPoint) => void;\n  width?: number;\n  height?: number;\n  labelLimit?: number;\n  emptyState?: ReactNode;\n  ariaLabel?: string;\n  className?: string;\n}\n\nconst finiteValues = (values: number[]) => values.filter(Number.isFinite);\n\nconst getDomain = (values: number[], min?: number, max?: number) => {\n  const candidates = finiteValues(values);\n  const lower = Number.isFinite(min) ? Number(min) : Math.min(...candidates, 0);\n  const upper = Number.isFinite(max) ? Number(max) : Math.max(...candidates, 1);\n  if (lower === upper) return [lower, upper + 1] as const;\n  return lower < upper ? ([lower, upper] as const) : ([upper, lower] as const);\n};\n\nconst scale = (\n  value: number,\n  domain: readonly [number, number],\n  start: number,\n  end: number,\n) => start + ((value - domain[0]) / (domain[1] - domain[0])) * (end - start);\n\nconst clamp = (value: number, min: number, max: number) =>\n  Math.min(max, Math.max(min, value));\n\nconst activatePoint = (\n  event: KeyboardEvent<SVGGElement>,\n  point: WorkbenchScatterPoint,\n  onPointSelect?: (point: WorkbenchScatterPoint) => void,\n) => {\n  if (!onPointSelect || (event.key !== \"Enter\" && event.key !== \" \")) return;\n  event.preventDefault();\n  onPointSelect(point);\n};\n\nconst quadrantPosition = {\n  \"low-high\": { x: 26, y: 8, anchor: \"start\" as const },\n  \"high-high\": { x: 974, y: 8, anchor: \"end\" as const },\n  \"low-low\": { x: 26, y: 660, anchor: \"start\" as const },\n  \"high-low\": { x: 974, y: 660, anchor: \"end\" as const },\n};\n\nexport function WorkbenchRadarMatrix({\n  points,\n  xAxis,\n  yAxis,\n  thresholds,\n  quadrants = [],\n  legend = [],\n  selectedPointId,\n  onPointSelect,\n  width = 1000,\n  height = 700,\n  labelLimit = 18,\n  emptyState = null,\n  ariaLabel = `${xAxis.label} by ${yAxis.label} radar matrix`,\n  className,\n}: WorkbenchRadarMatrixProps) {\n  const validPoints = points.filter(\n    (point) => Number.isFinite(point.x) && Number.isFinite(point.y),\n  );\n  if (!validPoints.length) {\n    return hasRenderableNode(emptyState) ? <>{emptyState}</> : null;\n  }\n\n  const xDomain = getDomain(\n    validPoints.map((point) => point.x),\n    xAxis.min,\n    xAxis.max,\n  );\n  const yDomain = getDomain(\n    validPoints.map((point) => point.y),\n    yAxis.min,\n    yAxis.max,\n  );\n  const sizeDomain = getDomain(validPoints.map((point) => point.size ?? 1));\n  const plotLeft = 0;\n  const plotRight = width;\n  const plotTop = 0;\n  const plotBottom = height;\n  const xThreshold = clamp(\n    scale(\n      Number.isFinite(thresholds?.x) ? Number(thresholds?.x) : (xDomain[0] + xDomain[1]) / 2,\n      xDomain,\n      plotLeft,\n      plotRight,\n    ),\n    plotLeft,\n    plotRight,\n  );\n  const yThreshold = clamp(\n    scale(\n      Number.isFinite(thresholds?.y) ? Number(thresholds?.y) : (yDomain[0] + yDomain[1]) / 2,\n      yDomain,\n      plotBottom,\n      plotTop,\n    ),\n    plotTop,\n    plotBottom,\n  );\n  const labelledPointIds = new Set(\n    [...validPoints]\n      .sort((left, right) => (right.size ?? 0) - (left.size ?? 0))\n      .slice(0, labelLimit)\n      .map((point) => point.id),\n  );\n\n  return (\n    <div\n      data-monkeys-component=\"workbench-radar-matrix\"\n      className={cn(\"relative size-full min-h-[42rem] min-w-0 overflow-hidden\", className)}\n      style={{\n        backgroundColor: \"hsl(var(--radar-canvas, var(--background)))\",\n        backgroundImage:\n          \"radial-gradient(circle at 78% 20%, hsl(var(--primary) / 0.08), transparent 32%), radial-gradient(circle at 18% 82%, hsl(var(--radar-series-two, var(--accent-foreground)) / 0.06), transparent 30%)\",\n      }}\n    >\n      <svg\n        viewBox={`0 0 ${width} ${height}`}\n        preserveAspectRatio=\"none\"\n        className=\"absolute inset-0 size-full\"\n        role=\"img\"\n        aria-label={ariaLabel}\n      >\n        <g aria-hidden=\"true\">\n          {Array.from({ length: 13 }, (_, index) => {\n            const x = (width / 12) * index;\n            const y = (height / 12) * index;\n            return (\n              <g key={index}>\n                <line\n                  x1={x}\n                  y1={0}\n                  x2={x}\n                  y2={height}\n                  style={{ stroke: \"hsl(var(--radar-grid, var(--border)) / 0.36)\" }}\n                />\n                <line\n                  x1={0}\n                  y1={y}\n                  x2={width}\n                  y2={y}\n                  style={{ stroke: \"hsl(var(--radar-grid, var(--border)) / 0.36)\" }}\n                />\n              </g>\n            );\n          })}\n          <line\n            x1={xThreshold}\n            y1={0}\n            x2={xThreshold}\n            y2={height}\n            strokeWidth=\"1.5\"\n            style={{ stroke: \"hsl(var(--radar-axis, var(--primary)) / 0.64)\" }}\n          />\n          <line\n            x1={0}\n            y1={yThreshold}\n            x2={width}\n            y2={yThreshold}\n            strokeWidth=\"1.5\"\n            style={{ stroke: \"hsl(var(--radar-axis, var(--primary)) / 0.64)\" }}\n          />\n        </g>\n\n        {quadrants.map((quadrant) => {\n          const position = quadrantPosition[quadrant.id];\n          return (\n            <g key={quadrant.id} aria-hidden=\"true\">\n              <text\n                x={position.x}\n                y={position.y + 20}\n                textAnchor={position.anchor}\n                className=\"fill-muted-foreground text-[0.8125rem] font-semibold\"\n              >\n                {quadrant.title}\n              </text>\n              {hasRenderableNode(quadrant.description) && typeof quadrant.description === \"string\" ? (\n                <text\n                  x={position.x}\n                  y={position.y + 40}\n                  textAnchor={position.anchor}\n                  className=\"fill-muted-foreground text-[0.6875rem]\"\n                >\n                  {quadrant.description}\n                </text>\n              ) : null}\n            </g>\n          );\n        })}\n\n        {validPoints.map((point, index) => {\n          const x = clamp(scale(point.x, xDomain, 40, width - 40), 40, width - 40);\n          const y = clamp(scale(point.y, yDomain, height - 48, 54), 54, height - 48);\n          const tone = point.tone || (index % 2 === 0 ? \"primary\" : \"accent\");\n          const selected = selectedPointId === point.id;\n          const labelled = labelledPointIds.has(point.id);\n          const radius = labelled\n            ? clamp(scale(point.size ?? 1, sizeDomain, 5, 9), 5, 9)\n            : 3.5;\n          const fontSize = labelled\n            ? clamp(scale(point.size ?? 1, sizeDomain, 14, 31), 14, 31)\n            : 0;\n          const pointStyle: CSSProperties = {\n            fill: toneColor(tone),\n            stroke: \"hsl(var(--foreground) / 0.74)\",\n          };\n          const labelStyle: CSSProperties = {\n            fill: toneColor(tone),\n            filter: `drop-shadow(0 0 0.65rem ${toneColorWithAlpha(tone, 0.72)})`,\n          };\n          return (\n            <g\n              key={point.id}\n              transform={`translate(${x}, ${y})`}\n              role={onPointSelect ? \"button\" : undefined}\n              tabIndex={onPointSelect ? 0 : undefined}\n              aria-label={`${point.label}: ${xAxis.label} ${point.x}, ${yAxis.label} ${point.y}`}\n              aria-pressed={onPointSelect ? selected : undefined}\n              onClick={onPointSelect ? () => onPointSelect(point) : undefined}\n              onKeyDown={(event) => activatePoint(event, point, onPointSelect)}\n              className={cn(onPointSelect && \"cursor-pointer outline-none\")}\n            >\n              {selected ? (\n                <circle\n                  r={radius + 10}\n                  fill=\"none\"\n                  strokeWidth=\"2\"\n                  style={{ stroke: toneColorWithAlpha(tone, 0.48) }}\n                />\n              ) : null}\n              <circle r={radius} strokeWidth=\"1.25\" style={pointStyle} />\n              {labelled ? (\n                <text\n                  y={-radius - 8}\n                  textAnchor=\"middle\"\n                  fontSize={fontSize}\n                  fontWeight=\"700\"\n                  style={labelStyle}\n                  className=\"pointer-events-none\"\n                >\n                  {point.label.slice(0, 22)}\n                </text>\n              ) : null}\n              <title>{point.description || point.label}</title>\n            </g>\n          );\n        })}\n\n        <circle\n          cx={xThreshold}\n          cy={yThreshold}\n          r=\"10\"\n          style={{ fill: \"hsl(var(--radar-axis, var(--primary)))\" }}\n        />\n        <circle cx={xThreshold} cy={yThreshold} r=\"3\" className=\"fill-primary-foreground\" />\n        <text\n          x={width / 2}\n          y={height - 12}\n          textAnchor=\"middle\"\n          className=\"fill-muted-foreground text-[0.6875rem]\"\n        >\n          {xAxis.label}\n        </text>\n        <text\n          x=\"14\"\n          y={height / 2}\n          textAnchor=\"middle\"\n          transform={`rotate(-90 14 ${height / 2})`}\n          className=\"fill-muted-foreground text-[0.6875rem]\"\n        >\n          {yAxis.label}\n        </text>\n      </svg>\n\n      <div\n        className=\"absolute bottom-4 left-4 hidden w-44 overflow-hidden rounded-[var(--radius)] border bg-card/95 shadow-xl sm:block\"\n        style={{ borderColor: \"hsl(var(--radar-border, var(--border)))\" }}\n        aria-hidden=\"true\"\n      >\n        <div className=\"flex h-9 items-center justify-between border-b border-border px-3 text-xs font-semibold text-muted-foreground\">\n          <span>−</span><span>100%</span><span>＋</span>\n        </div>\n        <svg viewBox={`0 0 ${width} ${height}`} className=\"h-24 w-full\">\n          <rect width={width} height={height} style={{ fill: \"hsl(var(--radar-canvas, var(--background)))\" }} />\n          <line x1={xThreshold} y1={0} x2={xThreshold} y2={height} style={{ stroke: \"hsl(var(--radar-axis, var(--primary)) / 0.7)\" }} strokeWidth=\"6\" />\n          <line x1={0} y1={yThreshold} x2={width} y2={yThreshold} style={{ stroke: \"hsl(var(--radar-axis, var(--primary)) / 0.7)\" }} strokeWidth=\"6\" />\n          {validPoints.map((point, index) => (\n            <circle\n              key={point.id}\n              cx={clamp(scale(point.x, xDomain, 40, width - 40), 40, width - 40)}\n              cy={clamp(scale(point.y, yDomain, height - 48, 54), 54, height - 48)}\n              r=\"8\"\n              style={{ fill: toneColor(point.tone || (index % 2 === 0 ? \"primary\" : \"accent\")) }}\n            />\n          ))}\n          <rect\n            x={width * 0.22}\n            y={height * 0.12}\n            width={width * 0.58}\n            height={height * 0.62}\n            fill=\"none\"\n            strokeWidth=\"8\"\n            style={{ stroke: \"hsl(var(--primary))\" }}\n          />\n        </svg>\n      </div>\n\n      {legend.length ? (\n        <div className=\"absolute bottom-4 left-1/2 hidden -translate-x-1/2 items-center gap-4 rounded-full border border-border bg-card/95 px-4 py-2 text-xs font-semibold shadow-xl md:flex\">\n          {legend.map((item) => {\n            const tone = item.tone || \"muted\";\n            return (\n              <span key={item.id} className=\"flex items-center gap-2 text-muted-foreground\">\n                <span className=\"size-2 rounded-full\" style={{ backgroundColor: toneColor(tone) }} />\n                {item.label}\n              </span>\n            );\n          })}\n        </div>\n      ) : null}\n    </div>\n  );\n}\n","import {\n  isValidElement,\n  type ReactElement,\n  type ReactNode,\n  useCallback,\n  useEffect,\n  useRef,\n} from 'react';\nimport {\n  Toaster as SonnerToaster,\n  toast as sonnerToast,\n  type ExternalToast,\n  type ToastT,\n  type ToastToDismiss,\n  type ToasterProps,\n} from 'sonner';\n\nimport type { MonkeysToastMessages } from '../../locale';\nimport { useMonkeysLocaleMessages } from '../../provider/context';\n\nexport type ToastVariant = 'error' | 'warning' | 'success' | 'info';\n\nexport type ToastInput = Omit<ExternalToast, 'description'> & {\n  title?: ReactNode;\n  description?: ReactNode;\n  variant?: ToastVariant;\n};\n\nexport type MonkeysToasterProps = ToasterProps & {\n  useThemeClassNames?: boolean;\n};\n\nexport type MonkeysToastProviderProps = {\n  children: ReactNode;\n  toasterProps?: MonkeysToasterProps;\n};\n\ntype ToastValue =\n  | Error\n  | string\n  | {\n      message?: unknown;\n      title?: unknown;\n    }\n  | null\n  | undefined;\n\ntype ToastResolver<T> = T | ((value: ToastValue) => T);\ntype ToastTranslate = (value: string, params?: Record<string, unknown>) => string;\n\ntype ToastValueOptions = {\n  variant?: ToastResolver<ToastVariant | undefined>;\n  title?: ToastResolver<string | undefined>;\n  description?: ToastResolver<string | undefined>;\n  fallbackDescription?: ToastResolver<string | undefined>;\n  signature?: ToastResolver<string | undefined>;\n  duration?: ToastResolver<number | undefined>;\n  translate?: ToastTranslate;\n  messages?: Partial<ToastDefaultMessages>;\n};\n\ntype ToastFeedEntry =\n  | {\n      variant?: ToastVariant;\n      title?: string;\n      description?: string;\n      duration?: number;\n      signature?: string;\n    }\n  | null\n  | undefined;\n\ntype ToastDefaultMessages = MonkeysToastMessages;\n\ntype ToastPromiseInput<T = unknown> = Promise<T> | (() => Promise<T>);\ntype ToastPromiseReturn<T = unknown> = string | number | { unwrap: () => Promise<T> };\n\nexport type MonkeysToastApi = {\n  (message: ReactNode, options?: ExternalToast): string | number;\n  show: (input: ToastInput) => string | number | undefined;\n  error: (input: ReactNode | ToastInput, options?: ExternalToast) => string | number | undefined;\n  warning: (input: ReactNode | ToastInput, options?: ExternalToast) => string | number | undefined;\n  success: (input: ReactNode | ToastInput, options?: ExternalToast) => string | number | undefined;\n  info: (input: ReactNode | ToastInput, options?: ExternalToast) => string | number | undefined;\n  message: (message: ReactNode, options?: ExternalToast) => string | number;\n  promise: <T = unknown>(promise: ToastPromiseInput<T>, data?: unknown) => ToastPromiseReturn<T>;\n  dismiss: (id?: number | string) => string | number;\n  loading: (message: ReactNode, options?: ExternalToast) => string | number;\n  custom: (jsx: (id: number | string) => ReactElement, data?: ExternalToast) => string | number;\n  getHistory: () => Array<ToastT | ToastToDismiss>;\n  getToasts: () => Array<ToastT | ToastToDismiss>;\n};\n\nconst DEFAULT_TOAST_DURATION = 5200;\nconst TOAST_DEDUPE_WINDOW = 1200;\n\nconst ACTIONABLE_TOAST_PATTERNS = [\n  /^(please|select|enter|provide|write|choose|confirm|fill)\\b/i,\n  /^(请|请选择|请先|请输入|请填写|请确认|请留意)/,\n];\n\nconst DEFAULT_TOAST_CLASS_NAMES = {\n  toast:\n    'group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg',\n  description: 'group-[.toast]:text-muted-foreground',\n  actionButton: 'group-[.toast]:bg-primary group-[.toast]:text-primary-foreground',\n  cancelButton: 'group-[.toast]:bg-muted group-[.toast]:text-muted-foreground',\n};\n\nconst recentToastSignatures = new Map<string, number>();\n\nfunction cn(...classNames: Array<string | undefined | false>) {\n  return classNames.filter(Boolean).join(' ');\n}\n\nfunction isToastInput(input: unknown): input is ToastInput {\n  if (!input || typeof input !== 'object' || isValidElement(input)) {\n    return false;\n  }\n\n  return 'title' in input || 'description' in input || 'variant' in input;\n}\n\nfunction isEmptyToastContent(value: ReactNode) {\n  return value == null || (typeof value === 'string' && !value.trim());\n}\n\nfunction normalizeToastInput(input: ReactNode | ToastInput, variant: ToastVariant, options?: ExternalToast): ToastInput {\n  const { description: _description, ...baseOptions } = options ?? {};\n\n  if (isToastInput(input)) {\n    return {\n      ...baseOptions,\n      ...input,\n      variant: input.variant ?? variant,\n    };\n  }\n\n  return {\n    ...baseOptions,\n    title: input,\n    variant,\n  };\n}\n\nfunction resolveValue<T>(candidate: ToastResolver<T> | undefined, value: ToastValue) {\n  if (typeof candidate === 'function') {\n    return (candidate as (input: ToastValue) => T)(value);\n  }\n\n  return candidate;\n}\n\nfunction shouldEmitToast(signature: string) {\n  const now = Date.now();\n\n  for (const [key, timestamp] of recentToastSignatures.entries()) {\n    if (now - timestamp > TOAST_DEDUPE_WINDOW) {\n      recentToastSignatures.delete(key);\n    }\n  }\n\n  const previousTimestamp = recentToastSignatures.get(signature);\n  if (previousTimestamp && now - previousTimestamp < TOAST_DEDUPE_WINDOW) {\n    return false;\n  }\n\n  recentToastSignatures.set(signature, now);\n  return true;\n}\n\nfunction translateMessage(translate: ToastTranslate | undefined, value: string) {\n  return translate ? translate(value, { defaultValue: value }) : value;\n}\n\nfunction getDefaultMessage(\n  messages: Partial<ToastDefaultMessages> | undefined,\n  localeMessages: ToastDefaultMessages,\n  key: keyof ToastDefaultMessages,\n) {\n  return messages?.[key] ?? localeMessages[key];\n}\n\nfunction emitToast(input: ToastInput) {\n  const { title, description, duration, variant = 'info', ...options } = input;\n  const message = isEmptyToastContent(title) ? description : title;\n\n  if (isEmptyToastContent(message)) {\n    return undefined;\n  }\n\n  const descriptionValue =\n    !isEmptyToastContent(description) && description !== message ? description : undefined;\n  const sonnerOptions: ExternalToast = {\n    ...options,\n    description: descriptionValue,\n    duration: duration ?? DEFAULT_TOAST_DURATION,\n  };\n\n  switch (variant) {\n    case 'error':\n      return sonnerToast.error(message, sonnerOptions);\n    case 'warning':\n      return sonnerToast.warning(message, sonnerOptions);\n    case 'success':\n      return sonnerToast.success(message, sonnerOptions);\n    default:\n      return sonnerToast(message, sonnerOptions);\n  }\n}\n\nexport function extractToastMessage(value: ToastValue, fallback = '') {\n  if (!value) return fallback;\n\n  if (typeof value === 'string') {\n    const nextMessage = value.trim();\n    return nextMessage || fallback;\n  }\n\n  if (value instanceof Error) {\n    const nextMessage = String(value.message || '').trim();\n    return nextMessage || fallback;\n  }\n\n  if (typeof value === 'object' && typeof value.message === 'string') {\n    const nextMessage = value.message.trim();\n    if (nextMessage) return nextMessage;\n  }\n\n  if (typeof value === 'object' && typeof value.title === 'string') {\n    const nextTitle = value.title.trim();\n    if (nextTitle) return nextTitle;\n  }\n\n  return fallback;\n}\n\nexport function resolveToastVariantForMessage(value: ToastValue): ToastVariant {\n  const message = extractToastMessage(value);\n\n  if (ACTIONABLE_TOAST_PATTERNS.some((pattern) => pattern.test(message))) {\n    return 'warning';\n  }\n\n  return 'error';\n}\n\nexport function MonkeysToaster({\n  className,\n  closeButton = true,\n  position = 'bottom-right',\n  richColors = true,\n  toastOptions,\n  useThemeClassNames = true,\n  visibleToasts = 10,\n  ...props\n}: MonkeysToasterProps) {\n  return (\n    <SonnerToaster\n      className={cn('pointer-events-auto toaster group', className)}\n      closeButton={closeButton}\n      position={position}\n      richColors={richColors}\n      toastOptions={{\n        ...toastOptions,\n        classNames: useThemeClassNames\n          ? {\n              ...DEFAULT_TOAST_CLASS_NAMES,\n              ...toastOptions?.classNames,\n            }\n          : toastOptions?.classNames,\n      }}\n      visibleToasts={visibleToasts}\n      {...props}\n    />\n  );\n}\n\nexport function MonkeysToastProvider({ children, toasterProps }: MonkeysToastProviderProps) {\n  return (\n    <>\n      {children}\n      <MonkeysToaster {...toasterProps} />\n    </>\n  );\n}\n\nexport function useToastOnValue(value: ToastValue, options: ToastValueOptions = {}) {\n  const previousSignatureRef = useRef<string | null>(null);\n  const localeMessages = useMonkeysLocaleMessages().toast;\n  const translate = options.translate;\n\n  useEffect(() => {\n    if (!value) {\n      previousSignatureRef.current = null;\n      return;\n    }\n\n    const variant = resolveValue(options.variant, value) ?? 'error';\n    const rawTitle = resolveValue(options.title, value);\n    const rawFallbackDescription = resolveValue(options.fallbackDescription, value);\n    const rawDescription =\n      resolveValue(options.description, value) ?? extractToastMessage(value, rawFallbackDescription || '');\n    const title = translateMessage(\n      translate,\n      rawTitle ||\n        getDefaultMessage(\n          options.messages,\n          localeMessages,\n          variant === 'warning' ? 'warningTitle' : 'errorTitle',\n        ),\n    );\n    const description = translateMessage(\n      translate,\n      rawDescription ||\n        getDefaultMessage(\n          options.messages,\n          localeMessages,\n          variant === 'warning' ? 'defaultWarningDescription' : 'defaultErrorDescription',\n        ),\n    );\n    const signature = resolveValue(options.signature, value) || [variant, title, description].join('|');\n\n    if (previousSignatureRef.current === signature) {\n      return;\n    }\n\n    previousSignatureRef.current = signature;\n\n    if (!shouldEmitToast(signature)) {\n      return;\n    }\n\n    toast.show({\n      variant,\n      title,\n      description,\n      duration: resolveValue(options.duration, value),\n    });\n  }, [\n    options.description,\n    options.duration,\n    options.fallbackDescription,\n    options.messages,\n    options.signature,\n    options.title,\n    options.variant,\n    localeMessages,\n    translate,\n    value,\n  ]);\n}\n\nexport function useToastFeed(items: ToastFeedEntry[], options: Pick<ToastValueOptions, 'messages' | 'translate'> = {}) {\n  const previousVisibleSignaturesRef = useRef<Set<string>>(new Set());\n  const localeMessages = useMonkeysLocaleMessages().toast;\n  const translate = options.translate;\n  const emitItem = useCallback(\n    (item: NonNullable<ToastFeedEntry>, index: number, visibleSignatures: Set<string>) => {\n      const variant = item.variant ?? 'info';\n      const title = translateMessage(\n        translate,\n        item.title ||\n          getDefaultMessage(\n            options.messages,\n            localeMessages,\n            variant === 'warning' ? 'warningTitle' : 'errorTitle',\n          ),\n      );\n      const description = translateMessage(\n        translate,\n        item.description ||\n          getDefaultMessage(\n            options.messages,\n            localeMessages,\n            variant === 'warning' ? 'defaultWarningDescription' : 'defaultErrorDescription',\n          ),\n      );\n      const signature = item.signature || [variant, title, description, index].join('|');\n\n      visibleSignatures.add(signature);\n\n      if (previousVisibleSignaturesRef.current.has(signature) || !shouldEmitToast(signature)) {\n        return;\n      }\n\n      toast.show({\n        variant,\n        title,\n        description,\n        duration: item.duration,\n      });\n    },\n    [localeMessages, options.messages, translate],\n  );\n\n  useEffect(() => {\n    const visibleSignatures = new Set<string>();\n\n    items.forEach((item, index) => {\n      if (item) {\n        emitItem(item, index, visibleSignatures);\n      }\n    });\n\n    previousVisibleSignaturesRef.current = visibleSignatures;\n  }, [emitItem, items]);\n}\n\nexport const toast: MonkeysToastApi = Object.assign(\n  (message: ReactNode, options?: ExternalToast) => sonnerToast(message, options),\n  {\n    show: emitToast,\n    error: (input: ReactNode | ToastInput, options?: ExternalToast) =>\n      emitToast(normalizeToastInput(input, 'error', options)),\n    warning: (input: ReactNode | ToastInput, options?: ExternalToast) =>\n      emitToast(normalizeToastInput(input, 'warning', options)),\n    success: (input: ReactNode | ToastInput, options?: ExternalToast) =>\n      emitToast(normalizeToastInput(input, 'success', options)),\n    info: (input: ReactNode | ToastInput, options?: ExternalToast) =>\n      emitToast(normalizeToastInput(input, 'info', options)),\n    message: sonnerToast.message,\n    promise: sonnerToast.promise as MonkeysToastApi['promise'],\n    dismiss: sonnerToast.dismiss,\n    loading: sonnerToast.loading,\n    custom: sonnerToast.custom as (jsx: (id: number | string) => ReactElement, data?: ExternalToast) => string | number,\n    getHistory: sonnerToast.getHistory,\n    getToasts: sonnerToast.getToasts,\n  },\n);\n\nexport { MonkeysToaster as Toaster, MonkeysToastProvider as ToastProvider };\nexport type { ExternalToast, ToasterProps };\n","import type { ApplicationHandoff } from '@inf-monkeys-tech/monkeys';\nimport { buildApplicationHandoffUrl } from '@inf-monkeys-tech/monkeys/runtime';\nimport type { AnchorHTMLAttributes, MouseEvent, ReactNode } from 'react';\n\nexport interface ApplicationHandoffLinkProps\n  extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'onClick'> {\n  handoff: ApplicationHandoff;\n  targetPath?: string;\n  targetOrigin?: string;\n  children?: ReactNode;\n  onActivate?: (\n    handoff: ApplicationHandoff,\n    event: MouseEvent<HTMLAnchorElement>,\n  ) => void;\n}\n\nexport function ApplicationHandoffLink({\n  handoff,\n  targetPath = handoff.target.path,\n  targetOrigin,\n  children,\n  onActivate,\n  ...props\n}: ApplicationHandoffLinkProps) {\n  const normalizedTargetOrigin = targetOrigin?.trim();\n  const resolvedTargetPath = normalizedTargetOrigin\n    ? new URL(targetPath, normalizedTargetOrigin).toString()\n    : targetPath;\n\n  return (\n    <a\n      {...props}\n      href={buildApplicationHandoffUrl(resolvedTargetPath, handoff)}\n      data-monkeys-handoff-id={handoff.handoffId}\n      data-monkeys-handoff-source={handoff.source.product}\n      data-monkeys-handoff-target={handoff.target.product}\n      onClick={(event) => onActivate?.(handoff, event)}\n    >\n      {children}\n    </a>\n  );\n}\n","import { Slot } from '@radix-ui/react-slot';\nimport type { RenderActivation, RenderLayout, RenderNode, RenderStyle, RenderResponsiveRule } from '@inf-monkeys-tech/monkeys';\nimport {\n  forwardRef,\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\nimport type {\n  CSSProperties,\n  HTMLAttributes,\n  MutableRefObject,\n  ReactNode,\n  Ref,\n} from 'react';\n\nimport { cn } from '../base/utils';\n\nexport type RenderNodeHostElement = 'article' | 'aside' | 'div' | 'main' | 'nav' | 'section';\n\nexport interface RenderNodeScrollPosition {\n  x: number;\n  y: number;\n}\n\nexport interface RenderNodeScrollRestoration {\n  read(key: string): RenderNodeScrollPosition | undefined;\n  write(key: string, position: RenderNodeScrollPosition): void;\n  remove?(key: string): void;\n}\n\nexport interface RenderNodePolicyState {\n  active: boolean;\n  visible: boolean;\n  mounted: boolean;\n  queryEnabled: boolean;\n}\n\nexport interface RenderNodeRuntimeState extends RenderNodePolicyState {\n  elementProps?: HTMLAttributes<HTMLElement> & { ref?: Ref<HTMLElement> };\n  activate(): void;\n  setManualQueryEnabled(enabled: boolean): void;\n}\n\nexport interface RenderNodeHostProps\n  extends Omit<HTMLAttributes<HTMLElement>, 'children'> {\n  node: RenderNode;\n  as?: RenderNodeHostElement;\n  asChild?: boolean;\n  unframed?: boolean;\n  active?: boolean;\n  visible?: boolean;\n  manualQueryEnabled?: boolean;\n  children?: ReactNode | ((runtime: RenderNodeRuntimeState) => ReactNode);\n  loading?: ReactNode;\n  empty?: ReactNode;\n  error?: ReactNode;\n  elementRef?: Ref<HTMLElement>;\n  scrollRestoration?: RenderNodeScrollRestoration | false;\n  onActivate?: (activation: RenderActivation, node: RenderNode) => void;\n  onManualQueryEnabledChange?: (enabled: boolean, node: RenderNode) => void;\n  onRuntimeStateChange?: (state: RenderNodePolicyState, node: RenderNode) => void;\n}\n\nconst refIdentity = (reference: RenderNode['pageRef'] | undefined) => reference?.id;\n\nexport const getRenderNodeDataAttributes = (node: RenderNode) => ({\n  'data-monkeys-node-id': node.nodeId,\n  'data-monkeys-node-kind': node.kind,\n  'data-monkeys-node-version': node.version,\n  'data-monkeys-owner': node.ownerRepo,\n  'data-monkeys-parent-node': node.parentNodeId,\n  'data-monkeys-slot': node.slot,\n  'data-monkeys-page-id': refIdentity(node.pageRef),\n  'data-monkeys-semantic-id': refIdentity(node.semanticRef),\n  'data-monkeys-data-context-id': refIdentity(node.dataContextRef),\n  'data-monkeys-capability-id': refIdentity(node.capabilityRef),\n  'data-monkeys-provider-id': refIdentity(node.providerRef),\n  'data-monkeys-state-id': refIdentity(node.stateRef),\n  'data-monkeys-frame-owner': node.surface.frameOwner,\n  'data-monkeys-surface-tone': node.surface.tone,\n  'data-monkeys-density': node.surface.density,\n  'data-monkeys-scroll-owner': node.scroll.owner,\n  'data-monkeys-scroll-axis': node.scroll.axis,\n  'data-monkeys-scroll-restore-key': node.scroll.restoreKey,\n  'data-monkeys-virtualization-boundary': node.scroll.virtualizationBoundary,\n  'data-monkeys-activation-id': node.activation.activationId,\n  'data-monkeys-activation-mode': node.activation.mode,\n  'data-monkeys-mount-policy': node.lifecycle.mountPolicy,\n  'data-monkeys-query-policy': node.lifecycle.queryPolicy,\n  'data-monkeys-deep-link': node.lifecycle.deepLink,\n  'data-monkeys-focus-return': node.lifecycle.focusReturn,\n  'data-monkeys-layout-mode': node.layout.mode,\n  'data-monkeys-responsive-rules': node.responsive.length,\n  'data-monkeys-child-count': node.children.length,\n  'data-monkeys-access-id': refIdentity(node.accessRef),\n  'data-monkeys-evidence-id': refIdentity(node.evidenceRef),\n  'data-monkeys-render-state': node.state,\n});\n\nconst sessionStorageKey = (key: string) => `monkeys.render.scroll.${key}`;\n\nexport const sessionRenderNodeScrollRestoration: RenderNodeScrollRestoration = {\n  read(key) {\n    if (typeof window === 'undefined') return undefined;\n    try {\n      const value = window.sessionStorage.getItem(sessionStorageKey(key));\n      if (!value) return undefined;\n      const parsed = JSON.parse(value) as Partial<RenderNodeScrollPosition>;\n      return typeof parsed.x === 'number' && typeof parsed.y === 'number'\n        ? { x: parsed.x, y: parsed.y }\n        : undefined;\n    } catch {\n      return undefined;\n    }\n  },\n  write(key, position) {\n    if (typeof window === 'undefined') return;\n    try {\n      window.sessionStorage.setItem(sessionStorageKey(key), JSON.stringify(position));\n    } catch {\n      // Storage may be unavailable in private or embedded browser contexts.\n    }\n  },\n  remove(key) {\n    if (typeof window === 'undefined') return;\n    try {\n      window.sessionStorage.removeItem(sessionStorageKey(key));\n    } catch {\n      // Storage may be unavailable in private or embedded browser contexts.\n    }\n  },\n};\n\nexport const resolveRenderNodeLayout = (node: RenderNode, viewportWidth?: number): RenderLayout => {\n  if (viewportWidth === undefined) return node.layout;\n  const matching = node.responsive.filter((rule) =>\n    (rule.minWidthPx === undefined || viewportWidth >= rule.minWidthPx)\n    && (rule.maxWidthPx === undefined || viewportWidth <= rule.maxWidthPx));\n  return matching.length === 0 ? node.layout : matching[matching.length - 1].layout;\n};\n\nexport const resolveRenderNodeResponsiveStyle = (\n  style: RenderStyle | undefined,\n  responsive: readonly (RenderResponsiveRule & { style?: RenderStyle })[],\n  viewportWidth?: number,\n): RenderStyle | undefined => {\n  const matching = viewportWidth === undefined\n    ? []\n    : responsive.filter((rule) =>\n      (rule.minWidthPx === undefined || viewportWidth >= rule.minWidthPx)\n      && (rule.maxWidthPx === undefined || viewportWidth <= rule.maxWidthPx)\n      && rule.style,\n    );\n  if (matching.length === 0) return style;\n  return matching.reduce<RenderStyle>(\n    (resolved, rule) => ({ ...resolved, ...rule.style }),\n    { ...(style ?? {}) },\n  );\n};\n\nconst LAYOUT_MODE_CLASSES: Record<RenderLayout['mode'], string> = {\n  contents: 'contents',\n  block: 'block',\n  flex: 'flex',\n  grid: 'grid',\n  absolute: 'absolute',\n};\nconst ALIGN_CLASSES = { start: 'items-start', center: 'items-center', end: 'items-end', stretch: 'items-stretch' } as const;\nconst JUSTIFY_CLASSES = { start: 'justify-start', center: 'justify-center', end: 'justify-end', between: 'justify-between', around: 'justify-around' } as const;\n\nconst tokenPathToCssVariable = (value: string): string => {\n  const path = value.slice(1).trim();\n  if (!/^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$/i.test(path)) throw new TypeError(`Invalid Design Token path ${value}.`);\n  return `var(--monkeys-${path.replace(/\\./g, '-').replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase()})`;\n};\n\nexport const resolveRenderNodeStyle = (style: RenderStyle | undefined): CSSProperties | undefined =>\n  style\n    ? (Object.fromEntries(Object.entries(style).map(([property, value]) => [property, typeof value === 'string' && value.startsWith('$') ? tokenPathToCssVariable(value) : value])) as CSSProperties)\n    : undefined;\n\nexport const getRenderLayoutClassName = (layout: RenderLayout): string => cn(\n  LAYOUT_MODE_CLASSES[layout.mode],\n  layout.mode === 'flex' && (layout.direction === 'row' ? 'flex-row' : 'flex-col'),\n  layout.align && ALIGN_CLASSES[layout.align],\n  layout.justify && JUSTIFY_CLASSES[layout.justify],\n);\n\nconst shouldMountNode = (node: RenderNode, active: boolean, visible: boolean) => {\n  if (node.lifecycle.mountPolicy === 'always') return true;\n  if (node.lifecycle.mountPolicy === 'when-visible') return visible;\n  return active;\n};\n\nconst shouldQueryNode = (\n  node: RenderNode,\n  active: boolean,\n  visible: boolean,\n  manualQueryEnabled: boolean,\n) => {\n  if (node.lifecycle.queryPolicy === 'always') return true;\n  if (node.lifecycle.queryPolicy === 'when-visible') return visible;\n  if (node.lifecycle.queryPolicy === 'when-active') return active;\n  return manualQueryEnabled;\n};\n\nexport const resolveRenderNodePolicyState = (\n  node: RenderNode,\n  input: {\n    active: boolean;\n    visible: boolean;\n    manualQueryEnabled?: boolean;\n    previouslyMounted?: boolean;\n  },\n): RenderNodePolicyState => {\n  const policyMounted = shouldMountNode(node, input.active, input.visible);\n  return {\n    active: input.active,\n    visible: input.visible,\n    mounted: policyMounted || (node.lifecycle.retainOnDeactivate && input.previouslyMounted === true),\n    queryEnabled: shouldQueryNode(node, input.active, input.visible, input.manualQueryEnabled === true),\n  };\n};\n\nconst resolveRenderNodeContent = (\n  node: RenderNode,\n  content: ReactNode,\n  loading: ReactNode,\n  empty: ReactNode,\n  error: ReactNode,\n) => {\n  if (node.state === 'loading' && loading !== undefined) return loading;\n  if (node.state === 'empty' && empty !== undefined) return empty;\n  if (node.state === 'error' && error !== undefined) return error;\n  return content;\n};\n\nconst assignRef = (ref: Ref<HTMLElement> | undefined, value: HTMLElement | null) => {\n  if (typeof ref === 'function') ref(value);\n  else if (ref) (ref as MutableRefObject<HTMLElement | null>).current = value;\n};\n\nexport const RenderNodeHost = forwardRef<HTMLElement, RenderNodeHostProps>(function RenderNodeHost({\n  node,\n  as = 'div',\n  active = true,\n  visible = active,\n  manualQueryEnabled = false,\n  asChild = false,\n  unframed = false,\n  children,\n  loading,\n  empty,\n  error,\n  elementRef,\n  scrollRestoration = sessionRenderNodeScrollRestoration,\n  onActivate,\n  onManualQueryEnabledChange,\n  onRuntimeStateChange,\n  onScroll,\n  className,\n  hidden,\n  role,\n  'aria-live': ariaLive,\n  'aria-atomic': ariaAtomic,\n  ...props\n}: RenderNodeHostProps, forwardedRef) {\n  const Component = asChild ? Slot : as;\n  const hostRef = useRef<HTMLElement | null>(null);\n  const [viewportWidth, setViewportWidth] = useState<number | undefined>(() =>\n    typeof window === 'undefined' ? undefined : window.innerWidth);\n  const [mountedNodeId, setMountedNodeId] = useState<string | undefined>(() =>\n    shouldMountNode(node, active, visible) ? node.nodeId : undefined);\n  const policyMounted = shouldMountNode(node, active, visible);\n\n  useEffect(() => {\n    if (node.responsive.length === 0 || typeof window === 'undefined') return undefined;\n    const handleResize = () => setViewportWidth(window.innerWidth);\n    handleResize();\n    window.addEventListener('resize', handleResize, { passive: true });\n    return () => window.removeEventListener('resize', handleResize);\n  }, [node.responsive.length]);\n\n  const resolvedLayout = useMemo(() => resolveRenderNodeLayout(node, viewportWidth), [node, viewportWidth]);\n  const resolvedStyle = useMemo(\n    () => resolveRenderNodeResponsiveStyle(node.style, node.responsive, viewportWidth),\n    [node.responsive, node.style, viewportWidth],\n  );\n\n  useEffect(() => {\n    if (!active || !visible || !node.lifecycle.deepLink || !['page', 'record'].includes(node.kind)) return;\n    const element = hostRef.current;\n    if (!element || element.style.display === 'contents') return;\n    element.focus({ preventScroll: true });\n  }, [active, node.kind, node.lifecycle.deepLink, node.nodeId, visible]);\n\n  useEffect(() => {\n    if (policyMounted) setMountedNodeId(node.nodeId);\n    else if (!node.lifecycle.retainOnDeactivate) setMountedNodeId(undefined);\n  }, [node.lifecycle.retainOnDeactivate, node.nodeId, policyMounted]);\n\n  const policyState = useMemo(() => resolveRenderNodePolicyState(node, {\n    active,\n    visible,\n    manualQueryEnabled,\n    previouslyMounted: mountedNodeId === node.nodeId,\n  }), [active, manualQueryEnabled, mountedNodeId, node, visible]);\n\n  const activate = useCallback(() => {\n    onActivate?.(node.activation, node);\n  }, [node, onActivate]);\n\n  const setManualQueryEnabled = useCallback((enabled: boolean) => {\n    onManualQueryEnabledChange?.(enabled, node);\n  }, [node, onManualQueryEnabledChange]);\n\n  const runtimeState = useMemo<RenderNodeRuntimeState>(() => ({\n    ...policyState,\n    activate,\n    setManualQueryEnabled,\n  }), [activate, policyState, setManualQueryEnabled]);\n\n  useEffect(() => {\n    onRuntimeStateChange?.(policyState, node);\n  }, [node, onRuntimeStateChange, policyState]);\n\n  const setHostRef = useCallback((value: HTMLElement | null) => {\n    hostRef.current = value;\n    assignRef(elementRef, value);\n    assignRef(forwardedRef, value);\n  }, [elementRef, forwardedRef]);\n\n  const scrollAdapter = scrollRestoration === false ? undefined : scrollRestoration;\n  const restoresHostScroll = scrollAdapter !== undefined\n    && node.scroll.owner !== 'provider'\n    && !node.scroll.virtualizationBoundary\n    && node.scroll.axis !== 'none'\n    && node.scroll.restoreKey !== undefined;\n\n  const readPosition = useCallback((): RenderNodeScrollPosition => {\n    const element = hostRef.current;\n    if (!element) return { x: 0, y: 0 };\n    return {\n      x: node.scroll.axis === 'y' ? 0 : element.scrollLeft,\n      y: node.scroll.axis === 'x' ? 0 : element.scrollTop,\n    };\n  }, [node.scroll.axis]);\n\n  useEffect(() => {\n    if (!policyState.mounted || !restoresHostScroll || !scrollAdapter) return undefined;\n    const key = node.scroll.restoreKey!;\n    const element = hostRef.current;\n    const position = scrollAdapter.read(key);\n    let frame: number | undefined;\n    if (element && position) {\n      const restore = () => element.scrollTo({\n        left: node.scroll.axis === 'y' ? element.scrollLeft : position.x,\n        top: node.scroll.axis === 'x' ? element.scrollTop : position.y,\n        behavior: 'auto',\n      });\n      if (typeof window !== 'undefined' && typeof window.requestAnimationFrame === 'function') {\n        frame = window.requestAnimationFrame(restore);\n      } else {\n        restore();\n      }\n    }\n    return () => {\n      if (frame !== undefined && typeof window !== 'undefined') window.cancelAnimationFrame(frame);\n      scrollAdapter.write(key, readPosition());\n    };\n  }, [node.scroll.axis, node.scroll.restoreKey, policyState.mounted, readPosition, restoresHostScroll, scrollAdapter]);\n\n  if (!policyState.mounted) return null;\n\n  const elementProps: NonNullable<RenderNodeRuntimeState['elementProps']> & Record<`data-${string}`, unknown> = {\n    ...props,\n    ...getRenderNodeDataAttributes(node),\n    ref: setHostRef,\n    className: cn((!unframed || resolvedLayout.mode !== 'contents') && getRenderLayoutClassName(resolvedLayout), className),\n    style: {\n      ...(resolvedLayout.mode === 'grid' && resolvedLayout.columns ? { gridTemplateColumns: `repeat(${resolvedLayout.columns}, minmax(0, 1fr))` } : {}),\n      ...resolveRenderNodeStyle(resolvedStyle),\n      ...props.style,\n    },\n    hidden: hidden || !policyState.visible || undefined,\n    role: role ?? (node.state === 'error' ? 'alert' : node.state === 'loading' || node.state === 'empty' ? 'status' : undefined),\n    tabIndex: props.tabIndex ?? (node.lifecycle.deepLink && ['page', 'record'].includes(node.kind) ? -1 : undefined),\n    'data-monkeys-active': policyState.active,\n    'data-monkeys-mounted': policyState.mounted,\n    'data-monkeys-query-enabled': policyState.queryEnabled,\n    'aria-busy': node.state === 'loading' || undefined,\n    'aria-disabled': node.state === 'disabled' || undefined,\n    'aria-hidden': !policyState.visible || undefined,\n    'aria-live': ariaLive ?? (node.state === 'error' ? 'assertive' : node.state === 'loading' || node.state === 'empty' ? 'polite' : undefined),\n    'aria-atomic': ariaAtomic ?? (node.state === 'loading' || node.state === 'empty' || node.state === 'error' ? true : undefined),\n    onScroll: (event) => {\n      if (restoresHostScroll && scrollAdapter && node.scroll.restoreKey) scrollAdapter.write(node.scroll.restoreKey, readPosition());\n      onScroll?.(event);\n    },\n  };\n  const renderedChildren = typeof children === 'function'\n    ? children(unframed ? { ...runtimeState, elementProps } : runtimeState)\n    : children;\n  if (unframed) return <>{resolveRenderNodeContent(node, renderedChildren, loading, empty, error)}</>;\n\n  return (\n    <Component {...elementProps} ref={setHostRef as never}\n    >\n      {resolveRenderNodeContent(node, renderedChildren, loading, empty, error)}\n    </Component>\n  );\n});\n","import type { OverlayNode, OverlayZIndexLane } from '@inf-monkeys-tech/monkeys';\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport type { ReactNode, RefObject } from 'react';\n\nimport { BaseDialog } from '../base/BaseDialog';\nimport type { BaseAppearance, BaseDialogClassNames } from '../base/types';\nimport {\n  getRenderNodeDataAttributes,\n  RenderNodeHost,\n} from './RenderNodeHost';\nimport type {\n  RenderNodeHostProps,\n  RenderNodeRuntimeState,\n} from './RenderNodeHost';\n\nexport interface OverlayHistoryAdapter {\n  getCurrentUrl(): string;\n  push(url: string): void;\n  replace(url: string): void;\n  back(): void;\n  subscribe(listener: (url: string) => void): () => void;\n}\n\nexport interface OverlayNodeRuntimeContext extends RenderNodeRuntimeState {\n  open: boolean;\n  zIndexLane: OverlayZIndexLane;\n  zIndex: number;\n  initialFocusRef?: RefObject<HTMLElement | null>;\n  focusReturnRef?: RefObject<HTMLElement | null>;\n  renderNodeAttributes: ReturnType<typeof getRenderNodeDataAttributes>;\n  onOpenChange(open: boolean): void;\n  requestClose(): void;\n}\n\nexport interface OverlayNodeHostProps {\n  node: OverlayNode;\n  open: boolean;\n  renderStrategy?: 'dialog' | 'delegate';\n  title?: ReactNode;\n  description?: ReactNode;\n  footer?: ReactNode;\n  closeLabel?: string;\n  children?: ReactNode | ((runtime: OverlayNodeRuntimeContext) => ReactNode);\n  appearance?: BaseAppearance;\n  className?: string;\n  classNames?: BaseDialogClassNames;\n  initialFocusRef?: RefObject<HTMLElement | null>;\n  focusReturnRef?: RefObject<HTMLElement | null>;\n  historyAdapter?: OverlayHistoryAdapter | false;\n  manualQueryEnabled?: boolean;\n  onActivate?: RenderNodeHostProps['onActivate'];\n  onRuntimeStateChange?: RenderNodeHostProps['onRuntimeStateChange'];\n  onOpenChange: (open: boolean) => void;\n}\n\nconst OVERLAY_Z_INDEX: Record<OverlayZIndexLane, number> = {\n  popover: 40,\n  drawer: 50,\n  modal: 60,\n  fullscreen: 70,\n  system: 80,\n};\n\nexport const getOverlayZIndex = (lane: OverlayZIndexLane) => OVERLAY_Z_INDEX[lane];\n\nconst OVERLAY_PRESENTATION_CLASS_NAMES: Record<\n  OverlayNode['presentation'],\n  Pick<BaseDialogClassNames, 'body' | 'content' | 'panel'>\n> = {\n  drawer: {\n    content: '!items-stretch !justify-end !p-0',\n    panel: '!h-dvh !max-h-none !w-full !max-w-[min(100vw,40rem)] !rounded-none !border-y-0 !border-r-0',\n    body: 'min-h-0 flex-1 overflow-auto',\n  },\n  modal: {},\n  fullscreen: {\n    content: '!items-stretch !justify-stretch !p-0',\n    panel: '!h-dvh !max-h-none !w-screen !max-w-none !rounded-none !border-0',\n    body: 'min-h-0 flex-1 overflow-auto',\n  },\n};\n\nexport const getOverlayPresentationClassNames = (\n  presentation: OverlayNode['presentation'],\n): Pick<BaseDialogClassNames, 'body' | 'content' | 'panel'> => ({\n  ...OVERLAY_PRESENTATION_CLASS_NAMES[presentation],\n});\n\nconst relativeUrl = (input: string, url: URL) =>\n  input.startsWith('/') && !input.startsWith('//')\n    ? `${url.pathname}${url.search}${url.hash}`\n    : url.toString();\n\nexport const isOverlayUrlActive = (node: OverlayNode, input: string): boolean => {\n  const url = new URL(input, 'https://monkeys.local');\n  return url.searchParams.get(node.url.parameter) === node.url.value;\n};\n\nexport const buildOverlayUrl = (node: OverlayNode, input: string, open: boolean): string => {\n  const url = new URL(input, 'https://monkeys.local');\n  if (open) url.searchParams.set(node.url.parameter, node.url.value);\n  else if (url.searchParams.get(node.url.parameter) === node.url.value) url.searchParams.delete(node.url.parameter);\n  return relativeUrl(input, url);\n};\n\nexport const browserOverlayHistoryAdapter: OverlayHistoryAdapter = {\n  getCurrentUrl() {\n    return typeof window === 'undefined' ? 'https://monkeys.local/' : window.location.href;\n  },\n  push(url) {\n    if (typeof window !== 'undefined') window.history.pushState(window.history.state, '', url);\n  },\n  replace(url) {\n    if (typeof window !== 'undefined') window.history.replaceState(window.history.state, '', url);\n  },\n  back() {\n    if (typeof window !== 'undefined') window.history.back();\n  },\n  subscribe(listener) {\n    if (typeof window === 'undefined') return () => undefined;\n    const handlePopState = () => listener(window.location.href);\n    window.addEventListener('popstate', handlePopState);\n    return () => window.removeEventListener('popstate', handlePopState);\n  },\n};\n\nconst scheduleFocus = (target: HTMLElement | null | undefined) => {\n  if (!target?.isConnected) return;\n  if (typeof window !== 'undefined' && typeof window.requestAnimationFrame === 'function') {\n    window.requestAnimationFrame(() => target.focus());\n  } else {\n    target.focus();\n  }\n};\n\nexport function OverlayNodeHost({\n  node,\n  open,\n  renderStrategy = 'dialog',\n  title,\n  description,\n  footer,\n  closeLabel,\n  children,\n  appearance,\n  className,\n  classNames,\n  initialFocusRef,\n  focusReturnRef,\n  historyAdapter = browserOverlayHistoryAdapter,\n  manualQueryEnabled = false,\n  onActivate,\n  onRuntimeStateChange,\n  onOpenChange,\n}: OverlayNodeHostProps) {\n  const historyEntryOwnedRef = useRef(false);\n  const initializedUrlRef = useRef(false);\n  const zIndex = getOverlayZIndex(node.zIndexLane);\n  const syncUrl = useCallback((nextOpen: boolean) => {\n    if (!node.renderNode.lifecycle.deepLink || historyAdapter === false) return;\n    const currentUrl = historyAdapter.getCurrentUrl();\n    if (isOverlayUrlActive(node, currentUrl) === nextOpen) return;\n    const nextUrl = buildOverlayUrl(node, currentUrl, nextOpen);\n    if (nextOpen) {\n      if (node.url.openMode === 'push') {\n        historyAdapter.push(nextUrl);\n        historyEntryOwnedRef.current = true;\n      } else {\n        historyAdapter.replace(nextUrl);\n        historyEntryOwnedRef.current = false;\n      }\n      return;\n    }\n    if (node.url.closeMode === 'back' && historyEntryOwnedRef.current) {\n      historyEntryOwnedRef.current = false;\n      historyAdapter.back();\n    } else {\n      historyAdapter.replace(nextUrl);\n      historyEntryOwnedRef.current = false;\n    }\n  }, [historyAdapter, node]);\n\n  const requestOpenChange = useCallback((nextOpen: boolean) => {\n    syncUrl(nextOpen);\n    onOpenChange(nextOpen);\n  }, [onOpenChange, syncUrl]);\n\n  useEffect(() => {\n    if (!node.renderNode.lifecycle.deepLink || historyAdapter === false) return undefined;\n    const urlOpen = isOverlayUrlActive(node, historyAdapter.getCurrentUrl());\n    if (!initializedUrlRef.current) {\n      initializedUrlRef.current = true;\n      if (urlOpen && !open) onOpenChange(true);\n      else if (!urlOpen && open) syncUrl(true);\n    } else if (urlOpen !== open) {\n      syncUrl(open);\n    }\n    return historyAdapter.subscribe((url) => {\n      historyEntryOwnedRef.current = false;\n      const nextOpen = isOverlayUrlActive(node, url);\n      if (nextOpen !== open) onOpenChange(nextOpen);\n    });\n  }, [historyAdapter, node, onOpenChange, open, syncUrl]);\n\n  useEffect(() => {\n    if (!open || !node.renderNode.lifecycle.focusReturn || typeof document === 'undefined') return undefined;\n    const target = focusReturnRef?.current\n      ?? (document.activeElement instanceof HTMLElement ? document.activeElement : null);\n    return () => scheduleFocus(focusReturnRef?.current ?? target);\n  }, [focusReturnRef, node.renderNode.lifecycle.focusReturn, open]);\n\n  const renderNodeAttributes = useMemo(\n    () => getRenderNodeDataAttributes(node.renderNode),\n    [node.renderNode],\n  );\n  const presentationClassNames = getOverlayPresentationClassNames(node.presentation);\n  const resolvedClassNames: BaseDialogClassNames = {\n    ...classNames,\n    body: classNames?.body ?? presentationClassNames.body,\n    content: classNames?.content ?? presentationClassNames.content,\n    panel: classNames?.panel ?? presentationClassNames.panel,\n  };\n\n  return (\n    <RenderNodeHost\n      node={node.renderNode}\n      active={open}\n      visible={open}\n      manualQueryEnabled={manualQueryEnabled}\n      className={className}\n      style={renderStrategy === 'delegate' ? { display: 'contents' } : undefined}\n      onActivate={onActivate}\n      onRuntimeStateChange={onRuntimeStateChange}\n    >\n      {(runtime) => {\n        const context: OverlayNodeRuntimeContext = {\n          ...runtime,\n          open,\n          zIndexLane: node.zIndexLane,\n          zIndex,\n          initialFocusRef,\n          focusReturnRef,\n          renderNodeAttributes,\n          onOpenChange: requestOpenChange,\n          requestClose: () => requestOpenChange(false),\n        };\n        const content = typeof children === 'function' ? children(context) : children;\n        if (renderStrategy === 'delegate') return content;\n        return (\n          <BaseDialog\n            id={node.overlayId}\n            open={open}\n            title={title}\n            description={description}\n            footer={footer}\n            closeLabel={closeLabel}\n            closeOnEscape={node.close.escape}\n            closeOnOverlayClick={node.close.backdrop}\n            keepMounted={node.renderNode.lifecycle.retainOnDeactivate}\n            trapFocus={node.focus.trap}\n            restoreFocus={false}\n            initialFocus={node.focus.initial}\n            initialFocusRef={initialFocusRef}\n            zIndex={zIndex}\n            appearance={appearance}\n            classNames={resolvedClassNames}\n            data-monkeys-overlay-presentation={node.presentation}\n            data-monkeys-overlay-z-index-lane={node.zIndexLane}\n            onOpenChange={requestOpenChange}\n          >\n            {content}\n          </BaseDialog>\n        );\n      }}\n    </RenderNodeHost>\n  );\n}\n","import * as React from 'react';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport * as Tooltip from '@radix-ui/react-tooltip';\n\nimport {\n  useMonkeysComponentAttributes,\n  useMonkeysLocale,\n} from '../../provider/context';\n\nfunction cn(...inputs: (string | undefined | null | false)[]): string {\n  return inputs.filter(Boolean).join(' ');\n}\n\n// ---------- Inline SVG Icons ----------\n\nfunction SunIcon({ className }: { className?: string }) {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n      <circle cx=\"12\" cy=\"12\" r=\"4\" />\n      <path d=\"M12 2v2\" /><path d=\"M12 20v2\" />\n      <path d=\"m4.93 4.93 1.41 1.41\" /><path d=\"m17.66 17.66 1.41 1.41\" />\n      <path d=\"M2 12h2\" /><path d=\"M20 12h2\" />\n      <path d=\"m6.34 17.66-1.41 1.41\" /><path d=\"m19.07 4.93-1.41 1.41\" />\n    </svg>\n  );\n}\n\nfunction MoonIcon({ className }: { className?: string }) {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n      <path d=\"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z\" />\n    </svg>\n  );\n}\n\nfunction MonitorIcon({ className }: { className?: string }) {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n      <rect width=\"20\" height=\"14\" x=\"2\" y=\"3\" rx=\"2\" />\n      <line x1=\"8\" x2=\"16\" y1=\"21\" y2=\"21\" />\n      <line x1=\"12\" x2=\"12\" y1=\"17\" y2=\"21\" />\n    </svg>\n  );\n}\n\n// ---------- Component ----------\n\nexport type DarkModeValue = 'auto' | 'light' | 'dark';\n\nexport interface DarkModeSelectorProps {\n  mode: DarkModeValue;\n  onModeChange: (mode: DarkModeValue) => void;\n  labels?: { auto?: string; light?: string; dark?: string };\n  tooltip?: string;\n  className?: string;\n}\n\nconst triggerIconMap: Record<DarkModeValue, React.FC<{ className?: string }>> = {\n  light: SunIcon,\n  dark: MoonIcon,\n  auto: MonitorIcon,\n};\n\nexport function DarkModeSelector({\n  mode,\n  onModeChange,\n  labels = {},\n  tooltip,\n  className,\n}: DarkModeSelectorProps) {\n  const locale = useMonkeysLocale();\n  const componentAttributes = useMonkeysComponentAttributes();\n  const localeLabels = locale.messages.toolbar.theme;\n  const TriggerIcon = triggerIconMap[mode];\n  const resolvedLabels = {\n    auto: labels.auto ?? localeLabels.auto,\n    light: labels.light ?? localeLabels.light,\n    dark: labels.dark ?? localeLabels.dark,\n  };\n\n  const options: { value: DarkModeValue; label: string; Icon: React.FC<{ className?: string }> }[] = [\n    { value: 'auto', label: resolvedLabels.auto, Icon: MonitorIcon },\n    { value: 'light', label: resolvedLabels.light, Icon: SunIcon },\n    { value: 'dark', label: resolvedLabels.dark, Icon: MoonIcon },\n  ];\n\n  const trigger = (\n    <DropdownMenu.Trigger asChild>\n      <button\n        {...componentAttributes}\n        className={cn(\n          'inline-flex h-8 w-8 items-center justify-center rounded-md text-[hsl(var(--foreground))] hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] transition-colors focus-visible:outline-none',\n          className,\n        )}\n      >\n        <TriggerIcon />\n        <span className=\"sr-only\">{tooltip ?? localeLabels.toggle}</span>\n      </button>\n    </DropdownMenu.Trigger>\n  );\n\n  return (\n    <DropdownMenu.Root>\n      {tooltip ? (\n        <Tooltip.Provider delayDuration={300}>\n          <Tooltip.Root>\n            <Tooltip.Trigger asChild>{trigger}</Tooltip.Trigger>\n            <Tooltip.Portal>\n              <Tooltip.Content\n                className=\"rounded-md bg-[hsl(var(--popover))] px-3 py-1.5 text-xs text-[hsl(var(--popover-foreground))] shadow-md border border-[hsl(var(--border))] animate-in fade-in-0 zoom-in-95\"\n                sideOffset={5}\n              >\n                {tooltip}\n                <Tooltip.Arrow className=\"fill-[hsl(var(--popover))]\" />\n              </Tooltip.Content>\n            </Tooltip.Portal>\n          </Tooltip.Root>\n        </Tooltip.Provider>\n      ) : (\n        trigger\n      )}\n\n      <DropdownMenu.Portal>\n        <DropdownMenu.Content\n          className=\"z-50 min-w-[8rem] rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--popover))] p-1 text-[hsl(var(--popover-foreground))] shadow-md animate-in fade-in-0 zoom-in-95\"\n          sideOffset={5}\n          align=\"end\"\n        >\n          {options.map(({ value, label, Icon }) => (\n            <DropdownMenu.Item\n              key={value}\n              className={cn(\n                'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))]',\n                mode === value && 'bg-[hsl(var(--accent))]',\n              )}\n              onSelect={() => onModeChange(value)}\n            >\n              <Icon className=\"h-4 w-4\" />\n              {label}\n            </DropdownMenu.Item>\n          ))}\n        </DropdownMenu.Content>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Root>\n  );\n}\n\n// ---------- Sub-menu variant (for embedding in user dropdown) ----------\n\nfunction SunMoonIcon({ className }: { className?: string }) {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n      <path d=\"M12 8a2.83 2.83 0 0 0 4 4 4 4 0 1 1-4-4\" />\n      <path d=\"M12 2v2\" /><path d=\"M12 20v2\" />\n      <path d=\"m4.9 4.9 1.4 1.4\" /><path d=\"m17.7 17.7 1.4 1.4\" />\n      <path d=\"M2 12h2\" /><path d=\"M20 12h2\" />\n      <path d=\"m6.3 17.7-1.4 1.4\" /><path d=\"m19.1 4.9-1.4 1.4\" />\n    </svg>\n  );\n}\n\nexport interface DarkModeSubMenuProps {\n  mode: DarkModeValue;\n  onModeChange: (mode: DarkModeValue) => void;\n  label?: string;\n  labels?: { auto?: string; light?: string; dark?: string };\n}\n\n/**\n * A DropdownMenuSub component for embedding dark mode selector\n * inside a Radix DropdownMenu (e.g. user avatar menu).\n * Must be rendered as a child of DropdownMenu.Group / DropdownMenu.Content.\n */\nexport function DarkModeSubMenu({\n  mode,\n  onModeChange,\n  label,\n  labels = {},\n}: DarkModeSubMenuProps) {\n  const locale = useMonkeysLocale();\n  const componentAttributes = useMonkeysComponentAttributes();\n  const localeLabels = locale.messages.toolbar.theme;\n  const fallbackLabels = locale.provided\n    ? localeLabels\n    : {\n        label: '外观',\n        auto: '跟随系统',\n        light: '浅色模式',\n        dark: '深色模式',\n      };\n  const resolvedLabels = {\n    auto: labels.auto ?? fallbackLabels.auto,\n    light: labels.light ?? fallbackLabels.light,\n    dark: labels.dark ?? fallbackLabels.dark,\n  };\n\n  const currentLabel = mode === 'auto' ? resolvedLabels.auto : mode === 'dark' ? resolvedLabels.dark : resolvedLabels.light;\n\n  const options: { value: DarkModeValue; label: string; Icon: React.FC<{ className?: string }> }[] = [\n    { value: 'auto', label: resolvedLabels.auto, Icon: MonitorIcon },\n    { value: 'light', label: resolvedLabels.light, Icon: SunIcon },\n    { value: 'dark', label: resolvedLabels.dark, Icon: MoonIcon },\n  ];\n\n  return (\n    <DropdownMenu.Sub>\n      <DropdownMenu.SubTrigger\n        {...componentAttributes}\n        className=\"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] data-[state=open]:bg-[hsl(var(--accent))]\"\n      >\n        <SunMoonIcon className=\"h-4 w-4\" />\n        <span>{label ?? fallbackLabels.label}</span>\n        <span className=\"ml-auto text-xs text-[hsl(var(--muted-foreground))]\">{currentLabel}</span>\n      </DropdownMenu.SubTrigger>\n      <DropdownMenu.Portal>\n        <DropdownMenu.SubContent\n          className=\"z-50 min-w-[8rem] rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--popover))] p-1 text-[hsl(var(--popover-foreground))] shadow-md animate-in fade-in-0 zoom-in-95\"\n          sideOffset={8}\n        >\n          {options.map(({ value, label: optLabel, Icon }) => (\n            <DropdownMenu.CheckboxItem\n              key={value}\n              checked={mode === value}\n              disabled={mode === value}\n              className={cn(\n                'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 pl-7 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n              )}\n              onCheckedChange={() => onModeChange(value)}\n            >\n              <DropdownMenu.ItemIndicator className=\"absolute left-2 inline-flex items-center justify-center\">\n                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M20 6 9 17l-5-5\"/></svg>\n              </DropdownMenu.ItemIndicator>\n              <Icon className=\"h-4 w-4\" />\n              {optLabel}\n            </DropdownMenu.CheckboxItem>\n          ))}\n        </DropdownMenu.SubContent>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Sub>\n  );\n}\n","import * as React from 'react';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport * as Tooltip from '@radix-ui/react-tooltip';\n\nimport {\n  useMonkeysComponentAttributes,\n  useMonkeysLocale,\n} from '../../provider/context';\n\nfunction cn(...inputs: (string | undefined | null | false)[]): string {\n  return inputs.filter(Boolean).join(' ');\n}\n\n// ---------- Inline SVG Icon ----------\n\nfunction GlobeIcon({ className }: { className?: string }) {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className={className}>\n      <circle cx=\"12\" cy=\"12\" r=\"10\" />\n      <path d=\"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\" />\n      <path d=\"M2 12h20\" />\n    </svg>\n  );\n}\n\n// ---------- Component ----------\n\nexport interface I18nLanguage {\n  code: string;\n  label: string;\n}\n\nexport interface I18nSelectorProps {\n  languages: I18nLanguage[];\n  currentLanguage: string;\n  onLanguageChange: (code: string) => void;\n  tooltip?: string;\n  className?: string;\n}\n\nexport function I18nSelector({\n  languages,\n  currentLanguage,\n  onLanguageChange,\n  tooltip,\n  className,\n}: I18nSelectorProps) {\n  const locale = useMonkeysLocale();\n  const componentAttributes = useMonkeysComponentAttributes();\n  const trigger = (\n    <DropdownMenu.Trigger asChild>\n      <button\n        {...componentAttributes}\n        className={cn(\n          'inline-flex h-8 w-8 items-center justify-center rounded-md text-[hsl(var(--foreground))] hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] transition-colors focus-visible:outline-none',\n          className,\n        )}\n      >\n        <GlobeIcon />\n        <span className=\"sr-only\">\n          {tooltip ?? locale.messages.toolbar.language.switch}\n        </span>\n      </button>\n    </DropdownMenu.Trigger>\n  );\n\n  return (\n    <DropdownMenu.Root>\n      {tooltip ? (\n        <Tooltip.Provider delayDuration={300}>\n          <Tooltip.Root>\n            <Tooltip.Trigger asChild>{trigger}</Tooltip.Trigger>\n            <Tooltip.Portal>\n              <Tooltip.Content\n                className=\"rounded-md bg-[hsl(var(--popover))] px-3 py-1.5 text-xs text-[hsl(var(--popover-foreground))] shadow-md border border-[hsl(var(--border))] animate-in fade-in-0 zoom-in-95\"\n                sideOffset={5}\n              >\n                {tooltip}\n                <Tooltip.Arrow className=\"fill-[hsl(var(--popover))]\" />\n              </Tooltip.Content>\n            </Tooltip.Portal>\n          </Tooltip.Root>\n        </Tooltip.Provider>\n      ) : (\n        trigger\n      )}\n\n      <DropdownMenu.Portal>\n        <DropdownMenu.Content\n          className=\"z-50 min-w-[8rem] rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--popover))] p-1 text-[hsl(var(--popover-foreground))] shadow-md animate-in fade-in-0 zoom-in-95\"\n          sideOffset={5}\n          align=\"end\"\n        >\n          {languages.map(({ code, label }) => (\n            <DropdownMenu.Item\n              key={code}\n              className={cn(\n                'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))]',\n                currentLanguage === code && 'bg-[hsl(var(--accent))]',\n              )}\n              onSelect={() => onLanguageChange(code)}\n            >\n              {label}\n            </DropdownMenu.Item>\n          ))}\n        </DropdownMenu.Content>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Root>\n  );\n}\n\n// ---------- Sub-menu variant (for embedding in user dropdown) ----------\n\nexport interface I18nSubMenuProps {\n  languages: I18nLanguage[];\n  currentLanguage: string;\n  onLanguageChange: (code: string) => void;\n  label?: string;\n}\n\n/**\n * A DropdownMenuSub component for embedding language selector\n * inside a Radix DropdownMenu (e.g. user avatar menu).\n * Must be rendered as a child of DropdownMenu.Group / DropdownMenu.Content.\n */\nexport function I18nSubMenu({\n  languages,\n  currentLanguage,\n  onLanguageChange,\n  label,\n}: I18nSubMenuProps) {\n  const locale = useMonkeysLocale();\n  const componentAttributes = useMonkeysComponentAttributes();\n  const fallbackLabel = locale.provided\n    ? locale.messages.toolbar.language.label\n    : '语言';\n  const currentLabel = languages.find((l) => l.code === currentLanguage)?.label ?? currentLanguage;\n\n  return (\n    <DropdownMenu.Sub>\n      <DropdownMenu.SubTrigger\n        {...componentAttributes}\n        className=\"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] data-[state=open]:bg-[hsl(var(--accent))]\"\n      >\n        <GlobeIcon className=\"h-4 w-4\" />\n        <span>{label ?? fallbackLabel}</span>\n        <span className=\"ml-auto text-xs text-[hsl(var(--muted-foreground))]\">{currentLabel}</span>\n      </DropdownMenu.SubTrigger>\n      <DropdownMenu.Portal>\n        <DropdownMenu.SubContent\n          className=\"z-50 min-w-[8rem] rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--popover))] p-1 text-[hsl(var(--popover-foreground))] shadow-md animate-in fade-in-0 zoom-in-95\"\n          sideOffset={8}\n        >\n          {languages.map(({ code, label: langLabel }) => (\n            <DropdownMenu.CheckboxItem\n              key={code}\n              checked={currentLanguage === code}\n              disabled={currentLanguage === code}\n              className={cn(\n                'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 pl-7 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n              )}\n              onCheckedChange={() => onLanguageChange(code)}\n            >\n              <DropdownMenu.ItemIndicator className=\"absolute left-2 inline-flex items-center justify-center\">\n                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M20 6 9 17l-5-5\"/></svg>\n              </DropdownMenu.ItemIndicator>\n              {langLabel}\n            </DropdownMenu.CheckboxItem>\n          ))}\n        </DropdownMenu.SubContent>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Sub>\n  );\n}\n"]}