{"version":3,"sources":["../../../src/components/capabilities/catalog.ts","../../../src/locale/en-US.ts","../../../src/locale/resolve-locale.ts","../../../src/provider/context.ts","../../../src/components/base/BasePortal.tsx","../../../src/components/base/internal/overlayPortal.tsx","../../../src/components/base/utils.ts","../../../src/components/base/theme.ts","../../../src/components/base/BaseDialog.tsx","../../../src/components/runtime/RenderNodeHost.tsx","../../../src/components/runtime/RenderTreeHost.tsx","../../../src/components/runtime/RenderTreeRuntimeHost.tsx","../../../src/components/base/BaseAccordion.tsx","../../../src/components/base/BaseBadge.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/BaseDescriptionList.tsx","../../../src/components/base/BaseEmptyState.tsx","../../../src/components/base/BaseField.tsx","../../../src/components/base/BaseFieldset.tsx","../../../src/components/base/BaseHeading.tsx","../../../src/components/base/BaseInput.tsx","../../../src/components/base/BaseInline.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/BaseMultiSelect.tsx","../../../src/components/base/BaseNotice.tsx","../../../src/components/base/BasePanel.tsx","../../../src/components/base/BasePagination.tsx","../../../src/components/base/BaseListFooter.tsx","../../../src/components/base/BaseSelect.tsx","../../../src/components/base/BaseSectionHeader.tsx","../../../src/components/base/BaseSegmentedControl.tsx","../../../src/components/base/BaseStack.tsx","../../../src/components/base/BaseSwitch.tsx","../../../src/components/base/BaseSystemState.tsx","../../../src/components/base/BaseTable.tsx","../../../src/components/base/BaseTabs.tsx","../../../src/components/base/BaseTextarea.tsx","../../../src/components/base/BaseTooltip.tsx","../../../src/components/base/BaseToolbar.tsx","../../../src/components/base/BaseAssetIcon.tsx","../../../src/components/capabilities/i18n.ts","../../../src/components/toast/index.tsx","../../../src/components/capabilities/CapabilityStatus.tsx","../../../src/components/capabilities/contracts.ts","../../../src/components/capabilities/CapabilityRuntimeHost.tsx","../../../src/components/capabilities/oneTimeValueDialog.tsx","../../../src/components/capabilities/paginationSchema.ts","../../../src/components/capabilities/entry.ts","../../../src/components/capabilities/choicePickerCatalog.ts","../../../src/components/capabilities/localizedDisplayValue.tsx","../../../src/components/capabilities/recordEditorOptions.ts","../../../src/components/workbench/OrderedSelection.tsx","../../../src/components/capabilities/orderedSelection.tsx","../../../src/components/capabilities/galleryPresentationSettings.ts","../../../src/components/workbench/RuntimeTerminalView.tsx","../../../src/components/capabilities/runtimeTerminal.tsx","../../../src/components/capabilities/tableMessageValue.ts","../../../src/components/capabilities/recordDetailCopyValue.tsx","../../../src/components/capabilities/typedDisplayCell.tsx","../../../src/components/capabilities/filePicker.tsx","../../../src/components/capabilities/numericSeries.tsx","../../../src/components/capabilities/summaryChart.tsx","../../../src/components/data-explorer/appearanceOptions.ts","../../../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/primitives/Badge.tsx","../../../src/components/primitives/internal/overlaySurface.ts","../../../src/components/primitives/InteractiveControls.tsx","../../../src/components/primitives/FormControls.tsx","../../../src/components/primitives/FloatingPopover.tsx","../../../src/components/primitives/Menus.tsx","../../../src/components/primitives/MediaPreview.tsx","../../../src/components/primitives/Overlays.tsx","../../../src/components/primitives/Popover.tsx","../../../src/components/primitives/Label.tsx","../../../src/components/primitives/Sheet.tsx","../../../src/components/primitives/Table.tsx","../../../src/components/data-explorer/DataExplorerCollectionFooter.tsx","../../../src/components/data-explorer/DataExplorerDetailField.tsx","../../../src/components/data-explorer/DataExplorerDetailSection.tsx","../../../src/components/data-explorer/DataExplorerDetailShell.tsx","../../../src/components/data-explorer/DataExplorerDraggableTree.tsx","../../../src/components/data-explorer/DataExplorerDisplayActionMenu.tsx","../../../src/components/data-explorer/DataExplorerDisplayMedia.tsx","../../../src/components/data-explorer/DataExplorerDisplayCard.tsx","../../../src/components/data-explorer/DataExplorerViewItemShell.tsx","../../../src/components/data-explorer/DataExplorerViewItem.tsx","../../../src/components/data-explorer/DataExplorerViewCollection.tsx","../../../src/components/data-explorer/DataExplorerPage.tsx","../../../src/components/data-explorer/DataExplorerRecordCard.tsx","../../../src/components/data-explorer/DataExplorerToolbarShell.tsx","../../../src/components/data-explorer/DataExplorerTreeShell.tsx","../../../src/components/data-explorer/DataExplorerViewTree.tsx","../../../src/components/data-explorer/DataExplorerViewShell.tsx","../../../src/components/capabilities/nativeAnalytics.tsx","../../../src/components/capabilities/ontologyMarkerEditor.tsx","../../../src/components/capabilities/ontologyManagement.tsx","../../../src/components/capabilities/featureColumnManager.tsx","../../../src/components/capabilities/neutralCatalog.ts","../../../src/components/capabilities/choicePicker.tsx","../../../src/components/capabilities/recordEditorNullToggle.tsx","../../../src/components/capabilities/recordEditorStringSelection.tsx","../../../src/components/workbench/workbenchGalleryUtils.tsx","../../../src/components/workbench/workbenchIconUtils.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/capabilities/dateTimeValue.ts","../../../src/components/capabilities/collectionActionPresentation.ts","../../../src/components/capabilities/GalleryFieldPresentation.tsx","../../../src/components/capabilities/recordEditorArraySorting.tsx","../../../src/components/capabilities/typed-secret-input.ts","../../../src/components/capabilities/recordEditorDraft.ts","../../../src/components/capabilities/recordEditorReadOnly.ts","../../../src/components/capabilities/recordEditorDraftPatch.ts","../../../src/components/capabilities/recordEditorDate.ts","../../../src/components/workbench/WorkbenchGallerySettings.tsx","../../../src/components/workbench/WorkbenchContentToolbar.tsx","../../../src/components/workbench/WorkbenchTableView.tsx","../../../src/components/capabilities/recordHistoryDag.tsx","../../../src/components/capabilities/neutralRenderers.tsx","../../../src/components/capabilities/runtime.ts","../../../src/components/capabilities/neutralRuntime.ts"],"names":["compileSdkDesignCapabilityCatalogArtifact","useState","useEffect","parts","appearance","jsx","BaseDialog","id","Fragment","forwardRef","RenderNodeHost","useRef","useMemo","compileRenderTree","useCallback","BaseAccordion","jsxs","BaseBadge","BaseButton","createContext","useContext","BaseCheckbox","invalid","BaseCode","BaseEmptyState","BaseField","useId","mergeAriaIds","resolveOptionalId","BaseFieldset","BaseHeading","createElement","BaseInput","BaseInline","assignRef","BaseLayout","BaseLayoutPane","BaseLayoutResizeHandle","BaseLayoutSplit","BaseSkeleton","BaseLoadingState","text","toDomId","BaseMultiSelect","selected","BasePagination","LoadingIcon","typeaheadResetDelay","getNextEnabledIndex","getBoundaryEnabledIndex","getOptionText","BaseSelect","BaseStack","BaseSwitch","BaseSystemState","assertBoolean","isRtl","setPointerCaptureIfAvailable","toCssSize","BaseTableContainer","BaseTable","BaseTableHeader","BaseTableBody","BaseTableFooter","BaseTableRow","BaseTableHead","BaseTableCell","BaseTableCaption","BaseTableEmpty","getDomIdFragments","BaseTabs","controlSizeClassNames","BaseTextarea","validateBoolean","isValidElement","BaseTooltip","BaseAssetIcon","attributes","props","sonnerToast","copy","canonicalContentHash","document","schemaRef","DeclarativeCapabilityAuthoringRegistrationSchema","row","safeCode","I18nTextSchema","properties","z","bytes","icon","object","errorCode","cn","emptyStyles","baseSlots","densitySlots","radiusSlots","borderSlots","backgroundSlots","presetDefaults","presetSlots","slotKeys","mergeSlots","mergeStyles","getPresetDefaults","DataExplorerButton","CheckIcon","DropdownMenu","ChevronDownIcon","DropdownMenu2","React","React2","Slot","TooltipPrimitive","React3","React4","offset","floatingOffset","Check","ChevronDown","React6","Dialog","DialogPrimitive","React7","React8","PopoverContent","Label","React9","DialogPrimitive2","React10","React11","hasContent","activeEntry","createPortal","DropdownMenu4","renderKeywords","ChevronIcon","MoreIcon","GripIcon","collectDefaultExpandedNodeIds","actionIcon","DropdownMenu5","JSON_SCHEMA_DIALECT","window","Loader2","ChevronRight","pagination","pageSize","stringArray","groupIndex","jsonSchema","changes","sort","strictIntent","Icon","X","Plus","Trash2","Copy","localizedLabelProperties","validId","Root","clamp","fallback","resolveLengthToPixels","getDefaultGalleryDetailLimit","getNormalizedGalleryBentoColumns","getNormalizedGalleryDetailLimit","summaryText","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","useSortable","CSS","compileTargetRenderModelValidator","value","option","projected","JsonObjectSchema","createRecordEditorDraft","recordEditorValuesEqual","applyRecordEditorDraft","useLayoutEffect","WorkbenchContentToolbar","defaultFormatLabel","stringValue","objectArray","resolveDataExplorerAppearance","SettingsIcon","TableIcon","Eye","HistoryLucide","pad","scalarValue","RefreshCw","Search","ChevronUp","Hash","ImageIcon","Type","Paperclip","Link2","Braces","Columns3","Children","navigation","recordEditorPathKey","RecordEditorPathSchema","completion","description","field","Pencil"],"mappings":"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","file":"index.mjs","sourcesContent":["import {\n  canonicalContentHash,\n  CapabilityManifestSchema,\n  DeclarativeCapabilityAuthoringRegistrationSchema,\n  type ProductContext,\n  ViewProviderDescriptorSchema,\n} from \"@inf-monkeys-tech/monkeys\";\nimport {\n  compileDesignCapabilityCatalogArtifact as compileSdkDesignCapabilityCatalogArtifact,\n  compileViewProviderRegistry,\n} from \"@inf-monkeys-tech/monkeys/runtime\";\n\nimport type {\n  CompileDesignCapabilityCatalogArtifactInput,\n  CompiledDesignCapabilityCatalog,\n  CompiledDesignCapabilityCatalogArtifact,\n  DesignCapabilityCatalogEntry,\n} from \"./contracts\";\n\nexport const DESIGN_CAPABILITY_CATALOG_SOURCE_REF =\n  \"monkeys.design.capabilities\";\nexport const DESIGN_CAPABILITY_CATALOG_REVISION = 105;\n\nconst EDITOR_CATEGORIES = new Set([\n  \"layout\",\n  \"navigation\",\n  \"data-view\",\n  \"data-editor\",\n  \"content\",\n  \"status\",\n  \"professional\",\n]);\n\nconst requireNonEmptyKey = (value: string, field: string) => {\n  if (!value.trim() || !value.includes(\".\")) {\n    throw new TypeError(`${field} must be a non-empty semantic i18n key.`);\n  }\n};\n\nconst sameVersion = (left: string | number | undefined, right: string) =>\n  left === undefined || String(left) === right;\n\nconst revisionRefKey = (reference: {\n  ownerRepo: string;\n  id: string;\n  revision: string | number;\n  contentHash: string;\n}) =>\n  `${reference.ownerRepo}:${reference.id}@${reference.revision}:${reference.contentHash}`;\n\nconst validateEntry = (\n  input: DesignCapabilityCatalogEntry,\n): DesignCapabilityCatalogEntry => {\n  const manifest = CapabilityManifestSchema.parse(input.manifest);\n  const provider = ViewProviderDescriptorSchema.parse(input.provider);\n  const declarativeRegistration =\n    DeclarativeCapabilityAuthoringRegistrationSchema.parse(\n      input.declarativeRegistration,\n    );\n  const editor = Object.freeze({\n    ...input.editor,\n    slots: Object.freeze([...input.editor.slots]),\n    ontologyCompatibility: Object.freeze(\n      input.editor.ontologyCompatibility.map((compatibility) =>\n        Object.freeze({ ...compatibility }),\n      ),\n    ),\n  });\n\n  requireNonEmptyKey(editor.labelKey, \"editor.labelKey\");\n  requireNonEmptyKey(editor.descriptionKey, \"editor.descriptionKey\");\n  if (\n    typeof editor.eligible !== \"boolean\" ||\n    editor.eligible !== declarativeRegistration.editorEligible ||\n    !EDITOR_CATEGORIES.has(editor.category)\n  ) {\n    throw new TypeError(\n      `Capability ${manifest.id} has invalid editor eligibility metadata.`,\n    );\n  }\n  if (provider.capabilityRef.id !== manifest.id) {\n    throw new TypeError(\n      `Provider ${provider.providerId} targets ${provider.capabilityRef.id}, not ${manifest.id}.`,\n    );\n  }\n  if (\n    declarativeRegistration.capabilityRevisionRef.id !== manifest.id ||\n    declarativeRegistration.capabilityRevisionRef.ownerRepo !==\n      manifest.ownerRepo ||\n    String(declarativeRegistration.capabilityRevisionRef.revision) !==\n      String(manifest.capabilityVersion)\n  ) {\n    throw new TypeError(\n      `Capability ${manifest.id} authoring registration does not pin its exact manifest identity.`,\n    );\n  }\n  if (\n    declarativeRegistration.providerRevisionRef.id !== provider.providerId ||\n    declarativeRegistration.providerRevisionRef.ownerRepo !==\n      provider.ownerRepo ||\n    String(declarativeRegistration.providerRevisionRef.revision) !==\n      String(provider.providerVersion)\n  ) {\n    throw new TypeError(\n      `Capability ${manifest.id} authoring registration does not pin its exact provider identity.`,\n    );\n  }\n  if (\n    declarativeRegistration.capabilityRevisionRef.contentHash !==\n      canonicalContentHash(manifest) ||\n    declarativeRegistration.providerRevisionRef.contentHash !==\n      canonicalContentHash(provider)\n  ) {\n    throw new TypeError(\n      `Capability ${manifest.id} authoring registration has stale capability or provider content hashes.`,\n    );\n  }\n  const { registrationRevisionRef, sourceContentHash, ...registrationSource } =\n    declarativeRegistration;\n  if (\n    sourceContentHash !== canonicalContentHash(registrationSource) ||\n    registrationRevisionRef.contentHash !== sourceContentHash\n  ) {\n    throw new TypeError(\n      `Capability ${manifest.id} authoring registration source hash is not exact.`,\n    );\n  }\n  const schemaDocuments = new Map(\n    declarativeRegistration.schemaDocuments.map((entry) => [\n      revisionRefKey(entry.schemaRevisionRef),\n      entry,\n    ]),\n  );\n  const requiredSchemaReferences = [\n    declarativeRegistration.propertySchemaRevisionRef,\n    ...(declarativeRegistration.uiSchemaRevisionRef\n      ? [declarativeRegistration.uiSchemaRevisionRef]\n      : []),\n    ...declarativeRegistration.inputPorts.map((port) => port.schemaRevisionRef),\n    ...declarativeRegistration.outputPorts.map(\n      (port) => port.schemaRevisionRef,\n    ),\n    ...declarativeRegistration.ontologyRequirements.map(\n      (requirement) => requirement.renderModelSchemaRevisionRef,\n    ),\n  ];\n  const requiredSchemaKeys = new Set(\n    requiredSchemaReferences.map(revisionRefKey),\n  );\n  if (\n    schemaDocuments.size !== declarativeRegistration.schemaDocuments.length ||\n    schemaDocuments.size !== requiredSchemaKeys.size\n  ) {\n    throw new TypeError(\n      `Capability ${manifest.id} authoring registration must publish one canonical document for each exact schema reference.`,\n    );\n  }\n  for (const reference of requiredSchemaReferences) {\n    const entry = schemaDocuments.get(revisionRefKey(reference));\n    if (!entry) {\n      throw new TypeError(\n        `Capability ${manifest.id} has no canonical document for schema ${reference.id}.`,\n      );\n    }\n    if (\n      entry.schemaRevisionRef.kind !== \"schema\" ||\n      entry.schemaRevisionRef.contentHash !==\n        canonicalContentHash(entry.document) ||\n      entry.document.$schema !==\n        \"https://json-schema.org/draft/2020-12/schema\" ||\n      entry.document.$id !== entry.schemaRevisionRef.id ||\n      typeof entry.document.type !== \"string\"\n    ) {\n      throw new TypeError(\n        `Capability ${manifest.id} schema ${reference.id} is not an exact canonical JSON Schema document.`,\n      );\n    }\n  }\n  if (\n    !sameVersion(provider.capabilityRef.version, manifest.capabilityVersion)\n  ) {\n    throw new TypeError(\n      `Provider ${provider.providerId} does not target capability version ${manifest.capabilityVersion}.`,\n    );\n  }\n\n  const binding = manifest.runtime.providerBindings.find(\n    ({ providerRef }) => providerRef.id === provider.providerId,\n  );\n  if (\n    !binding ||\n    !sameVersion(binding.providerRef.version, provider.providerVersion)\n  ) {\n    throw new TypeError(\n      `Capability ${manifest.id} does not explicitly bind provider ${provider.providerId}@${provider.providerVersion}.`,\n    );\n  }\n  if (\n    provider.loading !== manifest.runtime.loading ||\n    provider.stateOwner !== manifest.runtime.stateOwner\n  ) {\n    throw new TypeError(\n      `Provider ${provider.providerId} lifecycle does not match capability ${manifest.id}.`,\n    );\n  }\n\n  const registrationInputPorts = new Map(\n    declarativeRegistration.inputPorts.map((port) => [port.name, port]),\n  );\n  const registrationOutputPorts = new Map(\n    declarativeRegistration.outputPorts.map((port) => [port.name, port]),\n  );\n  if (\n    registrationInputPorts.size !== manifest.ports.inputs.length ||\n    manifest.ports.inputs.some((port) => {\n      const registrationPort = registrationInputPorts.get(port.name);\n      return (\n        !registrationPort ||\n        registrationPort.required !== port.required ||\n        registrationPort.multiple !== port.multiple\n      );\n    }) ||\n    registrationOutputPorts.size !== manifest.ports.outputs.length ||\n    manifest.ports.outputs.some((port) => {\n      const registrationPort = registrationOutputPorts.get(port.name);\n      return (\n        !registrationPort ||\n        registrationPort.required !== port.required ||\n        registrationPort.multiple !== port.multiple\n      );\n    })\n  ) {\n    throw new TypeError(\n      `Capability ${manifest.id} authoring ports differ from its manifest ports.`,\n    );\n  }\n  if (\n    declarativeRegistration.allowedSideEffects.length !==\n      manifest.runtime.sideEffects.length ||\n    declarativeRegistration.allowedSideEffects.some(\n      (sideEffect) => !manifest.runtime.sideEffects.includes(sideEffect),\n    )\n  ) {\n    throw new TypeError(\n      `Capability ${manifest.id} authoring side effects differ from its manifest.`,\n    );\n  }\n  if (\n    provider.sideEffects.length !== manifest.runtime.sideEffects.length ||\n    provider.sideEffects.some(\n      (sideEffect) => !manifest.runtime.sideEffects.includes(sideEffect),\n    )\n  ) {\n    throw new TypeError(\n      `Provider ${provider.providerId} side effects differ from capability ${manifest.id}.`,\n    );\n  }\n  if (\n    provider.performance.budgetMs !== undefined &&\n    manifest.observability.performanceBudgetMs !== undefined &&\n    provider.performance.budgetMs !== manifest.observability.performanceBudgetMs\n  ) {\n    throw new TypeError(\n      `Provider ${provider.providerId} performance budget differs from capability ${manifest.id}.`,\n    );\n  }\n\n  const declaredSlots = new Set(manifest.placement.slots);\n  const uniqueEditorSlots = new Set(editor.slots);\n  if (uniqueEditorSlots.size !== editor.slots.length) {\n    throw new TypeError(\n      `Capability ${manifest.id} editor slots must be unique.`,\n    );\n  }\n  for (const slot of editor.slots) {\n    if (!declaredSlots.has(slot)) {\n      throw new TypeError(\n        `Capability ${manifest.id} editor slot ${slot} is absent from its manifest.`,\n      );\n    }\n  }\n  if (\n    declaredSlots.size !== uniqueEditorSlots.size ||\n    [...declaredSlots].some((slot) => !uniqueEditorSlots.has(slot))\n  ) {\n    throw new TypeError(\n      `Capability ${manifest.id} editor slots must exactly match its manifest slots.`,\n    );\n  }\n\n  const inputPorts = new Map(\n    manifest.ports.inputs.map((port) => [port.name, port.schemaRef]),\n  );\n  const compatibilityPorts = new Set<string>();\n  for (const compatibility of editor.ontologyCompatibility) {\n    if (compatibilityPorts.has(compatibility.inputPort)) {\n      throw new TypeError(\n        `Capability ${manifest.id} has duplicate Ontology compatibility for ${compatibility.inputPort}.`,\n      );\n    }\n    compatibilityPorts.add(compatibility.inputPort);\n    if (inputPorts.get(compatibility.inputPort) !== compatibility.schemaRef) {\n      throw new TypeError(\n        `Capability ${manifest.id} Ontology compatibility for ${compatibility.inputPort} is not backed by the declared input port schema.`,\n      );\n    }\n  }\n\n  return Object.freeze({\n    manifest,\n    provider,\n    editor,\n    declarativeRegistration,\n  });\n};\n\nexport const compileDesignCapabilityCatalog = (\n  inputs: readonly DesignCapabilityCatalogEntry[],\n): CompiledDesignCapabilityCatalog => {\n  const entries = Object.freeze(inputs.map(validateEntry));\n  const manifestsById = new Map<\n    string,\n    DesignCapabilityCatalogEntry[\"manifest\"]\n  >();\n  const entriesByProviderId = new Map<string, DesignCapabilityCatalogEntry>();\n  const groupedEntries = new Map<string, DesignCapabilityCatalogEntry[]>();\n\n  for (const entry of entries) {\n    const existingManifest = manifestsById.get(entry.manifest.id);\n    if (\n      existingManifest &&\n      JSON.stringify(existingManifest) !== JSON.stringify(entry.manifest)\n    ) {\n      throw new TypeError(\n        `Capability ${entry.manifest.id} has conflicting catalog manifests.`,\n      );\n    }\n    manifestsById.set(entry.manifest.id, entry.manifest);\n    if (entriesByProviderId.has(entry.provider.providerId)) {\n      throw new TypeError(`Duplicate provider ${entry.provider.providerId}.`);\n    }\n    entriesByProviderId.set(entry.provider.providerId, entry);\n    const capabilityEntries = groupedEntries.get(entry.manifest.id) ?? [];\n    capabilityEntries.push(entry);\n    groupedEntries.set(entry.manifest.id, capabilityEntries);\n  }\n\n  const manifests = Object.freeze([...manifestsById.values()]);\n  const providers = Object.freeze(entries.map(({ provider }) => provider));\n  const sdkRegistry = compileViewProviderRegistry({\n    capabilities: manifests,\n    providers,\n  });\n  const entriesByCapabilityId = new Map(\n    [...groupedEntries].map(([capabilityId, capabilityEntries]) => [\n      capabilityId,\n      Object.freeze([...capabilityEntries]),\n    ]),\n  );\n\n  const requireProvider = (providerId: string) => {\n    const entry = entriesByProviderId.get(providerId);\n    if (!entry)\n      throw new TypeError(`Unknown Design capability provider ${providerId}.`);\n    return entry;\n  };\n\n  return Object.freeze({\n    entries,\n    manifests,\n    providers,\n    entriesByProviderId,\n    entriesByCapabilityId,\n    requireProvider,\n    resolve(\n      capabilityId: string,\n      product: ProductContext,\n      preferredProviderId?: string,\n    ) {\n      const provider = sdkRegistry.resolveProvider(\n        capabilityId,\n        product,\n        preferredProviderId,\n      );\n      return requireProvider(provider.providerId);\n    },\n  });\n};\n\nexport const compileDesignCapabilityCatalogArtifact = ({\n  catalog,\n  sourceRef = DESIGN_CAPABILITY_CATALOG_SOURCE_REF,\n  revision = DESIGN_CAPABILITY_CATALOG_REVISION,\n}: CompileDesignCapabilityCatalogArtifactInput): CompiledDesignCapabilityCatalogArtifact =>\n  compileSdkDesignCapabilityCatalogArtifact({\n    sourceRef,\n    revision,\n    entries: catalog.entries.map(\n      ({ manifest, provider, declarativeRegistration }) => ({\n        manifest,\n        provider,\n        declarativeRegistration,\n      }),\n    ),\n  });\n","import type { MonkeysLocale } from \"./types\";\n\nexport const enUS = {\n  locale: \"en-US\",\n  messages: {\n    pagination: {\n      navigation: \"Pagination\",\n      first: \"First\",\n      previous: \"Previous\",\n      next: \"Next\",\n      last: \"Last\",\n      page: ({ page, pageCount }) => `Page ${page} of ${pageCount}`,\n      currentPage: ({ page, pageCount }) =>\n        `Page ${page} of ${pageCount}, current page`,\n      emptyResults: \"0 results\",\n      range: ({ start, end, total }) => `${start}-${end} of ${total}`,\n      selected: ({ count }) => `${count} selected`,\n      pageSize: \"Items per page\",\n      perLoad: \"Items per load\",\n      jumpToPage: \"Jump to page\",\n      pages: \"pages\",\n      clickToJump: \"Click to jump to a page\",\n    },\n    dialog: {\n      close: \"Close dialog\",\n    },\n    dropdownMenu: {\n      actions: \"Actions\",\n    },\n    loading: {\n      spinner: \"Loading\",\n    },\n    layout: {\n      resizePanels: \"Resize panels\",\n    },\n    steps: {\n      label: \"Progress\",\n      current: \"Current\",\n      completed: \"Completed\",\n      error: \"Error\",\n      disabled: \"Disabled\",\n    },\n    numberInput: {\n      increment: \"Increase value\",\n      decrement: \"Decrease value\",\n    },\n    passwordInput: {\n      showPassword: \"Show password\",\n      hidePassword: \"Hide password\",\n    },\n    multiSelect: {\n      placeholder: \"Select options\",\n      empty: \"No options\",\n      removeOption: ({ value }) => `Remove ${value}`,\n    },\n    table: {\n      dragColumn: ({ columnId }) => `Drag column ${columnId}`,\n      resizeColumn: ({ columnId }) => `Resize column ${columnId}`,\n      sortColumn: ({ columnId }) =>\n        columnId ? `Sort column ${columnId}` : \"Sort column\",\n      loadingRow: \"Loading table row\",\n    },\n    toolbar: {\n      theme: {\n        label: \"Appearance\",\n        toggle: \"Toggle theme\",\n        auto: \"Auto\",\n        light: \"Light\",\n        dark: \"Dark\",\n      },\n      language: {\n        label: \"Language\",\n        switch: \"Switch language\",\n      },\n    },\n    toast: {\n      errorTitle: \"Error\",\n      warningTitle: \"Warning\",\n      defaultErrorDescription: \"Something went wrong.\",\n      defaultWarningDescription: \"Please check and try again.\",\n    },\n    dataExplorer: {\n      viewTree: {\n        actions: \"More actions\",\n        expand: \"Expand\",\n        collapse: \"Collapse\",\n        loading: \"Loading...\",\n        empty: \"No views\",\n        error: \"Unable to load views\",\n      },\n    },\n    workbench: {\n      collection: {\n        label: \"Collection\",\n        loading: \"Loading items\",\n        empty: \"No items\",\n        loadError: \"Unable to load items\",\n        refreshError: \"Unable to refresh items\",\n        retry: \"Retry\",\n        loadingMore: \"Loading more items\",\n        permission: \"You do not have permission to view this content\",\n        offline: \"You appear to be offline\",\n        requestAccess: \"Request access\",\n      },\n      interactiveTable: {\n        columnActions: \"Column actions\",\n        freezeColumn: \"Freeze to left\",\n        freezeEndColumn: \"Freeze to right\",\n        unfreezeColumn: \"Unfreeze from left\",\n        unfreezeEndColumn: \"Unfreeze from right\",\n        unfreezeAllColumns: \"Unfreeze all columns\",\n        resetColumnWidth: \"Reset column width\",\n        frozenColumnTitle: \"Frozen column\",\n      },\n    },\n    agentWorkbench: {\n      label: \"Session activity\",\n      reasoning: \"Reasoning\",\n      plan: \"Plan\",\n      taskNoDetail: \"No additional details\",\n      modes: { chat: \"Chat\", work: \"Work\" },\n      composer: {\n        send: \"Send message\",\n        stop: \"Stop generating\",\n        queue: \"Queue message\",\n        attach: \"Add photos or files\",\n        voice: \"Start voice input\",\n        webSearch: \"Web search\",\n        chatMode: \"Chat mode\",\n        model: \"Model\",\n        reasoning: \"Reasoning effort\",\n        permissions: \"Permissions\",\n        removeAttachment: \"Remove attachment\",\n        editQueued: \"Edit queued message\",\n        deleteQueued: \"Delete queued message\",\n        moveUp: \"Move message up\",\n        moveDown: \"Move message down\",\n        queued: \"Queued messages\",\n        uploading: \"Uploading\",\n        uploadFailed: \"Upload failed\",\n        retryAttachment: \"Retry attachment upload\",\n        noModels: \"No models available\",\n        message: \"Message\",\n        attachmentOnly: \"Attachment\",\n        reasoningOptions: {\n          low: \"Low\",\n          medium: \"Medium\",\n          high: \"High\",\n          xhigh: \"Extra high\",\n        },\n        permissionOptions: {\n          \"approval-required\": \"Approval required\",\n          \"auto-approve\": \"Auto approve\",\n          \"full-access\": \"Full access\",\n        },\n      },\n      quickStart: {\n        label: \"Quick start\",\n        back: \"Back\",\n        addFile: \"Add file\",\n      },\n      tool: {\n        input: \"Input\",\n        output: \"Output\",\n        status: {\n          pending: \"Pending\",\n          running: \"Running\",\n          completed: \"Completed\",\n          failed: \"Error\",\n          denied: \"Denied\",\n        },\n      },\n      approval: {\n        approve: \"Approve\",\n        reject: \"Reject\",\n        approved: \"Approved\",\n        rejected: \"Rejected\",\n      },\n      artifact: {\n        pending: \"Preparing\",\n        ready: \"Ready\",\n        failed: \"Failed\",\n        open: ({ name }) => `Open ${name}`,\n      },\n      run: {\n        stopping: \"Stopping...\",\n        stoppedAfter: ({ duration }) => `You stopped after ${duration}`,\n      },\n      process: {\n        running: \"Working\",\n        queued: \"Queued\",\n        waitingApproval: \"Waiting for approval\",\n        failed: \"Failed\",\n        stopped: \"Stopped\",\n        processed: \"Processed\",\n        processedFor: ({ duration }) => `Worked for ${duration}`,\n        completedCount: ({ completed, total }) =>\n          `${completed}/${total} completed`,\n      },\n      artifactWorkspace: {\n        outputs: \"Outputs\",\n        sources: \"Sources\",\n        viewAll: \"View all\",\n        toggleSummary: \"Toggle files\",\n        tabs: \"Open files\",\n        closeTab: ({ name }) => `Close ${name}`,\n        closeWorkspace: \"Close workspace\",\n        download: ({ name }) => `Download ${name}`,\n        openExternal: ({ name }) => `Open ${name} in a new window`,\n        loading: \"Loading preview...\",\n        failed: \"Preview unavailable\",\n        retry: \"Try again\",\n      },\n      usage: {\n        label: \"Context usage\",\n        context: ({ used, total }) => `${used} / ${total} tokens`,\n      },\n      navigation: {\n        search: \"Search agents and sessions\",\n        searchSessions: \"Search sessions\",\n        searchShortcut: \"Focus search\",\n        clearSearch: \"Clear search\",\n        tabsLabel: \"Agent workbench navigation\",\n        agents: \"Agents\",\n        sessions: \"Sessions\",\n        newAgent: \"New Agent\",\n        newSession: \"New Session\",\n        capabilities: \"Capabilities & Extensions\",\n        settings: \"Agent Settings\",\n        allAgents: \"All Agents\",\n        recentSessions: \"Recent Sessions\",\n        chat: \"Chat\",\n        work: \"Work\",\n        chats: \"Chats\",\n        builtIn: \"Built-in\",\n        noDescription: \"No description\",\n        loading: \"Loading...\",\n        emptyAgents: \"No agents yet\",\n        emptySessions: \"No sessions yet\",\n        noResults: \"No matching results\",\n        retry: \"Retry\",\n        pin: \"Pin\",\n        unpin: \"Unpin\",\n        rename: \"Rename\",\n        delete: \"Delete\",\n        actions: \"Actions\",\n        save: \"Save\",\n        cancel: \"Cancel\",\n        running: \"Running\",\n        completed: \"Completed\",\n        failed: \"Failed\",\n        contextUsage: ({ percent }) => `${percent}% context used`,\n      },\n      details: {\n        title: \"Task details\",\n        description: \"Summary and workspace activity\",\n        duration: \"Duration\",\n        updated: \"Updated\",\n        model: \"Model\",\n        mode: \"Mode\",\n        permissions: \"Permissions\",\n        tokenUsage: \"Token usage\",\n        summary: \"Summary\",\n        summaryEmpty: \"No summary is available yet.\",\n        summaryFailed: \"The summary could not be generated.\",\n        highlights: \"Highlights\",\n        pendingItems: \"Pending items\",\n        tabs: {\n          label: \"Task detail views\",\n          summary: \"Summary\",\n          workspace: \"Workspace\",\n        },\n        status: {\n          queued: \"Queued\",\n          running: \"Running\",\n          waiting_approval: \"Waiting for approval\",\n          stopping: \"Stopping\",\n          stopped: \"Stopped\",\n          completed: \"Completed\",\n          failed: \"Failed\",\n        },\n        state: {\n          loading: {\n            title: \"Loading task details\",\n            description: \"Restoring the latest session activity.\",\n          },\n          empty: {\n            title: \"No task selected\",\n            description: \"Select a task to inspect its details.\",\n          },\n          error: {\n            title: \"Unable to load task details\",\n            description: \"Try again after the session is available.\",\n          },\n        },\n        actions: {\n          close: \"Close task details\",\n          copySummary: \"Copy summary\",\n          retry: \"Retry\",\n          retrySummary: \"Retry summary\",\n          resume: \"Resume\",\n          continueInNewTask: \"Continue in new task\",\n          editAndRerun: \"Edit and rerun\",\n          export: \"Export\",\n        },\n        workspace: {\n          diffs: \"Code changes\",\n          files: \"Files\",\n          terminals: \"Terminals\",\n          tests: \"Tests\",\n          artifacts: \"Artifacts\",\n          exitCode: ({ code }) => `Exit code ${code}`,\n          diffStatus: {\n            added: \"Added\",\n            modified: \"Modified\",\n            deleted: \"Deleted\",\n            renamed: \"Renamed\",\n          },\n          fileOperation: { upsert: \"Updated\", delete: \"Deleted\" },\n        },\n      },\n    },\n  },\n} satisfies MonkeysLocale;\n","import { enUS } from './en-US';\nimport type {\n  MonkeysBuiltInLocaleId,\n  MonkeysLocale,\n  MonkeysLocaleInput,\n  MonkeysLocaleMessages,\n  MonkeysLocaleMessagesOverride,\n  MonkeysResolvedLocale,\n} from './types';\nimport { zhCN } from './zh-CN';\n\nconst BUILT_IN_LOCALES: Record<MonkeysBuiltInLocaleId, MonkeysLocale> = {\n  'en-US': enUS,\n  'zh-CN': zhCN,\n};\n\nfunction normalizeLocaleId(locale: unknown): string {\n  if (typeof locale !== 'string' || !locale.trim()) {\n    throw new TypeError('Monkeys locale must be a non-empty BCP 47 string.');\n  }\n\n  try {\n    return Intl.getCanonicalLocales(locale)[0];\n  } catch {\n    throw new RangeError(\n      `Monkeys locale \"${locale}\" is not a valid BCP 47 identifier.`,\n    );\n  }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validateMessageOverride(\n  value: unknown,\n  schema: unknown,\n  path: string,\n) {\n  if (!isRecord(value) || !isRecord(schema)) {\n    throw new TypeError(`${path} must be an object.`);\n  }\n\n  for (const [key, candidate] of Object.entries(value)) {\n    if (candidate === undefined) continue;\n    if (!(key in schema)) {\n      throw new TypeError(`${path}.${key} is not a supported Monkeys message.`);\n    }\n\n    const expected = schema[key];\n    const candidatePath = `${path}.${key}`;\n    if (typeof expected === 'function') {\n      if (typeof candidate !== 'function') {\n        throw new TypeError(`${candidatePath} must be a function.`);\n      }\n    } else if (typeof expected === 'string') {\n      if (typeof candidate !== 'string') {\n        throw new TypeError(`${candidatePath} must be a string.`);\n      }\n    } else {\n      validateMessageOverride(candidate, expected, candidatePath);\n    }\n  }\n}\n\nfunction assertMessagesOverride(\n  value: unknown,\n  path: string,\n): asserts value is MonkeysLocaleMessagesOverride {\n  validateMessageOverride(value, enUS.messages, path);\n}\n\nfunction isBuiltInLocale(locale: string): locale is MonkeysBuiltInLocaleId {\n  return locale === 'en-US' || locale === 'zh-CN';\n}\n\nfunction normalizeLocaleInput(input: MonkeysLocaleInput | undefined): {\n  locale: string | undefined;\n  messages: MonkeysLocaleMessagesOverride | undefined;\n  hasExplicitLocale: boolean;\n} {\n  if (input === undefined) {\n    return {\n      locale: undefined,\n      messages: undefined,\n      hasExplicitLocale: false,\n    };\n  }\n\n  if (typeof input === 'string') {\n    const locale = normalizeLocaleId(input);\n    if (!isBuiltInLocale(locale)) {\n      throw new RangeError(\n        `Unsupported built-in Monkeys locale \"${locale}\". Provide a locale pack object for custom locales.`,\n      );\n    }\n    return { locale, messages: undefined, hasExplicitLocale: true };\n  }\n\n  if (!input || typeof input !== 'object' || Array.isArray(input)) {\n    throw new TypeError('Monkeys locale must be a locale id or locale pack object.');\n  }\n\n  const locale = normalizeLocaleId(input.locale);\n  assertMessagesOverride(input.messages, 'Monkeys locale messages');\n\n  return {\n    locale,\n    messages: input.messages,\n    hasExplicitLocale: true,\n  };\n}\n\nexport function mergeMonkeysLocaleMessages(\n  base: MonkeysLocaleMessages,\n  override?: MonkeysLocaleMessagesOverride,\n): MonkeysLocaleMessages {\n  if (!override) return base;\n\n  return {\n    pagination: { ...base.pagination, ...override.pagination },\n    dialog: { ...base.dialog, ...override.dialog },\n    dropdownMenu: { ...base.dropdownMenu, ...override.dropdownMenu },\n    loading: { ...base.loading, ...override.loading },\n    layout: { ...base.layout, ...override.layout },\n    steps: { ...base.steps, ...override.steps },\n    numberInput: { ...base.numberInput, ...override.numberInput },\n    passwordInput: { ...base.passwordInput, ...override.passwordInput },\n    multiSelect: { ...base.multiSelect, ...override.multiSelect },\n    table: { ...base.table, ...override.table },\n    toolbar: {\n      theme: { ...base.toolbar.theme, ...override.toolbar?.theme },\n      language: { ...base.toolbar.language, ...override.toolbar?.language },\n    },\n    toast: { ...base.toast, ...override.toast },\n    dataExplorer: {\n      viewTree: {\n        ...base.dataExplorer.viewTree,\n        ...override.dataExplorer?.viewTree,\n      },\n    },\n    workbench: {\n      collection: {\n        ...base.workbench.collection,\n        ...override.workbench?.collection,\n      },\n      interactiveTable: {\n        ...base.workbench.interactiveTable,\n        ...override.workbench?.interactiveTable,\n      },\n    },\n    agentWorkbench: {\n      ...base.agentWorkbench,\n      ...override.agentWorkbench,\n      modes: {\n        ...base.agentWorkbench.modes,\n        ...override.agentWorkbench?.modes,\n      },\n      composer: {\n        ...base.agentWorkbench.composer,\n        ...override.agentWorkbench?.composer,\n      },\n      quickStart: {\n        ...base.agentWorkbench.quickStart,\n        ...override.agentWorkbench?.quickStart,\n      },\n      tool: {\n        ...base.agentWorkbench.tool,\n        ...override.agentWorkbench?.tool,\n        status: {\n          ...base.agentWorkbench.tool.status,\n          ...override.agentWorkbench?.tool?.status,\n        },\n      },\n      approval: {\n        ...base.agentWorkbench.approval,\n        ...override.agentWorkbench?.approval,\n      },\n      artifact: {\n        ...base.agentWorkbench.artifact,\n        ...override.agentWorkbench?.artifact,\n      },\n      run: {\n        ...base.agentWorkbench.run,\n        ...override.agentWorkbench?.run,\n      },\n      process: {\n        ...base.agentWorkbench.process,\n        ...override.agentWorkbench?.process,\n      },\n      artifactWorkspace: {\n        ...base.agentWorkbench.artifactWorkspace,\n        ...override.agentWorkbench?.artifactWorkspace,\n      },\n      usage: {\n        ...base.agentWorkbench.usage,\n        ...override.agentWorkbench?.usage,\n      },\n      navigation: {\n        ...base.agentWorkbench.navigation,\n        ...override.agentWorkbench?.navigation,\n      },\n      details: {\n        ...base.agentWorkbench.details,\n        ...override.agentWorkbench?.details,\n        tabs: {\n          ...base.agentWorkbench.details.tabs,\n          ...override.agentWorkbench?.details?.tabs,\n        },\n        status: {\n          ...base.agentWorkbench.details.status,\n          ...override.agentWorkbench?.details?.status,\n        },\n        state: {\n          loading: {\n            ...base.agentWorkbench.details.state.loading,\n            ...override.agentWorkbench?.details?.state?.loading,\n          },\n          empty: {\n            ...base.agentWorkbench.details.state.empty,\n            ...override.agentWorkbench?.details?.state?.empty,\n          },\n          error: {\n            ...base.agentWorkbench.details.state.error,\n            ...override.agentWorkbench?.details?.state?.error,\n          },\n        },\n        actions: {\n          ...base.agentWorkbench.details.actions,\n          ...override.agentWorkbench?.details?.actions,\n        },\n        workspace: {\n          ...base.agentWorkbench.details.workspace,\n          ...override.agentWorkbench?.details?.workspace,\n          diffStatus: {\n            ...base.agentWorkbench.details.workspace.diffStatus,\n            ...override.agentWorkbench?.details?.workspace?.diffStatus,\n          },\n          fileOperation: {\n            ...base.agentWorkbench.details.workspace.fileOperation,\n            ...override.agentWorkbench?.details?.workspace?.fileOperation,\n          },\n        },\n      },\n    },\n  };\n}\n\nexport const defaultMonkeysLocale: MonkeysResolvedLocale = {\n  locale: enUS.locale,\n  messages: mergeMonkeysLocaleMessages(\n    enUS.messages as MonkeysLocaleMessages,\n  ),\n};\n\nexport function resolveMonkeysLocale(\n  input?: MonkeysLocaleInput,\n  override?: MonkeysLocaleMessagesOverride,\n  parent?: MonkeysResolvedLocale,\n): MonkeysResolvedLocale {\n  if (override !== undefined) {\n    assertMessagesOverride(override, 'MonkeysProvider messages');\n  }\n  const normalized = normalizeLocaleInput(input);\n  const locale = normalized.locale ?? parent?.locale ?? enUS.locale;\n  const builtInMessages = isBuiltInLocale(locale)\n    ? BUILT_IN_LOCALES[locale].messages\n    : undefined;\n  let messages = mergeMonkeysLocaleMessages(\n    enUS.messages as MonkeysLocaleMessages,\n    builtInMessages,\n  );\n\n  if (parent && (!normalized.hasExplicitLocale || parent.locale === locale)) {\n    messages = mergeMonkeysLocaleMessages(messages, parent.messages);\n  }\n\n  messages = mergeMonkeysLocaleMessages(messages, normalized.messages);\n  messages = mergeMonkeysLocaleMessages(messages, override);\n\n  return { locale, messages };\n}\n","import {\n  createContext,\n  useContext,\n  useMemo,\n  type Context,\n} from 'react';\n\nimport type { AssetIconResolver, AssetImageResolver } from '../components/base/BaseAssetIcon';\nimport type { BaseAppearance } from '../components/base/types';\nimport type { DataExplorerAppearance } from '../components/data-explorer/types';\nimport {\n  defaultMonkeysLocale,\n  type MonkeysLocaleMessages,\n  type MonkeysResolvedLocale,\n} from '../locale';\nimport type { CompiledThemeTokens } from '../theme-system';\n\nexport type MonkeysDirection = 'ltr' | 'rtl';\n\nexport interface MonkeysEnvironment {\n  getDocument?: () => Document | null;\n  getWindow?: () => Window | null;\n}\n\nexport type MonkeysPortalContainer =\n  | Element\n  | null\n  | (() => Element | null);\n\nexport interface MonkeysPortalOptions {\n  container?: MonkeysPortalContainer;\n  disabled?: boolean;\n}\n\nexport type MonkeysLoadingStateVariant = 'spinner' | 'skeleton';\nexport type MonkeysEmptyStateVariant = 'default' | 'compact';\nexport type MonkeysStatusStateDensity = 'compact' | 'default' | 'comfortable';\n\nexport type MonkeysListFooterPaginationMode = 'auto' | 'pages' | 'compact';\nexport type MonkeysListFooterAlignment = 'start' | 'end' | 'space-between';\n\nexport interface MonkeysListFooterConfig {\n  showTotal?: boolean;\n  showPageSize?: boolean;\n  pageSizeOptions?: number[];\n  paginationMode?: MonkeysListFooterPaginationMode;\n  alignment?: MonkeysListFooterAlignment;\n  density?: MonkeysStatusStateDensity;\n}\n\nexport interface MonkeysStatusStatesConfig {\n  loading?: { variant?: MonkeysLoadingStateVariant };\n  empty?: { variant?: MonkeysEmptyStateVariant };\n  error?: { showRetry?: boolean };\n  permission?: { showRequestAccess?: boolean };\n  density?: MonkeysStatusStateDensity;\n}\n\nexport interface MonkeysComponentAttributes {\n  dir?: MonkeysDirection;\n  'data-monkeys-direction'?: MonkeysDirection;\n  'data-monkeys-locale'?: string;\n  'data-monkeys-theme'?: string;\n  'data-monkeys-theme-mode'?: string;\n}\n\ninterface MonkeysLocaleContextValue extends MonkeysResolvedLocale {\n  provided: boolean;\n}\n\ninterface MonkeysThemeContextValue {\n  provided: boolean;\n  resolvedTheme?: CompiledThemeTokens;\n  themeId?: string;\n  baseAppearance?: BaseAppearance;\n  dataExplorerAppearance?: DataExplorerAppearance;\n  statusStates?: MonkeysStatusStatesConfig;\n  listFooter?: MonkeysListFooterConfig;\n}\n\ninterface MonkeysDirectionContextValue {\n  provided: boolean;\n  direction?: MonkeysDirection;\n}\n\ninterface MonkeysEnvironmentContextValue {\n  provided: boolean;\n  environment: MonkeysEnvironment;\n  portal: MonkeysPortalOptions;\n  iconResolver?: AssetIconResolver;\n  imageResolver?: AssetImageResolver;\n}\n\nconst EMPTY_ENVIRONMENT = Object.freeze({}) satisfies MonkeysEnvironment;\nconst EMPTY_PORTAL = Object.freeze({}) satisfies MonkeysPortalOptions;\n\ninterface MonkeysProviderContexts {\n  locale: Context<MonkeysLocaleContextValue>;\n  theme: Context<MonkeysThemeContextValue>;\n  direction: Context<MonkeysDirectionContextValue>;\n  environment: Context<MonkeysEnvironmentContextValue>;\n}\n\n// Every bundled public entry contains this module. Keep only the Context\n// identities in a realm-wide registry so root, provider, and component\n// subpaths interoperate in both CJS and ESM builds. Provider values remain in\n// React trees, so SSR requests are isolated. Bump the contract key only when\n// these Context value shapes become intentionally incompatible.\nconst MONKEYS_PROVIDER_CONTEXTS_KEY = Symbol.for(\n  '@inf-monkeys-tech/monkeys-design/provider-context@1',\n);\n\ntype MonkeysProviderContextHost = typeof globalThis & {\n  [MONKEYS_PROVIDER_CONTEXTS_KEY]?: MonkeysProviderContexts;\n};\n\nfunction createMonkeysProviderContexts(): MonkeysProviderContexts {\n  return Object.freeze({\n    locale: createContext<MonkeysLocaleContextValue>({\n      ...defaultMonkeysLocale,\n      provided: false,\n    }),\n    theme: createContext<MonkeysThemeContextValue>({\n      provided: false,\n    }),\n    direction: createContext<MonkeysDirectionContextValue>({\n      provided: false,\n    }),\n    environment: createContext<MonkeysEnvironmentContextValue>({\n      provided: false,\n      environment: EMPTY_ENVIRONMENT,\n      portal: EMPTY_PORTAL,\n    }),\n  });\n}\n\nfunction getMonkeysProviderContexts(): MonkeysProviderContexts {\n  const host = globalThis as MonkeysProviderContextHost;\n  const existing = host[MONKEYS_PROVIDER_CONTEXTS_KEY];\n  if (existing) return existing;\n\n  const contexts = createMonkeysProviderContexts();\n  Object.defineProperty(host, MONKEYS_PROVIDER_CONTEXTS_KEY, {\n    value: contexts,\n    enumerable: false,\n    configurable: false,\n    writable: false,\n  });\n  return contexts;\n}\n\nconst providerContexts = getMonkeysProviderContexts();\n\nexport const MonkeysLocaleContext = providerContexts.locale;\n\nexport const MonkeysThemeContext = providerContexts.theme;\n\nexport const MonkeysDirectionContext = providerContexts.direction;\n\nexport const MonkeysEnvironmentContext = providerContexts.environment;\n\nfunction mergeAppearance<T extends { slots?: object; styles?: object }>(\n  inherited: T | undefined,\n  explicit: T | undefined,\n): T | undefined {\n  if (explicit === undefined) return inherited;\n  if (inherited === undefined) return explicit;\n\n  return {\n    ...inherited,\n    ...explicit,\n    slots:\n      inherited.slots || explicit.slots\n        ? { ...inherited.slots, ...explicit.slots }\n        : undefined,\n    styles:\n      inherited.styles || explicit.styles\n        ? { ...inherited.styles, ...explicit.styles }\n        : undefined,\n  };\n}\n\nexport function useMonkeysLocale() {\n  try {\n    const context = useContext(MonkeysLocaleContext);\n    return context ?? { ...defaultMonkeysLocale, provided: false };\n  } catch {\n    return { ...defaultMonkeysLocale, provided: false };\n  }\n}\n\nexport function useMonkeysLocaleMessages(): MonkeysLocaleMessages {\n  return useContext(MonkeysLocaleContext).messages;\n}\n\nexport function useMonkeysResolvedTheme() {\n  return useContext(MonkeysThemeContext).resolvedTheme;\n}\n\nexport function useMonkeysBaseAppearance(\n  explicit?: BaseAppearance,\n): BaseAppearance | undefined {\n  const inherited = useContext(MonkeysThemeContext).baseAppearance;\n  return useMemo(\n    () => mergeAppearance(inherited, explicit),\n    [explicit, inherited],\n  );\n}\n\nexport function useMonkeysDataExplorerAppearance(\n  explicit?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n  const inherited = useContext(MonkeysThemeContext).dataExplorerAppearance;\n  return useMemo(\n    () => mergeAppearance(inherited, explicit),\n    [explicit, inherited],\n  );\n}\n\nexport function useMonkeysStatusStates(): MonkeysStatusStatesConfig {\n  return useContext(MonkeysThemeContext).statusStates ?? {};\n}\n\nexport function useMonkeysListFooter(): MonkeysListFooterConfig {\n  return useContext(MonkeysThemeContext).listFooter ?? {};\n}\n\nexport function useMonkeysDirection() {\n  return useContext(MonkeysDirectionContext).direction;\n}\n\nexport function useMonkeysEnvironment() {\n  return useContext(MonkeysEnvironmentContext).environment;\n}\n\nexport function useMonkeysPortalOptions() {\n  return useContext(MonkeysEnvironmentContext).portal;\n}\n\nexport function useMonkeysComponentAttributes(): MonkeysComponentAttributes {\n  const locale = useContext(MonkeysLocaleContext);\n  const theme = useContext(MonkeysThemeContext);\n  const direction = useContext(MonkeysDirectionContext);\n  const providerActive = locale.provided || theme.provided || direction.provided;\n\n  return useMemo(\n    () =>\n      providerActive\n        ? {\n            dir: direction.direction,\n            'data-monkeys-direction': direction.direction,\n            'data-monkeys-locale': locale.locale,\n            'data-monkeys-theme': theme.themeId,\n            'data-monkeys-theme-mode': theme.resolvedTheme?.colorMode,\n          }\n        : {},\n    [\n      direction.direction,\n      locale.locale,\n      providerActive,\n      theme.resolvedTheme?.colorMode,\n      theme.themeId,\n    ],\n  );\n}\n\nexport function useMonkeysAssetIconResolver(): AssetIconResolver | undefined {\n  return useContext(MonkeysEnvironmentContext).iconResolver;\n}\nexport function useMonkeysAssetImageResolver(): AssetImageResolver | undefined {\n  return useContext(MonkeysEnvironmentContext).imageResolver;\n}\n","import { 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 type { ReactNode } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...parts: Array<string | false | null | undefined>) {\n  return twMerge(parts.filter(Boolean).join(' '));\n}\n\nexport function hasRenderableNode(node: ReactNode) {\n  return node !== undefined && node !== null && typeof node !== 'boolean';\n}\n\nexport function hasNonEmptyRenderableNode(node: ReactNode) {\n  if (typeof node === 'string') return node.trim().length > 0;\n  return hasRenderableNode(node);\n}\n","import type {\n  BaseAppearance,\n  BaseBackground,\n  BaseBorder,\n  BaseControlTone,\n  BaseDensity,\n  BaseHeadingSize,\n  BaseLayoutAlign,\n  BaseLayoutJustify,\n  BaseLayoutLength,\n  BaseListMarker,\n  BaseListSpacing,\n  BaseRadius,\n  BaseResolvedTheme,\n  BaseThemePresetId,\n  BaseThemeSlots,\n  BaseThemeStyles,\n  BaseTypographySize,\n  BaseTypographyTone,\n} from './types';\nimport { cn } from './utils';\n\ntype ResolvedSlots = Required<BaseThemeSlots>;\n\nconst emptyStyles: BaseThemeStyles = {};\n\nconst motionBase =\n  'motion-safe:transition motion-safe:duration-300 motion-safe:ease-out';\n\nconst motionInteractive =\n  'motion-safe:transition-all motion-safe:duration-300 motion-safe:ease-out';\n\nconst motionTransform =\n  'motion-safe:transition-transform motion-safe:duration-300 motion-safe:ease-out';\nconst tableScrollbarChrome = cn(\n  '[scrollbar-width:thin]',\n  '[scrollbar-color:hsl(var(--muted-foreground)/0.45)_transparent]',\n  '[&::-webkit-scrollbar]:h-2 [&::-webkit-scrollbar]:w-2',\n  '[&::-webkit-scrollbar-button]:hidden [&::-webkit-scrollbar-button]:h-0 [&::-webkit-scrollbar-button]:w-0 [&::-webkit-scrollbar-button]:bg-transparent',\n  '[&::-webkit-scrollbar-button:single-button]:hidden [&::-webkit-scrollbar-button:single-button]:h-0 [&::-webkit-scrollbar-button:single-button]:w-0',\n  '[&::-webkit-scrollbar-button:double-button]:hidden [&::-webkit-scrollbar-button:double-button]:h-0 [&::-webkit-scrollbar-button:double-button]:w-0',\n  '[&::-webkit-scrollbar-corner]:bg-transparent',\n  '[&::-webkit-scrollbar-track]:bg-transparent',\n  '[&:has(thead.sticky)::-webkit-scrollbar-track]:mt-[var(--base-table-header-height)]',\n  '[&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-muted-foreground/40',\n  'hover:[&::-webkit-scrollbar-thumb]:bg-muted-foreground/55',\n);\nconst tableStickyHeaderCells = cn(\n  '[&.sticky_th]:sticky [&.sticky_th]:top-0 [&.sticky_th]:z-[2]',\n  '[&.sticky_th]:bg-[var(--base-table-sticky-header-bg)]',\n  '[&.sticky_th]:shadow-[inset_0_-1px_0_var(--base-table-header-separator)]',\n);\n\nconst baseSlots: ResolvedSlots = {\n  buttonBase:\n    cn(\n      'group/button inline-flex min-w-0 items-center justify-center gap-2 rounded-md border px-3 text-sm font-medium focus-visible:outline-none',\n      'cursor-pointer disabled:!cursor-not-allowed',\n      motionInteractive,\n    ),\n  buttonDefault:\n    'border-border bg-background text-foreground hover:bg-accent/60',\n  buttonPrimary:\n    'border-primary/20 bg-primary/10 text-primary hover:bg-primary/15',\n  buttonSuccess:\n    'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-[hsl(var(--success,142_72%_29%))] hover:bg-[hsl(var(--success,142_72%_29%)_/_0.15)]',\n  buttonWarning:\n    'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))] hover:bg-[hsl(var(--warning,45_93%_47%)_/_0.15)]',\n  buttonDanger:\n    'border-destructive/20 bg-destructive/10 text-destructive-text hover:bg-destructive/15',\n  buttonMuted:\n    'border-border/60 bg-muted/45 text-muted-foreground hover:bg-muted/70 hover:text-foreground',\n  buttonActive: 'border-primary/35 bg-primary/10 text-primary',\n  buttonDisabled: '!cursor-not-allowed opacity-60',\n  buttonIconOnly: 'w-9 px-0',\n  buttonIcon:\n    'inline-flex h-4 w-4 shrink-0 items-center justify-center text-[inherit] [&_*]:!text-[inherit] [&_svg]:!stroke-current [&_svg_*]:!stroke-current',\n  buttonLabel: 'min-w-0 truncate',\n  badgeBase:\n    cn(\n      'inline-flex max-w-full items-center gap-1.5 rounded-full border px-2 py-0.5 text-xs font-medium',\n      motionBase,\n    ),\n  badgeDefault: 'border-border/60 bg-background text-foreground',\n  badgePrimary: 'border-primary/30 bg-primary/10 text-primary',\n  badgeSuccess: 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-[hsl(var(--success,142_72%_29%))]',\n  badgeWarning: 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))]',\n  badgeDanger: 'border-destructive/30 bg-destructive/10 text-destructive-text',\n  badgeMuted: 'border-border/60 bg-muted text-muted-foreground',\n  badgeIcon: 'inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center',\n  badgeLabel: 'min-w-0 truncate',\n  textRoot: 'min-w-0 break-words leading-6',\n  textSizeXs: 'text-xs',\n  textSizeSm: 'text-sm',\n  textSizeMd: 'text-base',\n  textSizeLg: 'text-lg',\n  textSizeXl: 'text-xl',\n  typographyToneDefault: 'text-foreground',\n  typographyToneMuted: 'text-muted-foreground',\n  typographyTonePrimary: 'text-primary',\n  typographyToneSuccess: 'text-emerald-700 dark:text-emerald-400',\n  typographyToneWarning: 'text-amber-700 dark:text-amber-400',\n  typographyToneDanger: 'text-destructive-text',\n  typographyToneInherit: 'text-inherit',\n  headingRoot: 'min-w-0 break-words font-semibold tracking-tight',\n  headingSizeXs: 'text-sm leading-5',\n  headingSizeSm: 'text-base leading-6',\n  headingSizeMd: 'text-lg leading-7',\n  headingSizeLg: 'text-xl leading-7',\n  headingSizeXl: 'text-2xl leading-8',\n  headingSize2xl: 'text-3xl leading-9',\n  linkRoot:\n    'inline break-words underline decoration-current/40 underline-offset-4 hover:decoration-current focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n  codeInline:\n    'rounded border border-border/70 bg-muted/60 px-1.5 py-0.5 font-mono text-[0.875em] leading-[1.45] text-foreground',\n  codeBlock:\n    'm-0 max-w-full overflow-x-auto rounded-md border border-border/70 bg-muted/60 p-4 text-foreground',\n  codeContent: 'font-mono text-sm leading-6',\n  kbdRoot:\n    'inline-flex min-h-5 items-center rounded border border-border bg-muted/70 px-1.5 font-mono text-[0.75em] font-medium leading-5 text-foreground shadow-[inset_0_-1px_0_hsl(var(--monkeys-color-border))]',\n  listRoot: 'm-0 min-w-0 list-outside break-words ps-5 text-foreground',\n  listSpacingCompact: '[&>li+li]:mt-1',\n  listSpacingDefault: '[&>li+li]:mt-2',\n  listSpacingRelaxed: '[&>li+li]:mt-3',\n  listMarkerNone: 'list-none ps-0',\n  listMarkerDisc: 'list-disc',\n  listMarkerCircle: 'list-[circle]',\n  listMarkerSquare: 'list-[square]',\n  listMarkerDecimal: 'list-decimal',\n  listMarkerLowerAlpha: 'list-[lower-alpha]',\n  listMarkerUpperAlpha: 'list-[upper-alpha]',\n  listItem: 'min-w-0 ps-1 leading-6 marker:text-muted-foreground',\n  stackRoot: 'flex min-w-0 flex-col',\n  inlineRoot: 'flex min-w-0 flex-row',\n  gridRoot: 'grid min-w-0',\n  containerRoot: 'mx-auto w-full min-w-0',\n  aspectRatioRoot:\n    'relative min-w-0 overflow-hidden [&>*]:h-full [&>*]:w-full',\n  spinnerRoot:\n    'inline-flex shrink-0 items-center justify-center text-current align-middle',\n  spinnerIndicator:\n    'h-5 w-5 rounded-full border-2 border-current border-r-transparent motion-safe:animate-spin motion-reduce:animate-none',\n  visuallyHiddenRoot: 'sr-only',\n  visuallyHiddenFocusable:\n    'focus:not-sr-only focus:fixed focus:left-4 focus:top-4 focus:z-[1000] focus:rounded-md focus:bg-background focus:px-4 focus:py-2 focus:text-foreground focus:shadow-lg focus:outline-none focus:ring-2 focus:ring-ring focus-within:not-sr-only focus-within:fixed focus-within:left-4 focus-within:top-4 focus-within:z-[1000] focus-within:rounded-md focus-within:bg-background focus-within:px-4 focus-within:py-2 focus-within:text-foreground focus-within:shadow-lg focus-within:ring-2 focus-within:ring-ring',\n  fieldsetRoot: 'min-w-0 border-0 p-0 text-foreground',\n  fieldsetLegend: 'min-w-0 text-sm font-semibold leading-6 text-foreground',\n  fieldsetDescription: 'mt-1 text-sm leading-5 text-muted-foreground',\n  fieldsetError: 'mt-1 text-sm leading-5 text-destructive-text',\n  fieldsetContent: 'mt-3 grid min-w-0 gap-3',\n  stepsRoot: 'm-0 min-w-0 list-none p-0 text-foreground',\n  stepsHorizontal:\n    'flex w-full max-w-full items-start overflow-x-auto pb-2',\n  stepsVertical: 'grid',\n  stepsItem: 'relative min-w-0',\n  stepsItemHorizontal: 'flex min-w-52 flex-1 items-start',\n  stepsItemVertical: 'pb-6 last:pb-0',\n  stepsTrigger:\n    'flex min-w-0 flex-1 items-start gap-3 rounded-md border-0 bg-transparent p-1 text-start text-inherit',\n  stepsTriggerInteractive:\n    'cursor-pointer hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n  stepsTriggerDisabled: '!cursor-not-allowed opacity-60',\n  stepsIndicator:\n    'relative z-[1] inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full border text-xs font-semibold',\n  stepsIndicatorPending: 'border-border bg-background text-muted-foreground',\n  stepsIndicatorCurrent: 'border-primary/50 bg-primary/10 text-primary',\n  stepsIndicatorCompleted:\n    'border-primary bg-primary text-primary-foreground',\n  stepsIndicatorError:\n    'border-destructive bg-destructive text-destructive-foreground',\n  stepsContent: 'grid min-w-0 gap-1 pt-0.5',\n  stepsLabel: 'min-w-0 break-words text-sm font-medium leading-5',\n  stepsDescription:\n    'min-w-0 break-words text-sm leading-5 text-muted-foreground',\n  stepsStatus: 'sr-only',\n  stepsConnector: 'shrink-0 bg-border',\n  stepsConnectorHorizontal: 'mt-3.5 h-px w-8',\n  stepsConnectorVertical:\n    'absolute bottom-0 top-8 start-3.5 w-px -translate-x-1/2',\n  stepsConnectorCompleted: 'bg-primary/60',\n  stepsConnectorError: 'bg-destructive/60',\n  scrollAreaViewport: 'min-h-0 min-w-0',\n  numberInputControl: 'tabular-nums',\n  numberInputStepControls:\n    'me-1 flex shrink-0 self-stretch overflow-hidden border-s border-border',\n  numberInputStepButton:\n    'flex min-h-6 w-7 cursor-pointer items-center justify-center border-0 bg-transparent px-1 text-xs leading-none text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:z-[1] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-40',\n  passwordInputControl: 'pe-2',\n  passwordInputToggle:\n    'me-1 inline-flex min-h-7 shrink-0 cursor-pointer items-center justify-center rounded px-2 text-xs font-medium text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-40',\n  inputGroupRoot:\n    cn(\n      'relative flex min-w-0 items-stretch overflow-hidden rounded-md border border-border bg-background text-foreground focus-within:border-primary/50 focus-within:ring-2 focus-within:ring-ring/30',\n      motionBase,\n    ),\n  inputGroupInvalid:\n    'border-destructive/55 focus-within:border-destructive/70 focus-within:ring-destructive/25',\n  inputGroupDisabled: '!cursor-not-allowed bg-muted/35',\n  inputGroupContent:\n    'flex min-w-0 flex-1 items-stretch [&>*]:min-w-0',\n  inputGroupStartElement:\n    'inline-flex shrink-0 items-center justify-center ps-3 pe-1 text-foreground/75',\n  inputGroupEndElement:\n    'inline-flex shrink-0 items-center justify-center ps-1 pe-3 text-foreground/75',\n  inputGroupStartAddon:\n    'inline-flex max-w-[min(40%,16rem)] shrink-0 items-center overflow-hidden border-e border-border bg-muted/60 px-3 text-sm text-foreground/75 text-ellipsis whitespace-nowrap [&>*]:min-w-0',\n  inputGroupEndAddon:\n    'inline-flex max-w-[min(40%,16rem)] shrink-0 items-center overflow-hidden border-s border-border bg-muted/60 px-3 text-sm text-foreground/75 text-ellipsis whitespace-nowrap [&>*]:min-w-0',\n  panelRoot:\n    cn(\n      'group relative flex min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background',\n      motionInteractive,\n    ),\n  panelInteractive:\n    'cursor-pointer hover:shadow-md',\n  panelSelected: 'border-primary/45 bg-primary/5',\n  panelDisabled: '!cursor-not-allowed opacity-60',\n  panelMedia:\n    'shrink-0 overflow-hidden',\n  panelHeader: 'min-w-0 p-4',\n  panelTitle: 'min-w-0 truncate text-sm font-semibold leading-none text-foreground',\n  panelDescription: 'mt-1 text-sm leading-5 text-foreground/75',\n  panelBody: 'min-w-0 px-4 pb-4 text-sm text-foreground',\n  panelBodyStandalone: 'pt-4',\n  panelFooter: 'shrink-0 border-t border-border/60 px-4 py-3',\n  stateRoot:\n    cn(\n      'flex min-h-48 flex-col items-center justify-center rounded-lg border border-border/70 bg-background px-6 py-10 text-center',\n      motionBase,\n    ),\n  stateIcon:\n    'mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted text-muted-foreground motion-safe:animate-in motion-safe:fade-in',\n  stateTitle: 'text-sm font-semibold text-foreground',\n  stateDescription: 'mt-2 max-w-md text-sm leading-6 text-muted-foreground',\n  stateActions: 'mt-5 flex flex-wrap items-center justify-center gap-2',\n  loadingSpinner:\n    'h-5 w-5 motion-safe:animate-spin motion-reduce:animate-none',\n  fieldRoot: 'grid min-w-0 gap-2',\n  fieldLabelRow: 'flex min-w-0 items-center justify-between gap-3',\n  fieldLabel: 'min-w-0 text-sm font-medium leading-none text-foreground',\n  fieldRequired: 'text-destructive-text',\n  fieldDescription: 'text-sm leading-5 text-muted-foreground',\n  fieldMessage: 'text-sm leading-5 text-muted-foreground',\n  fieldControl: 'min-w-0',\n  controlWrapper:\n    cn(\n      'relative flex min-w-0 items-center rounded-md border border-border bg-background text-foreground focus-within:border-primary/35',\n      motionBase,\n    ),\n  controlBase:\n    'min-w-0 flex-1 bg-transparent px-3 text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:!cursor-not-allowed',\n  controlInput: 'h-9',\n  controlTextarea: 'min-h-24 resize-y py-2 leading-6',\n  controlSelect: 'h-9 cursor-pointer appearance-none pr-9 disabled:!cursor-not-allowed',\n  controlIcon:\n    'pointer-events-none ml-3 inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n  controlTrailing:\n    'mr-3 inline-flex shrink-0 items-center justify-center text-muted-foreground',\n  controlInvalid:\n    'border-destructive/45 focus-within:border-destructive/60',\n  controlDisabled: '!cursor-not-allowed opacity-60',\n  controlReadOnly: 'bg-muted/35',\n  selectChevron:\n    cn(\n      'pointer-events-none absolute right-3 top-1/2 h-2 w-2 -translate-y-1/2 rotate-45 border-b border-r border-current text-muted-foreground',\n      motionTransform,\n    ),\n  selectMenu:\n    'absolute left-0 right-0 top-[calc(100%+0.375rem)] z-50 max-h-60 origin-top overflow-auto rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n  selectOption:\n    cn(\n      'flex min-h-8 w-full min-w-0 cursor-pointer items-center rounded-sm px-2.5 py-1.5 text-left text-sm text-foreground',\n      motionInteractive,\n    ),\n  selectOptionActive: 'bg-accent text-accent-foreground',\n  selectOptionSelected: 'bg-primary/10 text-primary',\n  selectOptionDisabled: '!cursor-not-allowed opacity-50',\n  selectPlaceholder: 'text-muted-foreground',\n  selectNative: 'sr-only',\n  switchRoot: 'inline-flex min-w-0 cursor-pointer items-start gap-3',\n  switchInput: 'sr-only',\n  switchTrack:\n    cn(\n      'relative mt-0.5 inline-flex h-6 w-10 shrink-0 items-center rounded-full border border-border bg-muted focus-within:border-primary/35',\n      motionBase,\n    ),\n  switchThumb:\n    cn(\n      'h-4 w-4 translate-x-1 rounded-full bg-background shadow-sm',\n      motionTransform,\n    ),\n  switchChecked: 'border-primary/40 bg-primary/80 text-primary-foreground',\n  switchDisabled: '!cursor-not-allowed opacity-60',\n  switchContent: 'grid min-w-0 gap-1',\n  switchLabel: 'text-sm font-medium leading-none text-foreground',\n  switchDescription: 'text-sm leading-5 text-muted-foreground',\n  checkboxRoot: 'inline-flex min-w-0 cursor-pointer items-start gap-3',\n  checkboxInput: 'sr-only',\n  checkboxBox:\n    cn(\n      'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded border border-border bg-background text-primary focus-within:border-primary/40',\n      motionBase,\n    ),\n  checkboxBoxChecked: 'border-primary/45 bg-primary text-primary-foreground',\n  checkboxBoxInvalid: 'border-destructive/50',\n  checkboxIndicator: 'text-[11px] font-bold leading-none',\n  checkboxDisabled: '!cursor-not-allowed opacity-60',\n  checkboxContent: 'grid min-w-0 gap-1',\n  checkboxLabel: 'text-sm font-medium leading-none text-foreground',\n  checkboxDescription: 'text-sm leading-5 text-muted-foreground',\n  radioGroupRoot: 'grid min-w-0 gap-2',\n  radioOption:\n    cn(\n      'inline-flex min-w-0 cursor-pointer items-start gap-3 rounded-md border border-border/60 bg-background px-3 py-2 text-sm',\n      motionInteractive,\n      'hover:bg-muted/35',\n    ),\n  radioInput: 'sr-only',\n  radioMarker:\n    cn(\n      'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full border border-border bg-background text-primary focus-within:border-primary/40',\n      motionBase,\n    ),\n  radioMarkerChecked: 'border-primary/50 bg-primary/10',\n  radioIndicator: 'h-2 w-2 rounded-full bg-primary',\n  radioOptionDisabled: '!cursor-not-allowed opacity-60 hover:bg-background',\n  radioContent: 'grid min-w-0 gap-1',\n  radioLabel: 'text-sm font-medium leading-none text-foreground',\n  radioDescription: 'text-sm leading-5 text-muted-foreground',\n  dialogRoot: 'relative',\n  dialogTrigger: '',\n  dialogTriggerDisabled: '!cursor-not-allowed opacity-60',\n  dialogOverlay:\n    'fixed inset-0 z-50 bg-background/70 backdrop-blur-sm motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n  dialogContent:\n    'pointer-events-none fixed inset-0 z-50 flex min-h-0 items-center justify-center p-4',\n  dialogPanel:\n    cn(\n      'pointer-events-auto relative flex max-h-[min(85vh,720px)] w-full max-w-lg min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background text-foreground shadow-xl',\n      'motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n    ),\n  dialogHeader: 'grid min-w-0 gap-1 border-b border-border/60 px-5 py-4',\n  dialogTitle: 'min-w-0 pr-8 text-base font-semibold leading-6 text-foreground',\n  dialogDescription: 'text-sm leading-6 text-muted-foreground',\n  dialogBody: 'min-h-0 min-w-0 overflow-auto px-5 py-4 text-sm text-foreground',\n  dialogFooter:\n    'flex shrink-0 flex-wrap items-center justify-end gap-2 border-t border-border/60 px-5 py-4',\n  dialogClose:\n    cn(\n      'absolute right-3 top-3 inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-md text-muted-foreground hover:bg-muted/60 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n      motionInteractive,\n    ),\n  dropdownRoot: 'relative inline-flex min-w-0',\n  dropdownTrigger: '',\n  dropdownTriggerDisabled: '!cursor-not-allowed opacity-60',\n  dropdownMenu:\n    'z-50 min-w-48 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n  dropdownMenuTop: 'bottom-[calc(100%+0.375rem)] top-auto',\n  dropdownMenuEnd: 'left-auto right-0',\n  dropdownLabel:\n    'px-2.5 py-1.5 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground',\n  dropdownSeparator: 'my-1 h-px bg-border/70',\n  dropdownItem:\n    cn(\n      'flex min-w-0 cursor-pointer items-center gap-2 rounded-sm px-2.5 py-2 text-left text-sm text-foreground hover:bg-accent/60 focus:bg-accent/60 data-[highlighted]:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n      motionInteractive,\n    ),\n  dropdownItemDanger:\n    'text-destructive-text hover:bg-destructive/10 focus:bg-destructive/10 data-[highlighted]:bg-destructive/10',\n  dropdownItemDisabled:\n    '!cursor-not-allowed opacity-50 hover:bg-transparent focus:bg-transparent data-[highlighted]:bg-transparent',\n  dropdownItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n  dropdownItemContent: 'grid min-w-0 flex-1 gap-0.5',\n  dropdownItemLabel: 'min-w-0 truncate',\n  dropdownItemDescription:\n    'min-w-0 truncate text-xs leading-4 text-muted-foreground',\n  dropdownItemShortcut:\n    'ml-3 shrink-0 text-xs font-medium text-muted-foreground',\n  tooltipRoot: 'relative inline-flex min-w-0',\n  tooltipTrigger: 'inline-flex min-w-0',\n  tooltipContent:\n    'pointer-events-none z-50 max-w-xs rounded-md border border-border bg-popover px-2.5 py-1.5 text-xs leading-5 text-popover-foreground shadow-lg motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n  noticeBase:\n    cn(\n      'flex min-w-0 gap-3 rounded-lg border px-4 py-3 text-sm',\n      motionBase,\n      'motion-safe:animate-in motion-safe:fade-in',\n    ),\n  noticeDefault: 'border-border bg-background text-foreground',\n  noticePrimary: 'border-primary/25 bg-primary/10 text-primary',\n  noticeSuccess:\n    'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-foreground',\n  noticeWarning: 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))]',\n  noticeDanger:\n    'border-destructive/30 bg-destructive/10 text-destructive-text',\n  noticeMuted: 'border-border/60 bg-muted/35 text-muted-foreground',\n  noticeIcon:\n    'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center motion-safe:animate-in motion-safe:fade-in',\n  noticeTitle: 'font-semibold leading-5',\n  noticeDescription: 'leading-6',\n  noticeActions: 'mt-3 flex flex-wrap items-center gap-2',\n  dividerRoot: cn('shrink-0 border-border/70', motionBase),\n  dividerLabel:\n    'mx-3 shrink-0 text-xs font-medium uppercase tracking-[0.12em] text-muted-foreground motion-safe:animate-in motion-safe:fade-in',\n  sectionHeaderRoot:\n    'flex min-w-0 flex-wrap items-start justify-between gap-3 motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n  sectionHeaderContent: 'grid min-w-0 gap-1',\n  sectionHeaderEyebrow:\n    'text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground',\n  sectionHeaderTitle: 'text-base font-semibold leading-6 text-foreground',\n  sectionHeaderDescription: 'max-w-2xl text-sm leading-6 text-muted-foreground',\n  sectionHeaderActions: 'flex shrink-0 flex-wrap items-center gap-2',\n  tabsRoot: 'grid min-w-0 gap-3',\n  tabsList:\n    cn(\n      'inline-flex min-w-0 flex-wrap items-center gap-1 rounded-lg border border-border/70 bg-muted/30 p-1',\n      motionBase,\n    ),\n  tabsTrigger:\n    cn(\n      'inline-flex min-w-0 cursor-pointer items-center justify-center rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground hover:bg-background/70 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 focus-visible:ring-offset-1 motion-reduce:transition-none',\n      motionInteractive,\n    ),\n  tabsTriggerActive:\n    'bg-background text-foreground shadow-sm',\n  tabsTriggerDisabled: '!cursor-not-allowed opacity-50 hover:bg-transparent',\n  tabsPanel:\n    'min-w-0 rounded-lg border border-border/70 bg-background p-4 text-sm text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n  segmentedRoot:\n    cn(\n      'inline-flex min-w-0 items-center gap-1 rounded-lg border border-border/70 bg-muted/30 p-1',\n      motionBase,\n    ),\n  segmentedItem:\n    cn(\n      'inline-flex min-w-0 cursor-pointer items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground hover:bg-background/70 hover:text-foreground focus-visible:outline-none',\n      motionInteractive,\n    ),\n  segmentedItemActive:\n    'bg-background text-foreground shadow-sm',\n  segmentedItemDisabled: '!cursor-not-allowed opacity-50 hover:bg-transparent',\n  progressRoot: 'grid min-w-0 gap-2',\n  progressTrack:\n    'h-2 w-full overflow-hidden rounded-full bg-muted',\n  progressIndicator:\n    'h-full rounded-full bg-primary motion-safe:transition-[width] motion-safe:duration-500 motion-safe:ease-out',\n  progressLabelRow: 'flex min-w-0 items-center justify-between gap-3',\n  progressLabel: 'min-w-0 truncate text-sm font-medium text-foreground',\n  progressValue: 'shrink-0 text-xs font-medium text-muted-foreground',\n  skeletonRoot:\n    'relative overflow-hidden rounded-md bg-muted/70',\n  avatarRoot:\n    'relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full border border-border bg-muted text-sm font-semibold text-muted-foreground motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n  avatarImage:\n    'h-full w-full object-cover',\n  avatarFallback:\n    'flex h-full w-full items-center justify-center bg-muted text-foreground',\n  avatarStatus:\n    'absolute bottom-0 right-0 h-2.5 w-2.5 rounded-full border-2 border-background bg-muted-foreground motion-safe:animate-pulse',\n  avatarText: 'min-w-0 truncate text-sm font-medium text-foreground',\n  toolbarRoot:\n    cn(\n      'flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-lg border border-border/70 bg-background px-4 py-3',\n      motionBase,\n    ),\n  toolbarLeading: 'flex min-w-0 items-center gap-3',\n  toolbarTitle: 'min-w-0 truncate text-sm font-semibold text-foreground',\n  toolbarDescription: 'mt-0.5 text-sm leading-5 text-muted-foreground',\n  toolbarContent: 'min-w-0 flex-1',\n  toolbarActions: 'flex shrink-0 flex-wrap items-center gap-2',\n  breadcrumbRoot: 'min-w-0 text-sm text-muted-foreground',\n  breadcrumbList: 'flex min-w-0 flex-wrap items-center gap-1.5',\n  breadcrumbItem: 'inline-flex min-w-0 items-center gap-1.5',\n  breadcrumbLink:\n    'min-w-0 cursor-pointer truncate text-muted-foreground hover:text-foreground disabled:!cursor-not-allowed disabled:opacity-50 aria-disabled:!cursor-not-allowed aria-disabled:opacity-50 aria-disabled:hover:text-muted-foreground motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n  breadcrumbCurrent: 'min-w-0 truncate font-medium text-foreground',\n  breadcrumbSeparator: 'shrink-0 text-muted-foreground/70',\n  paginationRoot:\n    'flex min-w-0 flex-wrap items-center justify-between gap-3 text-sm',\n  paginationInfo: 'min-w-0 text-muted-foreground',\n  paginationControls: 'flex min-w-0 flex-wrap items-center justify-end gap-1.5',\n  paginationButton:\n    'inline-flex h-8 min-w-8 cursor-pointer items-center justify-center whitespace-nowrap rounded-md border border-border bg-background px-2.5 text-sm font-medium text-foreground hover:bg-accent/60 disabled:!cursor-not-allowed disabled:opacity-50 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n  paginationButtonDisabled: '!cursor-not-allowed opacity-50',\n  paginationPage:\n    'inline-flex h-8 min-w-8 cursor-default items-center justify-center rounded-md bg-muted/50 px-2.5 text-sm font-medium text-foreground hover:bg-muted/50',\n  paginationEllipsis:\n    'inline-flex h-8 min-w-6 items-center justify-center px-1 text-sm text-muted-foreground',\n  descriptionListRoot:\n    'grid min-w-0 gap-3 text-sm',\n  descriptionListItem:\n    'grid min-w-0 gap-1 rounded-md border border-border/60 bg-background px-3 py-2 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out hover:shadow-sm',\n  descriptionListTerm:\n    'min-w-0 truncate text-xs font-medium uppercase tracking-[0.08em] text-muted-foreground',\n  descriptionListValue: 'min-w-0 text-sm leading-6 text-foreground',\n  accordionRoot: 'grid min-w-0 gap-2',\n  accordionItem:\n    'overflow-hidden rounded-lg border border-border/70 bg-background motion-safe:transition motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n  accordionTrigger:\n    'flex w-full min-w-0 cursor-pointer items-center justify-between gap-3 px-4 py-3 text-start text-sm font-medium text-foreground hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-50 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n  accordionTriggerIcon:\n    cn(\n      'h-2 w-2 shrink-0 rotate-45 border-b border-r border-current text-muted-foreground',\n      motionTransform,\n      'motion-reduce:transition-none',\n    ),\n  accordionPanel:\n    'border-t border-border/60 px-4 py-3 text-sm leading-6 text-muted-foreground motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out motion-reduce:animate-none',\n  menuTrigger: 'inline-flex min-w-0',\n  menuContent:\n    'z-50 min-w-44 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n  menuLabel: 'px-2 py-1.5 text-xs font-medium text-muted-foreground',\n  menuSeparator: '-mx-1 my-1 h-px bg-border',\n  menuItem:\n    cn(\n      'relative flex min-h-8 min-w-0 cursor-pointer select-none items-center gap-2 rounded-sm px-2.5 py-1.5 text-sm text-foreground outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:!cursor-not-allowed data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground',\n      motionInteractive,\n    ),\n  menuItemDefault: 'text-foreground',\n  menuItemPrimary: 'text-primary focus:text-primary data-[highlighted]:text-primary',\n  menuItemSuccess:\n    'text-[hsl(var(--success,142_72%_29%))] focus:text-[hsl(var(--success,142_72%_29%))] data-[highlighted]:text-[hsl(var(--success,142_72%_29%))]',\n  menuItemWarning:\n    'text-[hsl(var(--warning-foreground,28_73%_26%))] focus:text-[hsl(var(--warning-foreground,28_73%_26%))] data-[highlighted]:text-[hsl(var(--warning-foreground,28_73%_26%))]',\n  menuItemDanger:\n    'text-destructive-text focus:text-destructive-text data-[highlighted]:text-destructive-text',\n  menuItemMuted:\n    'text-muted-foreground focus:text-foreground data-[highlighted]:text-foreground',\n  menuItemDisabled:\n    '!cursor-not-allowed opacity-50 data-[disabled]:pointer-events-none',\n  menuItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n  menuItemLabel: 'min-w-0 flex-1 truncate',\n  menuItemShortcut:\n    'ml-4 shrink-0 text-xs font-medium text-muted-foreground',\n  menuCheckboxIndicator:\n    'absolute left-2 inline-flex h-4 w-4 items-center justify-center text-current',\n  menuRadioIndicator:\n    'absolute left-2 inline-flex h-4 w-4 items-center justify-center text-current',\n  menuSubTrigger:\n    cn(\n      'relative flex min-h-8 min-w-0 cursor-pointer select-none items-center gap-2 rounded-sm px-2.5 py-1.5 text-sm text-foreground outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:!cursor-not-allowed data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n      motionInteractive,\n    ),\n  menuSubTriggerIcon:\n    'ml-auto inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n  menuSubContent:\n    'z-50 min-w-40 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n  tableContainer:\n    cn(\n      'relative isolate min-w-0 overflow-auto rounded-lg border border-border/70 bg-background/95 bg-clip-padding [scrollbar-gutter:stable]',\n      '[--base-table-header-height:2.75rem] [--base-table-split-scrollbar-gutter:0.75rem]',\n      '[--base-table-sticky-header-bg:hsl(var(--background))] [--base-table-header-separator:hsl(var(--border)_/_0.7)]',\n      tableScrollbarChrome,\n      motionBase,\n    ),\n  tableContainerFooterAttached: '!rounded-b-none !shadow-none',\n  tableRoot: 'w-full caption-bottom border-separate border-spacing-0 text-sm text-foreground',\n  tableCaption: 'mt-3 text-sm text-muted-foreground',\n  tableHeader:\n    cn(\n      'relative z-[2] bg-transparent [&_tr]:bg-transparent',\n      tableStickyHeaderCells,\n    ),\n  tableBody: '[&_tr:last-child>*]:border-b-0',\n  tableFooter: 'bg-muted/30 font-medium [&_tr>*]:border-t [&_tr>*]:border-border/70',\n  tableFooterBar:\n    cn(\n      'flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-lg border border-border/70 bg-muted/20 px-4 py-3 text-sm text-foreground shadow-none',\n      motionBase,\n    ),\n  tableFooterBarAttached:\n    '-mt-px rounded-t-none border-t border-border/70 shadow-none',\n  tableFooterBarLeading: 'flex min-w-0 items-center gap-2',\n  tableFooterBarContent: 'min-w-0 flex-1',\n  tableFooterBarActions: 'ms-auto flex shrink-0 flex-wrap items-center gap-2',\n  tableSplitRoot:\n    'grid w-full min-w-0 grid-cols-[minmax(0,1fr)] grid-rows-[auto_minmax(0,1fr)_auto] caption-bottom border-separate border-spacing-0 text-sm text-foreground',\n  tableSplitHeader:\n    'block w-full min-w-0 shrink-0 overflow-x-hidden overflow-y-hidden bg-transparent',\n  tableSplitBody:\n    cn(\n      'block min-h-0 w-full min-w-0 max-w-full justify-self-stretch overflow-auto [scrollbar-gutter:stable]',\n      tableScrollbarChrome,\n    ),\n  tableSplitFooter:\n    'block w-full min-w-0 shrink-0 overflow-x-hidden overflow-y-hidden',\n  tableSplitRow:\n    'grid w-max min-w-full [grid-template-columns:var(--base-table-column-template)]',\n  tableSplitHead: 'flex min-w-0 overflow-hidden',\n  tableSplitCell: 'block min-w-0 overflow-hidden [overflow-wrap:anywhere]',\n  tableRow:\n    cn(\n      '[&>*]:border-b [&>*]:border-border/60 data-[state=selected]:bg-primary/5 data-[state=selected]:[&>*]:bg-primary/5',\n      motionBase,\n    ),\n  tableRowInteractive:\n    'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.35)] hover:bg-[var(--base-table-row-hover-bg)] hover:[&>*]:bg-[var(--base-table-row-hover-bg)]',\n  tableRowSelected: 'bg-primary/5 [&>*]:bg-primary/5',\n  tableRowDisabled: '!cursor-not-allowed opacity-60',\n  tableHead:\n    'relative h-11 whitespace-nowrap px-3 py-2 text-left align-middle text-xs font-semibold text-muted-foreground shadow-[inset_0_-1px_0_var(--base-table-header-separator)]',\n  tableHeadContent: 'flex min-w-0 items-center justify-between gap-2',\n  tableHeadMain: 'flex min-w-0 items-center gap-2',\n  tableHeadIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n  tableHeadText: 'grid min-w-0 gap-0.5',\n  tableHeadLabel: 'min-w-0 truncate text-xs font-semibold leading-4 text-foreground',\n  tableHeadDescription: 'min-w-0 truncate text-[11px] font-normal leading-4 text-muted-foreground',\n  tableHeadMeta: 'shrink-0 text-[11px] font-medium text-muted-foreground',\n  tableHeadActions: 'flex shrink-0 items-center gap-1',\n  tableHeadSortButton:\n    cn(\n      'inline-flex min-w-0 cursor-pointer items-center gap-1 rounded-sm text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-60',\n      motionBase,\n    ),\n  tableHeadSortIcon:\n    cn(\n      'inline-flex h-3 w-3 shrink-0 items-center justify-center text-muted-foreground',\n      motionTransform,\n    ),\n  tableHeadDragHandle:\n    cn(\n      'inline-flex h-5 w-4 shrink-0 cursor-grab items-center justify-center rounded-sm text-muted-foreground hover:bg-muted active:cursor-grabbing focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-50',\n      motionBase,\n    ),\n  tableHeadResizeHandle:\n    cn(\n      'absolute end-0 top-1/2 h-7 w-2 -translate-y-1/2 cursor-col-resize touch-none rounded-sm after:absolute after:start-1/2 after:top-1/2 after:h-5 after:w-px after:-translate-x-1/2 after:-translate-y-1/2 after:bg-border hover:after:bg-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-50',\n      motionBase,\n    ),\n  tableCell: 'min-w-0 px-3 py-2 align-middle text-sm text-foreground [overflow-wrap:anywhere]',\n  tableCellAlignCenter: 'text-center',\n  tableCellAlignRight: 'text-right',\n  tableEmptyRow: '[&>*]:border-b [&>*]:border-border/60',\n  tableEmptyCell: 'px-4 py-10 text-center',\n  tableEmptyContent: 'mx-auto flex max-w-md flex-col items-center justify-center text-center',\n  tableEmptyIcon:\n    'mb-3 flex h-10 w-10 items-center justify-center rounded-full bg-muted text-muted-foreground',\n  tableEmptyTitle: 'text-sm font-semibold text-foreground',\n  tableEmptyDescription: 'mt-1 text-sm leading-6 text-muted-foreground',\n  tableEmptyActions: 'mt-4 flex flex-wrap items-center justify-center gap-2',\n  tableLoadingRow: '[&>*]:border-b [&>*]:border-border/60',\n  tableLoadingCell: 'px-3 py-2',\n  tableLoadingSkeleton: 'h-4 w-full rounded-md bg-muted/70',\n  layoutRoot:\n    cn(\n      'grid min-w-0 overflow-hidden grid-rows-[auto_minmax(0,1fr)_auto] gap-3 rounded-lg border border-border/70 bg-background p-3 text-foreground',\n      motionBase,\n    ),\n  layoutRootFull: 'h-full min-h-0',\n  layoutHeader: 'min-w-0',\n  layoutBody: 'grid min-h-0 min-w-0 overflow-hidden gap-3',\n  layoutSidebar: 'min-h-0 min-w-0 overflow-hidden',\n  layoutMain: 'min-h-0 min-w-0 overflow-hidden',\n  layoutAside: 'min-h-0 min-w-0 overflow-hidden',\n  layoutFooter: 'min-w-0',\n  layoutPane:\n    cn(\n      'h-full max-h-full min-h-0 min-w-0 overflow-hidden rounded-lg bg-background text-foreground',\n      motionBase,\n    ),\n  layoutPaneScrollable: 'overflow-auto',\n  layoutPaneBordered: 'border border-border/70',\n  layoutPaneMuted: 'bg-muted/25',\n  layoutPaneSoft: 'bg-background/95 shadow-sm',\n  layoutPaneTransparent: 'bg-transparent shadow-none',\n  layoutSplitRoot: 'grid min-h-0 min-w-0 overflow-hidden',\n  layoutSplitHorizontal: 'grid-flow-col',\n  layoutSplitVertical: 'grid-flow-row',\n  layoutSplitPane: 'min-h-0 min-w-0 overflow-hidden',\n  layoutSplitPrimary: '',\n  layoutSplitSecondary: '',\n  layoutResizeHandle:\n    cn(\n      'group/resize relative z-10 flex shrink-0 items-center justify-center bg-transparent text-muted-foreground hover:bg-border/60 active:bg-border/70 focus-visible:bg-border/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n      motionInteractive,\n    ),\n  layoutResizeHandleHorizontal: 'w-2 cursor-col-resize',\n  layoutResizeHandleVertical: 'h-2 cursor-row-resize',\n  layoutResizeHandleDisabled: 'cursor-default opacity-60',\n  layoutResizeHandleIndicator:\n    'rounded-full bg-muted-foreground/45 group-hover/resize:bg-primary/70',\n};\n\nconst densitySlots: Record<BaseDensity, Partial<BaseThemeSlots>> = {\n  compact: {\n    buttonBase: 'h-8 px-2.5 text-xs',\n    buttonIconOnly: 'h-8 w-8 px-0',\n    badgeBase: 'px-1.5 py-0 text-[11px]',\n    panelHeader: 'p-3',\n    panelBody: 'px-3 pb-3 text-xs',\n    panelBodyStandalone: 'pt-3',\n    panelFooter: 'px-3 py-2',\n    stateRoot: 'min-h-36 px-4 py-7',\n    stateIcon: 'mb-3 h-10 w-10',\n    fieldRoot: 'gap-1.5',\n    fieldLabel: 'text-xs',\n    fieldDescription: 'text-xs leading-5',\n    fieldMessage: 'text-xs leading-5',\n    controlInput: 'h-8 text-xs',\n    controlTextarea: 'min-h-20 text-xs',\n    controlSelect: 'h-8 text-xs',\n    selectMenu: 'text-xs',\n    selectOption: 'min-h-7 px-2 py-1 text-xs',\n    switchTrack: 'h-5 w-9',\n    switchThumb: 'h-3.5 w-3.5',\n    checkboxBox: 'h-3.5 w-3.5',\n    checkboxLabel: 'text-xs',\n    checkboxDescription: 'text-xs leading-5',\n    radioOption: 'px-2 py-1.5 text-xs',\n    radioMarker: 'h-3.5 w-3.5',\n    radioIndicator: 'h-1.5 w-1.5',\n    radioLabel: 'text-xs',\n    radioDescription: 'text-xs leading-5',\n    dialogPanel: 'max-w-md',\n    dialogHeader: 'px-4 py-3',\n    dialogTitle: 'text-sm leading-5',\n    dialogDescription: 'text-xs leading-5',\n    dialogBody: 'px-4 py-3 text-xs',\n    dialogFooter: 'px-4 py-3',\n    dropdownMenu: 'min-w-44 text-xs',\n    dropdownItem: 'px-2 py-1.5 text-xs',\n    tooltipContent: 'text-[11px] leading-4',\n    noticeBase: 'px-3 py-2 text-xs',\n    dividerLabel: 'text-[11px]',\n    sectionHeaderRoot: 'gap-2',\n    sectionHeaderTitle: 'text-sm leading-5',\n    sectionHeaderDescription: 'text-xs leading-5',\n    tabsList: 'gap-0.5 p-0.5',\n    tabsTrigger: 'px-2 py-1 text-xs',\n    tabsPanel: 'p-3 text-xs',\n    segmentedRoot: 'gap-0.5 p-0.5',\n    segmentedItem: 'px-2 py-1 text-xs',\n    progressTrack: 'h-1.5',\n    avatarRoot: 'text-xs',\n    toolbarRoot: 'gap-2 px-3 py-2',\n    toolbarTitle: 'text-xs',\n    toolbarDescription: 'text-xs leading-5',\n    paginationButton: 'h-7 min-w-7 px-2 text-xs',\n    paginationPage: 'h-7 min-w-7 px-2 text-xs',\n    descriptionListRoot: 'gap-2 text-xs',\n    descriptionListItem: 'px-2 py-1.5',\n    descriptionListTerm: 'text-[11px]',\n    descriptionListValue: 'text-xs leading-5',\n    accordionTrigger: 'px-3 py-2 text-xs',\n    accordionPanel: 'px-3 py-2 text-xs leading-5',\n    menuContent: 'min-w-40 p-0.5 text-xs',\n    menuSubContent: 'min-w-36 p-0.5 text-xs',\n    menuLabel: 'px-2 py-1 text-[11px]',\n    menuItem: 'min-h-7 px-2 py-1 text-xs',\n    menuSubTrigger: 'min-h-7 px-2 py-1 text-xs',\n    menuItemShortcut: 'text-[11px]',\n    tableContainer: '[--base-table-header-height:2.25rem]',\n    tableHead: 'h-9 px-2 py-1.5 text-[11px]',\n    tableCell: 'px-2 py-1.5 text-xs',\n    tableHeadLabel: 'text-[11px]',\n    tableHeadDescription: 'text-[10px] leading-3',\n    tableLoadingCell: 'px-2 py-1.5',\n    layoutRoot: 'gap-2 p-2',\n    layoutBody: 'gap-2',\n    layoutPane: 'rounded-md text-xs',\n    layoutResizeHandleHorizontal: 'w-1.5',\n    layoutResizeHandleVertical: 'h-1.5',\n  },\n  default: {\n    buttonBase: 'h-9',\n  },\n  comfortable: {\n    buttonBase: 'h-10 px-3.5',\n    buttonIconOnly: 'h-10 w-10 px-0',\n    badgeBase: 'px-2.5 py-1',\n    panelHeader: 'p-5',\n    panelBody: 'px-5 pb-5',\n    panelBodyStandalone: 'pt-5',\n    panelFooter: 'px-5 py-3.5',\n    stateRoot: 'min-h-56 px-8 py-12',\n    stateIcon: 'mb-5 h-14 w-14',\n    fieldRoot: 'gap-2.5',\n    controlInput: 'h-10',\n    controlTextarea: 'min-h-28',\n    controlSelect: 'h-10',\n    selectMenu: 'p-1.5',\n    selectOption: 'min-h-9 px-3 py-2',\n    switchTrack: 'h-7 w-12',\n    switchThumb: 'h-5 w-5',\n    checkboxBox: 'h-5 w-5',\n    radioOption: 'px-4 py-3',\n    radioMarker: 'h-5 w-5',\n    radioIndicator: 'h-2.5 w-2.5',\n    dialogPanel: 'max-w-xl',\n    dialogHeader: 'px-6 py-5',\n    dialogBody: 'px-6 py-5',\n    dialogFooter: 'px-6 py-5',\n    dropdownMenu: 'min-w-56',\n    dropdownItem: 'px-3 py-2.5',\n    noticeBase: 'px-5 py-4',\n    sectionHeaderTitle: 'text-lg leading-7',\n    tabsTrigger: 'px-3.5 py-2',\n    tabsPanel: 'p-5',\n    segmentedItem: 'px-3.5 py-2',\n    progressTrack: 'h-2.5',\n    toolbarRoot: 'px-5 py-4',\n    paginationButton: 'h-9 min-w-9 px-3',\n    paginationPage: 'h-9 min-w-9 px-3',\n    descriptionListItem: 'px-4 py-3',\n    accordionTrigger: 'px-5 py-4',\n    accordionPanel: 'px-5 py-4',\n    menuContent: 'min-w-48 p-1.5',\n    menuSubContent: 'min-w-44 p-1.5',\n    menuItem: 'min-h-9 px-3 py-2',\n    menuSubTrigger: 'min-h-9 px-3 py-2',\n    tableContainer: '[--base-table-header-height:3rem]',\n    tableHead: 'h-12 px-4 py-3',\n    tableCell: 'px-4 py-3',\n    tableLoadingCell: 'px-4 py-3',\n    layoutRoot: 'gap-4 p-4',\n    layoutBody: 'gap-4',\n    layoutPane: 'rounded-xl',\n    layoutResizeHandleHorizontal: 'w-2.5',\n    layoutResizeHandleVertical: 'h-2.5',\n  },\n};\n\nconst radiusSlots: Record<BaseRadius, Partial<BaseThemeSlots>> = {\n  none: {\n    buttonBase: 'rounded-none',\n    badgeBase: 'rounded-none',\n    panelRoot: 'rounded-none',\n    stateRoot: 'rounded-none',\n    stateIcon: 'rounded-none',\n    controlWrapper: 'rounded-none',\n    selectMenu: 'rounded-none',\n    selectOption: 'rounded-none',\n    switchTrack: 'rounded-none',\n    switchThumb: 'rounded-none',\n    checkboxBox: 'rounded-none',\n    radioOption: 'rounded-none',\n    dialogPanel: 'rounded-none',\n    dialogClose: 'rounded-none',\n    dropdownMenu: 'rounded-none',\n    dropdownItem: 'rounded-none',\n    tooltipContent: 'rounded-none',\n    noticeBase: 'rounded-none',\n    tabsList: 'rounded-none',\n    tabsTrigger: 'rounded-none',\n    tabsPanel: 'rounded-none',\n    segmentedRoot: 'rounded-none',\n    segmentedItem: 'rounded-none',\n    progressTrack: 'rounded-none',\n    progressIndicator: 'rounded-none',\n    skeletonRoot: 'rounded-none',\n    avatarRoot: 'rounded-none',\n    avatarStatus: 'rounded-none',\n    toolbarRoot: 'rounded-none',\n    paginationButton: 'rounded-none',\n    paginationPage: 'rounded-none',\n    descriptionListItem: 'rounded-none',\n    accordionItem: 'rounded-none',\n    menuContent: 'rounded-none',\n    menuItem: 'rounded-none',\n    menuSubTrigger: 'rounded-none',\n    menuSubContent: 'rounded-none',\n    tableContainer: 'rounded-none',\n    tableEmptyIcon: 'rounded-none',\n    tableLoadingSkeleton: 'rounded-none',\n    layoutRoot: 'rounded-none',\n    layoutPane: 'rounded-none',\n  },\n  sm: {\n    buttonBase: 'rounded-sm',\n    badgeBase: 'rounded-sm',\n    panelRoot: 'rounded-sm',\n    stateRoot: 'rounded-sm',\n    stateIcon: 'rounded-sm',\n    controlWrapper: 'rounded-sm',\n    selectMenu: 'rounded-sm',\n    selectOption: 'rounded-sm',\n    switchTrack: 'rounded-sm',\n    switchThumb: 'rounded-sm',\n    checkboxBox: 'rounded-sm',\n    radioOption: 'rounded-sm',\n    dialogPanel: 'rounded-sm',\n    dialogClose: 'rounded-sm',\n    dropdownMenu: 'rounded-sm',\n    dropdownItem: 'rounded-sm',\n    tooltipContent: 'rounded-sm',\n    noticeBase: 'rounded-sm',\n    tabsList: 'rounded-sm',\n    tabsTrigger: 'rounded-sm',\n    tabsPanel: 'rounded-sm',\n    segmentedRoot: 'rounded-sm',\n    segmentedItem: 'rounded-sm',\n    progressTrack: 'rounded-sm',\n    progressIndicator: 'rounded-sm',\n    skeletonRoot: 'rounded-sm',\n    avatarRoot: 'rounded-sm',\n    avatarStatus: 'rounded-sm',\n    toolbarRoot: 'rounded-sm',\n    paginationButton: 'rounded-sm',\n    paginationPage: 'rounded-sm',\n    descriptionListItem: 'rounded-sm',\n    accordionItem: 'rounded-sm',\n    menuContent: 'rounded-sm',\n    menuItem: 'rounded-sm',\n    menuSubTrigger: 'rounded-sm',\n    menuSubContent: 'rounded-sm',\n    tableContainer: 'rounded-sm',\n    tableEmptyIcon: 'rounded-sm',\n    tableLoadingSkeleton: 'rounded-sm',\n    layoutRoot: 'rounded-sm',\n    layoutPane: 'rounded-sm',\n  },\n  md: {},\n  lg: {\n    buttonBase: 'rounded-lg',\n    badgeBase: 'rounded-lg',\n    panelRoot: 'rounded-xl',\n    stateRoot: 'rounded-xl',\n    stateIcon: 'rounded-xl',\n    controlWrapper: 'rounded-lg',\n    selectMenu: 'rounded-lg',\n    selectOption: 'rounded-md',\n    switchTrack: 'rounded-full',\n    switchThumb: 'rounded-full',\n    checkboxBox: 'rounded-md',\n    radioOption: 'rounded-xl',\n    dialogPanel: 'rounded-xl',\n    dialogClose: 'rounded-lg',\n    dropdownMenu: 'rounded-lg',\n    dropdownItem: 'rounded-md',\n    tooltipContent: 'rounded-md',\n    noticeBase: 'rounded-xl',\n    tabsList: 'rounded-xl',\n    tabsTrigger: 'rounded-lg',\n    tabsPanel: 'rounded-xl',\n    segmentedRoot: 'rounded-xl',\n    segmentedItem: 'rounded-lg',\n    skeletonRoot: 'rounded-lg',\n    toolbarRoot: 'rounded-xl',\n    descriptionListItem: 'rounded-lg',\n    accordionItem: 'rounded-xl',\n    menuContent: 'rounded-lg',\n    menuItem: 'rounded-md',\n    menuSubTrigger: 'rounded-md',\n    menuSubContent: 'rounded-lg',\n    tableContainer: 'rounded-xl',\n    tableEmptyIcon: 'rounded-xl',\n    tableLoadingSkeleton: 'rounded-lg',\n    layoutRoot: 'rounded-xl',\n    layoutPane: 'rounded-xl',\n  },\n  xl: {\n    buttonBase: 'rounded-xl',\n    badgeBase: 'rounded-xl',\n    panelRoot: 'rounded-2xl',\n    stateRoot: 'rounded-2xl',\n    stateIcon: 'rounded-2xl',\n    controlWrapper: 'rounded-xl',\n    selectMenu: 'rounded-xl',\n    selectOption: 'rounded-lg',\n    switchTrack: 'rounded-full',\n    switchThumb: 'rounded-full',\n    checkboxBox: 'rounded-lg',\n    radioOption: 'rounded-2xl',\n    dialogPanel: 'rounded-2xl',\n    dialogClose: 'rounded-xl',\n    dropdownMenu: 'rounded-xl',\n    dropdownItem: 'rounded-lg',\n    tooltipContent: 'rounded-lg',\n    noticeBase: 'rounded-2xl',\n    tabsList: 'rounded-2xl',\n    tabsTrigger: 'rounded-xl',\n    tabsPanel: 'rounded-2xl',\n    segmentedRoot: 'rounded-2xl',\n    segmentedItem: 'rounded-xl',\n    skeletonRoot: 'rounded-xl',\n    toolbarRoot: 'rounded-2xl',\n    paginationButton: 'rounded-xl',\n    paginationPage: 'rounded-xl',\n    descriptionListItem: 'rounded-xl',\n    accordionItem: 'rounded-2xl',\n    menuContent: 'rounded-xl',\n    menuItem: 'rounded-lg',\n    menuSubTrigger: 'rounded-lg',\n    menuSubContent: 'rounded-xl',\n    tableContainer: 'rounded-2xl',\n    tableEmptyIcon: 'rounded-2xl',\n    tableLoadingSkeleton: 'rounded-xl',\n    layoutRoot: 'rounded-2xl',\n    layoutPane: 'rounded-2xl',\n  },\n  full: {\n    buttonBase: 'rounded-full',\n    badgeBase: 'rounded-full',\n    panelRoot: 'rounded-2xl',\n    stateRoot: 'rounded-2xl',\n    stateIcon: 'rounded-full',\n    controlWrapper: 'rounded-full',\n    selectMenu: 'rounded-2xl',\n    selectOption: 'rounded-full',\n    switchTrack: 'rounded-full',\n    switchThumb: 'rounded-full',\n    checkboxBox: 'rounded-full',\n    radioOption: 'rounded-2xl',\n    dialogPanel: 'rounded-2xl',\n    dialogClose: 'rounded-full',\n    dropdownMenu: 'rounded-2xl',\n    dropdownItem: 'rounded-full',\n    tooltipContent: 'rounded-full',\n    noticeBase: 'rounded-2xl',\n    tabsList: 'rounded-full',\n    tabsTrigger: 'rounded-full',\n    tabsPanel: 'rounded-2xl',\n    segmentedRoot: 'rounded-full',\n    segmentedItem: 'rounded-full',\n    progressTrack: 'rounded-full',\n    progressIndicator: 'rounded-full',\n    skeletonRoot: 'rounded-full',\n    avatarRoot: 'rounded-full',\n    avatarStatus: 'rounded-full',\n    toolbarRoot: 'rounded-2xl',\n    paginationButton: 'rounded-full',\n    paginationPage: 'rounded-full',\n    descriptionListItem: 'rounded-2xl',\n    accordionItem: 'rounded-2xl',\n    menuContent: 'rounded-2xl',\n    menuItem: 'rounded-full',\n    menuSubTrigger: 'rounded-full',\n    menuSubContent: 'rounded-2xl',\n    tableContainer: 'rounded-2xl',\n    tableEmptyIcon: 'rounded-full',\n    tableLoadingSkeleton: 'rounded-full',\n    layoutRoot: 'rounded-2xl',\n    layoutPane: 'rounded-2xl',\n  },\n};\n\nconst borderSlots: Record<BaseBorder, Partial<BaseThemeSlots>> = {\n  none: {\n    buttonBase: 'border-transparent',\n    badgeBase: 'border-transparent',\n    panelRoot: 'border-transparent',\n    panelFooter: 'border-transparent',\n    stateRoot: 'border-transparent',\n    controlWrapper: 'border-transparent',\n    selectMenu: 'border-transparent',\n    switchTrack: 'border-transparent',\n    checkboxBox: 'border-transparent',\n    radioOption: 'border-transparent',\n    radioMarker: 'border-transparent',\n    dialogPanel: 'border-transparent',\n    dialogHeader: 'border-transparent',\n    dialogFooter: 'border-transparent',\n    dropdownMenu: 'border-transparent',\n    tooltipContent: 'border-transparent',\n    noticeBase: 'border-transparent',\n    dividerRoot: 'border-transparent',\n    tabsList: 'border-transparent',\n    tabsPanel: 'border-transparent',\n    segmentedRoot: 'border-transparent',\n    avatarRoot: 'border-transparent',\n    toolbarRoot: 'border-transparent',\n    paginationButton: 'border-transparent',\n    descriptionListItem: 'border-transparent',\n    accordionItem: 'border-transparent',\n    accordionPanel: 'border-transparent',\n    menuContent: 'border-transparent',\n    menuSeparator: 'bg-transparent',\n    menuSubContent: 'border-transparent',\n    tableContainer: 'border-transparent [--base-table-header-separator:transparent]',\n    tableHeader: 'border-transparent',\n    tableFooter: '[&_tr>*]:border-transparent',\n    tableFooterBar: 'border-transparent',\n    tableFooterBarAttached: 'border-t border-transparent',\n    tableRow: '[&>*]:border-transparent',\n    tableEmptyRow: '[&>*]:border-transparent',\n    tableLoadingRow: '[&>*]:border-transparent',\n    layoutRoot: 'border-transparent',\n    layoutPaneBordered: 'border-transparent',\n    layoutResizeHandle: 'bg-transparent hover:bg-transparent active:bg-transparent focus-visible:bg-transparent',\n  },\n  subtle: {\n    buttonDefault: 'border-border/60',\n    badgeDefault: 'border-border/60',\n    panelRoot: 'border-border/60',\n    panelFooter: 'border-border/60',\n    stateRoot: 'border-border/60',\n    controlWrapper: 'border-border/60',\n    selectMenu: 'border-border/60',\n    switchTrack: 'border-border/60',\n    checkboxBox: 'border-border/60',\n    radioOption: 'border-border/60',\n    radioMarker: 'border-border/60',\n    dialogPanel: 'border-border/60',\n    dialogHeader: 'border-border/60',\n    dialogFooter: 'border-border/60',\n    dropdownMenu: 'border-border/60',\n    tooltipContent: 'border-border/60',\n    noticeDefault: 'border-border/60',\n    dividerRoot: 'border-border/60',\n    tabsList: 'border-border/60',\n    tabsPanel: 'border-border/60',\n    segmentedRoot: 'border-border/60',\n    avatarRoot: 'border-border/60',\n    toolbarRoot: 'border-border/60',\n    paginationButton: 'border-border/60',\n    descriptionListItem: 'border-border/60',\n    accordionItem: 'border-border/60',\n    accordionPanel: 'border-border/60',\n    menuContent: 'border-border/60',\n    menuSeparator: 'bg-border/60',\n    menuSubContent: 'border-border/60',\n    tableContainer: 'border-border/60 [--base-table-header-separator:hsl(var(--border)_/_0.6)]',\n    tableHeader: 'border-border/60',\n    tableFooter: '[&_tr>*]:border-border/60',\n    tableFooterBar: 'border-border/60',\n    tableFooterBarAttached: 'border-t border-border/60',\n    tableRow: '[&>*]:border-border/50',\n    tableEmptyRow: '[&>*]:border-border/50',\n    tableLoadingRow: '[&>*]:border-border/50',\n    layoutRoot: 'border-border/60',\n    layoutPaneBordered: 'border-border/60',\n  },\n  solid: {},\n  strong: {\n    buttonDefault: 'border-foreground/20',\n    badgeDefault: 'border-foreground/20',\n    panelRoot: 'border-foreground/20',\n    panelFooter: 'border-foreground/20',\n    stateRoot: 'border-foreground/20',\n    controlWrapper: 'border-foreground/20',\n    selectMenu: 'border-foreground/20',\n    switchTrack: 'border-foreground/20',\n    checkboxBox: 'border-foreground/20',\n    radioOption: 'border-foreground/20',\n    radioMarker: 'border-foreground/20',\n    dialogPanel: 'border-foreground/20',\n    dialogHeader: 'border-foreground/15',\n    dialogFooter: 'border-foreground/15',\n    dropdownMenu: 'border-foreground/20',\n    tooltipContent: 'border-foreground/20',\n    noticeDefault: 'border-foreground/20',\n    dividerRoot: 'border-foreground/20',\n    tabsList: 'border-foreground/20',\n    tabsPanel: 'border-foreground/20',\n    segmentedRoot: 'border-foreground/20',\n    avatarRoot: 'border-foreground/20',\n    toolbarRoot: 'border-foreground/20',\n    paginationButton: 'border-foreground/20',\n    descriptionListItem: 'border-foreground/20',\n    accordionItem: 'border-foreground/20',\n    accordionPanel: 'border-foreground/20',\n    menuContent: 'border-foreground/20',\n    menuSeparator: 'bg-foreground/15',\n    menuSubContent: 'border-foreground/20',\n    tableContainer:\n      'border-foreground/20 [--base-table-header-separator:hsl(var(--foreground)_/_0.15)]',\n    tableHeader: 'border-foreground/20',\n    tableFooter: '[&_tr>*]:border-foreground/20',\n    tableFooterBar: 'border-foreground/20',\n    tableFooterBarAttached: 'border-t border-foreground/20',\n    tableRow: '[&>*]:border-foreground/15',\n    tableEmptyRow: '[&>*]:border-foreground/15',\n    tableLoadingRow: '[&>*]:border-foreground/15',\n    layoutRoot: 'border-foreground/20',\n    layoutPaneBordered: 'border-foreground/20',\n    layoutResizeHandle: 'hover:bg-foreground/15 active:bg-foreground/20 focus-visible:bg-foreground/15',\n  },\n};\n\nconst backgroundSlots: Record<BaseBackground, Partial<BaseThemeSlots>> = {\n  plain: {},\n  muted: {\n    buttonDefault: 'bg-muted/20 hover:bg-muted/45',\n    panelRoot: 'bg-card',\n    panelFooter: 'bg-muted/20',\n    stateRoot: 'bg-muted/20',\n    controlWrapper: 'bg-background',\n    selectMenu: 'bg-background',\n    selectOptionActive: 'bg-muted/70 text-foreground',\n    checkboxBox: 'bg-background',\n    radioOption: 'bg-card hover:bg-muted/45',\n    radioMarker: 'bg-background',\n    dialogPanel: 'bg-card',\n    dropdownMenu: 'bg-background',\n    dropdownItem: 'hover:bg-muted/60',\n    tooltipContent: 'bg-popover',\n    noticeDefault: 'bg-muted/20',\n    tabsList: 'bg-muted/35',\n    tabsTriggerActive: 'bg-background',\n    tabsPanel: 'bg-card',\n    segmentedRoot: 'bg-muted/35',\n    segmentedItemActive: 'bg-background',\n    progressTrack: 'bg-muted/60',\n    skeletonRoot: 'bg-muted',\n    toolbarRoot: 'bg-card',\n    paginationButton: 'bg-background hover:bg-muted/60',\n    paginationPage: 'bg-muted/60',\n    descriptionListItem: 'bg-card',\n    accordionItem: 'bg-card',\n    menuContent: 'bg-background',\n    menuItem: 'focus:bg-muted/70 data-[highlighted]:bg-muted/70',\n    menuSubTrigger:\n      'focus:bg-muted/70 data-[highlighted]:bg-muted/70 data-[state=open]:bg-muted/70',\n    menuSubContent: 'bg-background',\n    tableContainer: 'bg-background/95 [scrollbar-gutter:stable]',\n    tableFooter: 'bg-muted/35',\n    tableFooterBar: 'bg-muted/30 shadow-none',\n    tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.45)]',\n    tableLoadingSkeleton: 'bg-muted',\n    layoutRoot: 'bg-card',\n    layoutPane: 'bg-card',\n    layoutPaneMuted: 'bg-muted/35',\n    layoutResizeHandle: 'hover:bg-border/70 active:bg-border/80 focus-visible:bg-border/70',\n  },\n  soft: {\n    buttonDefault: 'bg-muted/30 hover:bg-muted/55',\n    panelRoot: 'bg-background/95 shadow-sm',\n    stateRoot: 'bg-background/95 shadow-sm',\n    controlWrapper: 'bg-background/95',\n    selectMenu: 'bg-background/95 shadow-xl',\n    selectOptionActive: 'bg-muted/60 text-foreground',\n    checkboxBox: 'bg-background/95',\n    radioOption: 'bg-background/95 shadow-sm hover:bg-muted/35',\n    radioMarker: 'bg-background/95',\n    dialogPanel: 'bg-background/95 shadow-xl',\n    dropdownMenu: 'bg-background/95 shadow-xl',\n    dropdownItem: 'hover:bg-muted/55',\n    tooltipContent: 'bg-popover shadow-xl',\n    noticeDefault: 'bg-background/95 shadow-sm',\n    tabsList: 'bg-background/60 shadow-sm',\n    tabsTriggerActive: 'bg-background',\n    tabsPanel: 'bg-background/95 shadow-sm',\n    segmentedRoot: 'bg-background/60 shadow-sm',\n    segmentedItemActive: 'bg-background',\n    skeletonRoot: 'bg-background/80',\n    toolbarRoot: 'bg-background/95 shadow-sm',\n    paginationButton: 'bg-background/95 hover:bg-muted/55',\n    descriptionListItem: 'bg-background/95 shadow-sm',\n    accordionItem: 'bg-background/95 shadow-sm',\n    menuContent: 'bg-background/95 shadow-xl',\n    menuItem: 'focus:bg-muted/60 data-[highlighted]:bg-muted/60',\n    menuSubTrigger:\n      'focus:bg-muted/60 data-[highlighted]:bg-muted/60 data-[state=open]:bg-muted/60',\n    menuSubContent: 'bg-background/95 shadow-xl',\n    tableContainer:\n      'bg-background/95 shadow-sm [scrollbar-gutter:stable]',\n    tableFooter: 'bg-muted/25',\n    tableFooterBar: 'bg-muted/25 shadow-none',\n    tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.35)]',\n    tableLoadingSkeleton: 'bg-muted/65',\n    layoutRoot: 'bg-background/95 shadow-sm',\n    layoutPane: 'bg-background/95 shadow-sm',\n    layoutPaneSoft: 'bg-background/95 shadow-md',\n  },\n  glass: {\n    buttonBase: 'backdrop-blur-md',\n    buttonDefault:\n      'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n    badgeDefault: 'border-white/10 bg-white/[0.08] text-foreground',\n    panelRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n    panelFooter: 'border-white/10 bg-white/[0.05]',\n    stateRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n    stateIcon: 'bg-white/10 text-foreground',\n    controlWrapper:\n      'border-white/10 bg-white/[0.08] text-foreground backdrop-blur-md',\n    selectMenu:\n      'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n    selectOption: 'text-foreground',\n    selectOptionActive: 'bg-white/[0.14] text-foreground',\n    selectOptionSelected: 'bg-white/[0.18] text-foreground',\n    switchTrack: 'border-white/10 bg-white/[0.12] backdrop-blur-md',\n    checkboxBox: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n    checkboxBoxChecked: 'border-white/20 bg-white/[0.22] text-foreground',\n    radioOption: 'border-white/10 bg-white/[0.06] backdrop-blur-md hover:bg-white/[0.10]',\n    radioMarker: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n    radioMarkerChecked: 'border-white/25 bg-white/[0.16]',\n    dialogOverlay: 'bg-background/45 backdrop-blur-md',\n    dialogPanel: 'border-white/10 bg-white/[0.08] shadow-2xl backdrop-blur-md',\n    dialogHeader: 'border-white/10',\n    dialogFooter: 'border-white/10',\n    dropdownMenu:\n      'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n    dropdownItem: 'text-foreground hover:bg-white/[0.14]',\n    tooltipContent:\n      'border-foreground/10 bg-background/15 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n    noticeDefault:\n      'border-white/10 bg-white/[0.08] text-foreground backdrop-blur-md',\n    dividerRoot: 'border-white/15',\n    tabsList: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n    tabsTrigger: 'text-muted-foreground hover:bg-white/[0.12] hover:text-foreground',\n    tabsTriggerActive: 'bg-white/[0.16] text-foreground shadow-none',\n    tabsPanel:\n      'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n    segmentedRoot: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n    segmentedItem: 'text-muted-foreground hover:bg-white/[0.12] hover:text-foreground',\n    segmentedItemActive: 'bg-white/[0.16] text-foreground shadow-none',\n    progressTrack: 'bg-white/[0.12]',\n    skeletonRoot: 'bg-white/[0.16]',\n    avatarRoot: 'border-white/10 bg-white/[0.12] text-foreground',\n    avatarFallback: 'bg-white/[0.12] text-foreground',\n    avatarStatus: 'border-background',\n    toolbarRoot:\n      'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n    paginationButton:\n      'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n    paginationPage: 'bg-white/[0.12] text-foreground',\n    descriptionListItem:\n      'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n    accordionItem:\n      'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n    accordionPanel: 'border-white/10',\n    menuContent:\n      'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n    menuSeparator: 'bg-white/10',\n    menuItem:\n      'text-foreground focus:bg-white/[0.14] focus:text-foreground data-[highlighted]:bg-white/[0.14] data-[highlighted]:text-foreground',\n    menuSubTrigger:\n      'text-foreground focus:bg-white/[0.14] focus:text-foreground data-[highlighted]:bg-white/[0.14] data-[highlighted]:text-foreground data-[state=open]:bg-white/[0.16]',\n    menuSubContent:\n      'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n    tableContainer:\n      'border-foreground/10 bg-background/[0.06] shadow-none backdrop-blur-md [scrollbar-gutter:stable] [--base-table-sticky-header-bg:hsl(var(--background)/0.94)] [--base-table-header-separator:hsl(var(--foreground)/0.24)]',\n    tableHeader: 'border-white/10',\n    tableFooter: 'bg-white/[0.05] [&_tr>*]:border-white/10',\n    tableFooterBar:\n      'border-white/10 bg-white/[0.05] shadow-none backdrop-blur-md',\n    tableFooterBarAttached: 'border-t border-white/10',\n    tableRow: '[&>*]:border-white/10',\n    tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--foreground)/0.08)]',\n    tableHeadLabel: 'text-foreground',\n    tableLoadingSkeleton: 'bg-white/[0.16]',\n    layoutRoot:\n      'border-white/10 bg-white/[0.05] shadow-none backdrop-blur-md',\n    layoutPane:\n      'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n    layoutPaneMuted: 'bg-white/[0.08]',\n    layoutPaneSoft: 'bg-white/[0.10] shadow-none backdrop-blur-md',\n    layoutResizeHandle: 'text-foreground/65 hover:bg-white/10 active:bg-white/15 focus-visible:bg-white/10',\n    layoutResizeHandleIndicator: 'bg-white/45 group-hover/resize:bg-white/75',\n  },\n  dark: {\n    buttonBase:\n      'border-white/15 text-white shadow-lg backdrop-blur',\n    buttonDefault: 'bg-black/30 hover:bg-black/[0.45]',\n    buttonPrimary: 'border-white/25 bg-white/20 text-white hover:bg-white/25',\n    buttonMuted:\n      'border-white/10 bg-black/20 text-white/70 hover:bg-black/[0.35] hover:text-white',\n    badgeDefault: 'border-white/10 bg-white/[0.08] text-white',\n    badgeMuted: 'border-white/10 bg-black/20 text-white/70',\n    panelRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n    panelTitle: 'text-white',\n    panelDescription: 'text-white/65',\n    panelBody: 'text-white/85',\n    panelFooter: 'border-white/10 bg-white/[0.04]',\n    stateRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n    stateIcon: 'bg-white/10 text-white/75',\n    stateTitle: 'text-white',\n    stateDescription: 'text-white/65',\n    fieldLabel: 'text-white',\n    fieldDescription: 'text-white/65',\n    fieldMessage: 'text-white/65',\n    controlWrapper:\n      'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur focus-within:border-white/35',\n    controlBase: 'text-white placeholder:text-white/45',\n    selectChevron: 'text-white/65',\n    selectMenu: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n    selectOption: 'text-white',\n    selectOptionActive: 'bg-white/[0.12] text-white',\n    selectOptionSelected: 'bg-white/[0.16] text-white',\n    selectPlaceholder: 'text-white/45',\n    switchTrack: 'border-white/15 bg-black/30 shadow-lg backdrop-blur',\n    switchChecked: 'border-white/25 bg-white/25 text-white',\n    switchLabel: 'text-white',\n    switchDescription: 'text-white/65',\n    checkboxBox: 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur',\n    checkboxBoxChecked: 'border-white/25 bg-white/25 text-white',\n    checkboxLabel: 'text-white',\n    checkboxDescription: 'text-white/65',\n    radioOption: 'border-white/10 bg-white/[0.06] text-white hover:bg-white/[0.08]',\n    radioMarker: 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur',\n    radioMarkerChecked: 'border-white/25 bg-white/25',\n    radioIndicator: 'bg-white',\n    radioLabel: 'text-white',\n    radioDescription: 'text-white/65',\n    dialogOverlay: 'bg-slate-950/75',\n    dialogPanel: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n    dialogHeader: 'border-white/10',\n    dialogTitle: 'text-white',\n    dialogDescription: 'text-white/65',\n    dialogBody: 'text-white/85',\n    dialogFooter: 'border-white/10',\n    dialogClose: 'text-white/65 hover:bg-white/[0.08] hover:text-white',\n    dropdownMenu: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n    dropdownLabel: 'text-white/55',\n    dropdownSeparator: 'bg-white/15',\n    dropdownItem: 'text-white hover:bg-white/[0.10]',\n    dropdownItemDescription: 'text-white/55',\n    dropdownItemShortcut: 'text-white/55',\n    tooltipContent: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n    noticeDefault: 'border-white/10 bg-white/[0.08] text-white',\n    noticeMuted: 'border-white/10 bg-black/20 text-white/70',\n    dividerRoot: 'border-white/15',\n    dividerLabel: 'text-white/55',\n    sectionHeaderEyebrow: 'text-white/55',\n    sectionHeaderTitle: 'text-white',\n    sectionHeaderDescription: 'text-white/65',\n    tabsList: 'border-white/10 bg-white/[0.08]',\n    tabsTrigger: 'text-white/65 hover:bg-white/[0.12] hover:text-white',\n    tabsTriggerActive: 'bg-white/[0.16] text-white shadow-none',\n    tabsPanel: 'border-white/10 bg-white/[0.06] text-white',\n    segmentedRoot: 'border-white/10 bg-white/[0.08]',\n    segmentedItem: 'text-white/65 hover:bg-white/[0.12] hover:text-white',\n    segmentedItemActive: 'bg-white/[0.16] text-white shadow-none',\n    progressTrack: 'bg-white/[0.12]',\n    progressLabel: 'text-white',\n    progressValue: 'text-white/65',\n    skeletonRoot: 'bg-white/[0.14]',\n    avatarRoot: 'border-white/15 bg-white/[0.10] text-white',\n    avatarFallback: 'bg-white/[0.10] text-white/75',\n    avatarText: 'text-white',\n    avatarStatus: 'border-slate-950',\n    toolbarRoot: 'border-white/10 bg-white/[0.06] text-white',\n    toolbarTitle: 'text-white',\n    toolbarDescription: 'text-white/65',\n    breadcrumbLink: 'text-white/65 hover:text-white',\n    breadcrumbCurrent: 'text-white',\n    breadcrumbSeparator: 'text-white/45',\n    paginationInfo: 'text-white/65',\n    paginationButton: 'border-white/10 bg-white/[0.08] text-white hover:bg-white/[0.14]',\n    paginationPage: 'bg-white/[0.14] text-white',\n    descriptionListItem: 'border-white/10 bg-white/[0.06]',\n    descriptionListTerm: 'text-white/55',\n    descriptionListValue: 'text-white',\n    accordionItem: 'border-white/10 bg-white/[0.06]',\n    accordionTrigger: 'text-white hover:bg-white/[0.08]',\n    accordionPanel: 'border-white/10 text-white/70',\n    tableContainer:\n      'border-foreground/10 bg-background text-foreground shadow-none [scrollbar-gutter:stable] [--base-table-sticky-header-bg:hsl(var(--background)/0.98)] [--base-table-header-separator:hsl(var(--foreground)/0.16)]',\n    tableRoot: 'text-white',\n    tableHeader: 'border-white/10',\n    tableFooter: 'bg-white/[0.05] [&_tr>*]:border-white/10',\n    tableFooterBar: 'border-white/10 bg-white/[0.05] text-white/65',\n    tableFooterBarAttached: 'border-t border-white/10',\n    tableRow: '[&>*]:border-white/10',\n    tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--foreground)/0.06)]',\n    tableHead: 'text-white/65',\n    tableHeadLabel: 'text-white',\n    tableHeadDescription: 'text-white/55',\n    tableHeadMeta: 'text-white/55',\n    tableHeadIcon: 'text-white/55',\n    tableHeadSortIcon: 'text-white/55',\n    tableHeadDragHandle: 'text-white/55 hover:bg-white/[0.08]',\n    tableHeadResizeHandle: 'after:bg-white/20 hover:after:bg-white/60',\n    tableCell: 'text-white/85',\n    tableEmptyIcon: 'bg-white/10 text-white/65',\n    tableEmptyTitle: 'text-white',\n    tableEmptyDescription: 'text-white/60',\n    menuContent: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n    menuLabel: 'text-white/55',\n    menuSeparator: 'bg-white/10',\n    menuItem:\n      'text-white focus:bg-white/[0.10] focus:text-white data-[highlighted]:bg-white/[0.10] data-[highlighted]:text-white',\n    menuItemDefault: 'text-white',\n    menuItemPrimary: 'text-primary focus:text-primary data-[highlighted]:text-primary',\n    menuItemSuccess:\n      'text-[hsl(var(--success,142_69%_58%))] focus:text-[hsl(var(--success,142_69%_58%))] data-[highlighted]:text-[hsl(var(--success,142_69%_58%))]',\n    menuItemWarning:\n      'text-[hsl(var(--warning-foreground,53_98%_77%))] focus:text-[hsl(var(--warning-foreground,53_98%_77%))] data-[highlighted]:text-[hsl(var(--warning-foreground,53_98%_77%))]',\n    menuItemDanger:\n      'text-destructive-text focus:text-destructive-text data-[highlighted]:text-destructive-text',\n    menuItemMuted:\n      'text-white/65 focus:text-white data-[highlighted]:text-white',\n    menuItemShortcut: 'text-white/45',\n    menuSubTrigger:\n      'text-white focus:bg-white/[0.10] focus:text-white data-[highlighted]:bg-white/[0.10] data-[highlighted]:text-white data-[state=open]:bg-white/[0.12]',\n    menuSubTriggerIcon: 'text-white/55',\n    menuSubContent: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n    tableLoadingSkeleton: 'bg-white/[0.14]',\n    layoutRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n    layoutPane: 'border-white/10 bg-slate-950 text-white shadow-none',\n    layoutPaneMuted: 'bg-white/[0.06]',\n    layoutPaneSoft: 'bg-white/[0.08] shadow-none',\n    layoutResizeHandle: 'text-white/65 hover:bg-white/10 active:bg-white/15 focus-visible:bg-white/10',\n    layoutResizeHandleIndicator: 'bg-white/45 group-hover/resize:bg-white/75',\n  },\n};\n\nconst presetDefaults: Record<\n  BaseThemePresetId,\n  Pick<BaseAppearance, 'density' | 'radius' | 'border' | 'background'>\n> = {\n  default: {\n    density: 'default',\n    radius: 'md',\n    border: 'solid',\n    background: 'plain',\n  },\n  soft: {\n    density: 'default',\n    radius: 'lg',\n    border: 'subtle',\n    background: 'soft',\n  },\n  compact: {\n    density: 'compact',\n    radius: 'md',\n    border: 'subtle',\n    background: 'muted',\n  },\n  'tinted-glass': {\n    density: 'default',\n    radius: 'lg',\n    border: 'subtle',\n    background: 'glass',\n  },\n  glass: {\n    density: 'default',\n    radius: 'xl',\n    border: 'subtle',\n    background: 'glass',\n  },\n  'hard-edge': {\n    density: 'compact',\n    radius: 'none',\n    border: 'strong',\n    background: 'plain',\n  },\n};\n\nconst presetSlots: Record<string, Partial<BaseThemeSlots>> = {\n  soft: {\n    buttonBase: 'font-medium',\n    panelRoot: 'border-border/70',\n    controlWrapper: 'font-medium',\n    tabsTrigger: 'font-medium',\n    segmentedItem: 'font-medium',\n    toolbarRoot: 'border-border/70',\n    tableContainer: 'border-border/70',\n    tableFooterBar: 'border-border/70',\n    tableHeadLabel: 'font-semibold',\n    menuItemLabel: 'font-medium',\n  },\n  compact: {\n    buttonBase: 'text-xs',\n    badgeBase: 'text-[11px]',\n    fieldLabel: 'text-xs',\n    controlBase: 'text-xs',\n    selectOption: 'text-xs',\n    menuItem: 'text-xs',\n    menuSubTrigger: 'text-xs',\n    noticeBase: 'text-xs',\n    sectionHeaderTitle: 'text-sm',\n    tabsTrigger: 'text-xs',\n    segmentedItem: 'text-xs',\n    toolbarTitle: 'text-xs',\n    paginationRoot: 'text-xs',\n  },\n  'tinted-glass': {\n    buttonPrimary: 'border-primary/25 bg-primary/15 text-primary-foreground hover:bg-primary/20',\n    badgePrimary: 'border-primary/25 bg-primary/15 text-primary-foreground',\n    noticePrimary: 'border-primary/25 bg-primary/15 text-primary-foreground',\n    progressIndicator: 'bg-primary',\n    avatarStatus: 'border-background',\n  },\n  glass: {\n    panelRoot: 'shadow-[0_24px_80px_hsl(var(--foreground)/0.12)]',\n    stateRoot: 'shadow-[0_24px_80px_hsl(var(--foreground)/0.12)]',\n    noticeBase: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n    tabsPanel: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n    toolbarRoot: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n    descriptionListItem: 'shadow-[0_12px_40px_hsl(var(--foreground)/0.08)]',\n    accordionItem: 'shadow-[0_12px_40px_hsl(var(--foreground)/0.08)]',\n  },\n  'hard-edge': {\n    buttonBase: 'shadow-none',\n    panelRoot: 'shadow-none',\n    stateRoot: 'shadow-none',\n    controlWrapper: 'shadow-none',\n    selectMenu: 'shadow-none',\n    menuContent: 'shadow-none',\n    menuSubContent: 'shadow-none',\n    noticeBase: 'shadow-none',\n    tabsList: 'shadow-none',\n    tabsTriggerActive: 'shadow-none',\n    tabsPanel: 'shadow-none',\n    segmentedRoot: 'shadow-none',\n    segmentedItemActive: 'shadow-none',\n    toolbarRoot: 'shadow-none',\n    descriptionListItem: 'shadow-none',\n    accordionItem: 'shadow-none',\n  },\n};\n\nfunction getPresetDefaults(preset: BaseThemePresetId) {\n  return (\n    presetDefaults[preset as keyof typeof presetDefaults] ?? presetDefaults.default\n  );\n}\n\nconst slotKeys = Object.keys(baseSlots) as Array<keyof BaseThemeSlots>;\n\nfunction mergeSlots(\n  ...sources: Array<Partial<BaseThemeSlots> | undefined>\n): ResolvedSlots {\n  return slotKeys.reduce((resolved, key) => {\n    resolved[key] = cn(...sources.map((source) => source?.[key]));\n    return resolved;\n  }, {} as ResolvedSlots);\n}\n\nfunction mergeStyles(...styleSets: Array<BaseThemeStyles | undefined>) {\n  return Object.assign({}, ...styleSets.filter(Boolean));\n}\n\nexport function resolveBaseAppearance(\n  appearance?: BaseAppearance,\n): BaseResolvedTheme {\n  const preset = appearance?.preset ?? 'default';\n  const variant = appearance?.variant ?? 'default';\n  const defaults = getPresetDefaults(preset);\n  const density = appearance?.density ?? defaults.density ?? 'default';\n  const state = appearance?.state ?? 'idle';\n  const radius = appearance?.radius ?? defaults.radius ?? 'md';\n  const border = appearance?.border ?? defaults.border ?? 'solid';\n  const background = appearance?.background ?? defaults.background ?? 'plain';\n\n  return {\n    preset,\n    variant,\n    density,\n    state,\n    radius,\n    border,\n    background,\n    styles: mergeStyles(emptyStyles, appearance?.styles),\n    slots: mergeSlots(\n      baseSlots,\n      presetSlots[preset],\n      densitySlots[density],\n      radiusSlots[radius],\n      borderSlots[border],\n      backgroundSlots[background],\n      appearance?.slots,\n    ),\n  };\n}\n\nexport function getBaseButtonToneClassName(\n  theme: BaseResolvedTheme,\n  tone: BaseControlTone = 'default',\n  active = false,\n) {\n  return cn(\n    tone === 'default' && theme.slots.buttonDefault,\n    tone === 'primary' && theme.slots.buttonPrimary,\n    tone === 'success' && theme.slots.buttonSuccess,\n    tone === 'warning' && theme.slots.buttonWarning,\n    tone === 'danger' && theme.slots.buttonDanger,\n    tone === 'muted' && theme.slots.buttonMuted,\n    active && theme.slots.buttonActive,\n  );\n}\n\nexport function getBaseBadgeToneClassName(\n  theme: BaseResolvedTheme,\n  tone: BaseControlTone = 'default',\n) {\n  return cn(\n    tone === 'default' && theme.slots.badgeDefault,\n    tone === 'primary' && theme.slots.badgePrimary,\n    tone === 'success' && theme.slots.badgeSuccess,\n    tone === 'warning' && theme.slots.badgeWarning,\n    tone === 'danger' && theme.slots.badgeDanger,\n    tone === 'muted' && theme.slots.badgeMuted,\n  );\n}\n\nexport function getBaseNoticeToneClassName(\n  theme: BaseResolvedTheme,\n  tone: BaseControlTone = 'default',\n) {\n  return cn(\n    tone === 'default' && theme.slots.noticeDefault,\n    tone === 'primary' && theme.slots.noticePrimary,\n    tone === 'success' && theme.slots.noticeSuccess,\n    tone === 'warning' && theme.slots.noticeWarning,\n    tone === 'danger' && theme.slots.noticeDanger,\n    tone === 'muted' && theme.slots.noticeMuted,\n  );\n}\n\nexport function getBaseMenuItemToneClassName(\n  theme: BaseResolvedTheme,\n  tone: BaseControlTone = 'default',\n) {\n  return cn(\n    tone === 'default' && theme.slots.menuItemDefault,\n    tone === 'primary' && theme.slots.menuItemPrimary,\n    tone === 'success' && theme.slots.menuItemSuccess,\n    tone === 'warning' && theme.slots.menuItemWarning,\n    tone === 'danger' && theme.slots.menuItemDanger,\n    tone === 'muted' && theme.slots.menuItemMuted,\n  );\n}\n\nexport function getBaseTypographyToneClassName(\n  theme: BaseResolvedTheme,\n  tone: BaseTypographyTone = 'default',\n) {\n  return cn(\n    tone === 'default' && theme.slots.typographyToneDefault,\n    tone === 'muted' && theme.slots.typographyToneMuted,\n    tone === 'primary' && theme.slots.typographyTonePrimary,\n    tone === 'success' && theme.slots.typographyToneSuccess,\n    tone === 'warning' && theme.slots.typographyToneWarning,\n    tone === 'danger' && theme.slots.typographyToneDanger,\n    tone === 'inherit' && theme.slots.typographyToneInherit,\n  );\n}\n\nexport function getBaseTextSizeClassName(\n  theme: BaseResolvedTheme,\n  size: BaseTypographySize = 'md',\n) {\n  return cn(\n    size === 'xs' && theme.slots.textSizeXs,\n    size === 'sm' && theme.slots.textSizeSm,\n    size === 'md' && theme.slots.textSizeMd,\n    size === 'lg' && theme.slots.textSizeLg,\n    size === 'xl' && theme.slots.textSizeXl,\n  );\n}\n\nexport function getBaseHeadingSizeClassName(\n  theme: BaseResolvedTheme,\n  size: BaseHeadingSize = 'lg',\n) {\n  return cn(\n    size === 'xs' && theme.slots.headingSizeXs,\n    size === 'sm' && theme.slots.headingSizeSm,\n    size === 'md' && theme.slots.headingSizeMd,\n    size === 'lg' && theme.slots.headingSizeLg,\n    size === 'xl' && theme.slots.headingSizeXl,\n    size === '2xl' && theme.slots.headingSize2xl,\n  );\n}\n\nexport function getBaseListSpacingClassName(\n  theme: BaseResolvedTheme,\n  spacing: BaseListSpacing = 'default',\n) {\n  return cn(\n    spacing === 'compact' && theme.slots.listSpacingCompact,\n    spacing === 'default' && theme.slots.listSpacingDefault,\n    spacing === 'relaxed' && theme.slots.listSpacingRelaxed,\n  );\n}\n\nexport function getBaseListMarkerClassName(\n  theme: BaseResolvedTheme,\n  marker: Exclude<BaseListMarker, 'auto'>,\n) {\n  return cn(\n    marker === 'none' && theme.slots.listMarkerNone,\n    marker === 'disc' && theme.slots.listMarkerDisc,\n    marker === 'circle' && theme.slots.listMarkerCircle,\n    marker === 'square' && theme.slots.listMarkerSquare,\n    marker === 'decimal' && theme.slots.listMarkerDecimal,\n    marker === 'lower-alpha' && theme.slots.listMarkerLowerAlpha,\n    marker === 'upper-alpha' && theme.slots.listMarkerUpperAlpha,\n  );\n}\n\nconst cssLengthPattern = /^(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))$/i;\nconst cssLengthFunctions = new Set(['calc', 'clamp', 'max', 'min', 'var']);\nconst unsafeCssValuePattern = /[;{}<>\"'\\\\\\u0000-\\u001f\\u007f]/;\nconst gridTemplateTokenPattern = /(?:\\b(?:auto|fit-content|max-content|min-content|subgrid)\\b|(?:calc|clamp|max|min|minmax|repeat|var)\\s*\\(|(?:^|[\\s,(])(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|fr|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))(?:$|[\\s,)\\]]))/i;\n\nfunction hasBalancedDelimiters(value: string) {\n  const pairs: Record<string, string> = { ')': '(', ']': '[' };\n  const stack: string[] = [];\n\n  for (const character of value) {\n    if (character === '(' || character === '[') {\n      stack.push(character);\n    } else if (character === ')' || character === ']') {\n      if (stack.pop() !== pairs[character]) return false;\n    }\n  }\n\n  return stack.length === 0;\n}\n\nfunction isSupportedCssLengthFunction(value: string) {\n  const match = /^([a-z]+)\\(([\\s\\S]+)\\)$/i.exec(value);\n  if (!match || !cssLengthFunctions.has(match[1].toLowerCase())) return false;\n  if (!match[2].trim() || !hasBalancedDelimiters(value)) return false;\n\n  if (match[1].toLowerCase() === 'var') {\n    return /^\\s*--[a-z0-9_-]+(?:\\s*,[\\s\\S]+)?\\s*$/i.test(match[2]);\n  }\n\n  return cssLengthPattern.test(match[2].trim()) || /\\b(?:calc|clamp|max|min|var)\\s*\\(/i.test(match[2]) || /(?:^|[\\s,(])(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))(?:$|[\\s,)])/i.test(match[2]);\n}\n\nexport function resolveBaseLayoutLength(\n  componentName: string,\n  propName: string,\n  value: BaseLayoutLength,\n) {\n  if (typeof value === 'number') {\n    if (!Number.isFinite(value) || value < 0) {\n      throw new RangeError(\n        `${componentName} ${propName} must be a finite, non-negative number or a supported CSS length string.`,\n      );\n    }\n    return `${value}px`;\n  }\n\n  if (typeof value !== 'string') {\n    throw new TypeError(\n      `${componentName} ${propName} must be a finite, non-negative number or a supported CSS length string.`,\n    );\n  }\n\n  const normalized = value.trim();\n  if (\n    !normalized ||\n    unsafeCssValuePattern.test(normalized) ||\n    (!cssLengthPattern.test(normalized) &&\n      !isSupportedCssLengthFunction(normalized))\n  ) {\n    throw new TypeError(\n      `${componentName} ${propName} must be a non-empty, non-negative CSS length (for example 12px, 1rem, 5%, or var(--space)).`,\n    );\n  }\n\n  return normalized;\n}\n\nexport function resolveBaseGridColumns(value: number | string) {\n  if (typeof value === 'number') {\n    if (!Number.isInteger(value) || value <= 0) {\n      throw new RangeError(\n        'BaseGrid columns must be a positive integer or a supported CSS grid-template-columns string.',\n      );\n    }\n    return `repeat(${value}, minmax(0, 1fr))`;\n  }\n\n  if (typeof value !== 'string') {\n    throw new TypeError(\n      'BaseGrid columns must be a positive integer or a supported CSS grid-template-columns string.',\n    );\n  }\n\n  const normalized = value.trim();\n  if (\n    !normalized ||\n    unsafeCssValuePattern.test(normalized) ||\n    /\\burl\\s*\\(/i.test(normalized) ||\n    !hasBalancedDelimiters(normalized) ||\n    !gridTemplateTokenPattern.test(normalized)\n  ) {\n    throw new TypeError(\n      'BaseGrid columns must be a non-empty CSS grid-template-columns value such as \"12rem minmax(0, 1fr)\" or \"repeat(3, minmax(0, 1fr))\".',\n    );\n  }\n\n  return normalized;\n}\n\ntype BaseLayoutAlignValue =\n  | 'flex-start'\n  | 'center'\n  | 'flex-end'\n  | 'stretch'\n  | 'baseline';\n\ntype BaseLayoutJustifyValue =\n  | 'flex-start'\n  | 'center'\n  | 'flex-end'\n  | 'space-between'\n  | 'space-around'\n  | 'space-evenly';\n\nconst layoutAlignValues: Record<BaseLayoutAlign, BaseLayoutAlignValue> = {\n  start: 'flex-start',\n  center: 'center',\n  end: 'flex-end',\n  stretch: 'stretch',\n  baseline: 'baseline',\n};\n\nconst layoutJustifyValues: Record<\n  BaseLayoutJustify,\n  BaseLayoutJustifyValue\n> = {\n  start: 'flex-start',\n  center: 'center',\n  end: 'flex-end',\n  between: 'space-between',\n  around: 'space-around',\n  evenly: 'space-evenly',\n};\n\nexport function resolveBaseLayoutAlign(\n  componentName: string,\n  value: BaseLayoutAlign,\n): BaseLayoutAlignValue {\n  if (!Object.prototype.hasOwnProperty.call(layoutAlignValues, value)) {\n    throw new TypeError(\n      `${componentName} align must be one of: start, center, end, stretch, baseline.`,\n    );\n  }\n  return layoutAlignValues[value];\n}\n\nexport function resolveBaseLayoutJustify(\n  componentName: string,\n  value: BaseLayoutJustify,\n): BaseLayoutJustifyValue {\n  if (!Object.prototype.hasOwnProperty.call(layoutJustifyValues, value)) {\n    throw new TypeError(\n      `${componentName} justify must be one of: start, center, end, between, around, evenly.`,\n    );\n  }\n  return layoutJustifyValues[value];\n}\n","import * 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 { 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 { JsonObject, RenderNode, RenderTree } from '@inf-monkeys-tech/monkeys';\nimport { compileRenderTree } from '@inf-monkeys-tech/monkeys/runtime';\nimport { useMemo } from 'react';\nimport type { ReactNode, Ref } from 'react';\n\nimport { RenderNodeHost } from './RenderNodeHost';\nimport type { RenderNodeHostElement, RenderNodeHostProps, RenderNodeRuntimeState } from './RenderNodeHost';\n\nexport interface RenderTreeNodeContext extends RenderNodeRuntimeState {\n  node: RenderNode;\n  scope?: JsonObject;\n  instanceKey?: string;\n  children: ReactNode;\n  childNodes: readonly RenderNode[];\n  childrenBySlot: Readonly<Record<string, ReactNode>>;\n}\n\nexport interface RenderTreeHostProps {\n  tree: RenderTree;\n  maxMaterializedNodes?: number;\n  resolveNodeInstances?: (node: RenderNode, parentScope?: JsonObject) => readonly { key: string; scope: JsonObject }[] | undefined;\n  wrapNode?: (context: { node: RenderNode; scope?: JsonObject; instanceKey?: string; content: ReactNode }) => ReactNode;\n  activeNodeIds?: ReadonlySet<string>;\n  visibleNodeIds?: ReadonlySet<string>;\n  manualQueryNodeIds?: ReadonlySet<string>;\n  loading?: ReactNode;\n  empty?: ReactNode;\n  error?: ReactNode;\n  unframedForNode?: (node: RenderNode) => boolean;\n  asChildForNode?: (node: RenderNode) => boolean;\n  elementForNode?: (node: RenderNode) => RenderNodeHostElement;\n  classNameForNode?: (node: RenderNode) => string | undefined;\n  elementRefForNode?: (node: RenderNode) => Ref<HTMLElement> | undefined;\n  scrollRestoration?: RenderNodeHostProps['scrollRestoration'];\n  renderNode?: (context: RenderTreeNodeContext) => ReactNode;\n  onActivate?: RenderNodeHostProps['onActivate'];\n  onManualQueryEnabledChange?: RenderNodeHostProps['onManualQueryEnabledChange'];\n  onRuntimeStateChange?: RenderNodeHostProps['onRuntimeStateChange'];\n}\n\nconst defaultElementForNode = (node: RenderNode): RenderNodeHostElement => {\n  if (node.kind === 'shell') return 'main';\n  if (node.kind === 'navigation') return 'nav';\n  if (node.kind === 'detail') return 'aside';\n  if (node.kind === 'record') return 'article';\n  return 'section';\n};\n\nexport function RenderTreeHost({\n  tree,\n  maxMaterializedNodes = 4096,\n  resolveNodeInstances,\n  wrapNode,\n  activeNodeIds,\n  visibleNodeIds,\n  manualQueryNodeIds,\n  loading,\n  empty,\n  error,\n  elementForNode = defaultElementForNode,\n  asChildForNode,\n  unframedForNode,\n  classNameForNode,\n  elementRefForNode,\n  scrollRestoration,\n  renderNode,\n  onActivate,\n  onManualQueryEnabledChange,\n  onRuntimeStateChange,\n}: RenderTreeHostProps) {\n  const compiled = useMemo(() => compileRenderTree(tree), [tree]);\n  if (!Number.isSafeInteger(maxMaterializedNodes) || maxMaterializedNodes < 1 || maxMaterializedNodes > 4096) throw new RangeError('RenderTree materialization budget must be an integer from 1 to 4096.');\n  let materializedNodes = 0;\n\n  const renderBranch = (node: RenderNode, parentScope?: JsonObject, parentInstanceKey?: string): ReactNode => {\n    const instances = resolveNodeInstances?.(node, parentScope);\n    if (instances === undefined) return renderInstance(node, parentScope, parentInstanceKey);\n    const keys = new Set<string>();\n    const rendered = instances.map(({ key, scope }) => {\n      if (!key || keys.has(key)) throw new TypeError(`RenderNode ${node.nodeId} requires unique non-empty instance keys.`);\n      keys.add(key);\n      return renderInstance(node, scope, JSON.stringify([parentInstanceKey ?? null, node.nodeId, key]));\n    });\n    return rendered.length === 1 ? rendered[0] : rendered;\n  };\n\n  const renderInstance = (node: RenderNode, scope?: JsonObject, instanceKey?: string): ReactNode => {\n    if (++materializedNodes > maxMaterializedNodes) throw new RangeError('RenderTree materialization budget exceeded.');\n    const runtimeNode = instanceKey && node.scroll.restoreKey\n      ? { ...node, scroll: { ...node.scroll, restoreKey: JSON.stringify([node.scroll.restoreKey, instanceKey]) } }\n      : node;\n    const childNodes = compiled.childrenOf(node.nodeId);\n    const descendants = childNodes.map((child) => renderBranch(child, scope, instanceKey));\n    const descendantsBySlot = childNodes.reduce<Record<string, ReactNode[]>>((slots, child, index) => {\n      const slot = child.slot ?? child.nodeId;\n      (slots[slot] ??= []).push(descendants[index]);\n      return slots;\n    }, {});\n    const childrenBySlot = Object.freeze(Object.fromEntries(\n      Object.entries(descendantsBySlot).map(([slot, slotDescendants]) => [\n        slot,\n        slotDescendants.length === 1 ? slotDescendants[0] : <>{slotDescendants}</>,\n      ]),\n    ));\n    return (\n      <RenderNodeHost\n        key={JSON.stringify([node.nodeId, instanceKey ?? null])}\n        node={runtimeNode}\n        data-monkeys-instance-key={instanceKey}\n        as={elementForNode(node)}\n        asChild={asChildForNode?.(node)}\n        unframed={unframedForNode?.(node)}\n        active={activeNodeIds?.has(node.nodeId) ?? true}\n        visible={visibleNodeIds?.has(node.nodeId) ?? true}\n        manualQueryEnabled={manualQueryNodeIds?.has(node.nodeId) ?? false}\n        loading={loading}\n        empty={empty}\n        error={error}\n        className={classNameForNode?.(node)}\n        elementRef={elementRefForNode?.(node)}\n        scrollRestoration={scrollRestoration}\n        onActivate={onActivate}\n        onManualQueryEnabledChange={onManualQueryEnabledChange}\n        onRuntimeStateChange={onRuntimeStateChange}\n      >\n        {(runtime) => {\n          const content = renderNode?.({\n            ...runtime,\n            node: runtimeNode,\n            scope,\n            instanceKey,\n            children: descendants,\n            childNodes,\n            childrenBySlot,\n          }) ?? descendants;\n          return wrapNode ? wrapNode({ node: runtimeNode, scope, instanceKey, content }) : content;\n        }}\n      </RenderNodeHost>\n    );\n  };\n\n  return <>{renderBranch(compiled.root)}</>;\n}\n","import type { RenderActivation, RenderNode, RenderTree } from '@inf-monkeys-tech/monkeys';\nimport { compileRenderTree } from '@inf-monkeys-tech/monkeys/runtime';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { RenderTreeHost } from './RenderTreeHost';\nimport type { RenderTreeHostProps } from './RenderTreeHost';\n\nexport interface RenderTreeRuntimeSnapshot {\n  contract: 'RenderTreeRuntimeSnapshot';\n  treeId: string;\n  activeNodeIds: string[];\n  manualQueryNodeIds: string[];\n  selectedActivationId?: string;\n}\n\nexport interface RenderTreeHistoryAdapter {\n  read(): RenderTreeRuntimeSnapshot | undefined;\n  replace(snapshot: RenderTreeRuntimeSnapshot): void;\n  push(snapshot: RenderTreeRuntimeSnapshot): void;\n  navigate(path: string, mode: 'push' | 'replace', snapshot: RenderTreeRuntimeSnapshot): void;\n  subscribe(listener: (snapshot: RenderTreeRuntimeSnapshot | undefined) => void): () => void;\n}\n\nconst STATE_KEY = '__monkeysRenderTree';\n\nconst readBrowserSnapshot = (): RenderTreeRuntimeSnapshot | undefined => {\n  if (typeof window === 'undefined') return undefined;\n  const value = window.history.state?.[STATE_KEY] as RenderTreeRuntimeSnapshot | undefined;\n  return value?.contract === 'RenderTreeRuntimeSnapshot' ? value : undefined;\n};\n\nconst withSnapshot = (snapshot: RenderTreeRuntimeSnapshot) => ({\n  ...(typeof window === 'undefined' || !window.history.state || typeof window.history.state !== 'object'\n    ? {}\n    : window.history.state),\n  [STATE_KEY]: snapshot,\n});\n\nconst notifyBrowserHistory = () => {\n  if (typeof window === 'undefined') return;\n  window.dispatchEvent(new PopStateEvent('popstate', { state: window.history.state }));\n};\n\nexport const browserRenderTreeHistoryAdapter: RenderTreeHistoryAdapter = {\n  read: readBrowserSnapshot,\n  replace(snapshot) {\n    if (typeof window !== 'undefined') window.history.replaceState(withSnapshot(snapshot), '', window.location.href);\n  },\n  push(snapshot) {\n    if (typeof window !== 'undefined') window.history.pushState(withSnapshot(snapshot), '', window.location.href);\n  },\n  navigate(path, mode, snapshot) {\n    if (typeof window === 'undefined') return;\n    window.history[mode === 'replace' ? 'replaceState' : 'pushState'](withSnapshot(snapshot), '', path);\n    notifyBrowserHistory();\n  },\n  subscribe(listener) {\n    if (typeof window === 'undefined') return () => undefined;\n    const onPopState = () => listener(readBrowserSnapshot());\n    window.addEventListener('popstate', onPopState);\n    return () => window.removeEventListener('popstate', onPopState);\n  },\n};\n\nexport interface RenderTreeRuntimeHostProps\n  extends Omit<\n    RenderTreeHostProps,\n    | 'activeNodeIds'\n    | 'visibleNodeIds'\n    | 'manualQueryNodeIds'\n    | 'onActivate'\n    | 'onManualQueryEnabledChange'\n    | 'elementRefForNode'\n  > {\n  tree: RenderTree;\n  historyAdapter?: RenderTreeHistoryAdapter | false;\n  onActivate?: RenderTreeHostProps['onActivate'];\n}\n\nconst scheduleFocus = (target: HTMLElement | undefined) => {\n  if (!target?.isConnected) return;\n  if (typeof window !== 'undefined' && typeof window.requestAnimationFrame === 'function') {\n    window.requestAnimationFrame(() => target.focus({ preventScroll: true }));\n  } else {\n    target.focus({ preventScroll: true });\n  }\n};\n\nexport function RenderTreeRuntimeHost({\n  tree,\n  historyAdapter = browserRenderTreeHistoryAdapter,\n  onActivate,\n  onRuntimeStateChange,\n  ...props\n}: RenderTreeRuntimeHostProps) {\n  const compiled = useMemo(() => compileRenderTree(tree), [tree]);\n  const allNodeIds = useMemo(() => new Set(compiled.traversal.map((node) => node.nodeId)), [compiled]);\n  const [activeNodeIds, setActiveNodeIds] = useState<Set<string>>(() => new Set(allNodeIds));\n  const [manualQueryNodeIds, setManualQueryNodeIds] = useState<Set<string>>(() => new Set());\n  const selectedActivationIdRef = useRef<string>();\n  const activeNodeIdsRef = useRef(activeNodeIds);\n  const manualQueryNodeIdsRef = useRef(manualQueryNodeIds);\n  const focusReturnTargets = useRef(new Map<string, HTMLElement>());\n\n  const snapshot = useCallback((\n    nextActive = activeNodeIdsRef.current,\n    nextManual = manualQueryNodeIdsRef.current,\n    selectedActivationId = selectedActivationIdRef.current,\n  ): RenderTreeRuntimeSnapshot => ({\n    contract: 'RenderTreeRuntimeSnapshot',\n    treeId: tree.treeId,\n    activeNodeIds: [...nextActive],\n    manualQueryNodeIds: [...nextManual],\n    selectedActivationId,\n  }), [tree.treeId]);\n\n  const applySnapshot = useCallback((value: RenderTreeRuntimeSnapshot | undefined) => {\n    if (!value || value.treeId !== tree.treeId) return false;\n    if (value.activeNodeIds.some((nodeId) => !allNodeIds.has(nodeId))) return false;\n    if (value.manualQueryNodeIds.some((nodeId) => !allNodeIds.has(nodeId))) return false;\n    const active = new Set(value.activeNodeIds);\n    if (!active.has(tree.rootNodeId)) return false;\n    const manual = new Set(value.manualQueryNodeIds);\n    selectedActivationIdRef.current = value.selectedActivationId;\n    activeNodeIdsRef.current = active;\n    manualQueryNodeIdsRef.current = manual;\n    setActiveNodeIds(active);\n    setManualQueryNodeIds(manual);\n    return true;\n  }, [allNodeIds, tree.rootNodeId, tree.treeId]);\n\n  useEffect(() => {\n    const initial = historyAdapter === false ? undefined : historyAdapter.read();\n    if (!applySnapshot(initial)) {\n      const active = new Set(allNodeIds);\n      const manual = new Set<string>();\n      activeNodeIdsRef.current = active;\n      manualQueryNodeIdsRef.current = manual;\n      selectedActivationIdRef.current = undefined;\n      setActiveNodeIds(active);\n      setManualQueryNodeIds(manual);\n      historyAdapter !== false && historyAdapter.replace(snapshot(active, manual));\n    }\n    return historyAdapter === false ? undefined : historyAdapter.subscribe(applySnapshot);\n  }, [allNodeIds, applySnapshot, historyAdapter, snapshot]);\n\n  const selectNode = useCallback((node: RenderNode) => {\n    const next = new Set(compiled.ancestorsOf(node.nodeId).map((ancestor) => ancestor.nodeId));\n    const addDescendants = (current: RenderNode) => {\n      next.add(current.nodeId);\n      compiled.childrenOf(current.nodeId).forEach(addDescendants);\n    };\n    addDescendants(node);\n    return next;\n  }, [compiled]);\n\n  const handleActivate = useCallback((activation: RenderActivation, node: RenderNode) => {\n    if (node.lifecycle.focusReturn && typeof document !== 'undefined' && document.activeElement instanceof HTMLElement) {\n      focusReturnTargets.current.set(node.nodeId, document.activeElement);\n    }\n    selectedActivationIdRef.current = activation.activationId;\n    const nextActive = activation.mode === 'select' || activation.mode === 'inline'\n      ? selectNode(node)\n      : activeNodeIdsRef.current;\n    activeNodeIdsRef.current = nextActive;\n    setActiveNodeIds(nextActive);\n    const nextSnapshot = snapshot(nextActive);\n\n    if (activation.mode === 'navigate') {\n      if (!activation.targetPath) throw new TypeError(`Navigate activation ${activation.activationId} has no targetPath.`);\n      if (historyAdapter !== false) historyAdapter.navigate(activation.targetPath, activation.history ?? 'push', nextSnapshot);\n    } else if (historyAdapter !== false && node.lifecycle.deepLink) {\n      if (activation.history === 'push') historyAdapter.push(nextSnapshot);\n      else historyAdapter.replace(nextSnapshot);\n    }\n    onActivate?.(activation, node);\n  }, [historyAdapter, onActivate, selectNode, snapshot]);\n\n  const handleManualQueryEnabledChange = useCallback((enabled: boolean, node: RenderNode) => {\n    const next = new Set(manualQueryNodeIdsRef.current);\n    if (enabled) next.add(node.nodeId);\n    else next.delete(node.nodeId);\n    manualQueryNodeIdsRef.current = next;\n    setManualQueryNodeIds(next);\n    historyAdapter !== false && historyAdapter.replace(snapshot(activeNodeIdsRef.current, next));\n  }, [historyAdapter, snapshot]);\n\n  const previousActive = useRef(activeNodeIds);\n  useEffect(() => {\n    for (const nodeId of previousActive.current) {\n      if (activeNodeIds.has(nodeId)) continue;\n      const node = compiled.nodesById.get(nodeId);\n      if (node?.lifecycle.focusReturn) scheduleFocus(focusReturnTargets.current.get(nodeId));\n    }\n    previousActive.current = activeNodeIds;\n  }, [activeNodeIds, compiled.nodesById]);\n\n  return (\n    <RenderTreeHost\n      {...props}\n      tree={tree}\n      activeNodeIds={activeNodeIds}\n      visibleNodeIds={activeNodeIds}\n      manualQueryNodeIds={manualQueryNodeIds}\n      onActivate={handleActivate}\n      onManualQueryEnabledChange={handleManualQueryEnabledChange}\n      onRuntimeStateChange={onRuntimeStateChange}\n    />\n  );\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 } 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 { 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 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 { 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 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 {\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 {\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 {\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 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 { 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 {\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} 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, 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 {\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 * 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 { 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 const DESIGN_CAPABILITY_I18N_KEYS = Object.freeze({\n  numericSeries: Object.freeze({\n    inspect: \"monkeys.design.capability.numericSeries.inspect\",\n    noPoints: \"monkeys.design.capability.numericSeries.noPoints\",\n    point: \"monkeys.design.capability.numericSeries.point\",\n    label: \"monkeys.design.capability.numericSeries.label\",\n    description: \"monkeys.design.capability.numericSeries.description\",\n    start: \"monkeys.design.capability.numericSeries.start\",\n    end: \"monkeys.design.capability.numericSeries.end\",\n    reset: \"monkeys.design.capability.numericSeries.reset\",\n    expand: \"monkeys.design.capability.numericSeries.expand\",\n    close: \"monkeys.design.capability.numericSeries.close\",\n  }),\n\n  catalog: Object.freeze({\n    shellLayout: Object.freeze({\n      label: \"monkeys.design.catalog.shellLayout.label\",\n      description: \"monkeys.design.catalog.shellLayout.description\",\n    }),\n    sidebarFilter: Object.freeze({\n      label: \"monkeys.design.catalog.sidebarFilter.label\",\n      description: \"monkeys.design.catalog.sidebarFilter.description\",\n    }),\n    ontologyNavigator: Object.freeze({\n      label: \"monkeys.design.catalog.ontologyNavigator.label\",\n      description: \"monkeys.design.catalog.ontologyNavigator.description\",\n    }),\n    dataToolbar: Object.freeze({\n      label: \"monkeys.design.catalog.dataToolbar.label\",\n      description: \"monkeys.design.catalog.dataToolbar.description\",\n    }),\n    ontologyTable: Object.freeze({\n      label: \"monkeys.design.catalog.ontologyTable.label\",\n      description: \"monkeys.design.catalog.ontologyTable.description\",\n    }),\n    cardGrid: Object.freeze({\n      label: \"monkeys.design.catalog.cardGrid.label\",\n      description: \"monkeys.design.catalog.cardGrid.description\",\n    }),\n    pagination: Object.freeze({\n      label: \"monkeys.design.catalog.pagination.label\",\n      description: \"monkeys.design.catalog.pagination.description\",\n    }),\n    recordDetail: Object.freeze({\n      label: \"monkeys.design.catalog.recordDetail.label\",\n      description: \"monkeys.design.catalog.recordDetail.description\",\n    }),\n    recordEditor: Object.freeze({\n      label: \"monkeys.design.catalog.recordEditor.label\",\n      description: \"monkeys.design.catalog.recordEditor.description\",\n    }),\n    recordHistory: Object.freeze({\n      label: \"monkeys.design.catalog.recordHistory.label\",\n      description: \"monkeys.design.catalog.recordHistory.description\",\n    }),\n    ontologyManagement: Object.freeze({\n      label: \"monkeys.design.catalog.ontologyManagement.label\",\n      description: \"monkeys.design.catalog.ontologyManagement.description\",\n    }),\n    featureColumnManager: Object.freeze({\n      label: \"monkeys.design.catalog.featureColumnManager.label\",\n      description: \"monkeys.design.catalog.featureColumnManager.description\",\n    }),\n    ontologyTrendMatrix: Object.freeze({\n      label: \"monkeys.design.catalog.ontologyTrendMatrix.label\",\n      description: \"monkeys.design.catalog.ontologyTrendMatrix.description\",\n    }),\n    dataContextBar: Object.freeze({\n      label: \"monkeys.design.catalog.dataContextBar.label\",\n      description: \"monkeys.design.catalog.dataContextBar.description\",\n    }),\n    gallery: Object.freeze({\n      label: \"monkeys.design.catalog.gallery.label\",\n      description: \"monkeys.design.catalog.gallery.description\",\n    }),\n    sectionHeader: Object.freeze({\n      label: \"monkeys.design.catalog.sectionHeader.label\",\n      description: \"monkeys.design.catalog.sectionHeader.description\",\n    }),\n    notice: Object.freeze({\n      label: \"monkeys.design.catalog.notice.label\",\n      description: \"monkeys.design.catalog.notice.description\",\n    }),\n    descriptionList: Object.freeze({\n      label: \"monkeys.design.catalog.descriptionList.label\",\n      description: \"monkeys.design.catalog.descriptionList.description\",\n    }),\n    contentPanel: Object.freeze({\n      label: \"monkeys.design.catalog.contentPanel.label\",\n      description: \"monkeys.design.catalog.contentPanel.description\",\n    }),\n    toolbar: Object.freeze({\n      label: \"monkeys.design.catalog.toolbar.label\",\n      description: \"monkeys.design.catalog.toolbar.description\",\n    }),\n    status: Object.freeze({\n      label: \"monkeys.design.catalog.status.label\",\n      description: \"monkeys.design.catalog.status.description\",\n    }),\n    professionalLeaf: Object.freeze({\n      label: \"monkeys.design.catalog.professionalLeaf.label\",\n      description: \"monkeys.design.catalog.professionalLeaf.description\",\n    }),\n  }),\n  status: Object.freeze({\n    loading: Object.freeze({\n      title: \"monkeys.design.capability.status.loading.title\",\n      description: \"monkeys.design.capability.status.loading.description\",\n    }),\n    empty: Object.freeze({\n      title: \"monkeys.design.capability.status.empty.title\",\n      description: \"monkeys.design.capability.status.empty.description\",\n    }),\n    error: Object.freeze({\n      title: \"monkeys.design.capability.status.error.title\",\n      description: \"monkeys.design.capability.status.error.description\",\n    }),\n    forbidden: Object.freeze({\n      title: \"monkeys.design.capability.status.forbidden.title\",\n      description: \"monkeys.design.capability.status.forbidden.description\",\n    }),\n    retry: \"monkeys.design.capability.status.retry.label\",\n  }),\n  shellLayout: Object.freeze({\n    resizeSidebar: \"monkeys.design.capability.shellLayout.resizeSidebar\",\n    collapseSidebar: \"monkeys.design.capability.shellLayout.collapseSidebar\",\n    expandSidebar: \"monkeys.design.capability.shellLayout.expandSidebar\",\n    resizeAside: \"monkeys.design.capability.shellLayout.resizeAside\",\n  }),\n  sidebarFilter: Object.freeze({\n    title: \"monkeys.design.capability.sidebarFilter.title\",\n    searchLabel: \"monkeys.design.capability.sidebarFilter.search.label\",\n    searchPlaceholder:\n      \"monkeys.design.capability.sidebarFilter.search.placeholder\",\n    groupLabel: \"monkeys.design.capability.sidebarFilter.group.label\",\n    optionLabel: \"monkeys.design.capability.sidebarFilter.option.label\",\n  }),\n  gallery: Object.freeze({\n    itemTitle: \"monkeys.design.capability.gallery.item.title\",\n    itemActivate: \"monkeys.design.capability.gallery.item.activate\",\n    loadMore: \"monkeys.design.capability.gallery.pagination.loadMore\",\n    loadingMore: \"monkeys.design.capability.gallery.pagination.loadingMore\",\n  }),\n  ontologyNavigator: Object.freeze({\n    empty: \"monkeys.design.capability.ontologyNavigator.empty\",\n    moreActions: \"monkeys.design.capability.ontologyNavigator.moreActions\",\n    searchLabel: \"monkeys.design.capability.ontologyNavigator.search.label\",\n    searchPlaceholder:\n      \"monkeys.design.capability.ontologyNavigator.search.placeholder\",\n    loadMore: \"monkeys.design.capability.ontologyNavigator.loadMore\",\n    loadingMore: \"monkeys.design.capability.ontologyNavigator.loadingMore\",\n  }),\n  dataToolbar: Object.freeze({\n    addRow: \"monkeys.design.capability.dataToolbar.addRow\",\n    blankRowName: \"monkeys.design.capability.dataToolbar.blankRowName\",\n    searchPlaceholder:\n      \"monkeys.design.capability.dataToolbar.search.placeholder\",\n    selection: \"monkeys.design.capability.dataToolbar.selection\",\n    gallerySettings: \"monkeys.design.capability.dataToolbar.gallerySettings\",\n    galleryPresentation: {\n      visibleColumns: \"monkeys.design.capability.dataToolbar.galleryPresentation.visibleColumns\",\n      coverField: \"monkeys.design.capability.dataToolbar.galleryPresentation.coverField\",\n      autoDetect: \"monkeys.design.capability.dataToolbar.galleryPresentation.autoDetect\",\n      cardDensity: \"monkeys.design.capability.dataToolbar.galleryPresentation.cardDensity\",\n      cardColumns: \"monkeys.design.capability.dataToolbar.galleryPresentation.cardColumns\",\n      detailColumns: \"monkeys.design.capability.dataToolbar.galleryPresentation.detailColumns\",\n      fieldVisibility: \"monkeys.design.capability.dataToolbar.galleryPresentation.fieldVisibility\",\n      fieldLimit: \"monkeys.design.capability.dataToolbar.galleryPresentation.fieldLimit\",\n      fieldLimitHint: \"monkeys.design.capability.dataToolbar.galleryPresentation.fieldLimitHint\",\n      layout: \"monkeys.design.capability.dataToolbar.galleryPresentation.layout\",\n      compact: \"monkeys.design.capability.dataToolbar.galleryPresentation.compact\",\n      comfortable: \"monkeys.design.capability.dataToolbar.galleryPresentation.comfortable\",\n      detailed: \"monkeys.design.capability.dataToolbar.galleryPresentation.detailed\",\n      autoColumns: \"monkeys.design.capability.dataToolbar.galleryPresentation.autoColumns\",\n      columns: \"monkeys.design.capability.dataToolbar.galleryPresentation.columns\",\n      bentoColumns: \"monkeys.design.capability.dataToolbar.galleryPresentation.bentoColumns\",\n      topLimit: \"monkeys.design.capability.dataToolbar.galleryPresentation.topLimit\",\n      allFields: \"monkeys.design.capability.dataToolbar.galleryPresentation.allFields\",\n      adaptiveGrid: \"monkeys.design.capability.dataToolbar.galleryPresentation.adaptiveGrid\",\n      masonry: \"monkeys.design.capability.dataToolbar.galleryPresentation.masonry\",\n    },\n  }),\n  ontologyTable: Object.freeze({\n    label: \"monkeys.design.capability.ontologyTable.label\",\n    empty: \"monkeys.design.capability.ontologyTable.empty\",\n    activate: \"monkeys.design.capability.ontologyTable.activate\",\n    select: \"monkeys.design.capability.ontologyTable.select\",\n    sort: \"monkeys.design.capability.ontologyTable.sort\",\n    loadMore: \"monkeys.design.capability.ontologyTable.loadMore\",\n    loadingMore: \"monkeys.design.capability.ontologyTable.loadingMore\",\n  }),\n  cardGrid: Object.freeze({\n    empty: \"monkeys.design.capability.cardGrid.empty\",\n    activate: \"monkeys.design.capability.cardGrid.activate\",\n    select: \"monkeys.design.capability.cardGrid.select\",\n    loadMore: \"monkeys.design.capability.cardGrid.loadMore\",\n    loadingMore: \"monkeys.design.capability.cardGrid.loadingMore\",\n  }),\n  pagination: Object.freeze({\n    label: \"monkeys.design.capability.pagination.label\",\n    loadMore: \"monkeys.design.capability.pagination.loadMore\",\n    loadingMore: \"monkeys.design.capability.pagination.loadingMore\",\n  }),\n  recordDetail: Object.freeze({\n    edit: \"monkeys.design.capability.recordDetail.edit\",\n    close: \"monkeys.design.capability.recordDetail.close\",\n    attachments: \"monkeys.design.capability.recordDetail.attachments\",\n    previous: \"monkeys.design.capability.recordDetail.previous\",\n    next: \"monkeys.design.capability.recordDetail.next\",\n  }),\n  recordEditor: Object.freeze({\n    submit: \"monkeys.design.capability.recordEditor.submit\",\n    cancel: \"monkeys.design.capability.recordEditor.cancel\",\n    optionsEmpty: \"monkeys.design.capability.recordEditor.options.empty\",\n    optionsLoadMore: \"monkeys.design.capability.recordEditor.options.loadMore\",\n    optionsLoadingMore:\n      \"monkeys.design.capability.recordEditor.options.loadingMore\",\n    jsonInvalid: \"monkeys.design.capability.recordEditor.json.invalid\",\n  }),\n  recordHistory: Object.freeze({\n    title: \"monkeys.design.capability.recordHistory.title\",\n    close: \"monkeys.design.capability.recordHistory.close\",\n    commits: \"monkeys.design.capability.recordHistory.commits\",\n    loadMore: \"monkeys.design.capability.recordHistory.loadMore\",\n    loadingMore: \"monkeys.design.capability.recordHistory.loadingMore\",\n    selected: \"monkeys.design.capability.recordHistory.selected\",\n    diff: \"monkeys.design.capability.recordHistory.diff\",\n    field: \"monkeys.design.capability.recordHistory.diff.field\",\n    before: \"monkeys.design.capability.recordHistory.diff.before\",\n    after: \"monkeys.design.capability.recordHistory.diff.after\",\n    noDiff: \"monkeys.design.capability.recordHistory.diff.empty\",\n    reason: \"monkeys.design.capability.recordHistory.reason\",\n    reasonDescription:\n      \"monkeys.design.capability.recordHistory.reason.description\",\n    rollback: \"monkeys.design.capability.recordHistory.rollback\",\n    delete: \"monkeys.design.capability.recordHistory.delete\",\n  }),\n  ontologyManagement: Object.freeze({\n    title: \"monkeys.design.capability.ontologyManagement.title\",\n    markerDescription: \"monkeys.design.capability.ontologyManagement.markerDescription\",\n    create: \"monkeys.design.capability.ontologyManagement.create\",\n    edit: \"monkeys.design.capability.ontologyManagement.edit\",\n    delete: \"monkeys.design.capability.ontologyManagement.delete\",\n    import: \"monkeys.design.capability.ontologyManagement.import\",\n    description: \"monkeys.design.capability.ontologyManagement.description\",\n    submit: \"monkeys.design.capability.ontologyManagement.submit\",\n    cancel: \"monkeys.design.capability.ontologyManagement.cancel\",\n    displayName:\n      \"monkeys.design.capability.ontologyManagement.field.displayName\",\n    label: \"monkeys.design.capability.ontologyManagement.field.label\",\n    templateKey:\n      \"monkeys.design.capability.ontologyManagement.field.templateKey\",\n    templateName:\n      \"monkeys.design.capability.ontologyManagement.field.templateName\",\n    templateDescription:\n      \"monkeys.design.capability.ontologyManagement.field.templateDescription\",\n    templateTags:\n      \"monkeys.design.capability.ontologyManagement.field.templateTags\",\n    templateTagsDescription:\n      \"monkeys.design.capability.ontologyManagement.field.templateTagsDescription\",\n    creatorCurrentUser:\n      \"monkeys.design.capability.ontologyManagement.field.creatorCurrentUser\",\n    creatorCurrentUserShort:\n      \"monkeys.design.capability.ontologyManagement.field.creatorCurrentUserShort\",\n    defaultViewTemplatesDescription:\n      \"monkeys.design.capability.ontologyManagement.field.defaultViewTemplatesDescription\",\n    defaultViewTemplate:\n      \"monkeys.design.capability.ontologyManagement.field.defaultViewTemplate\",\n    defaultSelectedView:\n      \"monkeys.design.capability.ontologyManagement.field.defaultSelectedView\",\n    tagFilterEnabled:\n      \"monkeys.design.capability.ontologyManagement.field.tagFilterEnabled\",\n    tagFilterEmpty:\n      \"monkeys.design.capability.ontologyManagement.field.tagFilterEmpty\",\n    tableColumnsSummary:\n      \"monkeys.design.capability.ontologyManagement.field.tableColumnsSummary\",\n    editTemplateDetails:\n      \"monkeys.design.capability.ontologyManagement.field.editTemplateDetails\",\n    editTemplateDetailsDescription:\n      \"monkeys.design.capability.ontologyManagement.field.editTemplateDetailsDescription\",\n    filterInclude:\n      \"monkeys.design.capability.ontologyManagement.filter.include\",\n    filterAny: \"monkeys.design.capability.ontologyManagement.filter.any\",\n    filterExclude:\n      \"monkeys.design.capability.ontologyManagement.filter.exclude\",\n    filterNoTags: \"monkeys.design.capability.ontologyManagement.filter.noTags\",\n    filterSearch: \"monkeys.design.capability.ontologyManagement.filter.search\",\n    filterTagGroup:\n      \"monkeys.design.capability.ontologyManagement.filter.tagGroup\",\n    filterAllGroups:\n      \"monkeys.design.capability.ontologyManagement.filter.allGroups\",\n    filterAddOrGroup:\n      \"monkeys.design.capability.ontologyManagement.filter.addOrGroup\",\n    filterNoOrGroups:\n      \"monkeys.design.capability.ontologyManagement.filter.noOrGroups\",\n    filterOrGroup:\n      \"monkeys.design.capability.ontologyManagement.filter.orGroup\",\n    filterDeleteGroup:\n      \"monkeys.design.capability.ontologyManagement.filter.deleteGroup\",\n    filterSupplement:\n      \"monkeys.design.capability.ontologyManagement.filter.supplement\",\n    filterConfigureSupplement:\n      \"monkeys.design.capability.ontologyManagement.filter.configureSupplement\",\n    filterClearSupplement:\n      \"monkeys.design.capability.ontologyManagement.filter.clearSupplement\",\n    filterSupplementMode:\n      \"monkeys.design.capability.ontologyManagement.filter.supplementMode\",\n    filterModeOr: \"monkeys.design.capability.ontologyManagement.filter.modeOr\",\n    filterModeAnd:\n      \"monkeys.design.capability.ontologyManagement.filter.modeAnd\",\n    filterModeCombination:\n      \"monkeys.design.capability.ontologyManagement.filter.modeCombination\",\n    filterRequiredAll:\n      \"monkeys.design.capability.ontologyManagement.filter.requiredAll\",\n    filterRequiredAny:\n      \"monkeys.design.capability.ontologyManagement.filter.requiredAny\",\n    filterAdvancedRules:\n      \"monkeys.design.capability.ontologyManagement.filter.advancedRules\",\n    filterAdvancedRulesDescription:\n      \"monkeys.design.capability.ontologyManagement.filter.advancedRulesDescription\",\n    filterRemoveAdvancedRules:\n      \"monkeys.design.capability.ontologyManagement.filter.removeAdvancedRules\",\n    defaultViewTemplates:\n      \"monkeys.design.capability.ontologyManagement.field.defaultViewTemplates\",\n    markerExists:\n      \"monkeys.design.capability.ontologyManagement.field.markerExists\",\n    targetOntology:\n      \"monkeys.design.capability.ontologyManagement.field.targetOntology\",\n    deleteTemplate:\n      \"monkeys.design.capability.ontologyManagement.action.deleteTemplate\",\n    deleteMarker:\n      \"monkeys.design.capability.ontologyManagement.action.deleteMarker\",\n    createDefaultViews:\n      \"monkeys.design.capability.ontologyManagement.action.createDefaultViews\",\n    techpackPreset:\n      \"monkeys.design.capability.ontologyManagement.action.techpackPreset\",\n    trendPreset:\n      \"monkeys.design.capability.ontologyManagement.action.trendPreset\",\n    addTemplate:\n      \"monkeys.design.capability.ontologyManagement.action.addTemplate\",\n    noTemplates:\n      \"monkeys.design.capability.ontologyManagement.empty.noTemplates\",\n    descriptionField:\n      \"monkeys.design.capability.ontologyManagement.field.description\",\n    bodyKind: \"monkeys.design.capability.ontologyManagement.field.bodyKind\",\n    visible: \"monkeys.design.capability.ontologyManagement.field.visible\",\n    kernelReadAllTeams:\n      \"monkeys.design.capability.ontologyManagement.field.kernelReadAllTeams\",\n    publicRead: \"monkeys.design.capability.ontologyManagement.field.publicRead\",\n    publicWrite:\n      \"monkeys.design.capability.ontologyManagement.field.publicWrite\",\n    customizeViewModes:\n      \"monkeys.design.capability.ontologyManagement.field.customizeViewModes\",\n    availableViewModes:\n      \"monkeys.design.capability.ontologyManagement.field.availableViewModes\",\n    defaultViewMode:\n      \"monkeys.design.capability.ontologyManagement.field.defaultViewMode\",\n    viewModeTable:\n      \"monkeys.design.capability.ontologyManagement.field.viewMode.table\",\n    viewModeCard:\n      \"monkeys.design.capability.ontologyManagement.field.viewMode.card\",\n    viewModeGallery:\n      \"monkeys.design.capability.ontologyManagement.field.viewMode.gallery\",\n    viewModeTrendMatrix:\n      \"monkeys.design.capability.ontologyManagement.field.viewMode.trendMatrix\",\n    selectAtLeastOneViewMode:\n      \"monkeys.design.capability.ontologyManagement.field.validation.selectAtLeastOneViewMode\",\n    profile: \"monkeys.design.capability.ontologyManagement.field.profile\",\n    sourceOntologyId:\n      \"monkeys.design.capability.ontologyManagement.field.sourceOntologyId\",\n    viewId: \"monkeys.design.capability.ontologyManagement.field.viewId\",\n    name: \"monkeys.design.capability.ontologyManagement.field.name\",\n    indexMode: \"monkeys.design.capability.ontologyManagement.field.indexMode\",\n    parentId: \"monkeys.design.capability.ontologyManagement.field.parentId\",\n    viewType:\n      \"monkeys.design.capability.ontologyManagement.field.viewType.label\",\n    viewTypeFilter:\n      \"monkeys.design.capability.ontologyManagement.field.viewType.filter\",\n    viewTypeContainer:\n      \"monkeys.design.capability.ontologyManagement.field.viewType.container\",\n    sourceContainerViewId:\n      \"monkeys.design.capability.ontologyManagement.field.sourceContainerViewId\",\n    displayConfig:\n      \"monkeys.design.capability.ontologyManagement.field.displayConfig\",\n    sort: \"monkeys.design.capability.ontologyManagement.field.sort\",\n    managedFileId:\n      \"monkeys.design.capability.ontologyManagement.field.managedFileId\",\n    mode: \"monkeys.design.capability.ontologyManagement.field.mode\",\n    columnId: \"monkeys.design.capability.ontologyManagement.field.columnId\",\n    containerViewId:\n      \"monkeys.design.capability.ontologyManagement.field.containerViewId\",\n    type: \"monkeys.design.capability.ontologyManagement.field.type\",\n    config: \"monkeys.design.capability.ontologyManagement.field.config\",\n    scopeContainerViewId:\n      \"monkeys.design.capability.ontologyManagement.field.scopeContainerViewId\",\n    attached:\n      \"monkeys.design.capability.ontologyManagement.field.attached.label\",\n    attachedTrue:\n      \"monkeys.design.capability.ontologyManagement.field.attached.true\",\n    attachedFalse:\n      \"monkeys.design.capability.ontologyManagement.field.attached.false\",\n    pageSize: \"monkeys.design.capability.ontologyManagement.field.pageSize\",\n    tagGroupIds:\n      \"monkeys.design.capability.ontologyManagement.field.tagGroupIds\",\n    featureColumnIds:\n      \"monkeys.design.capability.ontologyManagement.field.featureColumnIds\",\n    basicFieldIds:\n      \"monkeys.design.capability.ontologyManagement.field.basicFieldIds\",\n    columnType:\n      \"monkeys.design.capability.ontologyManagement.field.columnType.label\",\n    columnTypeFeature:\n      \"monkeys.design.capability.ontologyManagement.field.columnType.feature\",\n    columnTypePreview:\n      \"monkeys.design.capability.ontologyManagement.field.columnType.preview\",\n    featureColumnId:\n      \"monkeys.design.capability.ontologyManagement.field.featureColumnId\",\n    itemLimit: \"monkeys.design.capability.ontologyManagement.field.itemLimit\",\n    shareOperation:\n      \"monkeys.design.capability.ontologyManagement.field.shareOperation.label\",\n    shareOperationUpsert:\n      \"monkeys.design.capability.ontologyManagement.field.shareOperation.upsert\",\n    shareOperationRevoke:\n      \"monkeys.design.capability.ontologyManagement.field.shareOperation.revoke\",\n    targetType:\n      \"monkeys.design.capability.ontologyManagement.field.targetType.label\",\n    targetTypeUser:\n      \"monkeys.design.capability.ontologyManagement.field.targetType.user\",\n    targetTypeTeam:\n      \"monkeys.design.capability.ontologyManagement.field.targetType.team\",\n    targetId: \"monkeys.design.capability.ontologyManagement.field.targetId\",\n    permissions:\n      \"monkeys.design.capability.ontologyManagement.field.permissions\",\n    expiresAt: \"monkeys.design.capability.ontologyManagement.field.expiresAt\",\n    actions: Object.freeze({\n      \"ontology-create\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyCreate\",\n      \"ontology-update\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyUpdate\",\n      \"ontology-delete\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyDelete\",\n      \"ontology-marker\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyMarker\",\n      \"ontology-default-views\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyDefaultViews\",\n      \"ontology-snapshot\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologySnapshot\",\n      \"ontology-import-jsonl\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyImportJsonl\",\n      \"ontology-import-records-jsonl\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyImportRecordsJsonl\",\n      \"ontology-import-tag-relations-jsonl\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyImportTagRelationsJsonl\",\n      \"ontology-import-text-column-jsonl\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyImportTextColumnJsonl\",\n      \"ontology-import-json-column-jsonl\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyImportJsonColumnJsonl\",\n      \"ontology-import-relation-column-jsonl\":\n        \"monkeys.design.capability.ontologyManagement.action.ontologyImportRelationColumnJsonl\",\n      \"feature-column-create\":\n        \"monkeys.design.capability.ontologyManagement.action.featureColumnCreate\",\n      \"feature-column-update\":\n        \"monkeys.design.capability.ontologyManagement.action.featureColumnUpdate\",\n      \"feature-column-attachment-set\":\n        \"monkeys.design.capability.ontologyManagement.action.featureColumnAttachmentSet\",\n      \"view-export-jsonl\":\n        \"monkeys.design.capability.ontologyManagement.action.viewExportJsonl\",\n      \"feature-column-images-export\":\n        \"monkeys.design.capability.ontologyManagement.action.featureColumnImagesExport\",\n      \"view-create\":\n        \"monkeys.design.capability.ontologyManagement.action.viewCreate\",\n      \"view-update\":\n        \"monkeys.design.capability.ontologyManagement.action.viewUpdate\",\n      \"view-delete\":\n        \"monkeys.design.capability.ontologyManagement.action.viewDelete\",\n      \"view-share\":\n        \"monkeys.design.capability.ontologyManagement.action.viewShare\",\n    }),\n  }),\n  ontologyTrendMatrix: Object.freeze({\n    label: \"monkeys.design.capability.ontologyTrendMatrix.label\",\n    row: \"monkeys.design.capability.ontologyTrendMatrix.row\",\n    window: \"monkeys.design.capability.ontologyTrendMatrix.window\",\n    select: \"monkeys.design.capability.ontologyTrendMatrix.select\",\n  }),\n  dataContextBar: Object.freeze({\n    label: \"monkeys.design.capability.dataContextBar.label\",\n    filter: \"monkeys.design.capability.dataContextBar.filter\",\n    searchLabel: \"monkeys.design.capability.dataContextBar.search.label\",\n    searchPlaceholder:\n      \"monkeys.design.capability.dataContextBar.search.placeholder\",\n    clear: \"monkeys.design.capability.dataContextBar.clear\",\n    clearAll: \"monkeys.design.capability.dataContextBar.clearAll\",\n    tagFilterClear: \"monkeys.design.capability.dataContextBar.tagFilterClear\",\n    filterDescription:\n      \"monkeys.design.capability.dataContextBar.filterDescription\",\n    tagScope: \"monkeys.design.capability.dataContextBar.tagScope\",\n    currentViewTags: \"monkeys.design.capability.dataContextBar.currentViewTags\",\n    allTags: \"monkeys.design.capability.dataContextBar.allTags\",\n    panelFilter: \"monkeys.design.capability.dataContextBar.panelFilter\",\n    searchTags: \"monkeys.design.capability.dataContextBar.searchTags\",\n    noAvailableTags: \"monkeys.design.capability.dataContextBar.noAvailableTags\",\n    loadedAll: \"monkeys.design.capability.dataContextBar.loadedAll\",\n    refreshTags: \"monkeys.design.capability.dataContextBar.refreshTags\",\n    confirm: \"monkeys.design.capability.dataContextBar.confirm\",\n    tagPanel: \"monkeys.design.capability.dataContextBar.tagPanel\",\n    selectPanel: \"monkeys.design.capability.dataContextBar.selectPanel\",\n    noPanels: \"monkeys.design.capability.dataContextBar.noPanels\",\n    noPanelGroups: \"monkeys.design.capability.dataContextBar.noPanelGroups\",\n    singleSelect: \"monkeys.design.capability.dataContextBar.singleSelect\",\n    multiSelect: \"monkeys.design.capability.dataContextBar.multiSelect\",\n    defaultGroup: \"monkeys.design.capability.dataContextBar.defaultGroup\",\n    more: \"monkeys.design.capability.dataContextBar.more\",\n    dashboardContext:\n      \"monkeys.design.capability.dataContextBar.dashboardContext\",\n    contextCount: \"monkeys.design.capability.dataContextBar.contextCount\",\n    fields: Object.freeze({\n      search: \"monkeys.design.capability.dataContextBar.field.search\",\n      tagIds: \"monkeys.design.capability.dataContextBar.field.tagIds\",\n      tagGroupIds: \"monkeys.design.capability.dataContextBar.field.tagGroupIds\",\n      timeFrom: \"monkeys.design.capability.dataContextBar.field.timeFrom\",\n      timeTo: \"monkeys.design.capability.dataContextBar.field.timeTo\",\n      clickedField:\n        \"monkeys.design.capability.dataContextBar.field.clickedField\",\n      clickedValue:\n        \"monkeys.design.capability.dataContextBar.field.clickedValue\",\n      dashboardDrilldown:\n        \"monkeys.design.capability.dataContextBar.field.dashboardDrilldown\",\n    }),\n  }),\n});\n\nexport const DESIGN_CAPABILITY_NATIVE_ANALYTICS_MESSAGES = Object.freeze({\n  \"en-US\": Object.freeze({\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.markerDescription]: \"Configure the ontology marker and default views.\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.label]: \"Marker name\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.targetOntology]: \"Target ontology\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateKey]: \"Template key\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateName]: \"View name\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateDescription]: \"View description\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateTags]: \"Tag filters\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateTagsDescription]: \"Choose the tags included, matched, or excluded by this view.\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.creatorCurrentUser]: \"Only show records created by the current user\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.creatorCurrentUserShort]: \"Current user\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.defaultViewTemplatesDescription]: \"Configure default views and their filters for this ontology.\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.defaultViewTemplate]: \"Default view template\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.defaultSelectedView]: \"Open by default\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.tagFilterEnabled]: \"Tag filters configured\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.tagFilterEmpty]: \"No tag filters\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.tableColumnsSummary]: \"{count} table columns configured\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.editTemplateDetails]: \"Edit view template\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.editTemplateDetailsDescription]: \"Configure the name, order, and filters.\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.defaultViewTemplates]: \"Default view templates\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.markerExists]: \"Ontology marker exists\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterInclude]: \"Include all\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAny]: \"Match any\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterExclude]: \"Exclude\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterNoTags]: \"No matching tags\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterSearch]: \"Search tags\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterTagGroup]: \"Tag group\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAllGroups]: \"All tag groups\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAddOrGroup]: \"Add OR group\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterNoOrGroups]: \"No OR groups\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterOrGroup]: \"OR group {n}\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterDeleteGroup]: \"Delete group\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterSupplement]: \"Supplement rules for {name}\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterConfigureSupplement]: \"Configure supplement rules\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterClearSupplement]: \"Clear supplement rules\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterSupplementMode]: \"Match mode\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterModeOr]: \"Any condition (OR)\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterModeAnd]: \"All conditions (AND)\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterModeCombination]: \"Combined conditions\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterRequiredAll]: \"Require all tags\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterRequiredAny]: \"Require at least one tag\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAdvancedRules]: \"{count} advanced rules\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAdvancedRulesDescription]: \"Existing rules are preserved unless explicitly removed.\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterRemoveAdvancedRules]: \"Remove advanced rules\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.deleteTemplate]: \"Delete template\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.deleteMarker]: \"Delete marker\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.createDefaultViews]: \"Create default views\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.addTemplate]: \"Add view template\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.noTemplates]: \"No default view templates\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.actions[\"ontology-marker\"]]: \"Set ontology marker\",\n    \"monkeys.design.capability.pagination.previous\": \"Previous page\",\n    \"monkeys.design.capability.pagination.next\": \"Next page\",\n    \"monkeys.design.iconPicker.confirm\": \"Confirm\",\n    \"monkeys.design.iconPicker.categories\": \"Categories\",\n    \"monkeys.design.iconPicker.icon\": \"Icon\",\n    \"monkeys.design.iconPicker.choose\": \"Choose an icon\",\n    \"monkeys.design.iconPicker.current\": \"Current icon\",\n    \"monkeys.design.iconPicker.reset\": \"Reset\",\n    \"monkeys.design.iconPicker.search\": \"Search icons\",\n    \"monkeys.design.iconPicker.category\": \"Category\",\n    \"monkeys.design.iconPicker.background\": \"Background color\",\n    \"monkeys.design.iconPicker.upload\": \"Upload icon\",\n    \"monkeys.design.iconPicker.uploadFailed\": \"Icon upload failed\",\n    \"monkeys.design.iconPicker.loading\": \"Loading icons\",\n    \"monkeys.design.iconPicker.retry\": \"Retry\",\n    \"monkeys.design.iconPicker.empty\": \"No matching icons\",\n    \"monkeys.design.iconPicker.close\": \"Close\",\n    \"monkeys.design.iconPicker.emoji\": \"Emoji\",\n    \"monkeys.design.iconPicker.catalogFailed\": \"Unable to load icons\",\n\n    \"monkeys.design.capability.choicePicker.label\": \"Choice picker\",\n    \"monkeys.design.capability.choicePicker.description\": \"Search and select a paginated collection.\",\n    \"monkeys.design.capability.runtimeTerminal.status\": \"Terminal\",\n    \"monkeys.design.capability.runtimeTerminal.waiting\": \"Connecting to terminal…\",\n    \"monkeys.design.capability.recordEditor.add\": \"Add item\",\n    \"monkeys.design.capability.recordEditor.remove\": \"Remove item\",\n    \"monkeys.design.capability.recordEditor.moveUp\": \"Move up\",\n    \"monkeys.design.capability.recordEditor.moveDown\": \"Move down\",\n    \"monkeys.design.capability.recordEditor.reset\": \"Reset\",\n    \"monkeys.design.capability.filePicker.label\": \"Choose file\",\n    \"monkeys.design.capability.filePicker.description\": \"Select a local file for a governed action.\",\n    \"monkeys.design.capability.filePicker.cancel\": \"Clear file\",\n    \"monkeys.design.capability.filePicker.tooLarge\": \"The file exceeds the allowed size.\",\n    \"monkeys.design.capability.filePicker.invalidType\": \"Choose a supported file type.\",\n    \"monkeys.design.capability.filePicker.registrationFailed\": \"The file could not be selected. Try again.\",\n    \"monkeys.design.capability.recordEditor.date.invalid\": \"Enter a valid date and time within the allowed range.\",\n    \"monkeys.design.capability.recordEditor.pick\": \"Choose\",\n    \"monkeys.design.capability.recordEditor.selectionSummary\": \"Selected: {{count}}\",\n    \"monkeys.design.capability.recordEditor.secretKeep\": \"Keep existing\",\n    \"monkeys.design.capability.recordEditor.secretMode\": \"{field} update mode\",\n    \"monkeys.design.capability.recordEditor.secretReplace\": \"Replace\",\n    \"monkeys.design.capability.recordEditor.secretClear\": \"Clear\",\n\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.inspect]: \"Inspect observation\",\n    \"monkeys.design.capability.summaryChart.label\": \"Summary chart\",\n    \"monkeys.design.capability.dataToolbar.moreActions\": \"More actions\",\n    \"monkeys.design.capability.summaryChart.description\": \"Compare numeric series and category totals.\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.noPoints]: \"No observations in this range\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.point]: \"{xLabel} {x}, {yLabel} {y}\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.label]: \"Numeric series\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.description]: \"Inspect numeric observations with range zoom and expansion.\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.start]: \"Range start\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.end]: \"Range end\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.reset]: \"Reset range\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.expand]: \"Expand chart\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.close]: \"Close chart\",\n    [DESIGN_CAPABILITY_I18N_KEYS.shellLayout.resizeSidebar]: \"Resize sidebar\",\n    [DESIGN_CAPABILITY_I18N_KEYS.shellLayout.collapseSidebar]:\n      \"Collapse sidebar\",\n    [DESIGN_CAPABILITY_I18N_KEYS.shellLayout.expandSidebar]: \"Expand sidebar\",\n    [DESIGN_CAPABILITY_I18N_KEYS.shellLayout.resizeAside]:\n      \"Resize detail panel\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyNavigator.moreActions]: \"More actions\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataToolbar.addRow]: \"Add row\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataToolbar.blankRowName]: \"Blank Row\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.label]:\n      \"Ontology trend matrix\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.row]: \"Row\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.window]:\n      \"Visible rows {start}-{end} of {total}\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.select]:\n      \"Select {row}, {column}, {value}\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.label]:\n      \"Data filters and drilldown context\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.filter]: \"Filters\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.searchLabel]: \"Search data\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.searchPlaceholder]: \"Search\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.clear]: \"Clear\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.clearAll]: \"Clear all\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.tagFilterClear]: \"Clear\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.filterDescription]:\n      \"Filter assets by selecting tags via tag panel or manual search.\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.tagScope]: \"Tag scope\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.currentViewTags]:\n      \"Current view\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.allTags]: \"All tags\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.panelFilter]: \"Panel filter\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.searchTags]: \"Search tags\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.noAvailableTags]:\n      \"No available tags\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.loadedAll]: \"All loaded\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.refreshTags]: \"Refresh tags\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.confirm]: \"Confirm\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.tagPanel]: \"Tag panel\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.selectPanel]: \"Select a panel\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.noPanels]:\n      \"No available panels\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.noPanelGroups]:\n      \"No tag groups in this panel\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.singleSelect]: \"Single select\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.multiSelect]: \"Multi select\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.defaultGroup]: \"Default group\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.more]: \"+{count} more\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.dashboardContext]:\n      \"Dashboard context\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.contextCount]:\n      \"{count} context values\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.search]: \"Search\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.tagIds]: \"Tags\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.tagGroupIds]:\n      \"Tag groups\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.timeFrom]: \"From\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.timeTo]: \"To\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.clickedField]:\n      \"Drilldown field\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.clickedValue]:\n      \"Drilldown value\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.dashboardDrilldown]:\n      \"Dashboard drilldown\",\n  }),\n  \"zh-CN\": Object.freeze({\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.markerDescription]: \"配置仓库标记和默认视图。\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.label]: \"标记名称\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.targetOntology]: \"目标仓库\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateKey]: \"模板标识\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateName]: \"视图名称\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateDescription]: \"视图描述\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateTags]: \"标签筛选\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.templateTagsDescription]: \"设置该视图包含、匹配或排除的标签。\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.creatorCurrentUser]: \"仅显示当前用户创建的数据\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.creatorCurrentUserShort]: \"当前用户\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.defaultViewTemplatesDescription]: \"为仓库配置默认视图及其筛选条件。\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.defaultViewTemplate]: \"默认视图模板\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.defaultSelectedView]: \"默认打开\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.tagFilterEnabled]: \"已配置标签筛选\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.tagFilterEmpty]: \"未配置标签筛选\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.tableColumnsSummary]: \"已配置 {count} 个表格列\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.editTemplateDetails]: \"编辑视图模板\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.editTemplateDetailsDescription]: \"配置名称、排序和筛选条件。\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.defaultViewTemplates]: \"默认视图模板\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.markerExists]: \"已有仓库标记\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterInclude]: \"全部包含\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAny]: \"匹配任意\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterExclude]: \"排除\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterNoTags]: \"没有匹配的标签\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterSearch]: \"搜索标签\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterTagGroup]: \"标签组\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAllGroups]: \"全部标签组\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAddOrGroup]: \"添加或条件组\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterNoOrGroups]: \"暂无或条件组\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterOrGroup]: \"或条件组 {n}\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterDeleteGroup]: \"删除条件组\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterSupplement]: \"{name} 的补充规则\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterConfigureSupplement]: \"配置补充规则\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterClearSupplement]: \"清除补充规则\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterSupplementMode]: \"匹配方式\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterModeOr]: \"任意条件（OR）\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterModeAnd]: \"全部条件（AND）\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterModeCombination]: \"组合条件\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterRequiredAll]: \"必须包含全部标签\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterRequiredAny]: \"至少包含一个标签\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAdvancedRules]: \"{count} 项高级规则\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterAdvancedRulesDescription]: \"已有规则将保留，除非明确移除。\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.filterRemoveAdvancedRules]: \"移除高级规则\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.deleteTemplate]: \"删除模板\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.deleteMarker]: \"删除仓库标记\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.createDefaultViews]: \"创建默认视图\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.addTemplate]: \"添加视图模板\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.noTemplates]: \"暂无默认视图模板\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.actions[\"ontology-marker\"]]: \"设置仓库标记\",\n    \"monkeys.design.capability.pagination.previous\": \"上一页\",\n    \"monkeys.design.capability.pagination.next\": \"下一页\",\n    \"monkeys.design.iconPicker.confirm\": \"确认\",\n    \"monkeys.design.iconPicker.categories\": \"分类\",\n    \"monkeys.design.iconPicker.icon\": \"图标\",\n    \"monkeys.design.iconPicker.choose\": \"选择图标\",\n    \"monkeys.design.iconPicker.current\": \"当前图标\",\n    \"monkeys.design.iconPicker.reset\": \"重置\",\n    \"monkeys.design.iconPicker.search\": \"搜索图标\",\n    \"monkeys.design.iconPicker.category\": \"分类\",\n    \"monkeys.design.iconPicker.background\": \"背景颜色\",\n    \"monkeys.design.iconPicker.upload\": \"上传图标\",\n    \"monkeys.design.iconPicker.uploadFailed\": \"图标上传失败\",\n    \"monkeys.design.iconPicker.loading\": \"正在加载图标\",\n    \"monkeys.design.iconPicker.retry\": \"重试\",\n    \"monkeys.design.iconPicker.empty\": \"没有匹配的图标\",\n    \"monkeys.design.iconPicker.close\": \"关闭\",\n    \"monkeys.design.iconPicker.emoji\": \"表情\",\n    \"monkeys.design.iconPicker.catalogFailed\": \"无法加载图标\",\n\n    \"monkeys.design.capability.choicePicker.label\": \"选项选择器\",\n    \"monkeys.design.capability.choicePicker.description\": \"搜索并选择分页集合中的选项。\",\n    \"monkeys.design.capability.summaryChart.label\": \"汇总图表\",\n    \"monkeys.design.capability.dataToolbar.moreActions\": \"更多操作\",\n    \"monkeys.design.capability.summaryChart.description\": \"比较数值序列与分类汇总。\",\n    \"monkeys.design.capability.runtimeTerminal.status\": \"终端\",\n    \"monkeys.design.capability.runtimeTerminal.waiting\": \"正在连接终端…\",\n    \"monkeys.design.capability.recordEditor.add\": \"添加条目\",\n    \"monkeys.design.capability.recordEditor.remove\": \"删除条目\",\n    \"monkeys.design.capability.recordEditor.moveUp\": \"上移\",\n    \"monkeys.design.capability.recordEditor.moveDown\": \"下移\",\n    \"monkeys.design.capability.recordEditor.reset\": \"重置\",\n    \"monkeys.design.capability.filePicker.label\": \"选择文件\",\n    \"monkeys.design.capability.filePicker.description\": \"选择本地文件以执行受治理操作。\",\n    \"monkeys.design.capability.filePicker.cancel\": \"清除文件\",\n    \"monkeys.design.capability.filePicker.tooLarge\": \"文件大小超过允许范围。\",\n    \"monkeys.design.capability.filePicker.invalidType\": \"请选择支持的文件类型。\",\n    \"monkeys.design.capability.filePicker.registrationFailed\": \"无法选择该文件，请重试。\",\n    \"monkeys.design.capability.recordEditor.date.invalid\": \"请输入允许范围内的有效日期和时间。\",\n    \"monkeys.design.capability.recordEditor.pick\": \"选择\",\n    \"monkeys.design.capability.recordEditor.selectionSummary\": \"已选 {{count}} 项\",\n    \"monkeys.design.capability.recordEditor.secretKeep\": \"保留现有值\",\n    \"monkeys.design.capability.recordEditor.secretMode\": \"{field} 更新方式\",\n    \"monkeys.design.capability.recordEditor.secretReplace\": \"替换\",\n    \"monkeys.design.capability.recordEditor.secretClear\": \"清除\",\n\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.inspect]: \"查看观测点\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.noPoints]: \"此范围内没有观测点\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.point]: \"{xLabel} {x}, {yLabel} {y}\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.label]: \"数值序列\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.description]: \"查看数值观测，缩放范围并放大图表。\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.start]: \"范围起点\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.end]: \"范围终点\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.reset]: \"重置范围\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.expand]: \"放大图表\",\n    [DESIGN_CAPABILITY_I18N_KEYS.numericSeries.close]: \"关闭图表\",\n    [DESIGN_CAPABILITY_I18N_KEYS.shellLayout.resizeSidebar]: \"调整侧边栏宽度\",\n    [DESIGN_CAPABILITY_I18N_KEYS.shellLayout.collapseSidebar]: \"收起侧边栏\",\n    [DESIGN_CAPABILITY_I18N_KEYS.shellLayout.expandSidebar]: \"展开侧边栏\",\n    [DESIGN_CAPABILITY_I18N_KEYS.shellLayout.resizeAside]: \"调整详情侧边栏宽度\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyNavigator.moreActions]: \"更多操作\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataToolbar.addRow]: \"添加一行\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataToolbar.blankRowName]: \"空白行\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.label]: \"本体趋势矩阵\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.row]: \"行\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.window]:\n      \"当前显示第 {start}-{end} 行，共 {total} 行\",\n    [DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.select]:\n      \"选择 {row}、{column}、{value}\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.label]: \"数据筛选与钻取上下文\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.filter]: \"筛选\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.searchLabel]: \"搜索数据\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.searchPlaceholder]: \"搜索\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.clear]: \"清除\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.clearAll]: \"全部清除\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.tagFilterClear]: \"清空\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.filterDescription]:\n      \"通过标签面板或手动搜索，选择用于过滤资产的 Tag。\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.tagScope]: \"标签范围\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.currentViewTags]: \"当前视图\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.allTags]: \"全部标签\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.panelFilter]: \"面板筛选\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.searchTags]: \"搜索标签\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.noAvailableTags]:\n      \"暂无可用标签\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.loadedAll]: \"已加载全部\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.refreshTags]: \"刷新标签\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.confirm]: \"确定\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.tagPanel]: \"标签面板\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.selectPanel]: \"选择标签面板\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.noPanels]: \"暂无可用标签面板\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.noPanelGroups]:\n      \"当前面板没有标签组\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.singleSelect]: \"单选\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.multiSelect]: \"多选\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.defaultGroup]: \"默认标签组\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.more]: \"另有 {count} 项\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.dashboardContext]:\n      \"仪表盘上下文\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.contextCount]:\n      \"{count} 项上下文\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.search]: \"搜索\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.tagIds]: \"标签\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.tagGroupIds]: \"标签组\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.timeFrom]: \"开始时间\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.timeTo]: \"结束时间\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.clickedField]:\n      \"钻取字段\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.clickedValue]: \"钻取值\",\n    [DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields.dashboardDrilldown]:\n      \"仪表盘钻取\",\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 ReactNode, useEffect } from 'react';\n\nimport {\n  BaseButton,\n  BaseEmptyState,\n  BaseLoadingState,\n  BaseSystemState,\n} from '../base';\nimport type { CapabilityTranslate } from './contracts';\nimport { DESIGN_CAPABILITY_I18N_KEYS } from './i18n';\nimport { toast } from '../toast';\n\nexport type CapabilityStatusKind =\n  | 'loading'\n  | 'empty'\n  | 'error'\n  | 'forbidden';\n\nexport interface CapabilityStatusProps {\n  kind: CapabilityStatusKind;\n  translate: CapabilityTranslate;\n  code?: string;\n  titleKey?: string;\n  descriptionKey?: string;\n  actions?: ReactNode;\n  onRetry?: () => void;\n  presentation?: 'legacy-data-explorer';\n  loadingLabelKey?: string;\n  emptyLabelKey?: string;\n  errorLabelKey?: string;\n}\n\nconst STATUS_KEYS = DESIGN_CAPABILITY_I18N_KEYS.status;\n\nexport const CapabilityStatus = ({\n  kind,\n  translate,\n  code,\n  titleKey,\n  descriptionKey,\n  actions,\n  onRetry,\n  presentation,\n  loadingLabelKey,\n  emptyLabelKey,\n  errorLabelKey,\n}: CapabilityStatusProps) => {\n  const keys = STATUS_KEYS[kind];\n  const values = code ? { code } : undefined;\n  const title = translate(titleKey ?? keys.title, values);\n  const description = translate(descriptionKey ?? keys.description, values);\n  const resolvedActions = actions ?? (\n    kind === 'error' && onRetry ? (\n      <BaseButton\n        label={translate(STATUS_KEYS.retry)}\n        onClick={onRetry}\n      />\n    ) : undefined\n  );\n  const legacyErrorToastMessage =\n    presentation === 'legacy-data-explorer' && kind === 'error' && errorLabelKey\n      ? translate(errorLabelKey)\n      : undefined;\n\n  useEffect(() => {\n    if (legacyErrorToastMessage) toast.error(legacyErrorToastMessage);\n  }, [legacyErrorToastMessage]);\n\n  if (presentation === 'legacy-data-explorer') {\n    return (\n      <div\n        className=\"col-span-full flex h-full min-h-0 flex-1 flex-col overflow-hidden\"\n        data-presentation=\"legacy-data-explorer-status\"\n      >\n        {kind === 'loading' ? (\n          <BaseLoadingState variant=\"skeleton\" className=\"min-h-64\" title={loadingLabelKey ? translate(loadingLabelKey) : title} />\n        ) : (\n          <div className=\"flex h-64 items-center justify-center\">\n            <p className=\"text-muted-foreground\">\n              {translate(\n                emptyLabelKey ?? DESIGN_CAPABILITY_I18N_KEYS.status.empty.title,\n              )}\n            </p>\n          </div>\n        )}\n      </div>\n    );\n  }\n\n  if (kind === 'loading') {\n    return <BaseLoadingState variant=\"skeleton\" title={title} />;\n  }\n  if (kind === 'empty') {\n    return (\n      <BaseEmptyState\n        title={emptyLabelKey ? translate(emptyLabelKey) : title}\n        description={emptyLabelKey ? undefined : description}\n        actions={resolvedActions}\n      />\n    );\n  }\n  return (\n    <BaseSystemState\n      kind={kind === 'forbidden' ? 'permission' : 'error'}\n      title={title}\n      description={description}\n      actions={resolvedActions}\n    />\n  );\n};\n","import type { TransientFileRegistry } from './filePicker';\nimport type {\n  CapabilityManifest,\n  DeclarativeCapabilityAuthoringRegistration,\n  DesignCapabilityCatalogArtifact,\n  JsonObject,\n  JsonValue,\n  ProductContext,\n  RenderNode,\n  ViewProviderDescriptor,\n} from \"@inf-monkeys-tech/monkeys\";\nimport type { RenderTree } from \"@inf-monkeys-tech/monkeys\";\nimport type { ReactNode } from \"react\";\n\nimport type { RenderTreeNodeContext } from \"../runtime\";\n\nexport type CapabilityCatalogCategory =\n  | \"layout\"\n  | \"navigation\"\n  | \"data-view\"\n  | \"data-editor\"\n  | \"content\"\n  | \"status\"\n  | \"professional\";\n\nexport interface CapabilityOntologyCompatibility {\n  inputPort: string;\n  schemaRef: string;\n  mode: \"view\" | \"filter\";\n}\n\nexport interface CapabilityEditorMetadata {\n  eligible: boolean;\n  category: CapabilityCatalogCategory;\n  labelKey: string;\n  descriptionKey: string;\n  slots: readonly string[];\n  ontologyCompatibility: readonly CapabilityOntologyCompatibility[];\n}\n\nexport interface DesignCapabilityCatalogEntry {\n  manifest: CapabilityManifest;\n  provider: ViewProviderDescriptor;\n  editor: CapabilityEditorMetadata;\n  declarativeRegistration: DeclarativeCapabilityAuthoringRegistration;\n}\n\nexport interface CompiledDesignCapabilityCatalog {\n  entries: readonly DesignCapabilityCatalogEntry[];\n  manifests: readonly CapabilityManifest[];\n  providers: readonly ViewProviderDescriptor[];\n  entriesByProviderId: ReadonlyMap<string, DesignCapabilityCatalogEntry>;\n  entriesByCapabilityId: ReadonlyMap<\n    string,\n    readonly DesignCapabilityCatalogEntry[]\n  >;\n  requireProvider(providerId: string): DesignCapabilityCatalogEntry;\n  resolve(\n    capabilityId: string,\n    product: ProductContext,\n    preferredProviderId?: string,\n  ): DesignCapabilityCatalogEntry;\n}\n\nexport interface CompileDesignCapabilityCatalogArtifactInput {\n  catalog: CompiledDesignCapabilityCatalog;\n  sourceRef?: string;\n  revision?: number;\n}\n\nexport type CompiledDesignCapabilityCatalogArtifact =\n  DesignCapabilityCatalogArtifact;\n\nexport type CapabilityTranslateValues = Readonly<\n  Record<string, string | number | boolean>\n>;\n\nexport type CapabilityTranslate = (\n  key: string,\n  values?: CapabilityTranslateValues,\n) => string;\n\nexport interface CapabilityAccessDecision {\n  allowed: boolean;\n  reasonCode?: string;\n}\n\nexport interface CapabilityIntent {\n  type: string;\n  payload: JsonObject;\n}\n\nexport interface DesignCapabilityPendingActionInvocation {\n  invocationKey: string;\n  actionBindingId: string;\n  source: {\n    capabilityInstanceId: string;\n    port: string;\n  };\n  intent: JsonObject;\n}\n\nexport type GalleryCapabilityItemModel = JsonObject & {\n  id: string;\n  title?: string;\n  titleKey?: string;\n  description?: string;\n  descriptionKey?: string;\n  actionLabelKey?: string;\n  media?: GalleryCapabilityMediaModel;\n};\n\nexport type GalleryCapabilityMediaReferenceModel = JsonObject & {\n  id: string;\n};\n\nexport type GalleryCapabilityMediaModel = JsonObject & {\n  reference: GalleryCapabilityMediaReferenceModel;\n  alt: string;\n  aspectRatio?: \"1:1\" | \"4:3\" | \"3:4\" | \"16:9\" | \"9:16\";\n  placeholder?: \"neutral\" | \"checkerboard\";\n};\n\nexport type ResolvedGalleryCapabilityMedia = {\n  src: string;\n};\n\nexport type GalleryCapabilityPaginationModel = JsonObject & {\n  hasMore: boolean;\n  nextCursor: string | null;\n  loadingMore: boolean;\n  errorCode?: string;\n};\n\nexport type GalleryCapabilityRenderModel = JsonObject & {\n  items: GalleryCapabilityItemModel[];\n  pagination: GalleryCapabilityPaginationModel;\n};\n\nexport type GalleryLoadMoreIntentPayload = JsonObject & {\n  cursor: string;\n};\n\nexport type CapabilityIntentHandler = (\n  intent: CapabilityIntent,\n  node: RenderNode,\n) => void;\n\nexport interface CapabilityProviderLoadContext {\n  node: RenderNode;\n  manifest: CapabilityManifest;\n  descriptor: ViewProviderDescriptor;\n  binding: unknown;\n  signal: AbortSignal;\n}\n\nexport interface CapabilityProviderResult {\n  model: JsonObject;\n  empty?: boolean;\n}\n\nexport interface DesignCapabilityProvider {\n  providerId: string;\n  sideEffectAdapterId?: string;\n  load?: (\n    context: CapabilityProviderLoadContext,\n  ) => CapabilityProviderResult | Promise<CapabilityProviderResult>;\n}\n\nexport type DesignCapabilityProviderRegistry = Readonly<\n  Record<string, DesignCapabilityProvider>\n>;\n\nexport type CapabilityPerformanceOutcome =\n  | \"success\"\n  | \"empty\"\n  | \"error\"\n  | \"cancelled\"\n  | \"budget-exceeded\";\n\nexport interface CapabilityPerformanceEvidence {\n  capabilityId: string;\n  providerId: string;\n  nodeId: string;\n  durationMs: number;\n  budgetMs?: number;\n  outcome: CapabilityPerformanceOutcome;\n}\n\nexport type CapabilityPerformanceEvidenceHandler = (\n  evidence: CapabilityPerformanceEvidence,\n) => void;\n\nexport interface DesignCollectionScrollRestoration {\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 DesignCapabilityRendererContext extends RenderTreeNodeContext {\n  transientFiles?: TransientFileRegistry;\n  stream?: { sessionKey: string; status: string; model?: JsonObject; events: readonly JsonObject[]; errorCode?: string };\n  sendStreamControl?(port: 'terminal.input' | 'terminal.resize' | 'stream.disconnect', payload: JsonObject): unknown;\n  collectionScrollRestoration?: DesignCollectionScrollRestoration;\n  entry: DesignCapabilityCatalogEntry;\n  binding: unknown;\n  model: JsonObject;\n  translate: CapabilityTranslate;\n  access: CapabilityAccessDecision;\n  errorCode?: string;\n  /** A retained model is visible while its current query is unavailable. */\n  readOnly?: boolean;\n  loading: boolean;\n  empty: boolean;\n  retry(): void;\n  emitIntent(type: string, payload?: JsonObject, options?: { awaitCompletion?: boolean }): void | Promise<void>;\n  pendingActionInvocations?: readonly DesignCapabilityPendingActionInvocation[];\n  resolveMedia?(\n    reference: GalleryCapabilityMediaReferenceModel,\n  ): ResolvedGalleryCapabilityMedia | undefined;\n}\n\nexport type DesignCapabilityRenderer = (\n  context: DesignCapabilityRendererContext,\n) => ReactNode;\n\nexport type DesignCapabilityRendererRegistry = Readonly<\n  Record<string, DesignCapabilityRenderer>\n>;\n\nexport interface CompiledDesignCapabilityRuntime {\n  catalog: CompiledDesignCapabilityCatalog;\n  providers: DesignCapabilityProviderRegistry;\n  renderers: DesignCapabilityRendererRegistry;\n  resolve(\n    node: RenderNode,\n    product: ProductContext,\n  ): {\n    entry: DesignCapabilityCatalogEntry;\n    provider: DesignCapabilityProvider;\n    renderer: DesignCapabilityRenderer;\n  };\n}\n\nexport type CapabilityBindingRegistry = Readonly<Record<string, unknown>>;\n\nexport type CapabilityAccessRegistry = Readonly<\n  Record<string, CapabilityAccessDecision>\n>;\n\nexport interface CapabilityRuntimeTreeContext {\n  tree: RenderTree;\n  bindings: CapabilityBindingRegistry;\n  access: CapabilityAccessRegistry;\n}\n\nexport const isJsonObject = (value: JsonValue | unknown): value is JsonObject =>\n  typeof value === \"object\" && value !== null && !Array.isArray(value);\n","import type { JsonObject, RenderNode, RenderTree } from '@inf-monkeys-tech/monkeys';\nimport {\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\nimport type { ReactNode } from 'react';\n\nimport { RenderTreeRuntimeHost } from '../runtime';\nimport type {\n  RenderTreeRuntimeHostProps,\n  RenderTreeNodeContext,\n} from '../runtime';\nimport { CapabilityStatus } from './CapabilityStatus';\nimport type {\n  CapabilityAccessDecision,\n  CapabilityAccessRegistry,\n  CapabilityBindingRegistry,\n  CapabilityIntentHandler,\n  CapabilityPerformanceEvidenceHandler,\n  CapabilityProviderResult,\n  CapabilityTranslate,\n  CompiledDesignCapabilityRuntime,\n  DesignCapabilityCatalogEntry,\n  DesignCapabilityProvider,\n  DesignCapabilityRenderer,\n} from './contracts';\nimport { isJsonObject } from './contracts';\n\ntype ProviderState =\n  | { kind: 'ready'; model: JsonObject }\n  | { kind: 'loading'; model: JsonObject }\n  | { kind: 'empty'; model: JsonObject }\n  | { kind: 'error'; model: JsonObject; code: string };\n\nexport interface CapabilityRuntimeHostProps\n  extends Omit<RenderTreeRuntimeHostProps, 'renderNode' | 'tree'> {\n  tree: RenderTree;\n  runtime: CompiledDesignCapabilityRuntime;\n  translate: CapabilityTranslate;\n  bindings?: CapabilityBindingRegistry;\n  access?: CapabilityAccessRegistry;\n  resolveBinding?: (\n    node: RenderNode,\n    bindings: CapabilityBindingRegistry,\n  ) => unknown;\n  resolveAccess?: (\n    node: RenderNode,\n    access: CapabilityAccessRegistry,\n  ) => CapabilityAccessDecision;\n  onIntent?: CapabilityIntentHandler;\n  onPerformanceEvidence?: CapabilityPerformanceEvidenceHandler;\n  now?: () => number;\n  renderMissingCapability?: (\n    context: RenderTreeNodeContext,\n    error: unknown,\n  ) => ReactNode;\n}\n\ninterface CapabilityNodeBoundaryProps {\n  context: RenderTreeNodeContext;\n  entry: DesignCapabilityCatalogEntry;\n  provider: DesignCapabilityProvider;\n  renderer: DesignCapabilityRenderer;\n  binding: unknown;\n  access: CapabilityAccessDecision;\n  translate: CapabilityTranslate;\n  onIntent?: CapabilityIntentHandler;\n  onPerformanceEvidence?: CapabilityPerformanceEvidenceHandler;\n  now: () => number;\n}\n\nconst providerStateFromNode = (node: RenderNode): ProviderState => {\n  if (node.state === 'loading') return { kind: 'loading', model: node.renderModel };\n  if (node.state === 'empty') return { kind: 'empty', model: node.renderModel };\n  if (node.state === 'error') {\n    return {\n      kind: 'error',\n      model: node.renderModel,\n      code: 'capability.render.error',\n    };\n  }\n  return { kind: 'ready', model: node.renderModel };\n};\n\nconst errorCode = (error: unknown) => {\n  if (\n    typeof error === 'object'\n    && error !== null\n    && 'code' in error\n    && typeof error.code === 'string'\n    && error.code.length <= 128\n    && /^[a-z0-9]+(?:[._-][a-z0-9]+)*$/i.test(error.code)\n  ) {\n    return error.code;\n  }\n  return 'capability.provider.failed';\n};\n\nconst CapabilityNodeBoundary = ({\n  context,\n  entry,\n  provider,\n  renderer,\n  binding,\n  access,\n  translate,\n  onIntent,\n  onPerformanceEvidence,\n  now,\n}: CapabilityNodeBoundaryProps) => {\n  const { node } = context;\n  const [attempt, setAttempt] = useState(0);\n  const [providerState, setProviderState] = useState<ProviderState>(() =>\n    providerStateFromNode(node));\n  const generationRef = useRef(0);\n  const performanceEvidenceRef = useRef(onPerformanceEvidence);\n\n  useEffect(() => {\n    performanceEvidenceRef.current = onPerformanceEvidence;\n  }, [onPerformanceEvidence]);\n\n  useEffect(() => {\n    const generation = generationRef.current + 1;\n    generationRef.current = generation;\n    if (!access.allowed || !context.queryEnabled || !provider.load) {\n      setProviderState(providerStateFromNode(node));\n      return undefined;\n    }\n\n    const controller = new AbortController();\n    const startedAt = now();\n    let settled = false;\n    setProviderState({ kind: 'loading', model: node.renderModel });\n\n    const report = (\n      outcome: 'success' | 'empty' | 'error' | 'cancelled' | 'budget-exceeded',\n      durationMs: number,\n    ) => performanceEvidenceRef.current?.({\n      capabilityId: entry.manifest.id,\n      providerId: provider.providerId,\n      nodeId: node.nodeId,\n      durationMs,\n      budgetMs: entry.provider.performance.budgetMs,\n      outcome,\n    });\n\n    const fail = (error: unknown, durationMs: number) => {\n      if (controller.signal.aborted || generationRef.current !== generation) return;\n      settled = true;\n      setProviderState({\n        kind: 'error',\n        model: node.renderModel,\n        code: errorCode(error),\n      });\n      report('error', durationMs);\n    };\n\n    const finish = (\n      result: CapabilityProviderResult,\n      durationMs: number,\n    ) => {\n      if (controller.signal.aborted || generationRef.current !== generation) return;\n      if (\n        !isJsonObject(result?.model)\n        || (result.empty !== undefined && typeof result.empty !== 'boolean')\n      ) {\n        fail({ code: 'capability.provider.invalid-result' }, durationMs);\n        return;\n      }\n      settled = true;\n      const budgetMs = entry.provider.performance.budgetMs;\n      const outcome = budgetMs !== undefined && durationMs > budgetMs\n        ? 'budget-exceeded'\n        : result.empty\n          ? 'empty'\n          : 'success';\n      setProviderState(\n        result.empty\n          ? { kind: 'empty', model: result.model }\n          : { kind: 'ready', model: result.model },\n      );\n      report(outcome, durationMs);\n    };\n\n    let pending: Promise<CapabilityProviderResult>;\n    try {\n      pending = Promise.resolve(provider.load({\n        node,\n        manifest: entry.manifest,\n        descriptor: entry.provider,\n        binding,\n        signal: controller.signal,\n      }));\n    } catch (error) {\n      pending = Promise.reject(error);\n    }\n\n    pending.then(\n      (result) => finish(result, Math.max(0, now() - startedAt)),\n      (error) => fail(error, Math.max(0, now() - startedAt)),\n    );\n\n    return () => {\n      controller.abort();\n      if (!settled) {\n        report('cancelled', Math.max(0, now() - startedAt));\n      }\n    };\n  }, [\n    access.allowed,\n    attempt,\n    binding,\n    context.queryEnabled,\n    entry,\n    node,\n    now,\n    provider,\n  ]);\n\n  const retry = useCallback(() => setAttempt((value) => value + 1), []);\n  const emitIntent = useCallback((type: string, payload: JsonObject = {}) => {\n    onIntent?.({ type, payload }, node);\n  }, [node, onIntent]);\n\n  if (!access.allowed) {\n    return (\n      <CapabilityStatus\n        kind=\"forbidden\"\n        code={access.reasonCode ?? 'capability.access.forbidden'}\n        translate={translate}\n      />\n    );\n  }\n  if (providerState.kind === 'loading') {\n    return <CapabilityStatus kind=\"loading\" translate={translate} />;\n  }\n  if (providerState.kind === 'empty') {\n    return <CapabilityStatus kind=\"empty\" translate={translate} />;\n  }\n  if (providerState.kind === 'error') {\n    return (\n      <CapabilityStatus\n        kind=\"error\"\n        code={providerState.code}\n        translate={translate}\n        onRetry={provider.load ? retry : undefined}\n      />\n    );\n  }\n\n  return renderer({\n    ...context,\n    entry,\n    binding,\n    model: providerState.model,\n    translate,\n    access,\n    loading: false,\n    empty: false,\n    retry,\n    emitIntent,\n  });\n};\n\nconst defaultResolveBinding = (\n  node: RenderNode,\n  bindings: CapabilityBindingRegistry,\n) => node.dataContextRef ? bindings[node.dataContextRef.id] : undefined;\n\nconst defaultResolveAccess = (\n  node: RenderNode,\n  access: CapabilityAccessRegistry,\n): CapabilityAccessDecision => {\n  if (!node.accessRef) return { allowed: true };\n  return access[node.accessRef.id] ?? {\n    allowed: false,\n    reasonCode: 'capability.access.unresolved',\n  };\n};\n\nconst defaultNow = () => (\n  typeof performance === 'undefined' ? Date.now() : performance.now()\n);\n\nexport const CapabilityRuntimeHost = ({\n  tree,\n  runtime,\n  translate,\n  bindings = {},\n  access = {},\n  resolveBinding = defaultResolveBinding,\n  resolveAccess = defaultResolveAccess,\n  onIntent,\n  onPerformanceEvidence,\n  now = defaultNow,\n  renderMissingCapability,\n  elementForNode,\n  ...props\n}: CapabilityRuntimeHostProps) => {\n  const renderNode = useMemo(() => (\n    context: RenderTreeNodeContext,\n  ) => {\n    try {\n      const registration = runtime.resolve(context.node, tree.product);\n      return (\n        <CapabilityNodeBoundary\n          context={context}\n          {...registration}\n          binding={resolveBinding(context.node, bindings)}\n          access={resolveAccess(context.node, access)}\n          translate={translate}\n          onIntent={onIntent}\n          onPerformanceEvidence={onPerformanceEvidence}\n          now={now}\n        />\n      );\n    } catch (error) {\n      return renderMissingCapability?.(context, error) ?? (\n        <CapabilityStatus\n          kind=\"error\"\n          code=\"capability.registration.missing\"\n          translate={translate}\n        />\n      );\n    }\n  }, [\n    access,\n    bindings,\n    now,\n    onIntent,\n    onPerformanceEvidence,\n    renderMissingCapability,\n    resolveAccess,\n    resolveBinding,\n    runtime,\n    translate,\n    tree,\n  ]);\n\n  const resolvedElementForNode = useCallback((node: RenderNode) => {\n    if (elementForNode) return elementForNode(node);\n    if (node.kind === 'shell') return 'div';\n    if (node.kind === 'navigation') return 'nav';\n    if (node.kind === 'detail') return 'aside';\n    if (node.kind === 'record') return 'article';\n    return 'section';\n  }, [elementForNode]);\n\n  return (\n    <RenderTreeRuntimeHost\n      {...props}\n      tree={tree}\n      renderNode={renderNode}\n      elementForNode={resolvedElementForNode}\n    />\n  );\n};\n","import { useEffect, useState } from 'react';\nimport { Copy, Eye, EyeOff } from 'lucide-react';\n\nimport { BaseButton, BaseDialog, type BaseAppearance } from '../base';\n\nconst oneTimeValueAppearance: BaseAppearance = {\n  preset: 'soft',\n  density: 'default',\n  radius: 'lg',\n  border: 'subtle',\n  background: 'soft',\n};\n\nexport interface OneTimeValueDialogLabels {\n  show: string;\n  hide: string;\n  copy: string;\n  close: string;\n}\n\nexport interface OneTimeValueDialogProps {\n  open: boolean;\n  title: string;\n  description: string;\n  valueLabel: string;\n  readValue(): string;\n  clearValue(): void;\n  labels: OneTimeValueDialogLabels;\n  onCopy(value: string): void | Promise<void>;\n  onClose(): void;\n}\n\nexport const maskOneTimeValue = (value: string) => `${value.slice(0, 3)}${'*'.repeat(32)}${value.slice(-4)}`;\n\nexport function OneTimeValueDialog({\n  open,\n  title,\n  description,\n  valueLabel,\n  readValue,\n  clearValue,\n  labels,\n  onCopy,\n  onClose,\n}: OneTimeValueDialogProps) {\n  const [visible, setVisible] = useState(false);\n\n  useEffect(() => {\n    setVisible(false);\n    return clearValue;\n  }, [clearValue]);\n\n  const close = () => {\n    clearValue();\n    setVisible(false);\n    onClose();\n  };\n\n  const copy = () => {\n    const current = readValue();\n    if (current) void onCopy(current);\n  };\n\n  return (\n    <BaseDialog\n      appearance={oneTimeValueAppearance}\n      open={open}\n      onOpenChange={(next) => {\n        if (!next) close();\n      }}\n      title={title}\n      description={description}\n      closeLabel={labels.close}\n      classNames={{ panel: 'sm:max-w-xl' }}\n      footer={\n        <BaseButton appearance={oneTimeValueAppearance} tone=\"primary\" label={labels.close} onClick={close} />\n      }\n    >\n      <div className=\"grid gap-4 py-2\">\n        <div className=\"rounded-md border border-border/70 bg-muted/40 p-3\">\n          <div className=\"mb-2 flex items-center justify-between gap-2\">\n            <span className=\"text-sm font-medium\">{valueLabel}</span>\n            <div className=\"flex gap-2\">\n              <BaseButton\n                appearance={oneTimeValueAppearance}\n                tone=\"muted\"\n                iconOnly\n                icon={visible ? <EyeOff className=\"h-4 w-4\" /> : <Eye className=\"h-4 w-4\" />}\n                ariaLabel={visible ? labels.hide : labels.show}\n                title={visible ? labels.hide : labels.show}\n                onClick={() => setVisible((current) => !current)}\n              />\n              <BaseButton\n                appearance={oneTimeValueAppearance}\n                tone=\"muted\"\n                iconOnly\n                icon={<Copy className=\"h-4 w-4\" />}\n                ariaLabel={labels.copy}\n                title={labels.copy}\n                onClick={copy}\n              />\n            </div>\n          </div>\n          <code className=\"block break-all rounded bg-background p-2 font-mono text-sm\">\n            {visible ? readValue() : maskOneTimeValue(readValue())}\n          </code>\n        </div>\n      </div>\n    </BaseDialog>\n  );\n}\n","import type { JsonObject } from '@inf-monkeys-tech/monkeys';\n\nconst PAGINATION_PROPERTIES: JsonObject = {\n  hasMore: { type: \"boolean\" },\n  nextCursor: {\n    oneOf: [\n      { type: \"string\", minLength: 1, maxLength: 2048 },\n      { type: \"null\" },\n    ],\n  },\n  loadingMore: { type: \"boolean\" },\n  errorCode: { type: \"string\", minLength: 1, maxLength: 128 },\n};\n\nexport const cursorPaginationSchema = (): JsonObject => ({\n  oneOf: [\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"hasMore\", \"nextCursor\", \"loadingMore\"],\n      properties: {\n        mode: { const: \"append\" },\n        ...PAGINATION_PROPERTIES,\n        pageSize: { type: \"integer\", minimum: 1, maximum: 1000 },\n        returned: { type: \"integer\", minimum: 0 },\n        total: { type: \"integer\", minimum: 0 },\n        loadedCount: { type: \"integer\", minimum: 0 },\n        loadedStart: { type: \"integer\", minimum: 0 },\n        loadedEnd: { type: \"integer\", minimum: 0 },\n      },\n    },\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\n        \"mode\",\n        \"currentPage\",\n        \"totalPages\",\n        \"hasPrevious\",\n        \"hasNext\",\n        \"loading\",\n        \"pageSize\",\n        \"returned\",\n        \"total\",\n        \"loadedCount\",\n        \"loadedStart\",\n        \"loadedEnd\",\n      ],\n      properties: {\n        mode: { const: \"window\" },\n        currentPage: { type: \"integer\", minimum: 1 },\n        totalPages: { type: \"integer\", minimum: 1 },\n        hasPrevious: { type: \"boolean\" },\n        hasNext: { type: \"boolean\" },\n        loading: { type: \"boolean\" },\n        errorCode: { type: \"string\", minLength: 1, maxLength: 128 },\n        pageSize: { type: \"integer\", minimum: 1, maximum: 1000 },\n        returned: { type: \"integer\", minimum: 0 },\n        total: { type: \"integer\", minimum: 0 },\n        loadedCount: { type: \"integer\", minimum: 0 },\n        loadedStart: { type: \"integer\", minimum: 0 },\n        loadedEnd: { type: \"integer\", minimum: 0 },\n      },\n    },\n  ],\n});\n\n","import type { CapabilityManifest, DeclarativeCapabilityAuthoringRegistration, I18nText, JsonObject, RevisionRef, StableRef, ViewProviderDescriptor } from '@inf-monkeys-tech/monkeys';\nimport { canonicalContentHash, DeclarativeCapabilityAuthoringRegistrationSchema, ProductContextSchema, ProductSurfaceSchema } from '@inf-monkeys-tech/monkeys';\nimport type { CapabilityCatalogCategory, CapabilityOntologyCompatibility, CapabilityEditorMetadata, DesignCapabilityCatalogEntry } from './contracts';\n\nconst VERSION = \"1\";\nconst OWNER = \"monkeys-design\";\nconst PRODUCT_CONTEXTS = ProductContextSchema.options;\nconst TOKEN_REFS = [\n  \"semantic.color.background\",\n  \"semantic.color.foreground\",\n  \"semantic.color.border\",\n  \"semantic.spacing.global\",\n  \"semantic.radius.base\",\n] as const;\n\nconst GLOBAL_VISIBILITY = \"global\" as const;\nconst SCHEMA_VERSION = 1;\nconst REVISION = 1;\n\nexport interface PropertyFieldDefinition {\n  path: string;\n  label: I18nText;\n  control: string;\n  required: boolean;\n  advanced: boolean;\n}\n\nexport interface OutputPortDefinition {\n  name: string;\n  schemaRef: string;\n  schemaDocument: JsonObject;\n  allowedCommandKinds?: readonly string[];\n  requiredPermissionCodes?: readonly string[];\n}\n\ninterface EntryOptions {\n  id: string;\n  version?: string;\n  revision?: number;\n  authoringRevision?: number;\n  schemaRevision?: number;\n  rendererKey: string;\n  kind: CapabilityManifest[\"kind\"];\n  category: CapabilityCatalogCategory;\n  labelKey: string;\n  descriptionKey: string;\n  authoringLabel: I18nText;\n  authoringDescription: I18nText;\n  inputPort: string;\n  schemaRef: string;\n  schemaDocument: JsonObject;\n  compatibility?: readonly CapabilityOntologyCompatibility[];\n  slots: readonly string[];\n  loading?: CapabilityManifest[\"runtime\"][\"loading\"];\n  sideEffects?: CapabilityManifest[\"runtime\"][\"sideEffects\"];\n  supportedPageTypes: readonly string[];\n  supportedSurfaces: ViewProviderDescriptor[\"supportedSurfaces\"];\n  authoringSurfaces?: DeclarativeCapabilityAuthoringRegistration[\"supportedSurfaces\"];\n  propertySchema?: JsonObject;\n  uiSchema?: JsonObject;\n  propertyFields?: readonly PropertyFieldDefinition[];\n  outputPorts?: readonly OutputPortDefinition[];\n  frameOwner?: ViewProviderDescriptor[\"frameOwner\"];\n  virtualized?: boolean;\n  budgetMs?: number;\n  editorEligible?: boolean;\n}\n\nexport const i18n = (english: string, chinese: string): I18nText => ({\n  defaultLocale: \"en-US\",\n  values: { \"en-US\": english, \"zh-CN\": chinese },\n});\n\nconst stableRef = (kind: string, id: string): StableRef => ({\n  kind,\n  id,\n  ownerRepo: OWNER,\n  visibility: GLOBAL_VISIBILITY,\n});\n\nconst revisionRef = (\n  kind: string,\n  id: string,\n  content: unknown,\n  revision = REVISION,\n): RevisionRef => ({\n  ...stableRef(kind, id),\n  revision,\n  schemaVersion: SCHEMA_VERSION,\n  contentHash: canonicalContentHash(content),\n});\n\nconst JSON_SCHEMA_DIALECT = \"https://json-schema.org/draft/2020-12/schema\";\n\nexport const jsonSchema = (id: string, definition: JsonObject): JsonObject => ({\n  $schema: JSON_SCHEMA_DIALECT,\n  $id: id,\n  ...definition,\n});\n\nconst schemaDocumentEntry = (\n  id: string,\n  document: JsonObject,\n  revision = REVISION,\n) => ({\n  schemaRevisionRef: revisionRef(\"schema\", id, document, revision),\n  document,\n});\n\nconst schemaDocumentKey = ({\n  schemaRevisionRef,\n}: ReturnType<typeof schemaDocumentEntry>) =>\n  `${schemaRevisionRef.ownerRepo}:${schemaRevisionRef.id}@${schemaRevisionRef.revision}:${schemaRevisionRef.contentHash}`;\n\nexport const createDesignCapabilityEntry = ({\n  id,\n  version = VERSION,\n  revision = REVISION,\n  authoringRevision = revision,\n  schemaRevision = REVISION,\n  rendererKey,\n  kind,\n  category,\n  labelKey,\n  descriptionKey,\n  authoringLabel,\n  authoringDescription,\n  inputPort,\n  schemaRef,\n  schemaDocument,\n  compatibility = [],\n  slots,\n  loading = \"eager\",\n  sideEffects = [],\n  supportedPageTypes,\n  supportedSurfaces,\n  authoringSurfaces = ProductSurfaceSchema.options,\n  propertySchema = {\n    type: \"object\",\n    additionalProperties: false,\n    properties: {},\n  },\n  uiSchema = { order: [] },\n  propertyFields = [],\n  outputPorts = [],\n  frameOwner = \"host\",\n  virtualized = false,\n  budgetMs,\n  editorEligible = true,\n}: EntryOptions): DesignCapabilityCatalogEntry => {\n  const providerId = `${id}.provider`;\n  const providerRef = {\n    kind: \"view-provider\",\n    id: providerId,\n    version,\n    ownerRepo: OWNER,\n  };\n  const manifest: CapabilityManifest = {\n    contract: \"CapabilityManifest\",\n    id,\n    capabilityVersion: version,\n    ownerRepo: OWNER,\n    kind,\n    displayName: labelKey,\n    description: descriptionKey,\n    ports: {\n      inputs: [{ name: inputPort, schemaRef, required: true, multiple: false }],\n      outputs: outputPorts.map(({ name, schemaRef }) => ({\n        name,\n        schemaRef,\n        required: false,\n        multiple: false,\n      })),\n    },\n    runtime: {\n      providerBindings: [\n        {\n          providerRef,\n          productContexts: [...PRODUCT_CONTEXTS],\n          priority: 100,\n        },\n      ],\n      loading,\n      stateOwner: \"host\",\n      sideEffects: [...sideEffects],\n    },\n    placement: {\n      surfaces: [...supportedSurfaces],\n      slots: [...slots],\n      variants: [],\n      tokenRefs: [...TOKEN_REFS],\n    },\n    accessibility: {\n      keyboardModel: `${id}.keyboard`,\n      focusModel: `${id}.focus`,\n      labelContract: `${id}.labels`,\n    },\n    observability: {\n      eventNamespace: id,\n      metrics: [\"load.duration\", \"load.outcome\"],\n      evidenceRefs: [\"render-node.evidenceRef\"],\n      ...(budgetMs === undefined ? {} : { performanceBudgetMs: budgetMs }),\n    },\n  };\n  const provider: ViewProviderDescriptor = {\n    contract: \"ViewProviderDescriptor\",\n    providerId,\n    providerVersion: version,\n    ownerRepo: OWNER,\n    capabilityRef: {\n      kind: \"capability\",\n      id,\n      version,\n      ownerRepo: OWNER,\n    },\n    rendererKey,\n    renderModelSchemaRef: schemaRef,\n    loading,\n    stateOwner: \"host\",\n    supportedPageTypes: [...supportedPageTypes],\n    supportedSurfaces,\n    frameOwner,\n    sideEffects: [...sideEffects],\n    ...(sideEffects.length > 0\n      ? {\n          sideEffectAdapterRef: {\n            kind: \"side-effect-adapter\",\n            id: `${id}.side-effects`,\n            version,\n            ownerRepo: OWNER,\n          },\n        }\n      : {}),\n    lifecycle: {\n      preserveMount: kind === \"professional-provider\" || frameOwner === \"provider\",\n      preserveScroll: kind === \"professional-provider\",\n      focusModel: `${id}.focus`,\n    },\n    performance: {\n      lazy: loading !== \"eager\",\n      virtualized,\n      ...(budgetMs === undefined ? {} : { budgetMs }),\n    },\n  };\n  const editor: CapabilityEditorMetadata = {\n    eligible: editorEligible,\n    category,\n    labelKey,\n    descriptionKey,\n    slots,\n    ontologyCompatibility: compatibility,\n  };\n  const propertySchemaDocument = jsonSchema(`${id}.properties`, propertySchema);\n  const uiSchemaDocument = jsonSchema(`${id}.properties.ui`, {\n    type: \"object\",\n    additionalProperties: false,\n    properties: {\n      order: {\n        type: \"array\",\n        items: { type: \"string\" },\n      },\n    },\n    required: [\"order\"],\n    default: uiSchema,\n  });\n  const propertySchemaEntry = schemaDocumentEntry(\n    `${id}.properties`,\n    propertySchemaDocument,\n    schemaRevision,\n  );\n  const uiSchemaEntry = schemaDocumentEntry(\n    `${id}.properties.ui`,\n    uiSchemaDocument,\n    schemaRevision,\n  );\n  const inputSchemaEntry = schemaDocumentEntry(\n    schemaRef,\n    schemaDocument,\n    schemaRevision,\n  );\n  const outputSchemaEntries = outputPorts.map((port) =>\n    schemaDocumentEntry(port.schemaRef, port.schemaDocument, schemaRevision),\n  );\n  const schemaDocuments = [\n    propertySchemaEntry,\n    uiSchemaEntry,\n    inputSchemaEntry,\n    ...outputSchemaEntries,\n  ].filter(\n    (entry, index, entries) =>\n      entries.findIndex(\n        (candidate) =>\n          schemaDocumentKey(candidate) === schemaDocumentKey(entry),\n      ) === index,\n  );\n  const unsignedRegistration = {\n    capabilityRevisionRef: revisionRef(\"capability\", id, manifest, revision),\n    providerRevisionRef: revisionRef(\n      \"view-provider\",\n      providerId,\n      provider,\n      revision,\n    ),\n    propertySchemaRevisionRef: propertySchemaEntry.schemaRevisionRef,\n    uiSchemaRevisionRef: uiSchemaEntry.schemaRevisionRef,\n    editorEligible,\n    category,\n    label: authoringLabel,\n    description: authoringDescription,\n    supportedSurfaces: [...authoringSurfaces],\n    allowedSlots: [...slots],\n    allowedParentCapabilityRefs: [] as StableRef[],\n    allowedChildCapabilityRefs: [] as StableRef[],\n    inputPorts: manifest.ports.inputs.map((port) => ({\n      name: port.name,\n      schemaRevisionRef: inputSchemaEntry.schemaRevisionRef,\n      required: port.required,\n      multiple: port.multiple,\n    })),\n    outputPorts: manifest.ports.outputs.map((port) => {\n      const schema = outputSchemaEntries.find(\n        (entry) => entry.schemaRevisionRef.id === port.schemaRef,\n      );\n      if (!schema)\n        throw new TypeError(\n          `Missing output schema document for ${port.schemaRef}.`,\n        );\n      return {\n        name: port.name,\n        schemaRevisionRef: schema.schemaRevisionRef,\n        required: port.required,\n        multiple: port.multiple,\n      };\n    }),\n    allowedSideEffects: [...sideEffects],\n    ontologyRequirements: compatibility.map((requirement) => ({\n      inputPort: requirement.inputPort,\n      renderModelSchemaRevisionRef: inputSchemaEntry.schemaRevisionRef,\n      modes: [requirement.mode],\n      requiredPermissionCodes: [],\n    })),\n    actionRequirements: outputPorts.map((port) => ({\n      outputPort: port.name,\n      allowedCommandKinds: [...(port.allowedCommandKinds ?? [])],\n      requiredPermissionCodes: [...(port.requiredPermissionCodes ?? [])],\n    })),\n    propertyFields: propertyFields.map((field) => ({ ...field })),\n    schemaDocuments,\n  } satisfies Omit<\n    DeclarativeCapabilityAuthoringRegistration,\n    \"registrationRevisionRef\" | \"sourceContentHash\"\n  >;\n  const sourceContentHash = canonicalContentHash(unsignedRegistration);\n  const declarativeRegistration =\n    DeclarativeCapabilityAuthoringRegistrationSchema.parse({\n      ...unsignedRegistration,\n      registrationRevisionRef: {\n        ...stableRef(\"design-capability-registration\", `${id}.authoring`),\n        revision: authoringRevision,\n        schemaVersion: SCHEMA_VERSION,\n        contentHash: sourceContentHash,\n      },\n      sourceContentHash,\n    });\n  return { manifest, provider, editor, declarativeRegistration };\n};\n\n","import type { JsonObject } from '@inf-monkeys-tech/monkeys';\nimport { createDesignCapabilityEntry, i18n, jsonSchema } from './entry';\nconst text = { type: 'string' };\nexport const CHOICE_PICKER_MODEL_SCHEMA: JsonObject = {\n    type: 'object',\n    additionalProperties: false,\n    properties: {\n      nodes: {\n        type: 'array',\n        items: {\n          type: 'object',\n          additionalProperties: false,\n          properties: {\n            id: text,\n            label: text,\n            labelKey: text,\n            labelI18n: { type: 'object', additionalProperties: text },\n            count: { type: 'integer', minimum: 0 },\n            defaultSelected: { type: 'boolean' },\n          },\n          required: ['id', 'label'],\n        },\n      },\n      total: { type: 'integer', minimum: 0 },\n      selectedNodeId: text,\n      initialSelectionId: text,\n      showSelectedId: { type: 'boolean' },\n      search: { type: 'object', additionalProperties: false, properties: { value: text }, required: ['value'] },\n      placeholderKey: text,\n      searchPlaceholderKey: text,\n      countLabelKey: text,\n      statLabelKey: text,\n      emptyLabelKey: text,\n      loadingLabelKey: text,\n      searchMode: { enum: ['remote', 'local'] },\n      searchDebounceMs: { type: 'integer', minimum: 0 },\n      contextHint: {\n        type: 'object',\n        additionalProperties: false,\n        properties: { selectedLabelKey: text, emptyLabelKey: text, icon: { enum: ['layers', 'building'] } },\n        required: ['selectedLabelKey', 'emptyLabelKey', 'icon'],\n      },\n      pagination: {\n        type: 'object',\n        additionalProperties: false,\n        properties: {\n          hasMore: { type: 'boolean' },\n          nextCursor: { type: ['string', 'null'] },\n          loadingMore: { type: 'boolean' },\n        },\n        required: ['hasMore', 'nextCursor', 'loadingMore'],\n      },\n      declarativeModelProjection: {\n        type: 'object',\n        additionalProperties: false,\n        properties: {\n          kind: { const: 'navigator' },\n          selectedStateId: text,\n          initialSelection: {\n            type: 'object',\n            additionalProperties: false,\n            properties: {\n              strategy: { enum: ['default-or-first', 'selected-only', 'result-only'] },\n              intentPort: { const: 'capability.choice-picker.select' },\n              payloadField: { const: 'itemId' },\n            },\n            required: ['strategy', 'intentPort', 'payloadField'],\n          },\n        },\n        required: ['kind', 'selectedStateId'],\n      },\n    },\n    required: ['nodes', 'pagination'],\n  };\nexport const CHOICE_PICKER_ENTRY = createDesignCapabilityEntry({\n  version: '3', revision: 3, schemaRevision: 3,\n  id: 'monkeys.design.choice-picker', rendererKey: 'monkeys.design.renderer.choice-picker',\n  kind: 'view', category: 'navigation', labelKey: 'monkeys.design.capability.choicePicker.label',\n  descriptionKey: 'monkeys.design.capability.choicePicker.description',\n  authoringLabel: i18n('Choice picker', '选项选择器'),\n  authoringDescription: i18n('Search and select a host-owned paginated collection.', '搜索并选择宿主提供的分页集合。'),\n  inputPort: 'content', schemaRef: 'monkeys-design://choice-picker/model/v1', schemaDocument: jsonSchema('monkeys-design://choice-picker/model/v1', CHOICE_PICKER_MODEL_SCHEMA),\n  slots: ['controls'], supportedPageTypes: ['page', 'view', 'workspace'], supportedSurfaces: ['page', 'view', 'workspace', 'overlay'],\n  outputPorts: [\n    ...(['search', 'select', 'load-more'] as const).map((action) => {\n      const field = action === 'search' ? 'value' : action === 'select' ? 'itemId' : 'cursor';\n      return { name: `capability.choice-picker.${action}`, schemaRef: `monkeys-design://choice-picker/${action}/v1`,\n        schemaDocument: jsonSchema(`monkeys-design://choice-picker/${action}/v1`, { type: 'object', additionalProperties: false, required: [field], properties: { [field]: text } }),\n        allowedCommandKinds: ['query-intent'] as const };\n    }),\n  ],\n});\n","import { I18nTextSchema, type JsonObject } from '@inf-monkeys-tech/monkeys';\nimport { useMonkeysLocale } from '../../provider/context';\nimport type { CapabilityTranslate, CapabilityTranslateValues } from './contracts';\n\nconst localePattern = '^[a-z]{2,3}(?:-[A-Z][a-z]{3})?(?:-[A-Z]{2}|-\\\\d{3})?$';\n/** Structural schema; SDK I18nTextSchema also enforces that values contains defaultLocale. */\nexport const I18N_DISPLAY_TEXT_SCHEMA: JsonObject = {\n  type: 'object', additionalProperties: false, required: ['defaultLocale', 'values'],\n  properties: {\n    defaultLocale: { type: 'string', pattern: localePattern },\n    values: { type: 'object', minProperties: 1, propertyNames: { pattern: localePattern }, additionalProperties: { type: 'string', minLength: 1, pattern: '\\\\S' } },\n  },\n};\nexport const LOCALIZED_DISPLAY_PARAMETERS_SCHEMA: JsonObject = {\n  type: 'object', additionalProperties: { oneOf: [{ type: ['string', 'number', 'boolean'] }, I18N_DISPLAY_TEXT_SCHEMA] },\n};\n\n/** I18nText only: LocalizedText locale maps and plain strings are deliberately distinct. */\nexport function resolveI18nDisplayText(value: unknown, locale: string): string {\n  const parsed = I18nTextSchema.safeParse(value);\n  if (!parsed.success) throw new TypeError('Invalid I18n display text');\n  let canonical: string;\n  try { canonical = Intl.getCanonicalLocales(locale)[0] ?? ''; } catch { canonical = ''; }\n  const language = canonical.split('-')[0] ?? '';\n  return parsed.data.values[canonical] ?? parsed.data.values[language] ?? parsed.data.values[parsed.data.defaultLocale]!;\n}\n\nexport function LocalizedDisplayText({ value }: { value: unknown }) {\n  const { locale } = useMonkeysLocale();\n  return <>{resolveI18nDisplayText(value, locale)}</>;\n}\n\nexport function resolveLocalizedDisplayParameters(value: unknown, locale: string): CapabilityTranslateValues | undefined {\n  if (value === undefined) return undefined;\n  if (typeof value !== 'object' || value === null || Array.isArray(value) ||\n      ![Object.prototype, null].includes(Object.getPrototypeOf(value))) throw new TypeError('Invalid localized interpolation parameters');\n  return Object.fromEntries(Object.entries(value).map(([key, item]) => {\n    if (typeof item === 'string' || typeof item === 'boolean' || (typeof item === 'number' && Number.isFinite(item))) return [key, item];\n    return [key, resolveI18nDisplayText(item, locale)];\n  }));\n}\n\nexport function LocalizedMessageText({ messageKey, values, translate }: { messageKey: string; values?: unknown; translate: CapabilityTranslate }) {\n  const { locale } = useMonkeysLocale();\n  return <>{translate(messageKey, resolveLocalizedDisplayParameters(values, locale))}</>;\n}\n","import type { JsonObject } from '@inf-monkeys-tech/monkeys';\nimport { compileTargetRenderModelValidator } from '@inf-monkeys-tech/monkeys/runtime';\nimport { I18N_DISPLAY_TEXT_SCHEMA, LOCALIZED_DISPLAY_PARAMETERS_SCHEMA } from './localizedDisplayValue';\nconst localizedLabelProperties = { label: { type: 'string' }, labelKey: { type: 'string', minLength: 1 } };\nconst RECORD_EDITOR_OPTION_GROUP_SCHEMA: JsonObject = {\n  type: 'object', additionalProperties: false, required: ['id'],\n  anyOf: [{ required: ['label'] }, { required: ['labelKey'] }, { required: ['labelI18n'] }],\n  properties: {\n    id: { type: 'string', minLength: 1 },\n    ...localizedLabelProperties,\n    label: { type: 'string', minLength: 1 },\n    labelI18n: I18N_DISPLAY_TEXT_SCHEMA,\n    labelParameters: LOCALIZED_DISPLAY_PARAMETERS_SCHEMA,\n  },\n};\nexport const RECORD_EDITOR_OPTION_SCHEMA: JsonObject = {\n  type: \"object\",\n  additionalProperties: false,\n  required: [\"id\"],\n  properties: {\n    id: { type: \"string\", minLength: 1 },\n    ...localizedLabelProperties,\n    labelI18n: I18N_DISPLAY_TEXT_SCHEMA,\n    labelParameters: LOCALIZED_DISPLAY_PARAMETERS_SCHEMA,\n    group: RECORD_EDITOR_OPTION_GROUP_SCHEMA,\n    color: { type: \"string\", minLength: 1 },\n    mediaType: { type: \"string\", minLength: 1 },\n    ontologyId: { type: \"string\", minLength: 1 },\n    disabled: { type: \"boolean\" },\n    disabledWhen: { type: \"object\" },\n  },\n};\n\nexport const RECORD_EDITOR_STRING_OPTION_SCHEMA: JsonObject = { ...RECORD_EDITOR_OPTION_SCHEMA, properties: { ...RECORD_EDITOR_OPTION_SCHEMA.properties as JsonObject, id: { type: 'string' } } };\nconst optionPathSchema: JsonObject = { type: 'array', minItems: 1, maxItems: 16, items: { type: 'string', minLength: 1, maxLength: 256, pattern: '^[^\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f]+$', not: { enum: ['__proto__', 'prototype', 'constructor'] } } };\nexport const RECORD_EDITOR_OPTIONS_SOURCE_SCHEMA: JsonObject = { type: 'object', additionalProperties: false, required: ['modelPath', 'parentKeyPath'], properties: { modelPath: { ...optionPathSchema, minItems: 2, maxItems: 2, prefixItems: [{ const: 'optionTables' }] }, parentKeyPath: optionPathSchema } };\nconst validateOptions = compileTargetRenderModelValidator({ type: 'object', additionalProperties: false, required: ['options'], properties: { options: { type: 'array', maxItems: 10000, items: RECORD_EDITOR_STRING_OPTION_SCHEMA } } });\n/** Dependent candidates share the ordinary string-option schema and local collection budget. */\nexport function validateRecordEditorOptions(input: unknown): JsonObject[] {\n  if (!Array.isArray(input) || input.length > 10000) throw new TypeError('Editor options exceed the candidate limit.');\n  const json = JSON.stringify(input);\n  if (new TextEncoder().encode(json).byteLength > 1024 * 1024) throw new TypeError('Editor options exceed the byte limit.');\n  const result = validateOptions({ options: input }).options;\n  if (!Array.isArray(result)) throw new TypeError('Editor options must be an array.');\n  return result as JsonObject[];\n}\n\nconst tableKeySchema: JsonObject = { type: 'string', minLength: 1, maxLength: 256, pattern: '^[^\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f]+$', not: { enum: ['__proto__', 'prototype', 'constructor'] } };\nexport const RECORD_EDITOR_OPTION_TABLES_SCHEMA: JsonObject = { type: 'object', propertyNames: tableKeySchema, additionalProperties: { type: 'object', propertyNames: tableKeySchema, additionalProperties: { type: 'array', maxItems: 10000, items: RECORD_EDITOR_STRING_OPTION_SCHEMA } } };\nconst validateTables = compileTargetRenderModelValidator({ type: 'object', additionalProperties: false, required: ['tables'], properties: { tables: RECORD_EDITOR_OPTION_TABLES_SCHEMA } });\nexport function validateRecordEditorOptionTables(input: unknown): void {\n  if (new TextEncoder().encode(JSON.stringify(input)).byteLength > 1024 * 1024) throw new TypeError('Editor option tables exceed the byte limit.');\n  const tables = validateTables({ tables: input }).tables;\n  if (!tables || typeof tables !== 'object' || Array.isArray(tables)) throw new TypeError('Invalid editor option tables.');\n  let count = 0;\n  for (const table of Object.values(tables)) {\n    if (!table || typeof table !== 'object' || Array.isArray(table)) throw new TypeError('Invalid editor option table.');\n    for (const options of Object.values(table)) {\n      if (!Array.isArray(options)) throw new TypeError('Invalid editor option list.');\n      count += options.length;\n      if (count > 10000) throw new TypeError('Editor option tables exceed the candidate limit.');\n    }\n  }\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { BaseButton, BaseInput, BaseTextarea, BaseSelect, BaseCheckbox } from '../base';\nimport type { I18nText } from '@inf-monkeys-tech/monkeys';\nimport { useMonkeysLocale } from '../../provider/context';\nimport { resolveI18nDisplayText } from '../capabilities/localizedDisplayValue';\n\nexport interface OrderedSelectionRow { id: string; label?: string; labelKey?: string; labelI18n?: I18nText; description?: string; descriptionKey?: string; descriptionI18n?: I18nText; showId?: boolean; missing?: boolean; disabled?: boolean }\nexport interface OrderedSelectionModel {\n  scopeId: string; revision: string; titleKey?: string; descriptionKey?: string; selectedIds: string[]; selectedRows?: OrderedSelectionRow[];\n  candidates?: OrderedSelectionRow[]; mode?: 'options' | 'ids'; loading?: boolean; pending?: boolean; readOnly?: boolean;\n  selectionMode?: 'single' | 'multiple'; minSelected?: number; maxSelected?: number;\n  showSubmit?: boolean; showCancel?: boolean;\n  search?: string; groupId?: string; groups?: OrderedSelectionRow[];\n  pagination?: { hasMore: boolean; nextCursor?: string; loadingMore?: boolean };\n  append?: { revision: string; rows: OrderedSelectionRow[] };\n  allowCreate?: boolean; allowCopy?: boolean; canBrowse?: boolean; errorCode?: string;\n}\nexport type OrderedSelectionError = 'ORDERED_SELECTION_LIMIT_EXCEEDED' | 'ORDERED_SELECTION_BYTES_EXCEEDED' | 'ORDERED_SELECTION_INVALID_MODEL';\nexport type OrderedSelectionIntent = { scopeId: string } & (\n  | { type: 'change' | 'submit'; selectedIds: string[]; selectedCount: number; expectedRevision: string }\n  | { type: 'search' | 'group-change'; value: string }\n  | { type: 'load-more'; cursor: string }\n  | { type: 'copy'; id: string }\n  | { type: 'create' | 'retry' | 'cancel' }\n  | { type: 'error'; code: OrderedSelectionError }\n);\nexport interface OrderedSelectionProps { model: OrderedSelectionModel; onIntent(intent: OrderedSelectionIntent): void; translate(key: string): string }\nexport const ORDERED_SELECTION_MAX_ITEMS = 10000;\nexport const ORDERED_SELECTION_MAX_GROUPS = ORDERED_SELECTION_MAX_ITEMS + 2;\nexport const ORDERED_SELECTION_MAX_BYTES = 1024 * 1024;\nconst validId = (id: string) => typeof id === 'string' && id.trim().length > 0 && id.length <= 256 && !/[\\u0000-\\u001f\\u007f-\\u009f]/.test(id);\nexport function validateOrderedSelection(ids: readonly string[]): OrderedSelectionError | undefined {\n  if (ids.length > ORDERED_SELECTION_MAX_ITEMS) return 'ORDERED_SELECTION_LIMIT_EXCEEDED';\n  if (ids.some(id => !validId(id)) || new Set(ids).size !== ids.length) return 'ORDERED_SELECTION_INVALID_MODEL';\n  if (new TextEncoder().encode(JSON.stringify(ids)).byteLength > ORDERED_SELECTION_MAX_BYTES) return 'ORDERED_SELECTION_BYTES_EXCEEDED';\n}\nexport function OrderedSelection(props: OrderedSelectionProps) {\n  return <SelectionDraft key={JSON.stringify([props.model.scopeId, props.model.revision])} {...props} />;\n}\nfunction SelectionDraft({ model, onIntent, translate: t }: OrderedSelectionProps) {\n  const { locale } = useMonkeysLocale();\n  const [ids, setIds] = useState(() => [...model.selectedIds]);\n  const [search, setSearch] = useState(model.search ?? '');\n  const [input, setInput] = useState('');\n  const [error, setError] = useState<OrderedSelectionError | undefined>(() => validateOrderedSelection(model.selectedIds));\n  const [start, setStart] = useState(0);\n\n  const committedIds = useRef(ids);\n  const consumed = useRef(new Set<string>());\n  const cache = useRef(new Map<string, OrderedSelectionRow>());\n  const active = useRef(true);\n  const drag = useRef<string>();\n  useEffect(() => { active.current = true; return () => { active.current = false; }; }, []);\n  const blocked = Boolean(model.pending || model.readOnly || model.loading);\n  const latest = useRef({ blocked, model }); latest.current = { blocked, model };\n  const emit = (intent: OrderedSelectionIntent) => { if (active.current && !latest.current.blocked) onIntent(intent); };\n  const appendRows = model.append && !consumed.current.has(model.append.revision) ? model.append.rows : [];\n  const currentRows = [...(model.candidates ?? []), ...appendRows];\n  const selectedSet = new Set(committedIds.current);\n  const selectedAppendRows = (model.append?.rows ?? []).filter(row => selectedSet.has(row.id));\n  for (const row of [...(model.selectedRows ?? []).filter(row => selectedSet.has(row.id)), ...selectedAppendRows, ...currentRows]) if (validId(row.id)) cache.current.set(row.id, row);\n  // Unselected metadata from the original model and consumed append must not accumulate.\n  const retained = new Set([...committedIds.current, ...currentRows.map(row => row.id)]);\n  for (const id of cache.current.keys()) if (!retained.has(id)) cache.current.delete(id);\n  const displayIssue = (next: readonly string[]): OrderedSelectionError | undefined => {\n    const groups = model.groups ?? [];\n    if (groups.length > ORDERED_SELECTION_MAX_GROUPS || groups.some(row => !validId(row.id)) || new Set(groups.map(row => row.id)).size !== groups.length) return 'ORDERED_SELECTION_INVALID_MODEL';\n    const displayed = new Map<string, OrderedSelectionRow>();\n    for (const id of next) displayed.set(id, cache.current.get(id) ?? { id });\n    for (const row of currentRows) displayed.set(row.id, row);\n    const bytes = new TextEncoder().encode(JSON.stringify({ selectedIds: next, rows: [...displayed.values()], groups })).byteLength;\n    return bytes > ORDERED_SELECTION_MAX_BYTES ? 'ORDERED_SELECTION_BYTES_EXCEEDED' : undefined;\n  };\n  const label = (id: string) => { const row = cache.current.get(id); return row?.labelI18n ? resolveI18nDisplayText(row.labelI18n, locale) : row?.labelKey ? t(row.labelKey) : row?.label || id; };\n  const rowText = (id: string, selected = false) => {\n    const row = cache.current.get(id);\n    const description = row?.descriptionI18n ? resolveI18nDisplayText(row.descriptionI18n, locale) : row?.descriptionKey ? t(row.descriptionKey) : row?.description;\n    const detail = [description, row?.showId ? id : undefined].filter(value => value !== undefined && value !== '').join(' · ');\n    return <span className=\"min-w-0 flex-1 overflow-hidden\"><span className=\"block truncate\">{label(id)}{selected && row?.missing ? ` (${t('Unavailable')})` : ''}</span>{detail ? <span className=\"block truncate text-xs text-muted-foreground\" title={detail}>{detail}</span> : null}</span>;\n  };\n  const max = model.selectionMode === 'single' ? 1 : Math.min(10000, model.maxSelected ?? 10000);\n  const min = model.minSelected ?? 0;\n  const commit = (next: string[]) => {\n    if (latest.current.blocked || !active.current) return false;\n    const issue = next.length > max ? 'ORDERED_SELECTION_LIMIT_EXCEEDED' : validateOrderedSelection(next);\n    const code = issue ?? displayIssue(next);\n    if (code) { setError(code); emit({ type: 'error', scopeId: model.scopeId, code }); return false; }\n    // The append token can be consumed before React commits its queued state update.\n    // Retain the accepted selection through any intervening parent render.\n    committedIds.current = next;\n    setError(undefined); setIds(next); emit({ type: 'change', scopeId: model.scopeId, expectedRevision: model.revision, selectedIds: [...next], selectedCount: next.length }); return true;\n  };\n\n  useEffect(() => {\n    if (!model.append || model.append.rows.length === 0 || blocked || consumed.current.has(model.append.revision)) return;\n    if (commit([...new Set([...ids, ...model.append.rows.map(row => row.id)])])) consumed.current.add(model.append.revision);\n  }, [model.append, blocked, ids]);\n  const move = (id: string, target: number) => { const from = ids.indexOf(id); if (from < 0 || target < 0 || target >= ids.length || from === target) return; const next = [...ids]; next.splice(from, 1); next.splice(target, 0, id); commit(next); };\n  const searchNow = () => emit({ type: 'search', scopeId: model.scopeId, value: search.trim() });\n  const boundsInvalid = !Number.isSafeInteger(min) || !Number.isSafeInteger(max) || min < 0 || max < 0 || min > max;\n  const modelIssue = boundsInvalid ? 'ORDERED_SELECTION_INVALID_MODEL' : displayIssue(ids);\n  const safeCode = modelIssue ?? error ?? (model.errorCode && /^[A-Z][A-Z0-9_]{0,127}$/.test(model.errorCode) ? model.errorCode : model.errorCode ? 'ORDERED_SELECTION_INVALID_MODEL' : undefined);\n  const windowStart = Math.min(start, Math.max(0, ids.length - 1));\n  return <div className=\"flex min-w-0 flex-col gap-3\" data-ordered-selection={model.scopeId}>\n    {safeCode ? <p role=\"alert\">{t(safeCode)}</p> : null}\n    {model.loading ? <p role=\"status\">{t('Loading')}</p> : null}\n    {model.mode === 'ids' ? <div><BaseTextarea aria-label={t('IDs')} disabled={blocked} value={input} onChange={event => setInput(event.target.value)} /><BaseButton disabled={blocked} onClick={() => { commit([...new Set([...ids, ...input.split(/[\\s,;]+/).filter(Boolean)])]); }}>{t('Add')}</BaseButton></div> : <div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n      {model.groupId !== undefined ? <BaseSelect aria-label={t('Group')} value={model.groupId} disabled={blocked || model.canBrowse === false} onChange={event => emit({ type: 'group-change', scopeId: model.scopeId, value: event.currentTarget.value })}>{(model.groups ?? []).map(row => <option key={row.id} value={row.id}>{row.labelI18n ? resolveI18nDisplayText(row.labelI18n, locale) : row.labelKey ? t(row.labelKey) : row.label || row.id}</option>)}</BaseSelect> : null}\n      <BaseInput aria-label={t('Search')} value={search} disabled={blocked || model.canBrowse === false} onChange={event => setSearch(event.target.value)} onKeyDown={event => { if (event.key === 'Enter') { event.preventDefault(); searchNow(); } }} />\n      <BaseButton disabled={blocked || model.canBrowse === false} onClick={searchNow}>{t('Search')}</BaseButton>\n      {model.allowCreate ? <BaseButton disabled={blocked} onClick={() => emit({ type: 'create', scopeId: model.scopeId })}>{t('Create')}</BaseButton> : null}\n      <div className=\"w-full space-y-2\" data-ordered-candidates style={{ maxHeight: 384, overflowY: 'auto' }}>{(model.candidates ?? []).map(row => <div key={row.id} className=\"flex items-center gap-2\"><label className=\"flex min-w-0 flex-1 items-center gap-2\"><BaseCheckbox disabled={blocked || row.disabled} checked={ids.includes(row.id)} onChange={event => commit(event.currentTarget.checked ? model.selectionMode === 'single' ? [row.id] : [...new Set([...ids, row.id])] : ids.filter(id => id !== row.id))} />{rowText(row.id)}</label>{model.allowCopy ? <BaseButton disabled={blocked || row.disabled} onClick={() => emit({ type: 'copy', scopeId: model.scopeId, id: row.id })}>{t('Copy')}</BaseButton> : null}</div>)}</div>\n      {model.pagination?.hasMore && model.pagination.nextCursor ? <BaseButton disabled={blocked || model.canBrowse === false || model.pagination.loadingMore} onClick={() => emit({ type: 'load-more', scopeId: model.scopeId, cursor: model.pagination!.nextCursor! })}>{t('Load more')}</BaseButton> : null}\n    </div>}\n    <BaseButton className=\"self-start\" disabled={blocked || ids.length === 0} onClick={() => commit([])}>{t('Clear')}</BaseButton>\n    <div role=\"status\" aria-live=\"polite\">{ids.length} / {ORDERED_SELECTION_MAX_ITEMS}</div>\n    <div data-ordered-viewport style={{ height: Math.min(384, ids.length * 48), overflowY: 'auto' }} onScroll={event => setStart(Math.max(0, Math.floor(event.currentTarget.scrollTop / 48) - 2))}>\n      <ol aria-label={t('Selected')} style={{ height: ids.length * 48, position: 'relative', margin: 0 }}>\n        {ids.slice(windowStart, windowStart + 14).map((id, offset) => { const index = windowStart + offset; return <li key={id} data-ordered-id={id} aria-posinset={index + 1} aria-setsize={ids.length} style={{ position: 'absolute', top: index * 48, height: 48, left: 0, right: 0, display: 'flex', gap: 8 }} onDragOver={event => { if (!blocked && drag.current) event.preventDefault(); }} onDrop={event => { event.preventDefault(); if (drag.current && event.dataTransfer.getData('application/x-monkeys-ordered-selection') === drag.current) move(drag.current, index); drag.current = undefined; }}>\n          <BaseButton data-ordered-drag={id} aria-label={t('Move')} disabled={blocked} draggable={!blocked} onDragStart={event => { if (blocked) return event.preventDefault(); drag.current = id; event.dataTransfer.setData('application/x-monkeys-ordered-selection', id); }} onDragEnd={() => { drag.current = undefined; }} onKeyDown={event => { if (event.key === 'ArrowUp' || event.key === 'ArrowDown') { event.preventDefault(); move(id, index + (event.key === 'ArrowUp' ? -1 : 1)); } }}>↕</BaseButton>\n          {rowText(id, true)}\n          <BaseButton disabled={blocked || index === 0} aria-label={t('Move up')} onClick={() => move(id, index - 1)}>↑</BaseButton><BaseButton disabled={blocked || index === ids.length - 1} aria-label={t('Move down')} onClick={() => move(id, index + 1)}>↓</BaseButton><BaseButton disabled={blocked} aria-label={t('Remove')} onClick={() => commit(ids.filter(value => value !== id))}>×</BaseButton>\n        </li>; })}\n      </ol>\n    </div>\n    <div className=\"flex flex-wrap items-center gap-2\">\n    {model.showSubmit !== false ? <BaseButton disabled={blocked || Boolean(error || modelIssue) || ids.length < min || ids.length > max} onClick={() => emit({ type: 'submit', scopeId: model.scopeId, expectedRevision: model.revision, selectedIds: [...ids], selectedCount: ids.length })}>{t('Save')}</BaseButton> : null}\n    {model.showCancel !== false ? <BaseButton disabled={blocked} onClick={() => emit({ type: 'cancel', scopeId: model.scopeId })}>{t('Cancel')}</BaseButton> : null}\n    {model.errorCode ? <BaseButton disabled={blocked} onClick={() => emit({ type: 'retry', scopeId: model.scopeId })}>{t('Retry')}</BaseButton> : null}\n    </div>\n  </div>;\n}\n","import { z } from 'zod';\nimport { I18nTextSchema, type JsonObject } from '@inf-monkeys-tech/monkeys';\nimport { OrderedSelection } from '../workbench/OrderedSelection';\nimport { I18N_DISPLAY_TEXT_SCHEMA } from './localizedDisplayValue';\nimport type { DesignCapabilityRendererContext } from './contracts';\n\nconst id = z.string().min(1).max(256);\nconst row = z.object({ id, label: z.string().optional(), labelKey: z.string().min(1).optional(), labelI18n: I18nTextSchema.optional(), description: z.string().optional(), descriptionKey: z.string().min(1).optional(), descriptionI18n: I18nTextSchema.optional(), showId: z.boolean().optional(), missing: z.boolean().optional(), disabled: z.boolean().optional() }).strict();\nconst modelSchema = z.object({\n  scopeId: id, revision: id, titleKey: z.string().min(1).optional(), descriptionKey: z.string().min(1).optional(), selectedIds: z.array(id).max(10000), selectedRows: z.array(row).max(10000).optional(), candidates: z.array(row).max(10000).optional(),\n  mode: z.enum(['options','ids']).optional(), selectionMode: z.enum(['single','multiple']).optional(), minSelected: z.number().int().min(0).max(10000).optional(), maxSelected: z.number().int().min(0).max(10000).optional(),\n  showSubmit: z.boolean().optional(), showCancel: z.boolean().optional(), loading: z.boolean().optional(), pending: z.boolean().optional(), readOnly: z.boolean().optional(), search: z.string().optional(), groupId: id.optional(), groups: z.array(row).max(10002).optional(),\n  pagination: z.object({ hasMore: z.boolean(), nextCursor: z.string().optional(), loadingMore: z.boolean().optional() }).strict().optional(),\n  append: z.object({ revision: id, rows: z.array(row).max(10000) }).strict().optional(), allowCreate: z.boolean().optional(), allowCopy: z.boolean().optional(), canBrowse: z.boolean().optional(), errorCode: z.string().optional(),\n}).strict();\nconst ID: JsonObject = { type: 'string', minLength: 1, maxLength: 256 };\nconst ROW: JsonObject = { type: 'object', additionalProperties: false, required: ['id'], properties: { id: ID, label: { type: 'string' }, labelKey: { type: 'string', minLength: 1 }, labelI18n: I18N_DISPLAY_TEXT_SCHEMA, description: { type: 'string' }, descriptionKey: { type: 'string', minLength: 1 }, descriptionI18n: I18N_DISPLAY_TEXT_SCHEMA, showId: { type: 'boolean' }, missing: { type: 'boolean' }, disabled: { type: 'boolean' } } };\nconst ROWS: JsonObject = { type: 'array', maxItems: 10000, items: ROW };\nconst IDS: JsonObject = { type: 'array', maxItems: 10000, uniqueItems: true, items: ID };\nconst BOUND: JsonObject = { type: 'integer', minimum: 0, maximum: 10000 };\nexport const ORDERED_SELECTION_MODEL_SCHEMA: JsonObject = {\n  type: 'object', additionalProperties: false, required: ['scopeId','revision','selectedIds'], properties: {\n    scopeId: ID, revision: ID, titleKey: { type: 'string', minLength: 1 }, descriptionKey: { type: 'string', minLength: 1 }, selectedIds: IDS, selectedRows: ROWS, candidates: ROWS,\n    mode: { enum: ['options','ids'] }, selectionMode: { enum: ['single','multiple'] }, minSelected: BOUND, maxSelected: BOUND,\n    showSubmit: { type: 'boolean' }, showCancel: { type: 'boolean' }, loading: { type: 'boolean' }, pending: { type: 'boolean' }, readOnly: { type: 'boolean' }, search: { type: 'string' }, groupId: ID, groups: { ...ROWS, maxItems: 10002 },\n    pagination: { type: 'object', additionalProperties: false, required: ['hasMore'], properties: { hasMore: { type: 'boolean' }, nextCursor: { type: 'string' }, loadingMore: { type: 'boolean' } } },\n    append: { type: 'object', additionalProperties: false, required: ['revision','rows'], properties: { revision: ID, rows: ROWS } },\n    allowCreate: { type: 'boolean' }, allowCopy: { type: 'boolean' }, canBrowse: { type: 'boolean' }, errorCode: { type: 'string', maxLength: 128 },\n  },\n};\nconst selected = { selectedIds: IDS, selectedCount: BOUND, expectedRevision: ID };\nconst INTENT_PROPERTIES: Record<string, JsonObject> = {\n  change: selected, submit: selected, search: { value: { type: 'string' } }, 'group-change': { value: ID }, 'load-more': { cursor: { type: 'string', minLength: 1 } }, copy: { id: ID }, create: {}, retry: {}, cancel: {},\n  error: { code: { enum: ['ORDERED_SELECTION_LIMIT_EXCEEDED','ORDERED_SELECTION_BYTES_EXCEEDED','ORDERED_SELECTION_INVALID_MODEL'] } },\n};\nexport const ORDERED_SELECTION_INTENT_SCHEMAS: Readonly<Record<string, JsonObject>> = Object.fromEntries(Object.entries(INTENT_PROPERTIES).map(([name, properties]) => [name, { type: 'object', additionalProperties: false, required: ['scopeId', ...Object.keys(properties)], properties: { scopeId: ID, ...properties } }]));\nconst LABELS: Readonly<Record<string, string>> = { Loading:'loading', IDs:'ids', Add:'add', Group:'group', Search:'search', Create:'create', Copy:'copy', 'Load more':'loadMore', Clear:'clear', Selected:'selected', Move:'move', Unavailable:'unavailable', 'Move up':'moveUp', 'Move down':'moveDown', Remove:'remove', Save:'save', Cancel:'cancel', Retry:'retry', ORDERED_SELECTION_LIMIT_EXCEEDED:'errors.limit', ORDERED_SELECTION_BYTES_EXCEEDED:'errors.bytes', ORDERED_SELECTION_INVALID_MODEL:'errors.invalid' };\nconst runtimePaginationSchema = z.object({\n  hasMore: z.boolean(), nextCursor: z.string().nullable().optional(), loadingMore: z.boolean().optional(),\n  pageSize: z.number().int().positive().optional(), returned: z.number().int().nonnegative().optional(), total: z.number().int().nonnegative().optional(),\n  loadedCount: z.number().int().nonnegative().optional(), loadedStart: z.number().int().nonnegative().optional(), loadedEnd: z.number().int().nonnegative().optional(),\n  errorCode: z.string().max(128).optional(),\n}).strict();\nexport function normalizeOrderedSelectionRuntimeModel(input: JsonObject) {\n  const { submitting, pagination: rawPagination, ...publicModel } = input;\n  if (submitting !== undefined && typeof submitting !== 'boolean') throw new TypeError('Invalid runtime submitting state.');\n  const pagination = rawPagination === undefined ? undefined : runtimePaginationSchema.parse(rawPagination);\n  const model = modelSchema.parse({ ...publicModel, ...(pagination ? { pagination: {\n    hasMore: pagination.hasMore,\n    ...(pagination.nextCursor === null || pagination.nextCursor === undefined ? {} : { nextCursor: pagination.nextCursor }),\n    ...(pagination.loadingMore === undefined ? {} : { loadingMore: pagination.loadingMore }),\n  } } : {}), ...(publicModel.errorCode === undefined && pagination?.errorCode ? { errorCode: pagination.errorCode } : {}) });\n  return { ...model, pending: model.pending === true || submitting === true };\n}\nexport function OrderedSelectionCapabilityRenderer(context: DesignCapabilityRendererContext) {\n  // submitting is host-owned transient action state; it never becomes part of the query contract.\n  const model = normalizeOrderedSelectionRuntimeModel(context.model);\n  return <OrderedSelection model={model} translate={key => context.translate(LABELS[key] ? `monkeys.design.capability.orderedSelection.${LABELS[key]}` : key)} onIntent={intent => {\n    const { type, ...payload } = intent;\n    void context.emitIntent(`capability.ordered-selection.${type}`, payload);\n  }} />;\n}\n","import { z } from 'zod';\nimport { I18nTextSchema, type JsonObject } from '@inf-monkeys-tech/monkeys';\nimport { I18N_DISPLAY_TEXT_SCHEMA } from './localizedDisplayValue';\nconst id = z.string().min(1).max(256).refine(value => value.trim().length > 0 && !/[\\u0000-\\u001f\\u007f]/.test(value) && !['__proto__', 'constructor', 'prototype'].includes(value));\nexport const GalleryPresentationSettingsSchema = z.object({\n  visibleColumnKeys: z.array(id).min(1).refine(value => new Set(value).size === value.length),\n  galleryFieldKey: id,\n  galleryLayout: z.enum(['fixed', 'masonry']),\n  galleryDensity: z.enum(['compact', 'comfortable', 'detailed']),\n  galleryGridColumns: z.union([z.literal('auto'), z.number().int().min(1).max(4)]),\n  galleryBentoColumns: z.number().int().min(1).max(3),\n  galleryDetailVisibility: z.enum(['all', 'limit']),\n  galleryDetailLimit: z.number().int().min(1).max(Number.MAX_SAFE_INTEGER),\n}).strict();\nexport const GalleryPresentationFieldsSchema = z.array(z.object({ id, label: z.string().optional(), labelKey: z.string().min(1).optional(), labelI18n: I18nTextSchema.optional(), role: z.enum(['title', 'summary', 'media', 'detail', 'actions']).optional() }).strict()).min(1).refine(fields => new Set(fields.map(field => field.id)).size === fields.length);\nexport type GalleryPresentationSettings = z.infer<typeof GalleryPresentationSettingsSchema>;\nexport type GalleryPresentationField = z.infer<typeof GalleryPresentationFieldsSchema>[number];\nconst idSchema: JsonObject = { type: 'string', minLength: 1, maxLength: 256, pattern: '^(?!__proto__$|constructor$|prototype$)(?=.*\\\\S)[^\\\\u0000-\\\\u001f\\\\u007f]+$' };\nconst properties: JsonObject = {\n visibleColumnKeys: { type: 'array', minItems: 1, uniqueItems: true, items: idSchema }, galleryFieldKey: idSchema,\n galleryLayout: { enum: ['fixed', 'masonry'] }, galleryDensity: { enum: ['compact', 'comfortable', 'detailed'] },\n galleryGridColumns: { oneOf: [{ const: 'auto' }, { type: 'integer', minimum: 1, maximum: 4 }] },\n galleryBentoColumns: { type: 'integer', minimum: 1, maximum: 3 }, galleryDetailVisibility: { enum: ['all', 'limit'] },\n galleryDetailLimit: { type: 'integer', minimum: 1, maximum: Number.MAX_SAFE_INTEGER },\n};\nexport const GALLERY_PRESENTATION_SETTINGS_SCHEMA: JsonObject = { type: 'object', additionalProperties: false, required: Object.keys(properties), properties };\nexport const GALLERY_PRESENTATION_FIELDS_SCHEMA: JsonObject = { type: 'array', minItems: 1, items: { type: 'object', additionalProperties: false, required: ['id'], properties: { id: idSchema, label: { type: 'string' }, labelKey: { type: 'string', minLength: 1 }, labelI18n: I18N_DISPLAY_TEXT_SCHEMA, role: { enum: ['title', 'summary', 'media', 'detail', 'actions'] } } } };\nexport const GALLERY_PRESENTATION_SETTING_CHANGE_SCHEMA: JsonObject = { oneOf: Object.entries(properties).map(([settingId, value]) => ({ type: 'object', additionalProperties: false, required: ['settingId', 'value'], properties: { settingId: { const: settingId }, value } })) };\n/** UI adapters alone may normalize numeric input strings; persisted models remain strictly typed. */\nexport function normalizeGalleryPresentationSettings(value: unknown, fieldIds: readonly string[]): GalleryPresentationSettings {\n  if (!value || typeof value !== 'object' || Array.isArray(value)) throw new TypeError('Invalid gallery settings.');\n  const input = { ...value } as Record<string, unknown>;\n  for (const key of ['galleryGridColumns', 'galleryBentoColumns', 'galleryDetailLimit']) {\n    if (typeof input[key] === 'string' && /^[1-9][0-9]*$/.test(input[key])) input[key] = Number(input[key]);\n  }\n  return validateGalleryPresentationSettings(input, fieldIds);\n}\nexport function validateGalleryPresentationSettings(value: unknown, fieldIds: readonly string[]): GalleryPresentationSettings {\n  const settings = GalleryPresentationSettingsSchema.parse(value);\n  const allowed = new Set(fieldIds);\n  if (settings.visibleColumnKeys.some(key => !allowed.has(key)) || settings.galleryFieldKey !== 'auto' && !allowed.has(settings.galleryFieldKey)) throw new TypeError('Unknown gallery field.');\n  return settings;\n}\n","import { safeDisplayUrl } from '../safeDisplayUrl';\nimport { useEffect, useRef, type CSSProperties } from 'react';\nimport type { Terminal } from '@xterm/xterm';\n\nexport interface RuntimeTerminalOutputFrame { sequence: number; data: string }\nexport type RuntimeTerminalOutputErrorCode = 'invalid-frame' | 'duplicate-sequence' | 'sequence-gap' | 'sequence-conflict' | 'history-expired' | 'output-budget-exceeded' | 'load-failed';\nexport interface RuntimeTerminalViewProps {\n  sessionKey: string;\n  output: readonly RuntimeTerminalOutputFrame[];\n  statusLabel: string;\n  disabled?: boolean;\n  className?: string;\n  style?: CSSProperties;\n  onInput?: (event: { sessionKey: string; data: string }) => void;\n  onResize?: (event: { sessionKey: string; columns: number; rows: number }) => void;\n  onOutputError?: (event: { sessionKey: string; code: RuntimeTerminalOutputErrorCode; expectedSequence: number; receivedSequence?: number }) => void;\n}\nexport const RUNTIME_TERMINAL_MAX_RETAINED_FRAMES = 2048;\nexport const RUNTIME_TERMINAL_MAX_RETAINED_BYTES = 2 * 1024 * 1024;\ninterface RetainedFrame extends RuntimeTerminalOutputFrame { bytes: number }\nexport interface RuntimeTerminalOutputHistory { highWater: number; bytes: number; frames: readonly RetainedFrame[] }\nexport class RuntimeTerminalOutputError extends Error {\n  constructor(readonly code: RuntimeTerminalOutputErrorCode, readonly expectedSequence: number, readonly receivedSequence?: number) { super(code); this.name = 'RuntimeTerminalOutputError'; }\n}\n/** Validate the entire batch before any write. Old replay beyond the bounded window fails closed. */\nexport function prepareRuntimeTerminalOutput(history: RuntimeTerminalOutputHistory, output: readonly RuntimeTerminalOutputFrame[]): { history: RuntimeTerminalOutputHistory; append: readonly RuntimeTerminalOutputFrame[] } {\n  const fail = (code: RuntimeTerminalOutputErrorCode, received?: number): never => { throw new RuntimeTerminalOutputError(code, history.highWater + 1, received); };\n  if (!Array.isArray(output)) return fail('invalid-frame');\n  if (output.length > RUNTIME_TERMINAL_MAX_RETAINED_FRAMES) return fail('output-budget-exceeded');\n  const known = new Map(history.frames.map(frame => [frame.sequence, frame]));\n  const append: RetainedFrame[] = [];\n  let highWater = history.highWater, previous: number | undefined, batchBytes = 0;\n  for (const frame of output) {\n    if (!frame || !Number.isSafeInteger(frame.sequence) || frame.sequence < 1 || typeof frame.data !== 'string') return fail('invalid-frame');\n    if (previous !== undefined && frame.sequence === previous) return fail('duplicate-sequence', frame.sequence);\n    if (previous !== undefined && frame.sequence !== previous + 1) return fail('sequence-gap', frame.sequence);\n    previous = frame.sequence;\n    if (frame.data.length > RUNTIME_TERMINAL_MAX_RETAINED_BYTES) return fail('output-budget-exceeded', frame.sequence);\n    const bytes = new TextEncoder().encode(frame.data).byteLength;\n    batchBytes += bytes;\n    if (batchBytes > RUNTIME_TERMINAL_MAX_RETAINED_BYTES) return fail('output-budget-exceeded', frame.sequence);\n    if (frame.sequence <= highWater) {\n      const seen = known.get(frame.sequence);\n      if (!seen) return fail('history-expired', frame.sequence);\n      if (seen.data !== frame.data) return fail('sequence-conflict', frame.sequence);\n    } else {\n      if (frame.sequence !== highWater + 1) return fail('sequence-gap', frame.sequence);\n      highWater = frame.sequence;\n      append.push({ sequence: frame.sequence, data: frame.data, bytes });\n    }\n  }\n  const frames = [...history.frames, ...append];\n  let bytes = history.bytes + append.reduce((sum, frame) => sum + frame.bytes, 0), remove = 0;\n  while (frames.length - remove > RUNTIME_TERMINAL_MAX_RETAINED_FRAMES || bytes > RUNTIME_TERMINAL_MAX_RETAINED_BYTES) bytes -= frames[remove++]!.bytes;\n  return { history: { highWater, bytes, frames: frames.slice(remove) }, append: append.map(({ sequence, data }) => ({ sequence, data })) };\n}\n\n/** Rendering only. Authentication, network transport and authoritative retained frames belong to the host. */\nexport function RuntimeTerminalView(props: RuntimeTerminalViewProps) {\n  const element = useRef<HTMLDivElement>(null);\n  const latest = useRef(props); latest.current = props;\n  const running = useRef<{ sessionKey: string; terminal: Terminal; write(output: readonly RuntimeTerminalOutputFrame[]): void }>();\n  useEffect(() => {\n    const sessionKey = props.sessionKey;\n    const container = element.current;\n    if (!container || !sessionKey) return;\n    let active = true, terminal: Terminal | undefined, observer: ResizeObserver | undefined;\n    const subscriptions: { dispose(): void }[] = [];\n    let cleaned = false;\n    const cleanup = () => { if (cleaned) return; cleaned = true; observer?.disconnect(); subscriptions.forEach(subscription => subscription.dispose()); terminal?.dispose(); };\n    let history: RuntimeTerminalOutputHistory = { highWater: 0, bytes: 0, frames: [] };\n    const current = () => active && latest.current.sessionKey === sessionKey;\n    const report = (error: unknown) => {\n      if (!current()) return;\n      const fault = error instanceof RuntimeTerminalOutputError ? error : new RuntimeTerminalOutputError('load-failed', history.highWater + 1);\n      latest.current.onOutputError?.({ sessionKey, code: fault.code, expectedSequence: fault.expectedSequence, ...(fault.receivedSequence === undefined ? {} : { receivedSequence: fault.receivedSequence }) });\n    };\n    void Promise.all([import('@xterm/xterm'), import('@xterm/addon-fit'), import('@xterm/addon-web-links')]).then(([{ Terminal }, { FitAddon }, { WebLinksAddon }]) => {\n      if (!current()) return;\n      const openLink = (_event: MouseEvent, uri: string) => { const safe = safeDisplayUrl(uri, 'link'); if (current() && safe && /^https?:\\/\\//i.test(safe)) window.open(safe, '_blank', 'noopener,noreferrer'); };\n      const term = new Terminal({ linkHandler: { activate: openLink }, cursorBlink: true, disableStdin: latest.current.disabled === true, fontSize: 13, fontFamily: '\"JetBrains Mono\", Menlo, Monaco, \"Courier New\", monospace' });\n      terminal = term;\n      const fit = new FitAddon(); term.loadAddon(fit); term.loadAddon(new WebLinksAddon(openLink)); term.open(container);\n      const resize = () => {\n        if (!current()) return;\n        fit.fit();\n        const dimensions = fit.proposeDimensions();\n        if (dimensions && Number.isInteger(dimensions.cols) && Number.isInteger(dimensions.rows) && dimensions.cols > 0 && dimensions.rows > 0) latest.current.onResize?.({ sessionKey, columns: dimensions.cols, rows: dimensions.rows });\n      };\n      subscriptions.push(term.onData(data => { if (current() && !latest.current.disabled) latest.current.onInput?.({ sessionKey, data }); }));\n      const write = (output: readonly RuntimeTerminalOutputFrame[]) => {\n        if (!current()) return;\n        try {\n          const prepared = prepareRuntimeTerminalOutput(history, output);\n          if (prepared.append.length) term.write(prepared.append.map(frame => frame.data).join(''));\n          history = prepared.history;\n        } catch (error) { report(error); }\n      };\n      running.current = { sessionKey, terminal: term, write };\n      resize();\n      if (typeof ResizeObserver !== 'undefined') { observer = new ResizeObserver(resize); observer.observe(container); }\n      write(latest.current.output);\n    }).catch(error => {\n      cleanup();\n      if (terminal && running.current?.terminal === terminal) running.current = undefined;\n      report(error);\n    });\n    return () => {\n      active = false;\n      cleanup();\n      if (terminal && running.current?.terminal === terminal) running.current = undefined;\n    };\n  }, [props.sessionKey]);\n  useEffect(() => {\n    const state = running.current;\n    if (state?.sessionKey === props.sessionKey) { state.terminal.options.disableStdin = props.disabled === true; state.write(props.output); }\n  }, [props.sessionKey, props.output, props.disabled]);\n  return <div className={props.className} style={props.style}>\n    <div role=\"status\">{props.statusLabel}</div>\n    <div ref={element} className=\"h-full min-h-48 w-full rounded-2xl\" />\n  </div>;\n}\n","import { useEffect, useRef, useState } from 'react';\nimport type { JsonObject } from '@inf-monkeys-tech/monkeys';\nimport { RuntimeTerminalView, prepareRuntimeTerminalOutput, type RuntimeTerminalOutputFrame } from '../workbench/RuntimeTerminalView';\nimport type { DesignCapabilityRendererContext } from './contracts';\n\nexport const RUNTIME_TERMINAL_MODEL_SCHEMA: JsonObject = {\n  type: 'object', additionalProperties: false,\n  properties: { statusLabelKey: { type: 'string', minLength: 1, maxLength: 256 }, disabled: { type: 'boolean' } },\n};\ninterface TerminalContext extends DesignCapabilityRendererContext {\n  stream?: { sessionKey: string; status: string; model?: JsonObject; events: readonly JsonObject[]; errorCode?: string };\n  sendStreamControl?: (port: 'terminal.input' | 'terminal.resize' | 'stream.disconnect', payload: JsonObject) => unknown;\n}\nconst safeCode = (code: unknown) => typeof code === 'string' && /^[A-Za-z][A-Za-z0-9_.-]{0,127}$/.test(code) ? code : 'PAGE_STREAM_UNAVAILABLE';\nfunction TerminalSession({ context }: { context: TerminalContext }) {\n  const { stream, model, translate } = context;\n  const latest = useRef(context); latest.current = context;\n  const active = useRef(true);\n  useEffect(() => { active.current = true; return () => { active.current = false; }; }, []);\n  const [outputError, setOutputError] = useState<string>();\n  const dimensions = useRef<{ columns: number; rows: number }>();\n  const sentDimensions = useRef<string>();\n  const sessionKey = stream!.sessionKey;\n  const disabled = model.disabled === true || stream!.status !== 'open' || Boolean(outputError);\n  let output: RuntimeTerminalOutputFrame[] = [], invalid = false;\n  const initial = stream!.model?.output;\n  try {\n    if (initial !== undefined && !Array.isArray(initial)) throw new TypeError('Invalid output');\n    const values = [...(Array.isArray(initial) ? initial : []), ...stream!.events];\n    output = values.map(value => {\n      if (!value || typeof value !== 'object' || Array.isArray(value) || !Number.isSafeInteger(value.sequence) || Number(value.sequence) < 1 || typeof value.data !== 'string') throw new TypeError('Invalid output');\n      return { sequence: Number(value.sequence), data: value.data };\n    });\n    prepareRuntimeTerminalOutput({ highWater: 0, bytes: 0, frames: [] }, output);\n  } catch { invalid = true; output = []; }\n  const send = (key: string, port: 'terminal.input' | 'terminal.resize', payload: JsonObject) => {\n    const current = latest.current;\n    if (!active.current || key !== current.stream?.sessionKey || current.stream.status !== 'open' || current.model.disabled === true || outputError || invalid || !current.sendStreamControl) return;\n    try { void Promise.resolve(current.sendStreamControl(port, payload)).catch(() => { if (active.current && latest.current.stream?.sessionKey === key) setOutputError('PAGE_STREAM_CONTROL_FAILED'); }); }\n    catch { setOutputError('PAGE_STREAM_CONTROL_FAILED'); }\n  };\n  const error = invalid ? 'PAGE_STREAM_OUTPUT_INVALID' : outputError ?? stream!.errorCode;\n  const flushResize = () => {\n    const value = dimensions.current;\n    if (!value || disabled || invalid || !latest.current.sendStreamControl) return;\n    const identity = `${value.columns}:${value.rows}`;\n    if (sentDimensions.current === identity) return;\n    sentDimensions.current = identity;\n    send(sessionKey, 'terminal.resize', value);\n  };\n  useEffect(() => {\n    if (disabled || invalid) { sentDimensions.current = undefined; return; }\n    flushResize();\n  }, [stream!.status, model.disabled, outputError, invalid, context.sendStreamControl]);\n  return <div data-monkeys-component=\"runtime-terminal-capability\">\n    {error ? <div role=\"alert\">{safeCode(error)}</div> : null}\n    <RuntimeTerminalView sessionKey={sessionKey} output={output} disabled={disabled || invalid}\n      statusLabel={translate(typeof model.statusLabelKey === 'string' ? model.statusLabelKey : 'monkeys.design.capability.runtimeTerminal.status')}\n      onInput={event => send(event.sessionKey, 'terminal.input', { data: event.data })}\n      onResize={event => {\n        if (!active.current || event.sessionKey !== latest.current.stream?.sessionKey || !Number.isInteger(event.columns) || !Number.isInteger(event.rows) || event.columns < 1 || event.rows < 1) return;\n        dimensions.current = { columns: event.columns, rows: event.rows };\n        flushResize();\n      }}\n      onOutputError={event => { if (active.current && latest.current.stream?.sessionKey === event.sessionKey) setOutputError(safeCode(event.code)); }} />\n  </div>;\n}\nexport function RuntimeTerminalCapabilityRenderer(context: TerminalContext) {\n  if (!context.stream?.sessionKey) return <div role=\"status\">{context.translate('monkeys.design.capability.runtimeTerminal.waiting')}</div>;\n  return <TerminalSession key={context.stream.sessionKey} context={context} />;\n}\n","import type { JsonObject } from \"@inf-monkeys-tech/monkeys\";\nimport type { CapabilityTranslate, CapabilityTranslateValues } from \"./contracts\";\n\nexport const TABLE_MESSAGE_VALUE_SCHEMA: JsonObject = {\n  type: \"object\",\n  additionalProperties: false,\n  required: [\"key\"],\n  properties: {\n    key: { type: \"string\", minLength: 1 },\n    values: {\n      type: \"object\",\n      additionalProperties: { type: [\"string\", \"number\", \"boolean\"] },\n    },\n  },\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n  typeof value === \"object\" && value !== null && !Array.isArray(value) &&\n  (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);\n\n/** Translate an explicitly typed message cell; never infer messages from ordinary objects. */\nexport function renderTableMessageValue(value: unknown, translate: CapabilityTranslate): string {\n  if (!isRecord(value) || typeof value.key !== \"string\" || value.key.length === 0 ||\n      Object.keys(value).some((key) => key !== \"key\" && key !== \"values\")) {\n    throw new TypeError(\"Invalid table message value\");\n  }\n  if (value.values !== undefined && (!isRecord(value.values) ||\n      Object.values(value.values).some((item) =>\n        typeof item !== \"string\" && typeof item !== \"boolean\" &&\n        !(typeof item === \"number\" && Number.isFinite(item))))) {\n    throw new TypeError(\"Invalid table message interpolation values\");\n  }\n  return translate(value.key, value.values as CapabilityTranslateValues | undefined);\n}\n","import { safeDisplayUrl } from '../safeDisplayUrl';\nimport { useEffect, useRef, useState } from \"react\";\nimport type { JsonObject } from \"@inf-monkeys-tech/monkeys\";\n\n/** Explicit copy for public record values; credentials use the ephemeral result host. */\nexport function RecordDetailCopyValue({ value, copy, translate, valueFormat = 'text' }: { value: string; copy: JsonObject; valueFormat?: 'text' | 'absolute-url'; translate: (key: string) => string }) {\n  const [feedback, setFeedback] = useState<\"success\" | \"failure\" | null>(null);\n  const mounted = useRef(true);\n  const pending = useRef(false);\n  useEffect(() => { mounted.current = true; return () => { mounted.current = false; }; }, []);\n  return <span className=\"flex min-w-0 flex-col items-start gap-2\">\n    <span className=\"whitespace-pre-wrap break-all\">{value}</span>\n    <button type=\"button\" className=\"rounded border border-border px-2 py-1 text-sm text-foreground hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n      onClick={async () => {\n        if (pending.current) return;\n        pending.current = true;\n        setFeedback(null);\n        try {\n          if (!navigator.clipboard?.writeText) throw new Error(\"Clipboard unavailable.\");\n          let copied = value;\n          if (valueFormat === 'absolute-url') {\n            const safe = safeDisplayUrl(value, 'link');\n            if (!safe) throw new Error('Unsafe copy URL.');\n            const absolute = new URL(safe, window.location.origin);\n            if (!['http:', 'https:'].includes(absolute.protocol) || !safeDisplayUrl(absolute.href, 'link')) throw new Error('Unsafe copy URL.');\n            copied = absolute.href;\n          } else if (valueFormat !== 'text') throw new Error('Unknown copy format.');\n          await navigator.clipboard.writeText(copied);\n          if (mounted.current) setFeedback(\"success\");\n        } catch {\n          if (mounted.current) setFeedback(\"failure\");\n        } finally { pending.current = false; }\n      }}>{translate(String(copy.labelKey))}</button>\n    {feedback ? <span role={feedback === \"failure\" ? \"alert\" : \"status\"}>{translate(String(feedback === \"success\" ? copy.successLabelKey : copy.failureLabelKey))}</span> : null}\n  </span>;\n}\n","import { TABLE_MESSAGE_VALUE_SCHEMA, renderTableMessageValue } from './tableMessageValue';\nimport { RecordDetailCopyValue } from './recordDetailCopyValue';\nimport type { JsonObject } from '@inf-monkeys-tech/monkeys';\nimport { BaseAssetIcon, BASE_ASSET_ICON_DESCRIPTOR_SCHEMA, type BaseAssetIconDescriptor } from '../base/BaseAssetIcon';\nimport { BaseBadge } from '../base/BaseBadge';\nimport type { BaseControlTone } from '../base/types';\nimport { useMonkeysLocale } from '../../provider/context';\nimport type { CapabilityTranslate } from './contracts';\nimport { I18N_DISPLAY_TEXT_SCHEMA, resolveI18nDisplayText } from './localizedDisplayValue';\n\nconst tones = ['default', 'primary', 'success', 'warning', 'danger', 'muted'] as const;\nexport const TABLE_COPY_PARAMETERS_SCHEMA: JsonObject = { type: 'object', additionalProperties: false, required: ['labelKey', 'successLabelKey', 'failureLabelKey'], properties: { labelKey: { type: 'string', minLength: 1 }, successLabelKey: { type: 'string', minLength: 1 }, failureLabelKey: { type: 'string', minLength: 1 } } };\nexport const TABLE_DISPLAY_CELL_SCHEMAS: JsonObject[] = [\n  { type: 'object', additionalProperties: false, required: ['valueType', 'value'], properties: { valueType: { const: 'stack' }, value: {\n    type: 'object', additionalProperties: false, required: ['lines'], properties: { lines: { type: 'array', items: { oneOf: [{ type: 'string' }, I18N_DISPLAY_TEXT_SCHEMA, TABLE_MESSAGE_VALUE_SCHEMA] } }, icon: BASE_ASSET_ICON_DESCRIPTOR_SCHEMA },\n  } } },\n  { type: 'object', additionalProperties: false, required: ['valueType', 'value'], properties: { valueType: { const: 'metrics' }, value: {\n    type: 'object', additionalProperties: false, required: ['items'], properties: { items: { type: 'array', items: { type: 'object', additionalProperties: false, required: ['labelKey', 'value'], properties: { labelKey: { type: 'string', minLength: 1 }, value: { type: 'number' } } } } },\n  } } },\n  { type: 'object', additionalProperties: false, required: ['valueType', 'value', 'copy'], properties: { valueType: { const: 'copy' }, value: { type: 'string' }, copy: TABLE_COPY_PARAMETERS_SCHEMA, valueFormat: { enum: ['text', 'absolute-url'] } } },\n  { type: 'object', additionalProperties: false, required: ['valueType', 'value'], properties: { valueType: { const: 'localized-text' }, value: I18N_DISPLAY_TEXT_SCHEMA } },\n  { type: 'object', additionalProperties: false, required: ['valueType', 'value'], properties: { valueType: { const: 'identity' }, value: {\n    type: 'object', additionalProperties: false, anyOf: [{ required: ['text'] }, { required: ['textI18n'] }],\n    properties: { text: { type: 'string' }, textI18n: I18N_DISPLAY_TEXT_SCHEMA, imageUrl: { type: 'string', minLength: 1, maxLength: 4096 }, icon: BASE_ASSET_ICON_DESCRIPTOR_SCHEMA },\n  } } },\n  { type: 'object', additionalProperties: false, required: ['valueType', 'value'], properties: { valueType: { const: 'badge' }, value: {\n    type: 'object', additionalProperties: false, oneOf: [{ required: ['textKey'], not: { required: ['textI18n'] } }, { required: ['textI18n'], not: { anyOf: [{ required: ['textKey'] }, { required: ['textParameters'] }] } }],\n    properties: { textKey: { type: 'string', minLength: 1 }, textParameters: { type: 'object', additionalProperties: { type: ['string', 'number', 'boolean', 'null'] } }, textI18n: I18N_DISPLAY_TEXT_SCHEMA, tone: { enum: [...tones] }, icon: BASE_ASSET_ICON_DESCRIPTOR_SCHEMA },\n  } } },\n];\nconst object = (value: unknown): value is Record<string, unknown> => Boolean(value) && typeof value === 'object' && !Array.isArray(value);\nfunction iconDescriptor(value: unknown): BaseAssetIconDescriptor | undefined {\n  if (value === undefined) return undefined;\n  if (!object(value)) throw new TypeError('Invalid display icon descriptor.');\n  const keys = Object.keys(value);\n  if (value.kind === 'image' && typeof value.src === 'string' && value.src.length > 0 && value.src.length <= 4096 && keys.every(key => ['kind', 'src'].includes(key))) return { kind: 'image', src: value.src };\n  if (value.kind === 'lucide' && typeof value.name === 'string' && value.name.length > 0 && value.name.length <= 128 && keys.every(key => ['kind', 'name'].includes(key))) return { kind: 'lucide', name: value.name };\n  if (value.kind === 'emoji' && typeof value.value === 'string' && value.value.length > 0 && value.value.length <= 64 && (value.backgroundColor === undefined || typeof value.backgroundColor === 'string' && value.backgroundColor.length <= 128) && keys.every(key => ['kind', 'value', 'backgroundColor'].includes(key))) return { kind: 'emoji', value: value.value, ...(typeof value.backgroundColor === 'string' ? { backgroundColor: value.backgroundColor } : {}) };\n  throw new TypeError('Invalid display icon descriptor.');\n}\nexport function TypedDisplayCell({ valueType, value, copy, valueFormat, translate }: { valueType: 'localized-text' | 'identity' | 'badge' | 'copy' | 'stack' | 'metrics'; value: unknown; copy?: unknown; valueFormat?: unknown; translate: CapabilityTranslate }) {\n  const { locale } = useMonkeysLocale();\n  if (valueType === 'copy') {\n    if (valueFormat !== undefined && valueFormat !== 'text' && valueFormat !== 'absolute-url') throw new TypeError('Invalid copy value format.');\n    if (typeof value !== 'string' || !object(copy) || Object.keys(copy).length !== 3 || !['labelKey', 'successLabelKey', 'failureLabelKey'].every(key => typeof copy[key] === 'string' && copy[key].length > 0)) throw new TypeError('Invalid table copy value.');\n    return <RecordDetailCopyValue key={JSON.stringify([value, valueFormat])} value={value} valueFormat={valueFormat} copy={{ labelKey: String(copy.labelKey), successLabelKey: String(copy.successLabelKey), failureLabelKey: String(copy.failureLabelKey) }} translate={translate} />;\n  }\n  if (valueFormat !== undefined) throw new TypeError('Value format requires a copy cell.');\n  if (copy !== undefined) throw new TypeError('Copy configuration requires a copy cell.');\n  if (valueType === 'localized-text') return <>{resolveI18nDisplayText(value, locale)}</>;\n  if (!object(value)) throw new TypeError('Invalid typed display cell.');\n  if (valueType === 'stack') {\n    if (Object.keys(value).some(key => !['lines', 'icon'].includes(key)) || !Array.isArray(value.lines)) throw new TypeError('Invalid stack display value.');\n    const icon = iconDescriptor(value.icon);\n    const lines = value.lines.map(line => {\n      if (typeof line === 'string') return line;\n      if (!object(line)) throw new TypeError('Invalid stack display line.');\n      return 'defaultLocale' in line ? resolveI18nDisplayText(line, locale) : renderTableMessageValue(line, translate);\n    });\n    return <span className=\"inline-flex min-w-0 items-start gap-2\">{icon ? <BaseAssetIcon icon={icon} alt=\"\" normalizeImageIcon className=\"h-5 w-5 shrink-0 rounded\" /> : null}<span className=\"flex min-w-0 flex-col\">{lines.map((line, index) => <span key={index} className=\"whitespace-pre-wrap break-words\">{line}</span>)}</span></span>;\n  }\n  if (valueType === 'metrics') {\n    if (Object.keys(value).some(key => key !== 'items') || !Array.isArray(value.items)) throw new TypeError('Invalid metrics display value.');\n    const numberFormat = new Intl.NumberFormat(locale);\n    const items = value.items.map(item => {\n      if (!object(item) || Object.keys(item).some(key => !['labelKey', 'value'].includes(key)) || typeof item.labelKey !== 'string' || !item.labelKey || typeof item.value !== 'number' || !Number.isFinite(item.value)) throw new TypeError('Invalid metrics display item.');\n      return { label: translate(item.labelKey), value: numberFormat.format(item.value) };\n    });\n    return <dl className=\"flex flex-wrap gap-x-3 gap-y-1\">{items.map((item, index) => <div key={index} className=\"inline-flex gap-1\"><dt>{item.label}</dt><dd>{item.value}</dd></div>)}</dl>;\n  }\n  const allowed = valueType === 'identity' ? ['text', 'textI18n', 'imageUrl', 'icon'] : ['textKey', 'textParameters', 'textI18n', 'tone', 'icon'];\n  if (Object.keys(value).some(key => !allowed.includes(key))) throw new TypeError('Invalid typed display cell fields.');\n  const icon = iconDescriptor(value.icon);\n  const image = (descriptor: BaseAssetIconDescriptor) => <BaseAssetIcon icon={descriptor} alt=\"\" normalizeImageIcon className=\"h-5 w-5 rounded\" />;\n  if (valueType === 'identity') {\n    if (value.text !== undefined && typeof value.text !== 'string' || value.imageUrl !== undefined && (typeof value.imageUrl !== 'string' || !value.imageUrl || value.imageUrl.length > 4096)) throw new TypeError('Invalid identity display value.');\n    const text = value.textI18n !== undefined ? resolveI18nDisplayText(value.textI18n, locale) : value.text;\n    if (typeof text !== 'string') throw new TypeError('Identity requires text or localized text.');\n    return <span className=\"inline-flex items-center gap-2\">{typeof value.imageUrl === 'string' ? image({ kind: 'image', src: value.imageUrl }) : icon ? image(icon) : null}<span>{text}</span></span>;\n  }\n  if (valueType !== 'badge' || (value.textKey !== undefined) === (value.textI18n !== undefined) || value.textKey !== undefined && (typeof value.textKey !== 'string' || !value.textKey) || value.tone !== undefined && !tones.some(tone => tone === value.tone)) throw new TypeError('Invalid badge display value.');\n  let textParameters: Record<string, string | number | boolean> | undefined;\n  if (value.textParameters !== undefined) {\n    if (value.textI18n !== undefined || !object(value.textParameters) ||\n      ![Object.prototype, null].includes(Object.getPrototypeOf(value.textParameters))) throw new TypeError('Invalid badge text parameters.');\n    textParameters = Object.fromEntries(Object.entries(value.textParameters).map(([key, item]) => {\n      if (item === null) return [key, ''];\n      if (typeof item === 'string' || typeof item === 'boolean' || typeof item === 'number' && Number.isFinite(item)) return [key, item];\n      throw new TypeError('Invalid badge text parameters.');\n    }));\n  }\n  const text = value.textI18n !== undefined ? resolveI18nDisplayText(value.textI18n, locale) : translate(String(value.textKey), textParameters);\n  return <BaseBadge label={text} tone={value.tone as BaseControlTone | undefined} icon={icon ? image(icon) : undefined} />;\n}\n","import { useEffect, useId, useRef, useState } from 'react';\nimport type { JsonObject } from '@inf-monkeys-tech/monkeys';\nimport type { DesignCapabilityRendererContext } from './contracts';\n\nexport interface TransientFileMetadata { handleId: string; fileName: string; size: number; mimeType: string }\nexport interface TransientFileRegistry {\n  register(file: File, options?: { maxBytes: number }): TransientFileMetadata;\n  discard(handleId: string): void;\n}\nexport interface FilePickerContext extends DesignCapabilityRendererContext { transientFiles?: TransientFileRegistry }\nexport const FILE_PICKER_MAX_BYTES = 5 * 1024 * 1024 * 1024;\nexport const FILE_PICKER_SCHEMA = 'monkeys-design://render-model/file-picker/v1';\nconst metadataProperties: JsonObject = {\n  handleId: { type: 'string', minLength: 1, maxLength: 256 },\n  fileName: { type: 'string', minLength: 1, maxLength: 1024 },\n  size: { type: 'integer', minimum: 0, maximum: FILE_PICKER_MAX_BYTES },\n  mimeType: { type: 'string', maxLength: 256 },\n};\nconst metadataSchema: JsonObject = { type: 'object', additionalProperties: false, required: ['handleId', 'fileName', 'size', 'mimeType'], properties: metadataProperties };\nexport const FILE_PICKER_RENDER_MODEL_SCHEMA: JsonObject = {\n  $schema: 'https://json-schema.org/draft/2020-12/schema', $id: FILE_PICKER_SCHEMA,\n  type: 'object', additionalProperties: false, required: ['labelKey', 'maxBytes'],\n  properties: {\n    labelKey: { type: 'string', minLength: 1, maxLength: 256 },\n    accept: { type: 'string', maxLength: 1024 },\n    maxBytes: { type: 'integer', minimum: 1, maximum: FILE_PICKER_MAX_BYTES },\n    disabled: { type: 'boolean' }, submitting: { type: 'boolean' }, selected: { anyOf: [{ type: 'null' }, metadataSchema] },\n  },\n};\nexport const FILE_PICKER_SELECT_INTENT_SCHEMA: JsonObject = {\n  $schema: 'https://json-schema.org/draft/2020-12/schema', $id: 'monkeys-design://intent/file-picker-select/v1', ...metadataSchema,\n};\nexport const FILE_PICKER_CANCEL_INTENT_SCHEMA: JsonObject = {\n  $schema: 'https://json-schema.org/draft/2020-12/schema', $id: 'monkeys-design://intent/file-picker-cancel/v1', type: 'object', additionalProperties: false, maxProperties: 0,\n};\nexport function filePickerAccepts(file: Pick<File, 'name' | 'type'>, accept: string | undefined): boolean {\n  if (!accept?.trim()) return true;\n  const name = file.name.toLowerCase(), type = file.type.toLowerCase();\n  return accept.split(',').some(raw => {\n    const rule = raw.trim().toLowerCase();\n    if (/^\\.[a-z0-9][a-z0-9._-]*$/.test(rule)) return name.endsWith(rule);\n    if (/^[a-z0-9!#$&^_.+-]+\\/\\*$/.test(rule)) return type.startsWith(rule.slice(0, -1));\n    return /^[a-z0-9!#$&^_.+-]+\\/[a-z0-9!#$&^_.+-]+$/.test(rule) && type === rule;\n  });\n}\nexport function readTransientFileMetadata(value: unknown): TransientFileMetadata | undefined {\n  if (!value || typeof value !== 'object' || Array.isArray(value)) return undefined;\n  const object = value as Record<string, unknown>;\n  if (Object.keys(object).length !== 4 || typeof object.handleId !== 'string' || object.handleId.length < 1 || object.handleId.length > 256 ||\n      typeof object.fileName !== 'string' || object.fileName.length < 1 || object.fileName.length > 1024 ||\n      typeof object.mimeType !== 'string' || object.mimeType.length > 256 ||\n      typeof object.size !== 'number' || !Number.isInteger(object.size) || object.size < 0 || object.size > FILE_PICKER_MAX_BYTES) return undefined;\n  return { handleId: object.handleId, fileName: object.fileName, size: object.size, mimeType: object.mimeType };\n}\nfunction FilePickerView({ model, translate, emitIntent, transientFiles }: FilePickerContext) {\n  const id = useId(), input = useRef<HTMLInputElement>(null);\n  const current = useRef<TransientFileMetadata>();\n  const [selected, setSelected] = useState<TransientFileMetadata>();\n  const [error, setError] = useState<string>();\n  const configured = typeof model.labelKey === 'string' && typeof model.maxBytes === 'number' && Number.isInteger(model.maxBytes) && model.maxBytes >= 1 && model.maxBytes <= FILE_PICKER_MAX_BYTES;\n  const disabled = !configured || !transientFiles || model.disabled === true || model.submitting === true;\n  const authoritative = readTransientFileMetadata(model.selected);\n  const authoritativeKey = authoritative ? JSON.stringify(authoritative) : '';\n  useEffect(() => () => {\n    if (current.current) transientFiles?.discard(current.current.handleId);\n    current.current = undefined;\n  }, [transientFiles]);\n  useEffect(() => {\n    const next = transientFiles ? authoritative : undefined;\n    if (current.current && current.current.handleId !== next?.handleId) transientFiles?.discard(current.current.handleId);\n    current.current = next; setSelected(next); setError(undefined);\n    if (input.current) input.current.value = '';\n    // Scalar identity avoids clearing a local selection when the same model is re-rendered.\n  }, [transientFiles, authoritativeKey]);\n  const clear = () => {\n    if (disabled) return;\n    if (current.current) transientFiles?.discard(current.current.handleId);\n    current.current = undefined; setSelected(undefined); setError(undefined);\n    if (input.current) input.current.value = '';\n    emitIntent('capability.file-picker.cancel', {});\n  };\n  const label = typeof model.labelKey === 'string' ? model.labelKey : 'monkeys.design.capability.filePicker.label';\n  return <div className=\"grid gap-2\">\n    <label htmlFor={id}>{translate(label)}</label>\n    <input ref={input} id={id} type=\"file\" accept={typeof model.accept === 'string' ? model.accept : undefined} disabled={disabled} aria-invalid={Boolean(error)} onChange={event => {\n      if (disabled || !transientFiles) return;\n      const file = event.currentTarget.files?.[0];\n      // Clear the native selection so retries of the same file produce another change event.\n      event.currentTarget.value = '';\n      if (!file) return;\n      if (file.size > Number(model.maxBytes)) { setError('monkeys.design.capability.filePicker.tooLarge'); return; }\n      if (!filePickerAccepts(file, typeof model.accept === 'string' ? model.accept : undefined)) { setError('monkeys.design.capability.filePicker.invalidType'); return; }\n      let registered: TransientFileMetadata;\n      try { registered = transientFiles.register(file, { maxBytes: Number(model.maxBytes) }); }\n      catch { setError('monkeys.design.capability.filePicker.registrationFailed'); return; }\n      // Select named scalar fields; host objects and file contents never enter an intent.\n      const metadata = { handleId: registered.handleId, fileName: registered.fileName, size: registered.size, mimeType: registered.mimeType };\n      const previous = current.current;\n      current.current = metadata; setSelected(metadata); setError(undefined);\n      if (previous && previous.handleId !== metadata.handleId) transientFiles.discard(previous.handleId);\n      emitIntent('capability.file-picker.select', metadata);\n    }} />\n    {selected ? <span>{selected.fileName}</span> : null}\n    {error ? <span role=\"alert\">{translate(error)}</span> : null}\n    <button type=\"button\" disabled={disabled} onClick={clear}>{translate('monkeys.design.capability.filePicker.cancel')}</button>\n  </div>;\n}\nexport const FilePickerCapabilityRenderer = (context: FilePickerContext) => <FilePickerView {...context} />;\n","import { useMemo, useState } from 'react';\nimport type { JsonObject } from '@inf-monkeys-tech/monkeys';\nimport { BaseButton, BaseDialog } from '../base';\nimport { CapabilityStatus } from './CapabilityStatus';\nimport type { DesignCapabilityRendererContext } from './contracts';\nimport { DESIGN_CAPABILITY_I18N_KEYS } from './i18n';\n\nexport interface NumericSeriesPoint { id: string; x: number; y: number }\nexport interface NumericSeriesModel {\n  seriesId: string;\n  labelKey: string;\n  xLabelKey: string;\n  yLabelKey: string;\n  points: NumericSeriesPoint[];\n}\nconst text = { type: 'string', minLength: 1, maxLength: 256 };\nexport const NUMERIC_SERIES_SCHEMA = 'monkeys-design://render-model/numeric-series/v1';\nexport const NUMERIC_SERIES_RENDER_MODEL_SCHEMA: JsonObject = {\n  $schema: 'https://json-schema.org/draft/2020-12/schema',\n  $id: NUMERIC_SERIES_SCHEMA,\n  type: 'object', additionalProperties: false,\n  required: ['seriesId', 'labelKey', 'xLabelKey', 'yLabelKey', 'points'],\n  properties: {\n    seriesId: text, labelKey: text, xLabelKey: text, yLabelKey: text,\n    points: { type: 'array', maxItems: 10000, items: {\n      type: 'object', additionalProperties: false, required: ['id', 'x', 'y'],\n      properties: { id: text, x: { type: 'number' }, y: { type: 'number' } },\n    } },\n  },\n};\nexport const NUMERIC_SERIES_RANGE_INTENT_SCHEMA: JsonObject = {\n  $schema: 'https://json-schema.org/draft/2020-12/schema',\n  $id: 'monkeys-design://intent/numeric-series-range/v1',\n  type: 'object', additionalProperties: false, required: ['seriesId', 'start', 'end'],\n  properties: { seriesId: text, start: { type: 'number', minimum: 0, maximum: 100 }, end: { type: 'number', minimum: 0, maximum: 100 } },\n};\nexport const NUMERIC_SERIES_EXPAND_INTENT_SCHEMA: JsonObject = {\n  $schema: 'https://json-schema.org/draft/2020-12/schema',\n  $id: 'monkeys-design://intent/numeric-series-expand/v1',\n  type: 'object', additionalProperties: false, required: ['seriesId', 'expanded'],\n  properties: { seriesId: text, expanded: { type: 'boolean' } },\n};\nconst object = (value: unknown): value is Record<string, unknown> => value !== null && typeof value === 'object' && !Array.isArray(value);\nexport function isNumericSeriesModel(value: unknown): value is NumericSeriesModel {\n  if (!object(value) || !['seriesId', 'labelKey', 'xLabelKey', 'yLabelKey'].every(key => typeof value[key] === 'string' && value[key].length > 0 && value[key].length <= 256) || !Array.isArray(value.points) || value.points.length > 10000) return false;\n  const ids = new Set<string>();\n  return value.points.every(point => {\n    if (!object(point) || typeof point.id !== 'string' || !point.id || point.id.length > 256 || ids.has(point.id) || typeof point.x !== 'number' || typeof point.y !== 'number' || !Number.isFinite(point.x) || !Number.isFinite(point.y)) return false;\n    ids.add(point.id); return true;\n  });\n}\nfunction NumericSeriesView({ model, translate, emitIntent }: Pick<DesignCapabilityRendererContext, 'translate' | 'emitIntent'> & { model: NumericSeriesModel }) {\n  const [range, setRange] = useState({ start: 0, end: 100 });\n  const [expanded, setExpanded] = useState(false);\n  const [pointIndex, setPointIndex] = useState(0);\n  const labels = DESIGN_CAPABILITY_I18N_KEYS.numericSeries;\n  const updateRange = (start: number, end: number) => {\n    if (!Number.isFinite(start) || !Number.isFinite(end) || start < 0 || end > 100 || start >= end) return;\n    setRange({ start, end });\n    setPointIndex(0);\n    emitIntent('capability.numeric-series.range-change', { seriesId: model.seriesId, start, end });\n  };\n  const updateExpanded = (next: boolean) => {\n    setExpanded(next);\n    emitIntent('capability.numeric-series.expand', { seriesId: model.seriesId, expanded: next });\n  };\n  const points = useMemo(() => [...model.points].sort((a, b) => a.x - b.x), [model.points]);\n  const minX = points[0].x;\n  const lastX = points[points.length - 1].x;\n  const maxX = lastX === minX ? minX + 1 : lastX;\n  const lower = minX + (maxX - minX) * range.start / 100;\n  const upper = minX + (maxX - minX) * range.end / 100;\n  const visible = points.filter(point => point.x >= lower && point.x <= upper);\n  const selectedIndex = Math.min(pointIndex, Math.max(0, visible.length - 1));\n  const selected = visible[selectedIndex];\n  const pointLabel = selected ? translate(labels.point, { xLabel: translate(model.xLabelKey), x: selected.x, yLabel: translate(model.yLabelKey), y: selected.y }) : translate(labels.noPoints);\n  const values = visible.length ? visible : points;\n  let minY = Infinity, maxY = -Infinity;\n  for (const point of values) { minY = Math.min(minY, point.y); maxY = Math.max(maxY, point.y); }\n  const padding = minY === maxY ? Math.max(Math.abs(minY) * 0.05, 1e-12) : (maxY - minY) * 0.05;\n  minY -= padding; maxY += padding;\n  const x = (value: number) => 70 + (value - lower) / (upper - lower) * 680;\n  const y = (value: number) => 330 - (value - minY) / (maxY - minY) * 280;\n  const plot = (large: boolean) => <div className=\"grid gap-3\">\n    <svg viewBox=\"0 0 820 390\" role=\"img\" aria-label={translate(model.labelKey)} className={large ? 'w-full min-h-96' : 'w-full'}\n      onWheel={event => {\n        if (!event.ctrlKey) return;\n        event.preventDefault();\n        const midpoint = (range.start + range.end) / 2;\n        const span = Math.min(100, Math.max(1, (range.end - range.start) * (event.deltaY > 0 ? 1.2 : 0.8)));\n        const start = Math.max(0, Math.min(100 - span, midpoint - span / 2));\n        updateRange(start, start + span);\n      }}>\n      <line x1=\"70\" y1=\"330\" x2=\"750\" y2=\"330\" className=\"stroke-border\" />\n      <line x1=\"70\" y1=\"50\" x2=\"70\" y2=\"330\" className=\"stroke-border\" />\n      {[0, 0.25, 0.5, 0.75, 1].map(tick => <g key={tick} className=\"fill-muted-foreground text-xs\">\n        <text x={70 + tick * 680} y=\"352\" textAnchor=\"middle\">{Number((lower + (upper - lower) * tick).toPrecision(5))}</text>\n        <text x=\"62\" y={334 - tick * 280} textAnchor=\"end\">{Number((minY + (maxY - minY) * tick).toPrecision(5))}</text>\n      </g>)}\n      <text x=\"410\" y=\"380\" textAnchor=\"middle\" className=\"fill-muted-foreground text-xs\">{translate(model.xLabelKey)}</text>\n      <text x=\"16\" y=\"190\" transform=\"rotate(-90 16 190)\" textAnchor=\"middle\" className=\"fill-muted-foreground text-xs\">{translate(model.yLabelKey)}</text>\n      <polyline points={visible.map(point => `${x(point.x)},${y(point.y)}`).join(' ')} fill=\"none\" strokeWidth=\"2\" className=\"stroke-primary\" />\n      {selected ? <circle cx={x(selected.x)} cy={y(selected.y)} r=\"4\" className=\"fill-primary stroke-foreground\" aria-label={pointLabel}><title>{pointLabel}</title></circle> : null}\n    </svg>\n    <div className=\"flex flex-wrap items-center gap-3\">\n      <label className=\"flex items-center gap-2\">{translate(labels.inspect)}<input type=\"range\" min=\"0\" max={Math.max(0, visible.length - 1)} step=\"1\" value={selectedIndex} disabled={!visible.length} aria-valuetext={pointLabel} onChange={event => setPointIndex(Number(event.target.value))} /></label>\n      <output aria-live=\"polite\">{pointLabel}</output>\n    </div>\n    <div className=\"flex flex-wrap items-center gap-3\">\n      <label className=\"flex items-center gap-2\">{translate(labels.start)}<input type=\"range\" min=\"0\" max={range.end - 0.1} step=\"0.1\" value={range.start} onChange={event => updateRange(Number(event.target.value), range.end)} /></label>\n      <label className=\"flex items-center gap-2\">{translate(labels.end)}<input type=\"range\" min={range.start + 0.1} max=\"100\" step=\"0.1\" value={range.end} onChange={event => updateRange(range.start, Number(event.target.value))} /></label>\n      <BaseButton label={translate(labels.reset)} onClick={() => updateRange(0, 100)} />\n    </div>\n  </div>;\n  return <section data-numeric-series={model.seriesId} className=\"rounded-lg border border-border bg-card p-4\">\n    <div className=\"flex items-center justify-between gap-3\">\n      <h3>{translate(model.labelKey)}</h3>\n      <BaseDialog open={expanded} onOpenChange={updateExpanded} triggerLabel={translate(labels.expand)} title={translate(model.labelKey)} closeLabel={translate(labels.close)} portal classNames={{ panel: 'sm:max-w-6xl' }}>{expanded ? plot(true) : null}</BaseDialog>\n    </div>\n    {plot(false)}\n  </section>;\n}\nexport function NumericSeriesCapabilityRenderer(context: DesignCapabilityRendererContext) {\n  const { access, loading, errorCode, model, empty, translate } = context;\n  if (!access.allowed) return <CapabilityStatus kind=\"forbidden\" translate={translate} code={access.reasonCode} />;\n  if (loading) return <CapabilityStatus kind=\"loading\" translate={translate} />;\n  if (errorCode) return <CapabilityStatus kind=\"error\" translate={translate} code={errorCode} />;\n  if (!isNumericSeriesModel(model)) return <CapabilityStatus kind=\"error\" translate={translate} code=\"capability.numeric-series.invalid-model\" />;\n  if (empty || !model.points.length) return <CapabilityStatus kind=\"empty\" translate={translate} />;\n  return <NumericSeriesView key={model.seriesId} model={model} translate={translate} emitIntent={context.emitIntent} />;\n}\n","import { useState } from 'react';\nimport type { JsonObject } from '@inf-monkeys-tech/monkeys';\nimport type { DesignCapabilityRenderer } from './contracts';\n\nexport const SUMMARY_CHART_SCHEMA = 'monkeys-design://render-model/summary-chart/v1';\nconst text = { type: 'string', minLength: 1, maxLength: 256 };\nexport const SUMMARY_CHART_RENDER_MODEL_SCHEMA: JsonObject = {\n  $schema: 'https://json-schema.org/draft/2020-12/schema', $id: SUMMARY_CHART_SCHEMA,\n  type: 'object', additionalProperties: false, required: ['kind', 'titleKey', 'series'],\n  properties: {\n    kind: { enum: ['line', 'donut', 'bar'] }, titleKey: text,\n    labels: { type: 'array', maxItems: 366, items: text },\n    series: { type: 'array', maxItems: 8, items: {\n      type: 'object', additionalProperties: false, required: ['id', 'labelKey', 'values'],\n      properties: { id: text, labelKey: text, tone: { enum: ['primary', 'success', 'warning', 'danger'] }, values: { type: 'array', maxItems: 366, items: { type: 'number', minimum: 0 } } },\n    } },\n  },\n};\n\nconst colors = { primary: 'hsl(var(--primary))', success: 'hsl(var(--success))', warning: 'hsl(var(--warning))', danger: 'hsl(var(--destructive))' };\ntype Series = { id: string; labelKey: string; tone?: keyof typeof colors; values: number[] };\n\nexport const SummaryChartCapabilityRenderer: DesignCapabilityRenderer = ({ model, translate }) => {\n  const [active, setActive] = useState<number>();\n  const series = (model.series ?? []) as unknown as Series[];\n  const labels = (model.labels ?? []) as string[];\n  const length = Math.max(labels.length, ...series.map(item => item.values.length), 0);\n  const max = Math.max(4, ...series.flatMap(item => item.values));\n  const values = series.map(item => item.values.reduce((sum, value) => sum + value, 0));\n  const total = values.reduce((sum, value) => sum + value, 0);\n  let offset = 0;\n  const selected = active === undefined ? undefined : Math.min(active, Math.max(0, length - 1));\n  const barBand = 574 / Math.max(1, length);\n  const barGroup = barBand * 0.72;\n  const pointX = (index: number) => model.kind === 'bar' ? 44 + (index + 0.5) * barBand : 44 + index / Math.max(1, length - 1) * 574;\n  return <figure className=\"m-0 min-w-0 rounded-lg border border-border bg-card p-4\" data-monkeys-component=\"summary-chart\" data-chart-kind={String(model.kind)}>\n    <figcaption className=\"mb-4 font-semibold text-foreground\">{translate(String(model.titleKey))}</figcaption>\n    <svg viewBox=\"0 0 640 240\" className=\"h-56 w-full\" role=\"img\" aria-label={translate(String(model.titleKey))}>\n      {model.kind === 'donut' ? <g transform=\"translate(320 112)\">\n        <circle r=\"78\" fill=\"none\" stroke=\"hsl(var(--muted))\" strokeWidth=\"28\" />\n        {series.map((item, index) => {\n          const share = total ? values[index] / total * 100 : 0;\n          const start = offset; offset += share;\n          return <circle key={item.id} r=\"78\" pathLength=\"100\" fill=\"none\" stroke={colors[item.tone ?? 'primary']} strokeWidth=\"28\" strokeDasharray={`${share} ${100 - share}`} strokeDashoffset={-start} transform=\"rotate(-90)\"><title>{translate(item.labelKey)}: {values[index]}</title></circle>;\n        })}\n        <text textAnchor=\"middle\" dominantBaseline=\"middle\" fill=\"hsl(var(--foreground))\" fontSize=\"30\" fontWeight=\"600\">{total}</text>\n      </g> : <>\n        {[0, 1, 2, 3, 4].map(tick => <g key={tick}><line x1=\"44\" y1={192 - tick * 42} x2=\"618\" y2={192 - tick * 42} stroke=\"hsl(var(--border))\" strokeDasharray=\"4 4\" /><text x=\"36\" y={196 - tick * 42} textAnchor=\"end\" fill=\"hsl(var(--muted-foreground))\" fontSize=\"11\">{Math.round(max * tick / 4)}</text></g>)}\n        {model.kind === 'bar' ? series.map((item, seriesIndex) => item.values.map((value, index) => <rect\n          key={`${item.id}-${index}`}\n          data-chart-bar={item.id}\n          x={44 + index * barBand + (barBand - barGroup) / 2 + seriesIndex * barGroup / series.length}\n          y={192 - value / max * 168}\n          width={barGroup / series.length}\n          height={value / max * 168}\n          rx=\"3\"\n          fill={colors[item.tone ?? 'primary']}\n        ><title>{translate(item.labelKey)}: {value}</title></rect>)) : series.map(item => <polyline key={item.id} points={item.values.map((value, index) => `${pointX(index)},${192 - value / max * 168}`).join(' ')} fill=\"none\" stroke={colors[item.tone ?? 'primary']} strokeWidth=\"2.5\" strokeLinejoin=\"round\" />)}\n        {Array.from({ length }, (_, index) => <g key={index}>\n          <rect x={pointX(index) - (model.kind === 'bar' ? barBand / 2 : 10)} y=\"18\" width={model.kind === 'bar' ? barBand : 22} height=\"182\" fill=\"transparent\" tabIndex={0} onFocus={() => setActive(index)} onBlur={() => setActive(undefined)} onMouseEnter={() => setActive(index)} onMouseLeave={() => setActive(undefined)} aria-label={`${labels[index] ?? index + 1}: ${series.map(item => `${translate(item.labelKey)} ${item.values[index] ?? 0}`).join(', ')}`} />\n          {(length <= 12 || index % Math.ceil(length / 8) === 0) && <text x={pointX(index)} y=\"217\" textAnchor=\"middle\" fill=\"hsl(var(--muted-foreground))\" fontSize=\"11\">{labels[index] ?? index + 1}</text>}\n        </g>)}\n        {selected !== undefined && <line x1={pointX(selected)} x2={pointX(selected)} y1=\"18\" y2=\"192\" stroke=\"hsl(var(--muted-foreground))\" strokeDasharray=\"3 3\" />}\n      </>}\n    </svg>\n    <div className=\"flex flex-wrap justify-center gap-x-5 gap-y-2 text-xs\" aria-live=\"polite\">\n      {series.map((item, index) => <span key={item.id} className=\"inline-flex items-center gap-2 text-muted-foreground\"><span className=\"h-2 w-2 rounded-full\" style={{ background: colors[item.tone ?? 'primary'] }} />{translate(item.labelKey)}<span className=\"font-medium tabular-nums text-foreground\">{model.kind === 'donut' ? values[index] : selected === undefined ? '' : item.values[selected] ?? 0}</span></span>)}\n    </div>\n  </figure>;\n};\n","export const DATA_EXPLORER_APPEARANCE_OPTIONS = Object.freeze({\n  surface: ['card', 'flush'] as const,\n  preset: [\n    'default',\n    'soft',\n    'compact',\n    'tinted-glass',\n    'flat',\n    'glass',\n    'hard-edge',\n  ] as const,\n  density: ['compact', 'default', 'comfortable'] as const,\n  radius: ['none', 'sm', 'md', 'lg', 'xl', 'full'] as const,\n  border: ['none', 'subtle', 'solid', 'strong'] as const,\n  background: ['plain', 'muted', 'soft', 'glass', 'dark-stage'] as const,\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 * as React from 'react';\n\nimport { cn } from '../base/utils';\n\nexport type BadgeVariant = 'default' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning';\nexport type BadgeShape = 'pill' | 'rounded';\n\nexport const badgeVariants = ({\n  variant = 'default',\n  shape = 'pill',\n  className,\n}: { variant?: BadgeVariant | null; shape?: BadgeShape; className?: string } = {}) => cn(\n  'inline-flex items-center border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n  shape === 'pill' ? 'rounded-full' : 'rounded-md',\n  variant === 'secondary' && 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n  variant === 'destructive' && 'border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80',\n  variant === 'outline' && 'text-foreground',\n  variant === 'success' && 'border-transparent bg-success/15 text-success',\n  variant === 'warning' && 'border-transparent bg-warning/15 text-warning-foreground',\n  (!variant || variant === 'default') && 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',\n  className,\n);\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLDivElement> {\n  variant?: BadgeVariant;\n  shape?: BadgeShape;\n}\n\nexport const Badge = React.forwardRef<HTMLDivElement, BadgeProps>(({ className, variant, shape, ...props }, ref) => (\n  <div ref={ref} className={badgeVariants({ variant, shape, className })} {...props} />\n));\nBadge.displayName = 'Badge';\n\nexport const RoundedBadge = React.forwardRef<HTMLDivElement, Omit<BadgeProps, 'shape'>>((props, ref) => (\n  <Badge ref={ref} shape=\"rounded\" {...props} />\n));\nRoundedBadge.displayName = 'RoundedBadge';\n","export type OverlaySurfaceRole = 'menu' | 'dialog';\n\nconst overlaySurfaceRoleClassNames: Record<OverlaySurfaceRole, string> = {\n  // Keep the public utilities in the built stylesheet and tailwind-merge graph.\n  menu: 'monkeys-overlay-surface--menu bg-menu-surface text-popover-foreground',\n  dialog: 'monkeys-overlay-surface--dialog bg-dialog-surface text-foreground',\n};\n\nexport function getOverlaySurfaceClassName(\n  role: OverlaySurfaceRole,\n  options: { rounded?: boolean } = {},\n) {\n  return [\n    'monkeys-overlay-surface',\n    overlaySurfaceRoleClassNames[role],\n    options.rounded === false ? undefined : 'monkeys-overlay-surface--rounded',\n  ]\n    .filter(Boolean)\n    .join(' ');\n}\n","import * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Check, ChevronDown } from \"lucide-react\";\n\nimport { useMonkeysComponentAttributes } from \"../../provider/context\";\nimport { cn } from \"../base/utils\";\nimport { getOverlaySurfaceClassName } from \"./internal/overlaySurface\";\n\n/** Design-owned polymorphic slot for product compositions that need `asChild`. */\nexport const PolymorphicSlot = Slot;\n\nexport const Accordion = AccordionPrimitive.Root;\n\nexport const AccordionItem = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, style, ...props }, ref) => (\n  <AccordionPrimitive.Item\n    ref={ref}\n    className={cn(\"border-b\", className)}\n    style={{\n      borderColor:\n        \"var(--monkeys-component-accordion-item-border-color, hsl(var(--border)))\",\n      ...style,\n    }}\n    {...props}\n  />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\nexport const AccordionTrigger = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n  <AccordionPrimitive.Header className=\"flex\">\n    <AccordionPrimitive.Trigger\n      ref={ref}\n      className={cn(\n        \"flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\n        className,\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronDown\n        aria-hidden=\"true\"\n        className=\"h-4 w-4 shrink-0 transition-transform duration-200\"\n      />\n    </AccordionPrimitive.Trigger>\n  </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = \"AccordionTrigger\";\n\nexport const AccordionContent = React.forwardRef<\n  React.ElementRef<typeof AccordionPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n  <AccordionPrimitive.Content\n    ref={ref}\n    className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n    {...props}\n  >\n    <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n  </AccordionPrimitive.Content>\n));\nAccordionContent.displayName = \"AccordionContent\";\n\nexport const Checkbox = React.forwardRef<\n  React.ElementRef<typeof CheckboxPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n  <CheckboxPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n      className,\n    )}\n    {...props}\n  >\n    <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n      <Check aria-hidden=\"true\" className=\"h-4 w-4\" />\n    </CheckboxPrimitive.Indicator>\n  </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = \"Checkbox\";\n\nexport const buttonVariants = cva(\n  \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_[data-slot=icon]]:text-[inherit] [&_[data-slot=icon]_*]:!text-[inherit] [&_[data-slot=icon]_svg]:!stroke-current [&_[data-slot=icon]_svg_*]:!stroke-current [&_[data-slot=end-icon]]:text-[inherit] [&_[data-slot=end-icon]_*]:!text-[inherit] [&_[data-slot=end-icon]_svg]:!stroke-current [&_[data-slot=end-icon]_svg_*]:!stroke-current [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"bg-primary text-primary-foreground shadow-sm hover:bg-primary/90\",\n        destructive:\n          \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n        outline:\n          \"border border-input bg-control-surface shadow-sm ring-offset-control-surface hover:bg-accent hover:text-accent-foreground\",\n        secondary:\n          \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n        ghost: \"hover:bg-accent hover:text-accent-foreground\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-10 px-4 py-2\",\n        sm: \"h-9 rounded-sm px-3\",\n        lg: \"h-11 rounded-md px-8\",\n        icon: \"h-10 w-10\",\n      },\n    },\n    defaultVariants: { variant: \"default\", size: \"default\" },\n  },\n);\n\nexport interface ButtonProps\n  extends\n    React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  asChild?: boolean;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Component = asChild ? Slot : \"button\";\n    return (\n      <Component\n        ref={ref}\n        className={buttonVariants({ variant, size, className })}\n        {...props}\n      />\n    );\n  },\n);\nButton.displayName = \"Button\";\n\nexport interface ScrollAreaProps extends React.ComponentPropsWithoutRef<\n  typeof ScrollAreaPrimitive.Root\n> {\n  viewportClassName?: string;\n  viewportRef?: React.Ref<HTMLDivElement>;\n  onViewportScroll?: React.UIEventHandler<HTMLDivElement>;\n  scrollbar?: boolean;\n  scrollbarOrientation?: \"vertical\" | \"horizontal\";\n  scrollBarDisabled?: boolean;\n}\n\nexport const ScrollArea = React.forwardRef<\n  React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n  ScrollAreaProps\n>(\n  (\n    {\n      className,\n      children,\n      viewportClassName,\n      viewportRef,\n      onViewportScroll,\n      scrollbar = true,\n      scrollbarOrientation = \"vertical\",\n      scrollBarDisabled = false,\n      ...props\n    },\n    ref,\n  ) => (\n    <ScrollAreaPrimitive.Root\n      ref={ref}\n      className={cn(\n        \"group relative overflow-hidden\",\n        scrollBarDisabled && \"no-scrollbar\",\n        className,\n      )}\n      {...props}\n    >\n      <ScrollAreaPrimitive.Viewport\n        ref={viewportRef}\n        onScroll={onViewportScroll}\n        className={cn(\"h-full w-full rounded-[inherit]\", viewportClassName)}\n      >\n        {children}\n      </ScrollAreaPrimitive.Viewport>\n      {scrollbar ? (\n        <ScrollBar\n          orientation={scrollbarOrientation}\n          className={cn(scrollBarDisabled && \"size-0 p-0\")}\n        />\n      ) : null}\n      <ScrollAreaPrimitive.Corner />\n    </ScrollAreaPrimitive.Root>\n  ),\n);\nScrollArea.displayName = \"ScrollArea\";\n\nexport const ScrollBar = React.forwardRef<\n  React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n  React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n  <ScrollAreaPrimitive.ScrollAreaScrollbar\n    ref={ref}\n    orientation={orientation}\n    className={cn(\n      \"flex touch-none select-none opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100 data-[state=visible]:opacity-100\",\n      orientation === \"vertical\" &&\n        \"h-full w-2.5 border-l border-l-transparent p-px\",\n      orientation === \"horizontal\" &&\n        \"h-2.5 flex-col border-t border-t-transparent p-px\",\n      className,\n    )}\n    {...props}\n  >\n    <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n  </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = \"ScrollBar\";\n\nexport const Switch = React.forwardRef<\n  React.ElementRef<typeof SwitchPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>\n>(({ className, ...props }, ref) => (\n  <SwitchPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n      className,\n    )}\n    {...props}\n  >\n    <SwitchPrimitive.Thumb className=\"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\" />\n  </SwitchPrimitive.Root>\n));\nSwitch.displayName = \"Switch\";\n\nexport type TabsVariant = \"default\" | \"ghost\" | \"rounded\";\nexport type TabsProps = React.ComponentPropsWithoutRef<\n  typeof TabsPrimitive.Root\n> & { variant?: TabsVariant };\nexport const Tabs = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Root>,\n  TabsProps\n>(({ variant = \"default\", ...props }, ref) => (\n  <TabsPrimitive.Root ref={ref} data-variant={variant} {...props} />\n));\nTabs.displayName = \"Tabs\";\nexport const TabsList = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.List>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.List> & {\n    gap?: string | number;\n  }\n>(({ className, gap, style, ...props }, ref) => (\n  <TabsPrimitive.List\n    ref={ref}\n    className={cn(\n      \"inline-flex h-10 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground\",\n      className,\n    )}\n    style={{ gap, ...style }}\n    {...props}\n  />\n));\nTabsList.displayName = \"TabsList\";\nexport const TabsTrigger = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n      className,\n    )}\n    {...props}\n  />\n));\nTabsTrigger.displayName = \"TabsTrigger\";\nexport const TabsContent = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Content\n    ref={ref}\n    className={cn(\n      \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n      className,\n    )}\n    {...props}\n  />\n));\nTabsContent.displayName = \"TabsContent\";\n\nexport const TooltipProvider = TooltipPrimitive.Provider;\nexport const Tooltip = TooltipPrimitive.Root;\nexport const TooltipTrigger = TooltipPrimitive.Trigger;\nexport const TooltipContent = React.forwardRef<\n  React.ElementRef<typeof TooltipPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => {\n  const componentAttributes = useMonkeysComponentAttributes();\n  return (\n    <TooltipPrimitive.Portal>\n      <TooltipPrimitive.Content\n        {...componentAttributes}\n        {...props}\n        ref={ref}\n        sideOffset={sideOffset}\n        data-monkeys-component=\"tooltip\"\n        data-slot=\"content\"\n        data-surface=\"menu\"\n        className={cn(\n          \"z-50 overflow-hidden border px-3 py-1.5 text-xs animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n          getOverlaySurfaceClassName(\"menu\"),\n          className,\n        )}\n      />\n    </TooltipPrimitive.Portal>\n  );\n});\nTooltipContent.displayName = \"TooltipContent\";\n","import * as React from 'react';\n\nimport { cn } from '../base/utils';\n\nexport type ControlAppearance = 'standard' | 'compact' | 'shadow';\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n  appearance?: ControlAppearance;\n}\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(({ className, appearance = 'standard', type, ...props }, ref) => (\n  <input\n    ref={ref}\n    type={type}\n    className={cn(\n      'flex w-full border border-input bg-control-surface px-3 text-foreground ring-offset-control-surface transition-[border-color,background-color,color,box-shadow] file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n      appearance === 'compact' ? 'h-9 rounded-md py-1 text-sm shadow-sm' : 'h-10 rounded-md py-2 text-sm shadow-sm',\n      appearance === 'shadow' && 'rounded-lg shadow-sm shadow-black/[0.02] dark:border-white/10 dark:bg-white/[0.04] dark:shadow-none',\n      className,\n    )}\n    {...props}\n  />\n));\nInput.displayName = 'Input';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n  appearance?: ControlAppearance;\n}\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(({ className, appearance = 'standard', ...props }, ref) => (\n  <textarea\n    ref={ref}\n    className={cn(\n      'flex w-full border border-input bg-control-surface px-3 py-2 text-foreground ring-offset-control-surface placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n      appearance === 'compact' ? 'min-h-[60px] rounded-md text-sm shadow-sm' : 'min-h-[80px] rounded-md text-sm',\n      appearance === 'shadow' && 'shadow-sm shadow-black/[0.02] dark:border-white/10 dark:bg-white/[0.04] dark:shadow-none',\n      className,\n    )}\n    {...props}\n  />\n));\nTextarea.displayName = 'Textarea';\n","import * as React from 'react';\n\nimport {\n  autoUpdate,\n  flip,\n  FloatingFocusManager,\n  FloatingPortal,\n  offset as floatingOffset,\n  type Placement,\n  shift,\n  useClick,\n  useDismiss,\n  useFloating,\n  useInteractions,\n  useRole,\n} from '@floating-ui/react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { useMonkeysComponentAttributes } from '../../provider/context';\nimport { cn } from '../base/utils';\nimport { getOverlaySurfaceClassName } from './internal/overlaySurface';\n\ninterface FloatingPopoverContextValue {\n  open: boolean;\n  floatingStyles: React.CSSProperties;\n  getReferenceProps: ReturnType<typeof useInteractions>['getReferenceProps'];\n  getFloatingProps: ReturnType<typeof useInteractions>['getFloatingProps'];\n  context: ReturnType<typeof useFloating>['context'];\n  refs: ReturnType<typeof useFloating>['refs'];\n}\n\nconst FloatingPopoverContext = React.createContext<FloatingPopoverContextValue | null>(null);\n\nexport interface FloatingPopoverProps {\n  open?: boolean;\n  defaultOpen?: boolean;\n  onOpenChange?: (open: boolean) => void;\n  placement?: Placement;\n  offset?: number;\n  children: React.ReactNode;\n}\n\nexport function FloatingPopover({\n  open: controlledOpen,\n  defaultOpen = false,\n  onOpenChange,\n  placement = 'bottom-start',\n  offset = 8,\n  children,\n}: FloatingPopoverProps) {\n  const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n  const open = controlledOpen ?? uncontrolledOpen;\n  const setOpen = React.useCallback((next: boolean) => {\n    onOpenChange?.(next);\n    if (controlledOpen === undefined) setUncontrolledOpen(next);\n  }, [controlledOpen, onOpenChange]);\n  const { refs, floatingStyles, context } = useFloating({\n    placement,\n    open,\n    onOpenChange: setOpen,\n    middleware: [floatingOffset(offset), flip({ padding: 8 }), shift({ padding: 8 })],\n    whileElementsMounted: autoUpdate,\n  });\n  const click = useClick(context);\n  const dismiss = useDismiss(context, { outsidePressEvent: 'pointerdown' });\n  const role = useRole(context, { role: 'dialog' });\n  const { getReferenceProps, getFloatingProps } = useInteractions([click, dismiss, role]);\n  const value = React.useMemo(\n    () => ({ open, floatingStyles, getReferenceProps, getFloatingProps, context, refs }),\n    [context, floatingStyles, getFloatingProps, getReferenceProps, open, refs],\n  );\n  return <FloatingPopoverContext.Provider value={value}>{children}</FloatingPopoverContext.Provider>;\n}\n\nfunction useFloatingPopoverContext() {\n  const context = React.useContext(FloatingPopoverContext);\n  if (!context) throw new Error('FloatingPopover components must be used within <FloatingPopover>');\n  return context;\n}\n\nexport interface FloatingPopoverTriggerProps extends React.HTMLAttributes<HTMLElement> {\n  asChild?: boolean;\n}\n\nexport const FloatingPopoverTrigger = React.forwardRef<HTMLElement, FloatingPopoverTriggerProps>(\n  ({ asChild, ...props }, forwardedRef) => {\n    const context = useFloatingPopoverContext();\n    const Component: React.ElementType = asChild ? Slot : 'button';\n    return (\n      <Component\n        {...context.getReferenceProps({\n          ref: (node: HTMLElement | null) => {\n            context.refs.setReference(node);\n            if (typeof forwardedRef === 'function') forwardedRef(node);\n            else if (forwardedRef) forwardedRef.current = node;\n          },\n          type: asChild ? undefined : 'button',\n          ...props,\n        })}\n      />\n    );\n  },\n);\nFloatingPopoverTrigger.displayName = 'FloatingPopoverTrigger';\n\nexport interface FloatingPopoverContentProps extends React.HTMLAttributes<HTMLDivElement> {\n  portal?: boolean;\n}\n\nexport const FloatingPopoverContent = React.forwardRef<HTMLDivElement, FloatingPopoverContentProps>(\n  ({ className, style, portal = true, ...props }, forwardedRef) => {\n    const context = useFloatingPopoverContext();\n    const componentAttributes = useMonkeysComponentAttributes();\n    if (!context.open) return null;\n    const floatingProps = context.getFloatingProps({\n      ref: (node: HTMLDivElement | null) => {\n        context.refs.setFloating(node);\n        if (typeof forwardedRef === 'function') forwardedRef(node);\n        else if (forwardedRef) forwardedRef.current = node;\n      },\n      className: cn(\n        'z-50 w-72 border p-4 outline-none',\n        getOverlaySurfaceClassName('menu'),\n        className,\n      ),\n      style: { ...context.floatingStyles, ...style },\n      tabIndex: -1,\n      ...props,\n    });\n    const content = (\n      <FloatingFocusManager context={context.context} modal={false} returnFocus={false}>\n        <div\n          {...floatingProps}\n          {...componentAttributes}\n          data-monkeys-component=\"floating-popover\"\n          data-slot=\"content\"\n          data-surface=\"menu\"\n        />\n      </FloatingFocusManager>\n    );\n    return portal ? <FloatingPortal>{content}</FloatingPortal> : content;\n  },\n);\nFloatingPopoverContent.displayName = 'FloatingPopoverContent';\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 React from 'react';\nimport * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\n\nimport { useMonkeysComponentAttributes } from '../../provider/context';\nimport { cn } from '../base/utils';\nimport { getOverlaySurfaceClassName } from './internal/overlaySurface';\nimport { buttonVariants } from './InteractiveControls';\n\nexport const Dialog = DialogPrimitive.Root;\nexport const DialogTrigger = DialogPrimitive.Trigger;\nexport const DialogPortal = DialogPrimitive.Portal;\nexport const DialogClose = DialogPrimitive.Close;\n\nexport const DialogOverlay = 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      className={cn('theme-overlay-backdrop fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', className)}\n      data-monkeys-component=\"dialog\"\n      data-slot=\"overlay\"\n      data-monkeys-overlay\n    />\n  );\n});\nDialogOverlay.displayName = 'DialogOverlay';\n\nexport interface DialogContentProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n  showCloseButton?: boolean;\n  closeLabel?: React.ReactNode;\n  overlayClassName?: string;\n  overlayStyle?: React.CSSProperties;\n}\n\nconst DialogSurfaceContent = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, ...props }, ref) => {\n  const componentAttributes = useMonkeysComponentAttributes();\n  return (\n    <DialogPrimitive.Content\n      {...componentAttributes}\n      {...props}\n      ref={ref}\n      className={className}\n      data-monkeys-component=\"dialog\"\n      data-slot=\"content\"\n      data-surface=\"dialog\"\n      data-monkeys-dialog-content\n    />\n  );\n});\nDialogSurfaceContent.displayName = 'DialogSurfaceContent';\n\nexport const DialogContent = React.forwardRef<React.ElementRef<typeof DialogPrimitive.Content>, DialogContentProps>(\n  ({ className, children, showCloseButton = true, closeLabel = 'Close', overlayClassName, overlayStyle, ...props }, ref) => {\n    return (\n      <DialogPortal>\n        <DialogOverlay className={overlayClassName} style={overlayStyle} />\n        <DialogSurfaceContent\n          {...props}\n          ref={ref}\n          className={cn('fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border p-6 duration-200 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', getOverlaySurfaceClassName('dialog'), className)}\n        >\n          {children}\n          {showCloseButton ? (\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\">\n              <X aria-hidden=\"true\" className=\"h-4 w-4\" />\n              <span className=\"sr-only\">{closeLabel}</span>\n            </DialogPrimitive.Close>\n          ) : null}\n        </DialogSurfaceContent>\n      </DialogPortal>\n    );\n  },\n);\nDialogContent.displayName = 'DialogContent';\n\nexport const DialogContentNoAnimation = React.forwardRef<React.ElementRef<typeof DialogPrimitive.Content>, DialogContentProps>(\n  ({ className, ...props }, ref) => <DialogContent ref={ref} className={cn('duration-0 data-[state=open]:animate-none data-[state=closed]:animate-none', className)} {...props} />,\n);\nDialogContentNoAnimation.displayName = 'DialogContentNoAnimation';\n\nexport const DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n  <div className={cn('flex flex-col space-y-1.5 text-center sm:text-left', className)} {...props} />\n);\nDialogHeader.displayName = 'DialogHeader';\nexport const DialogFooter = ({ 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);\nDialogFooter.displayName = 'DialogFooter';\nexport const DialogTitle = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => <DialogPrimitive.Title ref={ref} className={cn('text-lg font-semibold leading-none tracking-tight', className)} {...props} />);\nDialogTitle.displayName = 'DialogTitle';\nexport const DialogDescription = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => <DialogPrimitive.Description ref={ref} className={cn('text-sm text-muted-foreground', className)} {...props} />);\nDialogDescription.displayName = 'DialogDescription';\n\nexport const AlertDialog: React.FC<React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Root>> = ({ onOpenChange, open, ...props }) => {\n  React.useEffect(() => {\n    if (open !== false || typeof document === 'undefined') return undefined;\n    const cleanup = () => {\n      if (!document.querySelector('[data-state=\"open\"][role=\"dialog\"], [data-state=\"open\"][role=\"alertdialog\"]')) {\n        document.body.style.pointerEvents = '';\n      }\n    };\n    requestAnimationFrame(cleanup);\n    const timer = window.setTimeout(cleanup, 300);\n    return () => window.clearTimeout(timer);\n  }, [open]);\n  const handleOpenChange = React.useCallback((next: boolean) => {\n    onOpenChange?.(next);\n    if (!next && typeof document !== 'undefined') requestAnimationFrame(() => {\n      if (!document.querySelector('[data-state=\"open\"][role=\"dialog\"], [data-state=\"open\"][role=\"alertdialog\"]')) document.body.style.pointerEvents = '';\n    });\n  }, [onOpenChange]);\n  return <AlertDialogPrimitive.Root open={open} onOpenChange={handleOpenChange} {...props} />;\n};\nexport const AlertDialogTrigger = AlertDialogPrimitive.Trigger;\nexport const AlertDialogPortal = AlertDialogPrimitive.Portal;\nexport const AlertDialogOverlay = React.forwardRef<\n  React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, style, ...props }, ref) => {\n  const componentAttributes = useMonkeysComponentAttributes();\n  return <AlertDialogPrimitive.Overlay {...componentAttributes} {...props} ref={ref} className={cn('fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', className)} data-monkeys-component=\"alert-dialog\" data-slot=\"overlay\" data-monkeys-overlay style={{ pointerEvents: 'auto', ...style }} />;\n});\nAlertDialogOverlay.displayName = 'AlertDialogOverlay';\nexport const AlertDialogContent = React.forwardRef<\n  React.ElementRef<typeof AlertDialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, style, ...props }, ref) => {\n  const componentAttributes = useMonkeysComponentAttributes();\n  return (\n    <AlertDialogPortal>\n      <AlertDialogOverlay />\n      <AlertDialogPrimitive.Content {...componentAttributes} {...props} ref={ref} className={cn('fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border p-6 duration-200 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', getOverlaySurfaceClassName('dialog'), className)} data-monkeys-component=\"alert-dialog\" data-slot=\"content\" data-surface=\"dialog\" data-monkeys-dialog-content style={{ pointerEvents: 'auto', ...style }} />\n    </AlertDialogPortal>\n  );\n});\nAlertDialogContent.displayName = 'AlertDialogContent';\nexport const AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => <div className={cn('flex flex-col space-y-2 text-center sm:text-left', className)} {...props} />;\nexport const AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => <div className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)} {...props} />;\nexport const AlertDialogTitle = React.forwardRef<React.ElementRef<typeof AlertDialogPrimitive.Title>, React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>>(({ className, ...props }, ref) => <AlertDialogPrimitive.Title ref={ref} className={cn('text-lg font-semibold', className)} {...props} />);\nexport const AlertDialogDescription = React.forwardRef<React.ElementRef<typeof AlertDialogPrimitive.Description>, React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>>(({ className, ...props }, ref) => <AlertDialogPrimitive.Description ref={ref} className={cn('text-sm text-muted-foreground', className)} {...props} />);\nexport const AlertDialogAction = React.forwardRef<React.ElementRef<typeof AlertDialogPrimitive.Action>, React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>>(({ className, ...props }, ref) => <AlertDialogPrimitive.Action ref={ref} className={cn(buttonVariants(), className)} {...props} />);\nexport const AlertDialogDangerAction = React.forwardRef<React.ElementRef<typeof AlertDialogPrimitive.Action>, React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>>(({ className, ...props }, ref) => <AlertDialogPrimitive.Action ref={ref} className={cn(buttonVariants({ variant: 'destructive' }), className)} {...props} />);\nexport const AlertDialogCancel = React.forwardRef<React.ElementRef<typeof AlertDialogPrimitive.Cancel>, React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>>(({ className, ...props }, ref) => <AlertDialogPrimitive.Cancel ref={ref} className={cn(buttonVariants({ variant: 'outline' }), 'mt-2 sm:mt-0', className)} {...props} />);\n\nAlertDialogHeader.displayName = 'AlertDialogHeader';\nAlertDialogFooter.displayName = 'AlertDialogFooter';\nAlertDialogTitle.displayName = 'AlertDialogTitle';\nAlertDialogDescription.displayName = 'AlertDialogDescription';\nAlertDialogAction.displayName = 'AlertDialogAction';\nAlertDialogDangerAction.displayName = 'AlertDialogDangerAction';\nAlertDialogCancel.displayName = 'AlertDialogCancel';\n","import * as PopoverPrimitive from '@radix-ui/react-popover';\nimport * as React from 'react';\n\nimport { cn } from '../base/utils';\nimport { useMonkeysComponentAttributes } from '../../provider/context';\nimport { getOverlaySurfaceClassName } from './internal/overlaySurface';\n\nexport const Popover = PopoverPrimitive.Root;\nexport const PopoverTrigger = PopoverPrimitive.Trigger;\nexport const PopoverAnchor = PopoverPrimitive.Anchor;\nexport const PopoverClose = PopoverPrimitive.Close;\n\nexport interface PopoverContentProps\n  extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> {\n  /** Optional portal container, useful when a popover is opened inside a dialog. */\n  container?: HTMLElement | null;\n}\n\nexport const PopoverContent = React.forwardRef<\n  React.ElementRef<typeof PopoverPrimitive.Content>,\n  PopoverContentProps\n>(function PopoverContent(\n  { align = 'center', sideOffset = 4, container, className, style, ...props },\n  ref,\n) {\n  const componentAttributes = useMonkeysComponentAttributes();\n  const fallbackContainer =\n    typeof document !== 'undefined'\n      ? (() => {\n          const active = document.activeElement as HTMLElement | null;\n          const activeDialog = active?.closest('[data-monkeys-dialog-content]');\n          if (activeDialog) return activeDialog as HTMLElement;\n          const openDialogs = Array.from(\n            document.querySelectorAll<HTMLElement>(\n              '[data-monkeys-dialog-content][data-state=\"open\"]',\n            ),\n          );\n          return openDialogs.at(-1);\n        })()\n      : undefined;\n\n  return (\n    <PopoverPrimitive.Portal container={container ?? fallbackContainer}>\n      <PopoverPrimitive.Content\n        {...componentAttributes}\n        {...props}\n        ref={ref}\n        align={align}\n        sideOffset={sideOffset}\n        data-monkeys-component=\"popover\"\n        data-slot=\"content\"\n        data-surface=\"menu\"\n        className={cn(\n          'z-50 w-72 border p-4 outline-none',\n          getOverlaySurfaceClassName('menu'),\n          'data-[state=open]:animate-in data-[state=closed]:animate-out',\n          'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n          'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n          'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2',\n          'data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n          className,\n        )}\n        style={{ pointerEvents: 'auto', ...style }}\n      />\n    </PopoverPrimitive.Portal>\n  );\n});\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n","import * as LabelPrimitive from '@radix-ui/react-label';\nimport * as React from 'react';\n\nimport { cn } from '../base/utils';\n\nexport const Label = React.forwardRef<\n  React.ElementRef<typeof LabelPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => (\n  <LabelPrimitive.Root\n    ref={ref}\n    className={cn('text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70', className)}\n    {...props}\n  />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\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 * as React from 'react';\n\nimport { cn } from '../base/utils';\n\nexport interface TableProps extends React.HTMLAttributes<HTMLTableElement> {\n  container?: boolean;\n  containerClassName?: string;\n  containerProps?: React.HTMLAttributes<HTMLDivElement>;\n  density?: 'compact' | 'comfortable';\n}\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(({ className, container = true, containerClassName, containerProps, density = 'compact', ...props }, ref) => {\n  const table = <table ref={ref} data-density={density} className={cn('w-full caption-bottom text-sm', className)} {...props} />;\n  if (!container) return table;\n  const { className: nestedClassName, ...rest } = containerProps ?? {};\n  return <div className={cn('relative w-full overflow-auto', containerClassName, nestedClassName)} {...rest}>{table}</div>;\n});\nTable.displayName = 'Table';\nexport const TableHeader = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(({ className, ...props }, ref) => <thead ref={ref} className={cn('[&_tr]:border-b', className)} {...props} />);\nTableHeader.displayName = 'TableHeader';\nexport const TableBody = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(({ className, ...props }, ref) => <tbody ref={ref} className={cn('[&_tr:last-child]:border-0', className)} {...props} />);\nTableBody.displayName = 'TableBody';\nexport const TableFooter = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(({ className, ...props }, ref) => <tfoot ref={ref} className={cn('border-t bg-muted/50 font-medium [&>tr]:last:border-b-0', className)} {...props} />);\nTableFooter.displayName = 'TableFooter';\nexport const TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(({ className, ...props }, ref) => <tr ref={ref} className={cn('border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted', className)} {...props} />);\nTableRow.displayName = 'TableRow';\nexport const TableHead = React.forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>(({ className, ...props }, ref) => <th ref={ref} className={cn('h-10 px-2 text-left align-middle font-medium text-muted-foreground [[data-density=comfortable]_&]:h-12 [[data-density=comfortable]_&]:px-4 [&:has([role=checkbox])]:pr-0', className)} {...props} />);\nTableHead.displayName = 'TableHead';\nexport const TableCell = React.forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>(({ className, ...props }, ref) => <td ref={ref} className={cn('p-2 align-middle [[data-density=comfortable]_&]:p-4 [&:has([role=checkbox])]:pr-0', className)} {...props} />);\nTableCell.displayName = 'TableCell';\nexport const TableCaption = React.forwardRef<HTMLTableCaptionElement, React.HTMLAttributes<HTMLTableCaptionElement>>(({ className, ...props }, ref) => <caption ref={ref} className={cn('mt-4 text-sm text-muted-foreground', className)} {...props} />);\nTableCaption.displayName = 'TableCaption';\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 { DataExplorerDetailFieldProps } from \"./types\";\nimport { cn } from \"./utils\";\n\nfunction hasContent(value: unknown) {\n  return (\n    value !== null && value !== undefined && value !== false && value !== \"\"\n  );\n}\n\nexport function DataExplorerDetailField<TContext = unknown>({\n  field,\n  label = field?.label,\n  icon = field?.icon,\n  value = field?.value,\n  helperText = field?.helperText,\n  error = field?.error,\n  required = field?.required ?? false,\n  disabled = field?.disabled ?? false,\n  children,\n  context,\n  className,\n  valueClassName = field?.valueClassName,\n  classNames,\n  dataAttributes = field?.dataAttributes,\n  labelDataAttributes = field?.labelDataAttributes,\n  valueDataAttributes = field?.valueDataAttributes,\n  helperDataAttributes = field?.helperDataAttributes,\n  errorDataAttributes = field?.errorDataAttributes,\n}: DataExplorerDetailFieldProps<TContext>) {\n  const resolvedClassNames = {\n    ...field?.classNames,\n    ...classNames,\n  };\n  const content =\n    children ?? (field?.render ? field.render(context as TContext) : value);\n  const hasError = hasContent(error);\n\n  return (\n    <div\n      {...dataAttributes}\n      title={field?.title}\n      aria-disabled={disabled || undefined}\n      data-disabled={disabled || undefined}\n      data-invalid={hasError || undefined}\n      data-required={required || undefined}\n      className={cn(\n        \"min-w-0 space-y-1\",\n        disabled && \"opacity-60\",\n        resolvedClassNames.root,\n        field?.className,\n        className,\n      )}\n    >\n      <div\n        className={cn(\n          \"flex min-w-0 items-center gap-1.5 text-[13px] font-medium text-muted-foreground\",\n          resolvedClassNames.label,\n        )}\n      >\n        {icon ? (\n          <span\n            className={cn(\n              \"inline-flex shrink-0 items-center justify-center\",\n              resolvedClassNames.icon,\n            )}\n          >\n            {icon}\n          </span>\n        ) : null}\n        <span {...labelDataAttributes} className=\"min-w-0 truncate\">{label}</span>\n        {required ? (\n          <span\n            aria-hidden=\"true\"\n            className={cn(\"text-destructive-text\", resolvedClassNames.required)}\n          >\n            *\n          </span>\n        ) : null}\n      </div>\n      <div\n        {...valueDataAttributes}\n        className={cn(\n          \"min-w-0 max-w-full text-[15px] leading-6 text-foreground [overflow-wrap:anywhere]\",\n          resolvedClassNames.value,\n          valueClassName,\n        )}\n      >\n        {content}\n      </div>\n      {hasContent(helperText) ? (\n        <div\n          {...helperDataAttributes}\n          data-slot=\"helper\"\n          className={cn(\n            \"min-w-0 max-w-full text-xs leading-5 text-muted-foreground [overflow-wrap:anywhere]\",\n            resolvedClassNames.helper,\n          )}\n        >\n          {helperText}\n        </div>\n      ) : null}\n      {hasError ? (\n        <div\n          {...errorDataAttributes}\n          role=\"alert\"\n          data-slot=\"error\"\n          className={cn(\n            \"min-w-0 max-w-full text-xs leading-5 text-destructive-text [overflow-wrap:anywhere]\",\n            resolvedClassNames.error,\n          )}\n        >\n          {error}\n        </div>\n      ) : null}\n    </div>\n  );\n}\n","import { DataExplorerDetailField } from \"./DataExplorerDetailField\";\nimport type { DataExplorerDetailSectionProps } from \"./types\";\nimport { cn, resolveDataExplorerValue } from \"./utils\";\n\nexport function DataExplorerDetailSection<TContext = unknown>({\n  section,\n  title = section?.title,\n  fields = section?.fields,\n  children,\n  context,\n  className,\n  classNames,\n  fieldClassNames,\n}: DataExplorerDetailSectionProps<TContext>) {\n  const resolvedClassNames = {\n    ...section?.classNames,\n    ...classNames,\n  };\n  const visibleFields = (fields || []).filter(\n    (field) => !(resolveDataExplorerValue(field.hidden, context) ?? false),\n  );\n  const sectionChildren =\n    children ??\n    (typeof section?.children === \"function\"\n      ? section.children(context as TContext)\n      : section?.children);\n  const hasContent = Boolean(sectionChildren) || visibleFields.length > 0;\n\n  if (!hasContent || resolveDataExplorerValue(section?.hidden, context)) {\n    return null;\n  }\n\n  return (\n    <section\n      className={cn(\n        \"border-b border-border pb-6 last:border-b-0 last:pb-0\",\n        resolvedClassNames.root,\n        section?.className,\n        className,\n      )}\n    >\n      {title ? (\n        <div\n          className={cn(\n            \"mb-4 text-[15px] font-semibold text-foreground\",\n            resolvedClassNames.title,\n          )}\n        >\n          {title}\n        </div>\n      ) : null}\n      <div className={cn(\"space-y-4\", resolvedClassNames.body)}>\n        {sectionChildren}\n        {visibleFields.map((field, index) => (\n          <DataExplorerDetailField\n            key={field.id || String(index)}\n            field={field}\n            context={context}\n            classNames={fieldClassNames}\n          />\n        ))}\n      </div>\n    </section>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport { DataExplorerDetailSection } from './DataExplorerDetailSection';\nimport type { DataExplorerDetailShellProps } from './types';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn, resolveDataExplorerValue } from './utils';\n\nfunction DefaultCloseIcon() {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      aria-hidden=\"true\"\n      className=\"h-[18px] w-[18px]\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"M18 6 6 18\" />\n      <path d=\"m6 6 12 12\" />\n    </svg>\n  );\n}\n\nfunction DefaultChevronLeftIcon() {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      aria-hidden=\"true\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"m15 18-6-6 6-6\" />\n    </svg>\n  );\n}\n\nfunction DefaultChevronRightIcon() {\n  return (\n    <svg\n      viewBox=\"0 0 24 24\"\n      aria-hidden=\"true\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"m9 18 6-6-6-6\" />\n    </svg>\n  );\n}\n\nexport function DataExplorerDetailShell<TContext = unknown>({\n  title,\n  subtitle,\n  leading,\n  actions,\n  preview,\n  previewVisible = true,\n  previewStyle,\n  previewPadded = false,\n  previewCentered = true,\n  sections = [],\n  rightPanel,\n  context,\n  navigation,\n  closeLabel = 'Close',\n  closeIcon,\n  closeVisible = true,\n  onClose,\n  appearance,\n  className,\n  classNames,\n}: DataExplorerDetailShellProps<TContext>) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const hasNavigation =\n    (navigation?.visible ?? true) &&\n    typeof navigation?.count === 'number' &&\n    navigation.count > 1;\n  const visibleSections = sections.filter(\n    (section) =>\n      !(resolveDataExplorerValue(section.hidden, context) ?? false),\n  );\n\n  return (\n    <div\n      className={cn(\n        theme.slots.detailRoot,\n        classNames?.root,\n        className,\n      )}\n      style={theme.styles.detailRoot}\n    >\n      <div\n        className={cn(\n          theme.slots.detailHeader,\n          classNames?.header,\n        )}\n      >\n        <div className={cn('flex min-w-0 items-center gap-3', classNames?.headerMain)}>\n          {leading ? (\n            <div\n              className={cn(\n                theme.slots.detailLeading,\n                classNames?.leading,\n              )}\n            >\n              {leading}\n            </div>\n          ) : null}\n          <div className={cn('min-w-0', classNames?.titleGroup)}>\n            <div\n              className={cn(\n                'truncate text-[20px] font-semibold leading-tight text-foreground',\n                classNames?.title,\n              )}\n            >\n              {title}\n            </div>\n            {subtitle ? (\n              <div\n                className={cn(\n                  'mt-1 min-w-0 truncate text-sm text-muted-foreground',\n                  classNames?.subtitle,\n                )}\n              >\n                {subtitle}\n              </div>\n            ) : null}\n          </div>\n        </div>\n\n        <div className={cn('flex items-center gap-2', classNames?.headerActions)}>\n          {actions}\n          {hasNavigation ? (\n            <div\n              className={cn(\n                theme.slots.detailNavigation,\n                classNames?.navigation,\n              )}\n            >\n              <button\n                type=\"button\"\n                aria-label={navigation?.previousLabel || 'Previous'}\n                className={cn(\n                  theme.slots.detailNavigationButton,\n                  classNames?.navigationButton,\n                )}\n                disabled={!navigation?.onPrevious}\n                onClick={navigation?.onPrevious}\n              >\n                <DefaultChevronLeftIcon />\n              </button>\n              <div\n                className={cn(\n                  'min-w-[74px] text-center text-xs font-medium text-muted-foreground',\n                  classNames?.navigationCount,\n                )}\n              >\n                {navigation.index + 1} / {navigation.count}\n              </div>\n              <button\n                type=\"button\"\n                aria-label={navigation?.nextLabel || 'Next'}\n                className={cn(\n                  theme.slots.detailNavigationButton,\n                  classNames?.navigationButton,\n                )}\n                disabled={!navigation?.onNext}\n                onClick={navigation?.onNext}\n              >\n                <DefaultChevronRightIcon />\n              </button>\n            </div>\n          ) : null}\n\n          {closeVisible ? (\n            <button\n              type=\"button\"\n              aria-label={closeLabel}\n              className={cn(\n                theme.slots.detailCloseButton,\n                classNames?.closeButton,\n              )}\n              onClick={onClose}\n            >\n              {closeIcon ?? <DefaultCloseIcon />}\n            </button>\n          ) : null}\n        </div>\n      </div>\n\n      <div\n        className={cn(\n          'grid min-h-0 flex-1',\n          previewVisible\n            ? 'xl:grid-cols-[minmax(0,1fr)_380px] 2xl:grid-cols-[minmax(0,1fr)_400px]'\n            : 'grid-cols-1',\n          classNames?.body,\n        )}\n      >\n        {previewVisible ? (\n          <div\n            className={cn(\n              theme.slots.detailPreviewPanel,\n              classNames?.previewPanel,\n            )}\n          >\n          <div\n            className={cn(\n              'flex h-full min-h-0 flex-col',\n              classNames?.previewStack,\n            )}\n          >\n            {hasNavigation ? (\n              <div className=\"flex justify-end\">\n                <div\n                  className={cn(\n                    'text-xs text-muted-foreground xl:hidden',\n                    classNames?.previewMobileCount,\n                  )}\n                >\n                  {navigation.index + 1} / {navigation.count}\n                </div>\n              </div>\n            ) : null}\n\n            <div\n              className={cn(\n                'flex min-h-0 flex-1 justify-center',\n                previewCentered && 'items-stretch',\n                classNames?.previewWrapper,\n              )}\n            >\n              <div\n                className={cn(\n                  theme.slots.detailPreviewFrame,\n                  classNames?.previewFrame,\n                )}\n                style={previewStyle}\n              >\n                <div\n                  className={cn(\n                    'relative flex h-full w-full items-center justify-center',\n                    previewPadded && 'p-4',\n                    classNames?.previewContent,\n                  )}\n                >\n                  {preview}\n                </div>\n\n                {hasNavigation ? (\n                  <>\n                    <button\n                      type=\"button\"\n                      aria-label={navigation?.previousLabel || 'Previous'}\n                      className={cn(\n                        theme.slots.previewNavigationButton,\n                        'left-4',\n                        classNames?.previewNavigationButton,\n                      )}\n                      disabled={!navigation?.onPrevious}\n                      onClick={navigation?.onPrevious}\n                    >\n                      <DefaultChevronLeftIcon />\n                    </button>\n                    <button\n                      type=\"button\"\n                      aria-label={navigation?.nextLabel || 'Next'}\n                      className={cn(\n                        theme.slots.previewNavigationButton,\n                        'right-4',\n                        classNames?.previewNavigationButton,\n                      )}\n                      disabled={!navigation?.onNext}\n                      onClick={navigation?.onNext}\n                    >\n                      <DefaultChevronRightIcon />\n                    </button>\n                  </>\n                ) : null}\n              </div>\n            </div>\n          </div>\n          </div>\n        ) : null}\n\n        <div\n          className={cn(\n            theme.slots.detailRightPanel,\n            classNames?.rightPanel,\n          )}\n        >\n          <div\n            className={cn(\n              theme.slots.detailRightPanelBody,\n              classNames?.rightPanelBody,\n            )}\n            style={{ scrollbarGutter: 'stable' }}\n          >\n            {rightPanel ?? (\n              <div className={cn('space-y-6', classNames?.sections)}>\n                {visibleSections.map((section) => (\n                  <DataExplorerDetailSection\n                    key={section.id}\n                    section={section}\n                    context={context}\n                    className={classNames?.section}\n                    fieldClassNames={{ root: classNames?.field }}\n                  />\n                ))}\n              </div>\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport {\n  DndContext,\n  KeyboardSensor,\n  PointerSensor,\n  closestCenter,\n  useSensor,\n  useSensors,\n  type DragEndEvent,\n  type DragMoveEvent,\n  type DragStartEvent,\n} from '@dnd-kit/core';\nimport {\n  defaultAnimateLayoutChanges,\n  SortableContext,\n  type AnimateLayoutChanges,\n  sortableKeyboardCoordinates,\n  useSortable,\n  verticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { resolveDataExplorerAppearance } from './theme';\nimport type {\n  DataExplorerDraggableTreeClassNames,\n  DataExplorerDraggableTreeDragPayload,\n  DataExplorerDraggableTreeFlattenedNode,\n  DataExplorerDraggableTreeNode,\n  DataExplorerDraggableTreeProps,\n  DataExplorerDraggableTreeRenderContext,\n} from './types';\nimport { cn } from './utils';\n\ntype FlattenedNode<TSource, TContext> =\n  DataExplorerDraggableTreeFlattenedNode<TSource, TContext>;\ntype TreeItemRadius = DataExplorerDraggableTreeProps['itemRadius'];\ntype ClientPoint = { x: number; y: number };\ntype DragPreviewLayout = {\n  initialLeft: number;\n  initialTop: number;\n  left: number;\n  top: number;\n  width?: number;\n  height?: number;\n};\ntype ProjectedDrop = {\n  parentId?: string;\n  index: number;\n  depth: number;\n};\n\nconst treeItemDropTransition = {\n  duration: 220,\n  easing: 'cubic-bezier(0.22, 1, 0.36, 1)',\n};\n\nconst treeItemAnimateLayoutChanges: AnimateLayoutChanges = (args) => {\n  if (args.isSorting) return true;\n  if (args.wasDragging && args.transition && args.containerId === args.previousContainerId) {\n    return true;\n  }\n  return defaultAnimateLayoutChanges(args);\n};\n\nconst treeItemRadiusValues = {\n  none: '0px',\n  sm: '0.125rem',\n  md: '0.375rem',\n  lg: '0.5rem',\n  xl: '0.75rem',\n  full: '9999px',\n};\n\nfunction resolveTreeItemBorderRadius(\n  itemRadius: TreeItemRadius,\n  appearanceRadius: keyof typeof treeItemRadiusValues,\n) {\n  const radius = itemRadius ?? appearanceRadius;\n  if (typeof radius === 'number') return `${radius}px`;\n  if (!radius) return undefined;\n  return treeItemRadiusValues[radius as keyof typeof treeItemRadiusValues] ?? radius;\n}\n\nfunction getEventClientPoint(event: Event | undefined): ClientPoint | undefined {\n  if (!event) return undefined;\n  if ('clientX' in event && 'clientY' in event) {\n    return {\n      x: Number((event as MouseEvent | PointerEvent).clientX),\n      y: Number((event as MouseEvent | PointerEvent).clientY),\n    };\n  }\n\n  const touchEvent = event as TouchEvent;\n  const touch = touchEvent.touches?.[0] ?? touchEvent.changedTouches?.[0];\n  if (!touch) return undefined;\n  return { x: touch.clientX, y: touch.clientY };\n}\n\nfunction ChevronIcon({ expanded }: { expanded: boolean }) {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className={cn(\n        'h-4 w-4 transition-transform duration-200 ease-out',\n        expanded ? 'rotate-90' : 'rotate-0',\n      )}\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"m9 18 6-6-6-6\" />\n    </svg>\n  );\n}\n\nfunction GripIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-3.5 w-3.5\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <circle cx=\"9\" cy=\"5\" r=\"1\" />\n      <circle cx=\"9\" cy=\"12\" r=\"1\" />\n      <circle cx=\"9\" cy=\"19\" r=\"1\" />\n      <circle cx=\"15\" cy=\"5\" r=\"1\" />\n      <circle cx=\"15\" cy=\"12\" r=\"1\" />\n      <circle cx=\"15\" cy=\"19\" r=\"1\" />\n    </svg>\n  );\n}\n\nfunction collectDefaultExpandedNodeIds<TSource, TContext>(\n  nodes: Array<DataExplorerDraggableTreeNode<TSource, TContext>>,\n  ids: Set<string>,\n) {\n  for (const node of nodes) {\n    if (node.defaultExpanded) ids.add(node.id);\n    collectDefaultExpandedNodeIds(node.children ?? [], ids);\n  }\n}\n\nfunction buildDefaultExpandedNodeIds<TSource, TContext>(\n  nodes: Array<DataExplorerDraggableTreeNode<TSource, TContext>>,\n  defaultExpandedNodeIds: string[] | undefined,\n) {\n  const ids = new Set(defaultExpandedNodeIds ?? []);\n  collectDefaultExpandedNodeIds(nodes, ids);\n  return ids;\n}\n\nfunction flattenTree<TSource, TContext>(\n  nodes: Array<DataExplorerDraggableTreeNode<TSource, TContext>>,\n  expandedNodeIds: Set<string>,\n  parentId: string | undefined,\n  depth: number,\n  entries: FlattenedNode<TSource, TContext>[],\n) {\n  nodes.forEach((node, index) => {\n    entries.push({ node, parentId, index, depth });\n    const hasChildren = Array.isArray(node.children) && node.children.length > 0;\n    const isExpanded = node.collapsible === false || expandedNodeIds.has(node.id);\n    if (hasChildren && isExpanded) {\n      flattenTree(node.children ?? [], expandedNodeIds, node.id, depth + 1, entries);\n    }\n  });\n}\n\nfunction buildFlattenedTree<TSource, TContext>(\n  nodes: Array<DataExplorerDraggableTreeNode<TSource, TContext>>,\n  expandedNodeIds: Set<string>,\n) {\n  const entries: FlattenedNode<TSource, TContext>[] = [];\n  flattenTree(nodes, expandedNodeIds, undefined, 0, entries);\n  return entries;\n}\n\nfunction findAncestorEntryAtDepth<TSource, TContext>(\n  entries: Array<FlattenedNode<TSource, TContext>>,\n  entry: FlattenedNode<TSource, TContext>,\n  depth: number,\n) {\n  if (depth < 0) return undefined;\n  let parentId = entry.parentId;\n  while (parentId) {\n    const parentEntry = entries.find((candidate) => candidate.node.id === parentId);\n    if (!parentEntry) return undefined;\n    if (parentEntry.depth === depth) return parentEntry;\n    parentId = parentEntry.parentId;\n  }\n  return undefined;\n}\n\nfunction countSiblingsBeforeDrop<TSource, TContext>(\n  entries: Array<FlattenedNode<TSource, TContext>>,\n  activeEntry: FlattenedNode<TSource, TContext>,\n  overEntry: FlattenedNode<TSource, TContext>,\n  parentId: string | undefined,\n  targetDepth: number,\n) {\n  const targetEntry = activeEntry.node.id === overEntry.node.id ? activeEntry : overEntry;\n  let index = 0;\n  for (const entry of entries) {\n    if (entry.node.id === targetEntry.node.id) break;\n    if (entry.node.id === activeEntry.node.id) continue;\n    if (entry.parentId === parentId && entry.depth === targetDepth) {\n      index += 1;\n    }\n  }\n  return index;\n}\n\nexport function projectDataExplorerDraggableTreeDrop<TSource, TContext>({\n  flattenedNodes,\n  activeEntry,\n  overEntry,\n  dragOffsetX,\n  indentSize,\n}: {\n  flattenedNodes: Array<FlattenedNode<TSource, TContext>>;\n  activeEntry: FlattenedNode<TSource, TContext>;\n  overEntry: FlattenedNode<TSource, TContext>;\n  dragOffsetX: number;\n  indentSize: number;\n}): ProjectedDrop {\n  const depthDelta = Math.round(dragOffsetX / Math.max(1, indentSize));\n  const projectedDepth = Math.max(0, activeEntry.depth + depthDelta);\n  const targetDepth = Math.min(projectedDepth, overEntry.depth);\n  const parentAtDepth =\n    targetDepth === 0\n      ? undefined\n      : targetDepth === overEntry.depth\n        ? overEntry.parentId\n        : findAncestorEntryAtDepth(flattenedNodes, overEntry, targetDepth)?.parentId;\n\n  return {\n    parentId: parentAtDepth,\n    index: countSiblingsBeforeDrop(\n      flattenedNodes,\n      activeEntry,\n      overEntry,\n      parentAtDepth,\n      targetDepth,\n    ),\n    depth: targetDepth,\n  };\n}\n\nfunction DraggableTreeItem<TSource, TContext>({\n  entry,\n  selected,\n  expanded,\n  active,\n  over,\n  indentSize,\n  activationMode,\n  dragHandleLabel,\n  expandLabel,\n  collapseLabel,\n  themeSlots,\n  classNames,\n  itemStyle,\n  context,\n  renderNodeActions,\n  renderNodeChildren,\n  onSelect,\n  onToggle,\n  registerNodeElement,\n}: {\n  entry: FlattenedNode<TSource, TContext>;\n  selected: boolean;\n  expanded: boolean;\n  active: boolean;\n  over: boolean;\n  indentSize: number;\n  activationMode: 'row' | 'handle';\n  dragHandleLabel: string;\n  expandLabel: string;\n  collapseLabel: string;\n  themeSlots: ReturnType<typeof resolveDataExplorerAppearance>['slots'];\n  classNames?: DataExplorerDraggableTreeClassNames;\n  itemStyle?: CSSProperties;\n  context?: TContext;\n  renderNodeActions?: DataExplorerDraggableTreeProps<\n    TSource,\n    TContext\n  >['renderNodeActions'];\n  renderNodeChildren?: DataExplorerDraggableTreeProps<\n    TSource,\n    TContext\n  >['renderNodeChildren'];\n  onSelect?: (node: DataExplorerDraggableTreeNode<TSource, TContext>) => void;\n  onToggle: (nodeId: string) => void;\n  registerNodeElement?: (nodeId: string, element: HTMLDivElement | null) => void;\n}) {\n  const { node, depth } = entry;\n  const hasChildren = node.collapsible === true || Boolean(node.children?.length);\n  const disabled = Boolean(node.disabled);\n  const selectable = node.selectable !== false && !disabled;\n  const draggable = node.draggable !== false && !disabled;\n  const {\n    attributes,\n    listeners,\n    setNodeRef,\n    setActivatorNodeRef,\n    transform,\n    transition,\n    isDragging,\n  } = useSortable({\n    id: node.id,\n    disabled: !draggable,\n    animateLayoutChanges: treeItemAnimateLayoutChanges,\n    transition: treeItemDropTransition,\n  });\n  const {\n    role: _sortableRole,\n    tabIndex: _sortableTabIndex,\n    'aria-disabled': _sortableAriaDisabled,\n    ...sortableAttributes\n  } = attributes;\n  const sortableListeners = activationMode === 'row' ? listeners : undefined;\n  const handleListeners = activationMode === 'handle' ? listeners : undefined;\n  const renderContext: DataExplorerDraggableTreeRenderContext<TSource, TContext> = {\n    node,\n    depth,\n    expanded,\n    selected,\n    dragging: isDragging || active,\n    disabled,\n    context: node.context ?? context,\n  };\n  const style: CSSProperties = {\n    transform: CSS.Transform.toString(transform),\n    transition,\n  };\n  const setRowRef = useCallback(\n    (element: HTMLDivElement | null) => {\n      setNodeRef(element);\n      registerNodeElement?.(node.id, element);\n    },\n    [node.id, registerNodeElement, setNodeRef],\n  );\n\n  return (\n    <div\n      style={style}\n      className={cn(\n        'min-w-0',\n        classNames?.item,\n        node.className,\n        isDragging && 'relative z-20',\n        active && 'opacity-0',\n      )}\n    >\n      <TreeItemRow\n        node={node}\n        depth={depth}\n        indentSize={indentSize}\n        selected={selected}\n        expanded={expanded}\n        active={isDragging || active}\n        over={over}\n        hasChildren={hasChildren}\n        disabled={disabled}\n        selectable={selectable}\n        draggable={draggable}\n        activationMode={activationMode}\n        dragHandleLabel={dragHandleLabel}\n        expandLabel={expandLabel}\n        collapseLabel={collapseLabel}\n        themeSlots={themeSlots}\n        classNames={classNames}\n        itemClassName={node.itemClassName}\n        itemStyle={itemStyle}\n        sortableAttributes={sortableAttributes}\n        sortableListeners={sortableListeners}\n        handleListeners={handleListeners}\n        renderNodeActions={renderNodeActions}\n        renderContext={renderContext}\n        rowRef={setRowRef}\n        dragHandleRef={activationMode === 'handle' ? setActivatorNodeRef : undefined}\n        onSelect={() => onSelect?.(node)}\n        onToggle={() => onToggle(node.id)}\n      />\n      {renderNodeChildren ? (\n        <div\n          className={cn(\n            'min-w-0',\n            classNames?.children,\n            node.childrenClassName,\n          )}\n        >\n          {renderNodeChildren(renderContext)}\n        </div>\n      ) : null}\n    </div>\n  );\n}\n\nfunction TreeItemRow<TSource, TContext>({\n  node,\n  depth,\n  indentSize,\n  selected,\n  expanded,\n  active,\n  over,\n  hasChildren,\n  disabled,\n  selectable,\n  draggable,\n  activationMode,\n  dragHandleLabel,\n  expandLabel,\n  collapseLabel,\n  themeSlots,\n  classNames,\n  itemClassName,\n  itemStyle,\n  sortableAttributes,\n  sortableListeners,\n  handleListeners,\n  renderNodeActions,\n  renderContext,\n  rowRef,\n  dragHandleRef,\n  onSelect,\n  onToggle,\n}: {\n  node: DataExplorerDraggableTreeNode<TSource, TContext>;\n  depth: number;\n  indentSize: number;\n  selected: boolean;\n  expanded: boolean;\n  active: boolean;\n  over: boolean;\n  hasChildren: boolean;\n  disabled: boolean;\n  selectable: boolean;\n  draggable: boolean;\n  activationMode: 'row' | 'handle';\n  dragHandleLabel: string;\n  expandLabel: string;\n  collapseLabel: string;\n  themeSlots: ReturnType<typeof resolveDataExplorerAppearance>['slots'];\n  classNames?: DataExplorerDraggableTreeClassNames;\n  itemClassName?: string;\n  itemStyle?: CSSProperties;\n  sortableAttributes?: Record<string, unknown>;\n  sortableListeners?: Record<string, unknown>;\n  handleListeners?: Record<string, unknown>;\n  renderNodeActions?: DataExplorerDraggableTreeProps<\n    TSource,\n    TContext\n  >['renderNodeActions'];\n  renderContext: DataExplorerDraggableTreeRenderContext<TSource, TContext>;\n  rowRef?: (node: HTMLDivElement | null) => void;\n  dragHandleRef?: (node: HTMLElement | null) => void;\n  onSelect?: () => void;\n  onToggle?: () => void;\n}) {\n  return (\n    <div\n      ref={rowRef}\n      data-data-explorer-draggable-tree-item\n      className={cn(\n        themeSlots.treeNodeButton,\n        'min-h-8 touch-none border border-transparent bg-background/70 py-0 pl-1 pr-2 font-medium',\n        selectable && 'cursor-pointer',\n        draggable && activationMode === 'row' && 'cursor-grab active:cursor-grabbing',\n        selected && themeSlots.treeNodeSelected,\n        disabled && themeSlots.treeNodeDisabled,\n        active && themeSlots.treeNodeDragging,\n        over && 'border-primary/30 bg-primary/[0.08] ring-1 ring-primary/15',\n        selected && classNames?.itemSelected,\n        disabled && classNames?.itemDisabled,\n        active && classNames?.itemDragging,\n        over && classNames?.itemOver,\n        classNames?.itemButton,\n        itemClassName,\n      )}\n      style={{ ...itemStyle, paddingLeft: `${depth * indentSize + 4}px` }}\n      role=\"treeitem\"\n      aria-selected={selected || undefined}\n      aria-disabled={disabled || undefined}\n      aria-expanded={hasChildren ? expanded : undefined}\n      aria-label={node.ariaLabel}\n      tabIndex={selectable ? 0 : -1}\n      {...sortableAttributes}\n      {...sortableListeners}\n      onClick={() => {\n        if (!selectable) return;\n        onSelect?.();\n      }}\n      onKeyDown={(event) => {\n        if (!selectable) return;\n        if (event.key !== 'Enter' && event.key !== ' ') return;\n        event.preventDefault();\n        onSelect?.();\n      }}\n    >\n      {draggable ? (\n        <span\n          ref={dragHandleRef}\n          className={cn(\n            themeSlots.treeNodeDragHandle,\n            'opacity-100',\n            classNames?.dragHandle,\n          )}\n          aria-label={dragHandleLabel}\n          title={dragHandleLabel}\n          {...handleListeners}\n          onClick={(event) => event.stopPropagation()}\n        >\n          <GripIcon />\n        </span>\n      ) : (\n        <span className={cn('h-5 w-5 shrink-0', classNames?.dragHandle)} />\n      )}\n      {hasChildren ? (\n        <button\n          type=\"button\"\n          className={cn(themeSlots.treeNodeToggle, classNames?.toggle)}\n          aria-label={expanded ? collapseLabel : expandLabel}\n          onClick={(event) => {\n            event.stopPropagation();\n            onToggle?.();\n          }}\n        >\n          <ChevronIcon expanded={expanded} />\n        </button>\n      ) : (\n        <span className={cn(themeSlots.treeNodeToggle, classNames?.toggle)} />\n      )}\n      {node.icon ? (\n        <span className={cn(themeSlots.treeNodeIcon, classNames?.icon)}>\n          {node.icon}\n        </span>\n      ) : null}\n      <span\n        className={cn(\n          'flex min-w-0 flex-1 flex-col',\n          classNames?.itemContent,\n        )}\n      >\n        <span className={cn(themeSlots.treeNodeLabel, classNames?.label)}>\n          {node.label}\n        </span>\n        {node.description ? (\n          <span\n            className={cn(\n              themeSlots.treeNodeDescription,\n              classNames?.description,\n            )}\n          >\n            {node.description}\n          </span>\n        ) : null}\n      </span>\n      {node.meta ? (\n        <span className={cn(themeSlots.treeNodeMeta, classNames?.meta)}>\n          {node.meta}\n        </span>\n      ) : null}\n      {node.badge ? (\n        <span className={cn(themeSlots.treeNodeBadge, classNames?.badge)}>\n          {node.badge}\n        </span>\n      ) : null}\n      {renderNodeActions ? (\n        <span className={cn('ml-1 shrink-0', classNames?.actions)}>\n          {renderNodeActions(renderContext)}\n        </span>\n      ) : null}\n    </div>\n  );\n}\n\nexport function DataExplorerDraggableTree<\n  TSource = unknown,\n  TContext = unknown,\n>({\n  nodes,\n  context,\n  selectedNodeId,\n  expandedNodeIds,\n  defaultExpandedNodeIds,\n  resetExpansionKey,\n  indentSize = 16,\n  activationMode = 'row',\n  loading,\n  empty,\n  labels,\n  appearance,\n  itemRadius,\n  className,\n  classNames,\n  renderNodeActions,\n  renderNodeChildren,\n  onSelectNode,\n  onExpandedNodeIdsChange,\n  onDragEnd,\n}: DataExplorerDraggableTreeProps<TSource, TContext>) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const [internalExpandedNodeIds, setInternalExpandedNodeIds] = useState(\n    () => buildDefaultExpandedNodeIds(nodes, defaultExpandedNodeIds),\n  );\n  const [activeNodeId, setActiveNodeId] = useState<string | undefined>();\n  const [dragPreviewLayout, setDragPreviewLayout] = useState<\n    DragPreviewLayout | undefined\n  >();\n  const [overNodeId, setOverNodeId] = useState<string | undefined>();\n  const nodeElementsRef = useRef(new Map<string, HTMLDivElement>());\n  const itemBorderRadius = resolveTreeItemBorderRadius(itemRadius, theme.radius);\n  const itemStyle = itemBorderRadius\n    ? ({ borderRadius: itemBorderRadius } satisfies CSSProperties)\n    : undefined;\n  const overlayStyle = {\n    width: dragPreviewLayout?.width,\n    height: dragPreviewLayout?.height,\n    borderRadius: itemBorderRadius,\n  } satisfies CSSProperties;\n  const sensors = useSensors(\n    useSensor(PointerSensor, { activationConstraint: { distance: 4 } }),\n    useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }),\n  );\n\n  useEffect(() => {\n    setInternalExpandedNodeIds(\n      buildDefaultExpandedNodeIds(nodes, defaultExpandedNodeIds),\n    );\n  }, [defaultExpandedNodeIds, resetExpansionKey]);\n\n  const resolvedExpandedNodeIds =\n    expandedNodeIds !== undefined\n      ? new Set(expandedNodeIds)\n      : internalExpandedNodeIds;\n  const flattenedNodes = useMemo(\n    () => buildFlattenedTree(nodes, resolvedExpandedNodeIds),\n    [nodes, resolvedExpandedNodeIds],\n  );\n  const flattenedNodeMap = useMemo(() => {\n    const map = new Map<string, FlattenedNode<TSource, TContext>>();\n    for (const entry of flattenedNodes) map.set(entry.node.id, entry);\n    return map;\n  }, [flattenedNodes]);\n  const activeEntry = activeNodeId ? flattenedNodeMap.get(activeNodeId) : undefined;\n  const sortableIds = flattenedNodes.map((entry) => entry.node.id);\n  const registerNodeElement = useCallback(\n    (nodeId: string, element: HTMLDivElement | null) => {\n      if (element) {\n        nodeElementsRef.current.set(nodeId, element);\n      } else {\n        nodeElementsRef.current.delete(nodeId);\n      }\n    },\n    [],\n  );\n\n  const clearDragState = useCallback(() => {\n    setActiveNodeId(undefined);\n    setDragPreviewLayout(undefined);\n    setOverNodeId(undefined);\n  }, []);\n\n  const setNodeExpanded = (nodeId: string, expanded: boolean) => {\n    const next = new Set(resolvedExpandedNodeIds);\n    if (expanded) {\n      next.add(nodeId);\n    } else {\n      next.delete(nodeId);\n    }\n    if (expandedNodeIds === undefined) {\n      setInternalExpandedNodeIds(next);\n    }\n    onExpandedNodeIdsChange?.([...next]);\n  };\n\n  const handleDragStart = (event: DragStartEvent) => {\n    const activeId = String(event.active.id || '');\n    setActiveNodeId(activeId);\n\n    const elementRect = activeId\n      ? nodeElementsRef.current.get(activeId)?.getBoundingClientRect()\n      : undefined;\n    const initialRect = event.active.rect.current.initial;\n    const rect = elementRect ?? initialRect;\n    const point = getEventClientPoint(event.activatorEvent);\n    const width = rect?.width;\n    const height = rect?.height;\n    const left = rect?.left ?? (point ? point.x - (width ?? 0) / 2 : 0);\n    const top = rect?.top ?? (point ? point.y - (height ?? 0) / 2 : 0);\n\n    setDragPreviewLayout({\n      initialLeft: left,\n      initialTop: top,\n      left,\n      top,\n      width,\n      height,\n    });\n  };\n\n  const handleDragMove = (event: DragMoveEvent) => {\n    setDragPreviewLayout((layout) =>\n      layout\n        ? {\n            ...layout,\n            left: layout.initialLeft + event.delta.x,\n            top: layout.initialTop + event.delta.y,\n          }\n        : layout,\n    );\n  };\n\n  const handleDragEnd = (event: DragEndEvent) => {\n    const activeId = String(event.active.id || '');\n    const overId = event.over ? String(event.over.id || '') : '';\n    if (!activeId || !overId || !onDragEnd) {\n      clearDragState();\n      return;\n    }\n    const activeEntry = flattenedNodeMap.get(activeId);\n    const overEntry = flattenedNodeMap.get(overId);\n    if (!activeEntry || !overEntry) {\n      clearDragState();\n      return;\n    }\n    const projectedDrop = projectDataExplorerDraggableTreeDrop({\n      flattenedNodes,\n      activeEntry,\n      overEntry,\n      dragOffsetX: event.delta.x,\n      indentSize,\n    });\n    if (\n      activeEntry.parentId === projectedDrop.parentId &&\n      activeEntry.index === projectedDrop.index\n    ) {\n      clearDragState();\n      return;\n    }\n    const payload: DataExplorerDraggableTreeDragPayload<TSource, TContext> = {\n      activeNode: activeEntry.node,\n      overNode: overEntry.node,\n      activeParentId: activeEntry.parentId,\n      overParentId: overEntry.parentId,\n      targetParentId: projectedDrop.parentId,\n      activeIndex: activeEntry.index,\n      overIndex: overEntry.index,\n      targetIndex: projectedDrop.index,\n      targetDepth: projectedDrop.depth,\n      sameParent: activeEntry.parentId === overEntry.parentId,\n      targetSameParent: activeEntry.parentId === projectedDrop.parentId,\n      context,\n    };\n    void onDragEnd(payload);\n    clearDragState();\n  };\n\n  const dragOverlay = (\n    activeEntry && dragPreviewLayout ? (\n      <div\n        aria-hidden=\"true\"\n        className=\"pointer-events-none fixed z-[1000] min-w-0\"\n        style={{\n          left: dragPreviewLayout.left,\n          top: dragPreviewLayout.top,\n          ...overlayStyle,\n        }}\n      >\n        <div\n          className={cn('min-w-0 overflow-hidden shadow-lg', classNames?.overlay)}\n          style={overlayStyle}\n        >\n          <TreeItemRow\n            node={activeEntry.node}\n            depth={activeEntry.depth}\n            indentSize={indentSize}\n            selected={selectedNodeId === activeEntry.node.id}\n            expanded={\n              activeEntry.node.collapsible === false ||\n              resolvedExpandedNodeIds.has(activeEntry.node.id)\n            }\n            active\n            over={false}\n            hasChildren={\n              activeEntry.node.collapsible === true ||\n              Boolean(activeEntry.node.children?.length)\n            }\n            disabled={Boolean(activeEntry.node.disabled)}\n            selectable={activeEntry.node.selectable !== false}\n            draggable={activeEntry.node.draggable !== false}\n            activationMode={activationMode}\n            dragHandleLabel={labels?.dragHandle ?? 'Drag'}\n            expandLabel={labels?.expand ?? 'Expand'}\n            collapseLabel={labels?.collapse ?? 'Collapse'}\n            themeSlots={theme.slots}\n            classNames={classNames}\n            itemClassName={activeEntry.node.itemClassName}\n            itemStyle={itemStyle}\n            renderNodeActions={renderNodeActions}\n            renderContext={{\n              node: activeEntry.node,\n              depth: activeEntry.depth,\n              expanded:\n                activeEntry.node.collapsible === false ||\n                resolvedExpandedNodeIds.has(activeEntry.node.id),\n              selected: selectedNodeId === activeEntry.node.id,\n              dragging: true,\n              disabled: Boolean(activeEntry.node.disabled),\n              context: activeEntry.node.context ?? context,\n            }}\n          />\n        </div>\n      </div>\n    ) : null\n  );\n\n  if (loading) {\n    return (\n      <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n        <div className={cn(theme.slots.treeLoading, classNames?.loading)}>\n          {labels?.loading ?? 'Loading...'}\n        </div>\n      </div>\n    );\n  }\n\n  if (nodes.length === 0) {\n    return (\n      <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n        <div className={cn(theme.slots.treeEmpty, classNames?.empty)}>\n          {empty ?? labels?.empty ?? 'No data'}\n        </div>\n      </div>\n    );\n  }\n\n  return (\n    <DndContext\n      sensors={sensors}\n      collisionDetection={closestCenter}\n      onDragStart={handleDragStart}\n      onDragMove={handleDragMove}\n      onDragOver={(event) => {\n        setOverNodeId(event.over ? String(event.over.id || '') : undefined);\n      }}\n      onDragEnd={handleDragEnd}\n      onDragCancel={clearDragState}\n    >\n      <SortableContext items={sortableIds} strategy={verticalListSortingStrategy}>\n        <div\n          className={cn(\n            theme.slots.treeRoot,\n            'space-y-1 overflow-visible',\n            classNames?.root,\n            className,\n          )}\n          role=\"tree\"\n        >\n          <div className={cn('min-w-0 space-y-1', classNames?.list)}>\n            {flattenedNodes.map((entry) => {\n              const node = entry.node;\n              const expanded =\n                node.collapsible === false || resolvedExpandedNodeIds.has(node.id);\n              return (\n                <DraggableTreeItem\n                  key={node.id}\n                  entry={entry}\n                  selected={selectedNodeId === node.id}\n                  expanded={expanded}\n                  active={activeNodeId === node.id}\n                  over={overNodeId === node.id && activeNodeId !== node.id}\n                  indentSize={indentSize}\n                  activationMode={activationMode}\n                  dragHandleLabel={labels?.dragHandle ?? 'Drag'}\n                  expandLabel={labels?.expand ?? 'Expand'}\n                  collapseLabel={labels?.collapse ?? 'Collapse'}\n                  themeSlots={theme.slots}\n                  classNames={classNames}\n                  itemStyle={itemStyle}\n                  context={context}\n                  renderNodeActions={renderNodeActions}\n                  renderNodeChildren={renderNodeChildren}\n                  onSelect={(nextNode) => onSelectNode?.(nextNode, context)}\n                  onToggle={(nodeId) => setNodeExpanded(nodeId, !expanded)}\n                  registerNodeElement={registerNodeElement}\n                />\n              );\n            })}\n          </div>\n        </div>\n      </SortableContext>\n      {typeof document === 'undefined'\n        ? dragOverlay\n        : dragOverlay\n          ? createPortal(dragOverlay, document.body)\n          : null}\n    </DndContext>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport { useState } from 'react';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\n\nimport type {\n  DataExplorerDisplayAction,\n  DataExplorerDisplayActionContext,\n  DataExplorerDisplayActionMenuProps,\n} from './types';\nimport {\n  getDataExplorerMenuItemToneClassName,\n  resolveDataExplorerAppearance,\n} from './theme';\nimport { cn, resolveDataExplorerValue } from './utils';\n\nfunction MoreIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <circle cx=\"12\" cy=\"12\" r=\"1\" />\n      <circle cx=\"19\" cy=\"12\" r=\"1\" />\n      <circle cx=\"5\" cy=\"12\" r=\"1\" />\n    </svg>\n  );\n}\n\nexport function DataExplorerDisplayActionMenu<TSource = unknown>({\n  item,\n  itemId = item?.id,\n  source = item?.source,\n  actions = [],\n  label = 'Actions',\n  triggerLabel = 'Open actions',\n  triggerIcon,\n  align = 'end',\n  sideOffset = 6,\n  appearance,\n  className,\n  classNames,\n}: DataExplorerDisplayActionMenuProps<TSource>) {\n  const [open, setOpen] = useState(false);\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const context: DataExplorerDisplayActionContext<TSource> = {\n    itemId,\n    item,\n    source,\n  };\n  const visibleActions = actions.filter(\n    (action) => resolveDataExplorerValue(action.visible, context) ?? true,\n  );\n\n  if (visibleActions.length === 0) {\n    return null;\n  }\n\n  return (\n    <span className={cn('inline-flex', classNames?.root)}>\n      <DropdownMenu.Root open={open} onOpenChange={setOpen}>\n        <DropdownMenu.Trigger asChild>\n          <button\n            type=\"button\"\n            aria-label={triggerLabel}\n            className={cn(\n              theme.slots.menuTrigger,\n              classNames?.trigger,\n              className,\n            )}\n            onClick={(event) => event.stopPropagation()}\n          >\n            {triggerIcon ?? <MoreIcon />}\n            <span className=\"sr-only\">{triggerLabel}</span>\n          </button>\n        </DropdownMenu.Trigger>\n        <DropdownMenu.Portal>\n          <DropdownMenu.Content\n            align={align}\n            sideOffset={sideOffset}\n            className={cn(\n              theme.slots.menuContent,\n              classNames?.content,\n            )}\n            style={theme.styles.menuContent}\n            onClick={(event) => event.stopPropagation()}\n          >\n            {label ? (\n              <>\n                <DropdownMenu.Label\n                  className={cn(\n                    theme.slots.menuLabel,\n                    classNames?.label,\n                  )}\n                >\n                  {label}\n                </DropdownMenu.Label>\n                <DropdownMenu.Separator\n                  className={cn(\n                    theme.slots.menuSeparator,\n                    classNames?.separator,\n                  )}\n                />\n              </>\n            ) : null}\n\n            {visibleActions.map((action) => {\n              const disabled =\n                (resolveDataExplorerValue(action.disabled, context) ?? false) ||\n                (resolveDataExplorerValue(action.loading, context) ?? false);\n\n              if (action.render) {\n                return (\n                  <div key={action.id}>\n                    {action.separatorBefore ? (\n                      <DropdownMenu.Separator\n                        className={cn(\n                          theme.slots.menuSeparator,\n                          classNames?.separator,\n                        )}\n                      />\n                    ) : null}\n                    {action.render(context)}\n                    {action.separatorAfter ? (\n                      <DropdownMenu.Separator\n                        className={cn(\n                          theme.slots.menuSeparator,\n                          classNames?.separator,\n                        )}\n                      />\n                    ) : null}\n                  </div>\n                );\n              }\n\n              return (\n                <div key={action.id}>\n                  {action.separatorBefore ? (\n                    <DropdownMenu.Separator\n                      className={cn(\n                        '-mx-1 my-1 h-px bg-border',\n                        classNames?.separator,\n                      )}\n                    />\n                  ) : null}\n                  <DropdownMenu.Item\n                    title={action.title}\n                    disabled={disabled}\n                    className={cn(\n                      theme.slots.menuItem,\n                      getDataExplorerMenuItemToneClassName(theme, action.tone),\n                      classNames?.item,\n                      action.className,\n                    )}\n                    style={theme.styles.menuItem}\n                    onSelect={() => {\n                      if (!action.onAction || disabled) {\n                        return;\n                      }\n                      void action.onAction(context);\n                    }}\n                    onContextMenu={(event) => {\n                      if (!action.onContextAction || disabled) {\n                        return;\n                      }\n                      event.preventDefault();\n                      event.stopPropagation();\n                      setOpen(false);\n                      void action.onContextAction(context);\n                    }}\n                  >\n                    {action.icon ? (\n                      <span\n                        className={cn(\n                          theme.slots.menuItemIcon,\n                          classNames?.itemIcon,\n                        )}\n                      >\n                        {action.icon}\n                      </span>\n                    ) : null}\n                    <span\n                      className={cn(\n                        theme.slots.menuItemLabel,\n                        classNames?.itemLabel,\n                      )}\n                    >\n                      {action.label}\n                    </span>\n                  </DropdownMenu.Item>\n                  {action.separatorAfter ? (\n                    <DropdownMenu.Separator\n                      className={cn(\n                        theme.slots.menuSeparator,\n                        classNames?.separator,\n                      )}\n                    />\n                  ) : null}\n                </div>\n              );\n            })}\n          </DropdownMenu.Content>\n        </DropdownMenu.Portal>\n      </DropdownMenu.Root>\n    </span>\n  );\n}\n","import type {\n  DataExplorerDisplayMediaItem,\n  DataExplorerDisplayMediaProps,\n} from './types';\nimport { cn } from './utils';\n\nfunction normalizeMedia<TSource>(\n  media?:\n    | DataExplorerDisplayMediaItem<TSource>\n    | Array<DataExplorerDisplayMediaItem<TSource>>,\n) {\n  if (!media) {\n    return [];\n  }\n  return Array.isArray(media) ? media.filter(Boolean) : [media];\n}\n\nfunction resolveMediaKind(value?: string) {\n  return String(value || 'unknown').toLowerCase();\n}\n\nexport function DataExplorerDisplayMedia<TSource = unknown>({\n  media,\n  fallbackTitle,\n  empty,\n  className,\n  classNames,\n  onOpen,\n}: DataExplorerDisplayMediaProps<TSource>) {\n  const mediaItems = normalizeMedia(media);\n  const primary = mediaItems[0];\n\n  if (!primary) {\n    if (!empty) {\n      return null;\n    }\n    return (\n      <div\n        className={cn(\n          'flex min-h-24 items-center justify-center bg-muted/30 text-sm text-muted-foreground',\n          classNames?.placeholder,\n          className,\n        )}\n      >\n        {empty}\n      </div>\n    );\n  }\n\n  if (primary.node) {\n    return (\n      <div\n        className={cn('min-w-0 overflow-hidden', classNames?.root, className)}\n      >\n        {primary.node}\n      </div>\n    );\n  }\n\n  const kind = resolveMediaKind(primary.kind);\n  const src = String(primary.src || primary.thumbnail || '').trim();\n  const title = primary.title ?? fallbackTitle;\n  const alt = primary.alt || (typeof title === 'string' ? title : 'preview');\n  const canOpen = typeof onOpen === 'function';\n  const mediaNode = (() => {\n    if (!src) {\n      return (\n        <div\n          className={cn(\n            'flex min-h-24 items-center justify-center bg-muted/30 text-sm text-muted-foreground',\n            classNames?.placeholder,\n          )}\n        >\n          {title || 'No preview'}\n        </div>\n      );\n    }\n\n    if (kind === 'image' || kind === 'unknown') {\n      return (\n        <img\n          src={src}\n          alt={alt}\n          className={cn('h-auto w-full object-contain', classNames?.media)}\n          loading=\"lazy\"\n          decoding=\"async\"\n          draggable={false}\n        />\n      );\n    }\n\n    if (kind === 'video') {\n      return (\n        <video\n          src={src}\n          className={cn('h-auto w-full', classNames?.media)}\n          controls\n          preload=\"metadata\"\n        />\n      );\n    }\n\n    if (kind === 'audio') {\n      return (\n        <audio\n          src={src}\n          className={cn('w-full', classNames?.media)}\n          controls\n          preload=\"metadata\"\n        />\n      );\n    }\n\n    return (\n      <div\n        className={cn(\n          'flex min-h-24 flex-col items-center justify-center gap-1 bg-muted/30 p-4 text-center text-sm text-muted-foreground',\n          classNames?.placeholder,\n        )}\n      >\n        {title ? (\n          <span className={cn('max-w-full truncate', classNames?.title)}>\n            {title}\n          </span>\n        ) : null}\n        <span className=\"max-w-full truncate\">{src}</span>\n      </div>\n    );\n  })();\n\n  if (!canOpen) {\n    return (\n      <div\n        className={cn('min-w-0 overflow-hidden', classNames?.root, className)}\n      >\n        {mediaNode}\n      </div>\n    );\n  }\n\n  return (\n    <button\n      type=\"button\"\n      className={cn(\n        'block min-w-0 overflow-hidden text-left',\n        classNames?.root,\n        className,\n      )}\n      onClick={() => onOpen?.(primary, 0)}\n    >\n      {mediaNode}\n    </button>\n  );\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport type { ReactNode } from 'react';\n\nimport { DataExplorerDisplayMedia } from './DataExplorerDisplayMedia';\nimport type {\n  DataExplorerDisplayBadge,\n  DataExplorerDisplayCardProps,\n  DataExplorerDisplayMetadata,\n  DataExplorerDisplayMediaItem,\n} from './types';\nimport { resolveDataExplorerAppearance } from './theme';\nimport { cn } from './utils';\n\nfunction isDisplayMedia<TSource>(\n  value: unknown,\n): value is\n  | DataExplorerDisplayMediaItem<TSource>\n  | Array<DataExplorerDisplayMediaItem<TSource>> {\n  if (!value) {\n    return false;\n  }\n  if (Array.isArray(value)) {\n    return value.every(\n      (item) =>\n        !!item &&\n        typeof item === 'object' &&\n        ('src' in item ||\n          'thumbnail' in item ||\n          'node' in item ||\n          'kind' in item),\n    );\n  }\n  return (\n    typeof value === 'object' &&\n    ('src' in value ||\n      'thumbnail' in value ||\n      'node' in value ||\n      'kind' in value)\n  );\n}\n\nfunction renderBadges(badges?: DataExplorerDisplayBadge[]) {\n  if (!badges?.length) {\n    return undefined;\n  }\n\n  return (\n    <>\n      {badges.map((badge, index) => (\n        <span\n          key={badge.id ?? index}\n          title={badge.title}\n          className={cn(\n            'inline-flex max-w-full items-center rounded-full border border-border/60 px-2 py-0.5 text-xs font-medium',\n            badge.tone === 'primary' && 'border-primary/30 bg-primary/10 text-primary',\n            badge.tone === 'success' && 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-[hsl(var(--success,142_72%_29%))]',\n            badge.tone === 'warning' && 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))]',\n            badge.tone === 'danger' && 'border-destructive/30 bg-destructive/10 text-destructive-text',\n            badge.tone === 'muted' && 'bg-muted text-muted-foreground',\n          )}\n        >\n          <span className=\"truncate\">{badge.label}</span>\n        </span>\n      ))}\n    </>\n  );\n}\n\nfunction renderMetadata(metadata?: DataExplorerDisplayMetadata[]) {\n  if (!metadata?.length) {\n    return undefined;\n  }\n\n  return (\n    <dl className=\"grid min-w-0 grid-cols-1 gap-2 text-xs sm:grid-cols-2\">\n      {metadata.map((entry, index) => (\n        <div key={entry.id ?? index} className=\"min-w-0\">\n          {entry.label ? (\n            <dt className=\"truncate text-muted-foreground\" title={entry.title}>\n              {entry.label}\n            </dt>\n          ) : null}\n          <dd className=\"mt-0.5 min-w-0 truncate text-foreground\">\n            {entry.value}\n          </dd>\n        </div>\n      ))}\n    </dl>\n  );\n}\n\nfunction renderKeywords(keywords?: ReactNode[]) {\n  if (!keywords?.length) {\n    return undefined;\n  }\n\n  return (\n    <div className=\"flex min-w-0 flex-wrap gap-1.5\">\n      {keywords.map((keyword, index) => (\n        <span\n          key={index}\n          className=\"max-w-full truncate rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground\"\n        >\n          {keyword}\n        </span>\n      ))}\n    </div>\n  );\n}\n\nexport function DataExplorerDisplayCard<TSource = unknown>({\n  item,\n  title = item?.title,\n  description = item?.description,\n  badges = renderBadges(item?.badges),\n  meta = item?.status,\n  actions,\n  media = item?.media,\n  header,\n  headerLeading,\n  headerContent,\n  overlay,\n  footer,\n  children,\n  selected = item?.selected,\n  disabled = item?.disabled,\n  interactive,\n  role,\n  tabIndex,\n  appearance,\n  className,\n  classNames,\n  onClick,\n  onKeyDown,\n}: DataExplorerDisplayCardProps<TSource>) {\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const resolvedInteractive = interactive ?? Boolean(onClick || onKeyDown);\n  const hasDefaultHeader = Boolean(\n    headerLeading ||\n      headerContent ||\n      title ||\n      description ||\n      badges ||\n      meta ||\n      actions,\n  );\n  const hasHeader = header !== undefined ? Boolean(header) : hasDefaultHeader;\n  const renderedMedia = isDisplayMedia<TSource>(media) ? (\n    <DataExplorerDisplayMedia media={media} fallbackTitle={title} />\n  ) : (\n    media\n  );\n  const defaultMetadata = renderMetadata(item?.metadata);\n  const defaultKeywords = renderKeywords(item?.keywords);\n  const resolvedChildren =\n    children !== undefined\n      ? children\n      : defaultMetadata || defaultKeywords ? (\n          <>\n            {defaultMetadata}\n            {defaultKeywords}\n          </>\n        )\n      : undefined;\n  const hasBody = Boolean(resolvedChildren);\n\n  return (\n    <article\n      className={cn(\n        theme.slots.cardRoot,\n        resolvedInteractive && !disabled && theme.slots.cardInteractive,\n        selected && theme.slots.cardSelected,\n        disabled && theme.slots.cardDisabled,\n        classNames?.root,\n        className,\n      )}\n      aria-disabled={disabled || undefined}\n      role={role}\n      tabIndex={tabIndex}\n      style={theme.styles.cardRoot}\n      onClick={disabled ? undefined : onClick}\n      onKeyDown={disabled ? undefined : onKeyDown}\n    >\n      {overlay ? (\n        <div className={cn(classNames?.overlay)}>{overlay}</div>\n      ) : null}\n\n      {hasHeader ? (\n        <div className={cn(theme.slots.cardHeader, classNames?.header)}>\n          {header !== undefined ? (\n            header\n          ) : (\n            <div\n              className={cn(\n                'flex min-w-0 items-start justify-between gap-3',\n                classNames?.headerMain,\n              )}\n            >\n              {headerLeading ? (\n                <div\n                  className={cn(\n                    'flex shrink-0 items-center gap-2',\n                    classNames?.headerLeading,\n                  )}\n                >\n                  {headerLeading}\n                </div>\n              ) : null}\n\n              <div className={cn('min-w-0 flex-1', classNames?.headerContent)}>\n                {headerContent ?? (\n                  <>\n                    {title ? (\n                      <div\n                        className={cn(\n                          'truncate text-sm font-semibold leading-none text-foreground',\n                          classNames?.title,\n                        )}\n                      >\n                        {title}\n                      </div>\n                    ) : null}\n                    {description ? (\n                      <div\n                        className={cn(\n                          'mt-1 min-w-0 text-sm text-muted-foreground [overflow-wrap:anywhere]',\n                          classNames?.description,\n                        )}\n                      >\n                        {description}\n                      </div>\n                    ) : null}\n                    {badges ? (\n                      <div\n                        className={cn(\n                          'mt-2 flex flex-wrap items-center gap-2',\n                          classNames?.badges,\n                        )}\n                      >\n                        {badges}\n                      </div>\n                    ) : null}\n                  </>\n                )}\n              </div>\n\n              {meta || actions ? (\n                <div className=\"flex min-w-0 items-center gap-2\">\n                  {meta ? (\n                    <div\n                      className={cn(\n                        'min-w-0 max-w-[12rem] truncate text-sm text-muted-foreground',\n                        classNames?.meta,\n                      )}\n                    >\n                      {meta}\n                    </div>\n                  ) : null}\n                  {actions ? (\n                    <div\n                      className={cn(\n                        'flex shrink-0 items-center gap-2',\n                        classNames?.actions,\n                      )}\n                    >\n                      {actions}\n                    </div>\n                  ) : null}\n                </div>\n              ) : null}\n            </div>\n          )}\n        </div>\n      ) : null}\n\n      {renderedMedia ? (\n        <div className={cn(theme.slots.cardMedia, classNames?.media)}>\n          {renderedMedia}\n        </div>\n      ) : null}\n\n      {hasBody ? (\n        <div className={cn('min-w-0 px-4 pb-4', classNames?.body)}>\n          {resolvedChildren}\n        </div>\n      ) : null}\n\n      {footer ? (\n        <div\n          className={cn(\n            theme.slots.cardFooter,\n            classNames?.footer,\n          )}\n        >\n          {footer}\n        </div>\n      ) : null}\n    </article>\n  );\n}\n","import type { DataExplorerViewItemShellProps } from './types';\nimport { cn } from './utils';\n\nexport function DataExplorerViewItemShell({\n  media,\n  title,\n  description,\n  meta,\n  badges,\n  actions,\n  footer,\n  children,\n  className,\n  classNames,\n}: DataExplorerViewItemShellProps) {\n  const hasHeader =\n    !!title || !!description || !!meta || !!badges || !!actions;\n\n  return (\n    <article\n      className={cn(\n        'flex min-w-0 flex-col overflow-hidden rounded-lg border border-border/60 bg-background',\n        classNames?.root,\n        className,\n      )}\n    >\n      {media ? (\n        <div className={cn('shrink-0 overflow-hidden', classNames?.media)}>\n          {media}\n        </div>\n      ) : null}\n\n      {hasHeader ? (\n        <div className={cn('flex flex-col gap-3 p-4', classNames?.header)}>\n          <div className=\"flex items-start justify-between gap-3\">\n            <div className=\"min-w-0 flex-1\">\n              {title ? (\n                <div\n                  className={cn(\n                    'truncate text-sm font-semibold text-foreground',\n                    classNames?.title,\n                  )}\n                >\n                  {title}\n                </div>\n              ) : null}\n\n              {description ? (\n                <div\n                  className={cn(\n                    'mt-1 text-sm text-muted-foreground',\n                    classNames?.description,\n                  )}\n                >\n                  {description}\n                </div>\n              ) : null}\n            </div>\n\n            {(meta || actions) ? (\n              <div className=\"flex shrink-0 items-center gap-2\">\n                {meta ? (\n                  <div className={cn('text-sm text-muted-foreground', classNames?.meta)}>\n                    {meta}\n                  </div>\n                ) : null}\n\n                {actions ? (\n                  <div className={cn('flex items-center gap-2', classNames?.actions)}>\n                    {actions}\n                  </div>\n                ) : null}\n              </div>\n            ) : null}\n          </div>\n\n          {badges ? (\n            <div className={cn('flex flex-wrap items-center gap-2', classNames?.badges)}>\n              {badges}\n            </div>\n          ) : null}\n        </div>\n      ) : null}\n\n      {children ? (\n        <div className={cn('min-w-0 px-4 pb-4', classNames?.body)}>{children}</div>\n      ) : null}\n\n      {footer ? (\n        <div className={cn('shrink-0 border-t border-border/60 px-4 py-3', classNames?.footer)}>\n          {footer}\n        </div>\n      ) : null}\n    </article>\n  );\n}\n","import type { ComponentProps } from 'react';\n\nimport type { DataExplorerViewItemProps } from './types';\nimport { DataExplorerViewItemShell } from './DataExplorerViewItemShell';\n\nexport function DataExplorerViewItem<TItem = unknown, TContext = unknown>(\n  props: DataExplorerViewItemProps<TItem, TContext>,\n) {\n  const { item, index, itemId, context, capabilities, itemDefinition, className, selected, actions, onOpen, onSelectionChange } =\n    props;\n\n  if (itemDefinition?.render) {\n    return <>{itemDefinition.render(props)}</>;\n  }\n\n  const resolvedShellProps =\n    typeof itemDefinition?.shellProps === 'function'\n      ? itemDefinition.shellProps({\n          item,\n          index,\n          itemId,\n          context,\n          capabilities,\n          itemDefinition,\n          className,\n          selected,\n          actions,\n          onOpen,\n          onSelectionChange,\n        })\n      : itemDefinition?.shellProps;\n\n  return (\n    <DataExplorerViewItemShell\n      {...(resolvedShellProps as Partial<ComponentProps<typeof DataExplorerViewItemShell>> | undefined)}\n      className={className}\n    />\n  );\n}\n","import {\n  Fragment,\n  useCallback,\n  useEffect,\n  useRef,\n  useState,\n  type CSSProperties,\n} from 'react';\n\nimport { DataExplorerViewItem } from './DataExplorerViewItem';\nimport type {\n  DataExplorerViewCollectionLayout,\n  DataExplorerViewCollectionProps,\n  DataExplorerViewId,\n  DataExplorerViewItemProps,\n} from './types';\nimport { cn } from './utils';\n\nfunction getItemsClassName(layout?: DataExplorerViewCollectionLayout) {\n  switch (layout) {\n    case 'list':\n      return 'flex min-h-0 flex-col gap-3';\n    case 'waterfall':\n      return 'columns-1 gap-4 sm:columns-2 lg:columns-3';\n    case 'grid':\n    default:\n      return 'grid min-h-0 gap-4';\n  }\n}\n\nfunction getDefaultItemClassName(layout?: DataExplorerViewCollectionLayout) {\n  if (layout === 'waterfall') {\n    return 'mb-4 break-inside-avoid';\n  }\n\n  return undefined;\n}\n\nfunction defaultResolveItemId<TItem>(_item: TItem, index: number) {\n  return String(index);\n}\n\nfunction resolveMeasuredGridMinColumnWidth(width: number | string) {\n  if (typeof width === 'number') {\n    return `${resolvePositiveNumber(width, 220)}px`;\n  }\n\n  return width;\n}\n\nfunction resolveMeasuredGridSpan(height: number, rowHeight: number, gap: number) {\n  return Math.max(1, Math.ceil((height + gap) / (rowHeight + gap)));\n}\n\nfunction resolvePositiveNumber(value: number | undefined, fallback: number) {\n  return typeof value === 'number' && Number.isFinite(value) && value > 0\n    ? value\n    : fallback;\n}\n\nfunction resolveNonNegativeNumber(value: number | undefined, fallback: number) {\n  return typeof value === 'number' && Number.isFinite(value) && value >= 0\n    ? value\n    : fallback;\n}\n\nexport function DataExplorerViewCollection<\n  TItem = unknown,\n  TContext = unknown,\n  TViewId extends DataExplorerViewId = DataExplorerViewId,\n>({\n  items,\n  activeViewId,\n  context,\n  capabilities,\n  className,\n  classNames,\n  empty,\n  loading,\n  loadingNode,\n  footer,\n  overlay,\n  layout = 'grid',\n  scrollable = true,\n  wrapItems = true,\n  measuredGrid,\n  itemsStyle,\n  itemStyle,\n  selectedIds = [],\n  getItemId,\n  itemDefinition,\n  renderItem,\n  getItemClassName,\n  onOpenItem,\n  onSelectionChange,\n}: DataExplorerViewCollectionProps<TItem, TContext, TViewId>) {\n  const resolvedItems = Array.isArray(items) ? items : [];\n  const selectedIdSet = new Set(selectedIds);\n  const resolveItemId = getItemId ?? defaultResolveItemId;\n  const measuredGridOptions =\n    measuredGrid === true\n      ? {}\n      : measuredGrid && typeof measuredGrid === 'object'\n        ? measuredGrid\n        : undefined;\n  const measuredGridEnabled =\n    layout === 'grid' && Boolean(measuredGridOptions?.enabled ?? measuredGrid);\n  const measuredGridRowHeight = resolvePositiveNumber(\n    measuredGridOptions?.rowHeight,\n    4,\n  );\n  const measuredGridGap = resolveNonNegativeNumber(measuredGridOptions?.gap, 8);\n  const measuredGridMinColumnWidth = measuredGridOptions?.minColumnWidth ?? '220px';\n  const measuredElementsRef = useRef<Map<string, HTMLDivElement>>(new Map());\n  const measuredCallbacksRef = useRef<\n    Map<string, (node: HTMLDivElement | null) => void>\n  >(new Map());\n  const measuredSpansRef = useRef<Map<string, number>>(new Map());\n  const resizeObserverRef = useRef<ResizeObserver | null>(null);\n  const [, setMeasuredLayoutVersion] = useState(0);\n  const resolveItemStyle =\n    typeof itemStyle === 'function'\n      ? (props: DataExplorerViewItemProps<TItem, TContext>) => itemStyle(props)\n      : () => itemStyle;\n\n  useEffect(() => {\n    if (!measuredGridEnabled || typeof ResizeObserver === 'undefined') {\n      return undefined;\n    }\n\n    const resizeObserver = new ResizeObserver((entries) => {\n      let changed = false;\n\n      for (const entry of entries) {\n        const target = entry.target as HTMLDivElement;\n        const id = target.dataset.dataExplorerItemId;\n        if (!id) continue;\n\n        const height = Math.ceil(entry.contentRect.height);\n        const span = resolveMeasuredGridSpan(\n          height,\n          measuredGridRowHeight,\n          measuredGridGap,\n        );\n\n        if (measuredSpansRef.current.get(id) !== span) {\n          measuredSpansRef.current.set(id, span);\n          changed = true;\n        }\n      }\n\n      if (changed) {\n        setMeasuredLayoutVersion((version) => version + 1);\n      }\n    });\n\n    resizeObserverRef.current = resizeObserver;\n    for (const element of measuredElementsRef.current.values()) {\n      resizeObserver.observe(element);\n    }\n\n    return () => {\n      resizeObserver.disconnect();\n      if (resizeObserverRef.current === resizeObserver) {\n        resizeObserverRef.current = null;\n      }\n    };\n  }, [measuredGridEnabled, measuredGridGap, measuredGridRowHeight]);\n\n  useEffect(() => {\n    if (!measuredGridEnabled) {\n      measuredElementsRef.current.clear();\n      measuredCallbacksRef.current.clear();\n      measuredSpansRef.current.clear();\n      return;\n    }\n\n    const ids = new Set(resolvedItems.map((item, index) => resolveItemId(item, index)));\n    let changed = false;\n\n    for (const id of measuredSpansRef.current.keys()) {\n      if (ids.has(id)) continue;\n      measuredSpansRef.current.delete(id);\n      changed = true;\n    }\n\n    for (const [id, element] of measuredElementsRef.current.entries()) {\n      if (ids.has(id)) continue;\n      resizeObserverRef.current?.unobserve(element);\n      measuredElementsRef.current.delete(id);\n    }\n\n    for (const id of measuredCallbacksRef.current.keys()) {\n      if (ids.has(id)) continue;\n      measuredCallbacksRef.current.delete(id);\n    }\n\n    if (changed) {\n      setMeasuredLayoutVersion((version) => version + 1);\n    }\n  }, [measuredGridEnabled, resolvedItems, resolveItemId]);\n\n  const getMeasuredRef = useCallback((itemId: string) => {\n    const cached = measuredCallbacksRef.current.get(itemId);\n    if (cached) return cached;\n\n    const callback = (node: HTMLDivElement | null) => {\n      const previous = measuredElementsRef.current.get(itemId);\n      if (previous && previous !== node) {\n        resizeObserverRef.current?.unobserve(previous);\n        measuredElementsRef.current.delete(itemId);\n      }\n\n      if (node) {\n        node.dataset.dataExplorerItemId = itemId;\n        measuredElementsRef.current.set(itemId, node);\n        resizeObserverRef.current?.observe(node);\n      }\n    };\n\n    measuredCallbacksRef.current.set(itemId, callback);\n    return callback;\n  }, []);\n\n  const getMeasuredGridSpan = (props: DataExplorerViewItemProps<TItem, TContext>) => {\n    const itemId = props.itemId;\n    if (itemId) {\n      const measured = measuredSpansRef.current.get(itemId);\n      if (measured) return measured;\n    }\n\n    const estimate = measuredGridOptions?.estimateItemHeight;\n    const rawEstimatedHeight =\n      typeof estimate === 'function'\n        ? estimate(props)\n        : typeof estimate === 'number'\n          ? estimate\n          : 240;\n    const estimatedHeight = resolvePositiveNumber(rawEstimatedHeight, 240);\n\n    return resolveMeasuredGridSpan(\n      estimatedHeight,\n      measuredGridRowHeight,\n      measuredGridGap,\n    );\n  };\n\n  const resolveMeasuredItemsStyle = (): CSSProperties | undefined => {\n    if (!measuredGridEnabled) return itemsStyle;\n\n    return {\n      ...itemsStyle,\n      gap: measuredGridGap,\n      gridAutoFlow: 'dense',\n      gridAutoRows: measuredGridRowHeight,\n      gridTemplateColumns: `repeat(auto-fill, minmax(${resolveMeasuredGridMinColumnWidth(measuredGridMinColumnWidth)}, 1fr))`,\n    };\n  };\n\n  const renderStatus = () => {\n    if (loading && loadingNode) {\n      return (\n        <div className={cn('flex items-center justify-center p-6 text-sm text-muted-foreground', classNames?.loading)}>\n          {loadingNode}\n        </div>\n      );\n    }\n\n    if (!empty) {\n      return null;\n    }\n\n    return (\n      <div className={cn('flex items-center justify-center p-6 text-sm text-muted-foreground', classNames?.empty)}>\n        {empty}\n      </div>\n    );\n  };\n\n  const handleSelectionChange = (\n    targetItem: TItem,\n    targetIndex: number,\n    targetItemId: string,\n    nextSelected: boolean,\n  ) => {\n    if (!onSelectionChange) {\n      return;\n    }\n\n    const resolvedTargetId = getItemId ? getItemId(targetItem, targetIndex) : targetItemId;\n    const nextSelectedIds = nextSelected\n      ? Array.from(new Set([...selectedIds, resolvedTargetId]))\n      : selectedIds.filter((id) => id !== resolvedTargetId);\n\n    onSelectionChange(nextSelectedIds);\n  };\n\n  if (resolvedItems.length === 0 && !footer && !overlay) {\n    return renderStatus();\n  }\n\n  return (\n    <div\n      className={cn('relative flex min-h-0 flex-1 flex-col overflow-hidden', classNames?.root, className)}\n      data-view-id={activeViewId || undefined}\n    >\n      {resolvedItems.length > 0 ? (\n        <div\n          className={cn(getItemsClassName(layout), scrollable && 'overflow-auto', classNames?.items)}\n          style={resolveMeasuredItemsStyle()}\n        >\n          {resolvedItems.map((item, index) => {\n            const itemId = resolveItemId(item, index);\n            const selected = selectedIdSet.has(itemId);\n            const selectionChange = (targetItem: TItem, nextSelected: boolean) => {\n              handleSelectionChange(targetItem, index, itemId, nextSelected);\n            };\n            const itemProps: DataExplorerViewItemProps<TItem, TContext> = {\n              item,\n              index,\n              itemId,\n              context,\n              capabilities,\n              itemDefinition,\n              selected,\n              onOpen: onOpenItem,\n              onSelectionChange: selectionChange,\n            };\n            const itemClassName = cn(\n              getDefaultItemClassName(layout),\n              classNames?.item,\n              getItemClassName?.({\n                ...itemProps,\n                className: classNames?.item,\n              }),\n            );\n            const currentItemProps = {\n              ...itemProps,\n              className: itemClassName,\n            };\n            const renderedItem = renderItem ? renderItem(currentItemProps) : <DataExplorerViewItem {...currentItemProps} />;\n            const resolvedStyle = resolveItemStyle(currentItemProps);\n            const measuredStyle = measuredGridEnabled\n              ? {\n                  ...resolvedStyle,\n                  gridRowEnd: `span ${getMeasuredGridSpan(currentItemProps)}`,\n                }\n              : resolvedStyle;\n\n            if (!wrapItems) {\n              if (!measuredGridEnabled) {\n                return <Fragment key={itemId}>{renderedItem}</Fragment>;\n              }\n\n              return (\n                <div key={itemId} className={itemClassName} style={measuredStyle}>\n                  <div ref={getMeasuredRef(itemId)}>{renderedItem}</div>\n                </div>\n              );\n            }\n\n            return (\n              <div key={itemId} className={itemClassName} style={measuredStyle}>\n                {measuredGridEnabled ? (\n                  <div ref={getMeasuredRef(itemId)}>{renderedItem}</div>\n                ) : (\n                  renderedItem\n                )}\n              </div>\n            );\n          })}\n        </div>\n      ) : (\n        renderStatus()\n      )}\n\n      {loading && loadingNode && resolvedItems.length > 0 ? (\n        <div className={cn('shrink-0 p-3 text-sm text-muted-foreground', classNames?.loading)}>{loadingNode}</div>\n      ) : null}\n\n      {footer ? <div className={cn('shrink-0', classNames?.footer)}>{footer}</div> : null}\n\n      {overlay ? <div className={cn('absolute inset-0 z-10', classNames?.overlay)}>{overlay}</div> : null}\n    </div>\n  );\n}\n","import 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 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 { 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 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 { JsonObject, JsonValue } from \"@inf-monkeys-tech/monkeys\";\nimport {\n  useEffect,\n  useMemo,\n  useState,\n  type CSSProperties,\n  type KeyboardEvent as ReactKeyboardEvent,\n  type ReactNode,\n} from \"react\";\nimport {\n  ChevronRight,\n  Filter,\n  ImageOff,\n  Loader2,\n  RefreshCw,\n} from \"lucide-react\";\n\nimport {\n  BaseBadge,\n  BaseButton,\n  BaseField,\n  BaseInline,\n  BaseInput,\n  BaseMultiSelect,\n  BaseStack,\n  BaseTable,\n  BaseTableBody,\n  BaseTableCell,\n  BaseTableContainer,\n  BaseTableHead,\n  BaseTableHeader,\n  BaseTableRow,\n  BaseToolbar,\n} from \"../base\";\nimport { DataExplorerCollectionFooter } from \"../data-explorer\";\nimport {\n  Badge,\n  badgeVariants,\n  Button,\n  Checkbox,\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n  Input,\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"../primitives\";\nimport { CapabilityStatus } from \"./CapabilityStatus\";\nimport type {\n  CapabilityTranslate,\n  DesignCapabilityRenderer,\n} from \"./contracts\";\nimport { isJsonObject } from \"./contracts\";\nimport { DESIGN_CAPABILITY_I18N_KEYS } from \"./i18n\";\n\nconst JSON_SCHEMA_DIALECT = \"https://json-schema.org/draft/2020-12/schema\";\nconst MAX_MATRIX_COLUMNS = 64;\nconst MAX_MATRIX_WINDOW_ROWS = 200;\nconst MAX_CONTEXT_VALUES = 50;\nconst MAX_CONTEXT_PANELS = 50;\nconst MAX_VISIBLE_CONTEXT_VALUES = 3;\nconst MAX_SAFE_TEXT_LENGTH = 128;\nconst MAX_SAFE_JSON_DEPTH = 8;\nconst MAX_SAFE_JSON_ITEMS = 100;\nconst MAX_SAFE_JSON_PROPERTIES = 100;\nconst MAX_SAFE_JSON_STRING_LENGTH = 4096;\n\nconst strictSchema = (id: string, definition: JsonObject): JsonObject => ({\n  $schema: JSON_SCHEMA_DIALECT,\n  $id: id,\n  ...definition,\n});\n\nconst safeTextSchema: JsonObject = {\n  type: \"string\",\n  maxLength: MAX_SAFE_TEXT_LENGTH,\n};\n\nconst safeIdSchema: JsonObject = {\n  type: \"string\",\n  minLength: 1,\n  maxLength: MAX_SAFE_TEXT_LENGTH,\n};\n\nconst localizedLabelSchema: JsonObject = {\n  label: safeTextSchema,\n  labelKey: safeIdSchema,\n};\n\nconst safeScalarSchema: JsonObject = {\n  type: [\"string\", \"number\", \"boolean\", \"null\"],\n};\n\nconst safeJsonValueDefinitions = Object.fromEntries(\n  Array.from({ length: MAX_SAFE_JSON_DEPTH + 1 }, (_, depth) => {\n    const key = `safeJsonValue${depth}`;\n    const scalar: JsonObject = {\n      oneOf: [\n        { type: \"string\", maxLength: MAX_SAFE_JSON_STRING_LENGTH },\n        { type: \"number\" },\n        { type: \"boolean\" },\n        { type: \"null\" },\n      ],\n    };\n    if (depth === 0) return [key, scalar];\n    const childRef = { $ref: `#/$defs/safeJsonValue${depth - 1}` };\n    return [\n      key,\n      {\n        oneOf: [\n          { $ref: \"#/$defs/safeJsonValue0\" },\n          {\n            type: \"array\",\n            maxItems: MAX_SAFE_JSON_ITEMS,\n            items: childRef,\n          },\n          {\n            type: \"object\",\n            maxProperties: MAX_SAFE_JSON_PROPERTIES,\n            propertyNames: {\n              type: \"string\",\n              pattern: \"^(?!(__proto__|constructor|prototype)$).{1,128}$\",\n            },\n            additionalProperties: childRef,\n          },\n        ],\n      },\n    ];\n  }),\n) as JsonObject;\n\nconst safeJsonValueSchema: JsonObject = {\n  $ref: `#/$defs/safeJsonValue${MAX_SAFE_JSON_DEPTH}`,\n};\n\nconst withSafeJsonValueDefinitions = (schema: JsonObject): JsonObject => ({\n  ...schema,\n  $defs: safeJsonValueDefinitions,\n});\n\nexport const ONTOLOGY_TREND_MATRIX_SCHEMA =\n  \"monkeys-design://ontology-view/trend-matrix/v1\";\nexport const DATA_CONTEXT_BAR_SCHEMA =\n  \"monkeys-design://render-model/data-context-bar/v2\";\n\nexport const ONTOLOGY_TREND_MATRIX_RENDER_MODEL_SCHEMA = strictSchema(\n  ONTOLOGY_TREND_MATRIX_SCHEMA,\n  {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"state\", \"columns\", \"rows\", \"window\"],\n    properties: {\n      ...localizedLabelSchema,\n      presentation: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"kind\"],\n        properties: { kind: { enum: [\"legacy-data-explorer\"] } },\n      },\n      sources: {\n        type: \"array\",\n        maxItems: 4,\n        items: {\n          type: \"object\",\n          additionalProperties: false,\n          required: [\"id\", \"generatedImages\"],\n          properties: {\n            id: safeIdSchema,\n            sourceRecordId: safeIdSchema,\n            generationRecordId: safeIdSchema,\n            image: {\n              type: \"object\",\n              additionalProperties: false,\n              required: [\"url\"],\n              properties: {\n                url: { type: \"string\", minLength: 1, maxLength: 4096 },\n                thumbnailUrl: { type: \"string\", minLength: 1, maxLength: 4096 },\n              },\n            },\n            generatedImages: {\n              type: \"array\",\n              maxItems: 4,\n              items: {\n                type: \"object\",\n                additionalProperties: false,\n                required: [\"url\"],\n                properties: {\n                  url: { type: \"string\", minLength: 1, maxLength: 4096 },\n                  thumbnailUrl: {\n                    type: \"string\",\n                    minLength: 1,\n                    maxLength: 4096,\n                  },\n                  recordId: safeIdSchema,\n                },\n              },\n            },\n          },\n        },\n      },\n      state: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"kind\"],\n        properties: {\n          kind: { enum: [\"ready\", \"loading\", \"empty\", \"error\"] },\n          code: safeIdSchema,\n        },\n      },\n      columns: {\n        type: \"array\",\n        maxItems: MAX_MATRIX_COLUMNS,\n        items: {\n          type: \"object\",\n          additionalProperties: false,\n          required: [\"id\", \"valueType\"],\n          properties: {\n            id: safeIdSchema,\n            ...localizedLabelSchema,\n            valueType: { enum: [\"number\", \"string\", \"boolean\"] },\n            align: { enum: [\"left\", \"center\", \"right\"] },\n          },\n        },\n      },\n      rows: {\n        type: \"array\",\n        maxItems: MAX_MATRIX_WINDOW_ROWS,\n        items: {\n          type: \"object\",\n          additionalProperties: false,\n          required: [\"id\", \"recordId\", \"cells\"],\n          properties: {\n            id: safeIdSchema,\n            recordId: safeIdSchema,\n            ...localizedLabelSchema,\n            cells: {\n              type: \"array\",\n              maxItems: MAX_MATRIX_COLUMNS,\n              items: {\n                type: \"object\",\n                additionalProperties: false,\n                required: [\"columnId\", \"value\"],\n                properties: {\n                  columnId: safeIdSchema,\n                  value: safeScalarSchema,\n                  displayValue: safeTextSchema,\n                },\n              },\n            },\n          },\n        },\n      },\n      selectedCell: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"rowId\", \"columnId\"],\n        properties: { rowId: safeIdSchema, columnId: safeIdSchema },\n      },\n      window: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"rowOffset\", \"rowCount\", \"totalRows\"],\n        properties: {\n          rowOffset: { type: \"integer\", minimum: 0 },\n          rowCount: {\n            type: \"integer\",\n            minimum: 0,\n            maximum: MAX_MATRIX_WINDOW_ROWS,\n          },\n          totalRows: { type: \"integer\", minimum: 0 },\n        },\n      },\n      pagination: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"hasMore\", \"nextCursor\", \"loadingMore\"],\n        properties: {\n          hasMore: { type: \"boolean\" },\n          nextCursor: { type: [\"string\", \"null\"] },\n          loadingMore: { type: \"boolean\" },\n          errorCode: safeIdSchema,\n          pageSize: { type: \"integer\", minimum: 1 },\n          returned: { type: \"integer\", minimum: 0 },\n          total: { type: \"integer\", minimum: 0 },\n          loadedCount: { type: \"integer\", minimum: 0 },\n          loadedStart: { type: \"integer\", minimum: 0 },\n          loadedEnd: { type: \"integer\", minimum: 0 },\n        },\n      },\n    },\n  },\n);\n\nexport const ONTOLOGY_TREND_MATRIX_SELECT_INTENT_SCHEMA = strictSchema(\n  \"monkeys-design://intent/ontology-trend-matrix-select/v1\",\n  {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"recordId\"],\n    properties: {\n      recordId: safeIdSchema,\n      rowId: safeIdSchema,\n      columnId: safeIdSchema,\n      value: safeScalarSchema,\n    },\n  },\n);\n\nconst contextFieldNames = [\n  \"search\",\n  \"tagIds\",\n  \"tagGroupIds\",\n  \"timeFrom\",\n  \"timeTo\",\n  \"clickedField\",\n  \"clickedValue\",\n  \"dashboardDrilldown\",\n] as const;\n\nconst contextFieldSchema: JsonObject = { enum: [...contextFieldNames] };\nconst stringListSchema: JsonObject = {\n  type: \"array\",\n  uniqueItems: true,\n  maxItems: MAX_CONTEXT_VALUES,\n  items: safeIdSchema,\n};\n\nconst contextChoiceListSchema: JsonObject = {\n  type: \"array\",\n  maxItems: MAX_CONTEXT_VALUES,\n  items: {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"id\"],\n    properties: {\n      id: safeIdSchema,\n      label: safeTextSchema,\n      labelKey: safeIdSchema,\n      disabled: { type: \"boolean\" },\n    },\n  },\n};\n\nconst contextTagChoiceListSchema: JsonObject = {\n  type: \"array\",\n  maxItems: MAX_CONTEXT_VALUES,\n  items: {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"id\"],\n    properties: {\n      id: safeIdSchema,\n      label: safeTextSchema,\n      labelKey: safeIdSchema,\n      disabled: { type: \"boolean\" },\n      color: safeTextSchema,\n      groupId: safeIdSchema,\n      groupLabel: safeTextSchema,\n      count: { type: \"integer\", minimum: 0 },\n    },\n  },\n};\n\nconst contextTagPanelListSchema: JsonObject = {\n  type: \"array\",\n  maxItems: MAX_CONTEXT_PANELS,\n  items: {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"id\", \"groups\"],\n    properties: {\n      id: safeIdSchema,\n      label: safeTextSchema,\n      description: safeTextSchema,\n      groups: {\n        type: \"array\",\n        maxItems: MAX_CONTEXT_VALUES,\n        items: {\n          type: \"object\",\n          additionalProperties: false,\n          required: [\"id\", \"tags\"],\n          properties: {\n            id: safeIdSchema,\n            label: safeTextSchema,\n            description: safeTextSchema,\n            selectMode: { enum: [\"single\", \"multiple\"] },\n            tags: contextTagChoiceListSchema,\n          },\n        },\n      },\n    },\n  },\n};\n\nconst filterSnapshotProperties: JsonObject = {\n  search: safeTextSchema,\n  tagIds: stringListSchema,\n  tagGroupIds: stringListSchema,\n  timeFrom: safeTextSchema,\n  timeTo: safeTextSchema,\n  clickedField: safeTextSchema,\n  clickedValue: safeJsonValueSchema,\n  dashboardDrilldown: safeJsonValueSchema,\n};\n\nexport const DATA_CONTEXT_BAR_RENDER_MODEL_SCHEMA =\n  withSafeJsonValueDefinitions(\n    strictSchema(DATA_CONTEXT_BAR_SCHEMA, {\n      type: \"object\",\n      additionalProperties: false,\n      required: [...contextFieldNames],\n      properties: {\n        ...filterSnapshotProperties,\n        presentation: { enum: [\"inline\", \"compact\", \"legacy-data-explorer\"] },\n        disabled: { type: \"boolean\" },\n        labelKey: safeIdSchema,\n        ariaLabelKey: safeIdSchema,\n        enabledFields: {\n          type: \"array\",\n          uniqueItems: true,\n          maxItems: contextFieldNames.length,\n          items: contextFieldSchema,\n        },\n        tagChoices: contextTagChoiceListSchema,\n        viewTagChoices: contextTagChoiceListSchema,\n        tagGroupChoices: contextChoiceListSchema,\n        tagPanelChoices: contextTagPanelListSchema,\n        viewScoped: { type: \"boolean\" },\n      },\n    }),\n  );\n\nexport const DATA_CONTEXT_BAR_CLEAR_INTENT_SCHEMA =\n  withSafeJsonValueDefinitions(\n    strictSchema(\"monkeys-design://intent/data-context-bar-clear/v1\", {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"clearedField\", ...contextFieldNames],\n      properties: {\n        clearedField: { enum: [\"all\", ...contextFieldNames] },\n        ...filterSnapshotProperties,\n      },\n    }),\n  );\n\nexport const DATA_CONTEXT_BAR_CHANGE_INTENT_SCHEMA =\n  withSafeJsonValueDefinitions(\n    strictSchema(\"monkeys-design://intent/data-context-bar-change/v1\", {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"changedField\", ...contextFieldNames],\n      properties: {\n        changedField: contextFieldSchema,\n        ...filterSnapshotProperties,\n      },\n    }),\n  );\n\nexport const DATA_CONTEXT_BAR_REFRESH_INTENT_SCHEMA = strictSchema(\n  \"monkeys-design://intent/data-context-bar-refresh/v1\",\n  {\n    type: \"object\",\n    additionalProperties: false,\n  },\n);\n\nconst stringValue = (value: JsonValue | undefined) =>\n  typeof value === \"string\" && value.trim() ? value : undefined;\n\nconst objectArray = (value: JsonValue | undefined): JsonObject[] =>\n  Array.isArray(value) ? value.filter(isJsonObject) : [];\n\nconst stringArray = (value: JsonValue | undefined): string[] =>\n  Array.isArray(value)\n    ? value.filter((item): item is string => typeof item === \"string\")\n    : [];\n\nconst scalarValue = (\n  value: JsonValue | undefined,\n): string | number | boolean | null | undefined =>\n  value === null ||\n  typeof value === \"string\" ||\n  typeof value === \"number\" ||\n  typeof value === \"boolean\"\n    ? value\n    : undefined;\n\nconst jsonScalar = (value: JsonValue | undefined): JsonValue =>\n  scalarValue(value) === undefined ? null : scalarValue(value) ?? null;\n\nconst isSafeJsonValue = (\n  value: JsonValue | undefined,\n  depth = 0,\n): value is JsonValue => {\n  if (value === null || typeof value === \"boolean\") return true;\n  if (typeof value === \"number\") return Number.isFinite(value);\n  if (typeof value === \"string\")\n    return value.length <= MAX_SAFE_JSON_STRING_LENGTH;\n  if (depth >= MAX_SAFE_JSON_DEPTH) return false;\n  if (Array.isArray(value))\n    return (\n      value.length <= MAX_SAFE_JSON_ITEMS &&\n      value.every((item) => isSafeJsonValue(item, depth + 1))\n    );\n  if (!isJsonObject(value)) return false;\n  const entries = Object.entries(value);\n  return (\n    entries.length <= MAX_SAFE_JSON_PROPERTIES &&\n    entries.every(\n      ([key, item]) =>\n        key.length > 0 &&\n        key.length <= MAX_SAFE_TEXT_LENGTH &&\n        ![\"__proto__\", \"constructor\", \"prototype\"].includes(key) &&\n        isSafeJsonValue(item, depth + 1),\n    )\n  );\n};\n\nconst governedJsonValue = (value: JsonValue | undefined): JsonValue =>\n  isSafeJsonValue(value) ? value : null;\n\nconst displayScalar = (value: JsonValue | undefined): string => {\n  const scalar = scalarValue(value);\n  if (scalar === null) return \"—\";\n  if (scalar === undefined) return \"\";\n  return String(scalar).slice(0, MAX_SAFE_TEXT_LENGTH);\n};\n\nconst displayJsonSummary = (value: JsonValue | undefined): string => {\n  const scalar = scalarValue(value);\n  if (scalar !== undefined) return displayScalar(scalar);\n  if (!isSafeJsonValue(value)) return \"\";\n  try {\n    return JSON.stringify(value).slice(0, MAX_SAFE_TEXT_LENGTH);\n  } catch {\n    return \"\";\n  }\n};\n\nconst translatedCopy = (\n  value: JsonValue | undefined,\n  key: JsonValue | undefined,\n  translate: CapabilityTranslate,\n  fallback: string,\n): ReactNode => {\n  const labelKey = stringValue(key);\n  if (labelKey) return translate(labelKey);\n  return stringValue(value) ?? fallback;\n};\n\nconst cellValueMatchesColumn = (value: JsonValue, valueType: JsonValue) =>\n  value === null ||\n  (valueType === \"number\" && typeof value === \"number\") ||\n  (valueType === \"string\" && typeof value === \"string\") ||\n  (valueType === \"boolean\" && typeof value === \"boolean\");\n\nconst isValidTrendMatrix = (model: JsonObject) => {\n  const columns = objectArray(model.columns);\n  const rows = objectArray(model.rows);\n  const window = isJsonObject(model.window) ? model.window : undefined;\n  const columnIds = columns.flatMap((column) =>\n    stringValue(column.id) ? [String(column.id)] : [],\n  );\n  const uniqueColumnIds = new Set(columnIds);\n  if (\n    columns.length > MAX_MATRIX_COLUMNS ||\n    columnIds.length !== columns.length ||\n    uniqueColumnIds.size !== columnIds.length ||\n    rows.length > MAX_MATRIX_WINDOW_ROWS ||\n    !window ||\n    !Number.isInteger(window.rowOffset) ||\n    !Number.isInteger(window.rowCount) ||\n    !Number.isInteger(window.totalRows) ||\n    Number(window.rowOffset) < 0 ||\n    Number(window.rowCount) !== rows.length ||\n    Number(window.totalRows) < Number(window.rowOffset) + rows.length\n  )\n    return false;\n  const columnsById = new Map(\n    columns.map((column) => [String(column.id), column]),\n  );\n  const rowIds = new Set<string>();\n  for (const row of rows) {\n    const rowId = stringValue(row.id);\n    const recordId = stringValue(row.recordId);\n    if (!rowId || !recordId || rowIds.has(rowId)) return false;\n    rowIds.add(rowId);\n    const cells = objectArray(row.cells);\n    const cellColumnIds = new Set<string>();\n    for (const cell of cells) {\n      const columnId = stringValue(cell.columnId);\n      const column = columnId ? columnsById.get(columnId) : undefined;\n      if (\n        !columnId ||\n        !column ||\n        cellColumnIds.has(columnId) ||\n        !cellValueMatchesColumn(cell.value, column.valueType)\n      )\n        return false;\n      cellColumnIds.add(columnId);\n    }\n  }\n  return true;\n};\n\nconst moveTrendCellFocus = (event: ReactKeyboardEvent<HTMLButtonElement>) => {\n  if (![\"ArrowLeft\", \"ArrowRight\", \"ArrowUp\", \"ArrowDown\"].includes(event.key))\n    return;\n  const matrix = event.currentTarget.closest(\"[data-trend-matrix]\");\n  if (!matrix) return;\n  const buttons = Array.from(\n    matrix.querySelectorAll<HTMLButtonElement>(\"button[data-trend-cell]\"),\n  );\n  const currentIndex = buttons.indexOf(event.currentTarget);\n  if (currentIndex < 0) return;\n  const columnCount = Number(matrix.getAttribute(\"data-column-count\"));\n  const delta =\n    event.key === \"ArrowLeft\"\n      ? -1\n      : event.key === \"ArrowRight\"\n        ? 1\n        : event.key === \"ArrowUp\"\n          ? -columnCount\n          : columnCount;\n  const next = buttons[currentIndex + delta];\n  if (!next) return;\n  event.preventDefault();\n  next.focus();\n};\n\nconst LegacyTrendImageTile = ({\n  image,\n  placeholderLabel,\n  onSelect,\n}: {\n  image?: JsonObject;\n  placeholderLabel: string;\n  onSelect?: () => void;\n}) => {\n  const src = stringValue(image?.thumbnailUrl) || stringValue(image?.url);\n  const className = `relative flex h-[150px] w-[200px] shrink-0 overflow-hidden rounded-md border bg-muted/35${\n    src ? \"\" : \" border-dashed bg-muted/20\"\n  }${\n    src && onSelect\n      ? \" cursor-pointer transition hover:border-primary/60 hover:shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/35\"\n      : \"\"\n  }`;\n  const content = src ? (\n    <img\n      src={src}\n      alt=\"\"\n      className=\"h-full w-full object-cover\"\n      loading=\"lazy\"\n    />\n  ) : (\n    <div className=\"flex h-full w-full flex-col items-center justify-center gap-2 text-muted-foreground\">\n      <ImageOff className=\"h-5 w-5\" />\n      <span className=\"text-xs\">{placeholderLabel}</span>\n    </div>\n  );\n  return src && onSelect ? (\n    <button type=\"button\" className={className} onClick={onSelect}>\n      {content}\n    </button>\n  ) : (\n    <div className={className}>{content}</div>\n  );\n};\n\nconst LegacyTrendMatrix = ({\n  model,\n  loading,\n  translate,\n  emitIntent,\n}: {\n  model: JsonObject;\n  loading?: boolean;\n  translate: CapabilityTranslate;\n  emitIntent: (type: string, payload?: JsonObject) => void;\n}) => {\n  const sources = objectArray(model.sources).slice(0, 4);\n  if (loading && sources.length === 0) {\n    return (\n      <div className=\"flex h-full min-h-[320px] items-center justify-center text-sm text-muted-foreground\">\n        <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n        {translate(\"components.data-v2.trend-matrix.loading\")}\n      </div>\n    );\n  }\n  if (sources.length === 0) {\n    return (\n      <div\n        className=\"flex h-full min-h-[320px] items-center justify-center px-6 text-center\"\n        role=\"status\"\n        aria-live=\"polite\"\n      >\n        <div className=\"max-w-md space-y-2\">\n          <div className=\"text-base font-medium\">\n            {translate(\"components.data-v2.trend-matrix.empty-title\")}\n          </div>\n          <div className=\"text-sm text-muted-foreground\">\n            {translate(\"components.data-v2.trend-matrix.empty-description\")}\n          </div>\n        </div>\n      </div>\n    );\n  }\n  return (\n    <div\n      className=\"h-full overflow-auto bg-background\"\n      data-legacy-trend-matrix\n    >\n      <div className=\"min-w-[1160px] divide-y\">\n        {sources.map((source, sourceIndex) => {\n          const sourceId =\n            stringValue(source.id) || `trend-current-${sourceIndex}`;\n          const sourceRecordId = stringValue(source.sourceRecordId);\n          const generated = objectArray(source.generatedImages).slice(0, 4);\n          return (\n            <div\n              key={sourceId}\n              className=\"grid w-max min-w-full items-center gap-5 px-6 py-4\"\n              style={{ gridTemplateColumns: \"200px 40px repeat(4, 200px)\" }}\n            >\n              <LegacyTrendImageTile\n                image={isJsonObject(source.image) ? source.image : undefined}\n                placeholderLabel={translate(\n                  \"components.data-v2.trend-matrix.no-source\",\n                )}\n                onSelect={\n                  sourceRecordId\n                    ? () =>\n                        emitIntent(\"capability.ontology-trend-matrix.select\", {\n                          recordId: sourceRecordId,\n                        })\n                    : undefined\n                }\n              />\n              <div className=\"flex justify-center text-muted-foreground\">\n                <ChevronRight className=\"h-6 w-6\" />\n              </div>\n              {Array.from({ length: 4 }, (_, index) => {\n                const image = generated[index];\n                const recordId =\n                  stringValue(image?.recordId) ||\n                  stringValue(source.generationRecordId);\n                return (\n                  <LegacyTrendImageTile\n                    key={`${sourceId}-generated-${index}`}\n                    image={image}\n                    placeholderLabel={translate(\n                      \"components.data-v2.trend-matrix.no-generated\",\n                    )}\n                    onSelect={\n                      recordId\n                        ? () =>\n                            emitIntent(\n                              \"capability.ontology-trend-matrix.select\",\n                              { recordId },\n                            )\n                        : undefined\n                    }\n                  />\n                );\n              })}\n            </div>\n          );\n        })}\n      </div>\n    </div>\n  );\n};\n\nexport const OntologyTrendMatrixCapabilityRenderer: DesignCapabilityRenderer =\n  ({\n    model,\n    childrenBySlot,\n    translate,\n    emitIntent,\n    loading,\n    empty,\n    errorCode,\n  }) => {\n    const presentation = isJsonObject(model.presentation)\n      ? stringValue(model.presentation.kind)\n      : undefined;\n    if (presentation === \"legacy-data-explorer\") {\n      const sources = objectArray(model.sources);\n      const pagination = isJsonObject(model.pagination)\n        ? model.pagination\n        : undefined;\n      const loadedEnd =\n        typeof pagination?.loadedEnd === \"number\"\n          ? pagination.loadedEnd\n          : sources.length;\n      const loadedStart =\n        typeof pagination?.loadedStart === \"number\"\n          ? pagination.loadedStart\n          : loadedEnd > 0\n            ? 1\n            : 0;\n      const total =\n        typeof pagination?.total === \"number\" ? pagination.total : loadedEnd;\n      const pageSize =\n        typeof pagination?.pageSize === \"number\" && pagination.pageSize > 0\n          ? pagination.pageSize\n          : 20;\n      const loadedLabel =\n        loadedStart > 0\n          ? translate(\"components.data.card-view.loaded-window\", {\n              start: loadedStart,\n              end: loadedEnd,\n              total,\n            })\n          : translate(\"components.data.card-view.loaded-count\", {\n              loaded: loadedEnd,\n              total,\n            });\n      return (\n        <div className=\"flex h-full min-h-0 flex-col\">\n          <div className=\"min-h-0 flex-1\">\n            <LegacyTrendMatrix\n              model={model}\n              loading={loading}\n              translate={translate}\n              emitIntent={emitIntent}\n            />\n          </div>\n          <DataExplorerCollectionFooter\n            selectedCount={0}\n            loadedStart={loadedStart}\n            loadedEnd={loadedEnd}\n            total={total}\n            pageSize={pageSize}\n            loadedLabel={loadedLabel}\n            pageSizeOptions={[20, 50, 100, 200, 500, 1000]}\n            tone=\"hard-edge\"\n            classNames={{ summary: \"min-w-max\" }}\n            onPageSizeChange={(nextPageSize) =>\n              emitIntent(\"capability.ontology-trend-matrix.page-size-change\", {\n                pageSize: nextPageSize,\n              })\n            }\n          />\n          {childrenBySlot.footer}\n        </div>\n      );\n    }\n    const state = isJsonObject(model.state) ? model.state : undefined;\n    const stateKind = stringValue(state?.kind);\n    if (loading || stateKind === \"loading\")\n      return <CapabilityStatus kind=\"loading\" translate={translate} />;\n    if (errorCode || stateKind === \"error\")\n      return (\n        <CapabilityStatus\n          kind=\"error\"\n          code={errorCode ?? stringValue(state?.code)}\n          translate={translate}\n        />\n      );\n    const rows = objectArray(model.rows);\n    if (empty || stateKind === \"empty\" || rows.length === 0)\n      return (\n        <div role=\"status\" aria-live=\"polite\">\n          <CapabilityStatus kind=\"empty\" translate={translate} />\n        </div>\n      );\n    if (!isValidTrendMatrix(model))\n      return (\n        <CapabilityStatus\n          kind=\"error\"\n          code=\"capability.ontology-trend-matrix.invalid-model\"\n          translate={translate}\n        />\n      );\n\n    const columns = objectArray(model.columns);\n    const selectedCell = isJsonObject(model.selectedCell)\n      ? model.selectedCell\n      : undefined;\n    const window = model.window as JsonObject;\n    const rowOffset = Number(window.rowOffset);\n    const totalRows = Number(window.totalRows);\n    const pagination = isJsonObject(model.pagination)\n      ? model.pagination\n      : undefined;\n    const pageSize =\n      typeof pagination?.pageSize === \"number\" &&\n      Number.isSafeInteger(pagination.pageSize) &&\n      pagination.pageSize > 0\n        ? pagination.pageSize\n        : Math.max(1, rows.length);\n    return (\n      <BaseStack gap=\"var(--global-spacing)\">\n        {childrenBySlot.header}\n        <BaseTableContainer\n          data-trend-matrix\n          data-column-count={columns.length}\n          data-window-row-offset={rowOffset}\n          data-window-row-count={rows.length}\n          data-total-rows={totalRows}\n        >\n          <BaseTable\n            aria-label={String(\n              translatedCopy(\n                model.label,\n                model.labelKey,\n                translate,\n                translate(\n                  DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.label,\n                ),\n              ),\n            )}\n          >\n            <caption>\n              {translate(\n                DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.window,\n                {\n                  start: rowOffset + 1,\n                  end: rowOffset + rows.length,\n                  total: totalRows,\n                },\n              )}\n            </caption>\n            <BaseTableHeader>\n              <BaseTableRow>\n                <BaseTableHead\n                  label={translate(\n                    DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix.row,\n                  )}\n                />\n                {columns.map((column) => {\n                  const columnId = String(column.id);\n                  return (\n                    <BaseTableHead\n                      key={columnId}\n                      columnId={columnId}\n                      label={translatedCopy(\n                        column.label,\n                        column.labelKey,\n                        translate,\n                        columnId,\n                      )}\n                      align={\n                        (stringValue(column.align) as\n                          | \"left\"\n                          | \"center\"\n                          | \"right\"\n                          | undefined) ?? \"right\"\n                      }\n                    />\n                  );\n                })}\n              </BaseTableRow>\n            </BaseTableHeader>\n            <BaseTableBody>\n              {rows.map((row) => {\n                const rowId = String(row.id);\n                const recordId = String(row.recordId);\n                const cells = new Map(\n                  objectArray(row.cells).map((cell) => [\n                    String(cell.columnId),\n                    cell,\n                  ]),\n                );\n                return (\n                  <BaseTableRow key={rowId} data-row-id={rowId}>\n                    <BaseTableCell>\n                      {translatedCopy(\n                        row.label,\n                        row.labelKey,\n                        translate,\n                        rowId,\n                      )}\n                    </BaseTableCell>\n                    {columns.map((column) => {\n                      const columnId = String(column.id);\n                      const cell = cells.get(columnId);\n                      const value = cell?.value;\n                      const displayValue =\n                        stringValue(cell?.displayValue) ?? displayScalar(value);\n                      const isSelected =\n                        selectedCell?.rowId === rowId &&\n                        selectedCell?.columnId === columnId;\n                      return (\n                        <BaseTableCell\n                          key={columnId}\n                          align={\n                            (stringValue(column.align) as\n                              | \"left\"\n                              | \"center\"\n                              | \"right\"\n                              | undefined) ?? \"right\"\n                          }\n                        >\n                          <BaseButton\n                            data-trend-cell\n                            data-row-id={rowId}\n                            data-column-id={columnId}\n                            variant=\"ghost\"\n                            active={isSelected}\n                            label={displayValue || \"—\"}\n                            ariaLabel={translate(\n                              DESIGN_CAPABILITY_I18N_KEYS.ontologyTrendMatrix\n                                .select,\n                              {\n                                row: rowId,\n                                column: columnId,\n                                value: displayValue,\n                              },\n                            )}\n                            onKeyDown={moveTrendCellFocus}\n                            onClick={() =>\n                              emitIntent(\n                                \"capability.ontology-trend-matrix.select\",\n                                {\n                                  recordId,\n                                  rowId,\n                                  columnId,\n                                  value: jsonScalar(value),\n                                },\n                              )\n                            }\n                          />\n                        </BaseTableCell>\n                      );\n                    })}\n                  </BaseTableRow>\n                );\n              })}\n            </BaseTableBody>\n          </BaseTable>\n        </BaseTableContainer>\n        <DataExplorerCollectionFooter\n          selectedCount={0}\n          loadedStart={rows.length > 0 ? rowOffset + 1 : 0}\n          loadedEnd={Math.min(rowOffset + rows.length, totalRows)}\n          total={totalRows}\n          pageSize={pageSize}\n          pageSizeOptions={[20, 50, 100, 200, 500, 1000]}\n          tone=\"hard-edge\"\n          onPageSizeChange={(nextPageSize) =>\n            emitIntent(\"capability.ontology-trend-matrix.page-size-change\", {\n              pageSize: nextPageSize,\n            })\n          }\n        />\n        {childrenBySlot.footer}\n      </BaseStack>\n    );\n  };\n\ntype ContextField = (typeof contextFieldNames)[number];\n\nconst contextFieldLabel = (\n  field: ContextField,\n  translate: CapabilityTranslate,\n) => translate(DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.fields[field]);\n\nconst listSummary = (items: string[], translate: CapabilityTranslate) => {\n  const visible = items.slice(0, MAX_VISIBLE_CONTEXT_VALUES).join(\", \");\n  const remaining = Math.max(0, items.length - MAX_VISIBLE_CONTEXT_VALUES);\n  return remaining\n    ? `${visible} ${translate(DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.more, { count: remaining })}`\n    : visible;\n};\n\nconst dashboardSummary = (\n  dashboard: JsonObject,\n  translate: CapabilityTranslate,\n) => {\n  const identity =\n    stringValue(dashboard.clickedLabel) ??\n    stringValue(dashboard.dashboardId) ??\n    stringValue(dashboard.sourceWidgetId) ??\n    translate(DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.dashboardContext);\n  const countEntries = (value: JsonValue | undefined) =>\n    Array.isArray(value)\n      ? value.length\n      : isJsonObject(value)\n        ? Object.keys(value).length\n        : 0;\n  const explicitCount = [\n    dashboard.scopedFilterCount,\n    dashboard.globalFilterCount,\n    dashboard.widgetScopedFilterCount,\n    dashboard.variableCount,\n  ].reduce(\n    (total: number, value) =>\n      total + (typeof value === \"number\" && Number.isFinite(value) ? value : 0),\n    0,\n  );\n  const count =\n    explicitCount ||\n    [\n      dashboard.scopedFilters,\n      dashboard.globalFilters,\n      dashboard.widgetScopedFilters,\n      dashboard.variables,\n    ].reduce<number>((total, value) => total + countEntries(value), 0);\n  return count > 0\n    ? `${identity} · ${translate(DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.contextCount, { count })}`\n    : identity;\n};\n\ninterface ContextChip {\n  field: ContextField;\n  summary: string;\n}\n\ninterface ContextTagChoice {\n  id: string;\n  label: string;\n  disabled: boolean;\n  color?: string;\n  groupId?: string;\n  groupLabel?: string;\n}\n\ninterface ContextTagPanelGroup {\n  id: string;\n  label: string;\n  description?: string;\n  selectMode: \"single\" | \"multiple\";\n  tags: ContextTagChoice[];\n}\n\ninterface ContextTagPanel {\n  id: string;\n  label: string;\n  description?: string;\n  groups: ContextTagPanelGroup[];\n}\n\nconst contextTagChoices = (\n  value: JsonValue | undefined,\n  translate: CapabilityTranslate,\n): ContextTagChoice[] =>\n  objectArray(value).flatMap((choice) => {\n    const id = stringValue(choice.id);\n    if (!id) return [];\n    return [\n      {\n        id,\n        label:\n          stringValue(choice.label) ??\n          (stringValue(choice.labelKey)\n            ? translate(String(choice.labelKey))\n            : id),\n        disabled: choice.disabled === true,\n        ...(stringValue(choice.color)\n          ? { color: stringValue(choice.color) }\n          : {}),\n        ...(stringValue(choice.groupId)\n          ? { groupId: stringValue(choice.groupId) }\n          : {}),\n        ...(stringValue(choice.groupLabel)\n          ? { groupLabel: stringValue(choice.groupLabel) }\n          : {}),\n      },\n    ];\n  });\n\nconst contextTagPanels = (\n  value: JsonValue | undefined,\n  translate: CapabilityTranslate,\n): ContextTagPanel[] =>\n  objectArray(value).flatMap((panel) => {\n    const id = stringValue(panel.id);\n    if (!id) return [];\n    const groups = objectArray(panel.groups).flatMap((group) => {\n      const groupId = stringValue(group.id);\n      if (!groupId) return [];\n      return [\n        {\n          id: groupId,\n          label: stringValue(group.label) ?? groupId,\n          ...(stringValue(group.description)\n            ? { description: stringValue(group.description) }\n            : {}),\n          selectMode: group.selectMode === \"single\" ? \"single\" : \"multiple\",\n          tags: contextTagChoices(group.tags, translate),\n        } satisfies ContextTagPanelGroup,\n      ];\n    });\n    return [\n      {\n        id,\n        label: stringValue(panel.label) ?? id,\n        ...(stringValue(panel.description)\n          ? { description: stringValue(panel.description) }\n          : {}),\n        groups,\n      },\n    ];\n  });\n\nconst readableForeground = (color: string): string => {\n  const match = color.trim().match(/^#([0-9a-f]{6})$/i);\n  if (!match) return \"white\";\n  const red = Number.parseInt(match[1].slice(0, 2), 16);\n  const green = Number.parseInt(match[1].slice(2, 4), 16);\n  const blue = Number.parseInt(match[1].slice(4, 6), 16);\n  return red * 0.299 + green * 0.587 + blue * 0.114 > 160 ? \"black\" : \"white\";\n};\n\nconst panelTagStyle = (\n  choice: ContextTagChoice,\n  selected: boolean,\n): CSSProperties | undefined => {\n  const color = choice.color?.trim();\n  if (!color) return undefined;\n  return selected\n    ? {\n        backgroundColor: color,\n        borderColor: color,\n        color: readableForeground(color),\n      }\n    : { backgroundColor: \"transparent\", borderColor: color, color };\n};\n\ninterface LegacyDataExplorerContextFilterProps {\n  model: JsonObject;\n  translate: CapabilityTranslate;\n  emitIntent: (type: string, payload: JsonObject) => void;\n  snapshot: () => JsonObject;\n  clearTags: () => void;\n  triggerLabel: string;\n  triggerAriaLabel: string;\n  disabled: boolean;\n}\n\nconst LegacyDataExplorerContextFilter = ({\n  model,\n  translate,\n  emitIntent,\n  snapshot,\n  clearTags,\n  triggerLabel,\n  triggerAriaLabel,\n  disabled,\n}: LegacyDataExplorerContextFilterProps) => {\n  const governedTagIds = stringArray(model.tagIds);\n  const governedTagIdentity = governedTagIds.join(\"\\u0000\");\n  const [open, setOpen] = useState(false);\n  const [scope, setScope] = useState<\"view\" | \"all\">(\n    model.viewScoped === true ? \"view\" : \"all\",\n  );\n  const [keyword, setKeyword] = useState(\"\");\n  const [selectedTagIds, setSelectedTagIds] = useState(governedTagIds);\n  const allChoices = useMemo(\n    () => contextTagChoices(model.tagChoices, translate),\n    [model.tagChoices, translate],\n  );\n  const viewChoices = useMemo(\n    () => contextTagChoices(model.viewTagChoices, translate),\n    [model.viewTagChoices, translate],\n  );\n  const panels = useMemo(\n    () => contextTagPanels(model.tagPanelChoices, translate),\n    [model.tagPanelChoices, translate],\n  );\n  const [selectedPanelId, setSelectedPanelId] = useState(\"\");\n\n  useEffect(() => {\n    setSelectedTagIds(governedTagIds);\n  }, [governedTagIdentity]);\n\n  useEffect(() => {\n    if (!panels.length) {\n      setSelectedPanelId(\"\");\n      return;\n    }\n    if (!panels.some((panel) => panel.id === selectedPanelId)) {\n      setSelectedPanelId(panels[0].id);\n    }\n  }, [panels, selectedPanelId]);\n\n  const availableChoices =\n    scope === \"view\" && model.viewScoped === true ? viewChoices : allChoices;\n  const selectedSet = new Set(selectedTagIds);\n  const declaredIds = new Set(availableChoices.map(({ id }) => id));\n  const selectedFallbackChoices: ContextTagChoice[] = selectedTagIds\n    .filter((id) => !declaredIds.has(id))\n    .map((id) => ({ id, label: id, disabled: false }));\n  const visibleChoices: ContextTagChoice[] = [\n    ...availableChoices,\n    ...selectedFallbackChoices,\n  ].filter((choice) => {\n    const normalizedKeyword = keyword.trim().toLocaleLowerCase();\n    if (!normalizedKeyword) return true;\n    return [choice.id, choice.label, choice.groupLabel]\n      .filter(Boolean)\n      .some((value) =>\n        String(value).toLocaleLowerCase().includes(normalizedKeyword),\n      );\n  });\n  const visibleTagIds = new Set(availableChoices.map(({ id }) => id));\n  const activePanel = panels.find(({ id }) => id === selectedPanelId);\n  const visiblePanelGroups = (activePanel?.groups ?? [])\n    .map((group) => ({\n      ...group,\n      tags:\n        scope === \"view\" && model.viewScoped === true\n          ? group.tags.filter(({ id }) => visibleTagIds.has(id))\n          : group.tags,\n    }))\n    .filter((group) => group.tags.length > 0);\n\n  const changeTags = (nextTagIds: string[]) => {\n    setSelectedTagIds(nextTagIds);\n    emitIntent(\"capability.data-context-bar.change\", {\n      changedField: \"tagIds\",\n      ...snapshot(),\n      tagIds: nextTagIds,\n    });\n  };\n  const toggleTag = (\n    tagId: string,\n    groupTagIds?: string[],\n    selectMode: \"single\" | \"multiple\" = \"multiple\",\n  ) => {\n    if (disabled) return;\n    if (selectMode === \"single\" && groupTagIds) {\n      const withoutGroup = selectedTagIds.filter(\n        (selectedId) => !groupTagIds.includes(selectedId),\n      );\n      changeTags(\n        selectedSet.has(tagId) ? withoutGroup : [...withoutGroup, tagId],\n      );\n      return;\n    }\n    changeTags(\n      selectedSet.has(tagId)\n        ? selectedTagIds.filter((selectedId) => selectedId !== tagId)\n        : [...selectedTagIds, tagId],\n    );\n  };\n\n  return (\n    <Dialog\n      open={open}\n      onOpenChange={(nextOpen) => {\n        setOpen(nextOpen);\n        if (nextOpen) {\n          setKeyword(\"\");\n          setScope(model.viewScoped === true ? \"view\" : \"all\");\n          setSelectedTagIds(governedTagIds);\n        }\n      }}\n    >\n      <DialogTrigger asChild>\n        <Button\n          type=\"button\"\n          variant=\"outline\"\n          size=\"sm\"\n          className=\"h-10 shrink-0 px-2 2xl:px-3\"\n          aria-label={triggerAriaLabel}\n          title={triggerLabel}\n          disabled={disabled}\n        >\n          <Filter className=\"h-4 w-4 2xl:mr-2\" />\n          <span className=\"sr-only 2xl:not-sr-only\">{triggerLabel}</span>\n          {selectedTagIds.length > 0 ? (\n            <Badge variant=\"secondary\" className=\"ml-0 px-2 py-0.5 2xl:ml-2\">\n              {selectedTagIds.length}\n            </Badge>\n          ) : null}\n        </Button>\n      </DialogTrigger>\n      <DialogContent\n        className=\"max-w-4xl overflow-hidden\"\n        data-legacy-data-explorer-tag-filter\n      >\n        <DialogHeader>\n          <DialogTitle>{triggerLabel}</DialogTitle>\n          <DialogDescription>\n            {translate(\n              DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.filterDescription,\n            )}\n          </DialogDescription>\n        </DialogHeader>\n        {model.viewScoped === true ? (\n          <div className=\"flex min-w-0 items-center justify-between gap-3 border-b pb-3\">\n            <span className=\"text-sm font-medium\">\n              {translate(DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.tagScope)}\n            </span>\n            <div\n              className=\"inline-flex h-9 items-center rounded-md border bg-muted/40 p-1\"\n              role=\"group\"\n              aria-label={translate(\n                DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.tagScope,\n              )}\n            >\n              <Button\n                type=\"button\"\n                size=\"sm\"\n                variant={scope === \"view\" ? \"secondary\" : \"ghost\"}\n                className=\"h-7 px-3\"\n                aria-pressed={scope === \"view\"}\n                onClick={() => setScope(\"view\")}\n              >\n                {translate(\n                  DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.currentViewTags,\n                )}\n              </Button>\n              <Button\n                type=\"button\"\n                size=\"sm\"\n                variant={scope === \"all\" ? \"secondary\" : \"ghost\"}\n                className=\"h-7 px-3\"\n                aria-pressed={scope === \"all\"}\n                onClick={() => setScope(\"all\")}\n              >\n                {translate(DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.allTags)}\n              </Button>\n            </div>\n          </div>\n        ) : null}\n        <Tabs defaultValue=\"all\" className=\"w-full min-w-0\">\n          <TabsList className=\"grid w-full min-w-0 grid-cols-2\">\n            <TabsTrigger value=\"panel\">\n              {translate(\n                DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.panelFilter,\n              )}\n            </TabsTrigger>\n            <TabsTrigger value=\"all\">\n              {translate(DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.allTags)}\n            </TabsTrigger>\n          </TabsList>\n          <TabsContent value=\"panel\" className=\"min-w-0 pt-4\">\n            <div className=\"space-y-4\">\n              <div className=\"space-y-2\">\n                <div className=\"text-sm font-medium\">\n                  {translate(\n                    DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.tagPanel,\n                  )}\n                </div>\n                <Select\n                  value={selectedPanelId}\n                  onValueChange={setSelectedPanelId}\n                >\n                  <SelectTrigger disabled={panels.length === 0}>\n                    <SelectValue\n                      placeholder={translate(\n                        DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.selectPanel,\n                      )}\n                    />\n                  </SelectTrigger>\n                  <SelectContent>\n                    {panels.map((panel) => (\n                      <SelectItem key={panel.id} value={panel.id}>\n                        {panel.label}\n                      </SelectItem>\n                    ))}\n                  </SelectContent>\n                </Select>\n                {activePanel?.description ? (\n                  <div className=\"text-xs text-muted-foreground\">\n                    {activePanel.description}\n                  </div>\n                ) : null}\n              </div>\n              <div className=\"h-40 overflow-y-auto rounded-md border p-3\">\n                {!activePanel ? (\n                  <div className=\"py-6 text-center text-sm text-muted-foreground\">\n                    {translate(\n                      DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.noPanels,\n                    )}\n                  </div>\n                ) : visiblePanelGroups.length === 0 ? (\n                  <div className=\"py-6 text-center text-sm text-muted-foreground\">\n                    {translate(\n                      DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.noPanelGroups,\n                    )}\n                  </div>\n                ) : (\n                  <div className=\"space-y-4\">\n                    {visiblePanelGroups.map((group) => {\n                      const groupTagIds = group.tags.map(({ id }) => id);\n                      return (\n                        <div key={group.id} className=\"space-y-2\">\n                          <div className=\"flex items-center gap-2\">\n                            <span className=\"text-sm font-medium\">\n                              {group.label}\n                            </span>\n                            <Badge variant=\"outline\" className=\"text-xs\">\n                              {translate(\n                                group.selectMode === \"single\"\n                                  ? DESIGN_CAPABILITY_I18N_KEYS.dataContextBar\n                                      .singleSelect\n                                  : DESIGN_CAPABILITY_I18N_KEYS.dataContextBar\n                                      .multiSelect,\n                              )}\n                            </Badge>\n                          </div>\n                          {group.description ? (\n                            <div className=\"text-xs text-muted-foreground\">\n                              {group.description}\n                            </div>\n                          ) : null}\n                          <div className=\"flex flex-wrap gap-3\">\n                            {group.tags.map((choice) => {\n                              const selected = selectedSet.has(choice.id);\n                              return (\n                                <button\n                                  key={choice.id}\n                                  type=\"button\"\n                                  disabled={choice.disabled || disabled}\n                                  onClick={() =>\n                                    toggleTag(\n                                      choice.id,\n                                      groupTagIds,\n                                      group.selectMode,\n                                    )\n                                  }\n                                  className={badgeVariants({\n                                    variant:\n                                      selected && !choice.color\n                                        ? \"secondary\"\n                                        : \"outline\",\n                                    className:\n                                      \"cursor-pointer select-none gap-1.5 text-xs font-medium disabled:pointer-events-none disabled:opacity-50\",\n                                  })}\n                                  style={panelTagStyle(choice, selected)}\n                                >\n                                  <span>{choice.label}</span>\n                                  <span className=\"text-[10px] leading-none opacity-80\">\n                                    {choice.groupLabel ?? group.label}\n                                  </span>\n                                </button>\n                              );\n                            })}\n                          </div>\n                        </div>\n                      );\n                    })}\n                  </div>\n                )}\n              </div>\n            </div>\n          </TabsContent>\n          <TabsContent value=\"all\" className=\"min-w-0 pt-4\">\n            <div className=\"flex min-h-0 w-full min-w-0 flex-col gap-3\">\n              <Input\n                value={keyword}\n                onChange={(event) => setKeyword(event.currentTarget.value)}\n                placeholder={translate(\n                  DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.searchTags,\n                )}\n                disabled={disabled}\n              />\n              <div className=\"h-40 w-full min-w-0 overflow-y-auto rounded-md border p-2\">\n                {visibleChoices.length === 0 ? (\n                  <div className=\"py-4 text-center text-xs text-muted-foreground\">\n                    {translate(\n                      DESIGN_CAPABILITY_I18N_KEYS.dataContextBar\n                        .noAvailableTags,\n                    )}\n                  </div>\n                ) : (\n                  <div className=\"flex w-max flex-col gap-2 pr-2\">\n                    {visibleChoices.map((choice) => (\n                      <label\n                        key={choice.id}\n                        className=\"grid w-max grid-cols-[auto_minmax(160px,max-content)_2rem_minmax(72px,max-content)_max-content] items-center gap-3 whitespace-nowrap text-sm\"\n                      >\n                        <Checkbox\n                          checked={selectedSet.has(choice.id)}\n                          onCheckedChange={() => toggleTag(choice.id)}\n                          disabled={choice.disabled || disabled}\n                        />\n                        <span className=\"whitespace-nowrap\">\n                          {choice.label}\n                        </span>\n                        <div className=\"w-0\" />\n                        <span className=\"shrink-0 rounded-full border bg-muted/40 px-2 py-0.5 text-[11px] leading-none text-muted-foreground\">\n                          {choice.groupLabel ??\n                            translate(\n                              DESIGN_CAPABILITY_I18N_KEYS.dataContextBar\n                                .defaultGroup,\n                            )}\n                        </span>\n                        <span className=\"shrink-0 rounded bg-muted/30 px-2 py-0.5 font-mono text-xs leading-none text-muted-foreground\">\n                          {choice.id}\n                        </span>\n                      </label>\n                    ))}\n                  </div>\n                )}\n                {visibleChoices.length > 0 ? (\n                  <div className=\"py-2 text-center text-xs text-muted-foreground\">\n                    {translate(\n                      DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.loadedAll,\n                    )}\n                  </div>\n                ) : null}\n              </div>\n            </div>\n          </TabsContent>\n        </Tabs>\n        <DialogFooter>\n          <Button\n            variant=\"ghost\"\n            onClick={() =>\n              emitIntent(\"capability.data-context-bar.refresh\", {})\n            }\n          >\n            <RefreshCw className=\"mr-2 h-4 w-4\" />\n            {translate(DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.refreshTags)}\n          </Button>\n          <Button\n            variant=\"outline\"\n            onClick={() => {\n              setSelectedTagIds([]);\n              clearTags();\n            }}\n          >\n            {translate(\n              DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.tagFilterClear,\n            )}\n          </Button>\n          <Button onClick={() => setOpen(false)}>\n            {translate(DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.confirm)}\n          </Button>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  );\n};\n\nconst contextChips = (\n  model: JsonObject,\n  translate: CapabilityTranslate,\n): ContextChip[] => {\n  const chips: ContextChip[] = [];\n  for (const field of [\"tagIds\", \"tagGroupIds\"] as const) {\n    const values = stringArray(model[field]);\n    if (values.length)\n      chips.push({ field, summary: listSummary(values, translate) });\n  }\n  for (const field of [\"timeFrom\", \"timeTo\", \"clickedField\"] as const) {\n    const value = stringValue(model[field]);\n    if (value)\n      chips.push({ field, summary: value.slice(0, MAX_SAFE_TEXT_LENGTH) });\n  }\n  if (model.clickedValue !== undefined && model.clickedValue !== null)\n    chips.push({\n      field: \"clickedValue\",\n      summary: displayJsonSummary(model.clickedValue),\n    });\n  if (\n    model.dashboardDrilldown !== undefined &&\n    model.dashboardDrilldown !== null\n  )\n    chips.push({\n      field: \"dashboardDrilldown\",\n      summary: isJsonObject(model.dashboardDrilldown)\n        ? dashboardSummary(model.dashboardDrilldown, translate)\n        : displayJsonSummary(model.dashboardDrilldown),\n    });\n  return chips;\n};\n\nexport const DataContextBarCapabilityRenderer: DesignCapabilityRenderer = ({\n  model,\n  childrenBySlot,\n  translate,\n  emitIntent,\n}) => {\n  const search = typeof model.search === \"string\" ? model.search : \"\";\n  const declaredEnabledFields = stringArray(model.enabledFields).filter(\n    (field): field is ContextField =>\n      contextFieldNames.includes(field as ContextField),\n  );\n  const enabledFields = new Set<ContextField>(\n    model.enabledFields === undefined\n      ? contextFieldNames\n      : declaredEnabledFields,\n  );\n  const chips = contextChips(model, translate).filter(({ field }) =>\n    enabledFields.has(field),\n  );\n  const snapshot = (): JsonObject => ({\n    search,\n    tagIds: stringArray(model.tagIds),\n    tagGroupIds: stringArray(model.tagGroupIds),\n    timeFrom: typeof model.timeFrom === \"string\" ? model.timeFrom : \"\",\n    timeTo: typeof model.timeTo === \"string\" ? model.timeTo : \"\",\n    clickedField:\n      typeof model.clickedField === \"string\" ? model.clickedField : \"\",\n    clickedValue: governedJsonValue(model.clickedValue),\n    dashboardDrilldown: governedJsonValue(model.dashboardDrilldown),\n  });\n  const choiceOptions = (\n    choiceField: \"tagChoices\" | \"tagGroupChoices\",\n    selectedIds: string[],\n  ) => {\n    const declared = objectArray(model[choiceField]).flatMap((choice) => {\n      const id = stringValue(choice.id);\n      if (!id) return [];\n      return [\n        {\n          value: id,\n          label:\n            stringValue(choice.label) ??\n            (stringValue(choice.labelKey)\n              ? translate(String(choice.labelKey))\n              : id),\n          disabled: choice.disabled === true,\n        },\n      ];\n    });\n    const ids = new Set(declared.map(({ value }) => value));\n    return [\n      ...declared,\n      ...selectedIds\n        .filter((id) => !ids.has(id))\n        .map((id) => ({ value: id, label: id })),\n    ];\n  };\n  const clearedSnapshot = (field: ContextField | \"all\"): JsonObject => {\n    const next = snapshot();\n    const fields = field === \"all\" ? contextFieldNames : [field];\n    for (const target of fields) {\n      next[target] =\n        target === \"tagIds\" || target === \"tagGroupIds\"\n          ? []\n          : target === \"clickedValue\" || target === \"dashboardDrilldown\"\n            ? null\n            : \"\";\n    }\n    return next;\n  };\n  const clear = (field: ContextField | \"all\") =>\n    emitIntent(\"capability.data-context-bar.clear\", {\n      clearedField: field,\n      ...clearedSnapshot(field),\n    });\n  const compact =\n    model.presentation === \"compact\" ||\n    model.presentation === \"legacy-data-explorer\";\n  const legacyDataExplorer = model.presentation === \"legacy-data-explorer\";\n  if (\n    !compact &&\n    enabledFields.size === 0 &&\n    !childrenBySlot.leading &&\n    !childrenBySlot.content &&\n    !childrenBySlot.actions\n  ) {\n    return null;\n  }\n  const filterControls = (\n    <>\n      {enabledFields.has(\"search\") ? (\n        <BaseInput\n          type=\"search\"\n          value={search}\n          aria-label={translate(\n            DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.searchLabel,\n          )}\n          placeholder={translate(\n            DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.searchPlaceholder,\n          )}\n          onChange={(event) =>\n            emitIntent(\"capability.data-context-bar.change\", {\n              changedField: \"search\",\n              ...snapshot(),\n              search: event.currentTarget.value,\n            })\n          }\n        />\n      ) : null}\n      {enabledFields.has(\"tagIds\") ? (\n        <BaseField label={contextFieldLabel(\"tagIds\", translate)}>\n          <BaseMultiSelect\n            aria-label={contextFieldLabel(\"tagIds\", translate)}\n            placeholder={contextFieldLabel(\"tagIds\", translate)}\n            options={choiceOptions(\"tagChoices\", stringArray(model.tagIds))}\n            value={stringArray(model.tagIds)}\n            onValueChange={(tagIds) =>\n              emitIntent(\"capability.data-context-bar.change\", {\n                changedField: \"tagIds\",\n                ...snapshot(),\n                tagIds,\n              })\n            }\n          />\n        </BaseField>\n      ) : null}\n      {enabledFields.has(\"tagGroupIds\") ? (\n        <BaseField label={contextFieldLabel(\"tagGroupIds\", translate)}>\n          <BaseMultiSelect\n            aria-label={contextFieldLabel(\"tagGroupIds\", translate)}\n            placeholder={contextFieldLabel(\"tagGroupIds\", translate)}\n            options={choiceOptions(\n              \"tagGroupChoices\",\n              stringArray(model.tagGroupIds),\n            )}\n            value={stringArray(model.tagGroupIds)}\n            onValueChange={(tagGroupIds) =>\n              emitIntent(\"capability.data-context-bar.change\", {\n                changedField: \"tagGroupIds\",\n                ...snapshot(),\n                tagGroupIds,\n              })\n            }\n          />\n        </BaseField>\n      ) : null}\n      {([\"timeFrom\", \"timeTo\"] as const)\n        .filter((field) => enabledFields.has(field))\n        .map((field) => (\n          <BaseField key={field} label={contextFieldLabel(field, translate)}>\n            <BaseInput\n              type=\"text\"\n              aria-label={contextFieldLabel(field, translate)}\n              value={typeof model[field] === \"string\" ? model[field] : \"\"}\n              onChange={(event) =>\n                emitIntent(\"capability.data-context-bar.change\", {\n                  changedField: field,\n                  ...snapshot(),\n                  [field]: event.currentTarget.value,\n                })\n              }\n            />\n          </BaseField>\n        ))}\n      <BaseInline gap=\"var(--global-spacing)\" role=\"list\">\n        {chips.map(({ field, summary }) => {\n          const label = contextFieldLabel(field, translate);\n          return (\n            <span key={field} role=\"listitem\">\n              <BaseBadge label={`${label}: ${summary}`} tone=\"muted\" />\n              <BaseButton\n                variant=\"ghost\"\n                size=\"sm\"\n                label={translate(\n                  DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.clear,\n                )}\n                ariaLabel={`${translate(DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.clear)} ${label}`}\n                onClick={() => clear(field)}\n              />\n            </span>\n          );\n        })}\n      </BaseInline>\n      {childrenBySlot.content}\n    </>\n  );\n  const clearAllButton =\n    chips.length || search ? (\n      <BaseButton\n        variant=\"ghost\"\n        label={translate(DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.clearAll)}\n        onClick={() => clear(\"all\")}\n      />\n    ) : null;\n\n  if (compact) {\n    const activeCount =\n      chips.length + (enabledFields.has(\"search\") && search ? 1 : 0);\n    const declaredLabelKey = stringValue(model.labelKey);\n    const triggerLabel = declaredLabelKey\n      ? translate(declaredLabelKey)\n      : `${translate(DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.filter)}${\n          activeCount ? ` (${activeCount})` : \"\"\n        }`;\n    const declaredAriaLabelKey = stringValue(model.ariaLabelKey);\n    const triggerAriaLabel = declaredAriaLabelKey\n      ? translate(declaredAriaLabelKey)\n      : declaredLabelKey\n        ? translate(declaredLabelKey)\n        : triggerLabel;\n    return (\n      <BaseInline\n        gap=\"var(--global-spacing)\"\n        aria-label={translate(DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.label)}\n      >\n        {childrenBySlot.leading}\n        {legacyDataExplorer ? (\n          <LegacyDataExplorerContextFilter\n            model={model}\n            translate={translate}\n            emitIntent={emitIntent}\n            snapshot={snapshot}\n            clearTags={() => clear(\"tagIds\")}\n            triggerLabel={triggerLabel}\n            triggerAriaLabel={triggerAriaLabel}\n            disabled={model.disabled === true || !enabledFields.has(\"tagIds\")}\n          />\n        ) : (\n          <Popover>\n            <PopoverTrigger asChild>\n              <BaseButton\n                label={triggerLabel}\n                ariaLabel={triggerAriaLabel}\n                variant=\"secondary\"\n                disabled={model.disabled === true || enabledFields.size === 0}\n              />\n            </PopoverTrigger>\n            <PopoverContent\n              align=\"start\"\n              className=\"max-h-[min(70vh,40rem)] w-80 overflow-y-auto\"\n            >\n              <BaseStack gap=\"var(--global-spacing)\">\n                {filterControls}\n                {clearAllButton}\n              </BaseStack>\n            </PopoverContent>\n          </Popover>\n        )}\n        {childrenBySlot.actions}\n      </BaseInline>\n    );\n  }\n\n  return (\n    <BaseToolbar\n      aria-label={translate(DESIGN_CAPABILITY_I18N_KEYS.dataContextBar.label)}\n      leading={childrenBySlot.leading}\n      actions={\n        <>\n          {clearAllButton}\n          {childrenBySlot.actions}\n        </>\n      }\n    >\n      {filterControls}\n    </BaseToolbar>\n  );\n};\n","import type { JsonObject, JsonValue } from \"@inf-monkeys-tech/monkeys\";\nimport { Columns3, Plus, Trash2 } from \"lucide-react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n  BaseAccordion,\n  BaseBadge,\n  BaseButton,\n  BaseCheckbox,\n  BaseField,\n  BaseInput,\n  BaseInline,\n  BaseSelect,\n  BaseTabs,\n} from \"../base\";\nimport type { CapabilityTranslate } from \"./contracts\";\nimport { isJsonObject } from \"./contracts\";\nimport { DESIGN_CAPABILITY_I18N_KEYS } from \"./i18n\";\n\ntype TagChoice = {\n  id: string;\n  label: string;\n  color?: string;\n  groupId?: string;\n};\n\ntype TagGroupChoice = {\n  id: string;\n  label: string;\n};\n\nexport interface MarkerTagCatalog {\n  search: string;\n  pagination?: JsonObject;\n  onSearch(value: string): void;\n  onPageChange(page: number): void;\n}\n\ntype FilterRule = JsonObject & {\n  source?: JsonValue;\n  meta?: JsonValue;\n  whenAllOf?: JsonValue;\n  whenAnyOf?: JsonValue;\n  requireAllOf?: JsonValue;\n  requireAnyOf?: JsonValue;\n};\n\ntype FilterDraft = JsonObject & {\n  allOf?: JsonValue;\n  noneOf?: JsonValue;\n  anyOf?: JsonValue;\n  rules?: JsonValue;\n  builtin?: JsonValue;\n};\n\ntype RequirementMode = \"or\" | \"and\" | \"and_or\";\n\nconst markerKeys = DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement;\n\nconst text = (value: unknown) =>\n  typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n\nconst stringArray = (value: unknown): string[] => {\n  if (!Array.isArray(value)) return [];\n  const seen = new Set<string>();\n  return value.flatMap((candidate) => {\n    const id = text(candidate);\n    if (!id || seen.has(id)) return [];\n    seen.add(id);\n    return [id];\n  });\n};\n\nconst stringGroups = (value: unknown): string[][] =>\n  Array.isArray(value)\n    ? value.map(stringArray).filter((group) => group.length > 0)\n    : [];\n\nconst editableStringGroups = (value: unknown): string[][] =>\n  Array.isArray(value) ? value.map(stringArray) : [];\n\nconst rules = (value: unknown): FilterRule[] =>\n  Array.isArray(value)\n    ? value.filter(isJsonObject).map((rule) => ({ ...rule }))\n    : [];\n\nconst markerFilter = (template: JsonObject): FilterDraft => {\n  const displayConfig = isJsonObject(template.displayConfig)\n    ? template.displayConfig\n    : undefined;\n  const filter =\n    displayConfig && isJsonObject(displayConfig.filterConfigV2)\n      ? displayConfig.filterConfigV2\n      : undefined;\n  return filter ? { ...filter } : {};\n};\n\nconst hasCreatorCurrentUser = (filter: FilterDraft) => {\n  const builtin = isJsonObject(filter.builtin) ? filter.builtin : undefined;\n  const creator =\n    builtin && isJsonObject(builtin.creatorUserId)\n      ? builtin.creatorUserId\n      : undefined;\n  return creator?.token === \"currentUserId\";\n};\n\nconst hasTagFilter = (filter: FilterDraft) =>\n  stringArray(filter.allOf).length > 0 ||\n  stringArray(filter.noneOf).length > 0 ||\n  stringGroups(filter.anyOf).length > 0 ||\n  rules(filter.rules).length > 0;\n\nconst templateColumns = (template: JsonObject) => {\n  const displayConfig = isJsonObject(template.displayConfig)\n    ? template.displayConfig\n    : undefined;\n  const tableColumns =\n    displayConfig && isJsonObject(displayConfig.tableColumns)\n      ? displayConfig.tableColumns\n      : undefined;\n  if (!tableColumns) return [];\n  return [\n    ...stringArray(tableColumns.baseColumns),\n    ...stringArray(tableColumns.propertyColumns),\n    ...stringArray(tableColumns.featureColumns),\n  ];\n};\n\nconst preferredModeKey = (template: JsonObject) => {\n  const displayConfig = isJsonObject(template.displayConfig)\n    ? template.displayConfig\n    : undefined;\n  switch (text(displayConfig?.preferredViewMode)) {\n    case \"card\":\n      return markerKeys.viewModeCard;\n    case \"gallery\":\n      return markerKeys.viewModeGallery;\n    case \"trendMatrix\":\n      return markerKeys.viewModeTrendMatrix;\n    default:\n      return undefined;\n  }\n};\n\nconst setTemplateFilter = (\n  template: JsonObject,\n  nextFilter: FilterDraft,\n): JsonObject => {\n  const displayConfig = isJsonObject(template.displayConfig)\n    ? { ...template.displayConfig }\n    : {};\n  const meaningful = Object.keys(nextFilter).some(\n    (key) => key !== \"v\" && key !== \"mode\",\n  );\n  if (meaningful) {\n    displayConfig.filterConfigV2 = { v: 1, mode: \"tag\", ...nextFilter };\n  } else {\n    delete displayConfig.filterConfigV2;\n  }\n  if (Object.keys(displayConfig).length > 0) {\n    return { ...template, displayConfig };\n  }\n  const { displayConfig: _ignored, ...withoutDisplayConfig } = template;\n  return withoutDisplayConfig;\n};\n\nconst setCreatorCurrentUser = (\n  template: JsonObject,\n  selected: boolean,\n): JsonObject => {\n  const filter = markerFilter(template);\n  const builtin = isJsonObject(filter.builtin) ? { ...filter.builtin } : {};\n  if (selected) {\n    builtin.creatorUserId = { op: \"eq\", token: \"currentUserId\" };\n  } else {\n    delete builtin.creatorUserId;\n  }\n  if (Object.keys(builtin).length > 0) filter.builtin = builtin;\n  else delete filter.builtin;\n  return setTemplateFilter(template, filter);\n};\n\nconst updateFilterList = (\n  template: JsonObject,\n  key: \"allOf\" | \"noneOf\",\n  ids: string[],\n) => {\n  const filter = markerFilter(template);\n  if (ids.length > 0) filter[key] = ids;\n  else delete filter[key];\n  return setTemplateFilter(template, filter);\n};\n\nconst isSupplementRule = (\n  rule: FilterRule,\n  groupIndex?: number,\n  tagId?: string,\n) => {\n  if (rule.source !== \"or_supplement\" || !isJsonObject(rule.meta)) return false;\n  if (groupIndex !== undefined && rule.meta.groupIndex !== groupIndex)\n    return false;\n  if (tagId !== undefined && rule.meta.tagId !== tagId) return false;\n  return (\n    typeof rule.meta.groupIndex === \"number\" && Boolean(text(rule.meta.tagId))\n  );\n};\n\nconst supplementRule = (\n  filter: FilterDraft,\n  groupIndex: number,\n  tagId: string,\n) =>\n  rules(filter.rules).find((rule) => isSupplementRule(rule, groupIndex, tagId));\n\nconst requirementMode = (rule: FilterRule | undefined): RequirementMode => {\n  const hasAnd = stringArray(rule?.requireAllOf).length > 0;\n  const hasOr = stringGroups(rule?.requireAnyOf).length > 0;\n  if (hasAnd && hasOr) return \"and_or\";\n  if (hasAnd) return \"and\";\n  return \"or\";\n};\n\nconst upsertSupplementRule = (\n  template: JsonObject,\n  groupIndex: number,\n  tagId: string,\n  patch: { requireAllOf?: string[]; requireAnyOf?: string[][] },\n) => {\n  const filter = markerFilter(template);\n  const currentRules = rules(filter.rules);\n  const currentIndex = currentRules.findIndex((rule) =>\n    isSupplementRule(rule, groupIndex, tagId),\n  );\n  const current = currentIndex >= 0 ? currentRules[currentIndex] : {};\n  const next: FilterRule = {\n    ...current,\n    source: \"or_supplement\",\n    meta: { groupIndex, tagId },\n    enabled: current.enabled !== false,\n    whenAllOf: [tagId],\n    whenAnyOf: [],\n    requireAllOf: patch.requireAllOf ?? stringArray(current.requireAllOf),\n    requireAnyOf:\n      patch.requireAnyOf ?? editableStringGroups(current.requireAnyOf),\n  };\n  const hasRequirement =\n    stringArray(next.requireAllOf).length > 0 ||\n    editableStringGroups(next.requireAnyOf).length > 0;\n  if (!hasRequirement) {\n    filter.rules = currentRules.filter(\n      (rule) => !isSupplementRule(rule, groupIndex, tagId),\n    );\n  } else if (currentIndex >= 0) {\n    currentRules[currentIndex] = next;\n    filter.rules = currentRules;\n  } else {\n    filter.rules = [...currentRules, next];\n  }\n  if (rules(filter.rules).length === 0) delete filter.rules;\n  return setTemplateFilter(template, filter);\n};\n\nconst updateAnyGroup = (\n  template: JsonObject,\n  groupIndex: number,\n  ids: string[],\n) => {\n  const filter = markerFilter(template);\n  const groups = editableStringGroups(filter.anyOf);\n  const previous = groups[groupIndex] ?? [];\n  const nextGroups = [...groups];\n  nextGroups[groupIndex] = ids;\n  const removed = previous.filter((id) => !ids.includes(id));\n  const nextRules = rules(filter.rules).filter(\n    (rule) =>\n      !removed.some((tagId) => isSupplementRule(rule, groupIndex, tagId)),\n  );\n  if (nextGroups.length > 0) filter.anyOf = nextGroups;\n  else delete filter.anyOf;\n  if (nextRules.length > 0) filter.rules = nextRules;\n  else delete filter.rules;\n  return setTemplateFilter(template, filter);\n};\n\nconst removeAnyGroup = (template: JsonObject, groupIndex: number) => {\n  const filter = markerFilter(template);\n  const groups = stringGroups(filter.anyOf).filter(\n    (_group, index) => index !== groupIndex,\n  );\n  const nextRules = rules(filter.rules).flatMap((rule) => {\n    if (!isSupplementRule(rule) || !isJsonObject(rule.meta)) return [rule];\n    const currentIndex = Number(rule.meta.groupIndex);\n    if (currentIndex === groupIndex) return [];\n    if (currentIndex > groupIndex) {\n      return [\n        { ...rule, meta: { ...rule.meta, groupIndex: currentIndex - 1 } },\n      ];\n    }\n    return [rule];\n  });\n  if (groups.length > 0) filter.anyOf = groups;\n  else delete filter.anyOf;\n  if (nextRules.length > 0) filter.rules = nextRules;\n  else delete filter.rules;\n  return setTemplateFilter(template, filter);\n};\n\nconst tagChoices = (value: unknown): TagChoice[] =>\n  Array.isArray(value)\n    ? value.flatMap((choice) => {\n        if (!isJsonObject(choice)) return [];\n        const id = text(choice.id);\n        const label = text(choice.label);\n        if (!id || !label) return [];\n        return [\n          {\n            id,\n            label,\n            ...(text(choice.color) ? { color: text(choice.color) } : {}),\n            ...(text(choice.groupId) ? { groupId: text(choice.groupId) } : {}),\n          },\n        ];\n      })\n    : [];\n\nconst tagGroupChoices = (value: unknown): TagGroupChoice[] =>\n  Array.isArray(value)\n    ? value.flatMap((choice) => {\n        if (!isJsonObject(choice)) return [];\n        const id = text(choice.id);\n        const label = text(choice.label);\n        return id && label ? [{ id, label }] : [];\n      })\n    : [];\n\nconst updateTemplate = (\n  templates: JsonObject[],\n  index: number,\n  patch: JsonObject,\n) =>\n  templates.map((template, currentIndex) =>\n    currentIndex === index ? { ...template, ...patch } : template,\n  );\n\nconst normalizeTemplateKey = (value: unknown) =>\n  String(value ?? \"\")\n    .trim()\n    .replace(/\\s+/g, \"-\")\n    .replace(/[^A-Za-z0-9_.:-]/g, \"\")\n    .slice(0, 64);\n\nexport const normalizeOntologyMarkerTemplates = (\n  value: unknown,\n): JsonObject[] => {\n  if (!Array.isArray(value)) {\n    throw new TypeError(\"defaultViewTemplates must be an array.\");\n  }\n  const seen = new Set<string>();\n  return value.map((candidate, index) => {\n    if (!isJsonObject(candidate)) {\n      throw new TypeError(\"defaultViewTemplates must contain JSON objects.\");\n    }\n    const key = normalizeTemplateKey(candidate.key) || `default-${index + 1}`;\n    if (seen.has(key)) {\n      throw new TypeError(`Duplicate default view template key: ${key}`);\n    }\n    seen.add(key);\n    const name = text(candidate.name);\n    if (!name) {\n      throw new TypeError(`Default view template ${key} requires a name.`);\n    }\n    const sortValue = candidate.sort;\n    const parsedSort =\n      sortValue === undefined || sortValue === null || sortValue === \"\"\n        ? undefined\n        : Number(sortValue);\n    if (\n      parsedSort !== undefined &&\n      !Number.isFinite(parsedSort)\n    ) {\n      throw new TypeError(`Default view template ${key} sort is invalid.`);\n    }\n    const normalized: JsonObject = {\n      ...candidate,\n      key,\n      name,\n      viewType: text(candidate.viewType) ?? \"filter\",\n    };\n    const profile = text(candidate.profile);\n    const description = text(candidate.description);\n    if (profile) normalized.profile = profile;\n    else delete normalized.profile;\n    if (description) normalized.description = description;\n    else delete normalized.description;\n    if (parsedSort === undefined) delete normalized.sort;\n    else normalized.sort = Math.trunc(parsedSort);\n\n    if (isJsonObject(candidate.displayConfig)) {\n      const displayConfig = { ...candidate.displayConfig };\n      if (isJsonObject(displayConfig.filterConfigV2)) {\n        const filter = { ...displayConfig.filterConfigV2 };\n        const allOf = stringArray(filter.allOf);\n        const noneOf = stringArray(filter.noneOf);\n        const anyOf = stringGroups(filter.anyOf);\n        const normalizedRules = rules(filter.rules).filter(\n          (rule) =>\n            stringArray(rule.requireAllOf).length > 0 ||\n            stringGroups(rule.requireAnyOf).length > 0,\n        );\n        if (allOf.length > 0) filter.allOf = allOf;\n        else delete filter.allOf;\n        if (noneOf.length > 0) filter.noneOf = noneOf;\n        else delete filter.noneOf;\n        if (anyOf.length > 0) filter.anyOf = anyOf;\n        else delete filter.anyOf;\n        if (normalizedRules.length > 0) filter.rules = normalizedRules;\n        else delete filter.rules;\n        displayConfig.filterConfigV2 = filter;\n      }\n      normalized.displayConfig = displayConfig;\n    }\n    return normalized;\n  });\n};\n\nconst TagSelector = ({\n  id,\n  choices,\n  groups,\n  selected,\n  disabled,\n  translate,\n  onChange,\n  catalog,\n}: {\n  id: string;\n  choices: TagChoice[];\n  groups: TagGroupChoice[];\n  selected: string[];\n  disabled: boolean;\n  translate: CapabilityTranslate;\n  onChange: (ids: string[]) => void;\n  catalog?: MarkerTagCatalog;\n}) => {\n  const [search, setSearch] = useState(catalog?.search ?? \"\");\n  const searchTimer = useRef<ReturnType<typeof setTimeout>>();\n  useEffect(() => { setSearch(catalog?.search ?? ''); }, [catalog?.search]);\n  useEffect(() => () => clearTimeout(searchTimer.current), []);\n  const [groupId, setGroupId] = useState(\"\");\n  const normalizedSearch = search.trim().toLowerCase();\n  const declaredIds = new Set(choices.map((choice) => choice.id));\n  const available = [\n    ...choices,\n    ...selected\n      .filter((selectedId) => !declaredIds.has(selectedId))\n      .map((selectedId): TagChoice => ({ id: selectedId, label: selectedId })),\n  ].filter(\n    (choice) =>\n      (!groupId || choice.groupId === groupId) &&\n      (!normalizedSearch ||\n        choice.label.toLowerCase().includes(normalizedSearch) ||\n        choice.id.toLowerCase().includes(normalizedSearch)),\n  );\n  return (\n    <div className=\"space-y-2 rounded-md border bg-background p-2\">\n      <div className=\"grid gap-2 sm:grid-cols-2\">\n        <BaseInput\n          id={`${id}-search`}\n          type=\"search\"\n          aria-label={translate(markerKeys.filterSearch)}\n          placeholder={translate(markerKeys.filterSearch)}\n          value={search}\n          disabled={disabled}\n          onChange={(event) => {\n            const value = event.currentTarget.value;\n            setSearch(value);\n            clearTimeout(searchTimer.current);\n            if (catalog) searchTimer.current = setTimeout(() => catalog.onSearch(value), 250);\n          }}\n          onKeyDown={event => {\n            if (event.key !== 'Enter') return;\n            event.preventDefault();\n            clearTimeout(searchTimer.current);\n            catalog?.onSearch(search);\n          }}\n        />\n        {groups.length > 0 ? (\n          <BaseSelect\n            id={`${id}-group`}\n            aria-label={translate(markerKeys.filterTagGroup)}\n            value={groupId}\n            disabled={disabled}\n            options={[\n              { value: \"\", label: translate(markerKeys.filterAllGroups) },\n              ...groups.map((group) => ({\n                value: group.id,\n                label: group.label,\n              })),\n            ]}\n            onChange={(event) => setGroupId(event.currentTarget.value)}\n          />\n        ) : null}\n      </div>\n      {available.length > 0 ? (\n        <div className=\"grid gap-2 sm:grid-cols-2\">\n          {available.map((choice) => (\n            <BaseCheckbox\n              key={choice.id}\n              name=\"\"\n              value={choice.id}\n              label={choice.label}\n              checked={selected.includes(choice.id)}\n              disabled={disabled}\n              onChange={(event) =>\n                onChange(\n                  event.currentTarget.checked\n                    ? [...selected, choice.id]\n                    : selected.filter((candidate) => candidate !== choice.id),\n                )\n              }\n            />\n          ))}\n        </div>\n      ) : (\n        <div className=\"rounded-md border border-dashed p-3 text-sm text-muted-foreground\">\n          {translate(markerKeys.filterNoTags)}\n        </div>\n      )}\n      {catalog?.pagination?.mode === 'window' ? <BaseInline justify=\"between\">\n        <BaseButton label={translate('monkeys.design.capability.pagination.previous')} disabled={disabled || catalog.pagination.hasPrevious !== true} onClick={() => catalog.onPageChange(Number(catalog.pagination?.currentPage) - 1)} />\n        <BaseButton label={translate('monkeys.design.capability.pagination.next')} disabled={disabled || catalog.pagination.hasNext !== true} onClick={() => catalog.onPageChange(Number(catalog.pagination?.currentPage) + 1)} />\n      </BaseInline> : null}\n    </div>\n  );\n};\n\nconst MarkerFilterEditor = ({\n  id,\n  template,\n  choices,\n  groups,\n  disabled,\n  translate,\n  onChange,\n  catalog,\n}: {\n  id: string;\n  template: JsonObject;\n  choices: TagChoice[];\n  groups: TagGroupChoice[];\n  disabled: boolean;\n  translate: CapabilityTranslate;\n  onChange: (template: JsonObject) => void;\n  catalog?: MarkerTagCatalog;\n}) => {\n  const [section, setSection] = useState(\"allOf\");\n  const [activeSupplement, setActiveSupplement] = useState<{\n    groupIndex: number;\n    tagId: string;\n  }>();\n  const filter = markerFilter(template);\n  const allOf = stringArray(filter.allOf);\n  const noneOf = stringArray(filter.noneOf);\n  const anyOf = editableStringGroups(filter.anyOf);\n  const filterRules = rules(filter.rules);\n  const advancedRules = filterRules.filter((rule) => !isSupplementRule(rule));\n  const editor = (selected: string[], next: (ids: string[]) => void) => (\n    <TagSelector\n      catalog={catalog}\n      id={id}\n      choices={choices}\n      groups={groups}\n      selected={selected}\n      disabled={disabled}\n      translate={translate}\n      onChange={next}\n    />\n  );\n  const tabs = [\n    {\n      value: \"allOf\",\n      label: `${translate(markerKeys.filterInclude)}${allOf.length ? ` (${allOf.length})` : \"\"}`,\n      content: editor(allOf, (ids) =>\n        onChange(updateFilterList(template, \"allOf\", ids)),\n      ),\n    },\n    {\n      value: \"anyOf\",\n      label: `${translate(markerKeys.filterAny)}${anyOf.length ? ` (${anyOf.length})` : \"\"}`,\n      content: (\n        <div className=\"space-y-3\">\n          <div className=\"flex justify-end\">\n            <BaseButton\n              type=\"button\"\n              tone=\"muted\"\n              size=\"sm\"\n              icon={<Plus />}\n              label={translate(markerKeys.filterAddOrGroup)}\n              disabled={disabled}\n              onClick={() => {\n                const next = markerFilter(template);\n                next.anyOf = [...anyOf, []];\n                onChange(setTemplateFilter(template, next));\n              }}\n            />\n          </div>\n          {anyOf.length === 0 ? (\n            <div className=\"rounded-md border border-dashed p-3 text-sm text-muted-foreground\">\n              {translate(markerKeys.filterNoOrGroups)}\n            </div>\n          ) : (\n            anyOf.map((group, groupIndex) => (\n              <div key={groupIndex} className=\"space-y-3 rounded-md border p-3\">\n                <BaseInline gap=\"var(--global-spacing-xs)\" justify=\"between\">\n                  <span className=\"text-sm font-medium\">\n                    {translate(markerKeys.filterOrGroup, { n: groupIndex + 1 })}\n                  </span>\n                  <BaseButton\n                    type=\"button\"\n                    tone=\"muted\"\n                    size=\"sm\"\n                    iconOnly\n                    icon={<Trash2 />}\n                    ariaLabel={translate(markerKeys.filterDeleteGroup)}\n                    disabled={disabled}\n                    onClick={() =>\n                      onChange(removeAnyGroup(template, groupIndex))\n                    }\n                  />\n                </BaseInline>\n                {editor(group, (ids) =>\n                  onChange(updateAnyGroup(template, groupIndex, ids)),\n                )}\n                {group.length > 0 ? (\n                  <div className=\"flex flex-wrap gap-2\">\n                    {group.map((tagId) => {\n                      const choice = choices.find(\n                        (candidate) => candidate.id === tagId,\n                      );\n                      return (\n                        <BaseButton\n                          key={tagId}\n                          type=\"button\"\n                          tone=\"muted\"\n                          size=\"sm\"\n                          label={translate(\n                            markerKeys.filterConfigureSupplement,\n                            {\n                              name: choice?.label ?? tagId,\n                            },\n                          )}\n                          disabled={disabled}\n                          active={\n                            activeSupplement?.groupIndex === groupIndex &&\n                            activeSupplement.tagId === tagId\n                          }\n                          onClick={() =>\n                            setActiveSupplement({ groupIndex, tagId })\n                          }\n                        />\n                      );\n                    })}\n                  </div>\n                ) : null}\n                {activeSupplement?.groupIndex === groupIndex &&\n                group.includes(activeSupplement.tagId) ? (\n                  <SupplementEditor\n                    catalog={catalog}\n                    key={`${groupIndex}:${activeSupplement.tagId}`}\n                    id={`${id}-supplement-${groupIndex}-${activeSupplement.tagId}`}\n                    template={template}\n                    groupIndex={groupIndex}\n                    tagId={activeSupplement.tagId}\n                    choices={choices}\n                    groups={groups}\n                    disabled={disabled}\n                    translate={translate}\n                    onChange={onChange}\n                  />\n                ) : null}\n              </div>\n            ))\n          )}\n          {advancedRules.length > 0 ? (\n            <div className=\"space-y-2 rounded-md border border-dashed p-3 text-sm\">\n              <div className=\"font-medium\">\n                {translate(markerKeys.filterAdvancedRules, {\n                  count: advancedRules.length,\n                })}\n              </div>\n              <div className=\"text-xs text-muted-foreground\">\n                {translate(markerKeys.filterAdvancedRulesDescription)}\n              </div>\n              <BaseButton\n                type=\"button\"\n                tone=\"muted\"\n                size=\"sm\"\n                label={translate(markerKeys.filterRemoveAdvancedRules)}\n                disabled={disabled}\n                onClick={() => {\n                  const next = markerFilter(template);\n                  next.rules = filterRules.filter((rule) =>\n                    isSupplementRule(rule),\n                  );\n                  if (rules(next.rules).length === 0) delete next.rules;\n                  onChange(setTemplateFilter(template, next));\n                }}\n              />\n            </div>\n          ) : null}\n        </div>\n      ),\n    },\n    {\n      value: \"noneOf\",\n      label: `${translate(markerKeys.filterExclude)}${noneOf.length ? ` (${noneOf.length})` : \"\"}`,\n      content: editor(noneOf, (ids) =>\n        onChange(updateFilterList(template, \"noneOf\", ids)),\n      ),\n    },\n  ];\n  return (\n    <BaseTabs\n      id={`${id}-sections`}\n      value={section}\n      items={tabs}\n      onValueChange={setSection}\n      aria-label={translate(markerKeys.templateTags)}\n    />\n  );\n};\n\nconst SupplementEditor = ({\n  id,\n  template,\n  groupIndex,\n  tagId,\n  choices,\n  groups,\n  disabled,\n  translate,\n  onChange,\n  catalog,\n}: {\n  id: string;\n  template: JsonObject;\n  groupIndex: number;\n  tagId: string;\n  choices: TagChoice[];\n  groups: TagGroupChoice[];\n  disabled: boolean;\n  translate: CapabilityTranslate;\n  onChange: (template: JsonObject) => void;\n  catalog?: MarkerTagCatalog;\n}) => {\n  const filter = markerFilter(template);\n  const rule = supplementRule(filter, groupIndex, tagId);\n  const mode = requirementMode(rule);\n  const requiredAll = stringArray(rule?.requireAllOf);\n  const requiredGroups = editableStringGroups(rule?.requireAnyOf);\n  const requiredAny = requiredGroups.length === 1 ? requiredGroups[0] : [];\n  const [selectedMode, setSelectedMode] = useState<RequirementMode>(mode);\n  const applyMode = (nextMode: RequirementMode) => {\n    setSelectedMode(nextMode);\n    if (nextMode === \"and\") {\n      onChange(\n        upsertSupplementRule(template, groupIndex, tagId, {\n          requireAllOf: requiredAll,\n          requireAnyOf: [],\n        }),\n      );\n    } else if (nextMode === \"or\") {\n      onChange(\n        upsertSupplementRule(template, groupIndex, tagId, {\n          requireAllOf: [],\n          requireAnyOf: requiredAny.length > 0 ? [requiredAny] : [],\n        }),\n      );\n    } else {\n      onChange(\n        upsertSupplementRule(template, groupIndex, tagId, {\n          requireAllOf: requiredAll,\n          requireAnyOf: requiredGroups,\n        }),\n      );\n    }\n  };\n  return (\n    <div className=\"space-y-3 rounded-md border bg-muted/10 p-3\">\n      <BaseInline gap=\"var(--global-spacing-xs)\" justify=\"between\">\n        <span className=\"text-sm font-medium\">\n          {translate(markerKeys.filterSupplement, { name: tagId })}\n        </span>\n        <BaseButton\n          type=\"button\"\n          tone=\"muted\"\n          size=\"sm\"\n          label={translate(markerKeys.filterClearSupplement)}\n          disabled={disabled}\n          onClick={() =>\n            onChange(\n              upsertSupplementRule(template, groupIndex, tagId, {\n                requireAllOf: [],\n                requireAnyOf: [],\n              }),\n            )\n          }\n        />\n      </BaseInline>\n      <BaseTabs\n        id={`${id}-mode`}\n        value={selectedMode}\n        aria-label={translate(markerKeys.filterSupplementMode)}\n        items={[\n          { value: \"or\", label: translate(markerKeys.filterModeOr) },\n          { value: \"and\", label: translate(markerKeys.filterModeAnd) },\n          {\n            value: \"and_or\",\n            label: translate(markerKeys.filterModeCombination),\n          },\n        ]}\n        onValueChange={(value) => applyMode(value as RequirementMode)}\n      />\n      {selectedMode === \"and\" || selectedMode === \"and_or\" ? (\n        <BaseField label={translate(markerKeys.filterRequiredAll)}>\n          <TagSelector\n      catalog={catalog}\n            id={`${id}-all`}\n            choices={choices}\n            groups={groups}\n            selected={requiredAll}\n            disabled={disabled}\n            translate={translate}\n            onChange={(ids) =>\n              onChange(\n                upsertSupplementRule(template, groupIndex, tagId, {\n                  requireAllOf: ids,\n                }),\n              )\n            }\n          />\n        </BaseField>\n      ) : null}\n      {selectedMode === \"or\" ? (\n        <BaseField label={translate(markerKeys.filterRequiredAny)}>\n          <TagSelector\n      catalog={catalog}\n            id={`${id}-any`}\n            choices={choices}\n            groups={groups}\n            selected={requiredAny}\n            disabled={disabled}\n            translate={translate}\n            onChange={(ids) =>\n              onChange(\n                upsertSupplementRule(template, groupIndex, tagId, {\n                  requireAnyOf: ids.length > 0 ? [ids] : [],\n                }),\n              )\n            }\n          />\n        </BaseField>\n      ) : null}\n      {selectedMode === \"and_or\" ? (\n        <div className=\"space-y-3\">\n          <BaseInline gap=\"var(--global-spacing-xs)\" justify=\"between\">\n            <span className=\"text-sm font-medium\">\n              {translate(markerKeys.filterRequiredAny)}\n            </span>\n            <BaseButton\n              type=\"button\"\n              tone=\"muted\"\n              size=\"sm\"\n              icon={<Plus />}\n              label={translate(markerKeys.filterAddOrGroup)}\n              disabled={disabled}\n              onClick={() =>\n                onChange(\n                  upsertSupplementRule(template, groupIndex, tagId, {\n                    requireAnyOf: [...requiredGroups, []],\n                  }),\n                )\n              }\n            />\n          </BaseInline>\n          {requiredGroups.map((requiredGroup, index) => (\n            <div key={index} className=\"space-y-2 rounded-md border p-3\">\n              <BaseInline gap=\"var(--global-spacing-xs)\" justify=\"between\">\n                <span className=\"text-sm font-medium\">\n                  {translate(markerKeys.filterOrGroup, { n: index + 1 })}\n                </span>\n                <BaseButton\n                  type=\"button\"\n                  tone=\"muted\"\n                  size=\"sm\"\n                  iconOnly\n                  icon={<Trash2 />}\n                  ariaLabel={translate(markerKeys.filterDeleteGroup)}\n                  disabled={disabled}\n                  onClick={() =>\n                    onChange(\n                      upsertSupplementRule(template, groupIndex, tagId, {\n                        requireAnyOf: requiredGroups.filter(\n                          (_group, groupIndex) => groupIndex !== index,\n                        ),\n                      }),\n                    )\n                  }\n                />\n              </BaseInline>\n              <TagSelector\n      catalog={catalog}\n                id={`${id}-group-${index}`}\n                choices={choices}\n                groups={groups}\n                selected={requiredGroup}\n                disabled={disabled}\n                translate={translate}\n                onChange={(ids) => {\n                  const next = [...requiredGroups];\n                  next[index] = ids;\n                  onChange(\n                    upsertSupplementRule(template, groupIndex, tagId, {\n                      requireAnyOf: next,\n                    }),\n                  );\n                }}\n              />\n            </div>\n          ))}\n        </div>\n      ) : null}\n    </div>\n  );\n};\n\nexport const OntologyMarkerEditor = ({\n  contextId,\n  defaults,\n  presets,\n  newTemplate,\n  translate,\n  disabled,\n  tagCatalog,\n}: {\n  contextId: string;\n  defaults: JsonObject;\n  presets: JsonObject[];\n  newTemplate?: JsonObject;\n  translate: CapabilityTranslate;\n  disabled: boolean;\n  tagCatalog?: MarkerTagCatalog;\n}) => {\n  const initialTemplates = Array.isArray(defaults.defaultViewTemplates)\n    ? defaults.defaultViewTemplates.map((template) =>\n        isJsonObject(template) ? { ...template } : {},\n      )\n    : [];\n  const [templates, setTemplates] = useState<JsonObject[]>(initialTemplates);\n  const [openTemplate, setOpenTemplate] = useState<string>();\n  const choices = useMemo(\n    () => tagChoices(defaults.tagChoices),\n    [defaults.tagChoices],\n  );\n  const groups = useMemo(\n    () => tagGroupChoices(defaults.tagGroupChoices),\n    [defaults.tagGroupChoices],\n  );\n  const id = (name: string) => `ontology-management-${contextId}-${name}`;\n  const setTemplate = (index: number, template: JsonObject) =>\n    setTemplates((current) =>\n      current.map((candidate, currentIndex) =>\n        currentIndex === index ? template : candidate,\n      ),\n    );\n  const declaredPresets = presets.flatMap((preset) => {\n    const presetId = text(preset.id);\n    const labelKey = text(preset.labelKey);\n    const presetTemplates = Array.isArray(preset.templates)\n      ? preset.templates\n          .filter(isJsonObject)\n          .map((template) => ({ ...template }))\n      : [];\n    return presetId && labelKey\n      ? [{ id: presetId, labelKey, templates: presetTemplates }]\n      : [];\n  });\n  return (\n    <>\n      <BaseField\n        label={translate(markerKeys.targetOntology)}\n        htmlFor={id(\"target-ontology\")}\n      >\n        <BaseInput\n          id={id(\"target-ontology\")}\n          value={text(defaults.displayName) ?? \"\"}\n          disabled\n          readOnly\n        />\n      </BaseField>\n      <BaseField\n        label={translate(markerKeys.label)}\n        htmlFor={id(\"label\")}\n        required\n      >\n        <BaseInput\n          id={id(\"label\")}\n          name=\"label\"\n          defaultValue={text(defaults.markerLabel) ?? (text(defaults.markerLabelKey) ? translate(String(defaults.markerLabelKey)) : \"\")}\n          required\n          disabled={disabled}\n        />\n      </BaseField>\n      <div className=\"space-y-3 rounded-md border bg-muted/20 p-3\">\n        <BaseInline gap=\"var(--global-spacing-xs)\" justify=\"between\">\n          <div className=\"min-w-0\">\n            <div className=\"text-sm font-medium\">\n              {translate(markerKeys.defaultViewTemplates)}\n            </div>\n            <div className=\"text-xs text-muted-foreground\">\n              {translate(markerKeys.defaultViewTemplatesDescription)}\n            </div>\n          </div>\n          <div className=\"flex w-full flex-wrap items-center gap-2 sm:w-auto sm:justify-end\">\n            {declaredPresets.map((preset) => (\n              <BaseButton\n                key={preset.id}\n                type=\"button\"\n                tone=\"muted\"\n                size=\"sm\"\n                label={translate(preset.labelKey)}\n                disabled={disabled}\n                onClick={() => setTemplates(preset.templates)}\n              />\n            ))}\n            <BaseButton\n              type=\"button\"\n              tone=\"muted\"\n              size=\"sm\"\n              icon={<Plus />}\n              label={translate(markerKeys.addTemplate)}\n              disabled={disabled}\n              onClick={() => {\n                const index = templates.length;\n                const keyPrefix = text(newTemplate?.keyPrefix) ?? \"default-\";\n                const namePrefix =\n                  typeof newTemplate?.namePrefix === \"string\" &&\n                  newTemplate.namePrefix.trim()\n                    ? newTemplate.namePrefix\n                    : \"\";\n                setTemplates((current) => [\n                  ...current,\n                  {\n                    key: `${keyPrefix}${index + 1}`,\n                    name: `${namePrefix}${index + 1}`,\n                    viewType: text(newTemplate?.viewType) ?? \"filter\",\n                    sort: index,\n                  },\n                ]);\n                setOpenTemplate(`template-${index}`);\n              }}\n            />\n          </div>\n        </BaseInline>\n        {templates.length === 0 ? (\n          <div className=\"rounded-md border border-dashed bg-background/60 p-3 text-sm text-muted-foreground\">\n            {translate(markerKeys.noTemplates)}\n          </div>\n        ) : (\n          <div className=\"space-y-3\">\n            {templates.map((template, index) => {\n              const filter = markerFilter(template);\n              const columns = templateColumns(template);\n              const preferred = preferredModeKey(template);\n              return (\n                <div\n                  key={`${text(template.key) ?? \"template\"}-${index}`}\n                  className=\"overflow-hidden rounded-md border bg-background\"\n                >\n                  <div className=\"space-y-3 p-3\">\n                    <BaseInline\n                      gap=\"var(--global-spacing-xs)\"\n                      justify=\"between\"\n                    >\n                      <div className=\"min-w-0 space-y-2\">\n                        <div>\n                          <div className=\"truncate text-sm font-medium\">\n                            {text(template.name) ??\n                              translate(markerKeys.defaultViewTemplate)}\n                          </div>\n                          <div className=\"truncate text-xs text-muted-foreground\">\n                            {text(template.key) ??\n                              translate(markerKeys.templateKey)}\n                          </div>\n                        </div>\n                        <div className=\"flex flex-wrap items-center gap-1.5\">\n                          {text(template.profile) ? (\n                            <BaseBadge\n                              tone=\"muted\"\n                              label={text(template.profile)}\n                            />\n                          ) : null}\n                          {typeof template.sort === \"number\" &&\n                          template.sort > 0 ? (\n                            <BaseBadge\n                              tone=\"muted\"\n                              label={`${translate(markerKeys.sort)}: ${template.sort}`}\n                            />\n                          ) : null}\n                          {hasCreatorCurrentUser(filter) ? (\n                            <BaseBadge\n                              tone=\"muted\"\n                              label={translate(\n                                markerKeys.creatorCurrentUserShort,\n                              )}\n                            />\n                          ) : null}\n                          {template.defaultSelected === true ? (\n                            <BaseBadge\n                              tone=\"muted\"\n                              label={translate(markerKeys.defaultSelectedView)}\n                            />\n                          ) : null}\n                          {preferred ? (\n                            <BaseBadge\n                              tone=\"muted\"\n                              label={translate(preferred)}\n                            />\n                          ) : null}\n                          <BaseBadge\n                            tone={hasTagFilter(filter) ? \"primary\" : \"muted\"}\n                            label={translate(\n                              hasTagFilter(filter)\n                                ? markerKeys.tagFilterEnabled\n                                : markerKeys.tagFilterEmpty,\n                            )}\n                          />\n                        </div>\n                      </div>\n                      <BaseButton\n                        type=\"button\"\n                        tone=\"muted\"\n                        size=\"sm\"\n                        iconOnly\n                        icon={<Trash2 />}\n                        ariaLabel={translate(markerKeys.deleteTemplate)}\n                        disabled={disabled}\n                        onClick={() =>\n                          setTemplates((current) =>\n                            current.filter(\n                              (_candidate, currentIndex) =>\n                                currentIndex !== index,\n                            ),\n                          )\n                        }\n                      />\n                    </BaseInline>\n                    {columns.length > 0 ? (\n                      <div className=\"flex flex-wrap items-center gap-1.5 rounded-md border bg-muted/20 p-2 text-xs text-muted-foreground\">\n                        <Columns3 className=\"h-3.5 w-3.5 text-foreground\" />\n                        <span className=\"font-medium text-foreground\">\n                          {translate(markerKeys.tableColumnsSummary)}\n                        </span>\n                        {columns.slice(0, 5).map((column) => (\n                          <span\n                            key={column}\n                            className=\"rounded-sm bg-background px-1.5 py-0.5\"\n                          >\n                            {column}\n                          </span>\n                        ))}\n                        {columns.length > 5 ? (\n                          <span className=\"rounded-sm bg-background px-1.5 py-0.5\">\n                            +{columns.length - 5}\n                          </span>\n                        ) : null}\n                      </div>\n                    ) : null}\n                  </div>\n                  <BaseAccordion\n                    value={openTemplate}\n                    onValueChange={setOpenTemplate}\n                    items={[\n                      {\n                        value: `template-${index}`,\n                        title: (\n                          <span className=\"min-w-0 text-left\">\n                            <span className=\"block truncate font-medium\">\n                              {translate(markerKeys.editTemplateDetails)}\n                            </span>\n                            <span className=\"block truncate text-xs text-muted-foreground\">\n                              {translate(\n                                markerKeys.editTemplateDetailsDescription,\n                              )}\n                            </span>\n                          </span>\n                        ),\n                        content: (\n                          <div className=\"space-y-3 rounded-md border bg-muted/10 p-3\">\n                            <div className=\"grid gap-3 sm:grid-cols-2\">\n                              <BaseField\n                                label={translate(markerKeys.templateKey)}\n                                htmlFor={id(`template-${index}-key`)}\n                              >\n                                <BaseInput\n                                  id={id(`template-${index}-key`)}\n                                  value={String(template.key ?? \"\")}\n                                  disabled={disabled}\n                                  onChange={(event) =>\n                                    setTemplates((current) =>\n                                      updateTemplate(current, index, {\n                                        key: event.currentTarget.value,\n                                      }),\n                                    )\n                                  }\n                                />\n                              </BaseField>\n                              <BaseField\n                                label={translate(markerKeys.templateName)}\n                                htmlFor={id(`template-${index}-name`)}\n                                required\n                              >\n                                <BaseInput\n                                  id={id(`template-${index}-name`)}\n                                  value={String(template.name ?? \"\")}\n                                  required\n                                  disabled={disabled}\n                                  onChange={(event) =>\n                                    setTemplates((current) =>\n                                      updateTemplate(current, index, {\n                                        name: event.currentTarget.value,\n                                      }),\n                                    )\n                                  }\n                                />\n                              </BaseField>\n                              <BaseField\n                                label={translate(markerKeys.profile)}\n                                htmlFor={id(`template-${index}-profile`)}\n                              >\n                                <BaseInput\n                                  id={id(`template-${index}-profile`)}\n                                  value={String(template.profile ?? \"\")}\n                                  disabled={disabled}\n                                  onChange={(event) =>\n                                    setTemplates((current) =>\n                                      updateTemplate(current, index, {\n                                        profile: event.currentTarget.value,\n                                      }),\n                                    )\n                                  }\n                                />\n                              </BaseField>\n                              <BaseField\n                                label={translate(markerKeys.sort)}\n                                htmlFor={id(`template-${index}-sort`)}\n                              >\n                                <BaseInput\n                                  id={id(`template-${index}-sort`)}\n                                  inputMode=\"numeric\"\n                                  value={String(template.sort ?? \"\")}\n                                  disabled={disabled}\n                                  onChange={(event) =>\n                                    setTemplates((current) =>\n                                      updateTemplate(current, index, {\n                                        sort: event.currentTarget.value,\n                                      }),\n                                    )\n                                  }\n                                />\n                              </BaseField>\n                            </div>\n                            <BaseField\n                              label={translate(markerKeys.templateDescription)}\n                              htmlFor={id(`template-${index}-description`)}\n                            >\n                              <BaseInput\n                                id={id(`template-${index}-description`)}\n                                value={String(template.description ?? \"\")}\n                                disabled={disabled}\n                                onChange={(event) =>\n                                  setTemplates((current) =>\n                                    updateTemplate(current, index, {\n                                      description: event.currentTarget.value,\n                                    }),\n                                  )\n                                }\n                              />\n                            </BaseField>\n                            <BaseCheckbox\n                              name=\"\"\n                              label={translate(markerKeys.creatorCurrentUser)}\n                              checked={hasCreatorCurrentUser(filter)}\n                              disabled={disabled}\n                              onChange={(event) =>\n                                setTemplate(\n                                  index,\n                                  setCreatorCurrentUser(\n                                    template,\n                                    event.currentTarget.checked,\n                                  ),\n                                )\n                              }\n                            />\n                            <div className=\"space-y-2\">\n                              <div>\n                                <div className=\"text-sm font-medium\">\n                                  {translate(markerKeys.templateTags)}\n                                </div>\n                                <div className=\"text-xs text-muted-foreground\">\n                                  {translate(\n                                    markerKeys.templateTagsDescription,\n                                  )}\n                                </div>\n                              </div>\n                              <MarkerFilterEditor\n                                catalog={tagCatalog}\n                                id={id(`template-${index}-filter`)}\n                                template={template}\n                                choices={choices}\n                                groups={groups}\n                                disabled={disabled}\n                                translate={translate}\n                                onChange={(next) => setTemplate(index, next)}\n                              />\n                            </div>\n                          </div>\n                        ),\n                      },\n                    ]}\n                  />\n                </div>\n              );\n            })}\n          </div>\n        )}\n      </div>\n      <input\n        type=\"hidden\"\n        name=\"defaultViewTemplates\"\n        value={JSON.stringify(templates)}\n      />\n    </>\n  );\n};\n","import { cursorPaginationSchema } from './paginationSchema';\nimport type { JsonObject, JsonValue } from \"@inf-monkeys-tech/monkeys\";\nimport {\n  type ChangeEvent,\n  type FormEvent,\n  type ReactNode,\n  useState,\n} from \"react\";\n\nimport {\n  BaseButton,\n  BaseAccordion,\n  BaseBadge,\n  BaseCheckbox,\n  BaseDialog,\n  BaseField,\n  BaseFieldset,\n  BaseInput,\n  BaseInline,\n  BaseSelect,\n  BaseStack,\n  BaseSwitch,\n  BaseTextarea,\n  BaseToolbar,\n  BaseTabs,\n} from \"../base\";\nimport { CapabilityStatus } from \"./CapabilityStatus\";\nimport type {\n  CapabilityTranslate,\n  DesignCapabilityRenderer,\n} from \"./contracts\";\nimport { isJsonObject } from \"./contracts\";\nimport { DESIGN_CAPABILITY_I18N_KEYS } from \"./i18n\";\nimport {\n  normalizeOntologyMarkerTemplates,\n  OntologyMarkerEditor,\n  type MarkerTagCatalog,\n} from \"./ontologyMarkerEditor\";\n\nconst JSON_SCHEMA_DIALECT = \"https://json-schema.org/draft/2020-12/schema\";\n\nconst jsonSchema = (id: string, definition: JsonObject): JsonObject => ({\n  $schema: JSON_SCHEMA_DIALECT,\n  $id: id,\n  ...definition,\n});\n\nconst optionalText = (value: unknown) =>\n  typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n\nconst requiredText = (value: unknown, name: string) => {\n  const normalized = optionalText(value);\n  if (!normalized) throw new TypeError(`${name} is required.`);\n  return normalized;\n};\n\nconst optionalNonnegativeInteger = (value: unknown, name: string) => {\n  const normalized = optionalText(value);\n  if (!normalized) return undefined;\n  const parsed = Number(normalized);\n  if (!Number.isSafeInteger(parsed) || parsed < 0) {\n    throw new TypeError(`${name} must be a nonnegative integer.`);\n  }\n  return parsed;\n};\n\nconst optionalBoundedInteger = (\n  value: unknown,\n  name: string,\n  minimum: number,\n  maximum: number,\n) => {\n  const normalized = optionalText(value);\n  if (!normalized) return undefined;\n  const parsed = Number(normalized);\n  if (!Number.isSafeInteger(parsed) || parsed < minimum || parsed > maximum) {\n    throw new TypeError(\n      `${name} must be an integer between ${minimum} and ${maximum}.`,\n    );\n  }\n  return parsed;\n};\n\nconst includeText = (target: JsonObject, name: string, value: unknown) => {\n  const normalized = optionalText(value);\n  if (normalized) target[name] = normalized;\n};\n\nconst optionalJsonObject = (value: unknown, name: string) => {\n  const normalized = optionalText(value);\n  if (!normalized) return undefined;\n  let parsed: unknown;\n  try {\n    parsed = JSON.parse(normalized);\n  } catch {\n    throw new TypeError(`${name} must be valid JSON.`);\n  }\n  if (!isJsonObject(parsed)) {\n    throw new TypeError(`${name} must be a JSON object.`);\n  }\n  return parsed;\n};\n\nconst optionalJsonObjectOrNull = (value: unknown, name: string) => {\n  const normalized = optionalText(value);\n  if (!normalized) return undefined;\n  if (normalized === \"null\") return null;\n  return optionalJsonObject(normalized, name);\n};\n\nconst requiredModelVersion = (model: JsonObject, name: string) => {\n  const value = Number(model[name]);\n  if (!Number.isSafeInteger(value) || value <= 0) {\n    throw new TypeError(`${name} is required.`);\n  }\n  return value;\n};\n\nconst optionalCsv = (value: unknown, name: string, maximum: number) => {\n  const items = commaSeparatedValues(value);\n  if (items.length > maximum) {\n    throw new TypeError(`${name} must contain at most ${maximum} values.`);\n  }\n  if (items.some((item) => item.length > 256)) {\n    throw new TypeError(`${name} values must contain at most 256 characters.`);\n  }\n  return items.length ? items : undefined;\n};\n\nconst optionalNullableNonnegativeInteger = (value: unknown, name: string) => {\n  const normalized = optionalText(value);\n  if (!normalized) return undefined;\n  if (normalized === \"null\") return null;\n  return optionalNonnegativeInteger(normalized, name);\n};\n\nconst requiredBoolean = (value: unknown, name: string) => {\n  if (value === true || value === \"true\") return true;\n  if (value === false || value === \"false\") return false;\n  throw new TypeError(`${name} must be true or false.`);\n};\n\nexport const ONTOLOGY_MANAGEMENT_SCHEMA =\n  \"monkeys-design://ontology-editor/management-actions/v6\";\n\nexport const ONTOLOGY_MANAGEMENT_ACTIONS = Object.freeze([\n  \"ontology-create\",\n  \"ontology-update\",\n  \"ontology-delete\",\n  \"ontology-marker\",\n  \"ontology-default-views\",\n  \"ontology-snapshot\",\n  \"ontology-import-jsonl\",\n  \"ontology-import-records-jsonl\",\n  \"ontology-import-tag-relations-jsonl\",\n  \"ontology-import-text-column-jsonl\",\n  \"ontology-import-json-column-jsonl\",\n  \"ontology-import-relation-column-jsonl\",\n  \"feature-column-create\",\n  \"feature-column-update\",\n  \"feature-column-attachment-set\",\n  \"view-export-jsonl\",\n  \"feature-column-images-export\",\n  \"view-create\",\n  \"view-update\",\n  \"view-delete\",\n  \"view-share\",\n] as const);\n\nexport type OntologyManagementAction =\n  (typeof ONTOLOGY_MANAGEMENT_ACTIONS)[number];\n\nconst actionIntentRef = (action: OntologyManagementAction) =>\n  `monkeys-design://intent/ontology-management-${action}/v6`;\n\nexport const ONTOLOGY_MANAGEMENT_RENDER_MODEL_SCHEMA = jsonSchema(\n  ONTOLOGY_MANAGEMENT_SCHEMA,\n  {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"resourceKind\", \"action\", \"contextId\"],\n    properties: {\n      title: { type: \"string\" },\n      titleKey: { type: \"string\", minLength: 1 },\n      description: { type: \"string\" },\n      descriptionKey: { type: \"string\", minLength: 1 },\n      submitLabelKey: { type: \"string\", minLength: 1 },\n      cancelLabelKey: { type: \"string\", minLength: 1 },\n      resourceKind: {\n        enum: [\"ontology\", \"view\", \"feature-column\", \"export\"],\n      },\n      action: { enum: [...ONTOLOGY_MANAGEMENT_ACTIONS] },\n      contextId: { type: \"string\", minLength: 1, maxLength: 256 },\n      tagSearch: { type: \"string\", maxLength: 512 },\n      pagination: cursorPaginationSchema(),\n      expectedDefinitionVersion: { type: \"integer\", minimum: 1 },\n      expectedOntologyDefinitionVersion: { type: \"integer\", minimum: 1 },\n      expectedViewDefinitionVersion: { type: \"integer\", minimum: 1 },\n      markerVersion: { type: \"integer\", minimum: 0 },\n      markerPresets: {\n        type: \"array\",\n        maxItems: 16,\n        items: {\n          type: \"object\",\n          additionalProperties: false,\n          required: [\"id\", \"labelKey\", \"templates\"],\n          properties: {\n            id: { type: \"string\", minLength: 1, maxLength: 128 },\n            labelKey: { type: \"string\", minLength: 1, maxLength: 256 },\n            templates: {\n              type: \"array\",\n              maxItems: 64,\n              items: { type: \"object\", additionalProperties: true },\n            },\n          },\n        },\n      },\n      newMarkerTemplate: {\n        type: \"object\",\n        additionalProperties: false,\n        properties: {\n          keyPrefix: { type: \"string\", maxLength: 64 },\n          namePrefix: { type: \"string\", maxLength: 128 },\n          viewType: { type: \"string\", maxLength: 64 },\n        },\n      },\n      defaults: {\n        type: \"object\",\n        additionalProperties: false,\n        properties: {\n          displayName: { type: \"string\" },\n          description: { type: \"string\" },\n          bodyKind: { type: \"string\" },\n          visible: { type: \"boolean\" },\n          publicRead: { type: \"boolean\" },\n          publicWrite: { type: \"boolean\" },\n          kernelReadAllTeams: { type: \"boolean\" },\n          customizeViewModes: { type: \"boolean\" },\n          availableViewModes: {\n            type: \"array\",\n            items: { type: \"string\" },\n          },\n          defaultViewMode: { type: \"string\" },\n          viewModeOptions: {\n            type: \"array\",\n            items: {\n              type: \"object\",\n              additionalProperties: false,\n              required: [\"id\", \"labelKey\"],\n              properties: {\n                id: { type: \"string\", minLength: 1 },\n                labelKey: { type: \"string\", minLength: 1 },\n              },\n            },\n          },\n          profile: { type: \"string\" },\n          sourceOntologyId: { type: \"string\" },\n          viewId: { type: \"string\" },\n          name: { type: \"string\" },\n          indexMode: { type: \"string\" },\n          parentId: { type: \"string\" },\n          viewType: { enum: [\"filter\", \"container\"] },\n          sourceContainerViewId: { type: \"string\" },\n          displayConfig: {\n            type: \"object\",\n            additionalProperties: true,\n          },\n          sort: { type: \"integer\", minimum: 0 },\n          managedFileId: { type: \"string\" },\n          mode: { type: \"string\" },\n          columnId: { type: \"string\" },\n          containerViewId: { type: \"string\" },\n          type: { type: \"string\" },\n          config: { type: [\"object\", \"null\"], additionalProperties: true },\n          scopeContainerViewId: { type: \"string\" },\n          attached: { type: \"boolean\" },\n          pageSize: { type: \"integer\", minimum: 1 },\n          tagGroupIds: { type: \"string\" },\n          featureColumnIds: { type: \"string\" },\n          basicFieldIds: { type: \"string\" },\n          columnType: { enum: [\"feature\", \"preview\"] },\n          featureColumnId: { type: \"string\" },\n          itemLimit: { type: \"integer\", minimum: 1 },\n          shareOperation: { enum: [\"upsert\", \"revoke\"] },\n          targetType: { enum: [\"user\", \"team\"] },\n          targetId: { type: \"string\" },\n          permissions: { type: \"string\" },\n          expiresAt: { type: \"integer\", minimum: 1 },\n          markerExists: { type: \"boolean\" },\n          markerVersion: { type: \"integer\", minimum: 0 },\n          markerLabel: { type: \"string\", maxLength: 128 },\n          markerLabelKey: { type: \"string\", minLength: 1, maxLength: 256 },\n          defaultViewTemplates: {\n            type: \"array\",\n            maxItems: 64,\n            items: { type: \"object\", additionalProperties: true },\n          },\n          tagChoices: {\n            type: \"array\",\n            maxItems: 500,\n            items: {\n              type: \"object\",\n              additionalProperties: false,\n              required: [\"id\", \"label\"],\n              properties: {\n                id: { type: \"string\", minLength: 1, maxLength: 256 },\n                label: { type: \"string\", minLength: 1, maxLength: 512 },\n                color: { type: \"string\", maxLength: 128 },\n                groupId: { type: \"string\", minLength: 1, maxLength: 256 },\n              },\n            },\n          },\n          tagGroupChoices: {\n            type: \"array\",\n            maxItems: 500,\n            items: {\n              type: \"object\",\n              additionalProperties: false,\n              required: [\"id\", \"label\"],\n              properties: {\n                id: { type: \"string\", minLength: 1, maxLength: 256 },\n                label: { type: \"string\", minLength: 1, maxLength: 512 },\n              },\n            },\n          },\n        },\n      },\n      submitting: { type: \"boolean\" },\n      disabled: { type: \"boolean\" },\n      errorCode: { type: \"string\", minLength: 1, maxLength: 128 },\n    },\n    allOf: [\n      {\n        if: {\n          properties: { action: { const: \"ontology-marker\" } },\n          required: [\"action\"],\n        },\n        then: { required: [\"markerVersion\"] },\n      },\n      {\n        if: {\n          properties: {\n            action: {\n              enum: [\n                \"ontology-update\",\n                \"ontology-delete\",\n                \"ontology-marker\",\n                \"ontology-default-views\",\n                \"view-update\",\n                \"view-delete\",\n                \"view-share\",\n                \"feature-column-update\",\n                \"ontology-import-records-jsonl\",\n                \"ontology-import-tag-relations-jsonl\",\n                \"ontology-import-text-column-jsonl\",\n                \"ontology-import-json-column-jsonl\",\n                \"ontology-import-relation-column-jsonl\",\n              ],\n            },\n          },\n          required: [\"action\"],\n        },\n        then: { required: [\"expectedDefinitionVersion\"] },\n      },\n      {\n        if: {\n          properties: { action: { const: \"feature-column-create\" } },\n          required: [\"action\"],\n        },\n        then: { required: [\"expectedOntologyDefinitionVersion\"] },\n      },\n      {\n        if: {\n          properties: {\n            action: {\n              enum: [\n                \"feature-column-attachment-set\",\n                \"view-export-jsonl\",\n                \"feature-column-images-export\",\n              ],\n            },\n          },\n          required: [\"action\"],\n        },\n        then: { required: [\"expectedViewDefinitionVersion\"] },\n      },\n    ],\n  },\n);\n\nconst strictIntent = (\n  action: OntologyManagementAction,\n  properties: JsonObject,\n  required: string[],\n) =>\n  jsonSchema(actionIntentRef(action), {\n    type: \"object\",\n    additionalProperties: false,\n    properties,\n    ...(required.length ? { required } : {}),\n  });\n\nexport const ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS = Object.freeze({\n  cancel: jsonSchema(\"monkeys-design://intent/ontology-management-cancel/v6\", {\n    type: \"object\",\n    additionalProperties: false,\n    properties: {},\n  }),\n  ontologyCreate: strictIntent(\n    \"ontology-create\",\n    {\n      displayName: { type: \"string\", minLength: 1, maxLength: 512 },\n      description: { type: \"string\", maxLength: 8192 },\n      bodyKind: { type: \"string\", minLength: 1, maxLength: 256 },\n      visible: { type: \"boolean\" },\n      publicRead: { type: \"boolean\" },\n      publicWrite: { type: \"boolean\" },\n      kernelReadAllTeams: { type: \"boolean\" },\n      displayConfig: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"availableViewModes\", \"defaultViewMode\"],\n        properties: {\n          availableViewModes: {\n            type: \"array\",\n            minItems: 1,\n            uniqueItems: true,\n            items: { type: \"string\", minLength: 1, maxLength: 128 },\n          },\n          defaultViewMode: { type: \"string\", minLength: 1, maxLength: 128 },\n        },\n      },\n    },\n    [\"displayName\"],\n  ),\n  ontologyUpdate: strictIntent(\n    \"ontology-update\",\n    {\n      expectedDefinitionVersion: { type: \"integer\", minimum: 1 },\n      changes: {\n        type: \"object\",\n        additionalProperties: false,\n        minProperties: 1,\n        properties: {\n          displayName: { type: \"string\", minLength: 1, maxLength: 512 },\n          description: { type: \"string\", maxLength: 8192 },\n          bodyKind: { type: \"string\", minLength: 1, maxLength: 256 },\n        },\n      },\n    },\n    [\"expectedDefinitionVersion\", \"changes\"],\n  ),\n  ontologyDelete: strictIntent(\n    \"ontology-delete\",\n    { expectedDefinitionVersion: { type: \"integer\", minimum: 1 } },\n    [\"expectedDefinitionVersion\"],\n  ),\n  ontologyMarkerSet: strictIntent(\n    \"ontology-marker\",\n    {\n      expectedDefinitionVersion: { type: \"integer\", minimum: 1 },\n      expectedVersion: { type: \"integer\", minimum: 0 },\n      label: { type: \"string\", minLength: 1, maxLength: 128 },\n      config: {\n        type: \"object\",\n        additionalProperties: false,\n        properties: {\n          defaultViewTemplates: {\n            type: \"array\",\n            maxItems: 64,\n            items: { type: \"object\", additionalProperties: true },\n          },\n        },\n      },\n    },\n    [\"expectedDefinitionVersion\", \"expectedVersion\", \"label\", \"config\"],\n  ),\n  ontologyMarkerDelete: jsonSchema(\n    \"monkeys-design://intent/ontology-management-ontology-marker-delete/v6\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"expectedDefinitionVersion\", \"expectedVersion\"],\n      properties: { expectedDefinitionVersion: { type: \"integer\", minimum: 1 }, expectedVersion: { type: \"integer\", minimum: 1 } },\n    },\n  ),\n  ontologyDefaultViews: strictIntent(\n    \"ontology-default-views\",\n    { expectedDefinitionVersion: { type: \"integer\", minimum: 1 }, profile: { type: \"string\", minLength: 1, maxLength: 128 } },\n    [\"expectedDefinitionVersion\"],\n  ),\n  ontologySnapshot: strictIntent(\n    \"ontology-snapshot\",\n    {\n      sourceOntologyId: { type: \"string\", minLength: 1, maxLength: 256 },\n      viewId: { type: \"string\", minLength: 1, maxLength: 256 },\n      name: { type: \"string\", minLength: 1, maxLength: 512 },\n      indexMode: { type: \"string\", minLength: 1, maxLength: 128 },\n    },\n    [\"sourceOntologyId\"],\n  ),\n  ontologyImportJsonl: strictIntent(\n    \"ontology-import-jsonl\",\n    {\n      managedFileRef: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"kind\", \"id\"],\n        properties: {\n          kind: { const: \"managed-file\" },\n          id: { type: \"string\", minLength: 1, maxLength: 256 },\n        },\n      },\n    },\n    [\"managedFileRef\"],\n  ),\n  ontologyImportRecordsJsonl: strictIntent(\n    \"ontology-import-records-jsonl\",\n    {\n      managedFileRef: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"kind\", \"id\"],\n        properties: {\n          kind: { const: \"managed-file\" },\n          id: { type: \"string\", minLength: 1, maxLength: 256 },\n        },\n      },\n      expectedDefinitionVersion: { type: \"integer\", minimum: 1 },\n      mode: { type: \"string\", minLength: 1, maxLength: 128 },\n      containerViewId: { type: \"string\", minLength: 1, maxLength: 256 },\n    },\n    [\"managedFileRef\", \"expectedDefinitionVersion\"],\n  ),\n  ontologyImportTagRelationsJsonl: strictIntent(\n    \"ontology-import-tag-relations-jsonl\",\n    {\n      managedFileRef: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"kind\", \"id\"],\n        properties: {\n          kind: { const: \"managed-file\" },\n          id: { type: \"string\", minLength: 1, maxLength: 256 },\n        },\n      },\n      expectedDefinitionVersion: { type: \"integer\", minimum: 1 },\n      mode: { type: \"string\", minLength: 1, maxLength: 128 },\n    },\n    [\"managedFileRef\", \"expectedDefinitionVersion\"],\n  ),\n  ontologyImportTextColumnJsonl: strictIntent(\n    \"ontology-import-text-column-jsonl\",\n    {\n      managedFileRef: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"kind\", \"id\"],\n        properties: {\n          kind: { const: \"managed-file\" },\n          id: { type: \"string\", minLength: 1, maxLength: 256 },\n        },\n      },\n      expectedDefinitionVersion: { type: \"integer\", minimum: 1 },\n      columnId: { type: \"string\", minLength: 1, maxLength: 256 },\n    },\n    [\"managedFileRef\", \"expectedDefinitionVersion\"],\n  ),\n  ontologyImportJsonColumnJsonl: strictIntent(\n    \"ontology-import-json-column-jsonl\",\n    {\n      managedFileRef: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"kind\", \"id\"],\n        properties: {\n          kind: { const: \"managed-file\" },\n          id: { type: \"string\", minLength: 1, maxLength: 256 },\n        },\n      },\n      expectedDefinitionVersion: { type: \"integer\", minimum: 1 },\n      columnId: { type: \"string\", minLength: 1, maxLength: 256 },\n    },\n    [\"managedFileRef\", \"expectedDefinitionVersion\"],\n  ),\n  ontologyImportRelationColumnJsonl: strictIntent(\n    \"ontology-import-relation-column-jsonl\",\n    {\n      managedFileRef: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"kind\", \"id\"],\n        properties: {\n          kind: { const: \"managed-file\" },\n          id: { type: \"string\", minLength: 1, maxLength: 256 },\n        },\n      },\n      expectedDefinitionVersion: { type: \"integer\", minimum: 1 },\n      columnId: { type: \"string\", minLength: 1, maxLength: 256 },\n    },\n    [\"managedFileRef\", \"expectedDefinitionVersion\"],\n  ),\n  featureColumnCreate: strictIntent(\n    \"feature-column-create\",\n    {\n      expectedOntologyDefinitionVersion: { type: \"integer\", minimum: 1 },\n      name: { type: \"string\", minLength: 1, maxLength: 512 },\n      type: { type: \"string\", minLength: 1, maxLength: 128 },\n      config: { type: \"object\", additionalProperties: true },\n      sort: { type: \"integer\", minimum: 0 },\n      scopeContainerViewId: { type: \"string\", minLength: 1, maxLength: 256 },\n    },\n    [\"expectedOntologyDefinitionVersion\", \"name\"],\n  ),\n  featureColumnUpdate: strictIntent(\n    \"feature-column-update\",\n    {\n      columnId: { type: \"string\", minLength: 1, maxLength: 256 },\n      expectedDefinitionVersion: { type: \"integer\", minimum: 1 },\n      changes: {\n        type: \"object\",\n        additionalProperties: false,\n        minProperties: 1,\n        properties: {\n          name: { type: \"string\", minLength: 1, maxLength: 512 },\n          type: { type: \"string\", minLength: 1, maxLength: 128 },\n          config: {\n            type: [\"object\", \"null\"],\n            additionalProperties: true,\n          },\n          sort: { type: [\"integer\", \"null\"], minimum: 0 },\n        },\n      },\n    },\n    [\"columnId\", \"expectedDefinitionVersion\", \"changes\"],\n  ),\n  featureColumnAttachmentSet: strictIntent(\n    \"feature-column-attachment-set\",\n    {\n      viewId: { type: \"string\", minLength: 1, maxLength: 256 },\n      columnId: { type: \"string\", minLength: 1, maxLength: 256 },\n      attached: { type: \"boolean\" },\n      expectedViewDefinitionVersion: { type: \"integer\", minimum: 1 },\n    },\n    [\"viewId\", \"columnId\", \"attached\", \"expectedViewDefinitionVersion\"],\n  ),\n  viewExportJsonl: strictIntent(\n    \"view-export-jsonl\",\n    {\n      viewId: { type: \"string\", minLength: 1, maxLength: 256 },\n      expectedViewDefinitionVersion: { type: \"integer\", minimum: 1 },\n      pageSize: { type: \"integer\", minimum: 100, maximum: 5000 },\n      tagGroupIds: {\n        type: \"array\",\n        maxItems: 200,\n        items: { type: \"string\", minLength: 1, maxLength: 256 },\n      },\n      featureColumnIds: {\n        type: \"array\",\n        maxItems: 200,\n        items: { type: \"string\", minLength: 1, maxLength: 256 },\n      },\n      basicFieldIds: {\n        type: \"array\",\n        maxItems: 2,\n        items: { enum: [\"preview\", \"thumbnail\"] },\n      },\n    },\n    [\"viewId\", \"expectedViewDefinitionVersion\"],\n  ),\n  featureColumnImagesExport: strictIntent(\n    \"feature-column-images-export\",\n    {\n      viewId: { type: \"string\", minLength: 1, maxLength: 256 },\n      expectedViewDefinitionVersion: { type: \"integer\", minimum: 1 },\n      columnType: { enum: [\"feature\", \"preview\"] },\n      featureColumnId: { type: \"string\", minLength: 1, maxLength: 256 },\n      pageSize: { type: \"integer\", minimum: 100, maximum: 1000 },\n      itemLimit: { type: \"integer\", minimum: 1, maximum: 1000000 },\n    },\n    [\"viewId\", \"expectedViewDefinitionVersion\"],\n  ),\n  viewCreate: strictIntent(\n    \"view-create\",\n    {\n      name: { type: \"string\", minLength: 1, maxLength: 512 },\n      description: { type: \"string\", maxLength: 8192 },\n      parentId: { type: \"string\", minLength: 1, maxLength: 256 },\n      viewType: { enum: [\"filter\", \"container\"] },\n      sourceContainerViewId: { type: \"string\", minLength: 1, maxLength: 256 },\n      sort: { type: \"integer\", minimum: 0 },\n    },\n    [\"name\"],\n  ),\n  viewUpdate: strictIntent(\n    \"view-update\",\n    {\n      expectedDefinitionVersion: { type: \"integer\", minimum: 1 },\n      changes: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"name\"],\n        properties: {\n          name: { type: \"string\", minLength: 1, maxLength: 512 },\n          description: { type: \"string\", maxLength: 8192 },\n          parentId: { type: [\"string\", \"null\"], maxLength: 256 },\n          viewType: { enum: [\"filter\", \"container\"] },\n          sourceContainerViewId: {\n            type: [\"string\", \"null\"],\n            maxLength: 256,\n          },\n          displayConfig: {\n            type: \"object\",\n            additionalProperties: true,\n          },\n          sort: { type: \"integer\", minimum: 0 },\n        },\n      },\n    },\n    [\"expectedDefinitionVersion\", \"changes\"],\n  ),\n  viewDelete: strictIntent(\n    \"view-delete\",\n    { expectedDefinitionVersion: { type: \"integer\", minimum: 1 } },\n    [\"expectedDefinitionVersion\"],\n  ),\n  viewShare: strictIntent(\n    \"view-share\",\n    {\n      expectedDefinitionVersion: { type: \"integer\", minimum: 1 },\n      operation: { enum: [\"upsert\", \"revoke\"] },\n      targetType: { enum: [\"user\", \"team\"] },\n      targetId: { type: \"string\", minLength: 1, maxLength: 256 },\n      permissions: {\n        type: \"array\",\n        maxItems: 64,\n        items: { type: \"string\", minLength: 1, maxLength: 256 },\n      },\n      expiresAt: { type: \"integer\", minimum: 1 },\n    },\n    [\"expectedDefinitionVersion\", \"operation\", \"targetType\", \"targetId\"],\n  ),\n});\n\nexport const ONTOLOGY_MANAGEMENT_OUTPUT_PORTS = Object.freeze([\n  {\n    name: 'capability.ontology-management.tag-search', schemaRef: 'monkeys-design://intent/ontology-management-tag-search/v1',\n    schemaDocument: jsonSchema('monkeys-design://intent/ontology-management-tag-search/v1', { type: 'object', additionalProperties: false, required: ['value'], properties: { value: { type: 'string', maxLength: 512 } } }),\n    allowedCommandKinds: ['query-intent'] as const,\n  },\n  {\n    name: 'capability.ontology-management.tags-page', schemaRef: 'monkeys-design://intent/ontology-management-tags-page/v1',\n    schemaDocument: jsonSchema('monkeys-design://intent/ontology-management-tags-page/v1', { type: 'object', additionalProperties: false, required: ['page'], properties: { page: { type: 'integer', minimum: 1 } } }),\n    allowedCommandKinds: ['query-intent'] as const,\n  },\n  {\n    name: \"capability.ontology-management.cancel\",\n    schemaRef: \"monkeys-design://intent/ontology-management-cancel/v6\",\n    schemaDocument: ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.cancel,\n    allowedCommandKinds: [\"query-intent\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.ontology.marker.set\",\n    schemaRef: actionIntentRef(\"ontology-marker\"),\n    schemaDocument: ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.ontologyMarkerSet,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.ontology.marker.delete\",\n    schemaRef:\n      \"monkeys-design://intent/ontology-management-ontology-marker-delete/v6\",\n    schemaDocument: ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.ontologyMarkerDelete,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.ontology.create\",\n    schemaRef: actionIntentRef(\"ontology-create\"),\n    schemaDocument: ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.ontologyCreate,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.ontology.update\",\n    schemaRef: actionIntentRef(\"ontology-update\"),\n    schemaDocument: ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.ontologyUpdate,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.ontology.delete\",\n    schemaRef: actionIntentRef(\"ontology-delete\"),\n    schemaDocument: ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.ontologyDelete,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.ontology.default-views.ensure\",\n    schemaRef: actionIntentRef(\"ontology-default-views\"),\n    schemaDocument: ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.ontologyDefaultViews,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.ontology.snapshot\",\n    schemaRef: actionIntentRef(\"ontology-snapshot\"),\n    schemaDocument: ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.ontologySnapshot,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.ontology.import\",\n    schemaRef: actionIntentRef(\"ontology-import-jsonl\"),\n    schemaDocument: ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.ontologyImportJsonl,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.ontology.import.records\",\n    schemaRef: actionIntentRef(\"ontology-import-records-jsonl\"),\n    schemaDocument:\n      ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.ontologyImportRecordsJsonl,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.ontology.import.tag-relations\",\n    schemaRef: actionIntentRef(\"ontology-import-tag-relations-jsonl\"),\n    schemaDocument:\n      ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.ontologyImportTagRelationsJsonl,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.ontology.import.text-column\",\n    schemaRef: actionIntentRef(\"ontology-import-text-column-jsonl\"),\n    schemaDocument:\n      ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.ontologyImportTextColumnJsonl,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.ontology.import.json-column\",\n    schemaRef: actionIntentRef(\"ontology-import-json-column-jsonl\"),\n    schemaDocument:\n      ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.ontologyImportJsonColumnJsonl,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.ontology.import.relation-column\",\n    schemaRef: actionIntentRef(\"ontology-import-relation-column-jsonl\"),\n    schemaDocument:\n      ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.ontologyImportRelationColumnJsonl,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.feature-column.create\",\n    schemaRef: actionIntentRef(\"feature-column-create\"),\n    schemaDocument: ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.featureColumnCreate,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.feature-column.update\",\n    schemaRef: actionIntentRef(\"feature-column-update\"),\n    schemaDocument: ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.featureColumnUpdate,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.feature-column.attachment.set\",\n    schemaRef: actionIntentRef(\"feature-column-attachment-set\"),\n    schemaDocument:\n      ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.featureColumnAttachmentSet,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.view.export.jsonl\",\n    schemaRef: actionIntentRef(\"view-export-jsonl\"),\n    schemaDocument: ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.viewExportJsonl,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.feature-column.images.export\",\n    schemaRef: actionIntentRef(\"feature-column-images-export\"),\n    schemaDocument:\n      ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.featureColumnImagesExport,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.view.create\",\n    schemaRef: actionIntentRef(\"view-create\"),\n    schemaDocument: ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.viewCreate,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.view.update\",\n    schemaRef: actionIntentRef(\"view-update\"),\n    schemaDocument: ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.viewUpdate,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.view.delete\",\n    schemaRef: actionIntentRef(\"view-delete\"),\n    schemaDocument: ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.viewDelete,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n  {\n    name: \"capability.ontology-management.view.share\",\n    schemaRef: actionIntentRef(\"view-share\"),\n    schemaDocument: ONTOLOGY_MANAGEMENT_INTENT_SCHEMAS.viewShare,\n    allowedCommandKinds: [\"domain-command\"] as const,\n  },\n]);\n\nexport const ONTOLOGY_MANAGEMENT_INTENT_NAMES = Object.freeze({\n  \"ontology-create\": \"capability.ontology-management.ontology.create\",\n  \"ontology-update\": \"capability.ontology-management.ontology.update\",\n  \"ontology-delete\": \"capability.ontology-management.ontology.delete\",\n  \"ontology-marker\": \"capability.ontology-management.ontology.marker.set\",\n  \"ontology-default-views\":\n    \"capability.ontology-management.ontology.default-views.ensure\",\n  \"ontology-snapshot\": \"capability.ontology-management.ontology.snapshot\",\n  \"ontology-import-jsonl\": \"capability.ontology-management.ontology.import\",\n  \"ontology-import-records-jsonl\":\n    \"capability.ontology-management.ontology.import.records\",\n  \"ontology-import-tag-relations-jsonl\":\n    \"capability.ontology-management.ontology.import.tag-relations\",\n  \"ontology-import-text-column-jsonl\":\n    \"capability.ontology-management.ontology.import.text-column\",\n  \"ontology-import-json-column-jsonl\":\n    \"capability.ontology-management.ontology.import.json-column\",\n  \"ontology-import-relation-column-jsonl\":\n    \"capability.ontology-management.ontology.import.relation-column\",\n  \"feature-column-create\":\n    \"capability.ontology-management.feature-column.create\",\n  \"feature-column-update\":\n    \"capability.ontology-management.feature-column.update\",\n  \"feature-column-attachment-set\":\n    \"capability.ontology-management.feature-column.attachment.set\",\n  \"view-export-jsonl\": \"capability.ontology-management.view.export.jsonl\",\n  \"feature-column-images-export\":\n    \"capability.ontology-management.feature-column.images.export\",\n  \"view-create\": \"capability.ontology-management.view.create\",\n  \"view-update\": \"capability.ontology-management.view.update\",\n  \"view-delete\": \"capability.ontology-management.view.delete\",\n  \"view-share\": \"capability.ontology-management.view.share\",\n} satisfies Record<OntologyManagementAction, string>);\n\nconst requiredExpectedDefinitionVersion = (model: JsonObject) => {\n  const value = Number(model.expectedDefinitionVersion);\n  if (!Number.isSafeInteger(value) || value <= 0) {\n    throw new TypeError(\"expectedDefinitionVersion is required.\");\n  }\n  return value;\n};\n\nconst commaSeparatedValues = (value: unknown) =>\n  Array.from(\n    new Set(\n      String(value ?? \"\")\n        .split(\",\")\n        .map((item) => item.trim())\n        .filter(Boolean),\n    ),\n  );\n\nconst DEFAULT_ONTOLOGY_VIEW_MODE_OPTIONS = [\n  {\n    id: \"table\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.viewModeTable,\n  },\n  {\n    id: \"card\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.viewModeCard,\n  },\n  {\n    id: \"gallery\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.viewModeGallery,\n  },\n  {\n    id: \"trendMatrix\",\n    labelKey:\n      DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.viewModeTrendMatrix,\n  },\n];\n\nconst DEFAULT_ONTOLOGY_VIEW_MODES = DEFAULT_ONTOLOGY_VIEW_MODE_OPTIONS.slice(\n  0,\n  3,\n).map(({ id }) => id);\n\nexport const buildOntologyManagementIntent = (\n  action: OntologyManagementAction,\n  model: JsonObject,\n  values: Readonly<Record<string, unknown>>,\n): JsonObject => {\n  if (action === \"ontology-create\") {\n    const result: JsonObject = {\n      displayName: requiredText(values.displayName, \"displayName\"),\n      visible: requiredBoolean(values.visible, \"visible\"),\n      publicRead: requiredBoolean(values.publicRead, \"publicRead\"),\n      publicWrite: requiredBoolean(values.publicWrite, \"publicWrite\"),\n      kernelReadAllTeams: requiredBoolean(\n        values.kernelReadAllTeams,\n        \"kernelReadAllTeams\",\n      ),\n    };\n    includeText(result, \"description\", values.description);\n    includeText(result, \"bodyKind\", values.bodyKind);\n    if (requiredBoolean(values.customizeViewModes, \"customizeViewModes\")) {\n      const availableViewModes = optionalCsv(\n        values.availableViewModes,\n        \"availableViewModes\",\n        16,\n      );\n      if (!availableViewModes?.length) {\n        throw new TypeError(\"availableViewModes requires at least one value.\");\n      }\n      const configuredDefault = requiredText(\n        values.defaultViewMode,\n        \"defaultViewMode\",\n      );\n      result.displayConfig = {\n        availableViewModes,\n        defaultViewMode: availableViewModes.includes(configuredDefault)\n          ? configuredDefault\n          : availableViewModes[0]!,\n      };\n    }\n    return result;\n  }\n  if (action === \"ontology-update\") {\n    const changes: JsonObject = {\n      displayName: requiredText(values.displayName, \"displayName\"),\n    };\n    includeText(changes, \"description\", values.description);\n    includeText(changes, \"bodyKind\", values.bodyKind);\n    return {\n      expectedDefinitionVersion: requiredExpectedDefinitionVersion(model),\n      changes,\n    };\n  }\n  if (action === \"ontology-marker\") {\n    const label = requiredText(values.label, \"label\");\n    const expectedVersion = Number(model.markerVersion);\n    if (!Number.isSafeInteger(expectedVersion) || expectedVersion < 0) {\n      throw new TypeError(\"markerVersion is required.\");\n    }\n    const templatesValue = optionalText(values.defaultViewTemplates);\n    let defaultViewTemplates: JsonValue[] = [];\n    if (templatesValue) {\n      let parsed: unknown;\n      try {\n        parsed = JSON.parse(templatesValue);\n      } catch {\n        throw new TypeError(\"defaultViewTemplates must be valid JSON.\");\n      }\n      if (!Array.isArray(parsed))\n        throw new TypeError(\"defaultViewTemplates must be an array.\");\n      defaultViewTemplates = normalizeOntologyMarkerTemplates(parsed);\n    }\n    return {\n      expectedDefinitionVersion: requiredExpectedDefinitionVersion(model),\n      expectedVersion,\n      label,\n      config: { defaultViewTemplates },\n    };\n  }\n  if (action === \"ontology-delete\" || action === \"view-delete\") {\n    return {\n      expectedDefinitionVersion: requiredExpectedDefinitionVersion(model),\n    };\n  }\n  if (action === \"ontology-default-views\") {\n    const result: JsonObject = { expectedDefinitionVersion: requiredExpectedDefinitionVersion(model) };\n    includeText(result, \"profile\", values.profile);\n    return result;\n  }\n  if (action === \"ontology-snapshot\") {\n    const result: JsonObject = {\n      sourceOntologyId: requiredText(\n        values.sourceOntologyId,\n        \"sourceOntologyId\",\n      ),\n    };\n    includeText(result, \"viewId\", values.viewId);\n    includeText(result, \"name\", values.name);\n    includeText(result, \"indexMode\", values.indexMode);\n    return result;\n  }\n  if (action === \"ontology-import-jsonl\") {\n    return {\n      managedFileRef: {\n        kind: \"managed-file\",\n        id: requiredText(values.managedFileId, \"managedFileId\"),\n      },\n    };\n  }\n  if (\n    action === \"ontology-import-records-jsonl\" ||\n    action === \"ontology-import-tag-relations-jsonl\" ||\n    action === \"ontology-import-text-column-jsonl\" ||\n    action === \"ontology-import-json-column-jsonl\" ||\n    action === \"ontology-import-relation-column-jsonl\"\n  ) {\n    const result: JsonObject = {\n      managedFileRef: {\n        kind: \"managed-file\",\n        id: requiredText(values.managedFileId, \"managedFileId\"),\n      },\n      expectedDefinitionVersion: requiredExpectedDefinitionVersion(model),\n    };\n    if (\n      action === \"ontology-import-records-jsonl\" ||\n      action === \"ontology-import-tag-relations-jsonl\"\n    ) {\n      includeText(result, \"mode\", values.mode);\n    }\n    if (action === \"ontology-import-records-jsonl\") {\n      includeText(result, \"containerViewId\", values.containerViewId);\n    }\n    if (\n      action === \"ontology-import-text-column-jsonl\" ||\n      action === \"ontology-import-json-column-jsonl\" ||\n      action === \"ontology-import-relation-column-jsonl\"\n    ) {\n      includeText(result, \"columnId\", values.columnId);\n    }\n    return result;\n  }\n  if (action === \"feature-column-create\") {\n    const result: JsonObject = {\n      expectedOntologyDefinitionVersion: requiredModelVersion(\n        model,\n        \"expectedOntologyDefinitionVersion\",\n      ),\n      name: requiredText(values.name, \"name\"),\n    };\n    includeText(result, \"type\", values.type);\n    const config = optionalJsonObject(values.config, \"config\");\n    if (config !== undefined) result.config = config;\n    const sort = optionalNonnegativeInteger(values.sort, \"sort\");\n    if (sort !== undefined) result.sort = sort;\n    includeText(result, \"scopeContainerViewId\", values.scopeContainerViewId);\n    return result;\n  }\n  if (action === \"feature-column-update\") {\n    const changes: JsonObject = {};\n    includeText(changes, \"name\", values.name);\n    includeText(changes, \"type\", values.type);\n    const config = optionalJsonObjectOrNull(values.config, \"config\");\n    if (config !== undefined) changes.config = config;\n    const sort = optionalNullableNonnegativeInteger(values.sort, \"sort\");\n    if (sort !== undefined) changes.sort = sort;\n    if (Object.keys(changes).length === 0) {\n      throw new TypeError(\"changes must contain at least one field.\");\n    }\n    return {\n      columnId: requiredText(values.columnId, \"columnId\"),\n      expectedDefinitionVersion: requiredExpectedDefinitionVersion(model),\n      changes,\n    };\n  }\n  if (action === \"feature-column-attachment-set\") {\n    return {\n      viewId: requiredText(values.viewId, \"viewId\"),\n      columnId: requiredText(values.columnId, \"columnId\"),\n      attached: requiredBoolean(values.attached, \"attached\"),\n      expectedViewDefinitionVersion: requiredModelVersion(\n        model,\n        \"expectedViewDefinitionVersion\",\n      ),\n    };\n  }\n  if (action === \"view-export-jsonl\") {\n    const result: JsonObject = {\n      viewId: requiredText(values.viewId, \"viewId\"),\n      expectedViewDefinitionVersion: requiredModelVersion(\n        model,\n        \"expectedViewDefinitionVersion\",\n      ),\n    };\n    const pageSize = optionalBoundedInteger(\n      values.pageSize,\n      \"pageSize\",\n      100,\n      5000,\n    );\n    if (pageSize !== undefined) result.pageSize = pageSize;\n    const tagGroupIds = optionalCsv(values.tagGroupIds, \"tagGroupIds\", 200);\n    if (tagGroupIds) result.tagGroupIds = tagGroupIds;\n    const featureColumnIds = optionalCsv(\n      values.featureColumnIds,\n      \"featureColumnIds\",\n      200,\n    );\n    if (featureColumnIds) result.featureColumnIds = featureColumnIds;\n    const basicFieldIds = optionalCsv(values.basicFieldIds, \"basicFieldIds\", 2);\n    if (\n      basicFieldIds?.some(\n        (field) => field !== \"preview\" && field !== \"thumbnail\",\n      )\n    ) {\n      throw new TypeError(\n        'basicFieldIds may contain only \"preview\" and \"thumbnail\".',\n      );\n    }\n    if (basicFieldIds) result.basicFieldIds = basicFieldIds;\n    return result;\n  }\n  if (action === \"feature-column-images-export\") {\n    const columnType = optionalText(values.columnType) ?? \"feature\";\n    if (columnType !== \"feature\" && columnType !== \"preview\") {\n      throw new TypeError('columnType must be \"feature\" or \"preview\".');\n    }\n    const result: JsonObject = {\n      viewId: requiredText(values.viewId, \"viewId\"),\n      expectedViewDefinitionVersion: requiredModelVersion(\n        model,\n        \"expectedViewDefinitionVersion\",\n      ),\n      columnType,\n    };\n    if (columnType === \"feature\") {\n      result.featureColumnId = requiredText(\n        values.featureColumnId,\n        \"featureColumnId\",\n      );\n    } else {\n      includeText(result, \"featureColumnId\", values.featureColumnId);\n    }\n    const pageSize = optionalBoundedInteger(\n      values.pageSize,\n      \"pageSize\",\n      100,\n      1000,\n    );\n    if (pageSize !== undefined) result.pageSize = pageSize;\n    const itemLimit = optionalBoundedInteger(\n      values.itemLimit,\n      \"itemLimit\",\n      1,\n      1_000_000,\n    );\n    if (itemLimit !== undefined) result.itemLimit = itemLimit;\n    return result;\n  }\n  if (action === \"view-share\") {\n    const operation = requiredText(values.shareOperation, \"shareOperation\");\n    if (operation !== \"upsert\" && operation !== \"revoke\") {\n      throw new TypeError('shareOperation must be \"upsert\" or \"revoke\".');\n    }\n    const targetType = requiredText(values.targetType, \"targetType\");\n    if (targetType !== \"user\" && targetType !== \"team\") {\n      throw new TypeError('targetType must be \"user\" or \"team\".');\n    }\n    const result: JsonObject = {\n      expectedDefinitionVersion: requiredExpectedDefinitionVersion(model),\n      operation,\n      targetType,\n      targetId: requiredText(values.targetId, \"targetId\"),\n    };\n    const permissions = commaSeparatedValues(values.permissions);\n    if (permissions.length) result.permissions = permissions;\n    const expiresAt = optionalNonnegativeInteger(values.expiresAt, \"expiresAt\");\n    if (expiresAt !== undefined) result.expiresAt = expiresAt;\n    return result;\n  }\n  const changes: JsonObject = {\n    name: requiredText(values.name, \"name\"),\n  };\n  includeText(changes, \"description\", values.description);\n  includeText(changes, \"parentId\", values.parentId);\n  includeText(changes, \"viewType\", values.viewType);\n  includeText(changes, \"sourceContainerViewId\", values.sourceContainerViewId);\n  const displayConfig = optionalJsonObject(\n    values.displayConfig,\n    \"displayConfig\",\n  );\n  if (displayConfig !== undefined) changes.displayConfig = displayConfig;\n  const sort = optionalNonnegativeInteger(values.sort, \"sort\");\n  if (sort !== undefined) changes.sort = sort;\n  if (action === \"view-create\") return changes;\n  return {\n    expectedDefinitionVersion: requiredExpectedDefinitionVersion(model),\n    changes,\n  };\n};\n\nconst modelAction = (value: JsonValue | undefined) =>\n  typeof value === \"string\" &&\n  ONTOLOGY_MANAGEMENT_ACTIONS.includes(value as OntologyManagementAction)\n    ? (value as OntologyManagementAction)\n    : undefined;\n\nconst modelCopy = (\n  value: JsonValue | undefined,\n  key: JsonValue | undefined,\n  translate: CapabilityTranslate,\n  fallback: string,\n): ReactNode => {\n  const semanticKey = optionalText(key);\n  if (semanticKey) return translate(semanticKey);\n  return optionalText(value) ?? translate(fallback);\n};\n\nconst formValues = (form: HTMLFormElement) =>\n  Array.from(form.elements).reduce<Record<string, string>>(\n    (values, element) => {\n      if (\n        !(\"name\" in element) ||\n        !(\"value\" in element) ||\n        !(\"disabled\" in element)\n      ) {\n        return values;\n      }\n      const control = element as\n        | HTMLInputElement\n        | HTMLSelectElement\n        | HTMLTextAreaElement;\n      if (!control.name || control.disabled) return values;\n      if (control instanceof HTMLInputElement && control.type === \"checkbox\") {\n        if (control.value === \"on\") {\n          values[control.name] = String(control.checked);\n        } else if (control.checked) {\n          values[control.name] = values[control.name]\n            ? `${values[control.name]},${control.value}`\n            : control.value;\n        }\n        return values;\n      }\n      values[control.name] = control.value;\n      return values;\n    },\n    {},\n  );\n\nconst Field = ({\n  id,\n  name,\n  label,\n  value,\n  placeholder,\n  required = false,\n  textarea = false,\n  disabled = false,\n  onChange,\n}: {\n  id: string;\n  name: string;\n  label: ReactNode;\n  value?: string | number;\n  placeholder?: string;\n  required?: boolean;\n  textarea?: boolean;\n  disabled?: boolean;\n  onChange?: (\n    event: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n  ) => void;\n}) => (\n  <BaseField label={label} htmlFor={id} required={required}>\n    {textarea ? (\n      <BaseTextarea\n        id={id}\n        name={name}\n        defaultValue={value}\n        placeholder={placeholder}\n        required={required}\n        disabled={disabled}\n        onChange={onChange}\n      />\n    ) : (\n      <BaseInput\n        id={id}\n        name={name}\n        defaultValue={value}\n        placeholder={placeholder}\n        required={required}\n        disabled={disabled}\n        onChange={onChange}\n      />\n    )}\n  </BaseField>\n);\n\nconst ManagementFields = ({\n  action,\n  contextId,\n  defaults,\n  markerPresets,\n  newMarkerTemplate,\n  translate,\n  disabled,\n  tagCatalog,\n}: {\n  action: OntologyManagementAction;\n  contextId: string;\n  defaults: JsonObject;\n  markerPresets: JsonObject[];\n  newMarkerTemplate?: JsonObject;\n  translate: CapabilityTranslate;\n  disabled: boolean;\n  tagCatalog?: MarkerTagCatalog;\n}) => {\n  const id = (name: string) => `ontology-management-${contextId}-${name}`;\n  type FieldKey =\n    | \"displayName\"\n    | \"label\"\n    | \"templateKey\"\n    | \"templateName\"\n    | \"templateDescription\"\n    | \"templateTags\"\n    | \"creatorCurrentUser\"\n    | \"deleteTemplate\"\n    | \"deleteMarker\"\n    | \"techpackPreset\"\n    | \"trendPreset\"\n    | \"addTemplate\"\n    | \"noTemplates\"\n    | \"defaultViewTemplates\"\n    | \"markerExists\"\n    | \"targetOntology\"\n    | \"descriptionField\"\n    | \"createDefaultViews\"\n    | \"bodyKind\"\n    | \"visible\"\n    | \"kernelReadAllTeams\"\n    | \"publicRead\"\n    | \"publicWrite\"\n    | \"customizeViewModes\"\n    | \"availableViewModes\"\n    | \"defaultViewMode\"\n    | \"viewModeTable\"\n    | \"viewModeCard\"\n    | \"viewModeGallery\"\n    | \"viewModeTrendMatrix\"\n    | \"selectAtLeastOneViewMode\"\n    | \"profile\"\n    | \"sourceOntologyId\"\n    | \"viewId\"\n    | \"name\"\n    | \"indexMode\"\n    | \"parentId\"\n    | \"viewType\"\n    | \"viewTypeFilter\"\n    | \"viewTypeContainer\"\n    | \"sourceContainerViewId\"\n    | \"displayConfig\"\n    | \"sort\"\n    | \"managedFileId\"\n    | \"mode\"\n    | \"columnId\"\n    | \"containerViewId\"\n    | \"type\"\n    | \"config\"\n    | \"scopeContainerViewId\"\n    | \"attached\"\n    | \"attachedTrue\"\n    | \"attachedFalse\"\n    | \"pageSize\"\n    | \"tagGroupIds\"\n    | \"featureColumnIds\"\n    | \"basicFieldIds\"\n    | \"columnType\"\n    | \"columnTypeFeature\"\n    | \"columnTypePreview\"\n    | \"featureColumnId\"\n    | \"itemLimit\"\n    | \"shareOperation\"\n    | \"shareOperationUpsert\"\n    | \"shareOperationRevoke\"\n    | \"targetType\"\n    | \"targetTypeUser\"\n    | \"targetTypeTeam\"\n    | \"targetId\"\n    | \"permissions\"\n    | \"expiresAt\";\n  const label = (name: FieldKey) =>\n    translate(DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement[name]);\n  const configuredViewModeOptions = Array.isArray(defaults.viewModeOptions)\n    ? defaults.viewModeOptions.flatMap((option) => {\n        if (!isJsonObject(option)) return [];\n        const id = optionalText(option.id);\n        const labelKey = optionalText(option.labelKey);\n        return id && labelKey ? [{ id, labelKey }] : [];\n      })\n    : [];\n  const viewModeOptions = configuredViewModeOptions.length\n    ? configuredViewModeOptions\n    : DEFAULT_ONTOLOGY_VIEW_MODE_OPTIONS;\n  const initialViewModes = Array.isArray(defaults.availableViewModes)\n    ? defaults.availableViewModes.filter(\n        (value): value is string => typeof value === \"string\" && Boolean(value),\n      )\n    : DEFAULT_ONTOLOGY_VIEW_MODES;\n  const [publicRead, setPublicRead] = useState(defaults.publicRead === true);\n  const [customizeViewModes, setCustomizeViewModes] = useState(\n    defaults.customizeViewModes === true,\n  );\n  const [availableViewModes, setAvailableViewModes] =\n    useState(initialViewModes);\n  const [defaultViewMode, setDefaultViewMode] = useState(\n    optionalText(defaults.defaultViewMode) ?? initialViewModes[0] ?? \"\",\n  );\n  const toggleViewMode = (viewMode: string, selected: boolean) => {\n    const next = selected\n      ? Array.from(new Set([...availableViewModes, viewMode]))\n      : availableViewModes.filter((candidate) => candidate !== viewMode);\n    setAvailableViewModes(next);\n    if (!next.includes(defaultViewMode)) setDefaultViewMode(next[0] ?? \"\");\n  };\n  if (action === \"ontology-create\" || action === \"ontology-update\") {\n    return (\n      <>\n        <Field\n          id={id(\"display-name\")}\n          name=\"displayName\"\n          label={label(\"displayName\")}\n          value={optionalText(defaults.displayName)}\n          placeholder={\n            action === \"ontology-create\"\n              ? translate(\n                  \"components.data-management.ontology-name-placeholder\",\n                )\n              : undefined\n          }\n          required\n          disabled={disabled}\n        />\n        <Field\n          id={id(\"description\")}\n          name=\"description\"\n          label={label(\"descriptionField\")}\n          value={optionalText(defaults.description)}\n          disabled={disabled}\n        />\n        {action === \"ontology-update\" ? (\n          <Field\n            id={id(\"body-kind\")}\n            name=\"bodyKind\"\n            label={label(\"bodyKind\")}\n            value={optionalText(defaults.bodyKind)}\n            disabled={disabled}\n          />\n        ) : null}\n        {action === \"ontology-create\" ? (\n          <>\n            <div className=\"grid gap-2 sm:grid-cols-2\">\n              <BaseSwitch\n                name=\"visible\"\n                label={label(\"visible\")}\n                defaultChecked={defaults.visible === true}\n                disabled={disabled}\n              />\n              <BaseSwitch\n                name=\"kernelReadAllTeams\"\n                label={label(\"kernelReadAllTeams\")}\n                defaultChecked={defaults.kernelReadAllTeams === true}\n                disabled={disabled}\n              />\n              <BaseSwitch\n                name=\"publicRead\"\n                label={label(\"publicRead\")}\n                checked={publicRead}\n                disabled={disabled}\n                onChange={(event) => setPublicRead(event.currentTarget.checked)}\n              />\n              {!publicRead ? (\n                <input type=\"hidden\" name=\"publicWrite\" value=\"false\" />\n              ) : null}\n              <BaseSwitch\n                name=\"publicWrite\"\n                label={label(\"publicWrite\")}\n                defaultChecked={publicRead && defaults.publicWrite === true}\n                disabled={disabled || !publicRead}\n              />\n            </div>\n            <BaseSwitch\n              name=\"customizeViewModes\"\n              label={label(\"customizeViewModes\")}\n              checked={customizeViewModes}\n              disabled={disabled}\n              onChange={(event) =>\n                setCustomizeViewModes(event.currentTarget.checked)\n              }\n            />\n            {customizeViewModes ? (\n              <BaseFieldset\n                legend={label(\"availableViewModes\")}\n                disabled={disabled}\n              >\n                <div className=\"grid gap-2 sm:grid-cols-2\">\n                  {viewModeOptions.map(({ id: value, labelKey }) => (\n                    <BaseCheckbox\n                      key={value}\n                      name=\"availableViewModes\"\n                      value={value}\n                      label={translate(labelKey)}\n                      checked={availableViewModes.includes(value)}\n                      onChange={(event) =>\n                        toggleViewMode(value, event.currentTarget.checked)\n                      }\n                      disabled={disabled}\n                    />\n                  ))}\n                </div>\n                <BaseField\n                  label={label(\"defaultViewMode\")}\n                  htmlFor={id(\"default-view-mode\")}\n                >\n                  <BaseSelect\n                    id={id(\"default-view-mode\")}\n                    name=\"defaultViewMode\"\n                    value={defaultViewMode}\n                    onChange={(event) =>\n                      setDefaultViewMode(event.currentTarget.value)\n                    }\n                    disabled={disabled || availableViewModes.length === 0}\n                    options={viewModeOptions\n                      .filter(({ id: value }) =>\n                        availableViewModes.includes(value),\n                      )\n                      .map(({ id: value, labelKey }) => ({\n                        value,\n                        label: translate(labelKey),\n                      }))}\n                  />\n                </BaseField>\n                {availableViewModes.length === 0 ? (\n                  <p className=\"text-xs text-destructive-text\" role=\"alert\">\n                    {label(\"selectAtLeastOneViewMode\")}\n                  </p>\n                ) : null}\n              </BaseFieldset>\n            ) : null}\n          </>\n        ) : null}\n      </>\n    );\n  }\n  if (action === \"ontology-marker\") {\n    return (\n      <OntologyMarkerEditor\n        tagCatalog={tagCatalog}\n        contextId={contextId}\n        defaults={defaults}\n        presets={markerPresets}\n        newTemplate={newMarkerTemplate}\n        translate={translate}\n        disabled={disabled}\n      />\n    );\n  }\n  if (action === \"ontology-delete\" || action === \"view-delete\") {\n    return null;\n  }\n  if (action === \"ontology-default-views\") {\n    return (\n      <Field\n        id={id(\"profile\")}\n        name=\"profile\"\n        label={label(\"profile\")}\n        value={optionalText(defaults.profile)}\n        disabled={disabled}\n      />\n    );\n  }\n  if (action === \"ontology-snapshot\") {\n    return (\n      <>\n        <Field\n          id={id(\"source-ontology\")}\n          name=\"sourceOntologyId\"\n          label={label(\"sourceOntologyId\")}\n          value={optionalText(defaults.sourceOntologyId)}\n          required\n          disabled={disabled}\n        />\n        <Field\n          id={id(\"view-id\")}\n          name=\"viewId\"\n          label={label(\"viewId\")}\n          value={optionalText(defaults.viewId)}\n          disabled={disabled}\n        />\n        <Field\n          id={id(\"name\")}\n          name=\"name\"\n          label={label(\"name\")}\n          value={optionalText(defaults.name)}\n          disabled={disabled}\n        />\n        <Field\n          id={id(\"index-mode\")}\n          name=\"indexMode\"\n          label={label(\"indexMode\")}\n          value={optionalText(defaults.indexMode)}\n          disabled={disabled}\n        />\n      </>\n    );\n  }\n  if (action === \"ontology-import-jsonl\") {\n    return (\n      <Field\n        id={id(\"managed-file-id\")}\n        name=\"managedFileId\"\n        label={label(\"managedFileId\")}\n        value={optionalText(defaults.managedFileId)}\n        required\n        disabled={disabled}\n      />\n    );\n  }\n  if (\n    action === \"ontology-import-records-jsonl\" ||\n    action === \"ontology-import-tag-relations-jsonl\" ||\n    action === \"ontology-import-text-column-jsonl\" ||\n    action === \"ontology-import-json-column-jsonl\" ||\n    action === \"ontology-import-relation-column-jsonl\"\n  ) {\n    return (\n      <>\n        <Field\n          id={id(\"managed-file-id\")}\n          name=\"managedFileId\"\n          label={label(\"managedFileId\")}\n          value={optionalText(defaults.managedFileId)}\n          required\n          disabled={disabled}\n        />\n        {action === \"ontology-import-records-jsonl\" ||\n        action === \"ontology-import-tag-relations-jsonl\" ? (\n          <Field\n            id={id(\"mode\")}\n            name=\"mode\"\n            label={label(\"mode\")}\n            value={optionalText(defaults.mode)}\n            disabled={disabled}\n          />\n        ) : null}\n        {action === \"ontology-import-text-column-jsonl\" ||\n        action === \"ontology-import-json-column-jsonl\" ||\n        action === \"ontology-import-relation-column-jsonl\" ? (\n          <Field\n            id={id(\"column-id\")}\n            name=\"columnId\"\n            label={label(\"columnId\")}\n            value={optionalText(defaults.columnId)}\n            disabled={disabled}\n          />\n        ) : null}\n        {action === \"ontology-import-records-jsonl\" ? (\n          <Field\n            id={id(\"container-view-id\")}\n            name=\"containerViewId\"\n            label={label(\"containerViewId\")}\n            value={optionalText(defaults.containerViewId)}\n            disabled={disabled}\n          />\n        ) : null}\n      </>\n    );\n  }\n  if (\n    action === \"feature-column-create\" ||\n    action === \"feature-column-update\"\n  ) {\n    return (\n      <>\n        {action === \"feature-column-update\" ? (\n          <Field\n            id={id(\"column-id\")}\n            name=\"columnId\"\n            label={label(\"columnId\")}\n            value={optionalText(defaults.columnId)}\n            required\n            disabled={disabled}\n          />\n        ) : null}\n        <Field\n          id={id(\"name\")}\n          name=\"name\"\n          label={label(\"name\")}\n          value={optionalText(defaults.name)}\n          required={action === \"feature-column-create\"}\n          disabled={disabled}\n        />\n        <Field\n          id={id(\"type\")}\n          name=\"type\"\n          label={label(\"type\")}\n          value={optionalText(defaults.type)}\n          disabled={disabled}\n        />\n        <Field\n          id={id(\"config\")}\n          name=\"config\"\n          label={label(\"config\")}\n          value={\n            defaults.config === null\n              ? \"null\"\n              : isJsonObject(defaults.config)\n                ? JSON.stringify(defaults.config, null, 2)\n                : undefined\n          }\n          textarea\n          disabled={disabled}\n        />\n        <Field\n          id={id(\"sort\")}\n          name=\"sort\"\n          label={label(\"sort\")}\n          value={typeof defaults.sort === \"number\" ? defaults.sort : undefined}\n          disabled={disabled}\n        />\n        {action === \"feature-column-create\" ? (\n          <Field\n            id={id(\"scope-container-view-id\")}\n            name=\"scopeContainerViewId\"\n            label={label(\"scopeContainerViewId\")}\n            value={optionalText(defaults.scopeContainerViewId)}\n            disabled={disabled}\n          />\n        ) : null}\n      </>\n    );\n  }\n  if (action === \"feature-column-attachment-set\") {\n    return (\n      <>\n        <Field\n          id={id(\"view-id\")}\n          name=\"viewId\"\n          label={label(\"viewId\")}\n          value={optionalText(defaults.viewId)}\n          required\n          disabled={disabled}\n        />\n        <Field\n          id={id(\"column-id\")}\n          name=\"columnId\"\n          label={label(\"columnId\")}\n          value={optionalText(defaults.columnId)}\n          required\n          disabled={disabled}\n        />\n        <BaseField label={label(\"attached\")} htmlFor={id(\"attached\")} required>\n          <BaseSelect\n            id={id(\"attached\")}\n            name=\"attached\"\n            defaultValue={defaults.attached === false ? \"false\" : \"true\"}\n            required\n            disabled={disabled}\n            options={[\n              { value: \"true\", label: label(\"attachedTrue\") },\n              { value: \"false\", label: label(\"attachedFalse\") },\n            ]}\n          />\n        </BaseField>\n      </>\n    );\n  }\n  if (action === \"view-export-jsonl\") {\n    return (\n      <>\n        <Field\n          id={id(\"view-id\")}\n          name=\"viewId\"\n          label={label(\"viewId\")}\n          value={optionalText(defaults.viewId)}\n          required\n          disabled={disabled}\n        />\n        <Field\n          id={id(\"page-size\")}\n          name=\"pageSize\"\n          label={label(\"pageSize\")}\n          value={\n            typeof defaults.pageSize === \"number\"\n              ? defaults.pageSize\n              : undefined\n          }\n          disabled={disabled}\n        />\n        <Field\n          id={id(\"tag-group-ids\")}\n          name=\"tagGroupIds\"\n          label={label(\"tagGroupIds\")}\n          value={optionalText(defaults.tagGroupIds)}\n          disabled={disabled}\n        />\n        <Field\n          id={id(\"feature-column-ids\")}\n          name=\"featureColumnIds\"\n          label={label(\"featureColumnIds\")}\n          value={optionalText(defaults.featureColumnIds)}\n          disabled={disabled}\n        />\n        <Field\n          id={id(\"basic-field-ids\")}\n          name=\"basicFieldIds\"\n          label={label(\"basicFieldIds\")}\n          value={optionalText(defaults.basicFieldIds)}\n          disabled={disabled}\n        />\n      </>\n    );\n  }\n  if (action === \"feature-column-images-export\") {\n    return (\n      <>\n        <Field\n          id={id(\"view-id\")}\n          name=\"viewId\"\n          label={label(\"viewId\")}\n          value={optionalText(defaults.viewId)}\n          required\n          disabled={disabled}\n        />\n        <BaseField\n          label={label(\"columnType\")}\n          htmlFor={id(\"column-type\")}\n          required\n        >\n          <BaseSelect\n            id={id(\"column-type\")}\n            name=\"columnType\"\n            defaultValue={optionalText(defaults.columnType) ?? \"feature\"}\n            required\n            disabled={disabled}\n            options={[\n              { value: \"feature\", label: label(\"columnTypeFeature\") },\n              { value: \"preview\", label: label(\"columnTypePreview\") },\n            ]}\n          />\n        </BaseField>\n        <Field\n          id={id(\"feature-column-id\")}\n          name=\"featureColumnId\"\n          label={label(\"featureColumnId\")}\n          value={optionalText(defaults.featureColumnId)}\n          disabled={disabled}\n        />\n        <Field\n          id={id(\"page-size\")}\n          name=\"pageSize\"\n          label={label(\"pageSize\")}\n          value={\n            typeof defaults.pageSize === \"number\"\n              ? defaults.pageSize\n              : undefined\n          }\n          disabled={disabled}\n        />\n        <Field\n          id={id(\"item-limit\")}\n          name=\"itemLimit\"\n          label={label(\"itemLimit\")}\n          value={\n            typeof defaults.itemLimit === \"number\"\n              ? defaults.itemLimit\n              : undefined\n          }\n          disabled={disabled}\n        />\n      </>\n    );\n  }\n  if (action === \"view-share\") {\n    return (\n      <>\n        <BaseField\n          label={label(\"shareOperation\")}\n          htmlFor={id(\"share-operation\")}\n          required\n        >\n          <BaseSelect\n            id={id(\"share-operation\")}\n            name=\"shareOperation\"\n            defaultValue={optionalText(defaults.shareOperation) ?? \"upsert\"}\n            required\n            disabled={disabled}\n            options={[\n              { value: \"upsert\", label: label(\"shareOperationUpsert\") },\n              { value: \"revoke\", label: label(\"shareOperationRevoke\") },\n            ]}\n          />\n        </BaseField>\n        <BaseField\n          label={label(\"targetType\")}\n          htmlFor={id(\"target-type\")}\n          required\n        >\n          <BaseSelect\n            id={id(\"target-type\")}\n            name=\"targetType\"\n            defaultValue={optionalText(defaults.targetType) ?? \"user\"}\n            required\n            disabled={disabled}\n            options={[\n              { value: \"user\", label: label(\"targetTypeUser\") },\n              { value: \"team\", label: label(\"targetTypeTeam\") },\n            ]}\n          />\n        </BaseField>\n        <Field\n          id={id(\"target-id\")}\n          name=\"targetId\"\n          label={label(\"targetId\")}\n          value={optionalText(defaults.targetId)}\n          required\n          disabled={disabled}\n        />\n        <Field\n          id={id(\"permissions\")}\n          name=\"permissions\"\n          label={label(\"permissions\")}\n          value={optionalText(defaults.permissions)}\n          disabled={disabled}\n        />\n        <Field\n          id={id(\"expires-at\")}\n          name=\"expiresAt\"\n          label={label(\"expiresAt\")}\n          value={\n            typeof defaults.expiresAt === \"number\"\n              ? defaults.expiresAt\n              : undefined\n          }\n          disabled={disabled}\n        />\n      </>\n    );\n  }\n  return (\n    <>\n      <Field\n        id={id(\"name\")}\n        name=\"name\"\n        label={label(\"name\")}\n        value={optionalText(defaults.name)}\n        required\n        disabled={disabled}\n      />\n      <Field\n        id={id(\"description\")}\n        name=\"description\"\n        label={label(\"descriptionField\")}\n        value={optionalText(defaults.description)}\n        textarea\n        disabled={disabled}\n      />\n      <Field\n        id={id(\"parent-id\")}\n        name=\"parentId\"\n        label={label(\"parentId\")}\n        value={optionalText(defaults.parentId)}\n        disabled={disabled}\n      />\n      <BaseField label={label(\"viewType\")} htmlFor={id(\"view-type\")} required>\n        <BaseSelect\n          id={id(\"view-type\")}\n          name=\"viewType\"\n          defaultValue={optionalText(defaults.viewType) ?? \"filter\"}\n          required\n          disabled={disabled}\n          options={[\n            { value: \"filter\", label: label(\"viewTypeFilter\") },\n            { value: \"container\", label: label(\"viewTypeContainer\") },\n          ]}\n        />\n      </BaseField>\n      <Field\n        id={id(\"source-container-view-id\")}\n        name=\"sourceContainerViewId\"\n        label={label(\"sourceContainerViewId\")}\n        value={optionalText(defaults.sourceContainerViewId)}\n        disabled={disabled}\n      />\n      {action === \"view-update\" ? (\n        <Field\n          id={id(\"display-config\")}\n          name=\"displayConfig\"\n          label={label(\"displayConfig\")}\n          value={\n            isJsonObject(defaults.displayConfig)\n              ? JSON.stringify(defaults.displayConfig, null, 2)\n              : undefined\n          }\n          textarea\n          disabled={disabled}\n        />\n      ) : null}\n      <Field\n        id={id(\"sort\")}\n        name=\"sort\"\n        label={label(\"sort\")}\n        value={typeof defaults.sort === \"number\" ? defaults.sort : undefined}\n        disabled={disabled}\n      />\n    </>\n  );\n};\n\nexport const OntologyManagementCapabilityRenderer: DesignCapabilityRenderer = ({\n  model,\n  loading,\n  readOnly,\n  retry,\n  childrenBySlot,\n  translate,\n  emitIntent,\n}) => {\n  const action = modelAction(model.action);\n  const resourceKind = optionalText(model.resourceKind);\n  const contextId = optionalText(model.contextId);\n  if (\n    !action ||\n    !contextId ||\n    (resourceKind !== \"ontology\" &&\n      resourceKind !== \"view\" &&\n      resourceKind !== \"feature-column\" &&\n      resourceKind !== \"export\")\n  ) {\n    return (\n      <CapabilityStatus\n        kind=\"error\"\n        code=\"capability.ontology-management.model.invalid\"\n        translate={translate}\n      />\n    );\n  }\n  const defaults = isJsonObject(model.defaults) ? model.defaults : {};\n  const disabled = model.disabled === true || model.submitting === true || loading === true || readOnly === true;\n  const closeBlocked = model.submitting === true;\n  const markerExists =\n    action === \"ontology-marker\" && defaults.markerExists === true;\n  const markerVersion = Number(model.markerVersion);\n  const actionTitleKey =\n    DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.actions[action];\n  return (\n    <BaseDialog\n      open\n      portal\n      title={modelCopy(model.title, model.titleKey, translate, actionTitleKey)}\n      description={modelCopy(\n        model.description,\n        model.descriptionKey,\n        translate,\n        DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.description,\n      )}\n      footer={childrenBySlot.footer}\n      closeLabel={translate(\n        optionalText(model.cancelLabelKey) ??\n          DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.cancel,\n      )}\n      closeOnEscape={!closeBlocked}\n      closeOnOverlayClick={!closeBlocked}\n      classNames={{\n        panel:\n          action === \"ontology-create\"\n            ? \"max-w-sm\"\n            : action === \"ontology-marker\"\n              ? \"max-w-lg\"\n              : \"max-w-2xl\",\n      }}\n      onOpenChange={(open) => {\n        if (!open && !closeBlocked) {\n          emitIntent(\"capability.ontology-management.cancel\", {});\n        }\n      }}\n    >\n      {childrenBySlot.header}\n      <form\n        onSubmit={(event: FormEvent<HTMLFormElement>) => {\n          event.preventDefault();\n          if (disabled) return;\n          emitIntent(\n            ONTOLOGY_MANAGEMENT_INTENT_NAMES[action],\n            buildOntologyManagementIntent(\n              action,\n              model,\n              formValues(event.currentTarget),\n            ),\n          );\n        }}\n      >\n        <BaseFieldset\n          legend={translate(actionTitleKey)}\n          classNames={{ legend: \"sr-only\", content: \"mt-0\" }}\n        >\n          <BaseStack gap=\"var(--global-spacing)\">\n            <ManagementFields\n              key={\n                action === \"ontology-marker\"\n                  ? `${contextId}:${markerVersion}`\n                  : `${contextId}:${action}`\n              }\n              action={action}\n              contextId={contextId}\n              defaults={defaults}\n              tagCatalog={typeof model.tagSearch === 'string' ? {\n                search: model.tagSearch,\n                pagination: isJsonObject(model.pagination) ? model.pagination : undefined,\n                onSearch: value => emitIntent('capability.ontology-management.tag-search', { value }),\n                onPageChange: page => emitIntent('capability.ontology-management.tags-page', { page }),\n              } : undefined}\n              markerPresets={\n                Array.isArray(model.markerPresets)\n                  ? model.markerPresets.filter(isJsonObject)\n                  : []\n              }\n              newMarkerTemplate={\n                isJsonObject(model.newMarkerTemplate)\n                  ? model.newMarkerTemplate\n                  : undefined\n              }\n              translate={translate}\n              disabled={disabled}\n            />\n            {optionalText(model.errorCode) ? (\n              <CapabilityStatus\n                kind=\"error\"\n                code={String(model.errorCode)}\n                translate={translate}\n                onRetry={readOnly ? retry : undefined}\n              />\n            ) : null}\n            <BaseToolbar>\n              {markerExists ? (\n                <>\n                  <BaseButton\n                    type=\"button\"\n                    tone=\"default\"\n                    label={translate(\n                      DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement\n                        .createDefaultViews,\n                    )}\n                    disabled={disabled}\n                    onClick={() =>\n                      emitIntent(\n                        \"capability.ontology-management.ontology.default-views.ensure\",\n                        { expectedDefinitionVersion: requiredExpectedDefinitionVersion(model) },\n                      )\n                    }\n                  />\n                  <BaseButton\n                    type=\"button\"\n                    tone=\"danger\"\n                    label={translate(\n                      DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement\n                        .deleteMarker,\n                    )}\n                    disabled={\n                      disabled ||\n                      !Number.isSafeInteger(markerVersion) ||\n                      markerVersion < 1\n                    }\n                    onClick={() =>\n                      emitIntent(\n                        \"capability.ontology-management.ontology.marker.delete\",\n                        { expectedDefinitionVersion: requiredExpectedDefinitionVersion(model), expectedVersion: markerVersion },\n                      )\n                    }\n                  />\n                </>\n              ) : null}\n              <BaseButton\n                type=\"button\"\n                tone=\"default\"\n                label={translate(\n                  optionalText(model.cancelLabelKey) ??\n                    DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.cancel,\n                )}\n                disabled={closeBlocked}\n                onClick={() =>\n                  emitIntent(\"capability.ontology-management.cancel\", {})\n                }\n              />\n              <BaseButton\n                type=\"submit\"\n                tone=\"primary\"\n                label={translate(\n                  optionalText(model.submitLabelKey) ??\n                    DESIGN_CAPABILITY_I18N_KEYS.ontologyManagement.submit,\n                )}\n                loading={model.submitting === true}\n                disabled={disabled}\n              />\n            </BaseToolbar>\n          </BaseStack>\n        </BaseFieldset>\n      </form>\n    </BaseDialog>\n  );\n};\n","import type { JsonObject } from \"@inf-monkeys-tech/monkeys\";\nimport {\n  Braces,\n  Check,\n  Copy,\n  Hash,\n  Link2,\n  Paperclip,\n  Pencil,\n  Plus,\n  Search,\n  Settings2,\n  Sparkles,\n  Trash2,\n  Type,\n  X,\n} from \"lucide-react\";\nimport { useEffect, useMemo, useState } from \"react\";\n\nimport {\n  Button,\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n  Badge,\n  Checkbox,\n  Input,\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n  Switch,\n} from \"../primitives\";\nimport type { DesignCapabilityRenderer } from \"./contracts\";\nimport { isJsonObject } from \"./contracts\";\n\nexport const FEATURE_COLUMN_MANAGER_SCHEMA =\n  \"monkeys-design://render-model/feature-column-manager/v2\";\n\nconst JSON_SCHEMA_DIALECT = \"https://json-schema.org/draft/2020-12/schema\";\nconst labelProperties = {\n  label: { type: \"string\" },\n  labelKey: { type: \"string\", minLength: 1 },\n};\nconst editableFeatureType = {\n  enum: [\"text\", \"img\", \"number\", \"relation\", \"json\"],\n};\nconst featureColumnType = { type: \"string\", minLength: 1, maxLength: 128 };\nconst columnConfig = { type: \"object\", additionalProperties: true };\n\nexport const FEATURE_COLUMN_MANAGER_RENDER_MODEL_SCHEMA: JsonObject = {\n  $schema: JSON_SCHEMA_DIALECT,\n  $id: FEATURE_COLUMN_MANAGER_SCHEMA,\n  type: \"object\",\n  additionalProperties: false,\n  required: [\"columns\", \"pagination\", \"disabled\"],\n  properties: {\n    disabled: { type: \"boolean\" },\n    canCreate: { type: \"boolean\" },\n    canUpdate: { type: \"boolean\" },\n    canDelete: { type: \"boolean\" },\n    canAttach: { type: \"boolean\" },\n    triggerLabelKey: { type: \"string\", minLength: 1 },\n    titleKey: { type: \"string\", minLength: 1 },\n    descriptionKey: { type: \"string\", minLength: 1 },\n    createLabelKey: { type: \"string\", minLength: 1 },\n    namePlaceholderKey: { type: \"string\", minLength: 1 },\n    selectedCountKey: { type: \"string\", minLength: 1 },\n    deleteLabelKey: { type: \"string\", minLength: 1 },\n    duplicateLabelKey: { type: \"string\", minLength: 1 },\n    editLabelKey: { type: \"string\", minLength: 1 },\n    saveLabelKey: { type: \"string\", minLength: 1 },\n    cancelLabelKey: { type: \"string\", minLength: 1 },\n    emptyLabelKey: { type: \"string\", minLength: 1 },\n    autoAttachLabelKey: { type: \"string\", minLength: 1 },\n    expectedOntologyDefinitionVersion: { type: \"integer\", minimum: 1 },\n    expectedViewDefinitionVersion: { type: \"integer\", minimum: 1 },\n    scopeContainerViewId: { type: \"string\", minLength: 1 },\n    canAttachToView: { type: \"boolean\" },\n    types: {\n      type: \"array\",\n      items: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"id\"],\n        properties: { id: editableFeatureType, ...labelProperties },\n      },\n    },\n    ontologyOptions: {\n      type: \"array\",\n      items: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"id\", \"label\"],\n        properties: {\n          id: { type: \"string\", minLength: 1 },\n          label: { type: \"string\", minLength: 1 },\n        },\n      },\n    },\n    columns: {\n      type: \"array\",\n      items: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\n          \"id\",\n          \"name\",\n          \"type\",\n          \"definitionVersion\",\n          \"sort\",\n          \"attached\",\n        ],\n        properties: {\n          id: { type: \"string\", minLength: 1 },\n          name: { type: \"string\", minLength: 1 },\n          type: featureColumnType,\n          config: columnConfig,\n          definitionVersion: { type: \"integer\", minimum: 1 },\n          sort: { type: \"integer\", minimum: 0 },\n          attached: { type: \"boolean\" },\n          readOnly: { type: \"boolean\" },\n          description: { type: \"string\" },\n        },\n      },\n    },\n    pagination: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"hasMore\", \"nextCursor\", \"loadingMore\"],\n      properties: {\n        hasMore: { type: \"boolean\" },\n        nextCursor: {\n          oneOf: [{ type: \"string\", minLength: 1 }, { type: \"null\" }],\n        },\n        loadingMore: { type: \"boolean\" },\n        errorCode: { type: \"string\", minLength: 1 },\n      },\n    },\n  },\n};\n\nconst strictIntent = (\n  id: string,\n  properties: JsonObject,\n  required: string[],\n): JsonObject => ({\n  $schema: JSON_SCHEMA_DIALECT,\n  $id: id,\n  type: \"object\",\n  additionalProperties: false,\n  required,\n  properties,\n});\n\nexport const FEATURE_COLUMN_MANAGER_CREATE_INTENT_SCHEMA = strictIntent(\n  \"monkeys-design://intent/feature-column-manager-create/v1\",\n  {\n    name: { type: \"string\", minLength: 1, maxLength: 512 },\n    type: editableFeatureType,\n    config: columnConfig,\n    sort: { type: \"integer\", minimum: 0 },\n    scopeContainerViewId: { type: \"string\", minLength: 1, maxLength: 256 },\n    expectedOntologyDefinitionVersion: { type: \"integer\", minimum: 1 },\n  },\n  [\"name\", \"type\", \"expectedOntologyDefinitionVersion\"],\n);\n\nexport const FEATURE_COLUMN_MANAGER_UPDATE_INTENT_SCHEMA = strictIntent(\n  \"monkeys-design://intent/feature-column-manager-update/v1\",\n  {\n    columnId: { type: \"string\", minLength: 1, maxLength: 256 },\n    expectedDefinitionVersion: { type: \"integer\", minimum: 1 },\n    changes: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"name\", \"type\"],\n      properties: {\n        name: { type: \"string\", minLength: 1, maxLength: 512 },\n        type: editableFeatureType,\n        config: { oneOf: [columnConfig, { type: \"null\" }] },\n      },\n    },\n  },\n  [\"columnId\", \"expectedDefinitionVersion\", \"changes\"],\n);\n\nexport const FEATURE_COLUMN_MANAGER_DELETE_INTENT_SCHEMA = strictIntent(\n  \"monkeys-design://intent/feature-column-manager-delete/v1\",\n  {\n    columns: {\n      type: \"array\",\n      minItems: 1,\n      maxItems: 500,\n      uniqueItems: true,\n      items: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"columnId\", \"expectedDefinitionVersion\"],\n        properties: {\n          columnId: { type: \"string\", minLength: 1, maxLength: 256 },\n          expectedDefinitionVersion: { type: \"integer\", minimum: 1 },\n        },\n      },\n    },\n  },\n  [\"columns\"],\n);\n\nexport const FEATURE_COLUMN_MANAGER_ATTACHMENT_INTENT_SCHEMA = strictIntent(\n  \"monkeys-design://intent/feature-column-manager-attachment/v1\",\n  {\n    columnId: { type: \"string\", minLength: 1, maxLength: 256 },\n    attached: { type: \"boolean\" },\n    expectedViewDefinitionVersion: { type: \"integer\", minimum: 1 },\n  },\n  [\"columnId\", \"attached\", \"expectedViewDefinitionVersion\"],\n);\n\nexport const FEATURE_COLUMN_MANAGER_LOAD_MORE_INTENT_SCHEMA = strictIntent(\n  \"monkeys-design://intent/feature-column-manager-load-more/v1\",\n  { cursor: { type: \"string\", minLength: 1 } },\n  [\"cursor\"],\n);\n\nexport const FEATURE_COLUMN_MANAGER_OUTPUT_PORTS = [\n  {\n    name: \"capability.feature-column-manager.create\",\n    schemaRef: \"monkeys-design://intent/feature-column-manager-create/v1\",\n    schemaDocument: FEATURE_COLUMN_MANAGER_CREATE_INTENT_SCHEMA,\n    allowedCommandKinds: [\"domain-command\"],\n  },\n  {\n    name: \"capability.feature-column-manager.update\",\n    schemaRef: \"monkeys-design://intent/feature-column-manager-update/v1\",\n    schemaDocument: FEATURE_COLUMN_MANAGER_UPDATE_INTENT_SCHEMA,\n    allowedCommandKinds: [\"domain-command\"],\n  },\n  {\n    name: \"capability.feature-column-manager.delete\",\n    schemaRef: \"monkeys-design://intent/feature-column-manager-delete/v1\",\n    schemaDocument: FEATURE_COLUMN_MANAGER_DELETE_INTENT_SCHEMA,\n    allowedCommandKinds: [\"domain-command\"],\n  },\n  {\n    name: \"capability.feature-column-manager.attachment-change\",\n    schemaRef: \"monkeys-design://intent/feature-column-manager-attachment/v1\",\n    schemaDocument: FEATURE_COLUMN_MANAGER_ATTACHMENT_INTENT_SCHEMA,\n    allowedCommandKinds: [\"domain-command\"],\n  },\n  {\n    name: \"capability.feature-column-manager.load-more\",\n    schemaRef: \"monkeys-design://intent/feature-column-manager-load-more/v1\",\n    schemaDocument: FEATURE_COLUMN_MANAGER_LOAD_MORE_INTENT_SCHEMA,\n    allowedCommandKinds: [\"query-intent\"],\n  },\n] as const;\n\ntype ColumnModel = {\n  id: string;\n  name: string;\n  type: string;\n  config?: JsonObject;\n  definitionVersion: number;\n  sort: number;\n  attached: boolean;\n  readOnly?: boolean;\n  description?: string;\n};\n\ntype FeatureColumnType = \"text\" | \"img\" | \"number\" | \"relation\" | \"json\";\ntype NumberFormatMode = \"integer\" | \"decimal\";\ntype RelationConfig = {\n  allowCrossOntology: boolean;\n  singleSelect: boolean;\n  allowedOntologyIds: string[];\n};\n\nconst normalizeFeatureColumnType = (value: string): FeatureColumnType =>\n  value === \"img\" ||\n  value === \"number\" ||\n  value === \"relation\" ||\n  value === \"json\"\n    ? value\n    : \"text\";\n\nconst readNumberConfig = (\n  config?: JsonObject,\n): { mode: NumberFormatMode; scale: number } => {\n  const source = isJsonObject(config?.numberFormat)\n    ? config.numberFormat\n    : config;\n  const rawMode = readText(source?.mode).toLowerCase();\n  const rawScale = Number(source?.scale);\n  const scale = Number.isFinite(rawScale)\n    ? Math.max(0, Math.min(9, Math.trunc(rawScale)))\n    : 2;\n  const mode: NumberFormatMode =\n    rawMode === \"fixed\" ||\n    rawMode === \"decimal\" ||\n    rawMode === \"thousand_decimal\" ||\n    scale > 0\n      ? \"decimal\"\n      : \"integer\";\n  return { mode, scale: mode === \"decimal\" ? scale || 2 : 0 };\n};\n\nconst readRelationConfig = (config?: JsonObject): RelationConfig => {\n  const relation = isJsonObject(config?.relation) ? config.relation : {};\n  return {\n    allowCrossOntology: relation.allowCrossOntology !== false,\n    singleSelect: relation.singleSelect === true,\n    allowedOntologyIds: Array.isArray(relation.allowedOntologyIds)\n      ? relation.allowedOntologyIds\n          .filter(\n            (value): value is string =>\n              typeof value === \"string\" && Boolean(value.trim()),\n          )\n          .map((value) => value.trim())\n      : [],\n  };\n};\n\nconst buildColumnConfig = (input: {\n  type: FeatureColumnType;\n  numberMode: NumberFormatMode;\n  numberScale: string;\n  relationAllowCrossOntology: boolean;\n  relationSingleSelect: boolean;\n  relationAllowedOntologyIds: readonly string[];\n}): JsonObject | undefined => {\n  if (input.type === \"number\") {\n    const scale = Math.max(\n      0,\n      Math.min(9, Math.trunc(Number(input.numberScale) || 0)),\n    );\n    return {\n      numberFormat: {\n        mode: input.numberMode === \"decimal\" ? \"fixed\" : \"integer\",\n        scale: input.numberMode === \"decimal\" ? scale || 2 : 0,\n      },\n    };\n  }\n  if (input.type === \"relation\") {\n    return {\n      relation: {\n        allowCrossOntology: input.relationAllowCrossOntology,\n        singleSelect: input.relationSingleSelect,\n        allowedOntologyIds: [\n          ...new Set(\n            input.relationAllowedOntologyIds\n              .map((id) => id.trim())\n              .filter(Boolean),\n          ),\n        ],\n      },\n    };\n  }\n  return undefined;\n};\n\nconst duplicateName = (\n  sourceName: string,\n  columns: readonly ColumnModel[],\n  suffix: string,\n): string => {\n  const base =\n    (sourceName.trim() || \"Column\") + \" \" + (suffix.trim() || \"Copy\");\n  const names = new Set(\n    columns.map((column) => column.name.trim().toLocaleLowerCase()),\n  );\n  if (!names.has(base.toLocaleLowerCase())) return base;\n  let index = 2;\n  while (names.has((base + \" \" + index).toLocaleLowerCase())) index += 1;\n  return base + \" \" + index;\n};\n\nconst readText = (value: unknown): string =>\n  typeof value === \"string\" ? value : \"\";\nconst copy = (\n  model: JsonObject,\n  key: string,\n  fallback: string,\n  translate: (\n    key: string,\n    values?: Record<string, string | number | boolean>,\n  ) => string,\n) => {\n  const semanticKey = readText(model[key]);\n  return semanticKey ? translate(semanticKey) : fallback;\n};\n\nconst columnsFromModel = (value: unknown): ColumnModel[] =>\n  Array.isArray(value)\n    ? value.flatMap((candidate) => {\n        if (!isJsonObject(candidate)) return [];\n        const id = readText(candidate.id);\n        const name = readText(candidate.name);\n        const type = readText(candidate.type).trim();\n        const definitionVersion = Number(candidate.definitionVersion);\n        const sort = Number(candidate.sort);\n        if (\n          !id ||\n          !name ||\n          !type ||\n          type.length > 128 ||\n          !Number.isSafeInteger(definitionVersion) ||\n          definitionVersion < 1\n        )\n          return [];\n        return [\n          {\n            id,\n            name,\n            type,\n            definitionVersion,\n            sort: Number.isSafeInteger(sort) && sort >= 0 ? sort : 0,\n            attached: candidate.attached === true,\n            ...(isJsonObject(candidate.config)\n              ? { config: candidate.config }\n              : {}),\n            ...(candidate.readOnly === true ? { readOnly: true } : {}),\n            ...(readText(candidate.description)\n              ? { description: readText(candidate.description) }\n              : {}),\n          },\n        ];\n      })\n    : [];\n\ntype OntologyOption = { id: string; label: string };\n\nconst ontologyOptionsFromModel = (value: unknown): OntologyOption[] =>\n  Array.isArray(value)\n    ? value.flatMap((candidate) => {\n        if (!isJsonObject(candidate)) return [];\n        const id = readText(candidate.id).trim();\n        const label = readText(candidate.label).trim();\n        return id && label ? [{ id, label }] : [];\n      })\n    : [];\n\nconst FeatureColumnToggleRow = ({\n  checked,\n  disabled,\n  icon: Icon,\n  title,\n  description,\n  onCheckedChange,\n}: {\n  checked: boolean;\n  disabled?: boolean;\n  icon: typeof Link2;\n  title: string;\n  description?: string;\n  onCheckedChange: (checked: boolean) => void;\n}) => (\n  <div\n    className={\n      \"flex items-center gap-2.5 rounded-lg border px-2.5 py-2.5 transition-colors \" +\n      (checked\n        ? \"border-primary/20 bg-primary/[0.045] \"\n        : \"border-border/60 bg-background/90 \") +\n      (disabled\n        ? \"cursor-not-allowed opacity-55\"\n        : \"cursor-pointer hover:border-border hover:bg-accent/25\")\n    }\n    onClick={() => {\n      if (!disabled) onCheckedChange(!checked);\n    }}\n  >\n    <div\n      className={\n        \"flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-muted/35 text-muted-foreground \" +\n        (checked ? \"bg-background text-foreground\" : \"\")\n      }\n    >\n      <Icon className=\"h-4 w-4\" />\n    </div>\n    <div className=\"min-w-0 flex-1 pr-1\">\n      <div className=\"whitespace-nowrap text-[13px] font-medium leading-5 text-foreground\">\n        {title}\n      </div>\n      {description ? (\n        <div className=\"mt-0.5 truncate text-[11px] leading-4 text-muted-foreground\">\n          {description}\n        </div>\n      ) : null}\n    </div>\n    <Switch\n      checked={checked}\n      disabled={disabled}\n      className=\"h-5 w-9 shrink-0 data-[state=checked]:bg-foreground data-[state=unchecked]:bg-muted\"\n      onClick={(event) => event.stopPropagation()}\n      onCheckedChange={onCheckedChange}\n    />\n  </div>\n);\n\nconst RelationConfigFields = ({\n  allowCrossOntology,\n  singleSelect,\n  allowedOntologyIds,\n  ontologyOptions,\n  disabled,\n  translate,\n  onAllowCrossOntologyChange,\n  onSingleSelectChange,\n  onAllowedOntologyIdsChange,\n}: {\n  allowCrossOntology: boolean;\n  singleSelect: boolean;\n  allowedOntologyIds: readonly string[];\n  ontologyOptions: readonly OntologyOption[];\n  disabled?: boolean;\n  translate: (\n    key: string,\n    values?: Record<string, string | number | boolean>,\n  ) => string;\n  onAllowCrossOntologyChange: (checked: boolean) => void;\n  onSingleSelectChange: (checked: boolean) => void;\n  onAllowedOntologyIdsChange: (ids: string[]) => void;\n}) => {\n  const [query, setQuery] = useState(\"\");\n  const selected = new Set(allowedOntologyIds);\n  const filtered = ontologyOptions.filter((option) => {\n    const keyword = query.trim().toLocaleLowerCase();\n    return (\n      !keyword ||\n      option.id.toLocaleLowerCase().includes(keyword) ||\n      option.label.toLocaleLowerCase().includes(keyword)\n    );\n  });\n  const toggle = (id: string, checked: boolean) =>\n    onAllowedOntologyIdsChange(\n      checked\n        ? [...new Set([...allowedOntologyIds, id])]\n        : allowedOntologyIds.filter((candidate) => candidate !== id),\n    );\n\n  return (\n    <div className=\"grid gap-2\" onClick={(event) => event.stopPropagation()}>\n      <div className=\"grid gap-2 sm:grid-cols-2\">\n        <FeatureColumnToggleRow\n          checked={allowCrossOntology}\n          disabled={disabled}\n          icon={Link2}\n          title={translate(\n            \"components.data-v2.feature-column.relation-cross-ontology\",\n          )}\n          onCheckedChange={onAllowCrossOntologyChange}\n        />\n        <FeatureColumnToggleRow\n          checked={singleSelect}\n          disabled={disabled}\n          icon={Type}\n          title={translate(\"components.data-v2.feature-column.relation-single\")}\n          onCheckedChange={onSingleSelectChange}\n        />\n      </div>\n      <div\n        className={\n          \"overflow-hidden rounded-xl border border-border/60 bg-muted/[0.16] \" +\n          (disabled ? \"opacity-60\" : \"\")\n        }\n      >\n        <div className=\"flex items-center justify-between gap-2 border-b border-border/50 bg-background/70 px-3 py-2\">\n          <div className=\"text-xs font-medium text-muted-foreground\">\n            {translate(\n              \"components.data-v2.feature-column.relation-allowed-ontologies-select-title\",\n            )}\n          </div>\n          <Button\n            type=\"button\"\n            variant=\"ghost\"\n            size=\"sm\"\n            className=\"h-7 rounded-md px-2 text-xs\"\n            disabled={disabled || allowedOntologyIds.length === 0}\n            onClick={() => onAllowedOntologyIdsChange([])}\n          >\n            {translate(\"common.actions.clear\")}\n          </Button>\n        </div>\n        <div className=\"space-y-2.5 p-3\">\n          <div className=\"flex items-center gap-2 rounded-lg border border-border/60 bg-background px-3 py-2\">\n            <Search className=\"h-3.5 w-3.5 shrink-0 text-muted-foreground\" />\n            <Input\n              value={query}\n              disabled={disabled}\n              onChange={(event) => setQuery(event.currentTarget.value)}\n              placeholder={translate(\n                \"components.data-v2.feature-column.relation-allowed-ontologies-search\",\n              )}\n              className=\"h-6 border-0 bg-transparent px-0 text-sm shadow-none focus-visible:ring-0 focus-visible:ring-offset-0\"\n            />\n          </div>\n          {allowedOntologyIds.length ? (\n            <div className=\"flex max-h-24 flex-wrap gap-1.5 overflow-y-auto pr-1\">\n              {allowedOntologyIds.map((id) => {\n                const option = ontologyOptions.find(\n                  (candidate) => candidate.id === id,\n                );\n                return (\n                  <Badge\n                    key={id}\n                    variant=\"secondary\"\n                    className=\"flex items-center gap-1 rounded-full bg-background px-2.5 py-1 text-[11px] font-medium text-foreground\"\n                  >\n                    <span className=\"max-w-[10rem] truncate\">\n                      {option?.label || id}\n                    </span>\n                    <button\n                      type=\"button\"\n                      disabled={disabled}\n                      className=\"rounded-full p-0.5 hover:bg-black/5 dark:hover:bg-white/10\"\n                      onClick={() => toggle(id, false)}\n                      aria-label={translate(\"common.actions.clear\")}\n                    >\n                      <X className=\"h-3 w-3\" />\n                    </button>\n                  </Badge>\n                );\n              })}\n            </div>\n          ) : null}\n          <div className=\"max-h-52 space-y-1 overflow-y-auto pr-1\">\n            {filtered.length ? (\n              filtered.map((option) => {\n                const checked = selected.has(option.id);\n                return (\n                  <label\n                    key={option.id}\n                    className={\n                      \"flex cursor-pointer items-center gap-3 rounded-lg border px-3 py-2.5 transition-colors \" +\n                      (checked\n                        ? \"border-primary/20 bg-primary/[0.045]\"\n                        : \"border-border/60 bg-background hover:border-border hover:bg-accent/25\")\n                    }\n                  >\n                    <Checkbox\n                      checked={checked}\n                      disabled={disabled}\n                      onCheckedChange={(next) =>\n                        toggle(option.id, next === true)\n                      }\n                    />\n                    <div className=\"min-w-0 flex-1\">\n                      <div className=\"truncate text-sm font-medium text-foreground\">\n                        {option.label}\n                      </div>\n                      <div className=\"truncate text-[11px] text-muted-foreground\">\n                        {option.id}\n                      </div>\n                    </div>\n                  </label>\n                );\n              })\n            ) : (\n              <div className=\"rounded-lg border border-dashed border-border/60 bg-background px-3 py-3 text-sm text-muted-foreground\">\n                {translate(\n                  \"components.data-v2.feature-column.relation-allowed-ontologies-select-empty\",\n                )}\n              </div>\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport const FeatureColumnManagerCapabilityRenderer: DesignCapabilityRenderer =\n  ({ model, translate, emitIntent }) => {\n    const columns = useMemo(\n      () => columnsFromModel(model.columns),\n      [model.columns],\n    );\n    const ontologyOptions = useMemo(\n      () => ontologyOptionsFromModel(model.ontologyOptions),\n      [model.ontologyOptions],\n    );\n    const typeOptions = useMemo(\n      () =>\n        (Array.isArray(model.types) ? model.types : []).flatMap((candidate) => {\n          if (!isJsonObject(candidate)) return [];\n          const id = readText(candidate.id);\n          if (!id) return [];\n          const labelKey = readText(candidate.labelKey);\n          return [\n            {\n              id,\n              label: labelKey\n                ? translate(labelKey)\n                : readText(candidate.label) || id,\n            },\n          ];\n        }),\n      [model.types, translate],\n    );\n    const [open, setOpen] = useState(false);\n    const [newName, setNewName] = useState(\"\");\n    const [newType, setNewType] = useState<FeatureColumnType>(\"text\");\n    const [newNumberMode, setNewNumberMode] =\n      useState<NumberFormatMode>(\"integer\");\n    const [newNumberScale, setNewNumberScale] = useState(\"2\");\n    const [newRelationAllowCrossOntology, setNewRelationAllowCrossOntology] =\n      useState(true);\n    const [newRelationSingleSelect, setNewRelationSingleSelect] =\n      useState(false);\n    const [newRelationAllowedOntologyIds, setNewRelationAllowedOntologyIds] =\n      useState<string[]>([]);\n    const [autoAttach, setAutoAttach] = useState(true);\n    const [selectedIds, setSelectedIds] = useState<ReadonlySet<string>>(\n      new Set(),\n    );\n    const [lastSelectedId, setLastSelectedId] = useState(\"\");\n    const [editingId, setEditingId] = useState(\"\");\n    const [editingName, setEditingName] = useState(\"\");\n    const [editingType, setEditingType] = useState<FeatureColumnType>(\"text\");\n    const [editingNumberMode, setEditingNumberMode] =\n      useState<NumberFormatMode>(\"integer\");\n    const [editingNumberScale, setEditingNumberScale] = useState(\"2\");\n    const [\n      editingRelationAllowCrossOntology,\n      setEditingRelationAllowCrossOntology,\n    ] = useState(true);\n    const [editingRelationSingleSelect, setEditingRelationSingleSelect] =\n      useState(false);\n    const [\n      editingRelationAllowedOntologyIds,\n      setEditingRelationAllowedOntologyIds,\n    ] = useState<string[]>([]);\n    const [deleteTargets, setDeleteTargets] = useState<ColumnModel[]>([]);\n    const [confirmDeleteOpen, setConfirmDeleteOpen] = useState(false);\n\n    useEffect(() => {\n      if (!open) {\n        setNewName(\"\");\n        setNewType(\"text\");\n        setNewNumberMode(\"integer\");\n        setNewNumberScale(\"2\");\n        setNewRelationAllowCrossOntology(true);\n        setNewRelationSingleSelect(false);\n        setNewRelationAllowedOntologyIds([]);\n        setAutoAttach(true);\n        setSelectedIds(new Set());\n        setLastSelectedId(\"\");\n        setEditingId(\"\");\n        setDeleteTargets([]);\n        setConfirmDeleteOpen(false);\n      }\n    }, [open]);\n\n    const expectedOntologyDefinitionVersion = Number(\n      model.expectedOntologyDefinitionVersion,\n    );\n    const canCreate = model.disabled !== true && model.canCreate !== false;\n    const canUpdate = model.disabled !== true && model.canUpdate !== false;\n    const canDelete = model.disabled !== true && model.canDelete !== false;\n    const canAttach = model.disabled !== true && model.canAttach !== false;\n    const triggerLabel = copy(\n      model,\n      \"triggerLabelKey\",\n      \"Feature columns\",\n      translate,\n    );\n    const selectColumn = (\n      column: ColumnModel,\n      event: { shiftKey: boolean; metaKey: boolean; ctrlKey: boolean },\n    ) => {\n      if (column.readOnly) return;\n      if (event.shiftKey && lastSelectedId) {\n        const from = columns.findIndex(\n          (candidate) => candidate.id === lastSelectedId,\n        );\n        const to = columns.findIndex((candidate) => candidate.id === column.id);\n        if (from >= 0 && to >= 0) {\n          const next = new Set(selectedIds);\n          columns\n            .slice(Math.min(from, to), Math.max(from, to) + 1)\n            .filter((candidate) => !candidate.readOnly)\n            .forEach((candidate) => next.add(candidate.id));\n          setSelectedIds(next);\n          return;\n        }\n      }\n      if (event.metaKey || event.ctrlKey) {\n        const next = new Set(selectedIds);\n        if (next.has(column.id)) next.delete(column.id);\n        else next.add(column.id);\n        setSelectedIds(next);\n        setLastSelectedId(column.id);\n        return;\n      }\n      setSelectedIds(new Set([column.id]));\n      setLastSelectedId(column.id);\n    };\n    const createColumn = (source?: ColumnModel) => {\n      const type = source ? normalizeFeatureColumnType(source.type) : newType;\n      const fallbackTypeLabel =\n        typeOptions.find(({ id }) => id === type)?.label || type;\n      const name = source\n        ? duplicateName(\n            source.name,\n            columns,\n            copy(model, \"duplicateLabelKey\", \"Copy\", translate),\n          )\n        : (newName.trim() || fallbackTypeLabel + (columns.length + 1)).trim();\n      if (\n        !name ||\n        !Number.isSafeInteger(expectedOntologyDefinitionVersion) ||\n        expectedOntologyDefinitionVersion < 1\n      )\n        return;\n      const config =\n        source?.config ??\n        buildColumnConfig({\n          type,\n          numberMode: newNumberMode,\n          numberScale: newNumberScale,\n          relationAllowCrossOntology: newRelationAllowCrossOntology,\n          relationSingleSelect: newRelationSingleSelect,\n          relationAllowedOntologyIds: newRelationAllowedOntologyIds,\n        });\n      emitIntent(\"capability.feature-column-manager.create\", {\n        name,\n        type,\n        expectedOntologyDefinitionVersion,\n        ...(config ? { config } : {}),\n        ...(source ? { sort: source.sort + 1 } : {}),\n        ...(autoAttach && readText(model.scopeContainerViewId)\n          ? { scopeContainerViewId: readText(model.scopeContainerViewId) }\n          : {}),\n      });\n      if (!source) setNewName(\"\");\n    };\n\n    const deleteColumns = (targets: ColumnModel[]) => {\n      if (!canDelete) return;\n      const deletable = targets.filter((column) => !column.readOnly);\n      if (!deletable.length) return;\n      emitIntent(\"capability.feature-column-manager.delete\", {\n        columns: deletable.map((column) => ({\n          columnId: column.id,\n          expectedDefinitionVersion: column.definitionVersion,\n        })),\n      });\n      setSelectedIds(new Set());\n      setLastSelectedId(\"\");\n      setDeleteTargets([]);\n      setConfirmDeleteOpen(false);\n    };\n\n    const openDeleteConfirm = (targets: ColumnModel[]) => {\n      const deletable = targets.filter((column) => !column.readOnly);\n      if (!canDelete || !deletable.length) return;\n      setDeleteTargets(deletable);\n      setConfirmDeleteOpen(true);\n    };\n\n    const startEdit = (column: ColumnModel) => {\n      if (!canUpdate || column.readOnly) return;\n      const number = readNumberConfig(column.config);\n      const relation = readRelationConfig(column.config);\n      setEditingId(column.id);\n      setEditingName(column.name);\n      setEditingType(normalizeFeatureColumnType(column.type));\n      setEditingNumberMode(number.mode);\n      setEditingNumberScale(String(number.scale));\n      setEditingRelationAllowCrossOntology(relation.allowCrossOntology);\n      setEditingRelationSingleSelect(relation.singleSelect);\n      setEditingRelationAllowedOntologyIds(relation.allowedOntologyIds);\n    };\n\n    const commitEdit = (column: ColumnModel) => {\n      const name = editingName.trim();\n      if (!name) return;\n      const config = buildColumnConfig({\n        type: editingType,\n        numberMode: editingNumberMode,\n        numberScale: editingNumberScale,\n        relationAllowCrossOntology: editingRelationAllowCrossOntology,\n        relationSingleSelect: editingRelationSingleSelect,\n        relationAllowedOntologyIds: editingRelationAllowedOntologyIds,\n      });\n      emitIntent(\"capability.feature-column-manager.update\", {\n        columnId: column.id,\n        expectedDefinitionVersion: column.definitionVersion,\n        changes: { name, type: editingType, config: config ?? null },\n      });\n      setEditingId(\"\");\n    };\n\n    const pagination = isJsonObject(model.pagination) ? model.pagination : {};\n    return (\n      <>\n        <Popover open={open} onOpenChange={setOpen}>\n          <PopoverTrigger asChild>\n            <Button\n              type=\"button\"\n              variant=\"outline\"\n              size=\"sm\"\n              className=\"h-10 shrink-0 gap-2 px-2 text-foreground 2xl:px-3\"\n              aria-label={triggerLabel}\n              title={triggerLabel}\n              disabled={model.disabled === true}\n            >\n              <Settings2 className=\"h-4 w-4\" />\n              <span className=\"sr-only 2xl:not-sr-only\">{triggerLabel}</span>\n            </Button>\n          </PopoverTrigger>\n          <PopoverContent\n            align=\"end\"\n            side=\"bottom\"\n            sideOffset={8}\n            collisionPadding={16}\n            className=\"z-[80] flex max-h-[min(70vh,32rem)] w-[min(28rem,calc(100vw-1rem))] flex-col overflow-hidden rounded-xl border border-border bg-background p-0 text-foreground shadow-[0_14px_32px_-20px_rgba(15,23,42,0.24)] outline-none\"\n          >\n            <div className=\"shrink-0 border-b border-border/60 px-3.5 py-2.5\">\n              <div className=\"flex items-start gap-2.5\">\n                <div className=\"flex h-7 w-7 shrink-0 items-center justify-center rounded-md bg-muted/35 text-muted-foreground\">\n                  <Settings2 className=\"h-3.5 w-3.5\" />\n                </div>\n                <div className=\"min-w-0 flex-1\">\n                  <div className=\"flex items-center gap-1.5\">\n                    <h2 className=\"truncate text-sm font-semibold text-foreground\">\n                      {copy(model, \"titleKey\", triggerLabel, translate)}\n                    </h2>\n                    {columns.length ? (\n                      <Badge\n                        variant=\"secondary\"\n                        className=\"rounded-full bg-muted/70 px-1.5 py-0 text-[10px] font-medium text-muted-foreground\"\n                      >\n                        {columns.length}\n                      </Badge>\n                    ) : null}\n                  </div>\n                  <p className=\"mt-0.5 text-[11px] leading-4 text-muted-foreground\">\n                    {copy(\n                      model,\n                      \"descriptionKey\",\n                      \"Create and manage feature columns.\",\n                      translate,\n                    )}\n                  </p>\n                </div>\n                <Button\n                  type=\"button\"\n                  variant=\"ghost\"\n                  size=\"icon\"\n                  className=\"h-7 w-7 shrink-0 rounded-md text-muted-foreground\"\n                  onClick={() => setOpen(false)}\n                  aria-label={copy(model, \"cancelLabelKey\", \"Close\", translate)}\n                >\n                  <X className=\"h-3.5 w-3.5\" />\n                </Button>\n              </div>\n            </div>\n\n            <div className=\"shrink-0 space-y-1.5 px-2.5 pt-2\">\n              <div className=\"grid gap-2 rounded-xl border border-border/60 bg-muted/[0.18] p-2 sm:grid-cols-[minmax(0,1fr)_5.5rem_auto]\">\n                <Input\n                  value={newName}\n                  onChange={(event) => setNewName(event.currentTarget.value)}\n                  onKeyDown={(event) => {\n                    if (event.key === \"Enter\") createColumn();\n                  }}\n                  placeholder={copy(\n                    model,\n                    \"namePlaceholderKey\",\n                    \"Column name\",\n                    translate,\n                  )}\n                  className=\"h-8 rounded-lg border-border/70 bg-background shadow-none\"\n                />\n                <Select\n                  value={newType}\n                  onValueChange={(value) =>\n                    setNewType(normalizeFeatureColumnType(value))\n                  }\n                >\n                  <SelectTrigger className=\"h-8 rounded-lg border-border/70 bg-background shadow-none\">\n                    <SelectValue />\n                  </SelectTrigger>\n                  <SelectContent className=\"z-[100]\">\n                    {(typeOptions.length\n                      ? typeOptions\n                      : [\"text\", \"img\", \"number\", \"relation\", \"json\"].map(\n                          (id) => ({ id, label: id }),\n                        )\n                    ).map((option) => (\n                      <SelectItem key={option.id} value={option.id}>\n                        {option.label}\n                      </SelectItem>\n                    ))}\n                  </SelectContent>\n                </Select>\n                <Button\n                  type=\"button\"\n                  size=\"sm\"\n                  className=\"h-8 rounded-lg px-3\"\n                  disabled={!canCreate}\n                  onClick={() => createColumn()}\n                >\n                  <Plus className=\"h-4 w-4\" />\n                  {copy(model, \"createLabelKey\", \"Create\", translate)}\n                </Button>\n              </div>\n              {newType === \"number\" ? (\n                <div\n                  className={\n                    \"grid gap-2 \" +\n                    (newNumberMode === \"decimal\"\n                      ? \"sm:grid-cols-[8rem_6rem]\"\n                      : \"sm:grid-cols-[8rem]\")\n                  }\n                >\n                  <Select\n                    value={newNumberMode}\n                    onValueChange={(value) =>\n                      setNewNumberMode(\n                        value === \"decimal\" ? \"decimal\" : \"integer\",\n                      )\n                    }\n                  >\n                    <SelectTrigger className=\"h-8 rounded-lg border-border/70 bg-background shadow-none\">\n                      <SelectValue\n                        placeholder={translate(\n                          \"components.data-v2.feature-column.number-format\",\n                        )}\n                      />\n                    </SelectTrigger>\n                    <SelectContent className=\"z-[100]\">\n                      <SelectItem value=\"integer\">\n                        {translate(\n                          \"components.data-v2.feature-column.number-integer\",\n                        )}\n                      </SelectItem>\n                      <SelectItem value=\"decimal\">\n                        {translate(\n                          \"components.data-v2.feature-column.number-decimal\",\n                        )}\n                      </SelectItem>\n                    </SelectContent>\n                  </Select>\n                  {newNumberMode === \"decimal\" ? (\n                    <Input\n                      value={newNumberScale}\n                      onChange={(event) =>\n                        setNewNumberScale(\n                          event.currentTarget.value\n                            .replace(/[^\\d]/g, \"\")\n                            .slice(0, 1),\n                        )\n                      }\n                      placeholder={translate(\n                        \"components.data-v2.feature-column.decimal-places\",\n                      )}\n                      className=\"h-8 rounded-lg border-border/70 bg-background shadow-none\"\n                    />\n                  ) : null}\n                </div>\n              ) : null}\n              {newType === \"relation\" ? (\n                <RelationConfigFields\n                  allowCrossOntology={newRelationAllowCrossOntology}\n                  singleSelect={newRelationSingleSelect}\n                  allowedOntologyIds={newRelationAllowedOntologyIds}\n                  ontologyOptions={ontologyOptions}\n                  disabled={!canCreate}\n                  translate={translate}\n                  onAllowCrossOntologyChange={setNewRelationAllowCrossOntology}\n                  onSingleSelectChange={setNewRelationSingleSelect}\n                  onAllowedOntologyIdsChange={setNewRelationAllowedOntologyIds}\n                />\n              ) : null}\n              {model.canAttachToView === true ? (\n                <FeatureColumnToggleRow\n                  checked={autoAttach}\n                  disabled={!canAttach}\n                  icon={Sparkles}\n                  title={copy(\n                    model,\n                    \"autoAttachLabelKey\",\n                    \"Attach to current view\",\n                    translate,\n                  )}\n                  description={translate(\n                    \"components.data-v2.feature-column.auto-attach-desc\",\n                  )}\n                  onCheckedChange={setAutoAttach}\n                />\n              ) : null}\n              {selectedIds.size ? (\n                <div className=\"flex flex-wrap items-center justify-between gap-2 rounded-lg border border-primary/15 bg-primary/[0.05] px-3 py-2\">\n                  <span className=\"text-xs font-medium\">\n                    {translate(\n                      readText(model.selectedCountKey) ||\n                        \"common.actions.selected\",\n                      { count: selectedIds.size },\n                    )}\n                  </span>\n                  <div className=\"flex items-center gap-2\">\n                    <Button\n                      type=\"button\"\n                      variant=\"destructive\"\n                      size=\"sm\"\n                      className=\"h-7 rounded-md px-2.5\"\n                      disabled={!canDelete}\n                      onClick={() =>\n                        openDeleteConfirm(\n                          columns.filter((column) =>\n                            selectedIds.has(column.id),\n                          ),\n                        )\n                      }\n                    >\n                      <Trash2 className=\"h-3.5 w-3.5\" />\n                      {translate(\n                        \"components.data-v2.feature-column.batch-delete\",\n                      )}\n                    </Button>\n                    <Button\n                      type=\"button\"\n                      variant=\"outline\"\n                      size=\"sm\"\n                      className=\"h-7 rounded-md px-2.5\"\n                      onClick={() => {\n                        setSelectedIds(new Set());\n                        setLastSelectedId(\"\");\n                      }}\n                    >\n                      {translate(\"components.data-v2.feature-column.deselect\")}\n                    </Button>\n                  </div>\n                </div>\n              ) : null}\n            </div>\n\n            <div className=\"min-h-0 flex-1 overflow-y-auto px-2.5 pb-2.5 pt-2\">\n              <div className=\"mb-1 flex items-center gap-1.5 px-0.5\">\n                <h3 className=\"truncate text-[13px] font-medium text-muted-foreground\">\n                  {triggerLabel}\n                </h3>\n                {columns.length ? (\n                  <Badge\n                    variant=\"secondary\"\n                    className=\"rounded-full bg-muted/70 px-1.5 py-0 text-[10px] font-medium text-muted-foreground\"\n                  >\n                    {columns.length}\n                  </Badge>\n                ) : null}\n              </div>\n              {columns.length ? (\n                <div className=\"space-y-1.5\">\n                  {columns.map((column) => {\n                    const editing = editingId === column.id;\n                    const selected = selectedIds.has(column.id);\n                    const TypeIcon =\n                      column.type === \"img\" ||\n                      column.type === \"image\" ||\n                      column.type === \"images\" ||\n                      column.type === \"media\"\n                        ? Paperclip\n                        : column.type === \"number\"\n                          ? Hash\n                          : column.type === \"relation\"\n                            ? Link2\n                            : column.type === \"json\"\n                              ? Braces\n                              : Type;\n                    return (\n                      <div\n                        key={column.id}\n                        className={\n                          \"group flex items-center gap-2.5 rounded-lg border px-3 py-2.5 transition-colors \" +\n                          (selectedIds.has(column.id)\n                            ? \"border-primary/20 bg-primary/[0.045] \"\n                            : \"border-border/60 bg-background \") +\n                          (!editing && !column.readOnly\n                            ? \"cursor-pointer hover:border-border hover:bg-accent/25 \"\n                            : \"\") +\n                          (editing ? \"items-start\" : \"\")\n                        }\n                        onClick={(event) => {\n                          if (!editing) selectColumn(column, event);\n                        }}\n                      >\n                        <div\n                          className={\n                            \"flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-muted/35 text-muted-foreground \" +\n                            (selected ? \"text-foreground\" : \"\")\n                          }\n                        >\n                          <TypeIcon className=\"h-4 w-4\" />\n                        </div>\n                        <div className=\"min-w-0 flex-1\">\n                          {editing ? (\n                            <div className=\"space-y-2.5\">\n                              <div className=\"grid gap-2 xl:grid-cols-[minmax(0,1fr)_7rem_auto]\">\n                                <Input\n                                  value={editingName}\n                                  onChange={(event) =>\n                                    setEditingName(event.currentTarget.value)\n                                  }\n                                  onKeyDown={(event) => {\n                                    if (event.key === \"Enter\")\n                                      commitEdit(column);\n                                    if (event.key === \"Escape\")\n                                      setEditingId(\"\");\n                                  }}\n                                  onClick={(event) => event.stopPropagation()}\n                                  autoFocus\n                                  className=\"h-8 rounded-lg border-border/70 bg-background shadow-none\"\n                                />\n                                <Select\n                                  value={editingType}\n                                  onValueChange={(value) =>\n                                    setEditingType(\n                                      normalizeFeatureColumnType(value),\n                                    )\n                                  }\n                                >\n                                  <SelectTrigger\n                                    className=\"h-8 rounded-lg border-border/70 bg-background shadow-none\"\n                                    onClick={(event) => event.stopPropagation()}\n                                  >\n                                    <SelectValue />\n                                  </SelectTrigger>\n                                  <SelectContent className=\"z-[100]\">\n                                    {(typeOptions.length\n                                      ? typeOptions\n                                      : [{ id: \"text\", label: \"text\" }]\n                                    ).map((option) => (\n                                      <SelectItem\n                                        key={option.id}\n                                        value={option.id}\n                                      >\n                                        {option.label}\n                                      </SelectItem>\n                                    ))}\n                                  </SelectContent>\n                                </Select>\n                                <div className=\"flex shrink-0 items-center justify-end gap-1.5\">\n                                  <Button\n                                    type=\"button\"\n                                    size=\"sm\"\n                                    className=\"h-8 rounded-md px-2.5\"\n                                    onClick={(event) => {\n                                      event.stopPropagation();\n                                      commitEdit(column);\n                                    }}\n                                    disabled={!editingName.trim()}\n                                  >\n                                    {copy(\n                                      model,\n                                      \"saveLabelKey\",\n                                      \"Save\",\n                                      translate,\n                                    )}\n                                  </Button>\n                                  <Button\n                                    type=\"button\"\n                                    size=\"sm\"\n                                    variant=\"outline\"\n                                    className=\"h-8 rounded-md px-2.5\"\n                                    onClick={(event) => {\n                                      event.stopPropagation();\n                                      setEditingId(\"\");\n                                    }}\n                                  >\n                                    {copy(\n                                      model,\n                                      \"cancelLabelKey\",\n                                      \"Cancel\",\n                                      translate,\n                                    )}\n                                  </Button>\n                                </div>\n                              </div>\n                              {editingType === \"number\" ? (\n                                <div\n                                  className={\n                                    \"grid gap-2 \" +\n                                    (editingNumberMode === \"decimal\"\n                                      ? \"sm:grid-cols-[8rem_6rem]\"\n                                      : \"sm:grid-cols-[8rem]\")\n                                  }\n                                >\n                                  <Select\n                                    value={editingNumberMode}\n                                    onValueChange={(value) =>\n                                      setEditingNumberMode(\n                                        value === \"decimal\"\n                                          ? \"decimal\"\n                                          : \"integer\",\n                                      )\n                                    }\n                                  >\n                                    <SelectTrigger\n                                      className=\"h-8 rounded-lg border-border/70 bg-background shadow-none\"\n                                      onClick={(event) =>\n                                        event.stopPropagation()\n                                      }\n                                    >\n                                      <SelectValue />\n                                    </SelectTrigger>\n                                    <SelectContent className=\"z-[100]\">\n                                      <SelectItem value=\"integer\">\n                                        {translate(\n                                          \"components.data-v2.feature-column.number-integer\",\n                                        )}\n                                      </SelectItem>\n                                      <SelectItem value=\"decimal\">\n                                        {translate(\n                                          \"components.data-v2.feature-column.number-decimal\",\n                                        )}\n                                      </SelectItem>\n                                    </SelectContent>\n                                  </Select>\n                                  {editingNumberMode === \"decimal\" ? (\n                                    <Input\n                                      value={editingNumberScale}\n                                      onChange={(event) =>\n                                        setEditingNumberScale(\n                                          event.currentTarget.value\n                                            .replace(/[^\\d]/g, \"\")\n                                            .slice(0, 1),\n                                        )\n                                      }\n                                      onClick={(event) =>\n                                        event.stopPropagation()\n                                      }\n                                      className=\"h-8 rounded-lg border-border/70 bg-background shadow-none\"\n                                    />\n                                  ) : null}\n                                </div>\n                              ) : null}\n                              {editingType === \"relation\" ? (\n                                <RelationConfigFields\n                                  allowCrossOntology={\n                                    editingRelationAllowCrossOntology\n                                  }\n                                  singleSelect={editingRelationSingleSelect}\n                                  allowedOntologyIds={\n                                    editingRelationAllowedOntologyIds\n                                  }\n                                  ontologyOptions={ontologyOptions}\n                                  translate={translate}\n                                  onAllowCrossOntologyChange={\n                                    setEditingRelationAllowCrossOntology\n                                  }\n                                  onSingleSelectChange={\n                                    setEditingRelationSingleSelect\n                                  }\n                                  onAllowedOntologyIdsChange={\n                                    setEditingRelationAllowedOntologyIds\n                                  }\n                                />\n                              ) : null}\n                            </div>\n                          ) : (\n                            <>\n                              <div className=\"flex min-w-0 flex-wrap items-center gap-1.5\">\n                                <span className=\"truncate text-[13px] font-medium text-foreground\">\n                                  {column.name}\n                                </span>\n                                {column.readOnly ? (\n                                  <Badge\n                                    variant=\"outline\"\n                                    className=\"rounded-full px-2 py-0.5 text-[10px] font-medium\"\n                                  >\n                                    {translate(\n                                      \"components.data-v2.feature-column.incoming-relation-editable\",\n                                    )}\n                                  </Badge>\n                                ) : null}\n                                <Badge\n                                  variant=\"secondary\"\n                                  className=\"rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground\"\n                                >\n                                  {typeOptions.find(\n                                    (option) => option.id === column.type,\n                                  )?.label || column.type}\n                                </Badge>\n                              </div>\n                              <div className=\"mt-0.5 truncate text-[11px] leading-4 text-muted-foreground\">\n                                {column.description || column.type}\n                              </div>\n                            </>\n                          )}\n                        </div>\n                        {!editing ? (\n                          <div className=\"flex shrink-0 items-center gap-0.5\">\n                            <div\n                              className={\n                                \"mr-1 flex h-4 w-4 items-center justify-center rounded-full border transition-colors \" +\n                                (selected\n                                  ? \"border-primary bg-primary text-primary-foreground\"\n                                  : \"border-border/70 bg-background text-transparent\")\n                              }\n                            >\n                              <Check className=\"h-2.5 w-2.5\" />\n                            </div>\n                            {!column.readOnly ? (\n                              <Button\n                                type=\"button\"\n                                variant=\"ghost\"\n                                size=\"icon\"\n                                className=\"h-7 w-7 rounded-md\"\n                                disabled={!canUpdate}\n                                onClick={(event) => {\n                                  event.stopPropagation();\n                                  startEdit(column);\n                                }}\n                                aria-label={copy(\n                                  model,\n                                  \"editLabelKey\",\n                                  \"Edit\",\n                                  translate,\n                                )}\n                              >\n                                <Pencil className=\"h-3.5 w-3.5\" />\n                              </Button>\n                            ) : null}\n                            {!column.readOnly ? (\n                              <Button\n                                type=\"button\"\n                                variant=\"ghost\"\n                                size=\"icon\"\n                                className=\"h-7 w-7 rounded-md\"\n                                disabled={!canCreate}\n                                onClick={(event) => {\n                                  event.stopPropagation();\n                                  createColumn(column);\n                                }}\n                                aria-label={copy(\n                                  model,\n                                  \"duplicateLabelKey\",\n                                  \"Duplicate\",\n                                  translate,\n                                )}\n                              >\n                                <Copy className=\"h-3.5 w-3.5\" />\n                              </Button>\n                            ) : null}\n                            {!column.readOnly ? (\n                              <Button\n                                type=\"button\"\n                                variant=\"ghost\"\n                                size=\"icon\"\n                                className=\"h-7 w-7 rounded-md text-destructive-text hover:text-destructive-text\"\n                                disabled={!canDelete}\n                                onClick={(event) => {\n                                  event.stopPropagation();\n                                  openDeleteConfirm([column]);\n                                }}\n                                aria-label={copy(\n                                  model,\n                                  \"deleteLabelKey\",\n                                  \"Delete\",\n                                  translate,\n                                )}\n                              >\n                                <Trash2 className=\"h-3.5 w-3.5\" />\n                              </Button>\n                            ) : null}\n                          </div>\n                        ) : null}\n                      </div>\n                    );\n                  })}\n                  {pagination.hasMore === true &&\n                  readText(pagination.nextCursor) ? (\n                    <Button\n                      type=\"button\"\n                      variant=\"outline\"\n                      size=\"sm\"\n                      className=\"w-full\"\n                      disabled={pagination.loadingMore === true}\n                      onClick={() =>\n                        emitIntent(\n                          \"capability.feature-column-manager.load-more\",\n                          { cursor: readText(pagination.nextCursor) },\n                        )\n                      }\n                    >\n                      {pagination.loadingMore === true\n                        ? \"…\"\n                        : translate(\"common.actions.load-more\")}\n                    </Button>\n                  ) : null}\n                </div>\n              ) : (\n                <div className=\"rounded-lg border border-dashed border-border/70 bg-background px-4 py-7 text-center text-sm text-muted-foreground\">\n                  {copy(\n                    model,\n                    \"emptyLabelKey\",\n                    \"No feature columns\",\n                    translate,\n                  )}\n                </div>\n              )}\n            </div>\n          </PopoverContent>\n        </Popover>\n        <AlertDialog\n          open={confirmDeleteOpen}\n          onOpenChange={setConfirmDeleteOpen}\n        >\n          <AlertDialogContent>\n            <AlertDialogHeader>\n              <AlertDialogTitle>\n                {translate(\"components.data-v2.feature-column.delete-title\")}\n              </AlertDialogTitle>\n              <AlertDialogDescription>\n                {deleteTargets.length === 1\n                  ? translate(\n                      \"components.data-v2.feature-column.delete-single-desc\",\n                      { name: deleteTargets[0]?.name || \"\" },\n                    )\n                  : translate(\n                      \"components.data-v2.feature-column.delete-multi-desc\",\n                      { count: deleteTargets.length },\n                    )}\n              </AlertDialogDescription>\n            </AlertDialogHeader>\n            <AlertDialogFooter>\n              <AlertDialogCancel>\n                {copy(model, \"cancelLabelKey\", \"Cancel\", translate)}\n              </AlertDialogCancel>\n              <AlertDialogAction asChild>\n                <Button\n                  type=\"button\"\n                  variant=\"destructive\"\n                  disabled={!deleteTargets.length}\n                  onClick={() => deleteColumns(deleteTargets)}\n                >\n                  {copy(model, \"deleteLabelKey\", \"Delete\", translate)}\n                </Button>\n              </AlertDialogAction>\n            </AlertDialogFooter>\n          </AlertDialogContent>\n        </AlertDialog>\n      </>\n    );\n  };\n","import { cursorPaginationSchema } from './paginationSchema';\nimport { CHOICE_PICKER_ENTRY } from './choicePickerCatalog';\nimport { RECORD_EDITOR_OPTION_SCHEMA, RECORD_EDITOR_STRING_OPTION_SCHEMA, RECORD_EDITOR_OPTIONS_SOURCE_SCHEMA, RECORD_EDITOR_OPTION_TABLES_SCHEMA } from './recordEditorOptions';\nimport { BASE_ASSET_ICON_DESCRIPTOR_SCHEMA } from '../base/BaseAssetIcon';\nimport { ORDERED_SELECTION_MODEL_SCHEMA, ORDERED_SELECTION_INTENT_SCHEMAS } from './orderedSelection';\nimport { GALLERY_PRESENTATION_SETTINGS_SCHEMA, GALLERY_PRESENTATION_FIELDS_SCHEMA, GALLERY_PRESENTATION_SETTING_CHANGE_SCHEMA } from './galleryPresentationSettings';\nimport { RUNTIME_TERMINAL_MODEL_SCHEMA } from './runtimeTerminal';\nimport { TABLE_DISPLAY_CELL_SCHEMAS } from './typedDisplayCell';\nimport { I18N_DISPLAY_TEXT_SCHEMA, LOCALIZED_DISPLAY_PARAMETERS_SCHEMA } from './localizedDisplayValue';\nimport { FILE_PICKER_SCHEMA, FILE_PICKER_RENDER_MODEL_SCHEMA, FILE_PICKER_SELECT_INTENT_SCHEMA, FILE_PICKER_CANCEL_INTENT_SCHEMA } from './filePicker';\nimport { TABLE_MESSAGE_VALUE_SCHEMA } from './tableMessageValue';\nimport { NUMERIC_SERIES_SCHEMA, NUMERIC_SERIES_RENDER_MODEL_SCHEMA, NUMERIC_SERIES_RANGE_INTENT_SCHEMA, NUMERIC_SERIES_EXPAND_INTENT_SCHEMA } from \"./numericSeries\";\nimport type { JsonObject } from '@inf-monkeys-tech/monkeys';\nimport { SUMMARY_CHART_SCHEMA, SUMMARY_CHART_RENDER_MODEL_SCHEMA } from './summaryChart';\nimport { DATA_EXPLORER_APPEARANCE_OPTIONS } from '../data-explorer/appearanceOptions';\n\nimport {\n  compileDesignCapabilityCatalog,\n  compileDesignCapabilityCatalogArtifact,\n} from \"./catalog\";\nimport { DESIGN_CAPABILITY_I18N_KEYS } from \"./i18n\";\nimport {\n  DATA_CONTEXT_BAR_CHANGE_INTENT_SCHEMA,\n  DATA_CONTEXT_BAR_CLEAR_INTENT_SCHEMA,\n  DATA_CONTEXT_BAR_REFRESH_INTENT_SCHEMA,\n  DATA_CONTEXT_BAR_RENDER_MODEL_SCHEMA,\n  DATA_CONTEXT_BAR_SCHEMA,\n  ONTOLOGY_TREND_MATRIX_RENDER_MODEL_SCHEMA,\n  ONTOLOGY_TREND_MATRIX_SCHEMA,\n  ONTOLOGY_TREND_MATRIX_SELECT_INTENT_SCHEMA,\n} from \"./nativeAnalytics\";\nimport {\n  ONTOLOGY_MANAGEMENT_OUTPUT_PORTS,\n  ONTOLOGY_MANAGEMENT_RENDER_MODEL_SCHEMA,\n  ONTOLOGY_MANAGEMENT_SCHEMA,\n} from \"./ontologyManagement\";\nimport {\n  FEATURE_COLUMN_MANAGER_OUTPUT_PORTS,\n  FEATURE_COLUMN_MANAGER_RENDER_MODEL_SCHEMA,\n  FEATURE_COLUMN_MANAGER_SCHEMA,\n} from \"./featureColumnManager\";\n\nexport const DESIGN_CAPABILITY_IDS = Object.freeze({\n  choicePicker: \"monkeys.design.choice-picker\",\n  shellLayout: \"monkeys.design.shell-layout\",\n  sidebarFilter: \"monkeys.design.sidebar-filter\",\n  ontologyNavigator: \"monkeys.design.ontology-navigator\",\n  dataToolbar: \"monkeys.design.data-toolbar\",\n  ontologyTable: \"monkeys.design.ontology-table\",\n  numericSeries: \"monkeys.design.numeric-series\",\n  summaryChart: \"monkeys.design.summary-chart\",\n  filePicker: \"monkeys.design.file-picker\",\n  runtimeTerminal: \"monkeys.design.runtime-terminal\",\n  orderedSelection: \"monkeys.design.ordered-selection\",\n  ontologyTrendMatrix: \"monkeys.design.ontology-trend-matrix\",\n  dataContextBar: \"monkeys.design.data-context-bar\",\n  cardGrid: \"monkeys.design.card-grid\",\n  gallery: \"monkeys.design.gallery\",\n  pagination: \"monkeys.design.pagination\",\n  recordDetail: \"monkeys.design.record-detail\",\n  recordEditor: \"monkeys.design.record-editor\",\n  recordHistory: \"monkeys.design.record-history\",\n  ontologyManagement: \"monkeys.design.ontology-management\",\n  featureColumnManager: \"monkeys.design.feature-column-manager\",\n  sectionHeader: \"monkeys.design.section-header\",\n  notice: \"monkeys.design.notice\",\n  descriptionList: \"monkeys.design.description-list\",\n  contentPanel: \"monkeys.design.content-panel\",\n  toolbar: \"monkeys.design.toolbar\",\n  status: \"monkeys.design.status\",\n  professionalLeaf: \"monkeys.design.professional-leaf\",\n  professionalExtensionLeaf: \"monkeys.design.professional-extension-leaf\",\n} as const);\n\nexport const DESIGN_CAPABILITY_RENDERER_KEYS = Object.freeze({\n  shellLayout: \"monkeys.design.renderer.shell-layout\",\n  sidebarFilter: \"monkeys.design.renderer.sidebar-filter\",\n  ontologyNavigator: \"monkeys.design.renderer.ontology-navigator\",\n  dataToolbar: \"monkeys.design.renderer.data-toolbar\",\n  ontologyTable: \"monkeys.design.renderer.ontology-table\",\n  numericSeries: \"monkeys.design.renderer.numeric-series\",\n  summaryChart: \"monkeys.design.renderer.summary-chart\",\n  filePicker: \"monkeys.design.renderer.file-picker\",\n  runtimeTerminal: \"monkeys.design.renderer.runtime-terminal\",\n  orderedSelection: \"monkeys.design.renderer.ordered-selection\",\n  ontologyTrendMatrix: \"monkeys.design.renderer.ontology-trend-matrix\",\n  dataContextBar: \"monkeys.design.renderer.data-context-bar\",\n  cardGrid: \"monkeys.design.renderer.card-grid\",\n  gallery: \"monkeys.design.renderer.gallery\",\n  pagination: \"monkeys.design.renderer.pagination\",\n  recordDetail: \"monkeys.design.renderer.record-detail\",\n  recordEditor: \"monkeys.design.renderer.record-editor\",\n  recordHistory: \"monkeys.design.renderer.record-history\",\n  ontologyManagement: \"monkeys.design.renderer.ontology-management\",\n  featureColumnManager: \"monkeys.design.renderer.feature-column-manager\",\n  sectionHeader: \"monkeys.design.renderer.section-header\",\n  notice: \"monkeys.design.renderer.notice\",\n  descriptionList: \"monkeys.design.renderer.description-list\",\n  contentPanel: \"monkeys.design.renderer.content-panel\",\n  toolbar: \"monkeys.design.renderer.toolbar\",\n  status: \"monkeys.design.renderer.status\",\n  professionalLeaf: \"monkeys.design.renderer.professional-leaf\",\n  professionalExtensionLeaf: \"monkeys.design.renderer.professional-extension-leaf\",\n} as const);\n\nimport { createDesignCapabilityEntry as createEntry, i18n, jsonSchema, type PropertyFieldDefinition, type OutputPortDefinition } from './entry';\n\nconst SIDEBAR_FILTER_SCHEMA =\n  \"monkeys-design://ontology-view/sidebar-filter/v1\";\nconst governedSelectionValueSchema = (\n  kind: \"tags\" | \"files\" | \"relations\",\n): JsonObject => ({\n  type: \"object\",\n  additionalProperties: false,\n  required: [\"kind\", \"items\"],\n  properties: {\n    kind: { const: kind },\n    items: {\n      type: \"array\",\n      items: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"id\", \"label\"],\n        properties: {\n          id: { type: \"string\", minLength: 1 },\n          label: { type: \"string\", minLength: 1 },\n          labelI18n: I18N_DISPLAY_TEXT_SCHEMA,\n          ...(kind === \"tags\"\n            ? { color: { type: \"string\", minLength: 1 } }\n            : {}),\n          ...(kind === \"files\"\n            ? { mediaType: { type: \"string\", minLength: 1 } }\n            : {}),\n          ...(kind === \"relations\"\n            ? { ontologyId: { type: \"string\", minLength: 1 } }\n            : {}),\n        },\n      },\n    },\n  },\n});\nconst GOVERNED_JSON_VALUE_SCHEMA: JsonObject = {\n  type: \"object\",\n  additionalProperties: false,\n  required: [\"kind\", \"dataType\", \"value\"],\n  properties: {\n    kind: { const: \"json\" },\n    dataType: { type: \"string\", minLength: 1 },\n    value: {},\n  },\n};\nconst GOVERNED_READ_VALUE_SCHEMA: JsonObject = {\n  oneOf: [\n    { type: [\"string\", \"number\", \"boolean\", \"null\"] },\n    governedSelectionValueSchema(\"tags\"),\n    governedSelectionValueSchema(\"files\"),\n    governedSelectionValueSchema(\"relations\"),\n    GOVERNED_JSON_VALUE_SCHEMA,\n  ],\n};\n\nconst GOVERNED_READ_METADATA_SCHEMA: JsonObject = {\n  type: \"array\",\n  items: {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"id\", \"value\"],\n    properties: {\n      id: { type: \"string\", minLength: 1 },\n      label: { type: \"string\" },\n      labelKey: { type: \"string\", minLength: 1 },\n      value: GOVERNED_READ_VALUE_SCHEMA,\n    },\n  },\n};\n\nconst GALLERY_SCHEMA = \"monkeys-design://ontology-view/gallery/v4\";\nconst PROFESSIONAL_SCHEMA =\n  \"monkeys-design://ontology-view/professional-leaf/v1\";\n\nconst DATA_EXPLORER_APPEARANCE_SCHEMA: JsonObject = {\n  type: \"object\",\n  additionalProperties: false,\n  properties: {\n    surface: { enum: [...DATA_EXPLORER_APPEARANCE_OPTIONS.surface] },\n    preset: {\n      enum: [...DATA_EXPLORER_APPEARANCE_OPTIONS.preset],\n    },\n    density: { enum: [...DATA_EXPLORER_APPEARANCE_OPTIONS.density] },\n    radius: { enum: [...DATA_EXPLORER_APPEARANCE_OPTIONS.radius] },\n    border: { enum: [...DATA_EXPLORER_APPEARANCE_OPTIONS.border] },\n    background: { enum: [...DATA_EXPLORER_APPEARANCE_OPTIONS.background] },\n  },\n};\n\nconst SHELL_LAYOUT_RENDER_MODEL_SCHEMA = jsonSchema(\n  \"monkeys-design://render-model/shell-layout/v3\",\n  {\n    type: \"object\",\n    additionalProperties: false,\n    properties: {\n      variant: { enum: [\"default\", \"data-explorer\", \"region-stack\"] },\n      fullHeight: { type: \"boolean\" },\n      sidebarLabelKey: { type: \"string\", minLength: 1 },\n      mobileSidebar: { enum: [\"stack\", \"drawer\"] },\n      asideLabelKey: { type: \"string\", minLength: 1 },\n      sidebarCollapsed: { type: \"boolean\" },\n      sidebarCollapsible: { type: \"boolean\" },\n      sidebarResizable: { type: \"boolean\" },\n      sidebarWidth: { type: \"integer\", minimum: 200, maximum: 600 },\n      asideWidth: { type: \"integer\", minimum: 320, maximum: 560 },\n      asideResizable: { type: \"boolean\" },\n      appearance: DATA_EXPLORER_APPEARANCE_SCHEMA,\n    },\n  },\n);\n\nconst SHELL_LAYOUT_INTENT_SCHEMAS = Object.freeze({\n  sidebarCollapse: jsonSchema(\n    \"monkeys-design://intent/shell-layout-sidebar-collapse/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"collapsed\"],\n      properties: { collapsed: { type: \"boolean\" } },\n    },\n  ),\n  sidebarResize: jsonSchema(\n    \"monkeys-design://intent/shell-layout-sidebar-resize/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"width\"],\n      properties: {\n        width: { type: \"integer\", minimum: 200, maximum: 600 },\n      },\n    },\n  ),\n  asideResize: jsonSchema(\n    \"monkeys-design://intent/shell-layout-aside-resize/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"width\"],\n      properties: {\n        width: { type: \"integer\", minimum: 320, maximum: 560 },\n      },\n    },\n  ),\n});\n\nconst SIDEBAR_FILTER_RENDER_MODEL_SCHEMA = jsonSchema(SIDEBAR_FILTER_SCHEMA, {\n  type: \"object\",\n  additionalProperties: false,\n  properties: {\n    title: { type: \"string\" },\n    titleKey: { type: \"string\", minLength: 1 },\n    search: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"parameterName\"],\n      properties: {\n        parameterName: { type: \"string\", minLength: 1 },\n        value: { type: \"string\" },\n        labelKey: { type: \"string\", minLength: 1 },\n        placeholderKey: { type: \"string\", minLength: 1 },\n      },\n    },\n    groups: {\n      type: \"array\",\n      items: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"id\", \"parameterName\", \"options\"],\n        properties: {\n          id: { type: \"string\", minLength: 1 },\n          parameterName: { type: \"string\", minLength: 1 },\n          label: { type: \"string\" },\n          labelKey: { type: \"string\", minLength: 1 },\n          options: {\n            type: \"array\",\n            items: {\n              type: \"object\",\n              additionalProperties: false,\n              required: [\"id\"],\n              properties: {\n                id: { type: \"string\", minLength: 1 },\n                label: { type: \"string\" },\n                labelKey: { type: \"string\", minLength: 1 },\n                selected: { type: \"boolean\" },\n                disabled: { type: \"boolean\" },\n              },\n            },\n          },\n        },\n      },\n    },\n  },\n});\n\nconst COLLECTION_ACTION_SCHEMA: JsonObject = {\n  type: \"object\",\n  additionalProperties: false,\n  required: [\"id\"],\n  properties: {\n    id: { type: \"string\", minLength: 1 },\n    label: { type: \"string\" },\n    labelKey: { type: \"string\", minLength: 1 },\n    icon: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"id\"],\n      properties: {\n        id: { type: \"string\", minLength: 1 },\n        source: { enum: [\"catalog\", \"system\"] },\n        labelKey: { type: \"string\", minLength: 1 },\n      },\n    },\n    payload: { type: \"object\" },\n    disabled: { type: \"boolean\" },\n    loading: { type: \"boolean\" },\n    destructive: { type: \"boolean\" },\n    presentation: {\n      enum: [\"primary\", \"secondary\", \"menu\", \"danger\", \"overflow\", \"icon\"],\n    },\n  },\n};\n\nconst GOVERNED_VALUE_TYPE_SCHEMA: JsonObject = {\n  enum: [\n    \"text\",\n    \"number\",\n    \"boolean\",\n    \"timestamp\",\n    \"json\",\n    \"tags\",\n    \"files\",\n    \"relations\",\n    \"media\",\n  ],\n};\n\nconst GALLERY_FIELD_VALUES_SCHEMA: JsonObject = {\n  type: \"object\",\n  additionalProperties: { oneOf: [\n    ...TABLE_DISPLAY_CELL_SCHEMAS,\n    { type: \"object\", additionalProperties: false, required: [\"reference\"], properties: { reference: { type: \"object\", additionalProperties: false, required: [\"id\"], properties: { id: { type: \"string\", minLength: 1 } } }, alt: { type: \"string\" } } },\n    GOVERNED_READ_VALUE_SCHEMA,\n    { type: \"object\", additionalProperties: false, required: [\"valueType\", \"value\"], properties: {\n      valueType: GOVERNED_VALUE_TYPE_SCHEMA, value: GOVERNED_READ_VALUE_SCHEMA,\n      locale: { type: \"string\", minLength: 2, maxLength: 64 },\n    } },\n  ] },\n};\nconst GALLERY_PRESENTATION_MODEL_PROPERTIES: JsonObject = {\n  galleryDetailPresentation: { enum: ['tiles', 'lines'] },\n  galleryActionPlacement: { enum: ['details', 'header'] },\n  showFieldCount: { type: 'boolean' },\n  galleryFields: GALLERY_PRESENTATION_FIELDS_SCHEMA,\n  galleryLabels: { type: \"object\", additionalProperties: false, properties: { fieldCountKey: { type: \"string\", minLength: 1 }, coverOnlyHintKey: { type: \"string\", minLength: 1 } } },\n  gallerySettings: GALLERY_PRESENTATION_SETTINGS_SCHEMA,\n  itemActivation: { enum: [\"none\", \"activate\"] },\n};\n\nconst GALLERY_RENDER_MODEL_SCHEMA = jsonSchema(GALLERY_SCHEMA, {\n  type: \"object\",\n  additionalProperties: false,\n  required: [\"items\", \"pagination\"],\n  properties: {\n    ...GALLERY_PRESENTATION_MODEL_PROPERTIES,\n    presentation: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"kind\"],\n      properties: {\n        kind: { const: \"legacy-data-explorer\" },\n        loadingLabelKey: { type: \"string\", minLength: 1 },\n        emptyLabelKey: { type: \"string\", minLength: 1 },\n        errorLabelKey: { type: \"string\", minLength: 1 },\n      },\n    },\n    items: {\n      type: \"array\",\n      items: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"id\"],\n        properties: {\n          id: { type: \"string\", minLength: 1 },\n          context: { type: \"object\" },\n          title: { type: \"string\" },\n          titleKey: { type: \"string\", minLength: 1 },\n          description: { type: \"string\" },\n          descriptionKey: { type: \"string\", minLength: 1 },\n          actionLabelKey: { type: \"string\", minLength: 1 },\n          selected: { type: \"boolean\" },\n          disabled: { type: \"boolean\" },\n          metadata: GOVERNED_READ_METADATA_SCHEMA,\n          fields: GALLERY_FIELD_VALUES_SCHEMA,\n          leadingIcon: BASE_ASSET_ICON_DESCRIPTOR_SCHEMA,\n          actionIds: { type: \"array\", uniqueItems: true, items: { type: \"string\", minLength: 1 } },\n          actionAvailability: { type: \"object\", additionalProperties: { type: \"object\", additionalProperties: false, properties: { hidden: { type: \"boolean\" }, disabled: { type: \"boolean\" }, hintKey: { type: \"string\", minLength: 1 }, labelKey: { type: \"string\", minLength: 1 }, titleKey: { type: \"string\", minLength: 1 } } } },\n          media: {\n            type: \"object\",\n            additionalProperties: false,\n            required: [\"reference\", \"alt\"],\n            properties: {\n              reference: {\n                type: \"object\",\n                additionalProperties: false,\n                required: [\"id\"],\n                properties: {\n                  id: { type: \"string\", minLength: 1 },\n                },\n              },\n              alt: { type: \"string\", minLength: 1 },\n              aspectRatio: { enum: [\"1:1\", \"4:3\", \"3:4\", \"16:9\", \"9:16\"] },\n              placeholder: { enum: [\"neutral\", \"checkerboard\"] },\n            },\n          },\n        },\n      },\n    },\n    rowActions: { type: \"array\", items: COLLECTION_ACTION_SCHEMA },\n    pagination: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"hasMore\", \"nextCursor\", \"loadingMore\"],\n      properties: {\n        hasMore: { type: \"boolean\" },\n        nextCursor: {\n          oneOf: [\n            { type: \"string\", minLength: 1, maxLength: 2048 },\n            { type: \"null\" },\n          ],\n        },\n        loadingMore: { type: \"boolean\" },\n        errorCode: { type: \"string\", minLength: 1, maxLength: 128 },\n      },\n      allOf: [\n        {\n          if: {\n            properties: { hasMore: { const: true } },\n            required: [\"hasMore\"],\n          },\n          then: {\n            properties: { nextCursor: { type: \"string\", minLength: 1 } },\n          },\n        },\n        {\n          if: {\n            properties: { hasMore: { const: false } },\n            required: [\"hasMore\"],\n          },\n          then: {\n            properties: {\n              nextCursor: { type: \"null\" },\n              loadingMore: { const: false },\n            },\n          },\n        },\n        {\n          if: { required: [\"errorCode\"] },\n          then: { properties: { loadingMore: { const: false } } },\n        },\n      ],\n    },\n  },\n  allOf: [{ if: { required: [\"galleryFields\"] }, then: { required: [\"gallerySettings\"] } }, { if: { required: [\"gallerySettings\"] }, then: { required: [\"galleryFields\"] } }],\n});\n\nconst localizedLabelProperties = {\n  label: { type: \"string\" },\n  labelKey: { type: \"string\", minLength: 1 },\n} as const;\n\nconst GOVERNED_ICON_SCHEMA: JsonObject = {\n  type: \"object\",\n  additionalProperties: false,\n  required: [\"id\"],\n  properties: {\n    id: { type: \"string\", minLength: 1 },\n    source: { enum: [\"catalog\", \"system\"] },\n    labelKey: { type: \"string\", minLength: 1 },\n  },\n};\n\nconst GOVERNED_ACTION_SCHEMA: JsonObject = {\n  type: \"object\",\n  additionalProperties: false,\n  required: [\"id\"],\n  properties: {\n    id: { type: \"string\", minLength: 1 },\n    ...localizedLabelProperties,\n    icon: GOVERNED_ICON_SCHEMA,\n    disabled: { type: \"boolean\" },\n    loading: { type: \"boolean\" },\n    destructive: { type: \"boolean\" },\n    presentation: {\n      enum: [\"primary\", \"secondary\", \"menu\", \"danger\", \"overflow\", \"icon\"],\n    },\n  },\n};\n\nconst GOVERNED_ACTION_WITH_ARIA_SCHEMA: JsonObject = {\n  ...GOVERNED_ACTION_SCHEMA,\n  properties: {\n    ...(GOVERNED_ACTION_SCHEMA.properties as JsonObject),\n    ariaLabelKey: { type: \"string\", minLength: 1 },\n  },\n};\n\n\nconst itemIdIntentSchema = (id: string, field = \"itemId\") =>\n  jsonSchema(id, {\n    type: \"object\",\n    additionalProperties: false,\n    required: [field],\n    properties: { [field]: { type: \"string\", minLength: 1 } },\n  });\n\nconst cursorIntentSchema = (id: string) =>\n  jsonSchema(id, {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"cursor\"],\n    properties: { cursor: { type: \"string\", minLength: 1, maxLength: 2048 } },\n  });\n\nconst ONTOLOGY_NAVIGATOR_SCHEMA =\n  \"monkeys-design://ontology-view/ontology-navigator/v1\";\nconst ONTOLOGY_NAVIGATOR_RENDER_MODEL_SCHEMA = jsonSchema(\n  ONTOLOGY_NAVIGATOR_SCHEMA,\n  {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"nodes\", \"pagination\"],\n    properties: {\n      ...localizedLabelProperties,\n      actionsLabelKey: { type: \"string\", minLength: 1 },\n      search: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"value\"],\n        properties: {\n          value: { type: \"string\" },\n          labelKey: { type: \"string\", minLength: 1 },\n          placeholderKey: { type: \"string\", minLength: 1 },\n          disabled: { type: \"boolean\" },\n        },\n      },\n      loading: { type: \"boolean\" },\n      error: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"code\"],\n        properties: {\n          code: { type: \"string\", minLength: 1, maxLength: 128 },\n          messageKey: { type: \"string\", minLength: 1 },\n          retryable: { type: \"boolean\" },\n        },\n      },\n      retry: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"labelKey\"],\n        properties: {\n          labelKey: { type: \"string\", minLength: 1 },\n          disabled: { type: \"boolean\" },\n          loading: { type: \"boolean\" },\n        },\n      },\n      selectedNodeId: { type: \"string\", minLength: 1 },\n      expandedNodeIds: {\n        type: \"array\",\n        uniqueItems: true,\n        items: { type: \"string\", minLength: 1 },\n      },\n      nodes: { type: \"array\", items: { $ref: \"#/$defs/node\" } },\n      pagination: cursorPaginationSchema(),\n    },\n    $defs: {\n      node: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"id\"],\n        properties: {\n          id: { type: \"string\", minLength: 1 },\n          ...localizedLabelProperties,\n          kind: {\n            enum: [\n              \"ontology\",\n              \"view\",\n              \"folder\",\n              \"group\",\n              \"dashboard\",\n              \"plugin\",\n              \"action\",\n            ],\n          },\n          icon: GOVERNED_ICON_SCHEMA,\n          description: { type: \"string\" },\n          descriptionKey: { type: \"string\", minLength: 1 },\n          meta: { type: \"string\" },\n          disabled: { type: \"boolean\" },\n          reorderable: { type: \"boolean\" },\n          actions: { type: \"array\", items: GOVERNED_ACTION_SCHEMA },\n          children: { type: \"array\", items: { $ref: \"#/$defs/node\" } },\n        },\n      },\n    },\n  },\n);\n\nconst DATA_TOOLBAR_SCHEMA = \"monkeys-design://render-model/data-toolbar/v6\";\nconst DATA_TOOLBAR_RENDER_MODEL_SCHEMA = jsonSchema(DATA_TOOLBAR_SCHEMA, {\n  type: \"object\",\n  additionalProperties: false,\n  properties: {\n    appearance: DATA_EXPLORER_APPEARANCE_SCHEMA,\n    presentation: {\n      oneOf: [\n        {\n          type: \"object\",\n          additionalProperties: false,\n          required: [\"kind\", \"title\", \"contract\", \"schemaRef\", \"readOnly\"],\n          properties: {\n            kind: { const: \"domain-record-equivalent\" },\n            title: { type: \"string\", minLength: 1 },\n            contract: { type: \"string\", minLength: 1 },\n            schemaRef: { type: \"string\", minLength: 1 },\n            readOnly: { type: \"boolean\" },\n          },\n        },\n        {\n          type: \"object\",\n          additionalProperties: false,\n          required: [\"kind\", \"scopeSelected\", \"auxiliaryActions\"],\n          properties: {\n            kind: { const: \"legacy-data-explorer\" },\n            scopeSelected: { type: \"boolean\" },\n            auxiliaryActions: {\n              type: \"array\",\n              items: {\n                oneOf: [\n                  GOVERNED_ACTION_WITH_ARIA_SCHEMA,\n                  {\n                    type: \"object\",\n                    additionalProperties: false,\n                    required: [\n                      \"id\",\n                      \"kind\",\n                      \"labelKey\",\n                      \"preset\",\n                      \"mode\",\n                      \"scale\",\n                      \"options\",\n                    ],\n                    properties: {\n                      id: { type: \"string\", minLength: 1 },\n                      kind: { const: \"row-height\" },\n                      labelKey: { type: \"string\", minLength: 1 },\n                      icon: GOVERNED_ICON_SCHEMA,\n                      disabled: { type: \"boolean\" },\n                      preset: { enum: [\"compact\", \"default\", \"comfortable\"] },\n                      mode: { enum: [\"preset\", \"custom\"] },\n                      scale: {\n                        type: \"number\",\n                        minimum: 0.5,\n                        maximum: 10,\n                        multipleOf: 0.5,\n                      },\n                      customLabelKey: { type: \"string\", minLength: 1 },\n                      customRangeLabelKey: { type: \"string\", minLength: 1 },\n                      options: {\n                        type: \"array\",\n                        minItems: 3,\n                        maxItems: 3,\n                        items: {\n                          type: \"object\",\n                          additionalProperties: false,\n                          required: [\"id\", \"labelKey\"],\n                          properties: {\n                            id: { enum: [\"compact\", \"default\", \"comfortable\"] },\n                            labelKey: { type: \"string\", minLength: 1 },\n                          },\n                        },\n                      },\n                    },\n                  },\n                ],\n              },\n            },\n          },\n        },\n      ],\n    },\n    search: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"value\"],\n      properties: {\n        value: { type: \"string\" },\n        labelKey: { type: \"string\", minLength: 1 },\n        placeholderKey: { type: \"string\", minLength: 1 },\n      },\n    },\n    activeViewId: { type: \"string\", minLength: 1 },\n    views: {\n      type: \"array\",\n      items: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"id\"],\n        properties: {\n          id: { type: \"string\", minLength: 1 },\n          ...localizedLabelProperties,\n          disabled: { type: \"boolean\" },\n        },\n      },\n    },\n    refresh: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"labelKey\"],\n      properties: {\n        labelKey: { type: \"string\", minLength: 1 },\n        disabled: { type: \"boolean\" },\n        loading: { type: \"boolean\" },\n      },\n    },\n    commands: {\n      type: \"array\",\n      items: GOVERNED_ACTION_WITH_ARIA_SCHEMA,\n    },\n    selection: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"selectedCount\"],\n      properties: {\n        selectedCount: { type: \"integer\", minimum: 0 },\n        totalCount: { type: \"integer\", minimum: 0 },\n        allSelected: { type: \"boolean\" },\n        labelKey: { type: \"string\", minLength: 1 },\n      },\n    },\n    filterGroups: {\n      type: \"array\",\n      items: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"id\", \"kind\", \"values\"],\n        properties: {\n          id: { type: \"string\", minLength: 1 },\n          ...localizedLabelProperties,\n          kind: { enum: [\"single\", \"multiple\", \"range\"] },\n          values: {\n            type: \"array\",\n            uniqueItems: true,\n            items: GOVERNED_READ_VALUE_SCHEMA,\n          },\n          options: {\n            type: \"array\",\n            items: {\n              type: \"object\",\n              additionalProperties: false,\n              required: [\"id\"],\n              properties: {\n                id: { type: \"string\", minLength: 1 },\n                ...localizedLabelProperties,\n                icon: GOVERNED_ICON_SCHEMA,\n                disabled: { type: \"boolean\" },\n                count: { type: \"integer\", minimum: 0 },\n              },\n            },\n          },\n          disabled: { type: \"boolean\" },\n          loading: { type: \"boolean\" },\n          errorCode: { type: \"string\", minLength: 1, maxLength: 128 },\n        },\n      },\n    },\n    displayActions: {\n      type: \"array\",\n      items: GOVERNED_ACTION_WITH_ARIA_SCHEMA,\n    },\n    galleryFields: GALLERY_PRESENTATION_FIELDS_SCHEMA,\n    gallerySettings: { oneOf: [GALLERY_PRESENTATION_SETTINGS_SCHEMA, {\n      type: \"object\",\n      additionalProperties: false,\n      properties: {\n        columns: { oneOf: [{ const: \"auto\" }, { type: \"integer\", minimum: 1, maximum: 12 }] },\n        aspectRatio: { enum: [\"auto\", \"1:1\", \"4:3\", \"3:4\", \"16:9\", \"9:16\"] },\n        showMetadata: { type: \"boolean\" },\n        actions: { type: \"array\", items: GOVERNED_ACTION_WITH_ARIA_SCHEMA },\n      },\n    }] },\n    columnConfiguration: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\n        \"disabled\",\n        \"triggerLabelKey\",\n        \"titleKey\",\n        \"descriptionKey\",\n        \"closeLabelKey\",\n        \"expectedDefinitionVersion\",\n        \"displayConfig\",\n        \"sections\",\n      ],\n      properties: {\n        disabled: { type: \"boolean\" },\n        triggerLabelKey: { type: \"string\", minLength: 1 },\n        titleKey: { type: \"string\", minLength: 1 },\n        descriptionKey: { type: \"string\", minLength: 1 },\n        closeLabelKey: { type: \"string\", minLength: 1 },\n        expectedDefinitionVersion: { type: \"integer\", minimum: 1 },\n        displayConfig: { type: \"object\", additionalProperties: true },\n        sections: {\n          type: \"array\",\n          items: {\n            type: \"object\",\n            additionalProperties: false,\n            required: [\"id\", \"labelKey\", \"selectedIds\", \"options\"],\n            properties: {\n              id: { type: \"string\", minLength: 1, maxLength: 128 },\n              labelKey: { type: \"string\", minLength: 1 },\n              searchable: { type: \"boolean\" },\n              searchPlaceholderKey: { type: \"string\", minLength: 1 },\n              emptyLabelKey: { type: \"string\", minLength: 1 },\n              selectedIds: {\n                type: \"array\",\n                uniqueItems: true,\n                items: { type: \"string\", minLength: 1, maxLength: 256 },\n              },\n              options: {\n                type: \"array\",\n                items: {\n                  type: \"object\",\n                  additionalProperties: false,\n                  required: [\"id\"],\n                  properties: {\n                    id: { type: \"string\", minLength: 1, maxLength: 256 },\n                    ...localizedLabelProperties,\n                    description: { type: \"string\" },\n                    descriptionKey: { type: \"string\", minLength: 1 },\n                    icon: GOVERNED_ICON_SCHEMA,\n                    disabled: { type: \"boolean\" },\n                  },\n                },\n              },\n            },\n          },\n        },\n      },\n    },\n    trendMatrixConfiguration: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\n        \"disabled\",\n        \"triggerLabelKey\",\n        \"titleKey\",\n        \"descriptionKey\",\n        \"sourceFieldLabelKey\",\n        \"generatedFieldLabelKey\",\n        \"showHistoryLabelKey\",\n        \"showHistoryHintKey\",\n        \"expectedDefinitionVersion\",\n        \"displayConfig\",\n        \"value\",\n        \"fieldOptions\",\n      ],\n      properties: {\n        disabled: { type: \"boolean\" },\n        triggerLabelKey: { type: \"string\", minLength: 1 },\n        titleKey: { type: \"string\", minLength: 1 },\n        descriptionKey: { type: \"string\", minLength: 1 },\n        sourceFieldLabelKey: { type: \"string\", minLength: 1 },\n        generatedFieldLabelKey: { type: \"string\", minLength: 1 },\n        showHistoryLabelKey: { type: \"string\", minLength: 1 },\n        showHistoryHintKey: { type: \"string\", minLength: 1 },\n        expectedDefinitionVersion: { type: \"integer\", minimum: 1 },\n        displayConfig: { type: \"object\", additionalProperties: true },\n        value: {\n          type: \"object\",\n          additionalProperties: false,\n          required: [\"sourceFieldKey\", \"generatedFieldKey\", \"historyMode\"],\n          properties: {\n            sourceFieldKey: { type: \"string\", minLength: 1 },\n            generatedFieldKey: { type: \"string\" },\n            historyMode: { enum: [\"current\", \"all\"] },\n          },\n        },\n        fieldOptions: {\n          type: \"array\",\n          minItems: 1,\n          items: {\n            type: \"object\",\n            additionalProperties: false,\n            required: [\"id\", \"kind\"],\n            properties: {\n              id: { type: \"string\", minLength: 1, maxLength: 256 },\n              ...localizedLabelProperties,\n              kind: { enum: [\"preview\", \"featureImage\"] },\n            },\n          },\n        },\n      },\n    },\n  },\n});\n\nconst ONTOLOGY_TABLE_SCHEMA = \"monkeys-design://ontology-view/table/v5\";\nconst ONTOLOGY_TABLE_RENDER_MODEL_SCHEMA = jsonSchema(ONTOLOGY_TABLE_SCHEMA, {\n  type: \"object\",\n  additionalProperties: false,\n  required: [\"columns\", \"rows\", \"pagination\"],\n  properties: {\n    tableMinWidth: { type: 'number', minimum: 0, maximum: 10000 },\n    showFooter: { type: 'boolean' },\n    actionWidth: { type: 'number', minimum: 0, maximum: 10000 },\n    initialSelectionId: { type: \"string\", minLength: 1, maxLength: 512 },\n    ...localizedLabelProperties,\n    emptyLabelKey: { type: \"string\", minLength: 1 },\n    selectionEnabled: { type: \"boolean\" },\n    activationEnabled: { type: \"boolean\" },\n    presentation: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"kind\"],\n      properties: {\n        kind: { enum: [\"legacy-data-explorer\", \"domain-record-equivalent\"] },\n        loadingLabelKey: { type: \"string\", minLength: 1 },\n        emptyLabelKey: { type: \"string\", minLength: 1 },\n        errorLabelKey: { type: \"string\", minLength: 1 },\n      },\n    },\n    rowHeight: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"mode\", \"preset\", \"scale\"],\n      properties: {\n        mode: { enum: [\"preset\", \"custom\"] },\n        preset: { enum: [\"compact\", \"default\", \"comfortable\"] },\n        scale: { type: \"number\", minimum: 0.5, maximum: 10, multipleOf: 0.5 },\n      },\n    },\n    columns: {\n      type: \"array\",\n      minItems: 1,\n      items: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"id\"],\n        properties: {\n          id: { type: \"string\", minLength: 1 },\n          ...localizedLabelProperties,\n          sortable: { type: \"boolean\" },\n          sortKey: {\n            enum: [\"asset_id\", \"updated_timestamp\", \"pin_order\"],\n          },\n          sortDirection: { enum: [\"asc\", \"desc\", \"none\"] },\n          align: { enum: [\"left\", \"center\", \"right\"] },\n          width: { type: \"number\", minimum: 0, maximum: 10000 }, minWidth: { type: \"number\", minimum: 0, maximum: 10000 }, wrap: { type: \"boolean\" },\n          valueType: GOVERNED_VALUE_TYPE_SCHEMA,\n          hidden: { type: \"boolean\" },\n          actions: { type: \"array\", items: GOVERNED_ACTION_SCHEMA },\n        },\n        allOf: [\n          {\n            if: {\n              properties: { sortable: { const: true } },\n              required: [\"sortable\"],\n            },\n            then: { required: [\"sortKey\"] },\n          },\n        ],\n      },\n    },\n    rows: {\n      type: \"array\",\n      items: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"id\", \"cells\"],\n        properties: {\n          id: { type: \"string\", minLength: 1 },\n          context: { type: \"object\" },\n          defaultSelected: { type: \"boolean\" },\n          cells: {\n            type: \"object\",\n            additionalProperties: {\n              oneOf: [\n                ...TABLE_DISPLAY_CELL_SCHEMAS,\n                { type: 'object', additionalProperties: false, required: ['valueType', 'value'], properties: {\n                  valueType: { const: 'message' }, value: TABLE_MESSAGE_VALUE_SCHEMA,\n                  editable: { type: 'boolean' }, intentId: { type: 'string', minLength: 1 }, disabled: { type: 'boolean' },\n                } },\n                GOVERNED_READ_VALUE_SCHEMA,\n                {\n                  type: \"object\",\n                  additionalProperties: false,\n                  required: [\"valueType\", \"value\"],\n                  properties: {\n                    locale: { type: 'string', minLength: 2, maxLength: 64 },\n                    valueType: GOVERNED_VALUE_TYPE_SCHEMA,\n                    value: GOVERNED_READ_VALUE_SCHEMA,\n                    editable: { type: \"boolean\" },\n                    intentId: { type: \"string\", minLength: 1 },\n                    disabled: { type: \"boolean\" },\n                  },\n                },\n              ],\n            },\n          },\n          actionAvailability: {\n            type: \"object\",\n            propertyNames: { minLength: 1 },\n            additionalProperties: {\n              type: \"object\",\n              additionalProperties: false,\n              properties: {\n                hidden: { type: \"boolean\" },\n                disabled: { type: \"boolean\" },\n                labelKey: { type: \"string\", minLength: 1 }, titleKey: { type: \"string\", minLength: 1 },\n              },\n            },\n          },\n          selected: { type: \"boolean\" },\n          disabled: { type: \"boolean\" },\n        },\n      },\n    },\n    selectAll: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"selected\", \"indeterminate\"],\n      properties: {\n        selected: { type: \"boolean\" },\n        indeterminate: { type: \"boolean\" },\n        disabled: { type: \"boolean\" },\n        labelKey: { type: \"string\", minLength: 1 },\n      },\n    },\n    rowActions: { type: \"array\", items: COLLECTION_ACTION_SCHEMA },\n    columnActions: { type: \"array\", items: GOVERNED_ACTION_SCHEMA },\n    pagination: cursorPaginationSchema(),\n  },\n});\n\nconst CARD_GRID_SCHEMA = \"monkeys-design://ontology-view/card-grid/v2\";\nconst CARD_GRID_RENDER_MODEL_SCHEMA = jsonSchema(CARD_GRID_SCHEMA, {\n  type: \"object\",\n  additionalProperties: false,\n  required: [\"items\", \"pagination\"],\n  properties: {\n    ...GALLERY_PRESENTATION_MODEL_PROPERTIES,\n    presentation: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"kind\"],\n      properties: {\n        kind: { const: \"legacy-data-explorer\" },\n        loadingLabelKey: { type: \"string\", minLength: 1 },\n        emptyLabelKey: { type: \"string\", minLength: 1 },\n        errorLabelKey: { type: \"string\", minLength: 1 },\n      },\n    },\n    items: {\n      type: \"array\",\n      items: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"id\"],\n        properties: {\n          id: { type: \"string\", minLength: 1 },\n          title: { type: \"string\" },\n          titleKey: { type: \"string\", minLength: 1 },\n          description: { type: \"string\" },\n          descriptionKey: { type: \"string\", minLength: 1 },\n          selected: { type: \"boolean\" },\n          disabled: { type: \"boolean\" },\n          metadata: GOVERNED_READ_METADATA_SCHEMA,\n          fields: GALLERY_FIELD_VALUES_SCHEMA,\n          leadingIcon: BASE_ASSET_ICON_DESCRIPTOR_SCHEMA,\n          actionIds: { type: \"array\", uniqueItems: true, items: { type: \"string\", minLength: 1 } },\n          actionAvailability: { type: \"object\", additionalProperties: { type: \"object\", additionalProperties: false, properties: { hidden: { type: \"boolean\" }, disabled: { type: \"boolean\" }, hintKey: { type: \"string\", minLength: 1 }, labelKey: { type: \"string\", minLength: 1 }, titleKey: { type: \"string\", minLength: 1 } } } },\n        },\n      },\n    },\n    rowActions: { type: \"array\", items: GOVERNED_ACTION_SCHEMA },\n    pagination: cursorPaginationSchema(),\n  },\n  allOf: [{ if: { required: [\"galleryFields\"] }, then: { required: [\"gallerySettings\"] } }, { if: { required: [\"gallerySettings\"] }, then: { required: [\"galleryFields\"] } }],\n});\n\nconst PAGINATION_SCHEMA = \"monkeys-design://render-model/pagination/v1\";\nconst PAGINATION_RENDER_MODEL_SCHEMA = jsonSchema(PAGINATION_SCHEMA, {\n  type: \"object\",\n  additionalProperties: false,\n  required: [\"mode\", \"hasNext\", \"hasPrevious\"],\n  properties: {\n    mode: { enum: [\"pages\", \"cursor\"] },\n    page: { type: \"integer\", minimum: 1 },\n    pageSize: { type: \"integer\", minimum: 1 },\n    total: { type: \"integer\", minimum: 0 },\n    pageCount: { type: \"integer\", minimum: 0 },\n    hasNext: { type: \"boolean\" },\n    hasPrevious: { type: \"boolean\" },\n    nextCursor: { oneOf: [{ type: \"string\", minLength: 1 }, { type: \"null\" }] },\n    loading: { type: \"boolean\" },\n    errorCode: { type: \"string\", minLength: 1 },\n    labelKey: { type: \"string\", minLength: 1 },\n  },\n});\n\nconst RECORD_DETAIL_SCHEMA = \"monkeys-design://ontology-view/record-detail/v4\";\nconst RECORD_DETAIL_RENDER_MODEL_SCHEMA = jsonSchema(RECORD_DETAIL_SCHEMA, {\n  type: \"object\",\n  additionalProperties: false,\n  required: [\"fields\"],\n  properties: {\n    presentation: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"kind\"],\n      properties: {\n        kind: { enum: [\"hidden\", \"data-explorer-sidebar\"] },\n      },\n    },\n    dataExplorerRecord: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"id\", \"title\", \"viewCount\", \"downloadCount\", \"tagLabels\"],\n      properties: {\n        id: { type: \"string\", minLength: 1, maxLength: 256 },\n        title: { type: \"string\" },\n        description: { type: \"string\" },\n        type: { type: \"string\" },\n        status: { type: \"string\" },\n        previewSource: { type: \"string\" },\n        previewAlt: { type: \"string\" },\n        previewKind: {\n          enum: [\"image\", \"video\", \"audio\", \"document\", \"file\", \"text\"],\n        },\n        viewCount: { type: \"integer\", minimum: 0 },\n        downloadCount: { type: \"integer\", minimum: 0 },\n        tagLabels: { type: \"array\", items: { type: \"string\", minLength: 1 } },\n        createdAt: { type: [\"string\", \"number\"] },\n        updatedAt: { type: [\"string\", \"number\"] },\n        creatorId: { type: \"string\" },\n        properties: {\n          type: \"object\",\n          additionalProperties: GOVERNED_READ_VALUE_SCHEMA,\n        },\n        metadata: {\n          type: \"object\",\n          additionalProperties: true,\n        },\n      },\n    },\n    title: { type: \"string\" },\n    titleKey: { type: \"string\", minLength: 1 },\n    description: { type: \"string\" },\n    descriptionKey: { type: \"string\", minLength: 1 },\n    editable: { type: \"boolean\" },\n    editDisabled: { type: \"boolean\" },\n    editLabelKey: { type: \"string\", minLength: 1 },\n    editAriaLabelKey: { type: \"string\", minLength: 1 },\n    closeLabelKey: { type: \"string\", minLength: 1 },\n    closeAriaLabelKey: { type: \"string\", minLength: 1 },\n    closeEnabled: { type: \"boolean\" },\n    fields: {\n      type: \"array\",\n      items: { $ref: \"#/$defs/field\" },\n    },\n    sections: {\n      type: \"array\",\n      items: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"id\", \"fields\"],\n        properties: {\n          id: { type: \"string\", minLength: 1 },\n          ...localizedLabelProperties,\n          description: { type: \"string\" },\n          descriptionKey: { type: \"string\", minLength: 1 },\n          collapsible: { type: \"boolean\" },\n          collapsed: { type: \"boolean\" },\n          fields: { type: \"array\", items: { $ref: \"#/$defs/field\" } },\n        },\n      },\n    },\n    preview: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"kind\", \"reference\"],\n      properties: {\n        kind: { enum: [\"image\", \"video\", \"audio\", \"document\", \"file\"] },\n        reference: {\n          type: \"object\",\n          additionalProperties: false,\n          required: [\"id\"],\n          properties: {\n            id: { type: \"string\", minLength: 1 },\n            label: { type: \"string\" },\n            mediaType: { type: \"string\", minLength: 1 },\n          },\n        },\n        alt: { type: \"string\" },\n        altKey: { type: \"string\", minLength: 1 },\n      },\n    },\n    attachments: {\n      type: \"array\",\n      items: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"id\"],\n        properties: {\n          id: { type: \"string\", minLength: 1 },\n          ...localizedLabelProperties,\n          mediaType: { type: \"string\", minLength: 1 },\n          sizeBytes: { type: \"integer\", minimum: 0 },\n          actionId: { type: \"string\", minLength: 1 },\n          disabled: { type: \"boolean\" },\n        },\n      },\n    },\n    navigation: {\n      type: \"object\",\n      additionalProperties: false,\n      properties: {\n        previousId: { type: \"string\", minLength: 1 },\n        nextId: { type: \"string\", minLength: 1 },\n        previousLabelKey: { type: \"string\", minLength: 1 },\n        nextLabelKey: { type: \"string\", minLength: 1 },\n      },\n    },\n    actions: { type: \"array\", items: GOVERNED_ACTION_WITH_ARIA_SCHEMA },\n  },\n  $defs: {\n    field: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"id\"],\n      properties: {\n        id: { type: \"string\", minLength: 1 },\n        ...localizedLabelProperties,\n        value: GOVERNED_READ_VALUE_SCHEMA,\n        locale: { type: 'string', minLength: 2, maxLength: 64 },\n        valueType: GOVERNED_VALUE_TYPE_SCHEMA,\n        valueLabelKey: { type: \"string\", minLength: 1 },\n        actionId: { type: \"string\", minLength: 1 },\n        copy: {type:\"object\",additionalProperties:false,required:[\"labelKey\",\"successLabelKey\",\"failureLabelKey\"],properties:{labelKey:{type:\"string\",minLength:1},successLabelKey:{type:\"string\",minLength:1},failureLabelKey:{type:\"string\",minLength:1}}},\n      },\n    },\n  },\n});\n\nconst RECORD_EDITOR_SCHEMA = \"monkeys-design://ontology-editor/record/v1\";\nconst editorPathSchema: JsonObject = { type: 'array', maxItems: 32, items: { oneOf: [{ type: 'string', minLength: 1 }, { type: 'object', additionalProperties: false, required: ['itemId', 'idKey'], properties: { itemId: { type: 'string', minLength: 1 }, idKey: { type: 'string', minLength: 1 } } }] } };\nconst editorChangeEffectsSchema: JsonObject = {\n  type: 'array', maxItems: 32,\n  items: { oneOf: [\n    { type: 'object', additionalProperties: false, required: ['path', 'value'], properties: { path: editorPathSchema, pathScope: { enum: ['root', 'parent'] }, value: {}, when: { type: 'object' } } },\n    { type: 'object', additionalProperties: false, required: ['path', 'expression'], properties: { path: editorPathSchema, pathScope: { enum: ['root', 'parent'] }, expression: { type: 'object' }, when: { type: 'object' } } },\n  ] },\n};\nconst RECORD_EDITOR_DESCRIPTION_EXCLUSIVITY: JsonObject[] = [['description', 'descriptionKey'], ['description', 'descriptionI18n'], ['descriptionKey', 'descriptionI18n']].map(required => ({ not: { required } }));\nconst RECORD_EDITOR_COMMON_FIELD_PROPERTIES = {\n  description: { type: 'string' },\n  descriptionKey: { type: 'string', minLength: 1 },\n  descriptionI18n: I18N_DISPLAY_TEXT_SCHEMA,\n  path: editorPathSchema,\n  changeEffects: editorChangeEffectsSchema,\n  hasValue: { type: 'boolean' },\n  requiredWhen: { type: 'object' },\n  disabledWhen: { type: 'object' },\n  hiddenWhen: { type: 'object' },\n  hasValueWhen: { type: 'object' },\n  itemIdKey: { type: 'string', minLength: 1 },\n  itemDefault: { type: 'object' },\n  children: { type: 'array', items: { $ref: RECORD_EDITOR_SCHEMA + '#/properties/fields/items' } },\n  id: { type: \"string\", minLength: 1 },\n  ...localizedLabelProperties,\n  labelI18n: I18N_DISPLAY_TEXT_SCHEMA,\n  labelParameters: LOCALIZED_DISPLAY_PARAMETERS_SCHEMA,\n  required: { type: \"boolean\" },\n  disabled: { type: \"boolean\" },\n  hidden: { type: \"boolean\" },\n  errorCode: { type: \"string\", minLength: 1 },\n  placeholder: { type: \"string\" },\n  placeholderKey: { type: \"string\", minLength: 1 },\n  fallbackValue: { type: \"string\" },\n  columnSpan: { type: \"integer\", minimum: 1, maximum: 3 },\n  rows: { type: \"integer\", minimum: 1, maximum: 20 },\n  multiline: { type: \"boolean\" },\n} as const;\nconst editorNullToggleSchema = (retain: boolean): JsonObject => ({ type: 'object', additionalProperties: false, required: ['labelKey'], properties: { labelKey: { type: 'string', minLength: 1 }, checkedWhen: { enum: ['null', 'non-null'] }, retainSelectionOnNull: retain ? { type: 'boolean' } : { const: false } } });\nconst EDITOR_STRING_SELECTION_PROPERTIES = { searchable: { type: 'boolean' }, allowCustomValues: { type: 'boolean' }, showSelectedIds: { type: 'boolean' } };\nconst RECORD_EDITOR_ARRAY_BOUNDS = { addDisabled: { type: 'boolean' }, addLabelKey: { type: 'string', minLength: 1 }, removeLabelKey: { type: 'string', minLength: 1 }, reorderable: { type: 'boolean' }, minItems: { type: 'integer', minimum: 0, maximum: 1000 }, maxItems: { type: 'integer', minimum: 0, maximum: 1000 } } as const;\nconst recordEditorFieldSchema = (\n  kinds: readonly string[],\n  value: JsonObject,\n  selectable = false,\n): JsonObject => ({\n  type: \"object\",\n  additionalProperties: false,\n  required: [\"id\", \"kind\"],\n  allOf: [...RECORD_EDITOR_DESCRIPTION_EXCLUSIVITY,\n    ...(kinds.includes('multi-select') ? [{ if: { required: ['nullToggle'] }, then: {}, else: { properties: { value: { type: 'array' } } } }] : []),\n    { not: { required: ['options', 'optionsSource'] } },\n  ],\n  properties: {\n    ...RECORD_EDITOR_COMMON_FIELD_PROPERTIES,\n    kind: { enum: [...kinds] },\n    ...(kinds.includes('array') ? { ...RECORD_EDITOR_ARRAY_BOUNDS, nullToggle: editorNullToggleSchema(false) } : {}),\n    ...(kinds.includes('multi-select') ? { ...EDITOR_STRING_SELECTION_PROPERTIES, nullToggle: editorNullToggleSchema(true), optionsSource: RECORD_EDITOR_OPTIONS_SOURCE_SCHEMA } : {}),\n    ...(kinds.includes('select') ? { optionsSource: RECORD_EDITOR_OPTIONS_SOURCE_SCHEMA } : {}),\n    ...(kinds.includes('secret') ? { inputKind: { enum: ['password', 'text', 'textarea', 'boolean', 'number', 'json'] } } : {}),\n    value,\n    ...(kinds.includes('relation') ? { presentation: { enum: ['inline', 'picker'] }, pickLabelKey: { type: 'string', minLength: 1 } } : {}),\n    ...(selectable\n      ? {\n          options: { type: \"array\", items: kinds.some(kind => kind === 'text' || kind === 'select' || kind === 'multi-select') ? { ...RECORD_EDITOR_OPTION_SCHEMA, properties: { ...RECORD_EDITOR_OPTION_SCHEMA.properties as JsonObject, id: { type: 'string' } } } : RECORD_EDITOR_OPTION_SCHEMA },\n          optionsPagination: cursorPaginationSchema(),\n        }\n      : {}),\n  },\n});\nconst editorDraftPatchSchema: JsonObject = {\n  type: 'object', additionalProperties: false, required: ['key', 'revision', 'expectedValue', 'operations'], properties: {\n    key: { type: 'string', minLength: 1, maxLength: 128 }, revision: { type: 'string', minLength: 1, maxLength: 256 }, expectedValue: { type: 'object' },\n    operations: { type: 'array', minItems: 1, maxItems: 32, items: { oneOf: [\n      { type: 'object', additionalProperties: false, required: ['kind', 'path', 'value'], properties: { kind: { const: 'set' }, path: editorPathSchema, value: {} } },\n      { type: 'object', additionalProperties: false, required: ['kind', 'path'], properties: { kind: { const: 'touch' }, path: editorPathSchema } },\n      ...['insert', 'remove', 'move'].map(kind => ({ type: 'object', additionalProperties: false, required: ['kind', 'path', kind === 'insert' ? 'value' : 'itemId'], properties: {\n        kind: { const: kind }, path: editorPathSchema, idKey: { type: 'string', minLength: 1 },\n        ...(kind === 'insert' ? { value: { type: 'object' } } : { itemId: { type: 'string', minLength: 1 } }),\n        ...(kind !== 'remove' ? { beforeId: { type: 'string', minLength: 1 } } : {}),\n      } })),\n    ] } },\n  },\n};\nconst RECORD_EDITOR_RENDER_MODEL_SCHEMA = jsonSchema(RECORD_EDITOR_SCHEMA, {\n  type: \"object\",\n  additionalProperties: false,\n  required: [\"fields\", \"submitting\"],\n  not: { required: ['description', 'descriptionKey'] },\n  properties: {\n    readOnly: { type: 'boolean' },\n    resetOnCancel: { type: 'boolean' },\n    lookup: { type: 'object' },\n    optionTables: RECORD_EDITOR_OPTION_TABLES_SCHEMA,\n    draftPatch: { anyOf: [{ type: 'null' }, editorDraftPatchSchema] },\n    draft: { type: 'object', additionalProperties: false, required: ['revision', 'value'], properties: { revision: { type: 'string', minLength: 1 }, value: { type: 'object' } } },\n    draftValidation: { type: 'object', additionalProperties: false, required: ['revision', 'value', 'errors'], properties: { revision: { type: 'string', minLength: 1 }, value: { type: 'object' }, errors: { type: 'array', items: { type: 'object', additionalProperties: false, required: ['path', 'code'], properties: { path: editorPathSchema, code: { type: 'string', minLength: 1 } } } } } },\n    title: { type: \"string\" },\n    titleKey: { type: \"string\", minLength: 1 },\n    recordTitle: { type: \"string\" },\n    secretInputScopeKey: { type: \"string\", minLength: 1 },\n    description: { type: 'string' },\n    descriptionKey: { type: \"string\", minLength: 1 },\n    descriptionParameters: LOCALIZED_DISPLAY_PARAMETERS_SCHEMA,\n    presentation: { enum: [\"panel\", \"dialog\", \"data-explorer-dialog\", \"toolbar\", \"sections\"] },\n    initialFocus: { enum: [\"dialog\", \"first-field\"] },\n    layoutColumns: { type: \"integer\", minimum: 1, maximum: 3 },\n    auxiliarySubmissions: { type: \"array\", maxItems: 16, items: { type: \"object\", additionalProperties: false, required: [\"id\", \"labelKey\", \"validateFieldIds\"], properties: {\n      id: { type: \"string\", minLength: 1, maxLength: 256 }, labelKey: { type: \"string\", minLength: 1 }, disabled: { type: \"boolean\" },\n      validateFieldIds: { type: \"array\", minItems: 1, uniqueItems: true, items: { type: \"string\", minLength: 1, maxLength: 256 } },\n    } } },\n    fieldGroups: {\n      type: 'array', maxItems: 100,\n      items: { type: 'object', additionalProperties: false, required: ['id', 'titleKey', 'fieldIds'], properties: {\n        id: { type: 'string', minLength: 1 }, titleKey: { type: 'string', minLength: 1 }, descriptionKey: { type: 'string', minLength: 1 },\n        fieldIds: { type: 'array', uniqueItems: true, items: { type: 'string', minLength: 1 } }, columns: { enum: [1, 2, 3] }, surface: { enum: ['plain', 'panel'] },\n      } },\n    },\n    fieldRows: {\n      type: \"array\",\n      items: {\n        type: \"array\",\n        minItems: 1,\n        maxItems: 3,\n        uniqueItems: true,\n        items: { type: \"string\", minLength: 1 },\n      },\n    },\n    visibleFieldIds: {\n      type: \"array\",\n      uniqueItems: true,\n      items: { type: \"string\", minLength: 1 },\n    },\n    fieldPresentation: {\n      type: \"array\",\n      items: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"id\"],\n        allOf: [...RECORD_EDITOR_DESCRIPTION_EXCLUSIVITY,\n          ...[\n            { kinds: ['multi-select'], keys: ['searchable', 'allowCustomValues', 'showSelectedIds'] },\n            { kinds: ['multi-select', 'array'], keys: ['nullToggle'] },\n            { kinds: ['multi-select', 'select'], keys: ['optionsSource'] },\n          ].map(({ kinds, keys }) => ({ if: { required: ['kind'], properties: { kind: { not: { enum: kinds } } } }, then: { not: { anyOf: keys.map(key => ({ required: [key] })) } } })),\n          { not: { required: ['options', 'optionsSource'] } }, { if: { required: ['kind'], properties: { kind: { const: 'array' } } }, then: { properties: { nullToggle: editorNullToggleSchema(false) } } }, { if: { required: ['kind'], properties: { kind: { not: { const: 'array' } } } }, then: { not: { anyOf: [{ required: ['minItems'] }, { required: ['maxItems'] }, { required: ['reorderable'] }, { required: ['addLabelKey'] }, { required: ['removeLabelKey'] }, { required: ['addDisabled'] }] } } }, { if: { required: ['kind'], properties: { kind: { enum: ['text', 'select', 'multi-select'] } } }, then: {}, else: { properties: { options: { type: 'array', items: RECORD_EDITOR_OPTION_SCHEMA } } } }],\n        properties: {\n          ...EDITOR_STRING_SELECTION_PROPERTIES, nullToggle: editorNullToggleSchema(true), optionsSource: RECORD_EDITOR_OPTIONS_SOURCE_SCHEMA,\n          ...RECORD_EDITOR_COMMON_FIELD_PROPERTIES,\n          ...RECORD_EDITOR_ARRAY_BOUNDS,\n          kind: {\n            enum: [\n              \"array\",\n              \"date\",\n              \"datetime-local\",\n              \"text\",\n              \"number\",\n              \"boolean\",\n              \"textarea\",\n              \"secret\",\n              \"select\",\n              \"multi-select\",\n              \"tags\",\n              \"files\",\n              \"media\",\n              \"relation\",\n              \"json\",\n            ],\n          },\n          valueFormat: { enum: ['date', 'iso-start-of-day', 'iso-end-of-day', 'local-datetime', 'iso'] },\n          min: { type: 'string' }, max: { type: 'string' },\n          inputKind: { enum: ['password', 'text', 'textarea', 'boolean', 'number', 'json'] },\n          presentation: { enum: ['inline', 'picker'] }, pickLabelKey: { type: 'string', minLength: 1 },\n          options: { type: 'array', items: { ...RECORD_EDITOR_OPTION_SCHEMA, properties: { ...RECORD_EDITOR_OPTION_SCHEMA.properties as JsonObject, id: { type: 'string' } } } },\n        },\n      },\n    },\n    submitDestructive: { type: \"boolean\" },\n    showSubmit: { type: \"boolean\" },\n    submitDisabled: { type: \"boolean\" },\n    showCancel: { type: \"boolean\" },\n    showReset: { type: \"boolean\" },\n    submitLabelKey: { type: \"string\", minLength: 1 },\n    submittingLabelKey: { type: \"string\", minLength: 1 },\n    cancelLabelKey: { type: \"string\", minLength: 1 },\n    submitting: { type: \"boolean\" },\n    errorCode: { type: \"string\", minLength: 1 },\n    fields: {\n      type: \"array\",\n      items: {\n        oneOf: [\n          recordEditorFieldSchema([\"object\"], { type: [\"object\", \"null\"] }),\n          recordEditorFieldSchema([\"array\"], { type: [\"array\", \"null\"], items: { type: \"object\" } }),\n          recordEditorFieldSchema([\"secret\"], { type: \"null\" }),\n          recordEditorFieldSchema(['text'], { type: ['string', 'null'] }, true),\n          recordEditorFieldSchema(['textarea'], { type: ['string', 'null'] }),\n          recordEditorFieldSchema(\n            [\"select\"],\n            { type: [\"string\", \"null\"] },\n            true,\n          ),\n          recordEditorFieldSchema(['multi-select'], { type: ['array', 'null'], uniqueItems: true, items: { type: 'string' } }, true),\n          ...(['date', 'datetime-local'] as const).map(kind => {\n            const schema = recordEditorFieldSchema([kind], { type: ['string', 'null'] });\n            return { ...schema, properties: { ...schema.properties as JsonObject,\n              valueFormat: { enum: kind === 'date' ? ['date', 'iso-start-of-day', 'iso-end-of-day'] : ['local-datetime', 'iso'] },\n              min: { type: 'string' }, max: { type: 'string' },\n            } };\n          }),\n          recordEditorFieldSchema([\"number\"], {\n            type: [\"number\", \"null\"],\n          }),\n          recordEditorFieldSchema([\"boolean\"], {\n            type: [\"boolean\", \"null\"],\n          }),\n          recordEditorFieldSchema(\n            [\"tags\"],\n            governedSelectionValueSchema(\"tags\"),\n            true,\n          ),\n          recordEditorFieldSchema(\n            [\"files\", \"media\"],\n            governedSelectionValueSchema(\"files\"),\n            true,\n          ),\n          recordEditorFieldSchema(\n            [\"relation\"],\n            governedSelectionValueSchema(\"relations\"),\n            true,\n          ),\n          recordEditorFieldSchema([\"json\"], GOVERNED_JSON_VALUE_SCHEMA),\n        ],\n      },\n    },\n  },\n});\n\nconst RECORD_HISTORY_SCHEMA =\n  \"monkeys-design://ontology-view/record-history/v3\";\nconst RECORD_HISTORY_RENDER_MODEL_SCHEMA = jsonSchema(RECORD_HISTORY_SCHEMA, {\n  type: \"object\",\n  additionalProperties: false,\n  required: [\n    \"aggregateId\",\n    \"headCommitId\",\n    \"commits\",\n    \"pagination\",\n    \"reason\",\n    \"rollback\",\n    \"deletion\",\n  ],\n  properties: {\n    title: { type: \"string\" },\n    titleKey: { type: \"string\", minLength: 1 },\n    presentation: { enum: [\"panel\", \"dialog\", \"data-explorer-dialog\"] },\n    closeLabelKey: { type: \"string\", minLength: 1 },\n    aggregateId: { type: \"string\", minLength: 1, maxLength: 256 },\n    recordTitle: { type: \"string\" },\n    headCommitId: { type: \"string\", minLength: 1, maxLength: 256 },\n    selectedTargetCommitId: {\n      type: \"string\",\n      minLength: 1,\n      maxLength: 256,\n    },\n    commits: {\n      type: \"array\",\n      items: {\n        type: \"object\",\n        additionalProperties: false,\n        required: [\"commitId\", \"createdAt\"],\n        properties: {\n          commitId: { type: \"string\", minLength: 1, maxLength: 256 },\n          label: { type: \"string\" },\n          labelKey: { type: \"string\", minLength: 1 },\n          actorLabel: { type: \"string\" },\n          actorAccount: { type: \"string\" },\n          createdAt: { type: \"string\", minLength: 1, maxLength: 128 },\n          updatedTimestamp: { type: \"integer\", minimum: 0 },\n          summary: { type: \"string\", maxLength: 1024 },\n          systemMessage: { type: \"string\", maxLength: 2048 },\n          parentCommitIds: {\n            type: \"array\",\n            items: { type: \"string\", minLength: 1, maxLength: 256 },\n          },\n          changes: {\n            type: \"array\",\n            items: {\n              type: \"object\",\n              additionalProperties: false,\n              required: [\"fieldId\"],\n              properties: {\n                fieldId: { type: \"string\", minLength: 1, maxLength: 256 },\n                label: { type: \"string\" },\n                labelKey: { type: \"string\", minLength: 1 },\n                before: {},\n                after: {},\n              },\n            },\n          },\n          disabled: { type: \"boolean\" },\n        },\n      },\n    },\n    pagination: cursorPaginationSchema(),\n    diff: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"items\"],\n      properties: {\n        items: {\n          type: \"array\",\n          items: {\n            type: \"object\",\n            additionalProperties: false,\n            required: [\"fieldId\"],\n            properties: {\n              fieldId: { type: \"string\", minLength: 1, maxLength: 256 },\n              label: { type: \"string\" },\n              labelKey: { type: \"string\", minLength: 1 },\n              before: { type: [\"string\", \"number\", \"boolean\", \"null\"] },\n              after: { type: [\"string\", \"number\", \"boolean\", \"null\"] },\n            },\n          },\n        },\n      },\n    },\n    reason: { type: \"string\", maxLength: 2048 },\n    messageEditor: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"commitId\", \"message\", \"pending\"],\n      properties: {\n        commitId: { type: \"string\", minLength: 1, maxLength: 256 },\n        message: { type: \"string\", maxLength: 500 },\n        pending: { type: \"boolean\" },\n        errorCode: { type: \"string\", minLength: 1, maxLength: 128 },\n      },\n    },\n    rollback: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"enabled\", \"pending\"],\n      properties: {\n        enabled: { type: \"boolean\" },\n        pending: { type: \"boolean\" },\n        errorCode: { type: \"string\", minLength: 1, maxLength: 128 },\n      },\n    },\n    deletion: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"enabled\", \"pending\", \"confirmationRequired\"],\n      properties: {\n        enabled: { type: \"boolean\" },\n        pending: { type: \"boolean\" },\n        confirmationRequired: { const: true },\n        errorCode: { type: \"string\", minLength: 1, maxLength: 128 },\n      },\n    },\n  },\n});\n\nconst RECORD_HISTORY_INTENT_SCHEMAS = Object.freeze({\n  close: jsonSchema(\"monkeys-design://intent/record-history-close/v1\", {\n    type: \"object\",\n    additionalProperties: false,\n    properties: {},\n  }),\n  loadMore: cursorIntentSchema(\n    \"monkeys-design://intent/record-history-load-more/v1\",\n  ),\n  select: jsonSchema(\"monkeys-design://intent/record-history-select/v1\", {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"targetCommitId\"],\n    properties: {\n      targetCommitId: { type: \"string\", minLength: 1, maxLength: 256 },\n    },\n  }),\n  reasonChange: jsonSchema(\n    \"monkeys-design://intent/record-history-reason-change/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"reason\"],\n      properties: { reason: { type: \"string\", maxLength: 2048 } },\n    },\n  ),\n  messageEdit: jsonSchema(\n    \"monkeys-design://intent/record-history-message-edit/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"commitId\", \"expectedUpdatedTimestamp\", \"message\"],\n      properties: {\n        commitId: { type: \"string\", minLength: 1, maxLength: 256 },\n        expectedUpdatedTimestamp: { type: \"integer\", minimum: 0 },\n        message: { type: \"string\", maxLength: 500 },\n      },\n    },\n  ),\n  messageChange: jsonSchema(\n    \"monkeys-design://intent/record-history-message-change/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"message\"],\n      properties: { message: { type: \"string\", maxLength: 500 } },\n    },\n  ),\n  messageCancel: jsonSchema(\n    \"monkeys-design://intent/record-history-message-cancel/v1\",\n    { type: \"object\", additionalProperties: false, properties: {} },\n  ),\n  messageUpdate: jsonSchema(\n    \"monkeys-design://intent/record-history-message-update/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"commitId\", \"expectedUpdatedTimestamp\", \"message\"],\n      properties: {\n        commitId: { type: \"string\", minLength: 1, maxLength: 256 },\n        expectedUpdatedTimestamp: { type: \"integer\", minimum: 0 },\n        message: { type: \"string\", maxLength: 500 },\n      },\n    },\n  ),\n  rollback: jsonSchema(\"monkeys-design://intent/record-history-rollback/v1\", {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\n      \"aggregateId\",\n      \"targetCommitId\",\n      \"expectedHeadCommitId\",\n      \"reason\",\n    ],\n    properties: {\n      aggregateId: { type: \"string\", minLength: 1, maxLength: 256 },\n      targetCommitId: { type: \"string\", minLength: 1, maxLength: 256 },\n      expectedHeadCommitId: {\n        type: \"string\",\n        minLength: 1,\n        maxLength: 256,\n      },\n      reason: { type: \"string\", maxLength: 2048 },\n    },\n  }),\n  delete: jsonSchema(\"monkeys-design://intent/record-history-delete/v1\", {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"aggregateId\", \"expectedHeadCommitId\", \"reason\"],\n    properties: {\n      aggregateId: { type: \"string\", minLength: 1, maxLength: 256 },\n      expectedHeadCommitId: {\n        type: \"string\",\n        minLength: 1,\n        maxLength: 256,\n      },\n      reason: { type: \"string\", minLength: 1, maxLength: 2048 },\n    },\n  }),\n});\n\nconst GALLERY_ACTIVATE_INTENT_SCHEMA = jsonSchema(\n  \"monkeys-design://intent/gallery-activate/v1\",\n  {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"itemId\"],\n    properties: {\n      itemId: { type: \"string\", minLength: 1 },\n    },\n  },\n);\n\nconst GALLERY_LOAD_MORE_INTENT_SCHEMA = jsonSchema(\n  \"monkeys-design://intent/gallery-load-more/v1\",\n  {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"cursor\"],\n    properties: {\n      cursor: { type: \"string\", minLength: 1, maxLength: 2048 },\n    },\n  },\n);\n\nconst GALLERY_SELECTION_CHANGE_INTENT_SCHEMA = jsonSchema(\n  \"monkeys-design://intent/gallery-selection-change/v1\",\n  {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"itemIds\"],\n    properties: {\n      itemIds: {\n        type: \"array\",\n        uniqueItems: true,\n        items: { type: \"string\", minLength: 1 },\n      },\n    },\n  },\n);\n\nconst LEGACY_GALLERY_SETTING_PROPERTIES: Record<string, JsonObject> = {\n  columns: { oneOf: [{ const: \"auto\" }, { type: \"integer\", minimum: 1, maximum: 12 }] },\n  aspectRatio: { enum: [\"auto\", \"1:1\", \"4:3\", \"3:4\", \"16:9\", \"9:16\"] }, showMetadata: { type: \"boolean\" },\n};\n\nconst RECORD_EDITOR_SUBMIT_PROPERTIES: JsonObject = {\n      draftRevision: { type: 'string', minLength: 1 },\n      secretChanges: { type: 'array', items: { oneOf: [\n        { type: 'object', additionalProperties: false, required: ['path', 'mode'], properties: { path: editorPathSchema, mode: { enum: ['keep', 'clear'] } } },\n        { type: 'object', additionalProperties: false, required: ['path', 'mode', 'value'], properties: { path: editorPathSchema, mode: { const: 'replace' }, value: { type: ['string', 'number', 'boolean', 'object', 'array', 'null'] } } }\n      ] } },\n      values: {\n        type: \"object\",\n        additionalProperties: true,\n      },\n      featureValues: {\n        type: \"object\",\n        additionalProperties: GOVERNED_READ_VALUE_SCHEMA,\n      },\n    };\n\nconst DATA_CAPABILITY_INTENT_SCHEMAS = Object.freeze({\n  navigatorSelect: itemIdIntentSchema(\n    \"monkeys-design://intent/ontology-navigator-select/v1\",\n    \"nodeId\",\n  ),\n  navigatorToggle: jsonSchema(\n    \"monkeys-design://intent/ontology-navigator-toggle/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"expandedNodeIds\"],\n      properties: {\n        expandedNodeIds: {\n          type: \"array\",\n          uniqueItems: true,\n          items: { type: \"string\", minLength: 1 },\n        },\n      },\n    },\n  ),\n  navigatorLoadMore: cursorIntentSchema(\n    \"monkeys-design://intent/ontology-navigator-load-more/v1\",\n  ),\n  navigatorSearch: jsonSchema(\n    \"monkeys-design://intent/ontology-navigator-search/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"value\"],\n      properties: { value: { type: \"string\" } },\n    },\n  ),\n  navigatorRetry: jsonSchema(\n    \"monkeys-design://intent/ontology-navigator-retry/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      properties: {},\n    },\n  ),\n  navigatorHome: jsonSchema(\n    \"monkeys-design://intent/ontology-navigator-home/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      properties: {},\n    },\n  ),\n  navigatorDestination: jsonSchema(\n    \"monkeys-design://intent/ontology-navigator-destination/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"destinationId\"],\n      properties: { destinationId: { type: \"string\", minLength: 1 } },\n    },\n  ),\n  navigatorAction: jsonSchema(\n    \"monkeys-design://intent/ontology-navigator-action/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"nodeId\", \"actionId\"],\n      properties: {\n        nodeId: { type: \"string\", minLength: 1 },\n        actionId: { type: \"string\", minLength: 1 },\n      },\n    },\n  ),\n  navigatorReorder: jsonSchema(\n    \"monkeys-design://intent/ontology-navigator-reorder/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"nodeId\", \"parentNodeId\", \"beforeNodeId\"],\n      properties: {\n        nodeId: { type: \"string\", minLength: 1 },\n        parentNodeId: {\n          oneOf: [{ type: \"string\", minLength: 1 }, { type: \"null\" }],\n        },\n        beforeNodeId: {\n          oneOf: [{ type: \"string\", minLength: 1 }, { type: \"null\" }],\n        },\n      },\n    },\n  ),\n  professionalSelect: jsonSchema(\n    \"monkeys-design://intent/professional-leaf-select/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"itemId\"],\n      properties: {\n        itemId: { type: \"string\", minLength: 1 },\n        scopeId: { type: \"string\", minLength: 1 },\n      },\n    },\n  ),\n  professionalDismiss: jsonSchema(\n    \"monkeys-design://intent/professional-leaf-dismiss/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      properties: {},\n    },\n  ),\n  toolbarSearch: jsonSchema(\"monkeys-design://intent/data-toolbar-search/v1\", {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"value\"],\n    properties: { value: { type: \"string\" } },\n  }),\n  toolbarViewChange: itemIdIntentSchema(\n    \"monkeys-design://intent/data-toolbar-view-change/v1\",\n    \"viewId\",\n  ),\n  toolbarRefresh: jsonSchema(\n    \"monkeys-design://intent/data-toolbar-refresh/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n    },\n  ),\n  toolbarAddRow: jsonSchema(\"monkeys-design://intent/data-toolbar-add-row/v1\", {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"blankRowLabel\", \"requestedAt\"],\n    properties: {\n      blankRowLabel: { type: \"string\", minLength: 1, maxLength: 256 },\n      requestedAt: { type: \"integer\", minimum: 0 },\n    },\n  }),\n  toolbarCommand: itemIdIntentSchema(\n    \"monkeys-design://intent/data-toolbar-command/v1\",\n    \"commandId\",\n  ),\n  toolbarFilterChange: jsonSchema(\n    \"monkeys-design://intent/data-toolbar-filter-change/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"filterId\", \"values\"],\n      properties: {\n        filterId: { type: \"string\", minLength: 1 },\n        values: {\n          type: \"array\",\n          uniqueItems: true,\n          items: GOVERNED_READ_VALUE_SCHEMA,\n        },\n      },\n    },\n  ),\n  toolbarGallerySettingsChange: jsonSchema(\n    \"monkeys-design://intent/data-toolbar-gallery-settings-change/v1\",\n    { type: \"object\", oneOf: [GALLERY_PRESENTATION_SETTING_CHANGE_SCHEMA,\n      ...Object.entries(LEGACY_GALLERY_SETTING_PROPERTIES).map(([settingId, value]) => ({ type: \"object\", additionalProperties: false, required: [\"settingId\", \"value\"], properties: { settingId: { const: settingId }, value } })),\n    ] },\n  ),\n  toolbarRowHeightChange: jsonSchema(\n    \"monkeys-design://intent/data-toolbar-row-height-change/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"mode\", \"preset\", \"scale\"],\n      properties: {\n        mode: { enum: [\"preset\", \"custom\"] },\n        preset: { enum: [\"compact\", \"default\", \"comfortable\"] },\n        scale: { type: \"number\", minimum: 0.5, maximum: 10, multipleOf: 0.5 },\n      },\n    },\n  ),\n  toolbarColumnConfigurationChange: jsonSchema(\n    \"monkeys-design://intent/data-toolbar-column-configuration-change/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"expectedDefinitionVersion\", \"changes\"],\n      properties: {\n        expectedDefinitionVersion: { type: \"integer\", minimum: 1 },\n        changes: {\n          type: \"object\",\n          additionalProperties: false,\n          required: [\"displayConfig\"],\n          properties: {\n            displayConfig: { type: \"object\", additionalProperties: true },\n          },\n        },\n      },\n    },\n  ),\n  toolbarTrendMatrixConfigurationChange: jsonSchema(\n    \"monkeys-design://intent/data-toolbar-trend-matrix-configuration-change/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"expectedDefinitionVersion\", \"changes\"],\n      properties: {\n        expectedDefinitionVersion: { type: \"integer\", minimum: 1 },\n        changes: {\n          type: \"object\",\n          additionalProperties: false,\n          required: [\"displayConfig\"],\n          properties: {\n            displayConfig: { type: \"object\", additionalProperties: true },\n          },\n        },\n      },\n    },\n  ),\n  tableActivate: itemIdIntentSchema(\n    \"monkeys-design://intent/ontology-table-activate/v1\",\n    \"rowId\",\n  ),\n  tableDelete: itemIdIntentSchema(\n    \"monkeys-design://intent/ontology-table-delete/v1\",\n    \"rowId\",\n  ),\n  tableSelection: jsonSchema(\n    \"monkeys-design://intent/ontology-table-selection-change/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"rowIds\"],\n      properties: {\n        rowIds: {\n          type: \"array\",\n          uniqueItems: true,\n          items: { type: \"string\", minLength: 1 },\n        },\n      },\n    },\n  ),\n  tableSort: jsonSchema(\"monkeys-design://intent/ontology-table-sort/v1\", {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"columnId\", \"sortBy\", \"direction\"],\n    properties: {\n      columnId: { type: \"string\", minLength: 1 },\n      sortBy: { enum: [\"asset_id\", \"updated_timestamp\", \"pin_order\"] },\n      direction: { enum: [\"asc\", \"desc\"] },\n    },\n  }),\n  tableLoadMore: cursorIntentSchema(\n    \"monkeys-design://intent/ontology-table-load-more/v1\",\n  ),\n  tableCellIntent: jsonSchema(\n    \"monkeys-design://intent/ontology-table-cell/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"rowId\", \"columnId\", \"intentId\"],\n      properties: {\n        rowId: { type: \"string\", minLength: 1 },\n        columnId: { type: \"string\", minLength: 1 },\n        intentId: { type: \"string\", minLength: 1 },\n        value: GOVERNED_READ_VALUE_SCHEMA,\n      },\n    },\n  ),\n  tableRowAction: jsonSchema(\n    \"monkeys-design://intent/ontology-table-row-action/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"rowId\", \"actionId\"],\n      properties: {\n        rowId: { type: \"string\", minLength: 1 },\n        context: { type: \"object\" },\n        actionId: { type: \"string\", minLength: 1 },\n      },\n    },\n  ),\n  tableColumnAction: jsonSchema(\n    \"monkeys-design://intent/ontology-table-column-action/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"columnId\", \"actionId\"],\n      properties: {\n        columnId: { type: \"string\", minLength: 1 },\n        actionId: { type: \"string\", minLength: 1 },\n      },\n    },\n  ),\n  cardActivate: itemIdIntentSchema(\n    \"monkeys-design://intent/card-grid-activate/v1\",\n  ),\n  cardDelete: itemIdIntentSchema(\"monkeys-design://intent/card-grid-delete/v1\"),\n  cardSelection: jsonSchema(\n    \"monkeys-design://intent/card-grid-selection-change/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"itemIds\"],\n      properties: {\n        itemIds: {\n          type: \"array\",\n          uniqueItems: true,\n          items: { type: \"string\", minLength: 1 },\n        },\n      },\n    },\n  ),\n  cardRowAction: jsonSchema(\"monkeys-design://intent/card-grid-row-action/v1\", {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"itemId\", \"actionId\"],\n    properties: {\n      itemId: { type: \"string\", minLength: 1 },\n      actionId: { type: \"string\", minLength: 1 },\n      payload: { type: \"object\" },\n    },\n  }),\n  cardLoadMore: cursorIntentSchema(\n    \"monkeys-design://intent/card-grid-load-more/v1\",\n  ),\n  collectionPageSizeChange: jsonSchema(\n    \"monkeys-design://intent/collection-page-size-change/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"pageSize\"],\n      properties: {\n        pageSize: { enum: [20, 50, 100, 200, 500, 1000] },\n      },\n    },\n  ),\n  paginationPageChange: jsonSchema(\n    \"monkeys-design://intent/pagination-page-change/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"page\"],\n      properties: { page: { type: \"integer\", minimum: 1 } },\n    },\n  ),\n  paginationLoadMore: cursorIntentSchema(\n    \"monkeys-design://intent/pagination-load-more/v1\",\n  ),\n  recordEdit: jsonSchema(\"monkeys-design://intent/record-detail-edit/v1\", {\n    type: \"object\",\n    additionalProperties: false,\n    properties: {},\n  }),\n  recordClose: jsonSchema(\"monkeys-design://intent/record-detail-close/v1\", {\n    type: \"object\",\n    additionalProperties: false,\n    properties: {},\n  }),\n  recordViewed: jsonSchema(\"monkeys-design://intent/record-detail-viewed/v1\", {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"itemId\"],\n    properties: {\n      itemId: { type: \"string\", minLength: 1 },\n    },\n  }),\n  recordNavigate: jsonSchema(\n    \"monkeys-design://intent/record-detail-navigate/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"direction\", \"targetId\"],\n      properties: {\n        direction: { enum: [\"previous\", \"next\"] },\n        targetId: { type: \"string\", minLength: 1 },\n      },\n    },\n  ),\n  recordAction: jsonSchema(\"monkeys-design://intent/record-detail-action/v1\", {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"actionId\"],\n    properties: {\n      actionId: { type: \"string\", minLength: 1 },\n      itemId: { type: \"string\", minLength: 1 },\n    },\n  }),\n  recordPreviewDownload: jsonSchema(\n    \"monkeys-design://intent/record-detail-preview-download/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"itemId\", \"source\"],\n      properties: {\n        itemId: { type: \"string\", minLength: 1 },\n        source: { type: \"string\", minLength: 1 },\n      },\n    },\n  ),\n  editorChange: jsonSchema(\"monkeys-design://intent/record-editor-change/v1\", {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"fieldId\", \"value\"],\n    properties: {\n      fieldId: { type: \"string\" },\n      draft: { type: 'object', additionalProperties: false, required: ['revision', 'value', 'dirty', 'touched'], properties: { revision: { type: 'string' }, value: { type: 'object' }, dirty: { type: 'boolean' }, touched: { type: 'array', items: editorPathSchema } } },\n      value: GOVERNED_READ_VALUE_SCHEMA,\n    },\n  }),\n  editorPick: jsonSchema('monkeys-design://intent/record-editor-pick/v1', { type: 'object', additionalProperties: false, required: ['fieldId', 'draftValues', 'draftRevision'], properties: { fieldId: { type: 'string', minLength: 1 }, draftValues: { type: 'object' }, draftRevision: { type: 'string', minLength: 1 } } }),\n  editorDraftPatchRejected: jsonSchema('monkeys-design://intent/record-editor-draft-patch-rejected/v1', { type: 'object', additionalProperties: false, required: ['key', 'reason'], properties: { key: { type: 'string' }, reason: { enum: ['stale-revision', 'stale-value', 'invalid-operation'] } } }),\n  editorCancel: jsonSchema(\"monkeys-design://intent/record-editor-cancel/v1\", {\n    type: \"object\",\n    additionalProperties: false,\n    properties: {},\n  }),\n  editorSubmit: jsonSchema(\"monkeys-design://intent/record-editor-submit/v1\", {\n    type: \"object\", additionalProperties: false, required: [\"values\", \"featureValues\"], properties: RECORD_EDITOR_SUBMIT_PROPERTIES,\n  }),\n  editorAuxiliarySubmit: jsonSchema(\"monkeys-design://intent/record-editor-auxiliary-submit/v1\", {\n    type: \"object\", additionalProperties: false, required: [\"actionId\", \"values\", \"featureValues\"],\n    properties: { ...RECORD_EDITOR_SUBMIT_PROPERTIES, actionId: { type: \"string\", minLength: 1, maxLength: 256 } },\n  }),\n  editorOptionsRequest: jsonSchema('monkeys-design://intent/record-editor-options-request/v1', {\n    type: 'object', additionalProperties: false, required: ['fieldId'], properties: { fieldId: { type: 'string', minLength: 1, maxLength: 256 } },\n  }),\n  editorOptionsLoadMore: jsonSchema(\n    \"monkeys-design://intent/record-editor-options-load-more/v1\",\n    {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"fieldId\", \"cursor\"],\n      properties: {\n        fieldId: { type: \"string\", minLength: 1, maxLength: 256 },\n        cursor: { type: \"string\", minLength: 1, maxLength: 2048 },\n      },\n    },\n  ),\n});\n\nconst LOCALIZED_COPY_PROPERTIES = {\n  title: { type: \"string\" },\n  titleKey: { type: \"string\", minLength: 1 },\n  description: { type: \"string\" },\n  descriptionKey: { type: \"string\", minLength: 1 },\n} as const;\n\nconst LOCALIZED_COPY_PROPERTY_FIELDS = [\n  {\n    path: \"title\",\n    label: i18n(\"Title\", \"标题\"),\n    control: \"text\",\n    required: false,\n    advanced: false,\n  },\n  {\n    path: \"titleKey\",\n    label: i18n(\"Title i18n key\", \"标题 i18n 键\"),\n    control: \"i18n-key\",\n    required: false,\n    advanced: true,\n  },\n  {\n    path: \"description\",\n    label: i18n(\"Description\", \"说明\"),\n    control: \"textarea\",\n    required: false,\n    advanced: false,\n  },\n  {\n    path: \"descriptionKey\",\n    label: i18n(\"Description i18n key\", \"说明 i18n 键\"),\n    control: \"i18n-key\",\n    required: false,\n    advanced: true,\n  },\n] satisfies readonly PropertyFieldDefinition[];\n\nconst SECTION_HEADER_RENDER_MODEL_SCHEMA = jsonSchema(\n  \"monkeys-design://render-model/section-header/v1\",\n  {\n    type: \"object\",\n    additionalProperties: false,\n    properties: {\n      eyebrow: { type: \"string\" },\n      eyebrowKey: { type: \"string\", minLength: 1 },\n      ...LOCALIZED_COPY_PROPERTIES,\n    },\n  },\n);\n\nconst NOTICE_RENDER_MODEL_SCHEMA = jsonSchema(\n  \"monkeys-design://render-model/notice/v1\",\n  {\n    type: \"object\",\n    additionalProperties: false,\n    properties: {\n      tone: {\n        enum: [\"default\", \"primary\", \"success\", \"warning\", \"danger\", \"muted\"],\n      },\n      ...LOCALIZED_COPY_PROPERTIES,\n    },\n  },\n);\n\nconst DESCRIPTION_LIST_RENDER_MODEL_SCHEMA = jsonSchema(\n  \"monkeys-design://render-model/description-list/v1\",\n  {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"items\"],\n    properties: {\n      columns: { enum: [1, 2, 3] },\n      label: { type: \"string\" },\n      labelKey: { type: \"string\", minLength: 1 },\n      items: {\n        type: \"array\",\n        items: { oneOf: [\n          { type: 'object', additionalProperties: false, required: ['id', 'valueType', 'value'], properties: {\n            id: { type: 'string', minLength: 1 }, term: { type: 'string' }, termKey: { type: 'string', minLength: 1 }, locale: { type: 'string', minLength: 2, maxLength: 64 }, valueType: { const: 'timestamp' }, value: { type: ['string', 'number'] },\n          } }, {\n          type: \"object\",\n          additionalProperties: false,\n          required: [\"id\"],\n          properties: {\n            id: { type: \"string\", minLength: 1 },\n            term: { type: \"string\" },\n            termKey: { type: \"string\", minLength: 1 },\n            value: { type: \"string\" },\n            valueKey: { type: \"string\", minLength: 1 },\n          },\n        }] },\n      },\n    },\n  },\n);\n\nconst CONTENT_PANEL_RENDER_MODEL_SCHEMA = jsonSchema(\n  \"monkeys-design://render-model/content-panel/v1\",\n  {\n    type: \"object\",\n    additionalProperties: false,\n    properties: {\n      ...LOCALIZED_COPY_PROPERTIES,\n      selected: { type: \"boolean\" },\n      disabled: { type: \"boolean\" },\n      density: { enum: [\"compact\", \"default\", \"comfortable\"] },\n    },\n  },\n);\n\nconst TOOLBAR_RENDER_MODEL_SCHEMA = jsonSchema(\n  \"monkeys-design://render-model/toolbar/v1\",\n  {\n    type: \"object\",\n    additionalProperties: false,\n    properties: LOCALIZED_COPY_PROPERTIES,\n  },\n);\n\nconst STATUS_RENDER_MODEL_SCHEMA = jsonSchema(\n  \"monkeys-design://render-model/status/v2\",\n  {\n    type: \"object\",\n    additionalProperties: false,\n    required: [\"kind\"],\n    properties: {\n      kind: { enum: [\"loading\", \"empty\", \"error\", \"forbidden\"] },\n      presentation: { enum: [\"legacy-data-explorer\"] },\n      code: { type: \"string\", minLength: 1 },\n      titleKey: { type: \"string\", minLength: 1 },\n      descriptionKey: { type: \"string\", minLength: 1 },\n      noticeKey: { type: \"string\", minLength: 1 },\n      emptyLabelKey: { type: \"string\", minLength: 1 },\n      retryable: { type: \"boolean\" },\n    },\n  },\n);\n\nconst PROFESSIONAL_RENDER_MODEL_SCHEMA = jsonSchema(PROFESSIONAL_SCHEMA, {\n  type: \"object\",\n  additionalProperties: true,\n});\n\nexport const NEUTRAL_CAPABILITY_CATALOG_ENTRIES = Object.freeze([\n  CHOICE_PICKER_ENTRY,\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.summaryChart,\n    authoringRevision: 2, schemaRevision: 2,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.summaryChart,\n    kind: 'view', category: 'data-view',\n    labelKey: 'monkeys.design.capability.summaryChart.label',\n    descriptionKey: 'monkeys.design.capability.summaryChart.description',\n    authoringLabel: i18n('Summary chart', '汇总图表'),\n    authoringDescription: i18n('Compare bounded numeric series and category totals.', '比较数值序列与分类汇总。'),\n    inputPort: 'chart', schemaRef: SUMMARY_CHART_SCHEMA, schemaDocument: SUMMARY_CHART_RENDER_MODEL_SCHEMA,\n    slots: [], outputPorts: [], loading: 'on-activation', supportedPageTypes: ['page', 'view', 'workspace', 'preview'], supportedSurfaces: ['page', 'view', 'workspace', 'overlay'],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.shellLayout,\n    version: \"18\",\n    revision: 18,\n    schemaRevision: 4,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.shellLayout,\n    kind: \"view\",\n    category: \"layout\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.shellLayout.label,\n    descriptionKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.shellLayout.description,\n    authoringLabel: i18n(\"Page layout\", \"页面布局\"),\n    authoringDescription: i18n(\n      \"Arrange shared header, sidebar, main, aside, and footer slots.\",\n      \"装配共享页头、侧栏、主区域、辅助区域和页脚。\",\n    ),\n    inputPort: \"layout\",\n    schemaRef: \"monkeys-design://render-model/shell-layout/v3\",\n    schemaDocument: SHELL_LAYOUT_RENDER_MODEL_SCHEMA,\n    slots: [\n      \"header\",\n      \"notices\",\n      \"sidebar\",\n      \"main\",\n      \"aside\",\n      \"footer\",\n      \"overlay\",\n    ],\n    propertySchema: {\n      type: \"object\",\n      additionalProperties: false,\n      properties: {\n        variant: {\n          enum: [\"default\", \"data-explorer\", \"region-stack\"],\n          default: \"default\",\n        },\n        fullHeight: { type: \"boolean\", default: false },\n        sidebarLabelKey: { type: \"string\" },\n        mobileSidebar: { enum: [\"stack\", \"drawer\"], default: \"stack\" },\n        asideLabelKey: { type: \"string\" },\n        sidebarCollapsed: { type: \"boolean\", default: false },\n        sidebarCollapsible: { type: \"boolean\", default: true },\n        sidebarResizable: { type: \"boolean\", default: true },\n        sidebarWidth: {\n          type: \"integer\",\n          minimum: 200,\n          maximum: 600,\n          default: 256,\n        },\n        asideWidth: {\n          type: \"integer\",\n          minimum: 320,\n          maximum: 560,\n          default: 400,\n        },\n        asideResizable: { type: \"boolean\", default: true },\n        appearance: DATA_EXPLORER_APPEARANCE_SCHEMA,\n      },\n    },\n    uiSchema: {\n      order: [\n        \"variant\",\n        \"fullHeight\",\n        \"sidebarCollapsed\",\n        \"sidebarCollapsible\",\n        \"sidebarResizable\",\n        \"sidebarWidth\",\n        \"asideWidth\",\n        \"asideResizable\",\n        \"appearance\",\n        \"sidebarLabelKey\",\n        \"mobileSidebar\",\n        \"asideLabelKey\",\n      ],\n    },\n    propertyFields: [\n      {\n        path: \"variant\",\n        label: i18n(\"Layout variant\", \"布局类型\"),\n        control: \"select\",\n        required: false,\n        advanced: false,\n      },\n      {\n        path: \"fullHeight\",\n        label: i18n(\"Use full height\", \"使用全高布局\"),\n        control: \"switch\",\n        required: false,\n        advanced: false,\n      },\n      {\n        path: \"sidebarLabelKey\",\n        label: i18n(\"Sidebar label key\", \"侧栏标签键\"),\n        control: \"i18n-key\",\n        required: false,\n        advanced: true,\n      },\n      {\n        path: \"mobileSidebar\",\n        label: i18n(\"Narrow sidebar presentation\", \"窄屏侧栏展示\"),\n        control: \"select\",\n        required: false,\n        advanced: true,\n      },\n      {\n        path: \"asideLabelKey\",\n        label: i18n(\"Aside label key\", \"辅助区域标签键\"),\n        control: \"i18n-key\",\n        required: false,\n        advanced: true,\n      },\n      {\n        path: \"appearance.surface\",\n        label: i18n(\"Data Explorer surface\", \"数据页面外壳\"),\n        control: \"select\",\n        required: false,\n        advanced: true,\n      },\n      {\n        path: \"appearance.preset\",\n        label: i18n(\"Data Explorer appearance preset\", \"数据页面外观预设\"),\n        control: \"select\",\n        required: false,\n        advanced: true,\n      },\n      {\n        path: \"appearance.density\",\n        label: i18n(\"Data Explorer density\", \"数据页面密度\"),\n        control: \"select\",\n        required: false,\n        advanced: true,\n      },\n      {\n        path: \"appearance.radius\",\n        label: i18n(\"Data Explorer corner radius\", \"数据页面圆角\"),\n        control: \"select\",\n        required: false,\n        advanced: true,\n      },\n      {\n        path: \"appearance.border\",\n        label: i18n(\"Data Explorer border\", \"数据页面边框\"),\n        control: \"select\",\n        required: false,\n        advanced: true,\n      },\n      {\n        path: \"appearance.background\",\n        label: i18n(\"Data Explorer background\", \"数据页面背景\"),\n        control: \"select\",\n        required: false,\n        advanced: true,\n      },\n      {\n        path: \"sidebarCollapsed\",\n        label: i18n(\"Collapse sidebar\", \"收起侧栏\"),\n        control: \"switch\",\n        required: false,\n        advanced: false,\n      },\n      {\n        path: \"sidebarCollapsible\",\n        label: i18n(\"Allow sidebar collapse\", \"允许折叠侧栏\"),\n        control: \"switch\",\n        required: false,\n        advanced: false,\n      },\n      {\n        path: \"sidebarResizable\",\n        label: i18n(\"Allow sidebar resize\", \"允许调整侧栏宽度\"),\n        control: \"switch\",\n        required: false,\n        advanced: false,\n      },\n      {\n        path: \"sidebarWidth\",\n        label: i18n(\"Sidebar width\", \"侧栏宽度\"),\n        control: \"number\",\n        required: false,\n        advanced: true,\n      },\n      {\n        path: \"asideWidth\",\n        label: i18n(\"Detail width\", \"详情区域宽度\"),\n        control: \"number\",\n        required: false,\n        advanced: true,\n      },\n      {\n        path: \"asideResizable\",\n        label: i18n(\"Allow detail resize\", \"允许调整详情宽度\"),\n        control: \"switch\",\n        required: false,\n        advanced: false,\n      },\n    ],\n    outputPorts: [\n      {\n        name: \"capability.shell-layout.sidebar-collapse\",\n        schemaRef: \"monkeys-design://intent/shell-layout-sidebar-collapse/v1\",\n        schemaDocument: SHELL_LAYOUT_INTENT_SCHEMAS.sidebarCollapse,\n      },\n      {\n        name: \"capability.shell-layout.sidebar-resize\",\n        schemaRef: \"monkeys-design://intent/shell-layout-sidebar-resize/v1\",\n        schemaDocument: SHELL_LAYOUT_INTENT_SCHEMAS.sidebarResize,\n      },\n      {\n        name: \"capability.shell-layout.aside-resize\",\n        schemaRef: \"monkeys-design://intent/shell-layout-aside-resize/v1\",\n        schemaDocument: SHELL_LAYOUT_INTENT_SCHEMAS.asideResize,\n      },\n    ],\n    supportedPageTypes: [\"page\", \"workspace\", \"preview\"],\n    supportedSurfaces: [\"page\", \"workspace\"],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.sidebarFilter,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.sidebarFilter,\n    kind: \"view\",\n    category: \"navigation\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.sidebarFilter.label,\n    descriptionKey:\n      DESIGN_CAPABILITY_I18N_KEYS.catalog.sidebarFilter.description,\n    authoringLabel: i18n(\"Filter sidebar\", \"筛选侧栏\"),\n    authoringDescription: i18n(\n      \"Filter an Ontology view with searchable, governed options.\",\n      \"使用可搜索、受治理的选项筛选 Ontology 视图。\",\n    ),\n    inputPort: \"ontologyView\",\n    schemaRef: SIDEBAR_FILTER_SCHEMA,\n    schemaDocument: SIDEBAR_FILTER_RENDER_MODEL_SCHEMA,\n    compatibility: [\n      {\n        inputPort: \"ontologyView\",\n        schemaRef: SIDEBAR_FILTER_SCHEMA,\n        mode: \"filter\",\n      },\n    ],\n    slots: [\"header\", \"footer\"],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\"],\n    supportedSurfaces: [\"view\", \"workspace\"],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.ontologyNavigator,\n    version: \"23\",\n    revision: 23,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.ontologyNavigator,\n    kind: \"view\",\n    category: \"navigation\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.ontologyNavigator.label,\n    descriptionKey:\n      DESIGN_CAPABILITY_I18N_KEYS.catalog.ontologyNavigator.description,\n    authoringLabel: i18n(\"Ontology navigator\", \"本体导航器\"),\n    authoringDescription: i18n(\n      \"Navigate a governed hierarchical Ontology view.\",\n      \"浏览受治理的分层本体视图。\",\n    ),\n    inputPort: \"ontologyView\",\n    schemaRef: ONTOLOGY_NAVIGATOR_SCHEMA,\n    schemaDocument: ONTOLOGY_NAVIGATOR_RENDER_MODEL_SCHEMA,\n    compatibility: [\n      {\n        inputPort: \"ontologyView\",\n        schemaRef: ONTOLOGY_NAVIGATOR_SCHEMA,\n        mode: \"view\",\n      },\n    ],\n    slots: [\"header\", \"footer\"],\n    outputPorts: [\n      {\n        name: \"capability.ontology-navigator.select\",\n        schemaRef: \"monkeys-design://intent/ontology-navigator-select/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.navigatorSelect,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.ontology-navigator.toggle\",\n        schemaRef: \"monkeys-design://intent/ontology-navigator-toggle/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.navigatorToggle,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.ontology-navigator.load-more\",\n        schemaRef: \"monkeys-design://intent/ontology-navigator-load-more/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.navigatorLoadMore,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.ontology-navigator.search\",\n        schemaRef: \"monkeys-design://intent/ontology-navigator-search/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.navigatorSearch,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.ontology-navigator.retry\",\n        schemaRef: \"monkeys-design://intent/ontology-navigator-retry/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.navigatorRetry,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.ontology-navigator.home\",\n        schemaRef: \"monkeys-design://intent/ontology-navigator-home/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.navigatorHome,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.ontology-navigator.destination\",\n        schemaRef: \"monkeys-design://intent/ontology-navigator-destination/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.navigatorDestination,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.ontology-navigator.action\",\n        schemaRef: \"monkeys-design://intent/ontology-navigator-action/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.navigatorAction,\n        allowedCommandKinds: [\"query-intent\", \"domain-command\"],\n      },\n      {\n        name: \"capability.ontology-navigator.reorder\",\n        schemaRef: \"monkeys-design://intent/ontology-navigator-reorder/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.navigatorReorder,\n        allowedCommandKinds: [\"domain-command\"],\n      },\n    ],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\"],\n    virtualized: true,\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.dataToolbar,\n    version: \"27\",\n    revision: 27,\n    schemaRevision: 2,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.dataToolbar,\n    kind: \"view\",\n    category: \"data-view\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.dataToolbar.label,\n    descriptionKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.dataToolbar.description,\n    authoringLabel: i18n(\"Data toolbar\", \"数据工具栏\"),\n    authoringDescription: i18n(\n      \"Compose governed search, view switching, and data commands.\",\n      \"装配受治理的搜索、视图切换和数据命令。\",\n    ),\n    inputPort: \"controls\",\n    schemaRef: DATA_TOOLBAR_SCHEMA,\n    schemaDocument: DATA_TOOLBAR_RENDER_MODEL_SCHEMA,\n    slots: [\"leading\", \"content\", \"actions\", \"secondaryActions\"],\n    outputPorts: [\n      {\n        name: \"capability.data-toolbar.search\",\n        schemaRef: \"monkeys-design://intent/data-toolbar-search/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.toolbarSearch,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.data-toolbar.view-change\",\n        schemaRef: \"monkeys-design://intent/data-toolbar-view-change/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.toolbarViewChange,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.data-toolbar.refresh\",\n        schemaRef: \"monkeys-design://intent/data-toolbar-refresh/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.toolbarRefresh,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.data-toolbar.add-row\",\n        schemaRef: \"monkeys-design://intent/data-toolbar-add-row/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.toolbarAddRow,\n        allowedCommandKinds: [\"domain-command\"],\n      },\n      {\n        name: \"capability.data-toolbar.command\",\n        schemaRef: \"monkeys-design://intent/data-toolbar-command/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.toolbarCommand,\n        allowedCommandKinds: [\"domain-command\"],\n      },\n      {\n        name: \"capability.data-toolbar.filter-change\",\n        schemaRef: \"monkeys-design://intent/data-toolbar-filter-change/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.toolbarFilterChange,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.data-toolbar.gallery-settings-change\",\n        schemaRef:\n          \"monkeys-design://intent/data-toolbar-gallery-settings-change/v1\",\n        schemaDocument:\n          DATA_CAPABILITY_INTENT_SCHEMAS.toolbarGallerySettingsChange,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.data-toolbar.row-height-change\",\n        schemaRef: \"monkeys-design://intent/data-toolbar-row-height-change/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.toolbarRowHeightChange,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.data-toolbar.column-configuration-change\",\n        schemaRef:\n          \"monkeys-design://intent/data-toolbar-column-configuration-change/v1\",\n        schemaDocument:\n          DATA_CAPABILITY_INTENT_SCHEMAS.toolbarColumnConfigurationChange,\n        allowedCommandKinds: [\"domain-command\"],\n      },\n      {\n        name: \"capability.data-toolbar.trend-matrix-configuration-change\",\n        schemaRef:\n          \"monkeys-design://intent/data-toolbar-trend-matrix-configuration-change/v1\",\n        schemaDocument:\n          DATA_CAPABILITY_INTENT_SCHEMAS.toolbarTrendMatrixConfigurationChange,\n        allowedCommandKinds: [\"domain-command\"],\n      },\n    ],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\"],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.ontologyTable,\n    version: \"31\",\n    revision: 31,\n    schemaRevision: 3,\n    sideEffects: [\"clipboard\"],\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.ontologyTable,\n    kind: \"view\",\n    category: \"data-view\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.ontologyTable.label,\n    descriptionKey:\n      DESIGN_CAPABILITY_I18N_KEYS.catalog.ontologyTable.description,\n    authoringLabel: i18n(\"Ontology table\", \"本体表格\"),\n    authoringDescription: i18n(\n      \"Present governed Ontology records in a sortable, selectable table.\",\n      \"以可排序、可选择的表格展示受治理的本体记录。\",\n    ),\n    inputPort: \"ontologyView\",\n    schemaRef: ONTOLOGY_TABLE_SCHEMA,\n    schemaDocument: ONTOLOGY_TABLE_RENDER_MODEL_SCHEMA,\n    compatibility: [\n      {\n        inputPort: \"ontologyView\",\n        schemaRef: ONTOLOGY_TABLE_SCHEMA,\n        mode: \"view\",\n      },\n    ],\n    slots: [\"header\", \"footer\"],\n    outputPorts: [\n      {\n        name: \"capability.ontology-table.activate\",\n        schemaRef: \"monkeys-design://intent/ontology-table-activate/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.tableActivate,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.ontology-table.selection-change\",\n        schemaRef: \"monkeys-design://intent/ontology-table-selection-change/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.tableSelection,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.ontology-table.sort\",\n        schemaRef: \"monkeys-design://intent/ontology-table-sort/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.tableSort,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.ontology-table.load-more\",\n        schemaRef: \"monkeys-design://intent/ontology-table-load-more/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.tableLoadMore,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.ontology-table.page-size-change\",\n        schemaRef: \"monkeys-design://intent/collection-page-size-change/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.collectionPageSizeChange,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.ontology-table.page-change\",\n        schemaRef: \"monkeys-design://intent/pagination-page-change/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.paginationPageChange,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.ontology-table.cell-intent\",\n        schemaRef: \"monkeys-design://intent/ontology-table-cell/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.tableCellIntent,\n        allowedCommandKinds: [\"query-intent\", \"domain-command\"],\n      },\n      {\n        name: \"capability.ontology-table.row-action\",\n        schemaRef: \"monkeys-design://intent/ontology-table-row-action/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.tableRowAction,\n        allowedCommandKinds: [\"query-intent\", \"domain-command\"],\n      },\n      {\n        name: \"capability.ontology-table.delete\",\n        schemaRef: \"monkeys-design://intent/ontology-table-delete/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.tableDelete,\n        allowedCommandKinds: [\"domain-command\"],\n      },\n      {\n        name: \"capability.ontology-table.column-action\",\n        schemaRef: \"monkeys-design://intent/ontology-table-column-action/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.tableColumnAction,\n        allowedCommandKinds: [\"query-intent\", \"domain-command\"],\n      },\n    ],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\"],\n    virtualized: true,\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.filePicker, rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.filePicker,\n    version: '2',\n    revision: 2,\n    authoringRevision: 2,\n    schemaRevision: 2,\n    kind: 'view', category: 'data-editor', labelKey: 'monkeys.design.capability.filePicker.label', descriptionKey: 'monkeys.design.capability.filePicker.description',\n    authoringLabel: i18n('File picker', '文件选择器'), authoringDescription: i18n('Select a local file for a governed action.', '选择本地文件以执行受治理操作。'),\n    inputPort: 'filePicker', slots: [], schemaRef: FILE_PICKER_SCHEMA, schemaDocument: FILE_PICKER_RENDER_MODEL_SCHEMA,\n    outputPorts: [\n      { name: 'capability.file-picker.select', schemaRef: 'monkeys-design://intent/file-picker-select/v1', schemaDocument: FILE_PICKER_SELECT_INTENT_SCHEMA, allowedCommandKinds: ['query-intent'] },\n      { name: 'capability.file-picker.cancel', schemaRef: 'monkeys-design://intent/file-picker-cancel/v1', schemaDocument: FILE_PICKER_CANCEL_INTENT_SCHEMA, allowedCommandKinds: ['query-intent'] },\n    ], supportedPageTypes: ['page', 'view', 'workspace'], supportedSurfaces: ['page', 'view', 'workspace', 'overlay'],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.numericSeries,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.numericSeries,\n    kind: \"view\", category: \"data-view\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.numericSeries.label,\n    descriptionKey: DESIGN_CAPABILITY_I18N_KEYS.numericSeries.description,\n    authoringLabel: i18n(\"Numeric series\", \"数值序列\"),\n    authoringDescription: i18n(\"Inspect numeric observations with range zoom and expansion.\", \"查看数值观测，缩放范围并放大图表。\"),\n    inputPort: \"series\",\n    slots: [],\n    schemaRef: NUMERIC_SERIES_SCHEMA,\n    schemaDocument: NUMERIC_SERIES_RENDER_MODEL_SCHEMA,\n    outputPorts: [\n      { name: \"capability.numeric-series.range-change\", schemaRef: \"monkeys-design://intent/numeric-series-range/v1\", schemaDocument: NUMERIC_SERIES_RANGE_INTENT_SCHEMA, allowedCommandKinds: [\"query-intent\"] },\n      { name: \"capability.numeric-series.expand\", schemaRef: \"monkeys-design://intent/numeric-series-expand/v1\", schemaDocument: NUMERIC_SERIES_EXPAND_INTENT_SCHEMA, allowedCommandKinds: [\"query-intent\"] },\n    ],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\", \"overlay\"],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.ontologyTrendMatrix,\n    version: \"7\",\n    revision: 7,\n    authoringRevision: 7,\n    schemaRevision: 3,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.ontologyTrendMatrix,\n    kind: \"view\",\n    category: \"data-view\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.ontologyTrendMatrix.label,\n    descriptionKey:\n      DESIGN_CAPABILITY_I18N_KEYS.catalog.ontologyTrendMatrix.description,\n    authoringLabel: i18n(\"Ontology trend matrix\", \"本体趋势矩阵\"),\n    authoringDescription: i18n(\n      \"Compare bounded Ontology trend rows and columns with governed cell selection.\",\n      \"通过受治理的单元格选择，对比有界的本体趋势行列。\",\n    ),\n    inputPort: \"ontologyView\",\n    schemaRef: ONTOLOGY_TREND_MATRIX_SCHEMA,\n    schemaDocument: ONTOLOGY_TREND_MATRIX_RENDER_MODEL_SCHEMA,\n    compatibility: [\n      {\n        inputPort: \"ontologyView\",\n        schemaRef: ONTOLOGY_TREND_MATRIX_SCHEMA,\n        mode: \"view\",\n      },\n    ],\n    slots: [\"header\", \"footer\"],\n    propertySchema: {\n      type: \"object\",\n      additionalProperties: false,\n      properties: {\n        presentation: {\n          type: \"object\",\n          additionalProperties: false,\n          required: [\"kind\"],\n          properties: {\n            kind: { const: \"legacy-data-explorer\" },\n            loadingLabelKey: { type: \"string\", minLength: 1 },\n            emptyLabelKey: { type: \"string\", minLength: 1 },\n            errorLabelKey: { type: \"string\", minLength: 1 },\n          },\n        },\n      },\n    },\n    uiSchema: { order: [\"presentation\"] },\n    outputPorts: [\n      {\n        name: \"capability.ontology-trend-matrix.select\",\n        schemaRef: \"monkeys-design://intent/ontology-trend-matrix-select/v1\",\n        schemaDocument: ONTOLOGY_TREND_MATRIX_SELECT_INTENT_SCHEMA,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.ontology-trend-matrix.page-size-change\",\n        schemaRef: \"monkeys-design://intent/collection-page-size-change/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.collectionPageSizeChange,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n    ],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\"],\n    virtualized: true,\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.dataContextBar,\n    version: \"9\",\n    revision: 9,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.dataContextBar,\n    kind: \"view\",\n    category: \"data-view\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.dataContextBar.label,\n    descriptionKey:\n      DESIGN_CAPABILITY_I18N_KEYS.catalog.dataContextBar.description,\n    authoringLabel: i18n(\n      \"Data filter and drilldown context\",\n      \"数据筛选与钻取上下文\",\n    ),\n    authoringDescription: i18n(\n      \"Show safe active query context and emit governed clear or change intents.\",\n      \"展示安全的当前查询上下文，并发出受治理的清除或变更意图。\",\n    ),\n    inputPort: \"controls\",\n    schemaRef: DATA_CONTEXT_BAR_SCHEMA,\n    schemaDocument: DATA_CONTEXT_BAR_RENDER_MODEL_SCHEMA,\n    slots: [\"leading\", \"content\", \"actions\"],\n    outputPorts: [\n      {\n        name: \"capability.data-context-bar.clear\",\n        schemaRef: \"monkeys-design://intent/data-context-bar-clear/v1\",\n        schemaDocument: DATA_CONTEXT_BAR_CLEAR_INTENT_SCHEMA,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.data-context-bar.change\",\n        schemaRef: \"monkeys-design://intent/data-context-bar-change/v1\",\n        schemaDocument: DATA_CONTEXT_BAR_CHANGE_INTENT_SCHEMA,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.data-context-bar.refresh\",\n        schemaRef: \"monkeys-design://intent/data-context-bar-refresh/v1\",\n        schemaDocument: DATA_CONTEXT_BAR_REFRESH_INTENT_SCHEMA,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n    ],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\"],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.cardGrid,\n    version: \"11\",\n    revision: 11,\n    schemaRevision: 2,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.cardGrid,\n    kind: \"view\",\n    category: \"data-view\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.cardGrid.label,\n    descriptionKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.cardGrid.description,\n    authoringLabel: i18n(\"Card grid\", \"卡片网格\"),\n    authoringDescription: i18n(\n      \"Present governed Ontology records as a selectable card grid.\",\n      \"将受治理的本体记录展示为可选择的卡片网格。\",\n    ),\n    inputPort: \"ontologyView\",\n    schemaRef: CARD_GRID_SCHEMA,\n    schemaDocument: CARD_GRID_RENDER_MODEL_SCHEMA,\n    compatibility: [\n      {\n        inputPort: \"ontologyView\",\n        schemaRef: CARD_GRID_SCHEMA,\n        mode: \"view\",\n      },\n    ],\n    slots: [\"header\", \"footer\"],\n    outputPorts: [\n      {\n        name: \"capability.card-grid.activate\",\n        schemaRef: \"monkeys-design://intent/card-grid-activate/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.cardActivate,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.card-grid.selection-change\",\n        schemaRef: \"monkeys-design://intent/card-grid-selection-change/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.cardSelection,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.card-grid.row-action\",\n        schemaRef: \"monkeys-design://intent/card-grid-row-action/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.cardRowAction,\n        allowedCommandKinds: [\"query-intent\", \"domain-command\"],\n      },\n      {\n        name: \"capability.card-grid.delete\",\n        schemaRef: \"monkeys-design://intent/card-grid-delete/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.cardDelete,\n        allowedCommandKinds: [\"domain-command\"],\n      },\n      {\n        name: \"capability.card-grid.load-more\",\n        schemaRef: \"monkeys-design://intent/card-grid-load-more/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.cardLoadMore,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.card-grid.page-size-change\",\n        schemaRef: \"monkeys-design://intent/collection-page-size-change/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.collectionPageSizeChange,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n    ],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\"],\n    virtualized: true,\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.gallery,\n    version: \"14\",\n    revision: 14,\n    schemaRevision: 2,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.gallery,\n    kind: \"view\",\n    category: \"data-view\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.gallery.label,\n    descriptionKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.gallery.description,\n    authoringLabel: i18n(\"Gallery\", \"画廊\"),\n    authoringDescription: i18n(\n      \"Present a paginated Ontology view as a responsive gallery.\",\n      \"将分页 Ontology 视图展示为响应式画廊。\",\n    ),\n    inputPort: \"ontologyView\",\n    schemaRef: GALLERY_SCHEMA,\n    schemaDocument: GALLERY_RENDER_MODEL_SCHEMA,\n    compatibility: [\n      {\n        inputPort: \"ontologyView\",\n        schemaRef: GALLERY_SCHEMA,\n        mode: \"view\",\n      },\n    ],\n    slots: [\"header\", \"footer\"],\n    outputPorts: [\n      {\n        name: \"capability.gallery.row-action\",\n        schemaRef: \"monkeys-design://intent/gallery-row-action/v1\",\n        schemaDocument: jsonSchema(\"monkeys-design://intent/gallery-row-action/v1\", {\n          type: \"object\", additionalProperties: false, required: [\"itemId\", \"actionId\"],\n          properties: { context: { type: \"object\" }, itemId: { type: \"string\", minLength: 1 }, actionId: { type: \"string\", minLength: 1 }, payload: { type: \"object\" } },\n        }),\n        allowedCommandKinds: [\"domain-command\"],\n      },\n      {\n        name: \"capability.gallery.activate\",\n        schemaRef: \"monkeys-design://intent/gallery-activate/v1\",\n        schemaDocument: GALLERY_ACTIVATE_INTENT_SCHEMA,\n        allowedCommandKinds: [\"domain-command\"],\n      },\n      {\n        name: \"capability.gallery.selection-change\",\n        schemaRef: \"monkeys-design://intent/gallery-selection-change/v1\",\n        schemaDocument: GALLERY_SELECTION_CHANGE_INTENT_SCHEMA,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.gallery.load-more\",\n        schemaRef: \"monkeys-design://intent/gallery-load-more/v1\",\n        schemaDocument: GALLERY_LOAD_MORE_INTENT_SCHEMA,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.gallery.page-size-change\",\n        schemaRef: \"monkeys-design://intent/collection-page-size-change/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.collectionPageSizeChange,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n    ],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\"],\n    virtualized: true,\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.pagination,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.pagination,\n    kind: \"view\",\n    category: \"data-view\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.pagination.label,\n    descriptionKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.pagination.description,\n    authoringLabel: i18n(\"Pagination\", \"分页\"),\n    authoringDescription: i18n(\n      \"Navigate governed page or cursor pagination without owning data fetching.\",\n      \"导航受治理的页码或游标分页，但不拥有数据获取。\",\n    ),\n    inputPort: \"pageInfo\",\n    schemaRef: PAGINATION_SCHEMA,\n    schemaDocument: PAGINATION_RENDER_MODEL_SCHEMA,\n    slots: [],\n    outputPorts: [\n      {\n        name: \"capability.pagination.page-change\",\n        schemaRef: \"monkeys-design://intent/pagination-page-change/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.paginationPageChange,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.pagination.load-more\",\n        schemaRef: \"monkeys-design://intent/pagination-load-more/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.paginationLoadMore,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n    ],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\"],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.recordDetail,\n    version: \"19\",\n    revision: 19,\n    schemaRevision: 4,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.recordDetail,\n    kind: \"view\",\n    category: \"data-view\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.recordDetail.label,\n    descriptionKey:\n      DESIGN_CAPABILITY_I18N_KEYS.catalog.recordDetail.description,\n    authoringLabel: i18n(\"Record detail\", \"记录详情\"),\n    authoringDescription: i18n(\n      \"Display typed Ontology record fields with an optional governed edit intent.\",\n      \"展示类型化本体记录字段，并可发出受治理的编辑意图。\",\n    ),\n    inputPort: \"ontologyRecord\",\n    schemaRef: RECORD_DETAIL_SCHEMA,\n    schemaDocument: RECORD_DETAIL_RENDER_MODEL_SCHEMA,\n    slots: [\"header\", \"footer\"],\n    sideEffects: [\"clipboard\"],\n    outputPorts: [\n      {\n        name: \"capability.record-detail.viewed\",\n        schemaRef: \"monkeys-design://intent/record-detail-viewed/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.recordViewed,\n        allowedCommandKinds: [\"domain-command\"],\n      },\n      {\n        name: \"capability.record-detail.edit\",\n        schemaRef: \"monkeys-design://intent/record-detail-edit/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.recordEdit,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.record-detail.close\",\n        schemaRef: \"monkeys-design://intent/record-detail-close/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.recordClose,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.record-detail.navigate\",\n        schemaRef: \"monkeys-design://intent/record-detail-navigate/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.recordNavigate,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.record-detail.action\",\n        schemaRef: \"monkeys-design://intent/record-detail-action/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.recordAction,\n        allowedCommandKinds: [\"query-intent\", \"domain-command\"],\n      },\n      {\n        name: \"capability.record-detail.preview-download\",\n        schemaRef: \"monkeys-design://intent/record-detail-preview-download/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.recordPreviewDownload,\n        allowedCommandKinds: [\"domain-command\"],\n      },\n    ],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\"],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.recordEditor,\n    version: \"17\",\n    revision: 17,\n    authoringRevision: 17,\n    schemaRevision: 16,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.recordEditor,\n    kind: \"view\",\n    category: \"data-editor\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.recordEditor.label,\n    descriptionKey:\n      DESIGN_CAPABILITY_I18N_KEYS.catalog.recordEditor.description,\n    authoringLabel: i18n(\"Record editor\", \"记录编辑器\"),\n    authoringDescription: i18n(\n      \"Edit host-owned typed record state and emit governed change, cancel, and submit intents.\",\n      \"编辑由宿主拥有的类型化记录状态，并发出受治理的变更、取消和提交意图。\",\n    ),\n    inputPort: \"ontologyEditor\",\n    schemaRef: RECORD_EDITOR_SCHEMA,\n    schemaDocument: RECORD_EDITOR_RENDER_MODEL_SCHEMA,\n    slots: [\"header\", \"footer\"],\n    outputPorts: [\n      { name: 'capability.record-editor.options-request', schemaRef: 'monkeys-design://intent/record-editor-options-request/v1', schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.editorOptionsRequest, allowedCommandKinds: ['query-intent'] },\n      { name: \"capability.record-editor.auxiliary-submit\", schemaRef: \"monkeys-design://intent/record-editor-auxiliary-submit/v1\", schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.editorAuxiliarySubmit, allowedCommandKinds: [\"domain-command\"] },\n      {\n        name: 'capability.record-editor.pick', schemaRef: 'monkeys-design://intent/record-editor-pick/v1', schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.editorPick, allowedCommandKinds: ['query-intent'],\n      },\n      {\n        name: 'capability.record-editor.draftPatchRejected', schemaRef: 'monkeys-design://intent/record-editor-draft-patch-rejected/v1', schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.editorDraftPatchRejected, allowedCommandKinds: ['query-intent'],\n      },\n      {\n        name: \"capability.record-editor.change\",\n        schemaRef: \"monkeys-design://intent/record-editor-change/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.editorChange,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.record-editor.cancel\",\n        schemaRef: \"monkeys-design://intent/record-editor-cancel/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.editorCancel,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.record-editor.submit\",\n        schemaRef: \"monkeys-design://intent/record-editor-submit/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.editorSubmit,\n        allowedCommandKinds: [\"domain-command\"],\n      },\n      {\n        name: \"capability.record-editor.options-load-more\",\n        schemaRef: \"monkeys-design://intent/record-editor-options-load-more/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.editorOptionsLoadMore,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n    ],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\"],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.recordHistory,\n    version: \"17\",\n    revision: 17,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.recordHistory,\n    kind: \"view\",\n    category: \"data-view\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.recordHistory.label,\n    descriptionKey:\n      DESIGN_CAPABILITY_I18N_KEYS.catalog.recordHistory.description,\n    authoringLabel: i18n(\"Record history and diff\", \"记录历史与差异\"),\n    authoringDescription: i18n(\n      \"Review exact record commits, compare a selected target, enter a reason, and emit a governed rollback intent.\",\n      \"查看精确记录提交、比较选中目标、填写原因，并发出受治理的回滚意图。\",\n    ),\n    inputPort: \"recordHistory\",\n    schemaRef: RECORD_HISTORY_SCHEMA,\n    schemaDocument: RECORD_HISTORY_RENDER_MODEL_SCHEMA,\n    slots: [\"header\", \"footer\"],\n    sideEffects: [\"clipboard\"],\n    outputPorts: [\n      {\n        name: \"capability.record-history.close\",\n        schemaRef: \"monkeys-design://intent/record-history-close/v1\",\n        schemaDocument: RECORD_HISTORY_INTENT_SCHEMAS.close,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.record-history.load-more\",\n        schemaRef: \"monkeys-design://intent/record-history-load-more/v1\",\n        schemaDocument: RECORD_HISTORY_INTENT_SCHEMAS.loadMore,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.record-history.select\",\n        schemaRef: \"monkeys-design://intent/record-history-select/v1\",\n        schemaDocument: RECORD_HISTORY_INTENT_SCHEMAS.select,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.record-history.reason-change\",\n        schemaRef: \"monkeys-design://intent/record-history-reason-change/v1\",\n        schemaDocument: RECORD_HISTORY_INTENT_SCHEMAS.reasonChange,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.record-history.message-edit\",\n        schemaRef: \"monkeys-design://intent/record-history-message-edit/v1\",\n        schemaDocument: RECORD_HISTORY_INTENT_SCHEMAS.messageEdit,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.record-history.message-change\",\n        schemaRef: \"monkeys-design://intent/record-history-message-change/v1\",\n        schemaDocument: RECORD_HISTORY_INTENT_SCHEMAS.messageChange,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.record-history.message-cancel\",\n        schemaRef: \"monkeys-design://intent/record-history-message-cancel/v1\",\n        schemaDocument: RECORD_HISTORY_INTENT_SCHEMAS.messageCancel,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.record-history.message-update\",\n        schemaRef: \"monkeys-design://intent/record-history-message-update/v1\",\n        schemaDocument: RECORD_HISTORY_INTENT_SCHEMAS.messageUpdate,\n        allowedCommandKinds: [\"domain-command\"],\n      },\n      {\n        name: \"capability.record-history.rollback\",\n        schemaRef: \"monkeys-design://intent/record-history-rollback/v1\",\n        schemaDocument: RECORD_HISTORY_INTENT_SCHEMAS.rollback,\n        allowedCommandKinds: [\"domain-command\"],\n      },\n      {\n        name: \"capability.record-history.delete\",\n        schemaRef: \"monkeys-design://intent/record-history-delete/v1\",\n        schemaDocument: RECORD_HISTORY_INTENT_SCHEMAS.delete,\n        allowedCommandKinds: [\"domain-command\"],\n      },\n    ],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\"],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.ontologyManagement,\n    version: \"7\",\n    revision: 7,\n    authoringRevision: 7,\n    schemaRevision: 3,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.ontologyManagement,\n    kind: \"view\",\n    category: \"data-editor\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.ontologyManagement.label,\n    descriptionKey:\n      DESIGN_CAPABILITY_I18N_KEYS.catalog.ontologyManagement.description,\n    authoringLabel: i18n(\n      \"Ontology and view management actions\",\n      \"本体与视图管理操作\",\n    ),\n    authoringDescription: i18n(\n      \"Submit governed Ontology, View, Feature Column, managed-file import, and export commands with exact revision fences without owning resource APIs.\",\n      \"提交带精确版本栅栏的受治理本体、视图、特征列、托管文件导入与导出命令，但不持有业务 API。\",\n    ),\n    inputPort: \"managementActions\",\n    schemaRef: ONTOLOGY_MANAGEMENT_SCHEMA,\n    schemaDocument: ONTOLOGY_MANAGEMENT_RENDER_MODEL_SCHEMA,\n    slots: [\"header\", \"footer\"],\n    outputPorts: [...ONTOLOGY_MANAGEMENT_OUTPUT_PORTS],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\"],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.featureColumnManager,\n    version: \"4\",\n    revision: 4,\n    authoringRevision: 4,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.featureColumnManager,\n    kind: \"view\",\n    category: \"data-editor\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.featureColumnManager.label,\n    descriptionKey:\n      DESIGN_CAPABILITY_I18N_KEYS.catalog.featureColumnManager.description,\n    authoringLabel: i18n(\"Feature column manager\", \"特征列管理器\"),\n    authoringDescription: i18n(\n      \"Manage versioned Feature Column definitions and View attachments through governed intents.\",\n      \"通过受治理意图管理带版本的特征列定义与视图挂载。\",\n    ),\n    inputPort: \"catalog\",\n    schemaRef: FEATURE_COLUMN_MANAGER_SCHEMA,\n    schemaDocument: FEATURE_COLUMN_MANAGER_RENDER_MODEL_SCHEMA,\n    slots: [],\n    outputPorts: [...FEATURE_COLUMN_MANAGER_OUTPUT_PORTS],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\"],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.sectionHeader,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.sectionHeader,\n    kind: \"view\",\n    category: \"content\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.sectionHeader.label,\n    descriptionKey:\n      DESIGN_CAPABILITY_I18N_KEYS.catalog.sectionHeader.description,\n    authoringLabel: i18n(\"Section header\", \"分区标题\"),\n    authoringDescription: i18n(\n      \"Introduce a page section with localized eyebrow, title, description, and governed actions.\",\n      \"使用本地化眉题、标题、说明和受治理操作引导页面分区。\",\n    ),\n    inputPort: \"content\",\n    schemaRef: \"monkeys-design://render-model/section-header/v1\",\n    schemaDocument: SECTION_HEADER_RENDER_MODEL_SCHEMA,\n    slots: [\"actions\"],\n    propertySchema: {\n      type: \"object\",\n      additionalProperties: false,\n      properties: SECTION_HEADER_RENDER_MODEL_SCHEMA.properties,\n    },\n    uiSchema: {\n      order: [\n        \"eyebrow\",\n        \"eyebrowKey\",\n        \"title\",\n        \"titleKey\",\n        \"description\",\n        \"descriptionKey\",\n      ],\n    },\n    propertyFields: [\n      {\n        path: \"eyebrow\",\n        label: i18n(\"Eyebrow\", \"眉题\"),\n        control: \"text\",\n        required: false,\n        advanced: false,\n      },\n      {\n        path: \"eyebrowKey\",\n        label: i18n(\"Eyebrow i18n key\", \"眉题 i18n 键\"),\n        control: \"i18n-key\",\n        required: false,\n        advanced: true,\n      },\n      ...LOCALIZED_COPY_PROPERTY_FIELDS,\n    ],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\", \"preview\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\"],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.notice,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.notice,\n    kind: \"view\",\n    category: \"content\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.notice.label,\n    descriptionKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.notice.description,\n    authoringLabel: i18n(\"Notice\", \"提示\"),\n    authoringDescription: i18n(\n      \"Present a localized semantic notice with optional governed icon and action slots.\",\n      \"展示本地化语义提示，并可装配受治理的图标和操作槽。\",\n    ),\n    inputPort: \"content\",\n    schemaRef: \"monkeys-design://render-model/notice/v1\",\n    schemaDocument: NOTICE_RENDER_MODEL_SCHEMA,\n    slots: [\"icon\", \"actions\"],\n    propertySchema: {\n      type: \"object\",\n      additionalProperties: false,\n      properties: NOTICE_RENDER_MODEL_SCHEMA.properties,\n    },\n    uiSchema: {\n      order: [\"tone\", \"title\", \"titleKey\", \"description\", \"descriptionKey\"],\n    },\n    propertyFields: [\n      {\n        path: \"tone\",\n        label: i18n(\"Tone\", \"语气\"),\n        control: \"select\",\n        required: false,\n        advanced: false,\n      },\n      ...LOCALIZED_COPY_PROPERTY_FIELDS,\n    ],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\", \"preview\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\"],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.descriptionList,\n    version: \"3\",\n    revision: 3,\n    schemaRevision: 3,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.descriptionList,\n    kind: \"view\",\n    category: \"content\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.descriptionList.label,\n    descriptionKey:\n      DESIGN_CAPABILITY_I18N_KEYS.catalog.descriptionList.description,\n    authoringLabel: i18n(\"Description list\", \"描述列表\"),\n    authoringDescription: i18n(\n      \"Display localized term and value pairs in an accessible description list.\",\n      \"以无障碍描述列表展示本地化术语和值。\",\n    ),\n    inputPort: \"content\",\n    schemaRef: \"monkeys-design://render-model/description-list/v1\",\n    schemaDocument: DESCRIPTION_LIST_RENDER_MODEL_SCHEMA,\n    slots: [\"footer\"],\n    propertySchema: {\n      type: \"object\",\n      additionalProperties: false,\n      properties: DESCRIPTION_LIST_RENDER_MODEL_SCHEMA.properties,\n    },\n    uiSchema: { order: [\"label\", \"labelKey\", \"columns\", \"items\"] },\n    propertyFields: [\n      {\n        path: \"label\",\n        label: i18n(\"Accessible label\", \"无障碍标签\"),\n        control: \"text\",\n        required: false,\n        advanced: false,\n      },\n      {\n        path: \"labelKey\",\n        label: i18n(\"Accessible label i18n key\", \"无障碍标签 i18n 键\"),\n        control: \"i18n-key\",\n        required: false,\n        advanced: true,\n      },\n      {\n        path: \"columns\",\n        label: i18n(\"Columns\", \"列数\"),\n        control: \"select\",\n        required: false,\n        advanced: false,\n      },\n      {\n        path: \"items\",\n        label: i18n(\"Items\", \"条目\"),\n        control: \"json\",\n        required: true,\n        advanced: false,\n      },\n    ],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\", \"preview\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\"],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.contentPanel,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.contentPanel,\n    kind: \"view\",\n    category: \"content\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.contentPanel.label,\n    descriptionKey:\n      DESIGN_CAPABILITY_I18N_KEYS.catalog.contentPanel.description,\n    authoringLabel: i18n(\"Content panel\", \"内容面板\"),\n    authoringDescription: i18n(\n      \"Group localized content with explicit media, body, and footer slots.\",\n      \"使用明确的媒体、正文和页脚槽组织本地化内容。\",\n    ),\n    inputPort: \"content\",\n    schemaRef: \"monkeys-design://render-model/content-panel/v1\",\n    schemaDocument: CONTENT_PANEL_RENDER_MODEL_SCHEMA,\n    slots: [\"media\", \"body\", \"footer\"],\n    propertySchema: {\n      type: \"object\",\n      additionalProperties: false,\n      properties: CONTENT_PANEL_RENDER_MODEL_SCHEMA.properties,\n    },\n    uiSchema: {\n      order: [\n        \"title\",\n        \"titleKey\",\n        \"description\",\n        \"descriptionKey\",\n        \"density\",\n        \"selected\",\n        \"disabled\",\n      ],\n    },\n    propertyFields: [\n      ...LOCALIZED_COPY_PROPERTY_FIELDS,\n      {\n        path: \"density\",\n        label: i18n(\"Density\", \"密度\"),\n        control: \"select\",\n        required: false,\n        advanced: false,\n      },\n      {\n        path: \"selected\",\n        label: i18n(\"Selected\", \"已选中\"),\n        control: \"switch\",\n        required: false,\n        advanced: true,\n      },\n      {\n        path: \"disabled\",\n        label: i18n(\"Disabled\", \"已禁用\"),\n        control: \"switch\",\n        required: false,\n        advanced: true,\n      },\n    ],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\", \"preview\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\"],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.toolbar,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.toolbar,\n    kind: \"view\",\n    category: \"content\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.toolbar.label,\n    descriptionKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.toolbar.description,\n    authoringLabel: i18n(\"Toolbar\", \"工具栏\"),\n    authoringDescription: i18n(\n      \"Arrange localized context with governed leading, content, and action slots.\",\n      \"组织本地化上下文以及受治理的前置、内容和操作槽。\",\n    ),\n    inputPort: \"content\",\n    schemaRef: \"monkeys-design://render-model/toolbar/v1\",\n    schemaDocument: TOOLBAR_RENDER_MODEL_SCHEMA,\n    slots: [\"leading\", \"content\", \"actions\"],\n    propertySchema: {\n      type: \"object\",\n      additionalProperties: false,\n      properties: TOOLBAR_RENDER_MODEL_SCHEMA.properties,\n    },\n    uiSchema: { order: [\"title\", \"titleKey\", \"description\", \"descriptionKey\"] },\n    propertyFields: [...LOCALIZED_COPY_PROPERTY_FIELDS],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\", \"preview\"],\n    supportedSurfaces: [\"page\", \"view\", \"workspace\"],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.status,\n    version: \"7\",\n    revision: 7,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.status,\n    kind: \"view\",\n    category: \"status\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.status.label,\n    descriptionKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.status.description,\n    authoringLabel: i18n(\"Status\", \"状态\"),\n    authoringDescription: i18n(\n      \"Display governed loading, empty, forbidden, and error states.\",\n      \"展示受治理的加载、空、无权限和错误状态。\",\n    ),\n    inputPort: \"status\",\n    schemaRef: \"monkeys-design://render-model/status/v2\",\n    schemaDocument: STATUS_RENDER_MODEL_SCHEMA,\n    slots: [\"actions\"],\n    supportedPageTypes: [\"page\", \"view\", \"overlay\", \"preview\"],\n    supportedSurfaces: [\"page\", \"view\", \"overlay\"],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.professionalLeaf,\n    version: \"2\",\n    revision: 2,\n    authoringRevision: 3,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.professionalLeaf,\n    kind: \"professional-provider\",\n    category: \"professional\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.professionalLeaf.label,\n    descriptionKey:\n      DESIGN_CAPABILITY_I18N_KEYS.catalog.professionalLeaf.description,\n    authoringLabel: i18n(\"Professional component\", \"专业组件\"),\n    authoringDescription: i18n(\n      \"Embed a governed specialist runtime as a bounded page component.\",\n      \"将受治理的专业运行时作为有边界的页面组件嵌入。\",\n    ),\n    inputPort: \"ontologyView\",\n    schemaRef: PROFESSIONAL_SCHEMA,\n    schemaDocument: PROFESSIONAL_RENDER_MODEL_SCHEMA,\n    compatibility: [\n      {\n        inputPort: \"ontologyView\",\n        schemaRef: PROFESSIONAL_SCHEMA,\n        mode: \"view\",\n      },\n    ],\n    outputPorts: [\n      {\n        name: \"capability.professional-leaf.select\",\n        schemaRef: \"monkeys-design://intent/professional-leaf-select/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.professionalSelect,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n      {\n        name: \"capability.professional-leaf.dismiss\",\n        schemaRef: \"monkeys-design://intent/professional-leaf-dismiss/v1\",\n        schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.professionalDismiss,\n        allowedCommandKinds: [\"query-intent\"],\n      },\n    ],\n    slots: [\"toolbar\", \"footer\"],\n    loading: \"on-activation\",\n    sideEffects: [\"network\", \"worker\", \"websocket\"],\n    supportedPageTypes: [\n      \"design-board\",\n      \"process\",\n      \"agent\",\n      \"enhanced\",\n      \"global-design-board\",\n    ],\n    supportedSurfaces: [\"page\", \"workspace\", \"overlay\"],\n    frameOwner: \"provider\",\n    editorEligible: false,\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.professionalExtensionLeaf,\n    version: \"1\",\n    revision: 1,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.professionalExtensionLeaf,\n    kind: \"professional-provider\",\n    category: \"professional\",\n    labelKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.professionalLeaf.label,\n    descriptionKey: DESIGN_CAPABILITY_I18N_KEYS.catalog.professionalLeaf.description,\n    authoringLabel: i18n(\"Professional extension panel\", \"专业扩展面板\"),\n    authoringDescription: i18n(\"Embed one governed extension surface as a bounded page panel.\", \"将一个受治理的扩展界面作为有边界的页面面板嵌入。\"),\n    inputPort: \"ontologyView\",\n    schemaRef: PROFESSIONAL_SCHEMA,\n    schemaDocument: PROFESSIONAL_RENDER_MODEL_SCHEMA,\n    compatibility: [{ inputPort: \"ontologyView\", schemaRef: PROFESSIONAL_SCHEMA, mode: \"view\" }],\n    outputPorts: [{ name: \"capability.professional-leaf.dismiss\", schemaRef: \"monkeys-design://intent/professional-leaf-dismiss/v1\", schemaDocument: DATA_CAPABILITY_INTENT_SCHEMAS.professionalDismiss, allowedCommandKinds: [\"query-intent\"] }],\n    slots: [\"toolbar\", \"footer\"],\n    loading: \"on-activation\",\n    sideEffects: [\"network\", \"worker\", \"websocket\"],\n    supportedPageTypes: [\"page\", \"view\", \"workspace\", \"preview\"],\n    supportedSurfaces: [\"page\", \"workspace\", \"overlay\"],\n    frameOwner: \"provider\",\n    editorEligible: false,\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.orderedSelection,\n    version: \"2\", revision: 2, schemaRevision: 2,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.orderedSelection,\n    kind: 'view', category: 'data-editor',\n    labelKey: 'monkeys.design.capability.orderedSelection.label', descriptionKey: 'monkeys.design.capability.orderedSelection.description',\n    authoringLabel: i18n('Ordered selection', '有序选择'), authoringDescription: i18n('Edit a bounded ordered selection without fetching candidates.', '编辑有界有序选择，候选数据由页面提供。'),\n    inputPort: 'model', schemaRef: 'monkeys-design://ordered-selection/v2', schemaDocument: jsonSchema('monkeys-design://ordered-selection/v2', ORDERED_SELECTION_MODEL_SCHEMA),\n    outputPorts: Object.entries(ORDERED_SELECTION_INTENT_SCHEMAS).map(([name, document]) => ({ name: `capability.ordered-selection.${name}`, schemaRef: `monkeys-design://ordered-selection-${name}/v1`, schemaDocument: jsonSchema(`monkeys-design://ordered-selection-${name}/v1`, document), allowedCommandKinds: ['query-intent', 'domain-command'] })),\n    slots: [], supportedPageTypes: ['page','view','workspace'], supportedSurfaces: ['page','view','workspace'],\n  }),\n  createEntry({\n    id: DESIGN_CAPABILITY_IDS.runtimeTerminal,\n    rendererKey: DESIGN_CAPABILITY_RENDERER_KEYS.runtimeTerminal,\n    kind: 'professional-provider', category: 'professional',\n    labelKey: 'monkeys.design.runtime-terminal', descriptionKey: 'monkeys.design.runtime-terminal.description',\n    authoringLabel: i18n('Terminal', '终端'), authoringDescription: i18n('Render an authorized terminal stream.', '显示已授权的终端流。'),\n    inputPort: 'terminal', schemaRef: 'monkeys-design://runtime-terminal/v1',\n    schemaDocument: jsonSchema('monkeys-design://runtime-terminal/v1', RUNTIME_TERMINAL_MODEL_SCHEMA),\n    outputPorts: [\n      { name: 'terminal.input', schemaRef: 'monkeys-design://terminal-input/v1', schemaDocument: jsonSchema('monkeys-design://terminal-input/v1', { type: 'object', additionalProperties: false, required: ['data'], properties: { data: { type: 'string', maxLength: 8192 } } }), allowedCommandKinds: ['query-intent'] },\n      { name: 'terminal.resize', schemaRef: 'monkeys-design://terminal-resize/v1', schemaDocument: jsonSchema('monkeys-design://terminal-resize/v1', { type: 'object', additionalProperties: false, required: ['columns', 'rows'], properties: { columns: { type: 'integer', minimum: 1, maximum: 1000 }, rows: { type: 'integer', minimum: 1, maximum: 1000 } } }), allowedCommandKinds: ['query-intent'] },\n      { name: 'stream.disconnect', schemaRef: 'monkeys-design://stream-disconnect/v1', schemaDocument: jsonSchema('monkeys-design://stream-disconnect/v1', { type: 'object', additionalProperties: false, properties: {} }), allowedCommandKinds: ['query-intent'] },\n    ],\n    slots: [], loading: 'on-activation', sideEffects: ['websocket'],\n    supportedPageTypes: ['page', 'view', 'workspace'], supportedSurfaces: ['page', 'view', 'workspace'], frameOwner: 'provider',\n  }),\n]);\n\nexport const NEUTRAL_DESIGN_CAPABILITY_CATALOG = compileDesignCapabilityCatalog(\n  NEUTRAL_CAPABILITY_CATALOG_ENTRIES,\n);\n\nexport const NEUTRAL_DESIGN_CAPABILITY_CATALOG_ARTIFACT =\n  compileDesignCapabilityCatalogArtifact({\n    catalog: NEUTRAL_DESIGN_CAPABILITY_CATALOG,\n  });\n\nexport { createEntry as createDesignCapabilityEntry };\n","import { type UIEvent, useEffect, useRef, useState } from 'react';\n\nimport { type BaseAppearance, BaseButton, BaseInput } from '../base';\nimport type { DesignCapabilityRendererContext } from './contracts';\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuTrigger,\n  ScrollArea,\n} from '../primitives';\nimport { Building2, Check, ChevronsUpDown, Layers3 } from 'lucide-react';\nimport { useMonkeysLocale } from '../../provider/context';\nimport { DESIGN_CAPABILITY_I18N_KEYS } from './i18n';\n\ntype Choice = { id: string; label: string; labelKey?: string; labelI18n?: Record<string, string>; count?: number };\nconst appearance: BaseAppearance = {\n  preset: 'soft',\n  density: 'default',\n  radius: 'lg',\n  border: 'subtle',\n  background: 'soft',\n};\n\nexport function ChoicePickerCapabilityRenderer({\n  model,\n  loading,\n  translate,\n  emitIntent,\n  childrenBySlot,\n}: DesignCapabilityRendererContext) {\n  const { locale: language } = useMonkeysLocale();\n  const [open, setOpen] = useState(false);\n  const search = String((model.search as { value?: string } | undefined)?.value ?? '');\n  const [draft, setDraft] = useState(search);\n  const timer = useRef<ReturnType<typeof setTimeout>>();\n  const allNodes = (model.nodes ?? []) as Choice[];\n  const label = (node: Choice) => {\n    if (node.labelKey) return translate(node.labelKey);\n    const values = node.labelI18n ?? {};\n    const baseLanguage = language.split('-')[0];\n    return String(\n      values[language] ||\n        Object.entries(values).find(([key]) => key.split('-')[0] === baseLanguage)?.[1] ||\n        values['zh-CN'] ||\n        values.zh ||\n        values['en-US'] ||\n        values.en ||\n        Object.values(values).find((value) => typeof value === 'string') ||\n        node.label,\n    ).trim();\n  };\n  const nodes = model.searchMode === 'local' && draft.trim() ? allNodes.filter(node => `${label(node)} ${node.id}`.toLocaleLowerCase(language).includes(draft.trim().toLocaleLowerCase(language))) : allNodes;\n  const selectedId = String(model.selectedNodeId ?? '');\n  const selected = allNodes.find((node) => node.id === selectedId);\n  const selectedLabel = selected ? model.showSelectedId === false ? label(selected) : `${label(selected)} · ${selectedId}` : selectedId;\n  const pagination = model.pagination as { hasMore: boolean; nextCursor: string | null; loadingMore: boolean };\n  const pending = loading || pagination.loadingMore;\n  useEffect(() => { clearTimeout(timer.current); setDraft(search); }, [search, selectedId]);\n  useEffect(() => () => clearTimeout(timer.current), []);\n  const close = () => {\n    setOpen(false);\n    clearTimeout(timer.current);\n    setDraft('');\n    if (draft || search) emitIntent('capability.choice-picker.search', { value: '' });\n  };\n  const scroll = (event: UIEvent<HTMLDivElement>) => {\n    const viewport = event.currentTarget;\n    if (\n      !pending &&\n      pagination.hasMore &&\n      pagination.nextCursor &&\n      viewport.scrollHeight - viewport.scrollTop - viewport.clientHeight <= 64\n    ) {\n      emitIntent('capability.choice-picker.load-more', { cursor: pagination.nextCursor });\n    }\n  };\n  const picker = (\n    <DropdownMenu open={open} onOpenChange={(next) => (next ? setOpen(true) : close())}>\n      <DropdownMenuTrigger asChild>\n        <BaseButton\n          appearance={{ ...appearance, background: 'plain' }}\n          tone=\"default\"\n          className=\"w-full max-w-full justify-between sm:w-[380px]\"\n          classNames={{ label: 'truncate text-left' }}\n          label={selectedLabel || translate(String(model.placeholderKey))}\n          endIcon={<ChevronsUpDown className=\"h-4 w-4 opacity-60\" />}\n        />\n      </DropdownMenuTrigger>\n      <DropdownMenuContent\n        align=\"start\"\n        className=\"w-[var(--radix-dropdown-menu-trigger-width)] p-2\"\n        onCloseAutoFocus={(event) => event.preventDefault()}\n      >\n        <div onClick={(event) => event.stopPropagation()} onKeyDown={(event) => event.stopPropagation()}>\n          <BaseInput\n            appearance={appearance}\n            placeholder={translate(String(model.searchPlaceholderKey))}\n            value={draft}\n            autoFocus\n            onChange={(event) => {\n              const value = event.target.value;\n              setDraft(value);\n              clearTimeout(timer.current);\n              timer.current = setTimeout(\n                () => emitIntent('capability.choice-picker.search', { value }),\n                value.trim() ? Number(model.searchDebounceMs ?? 250) : 0,\n              );\n            }}\n          />\n        </div>\n        {model.countLabelKey || model.statLabelKey ? <div className=\"mt-2 flex items-center justify-between text-xs text-muted-foreground\">\n          {model.countLabelKey ? <span>{translate(String(model.countLabelKey), { count: Number(model.total ?? 0) })}</span> : null}\n          {model.statLabelKey ? <span>{translate(String(model.statLabelKey))}</span> : null}\n        </div> : null}\n        <ScrollArea className=\"mt-2 h-64 rounded-md border\" onViewportScroll={scroll}>\n          <div className=\"p-1\">\n            {!pending && nodes.length === 0 ? (\n              <div className=\"px-2 py-6 text-center text-sm text-muted-foreground\">\n                {translate(String(model.emptyLabelKey))}\n              </div>\n            ) : (\n              nodes.map((node) => (\n                <button\n                  key={node.id}\n                  type=\"button\"\n                  className={`flex w-full items-start justify-between gap-2 rounded-sm px-2 py-1.5 text-left text-sm transition-colors ${node.id === selectedId ? 'bg-accent text-accent-foreground' : 'hover:bg-accent/60'}`}\n                  onClick={(event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n                    if (node.id !== selectedId) emitIntent('capability.choice-picker.select', { itemId: node.id });\n                    close();\n                  }}\n                >\n                  <div className=\"min-w-0\">\n                    <div className=\"line-clamp-1 font-medium\">{label(node)}</div>\n                    <div className=\"line-clamp-1 text-xs text-muted-foreground\">{node.id}</div>\n                  </div>\n                  <div className=\"flex shrink-0 items-center gap-2\">\n                    {typeof node.count === 'number' ? <span\n                      className=\"rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground\"\n                      title={model.statLabelKey ? translate(String(model.statLabelKey)) : undefined}\n                    >\n                      {node.count}\n                    </span> : null}\n                    {node.id === selectedId ? (\n                      <Check className=\"h-4 w-4 shrink-0\" />\n                    ) : (\n                      <span className=\"h-4 w-4 shrink-0\" />\n                    )}\n                  </div>\n                </button>\n              ))\n            )}\n            {pending ? (\n              <div className=\"px-2 py-3 text-center text-xs text-muted-foreground\">\n                {translate(String(model.loadingLabelKey))}\n              </div>\n            ) : null}\n          </div>\n        </ScrollArea>\n        {pagination.hasMore && pagination.nextCursor ? (\n          <BaseButton\n            className=\"mt-2 w-full\"\n            disabled={pending}\n            label={translate(pending ? DESIGN_CAPABILITY_I18N_KEYS.pagination.loadingMore : DESIGN_CAPABILITY_I18N_KEYS.pagination.loadMore)}\n            onClick={() => emitIntent('capability.choice-picker.load-more', { cursor: pagination.nextCursor })}\n          />\n        ) : null}\n      </DropdownMenuContent>\n    </DropdownMenu>\n  );\n  const hint = model.contextHint as\n    | { selectedLabelKey: string; emptyLabelKey: string; icon: 'layers' | 'building' }\n    | undefined;\n  if (!hint) return picker;\n  const Icon = hint.icon === 'building' ? Building2 : Layers3;\n  return (\n    <div className=\"flex min-w-0 flex-col gap-2 sm:flex-row sm:items-center\">\n      {picker}\n      {childrenBySlot.controls}\n      <div className=\"flex min-w-0 items-center gap-2 text-xs text-muted-foreground\">\n        <Icon className=\"h-4 w-4 shrink-0\" />\n        <span className=\"truncate\">\n          {translate(selectedId ? hint.selectedLabelKey : hint.emptyLabelKey, {\n            name: selected ? label(selected) : selectedId,\n          })}\n        </span>\n      </div>\n    </div>\n  );\n}\n","import { useEffect, useRef, type ReactNode } from 'react';\nimport type { JsonValue } from '@inf-monkeys-tech/monkeys';\nimport { BaseCheckbox } from '../base/BaseCheckbox';\n\nexport interface RecordEditorNullToggleProps {\n  value: JsonValue;\n  label: string;\n  checkedWhen?: 'null' | 'non-null';\n  retainSelectionOnNull?: boolean;\n  disabled: boolean;\n  resetKey: string;\n  onChange(value: JsonValue): void;\n  children: ReactNode;\n}\nconst stringIds = (value: JsonValue): value is string[] => Array.isArray(value) && value.every(id => typeof id === 'string');\n\n/** Local selection memory belongs only to this field's current draft scope. */\nexport function RecordEditorNullToggle({ value, label, checkedWhen = 'null', retainSelectionOnNull = false, disabled, resetKey, onChange, children }: RecordEditorNullToggleProps) {\n  const active = useRef(true);\n  useEffect(() => { active.current = true; return () => { active.current = false; }; }, []);\n  const memory = useRef<{ key: string; ids?: string[] }>({ key: resetKey });\n  const current = useRef({ resetKey, disabled, onChange });\n  current.current = { resetKey, disabled, onChange };\n  if (memory.current.key !== resetKey) memory.current = { key: resetKey };\n  if (!retainSelectionOnNull) memory.current.ids = undefined;\n  else if (stringIds(value)) memory.current.ids = [...value];\n  return <div>\n    <label className=\"flex items-center gap-2\">\n      <BaseCheckbox checked={checkedWhen === 'null' ? value === null : value !== null} disabled={disabled} onChange={event => {\n        if (!active.current || current.current.resetKey !== resetKey || current.current.disabled) return;\n        const nextNull = checkedWhen === 'null' ? event.currentTarget.checked : !event.currentTarget.checked;\n        const restored = retainSelectionOnNull && memory.current.ids ? [...memory.current.ids] : [];\n        current.current.onChange(nextNull ? null : restored);\n      }} />\n      <span>{label}</span>\n    </label>\n    {value === null ? null : children}\n  </div>;\n}\n","import { useEffect, useRef, useState } from 'react';\nimport type { JsonObject } from '@inf-monkeys-tech/monkeys';\nimport { BaseButton, BaseCheckbox, BaseInput } from '../base';\nimport type { CapabilityTranslate } from './contracts';\n\nexport interface RecordEditorStringSelectionProps {\n  field: JsonObject;\n  value: string[];\n  disabled: boolean;\n  id: string;\n  domId: string;\n  translate: CapabilityTranslate;\n  resolveLabel(option: JsonObject, fallback: string): string;\n  onChange(ids: string[]): void;\n}\nconst MAX_ITEMS = 10000;\nconst MAX_BYTES = 1024 * 1024;\nconst OPTION_HEIGHT = 40;\nconst HEADER_HEIGHT = 32;\nconst VIEWPORT_HEIGHT = 320;\nconst object = (value: unknown): value is JsonObject => Boolean(value) && typeof value === 'object' && !Array.isArray(value);\nconst validId = (value: unknown): value is string => typeof value === 'string' && value.trim().length > 0 && value.length <= 256 && !/[\\u0000-\\u001f\\u007f-\\u009f]/.test(value);\n\n/** Local string selection; candidate discovery and draft ownership remain outside this control. */\nexport function RecordEditorStringSelection({ field, value, disabled, id, domId, translate, resolveLabel, onChange }: RecordEditorStringSelectionProps) {\n  const [search, setSearch] = useState('');\n  const [manual, setManual] = useState('');\n  const [scrollTop, setScrollTop] = useState(0);\n  const [error, setError] = useState<string>();\n  const active = useRef(true);\n  const latest = useRef({ disabled, value, onChange }); latest.current = { disabled, value, onChange };\n  const viewport = useRef<HTMLDivElement>(null);\n  useEffect(() => { active.current = true; return () => { active.current = false; }; }, []);\n  const options = field.options === undefined ? [] : field.options;\n  if (!Array.isArray(options) || options.length > MAX_ITEMS || options.some(option => !object(option) || !validId(option.id))) throw new TypeError('Invalid bounded string selection options.');\n  const rows = options.filter(object);\n  if (value.length > MAX_ITEMS || value.some(item => !validId(item)) || new Set(value).size !== value.length || new Set(rows.map(row => row.id)).size !== rows.length) throw new TypeError('Invalid bounded string selection IDs.');\n  const checkBytes = (ids: string[]) => new TextEncoder().encode(JSON.stringify({ options: rows, value: ids })).byteLength <= MAX_BYTES;\n  if (!checkBytes(value)) throw new TypeError('String selection exceeds byte budget.');\n  const selected = new Set(value);\n  const known = new Set(rows.map(row => row.id));\n  const combined: JsonObject[] = [...value.filter(item => !known.has(item)).map(item => ({ id: item, label: item })), ...rows];\n  const query = search.trim().toLocaleLowerCase();\n  const filtered = combined.filter(option => !query || String(option.id).toLocaleLowerCase().includes(query) || resolveLabel(option, String(option.id)).toLocaleLowerCase().includes(query));\n  const runs: { group?: JsonObject; options: JsonObject[]; top: number; height: number }[] = [];\n  let totalHeight = 0;\n  for (const option of filtered) {\n    const group = object(option.group) ? option.group : undefined;\n    const previous = runs[runs.length - 1];\n    if (previous && previous.group?.id === group?.id) { previous.options.push(option); previous.height += OPTION_HEIGHT; }\n    else runs.push({ group, options: [option], top: totalHeight, height: OPTION_HEIGHT + (group ? HEADER_HEIGHT : 0) });\n    totalHeight += OPTION_HEIGHT + (previous && previous.group?.id === group?.id ? 0 : group ? HEADER_HEIGHT : 0);\n  }\n  const start = Math.min(scrollTop, Math.max(0, totalHeight - VIEWPORT_HEIGHT));\n  const change = (next: string[]) => {\n    if (!active.current || latest.current.disabled || latest.current.value !== value) return;\n    if (next.length > MAX_ITEMS || !checkBytes(next)) { setError(next.length > MAX_ITEMS ? 'ORDERED_SELECTION_LIMIT_EXCEEDED' : 'ORDERED_SELECTION_BYTES_EXCEEDED'); return; }\n    setError(undefined); latest.current.onChange(next);\n  };\n  const add = () => {\n    if (disabled || !active.current) return;\n    const candidate = manual.trim();\n    if (!validId(candidate) || rows.some(row => row.id === candidate && row.disabled === true)) return;\n    if (!selected.has(candidate)) change([...value, candidate]);\n    setManual('');\n  };\n  return <div data-editor-string-selection={id}>\n    {field.searchable === true ? <BaseInput type=\"search\" aria-label={translate('monkeys.design.capability.orderedSelection.search')} value={search} disabled={disabled} onChange={event => { setSearch(event.currentTarget.value); setScrollTop(0); if (viewport.current) viewport.current.scrollTop = 0; }} /> : null}\n    {field.allowCustomValues === true ? <div className=\"flex items-center gap-2\"><BaseInput aria-label={translate('monkeys.design.capability.orderedSelection.ids')} value={manual} disabled={disabled} onChange={event => setManual(event.currentTarget.value)} onKeyDown={event => { if (event.key === 'Enter' && !event.nativeEvent.isComposing) { event.preventDefault(); add(); } }} /><BaseButton disabled={disabled || !manual.trim()} label={translate('monkeys.design.capability.orderedSelection.add')} onClick={add} /></div> : null}\n    {error ? <p role=\"alert\">{translate(`monkeys.design.capability.orderedSelection.errors.${error === 'ORDERED_SELECTION_BYTES_EXCEEDED' ? 'bytes' : 'limit'}`)}</p> : null}\n    <div ref={viewport} data-string-selection-viewport style={{ maxHeight: VIEWPORT_HEIGHT, height: Math.min(totalHeight, VIEWPORT_HEIGHT), overflowY: 'auto' }} onScroll={event => setScrollTop(event.currentTarget.scrollTop)}>\n      <div style={{ height: totalHeight, position: 'relative' }}>{runs.map((run, runIndex) => {\n        if (run.top + run.height < start - OPTION_HEIGHT * 2 || run.top > start + VIEWPORT_HEIGHT + OPTION_HEIGHT * 2) return null;\n        const header = run.group ? HEADER_HEIGHT : 0;\n        const first = Math.max(0, Math.floor((start - run.top - header) / OPTION_HEIGHT) - 2);\n        const last = Math.min(run.options.length, Math.ceil((start + VIEWPORT_HEIGHT - run.top - header) / OPTION_HEIGHT) + 2);\n        return <fieldset key={runIndex} data-editor-option-group={run.group ? String(run.group.id) : undefined} style={{ position: 'absolute', top: run.top, left: 0, right: 0, margin: 0, padding: 0, border: 0, minWidth: 0 }}>\n          {run.group ? <legend className=\"truncate\" style={{ height: HEADER_HEIGHT }}>{resolveLabel(run.group, '')}</legend> : null}\n          <div style={{ height: first * OPTION_HEIGHT }} />\n          {run.options.slice(first, last).map(option => { const optionId = String(option.id); const label = resolveLabel(option, optionId); return <div key={optionId} data-string-selection-id={optionId} className=\"flex min-w-0 items-center gap-2\" style={{ height: OPTION_HEIGHT }}><BaseCheckbox id={`${domId}-${encodeURIComponent(optionId)}`} aria-label={label} label={label} checked={selected.has(optionId)} disabled={disabled || option.disabled === true} onChange={event => change(event.currentTarget.checked ? [...new Set([...value, optionId])] : value.filter(item => item !== optionId))} />{field.showSelectedIds === true ? <span className=\"truncate text-xs text-muted-foreground\">{optionId}</span> : null}</div>; })}\n        </fieldset>;\n      })}</div>\n    </div>\n  </div>;\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  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 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","/** 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 { DataExplorerToolbarAction } from '../data-explorer/types';\n\nexport const isCollectionMenuAction = (action: { presentation?: unknown }) =>\n  action.presentation === 'menu' || action.presentation === 'overflow';\n\n/** Keep ordinary actions inline and reuse the shared accessible menu for explicit overflow. */\nexport function collectionToolbarActions(\n  actions: Array<DataExplorerToolbarAction & { presentation?: unknown; destructive?: boolean }>,\n  menuLabel: string,\n): DataExplorerToolbarAction[] {\n  const inline = actions.filter(action => !isCollectionMenuAction(action));\n  const menu = actions.filter(isCollectionMenuAction);\n  if (!menu.length) return inline;\n  return [...inline, {\n    id: 'collection-overflow',\n    kind: 'menu',\n    label: menuLabel,\n    triggerLabel: menuLabel,\n    items: menu.map(action => ({ ...action, separatorBefore: action.destructive === true })),\n  }];\n}\n","import { useCallback, useEffect, useRef, type ReactNode } from 'react';\nimport type { JsonObject } from '@inf-monkeys-tech/monkeys';\nimport { WorkbenchGalleryView } from '../workbench/WorkbenchGalleryView';\nimport { BaseButton } from '../base/BaseButton';\nimport { BaseAssetIcon, type BaseAssetIconDescriptor } from '../base/BaseAssetIcon';\nimport { BaseTooltip } from '../base/BaseTooltip';\nimport { useMonkeysLocale } from '../../provider/context';\nimport type { DesignCapabilityRendererContext } from './contracts';\nimport { GalleryPresentationFieldsSchema, validateGalleryPresentationSettings } from './galleryPresentationSettings';\nimport { resolveI18nDisplayText } from './localizedDisplayValue';\nimport { TypedDisplayCell } from './typedDisplayCell';\nimport { renderTableMessageValue } from './tableMessageValue';\nimport { renderDateTimeValue } from './dateTimeValue';\nimport { DataExplorerToolbarActions } from '../data-explorer/DataExplorerToolbarActions';\nimport { collectionToolbarActions, isCollectionMenuAction } from './collectionActionPresentation';\n\nconst object = (value: unknown): value is JsonObject => !!value && typeof value === 'object' && !Array.isArray(value);\nconst objects = (value: unknown): JsonObject[] => Array.isArray(value) ? value.filter(object) : [];\ntype Props = Pick<DesignCapabilityRendererContext, 'model' | 'translate' | 'emitIntent' | 'resolveMedia' | 'pendingActionInvocations'> & { kind: 'gallery' | 'card-grid'; loading?: boolean; header?: ReactNode; footer?: ReactNode; renderActionIcon?: (action: JsonObject) => ReactNode };\n/** Explicit field declarations opt into controlled Workbench cards without changing existing presentations. */\nexport function GalleryFieldPresentation({ model, translate, emitIntent, resolveMedia, pendingActionInvocations = [], kind, loading, header, footer, renderActionIcon }: Props) {\n  const { locale } = useMonkeysLocale();\n  const fields = GalleryPresentationFieldsSchema.parse(model.galleryFields);\n  const settings = validateGalleryPresentationSettings(model.gallerySettings, fields.map(field => field.id));\n  const rows = objects(model.items);\n  const actions = objects(model.rowActions);\n  const viewport = useRef<HTMLDivElement>(null);\n  const requested = useRef<string>();\n  const pagination = object(model.pagination) ? model.pagination : {};\n  const blocked = model.disabled === true || loading === true;\n  const cursor = typeof pagination.nextCursor === 'string' ? pagination.nextCursor : undefined;\n  const requestNext = useCallback(() => {\n    if (blocked || pagination.loadingMore === true || pagination.hasMore !== true || !cursor || requested.current === cursor) return;\n    requested.current = cursor;\n    emitIntent(`capability.${kind}.load-more`, { cursor });\n  }, [blocked, pagination.loadingMore, pagination.hasMore, cursor, emitIntent, kind]);\n  useEffect(() => { requested.current = undefined; }, [cursor]);\n  useEffect(() => {\n    const node = viewport.current; if (!node) return;\n    const scroll = () => { if (node.scrollHeight - node.scrollTop - node.clientHeight <= 180) requestNext(); };\n    scroll(); node.addEventListener('scroll', scroll, { passive: true }); return () => node.removeEventListener('scroll', scroll);\n  }, [requestNext, rows.length]);\n  const label = (value: JsonObject, fallback: string) => value.labelI18n !== undefined ? resolveI18nDisplayText(value.labelI18n, locale) : typeof value.labelKey === 'string' ? translate(value.labelKey) : typeof value.label === 'string' ? value.label : fallback;\n  const display = (value: unknown): ReactNode => {\n    if (object(value) && typeof value.valueType === 'string') {\n      if (value.valueType === 'message') return renderTableMessageValue(value.value, translate);\n      if (value.valueType === 'stack' || value.valueType === 'metrics' || value.valueType === 'copy' || value.valueType === 'localized-text' || value.valueType === 'identity' || value.valueType === 'badge') return <TypedDisplayCell valueType={value.valueType} value={value.value} copy={value.copy} valueFormat={value.valueFormat} translate={translate} />;\n      if (value.valueType === 'timestamp') return renderDateTimeValue(value.value, typeof value.value === 'number' && value.value < 1_000_000_000_000 ? 'seconds' : 'milliseconds', typeof value.locale === 'string' ? value.locale : locale);\n      return display(value.value);\n    }\n    if (typeof value === 'string' || typeof value === 'number') return value;\n    if (typeof value === 'boolean') return String(value);\n    if (Array.isArray(value)) return value.map(item => typeof item === 'string' || typeof item === 'number' || typeof item === 'boolean' ? String(item) : '—').join(', ');\n    return '—';\n  };\n  const raw = (row: JsonObject, key: string) => object(row.fields) ? row.fields[key] : undefined;\n  const media = (value: unknown) => {\n    if (!object(value) || !object(value.reference) || typeof value.reference.id !== 'string') return undefined;\n    return resolveMedia?.({ id: value.reference.id });\n  };\n  const columns = fields.filter(field => settings.visibleColumnKeys.includes(field.id)).map(field => ({ key: field.id, label: label(field as JsonObject, field.id) }));\n  const fieldRole = (key: string) => fields.find(field => field.id === key)?.role;\n  const renderField = (column: { key: string }, row: JsonObject): ReactNode => {\n          if (fieldRole(column.key) !== 'actions') return display(raw(row, column.key));\n          const allowed = Array.isArray(row.actionIds) ? row.actionIds : actions.map(action => action.id);\n          const available = actions.filter(action => typeof action.id === 'string' && allowed.includes(action.id));\n          const menu = available.filter(isCollectionMenuAction).flatMap(action => {\n            const actionId = String(action.id), itemId = String(row.id);\n            const restrictions = object(row.actionAvailability) ? row.actionAvailability : {};\n            const availability = object(restrictions[actionId]) ? restrictions[actionId] : {};\n            if (availability.hidden === true) return [];\n            const pending = action.loading === true || pendingActionInvocations.some(invocation => invocation.source.port === `capability.${kind}.row-action` && invocation.intent.itemId === itemId && invocation.intent.actionId === actionId);\n            const hintKey = typeof availability.titleKey === 'string' ? availability.titleKey : availability.hintKey;\n            return [{\n              id: actionId,\n              presentation: action.presentation,\n              destructive: action.destructive === true,\n              label: typeof availability.labelKey === 'string' ? translate(availability.labelKey) : label(action, actionId),\n              title: typeof hintKey === 'string' ? translate(hintKey) : undefined,\n              icon: renderActionIcon?.(action),\n              tone: action.destructive === true ? 'danger' as const : 'muted' as const,\n              disabled: blocked || row.disabled === true || action.disabled === true || availability.disabled === true || pending,\n              loading: pending,\n              onAction: () => { emitIntent(`capability.${kind}.row-action`, { itemId, actionId, ...(kind === 'gallery' && object(row.context) ? { context: row.context } : {}), ...(object(action.payload) ? { payload: action.payload } : {}) }); },\n            }];\n          });\n          return <div className=\"flex flex-wrap gap-2\">{available.filter(action => !isCollectionMenuAction(action)).map(action => {\n            const actionId = String(action.id), itemId = String(row.id);\n            const restrictions = object(row.actionAvailability) ? row.actionAvailability : {};\n            const availability = object(restrictions[actionId]) ? restrictions[actionId] : {};\n            if (availability.hidden === true) return null;\n            const hintKey = typeof availability.titleKey === 'string' ? availability.titleKey : availability.hintKey;\n            const hint = typeof hintKey === 'string' ? translate(hintKey) : undefined;\n            const actionLabel = typeof availability.labelKey === 'string' ? translate(availability.labelKey) : label(action, actionId);\n            const pending = action.loading === true || pendingActionInvocations.some(invocation => invocation.source.port === `capability.${kind}.row-action` && invocation.intent.itemId === itemId && invocation.intent.actionId === actionId);\n            const button = <BaseButton key={actionId} size=\"sm\" icon={renderActionIcon?.(action)} label={actionLabel} tone={action.destructive === true || action.presentation === 'danger' ? 'danger' : 'muted'} disabled={blocked || row.disabled === true || action.disabled === true || availability.disabled === true || pending} loading={pending} onClick={event => {\n              event.stopPropagation();\n              emitIntent(`capability.${kind}.row-action`, { itemId, actionId, ...(kind === 'gallery' && object(row.context) ? { context: row.context } : {}), ...(object(action.payload) ? { payload: action.payload } : {}) });\n            }} />;\n            return hint ? <BaseTooltip key={actionId} content={hint}><span className=\"inline-flex\" tabIndex={0} aria-label={hint}>{button}</span></BaseTooltip> : button;\n          })}{menu.length ? <DataExplorerToolbarActions layout=\"inline\" actions={collectionToolbarActions(menu, translate('monkeys.design.capability.dataToolbar.moreActions'))} /> : null}</div>;\n  };\n  const actionFields = fields.filter(field => field.role === 'actions' && settings.visibleColumnKeys.includes(field.id));\n  return <div className=\"col-span-full flex min-h-0 flex-1 flex-col\" data-gallery-field-presentation={kind}>\n    {header}\n    <div ref={viewport} className=\"min-h-0 flex-1 overflow-auto p-4\" data-gallery-field-viewport>\n      <WorkbenchGalleryView rows={rows} columns={columns} {...settings} isMasonry={settings.galleryLayout === 'masonry'}\n        labels={{ fieldCount: model.showFieldCount === false ? undefined : count => translate(object(model.galleryLabels) && typeof model.galleryLabels.fieldCountKey === 'string' ? model.galleryLabels.fieldCountKey : 'monkeys.design.capability.gallery.presentation.fieldCount', { count }), coverOnlyHint: translate(object(model.galleryLabels) && typeof model.galleryLabels.coverOnlyHintKey === 'string' ? model.galleryLabels.coverOnlyHintKey : 'monkeys.design.capability.gallery.presentation.coverOnlyHint') }}\n        cardInteraction=\"container\"\n        galleryDetailPresentation={model.galleryDetailPresentation === 'lines' ? 'lines' : 'tiles'}\n        hiddenDetailFieldKeys={model.galleryActionPlacement === 'header' ? actionFields.map(field => field.id) : []}\n        renderMeta={model.galleryActionPlacement === 'header' ? ({row}) => <div data-gallery-header-actions>{actionFields.map(field => <div key={field.id}>{renderField({key:field.id}, row)}</div>)}</div> : undefined}\n        onRowClick={model.itemActivation === 'activate' && !blocked ? row => { if (row.disabled !== true) emitIntent(`capability.${kind}.activate`, { itemId: String(row.id) }); } : undefined}\n        selectedRowKey={rows.find(row => row.selected === true)?.id as string | undefined}\n        renderLeadingVisual={({ row }) => object(row.leadingIcon) ? <BaseAssetIcon icon={row.leadingIcon as BaseAssetIconDescriptor} alt=\"\" normalizeImageIcon className=\"h-10 w-10 rounded\" /> : null}\n        getFieldValue={(column, row) => raw(row, column.key)}\n        getDisplayText={display}\n        isTitleCandidate={column => fieldRole(column.key) === 'title'}\n        isSummaryCandidate={column => fieldRole(column.key) === 'summary'}\n        isMediaColumn={column => fieldRole(column.key) === 'media'}\n        isImageField={(column, value) => fieldRole(column.key) === 'media' && !!media(value)}\n        getImagePreviewSrc={value => media(value)?.src ?? ''}\n        renderFieldValue={renderField}\n      />\n    </div>\n    {footer}\n  </div>;\n}\n","import { useRef, type ReactNode } from 'react';\nimport { closestCenter, DndContext, KeyboardSensor, PointerSensor, useSensor, useSensors } from '@dnd-kit/core';\nimport { SortableContext, sortableKeyboardCoordinates, useSortable, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\n\n/** One drag scope per array; IDs are stable item identities, never array indices. */\nexport function RecordEditorArraySorting({ ids, disabled, enabled, children, onMove }: {\n  ids: string[]; disabled: boolean; enabled: boolean; children: ReactNode;\n  onMove(itemId: string, beforeId?: string): void;\n}) {\n  const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } }), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }));\n  const startedIds = useRef<string | null>(null);\n  if (!enabled) return <>{children}</>;\n  return <DndContext sensors={sensors} collisionDetection={closestCenter}\n    onDragStart={() => { startedIds.current = disabled ? null : JSON.stringify(ids); }}\n    onDragCancel={() => { startedIds.current = null; }}\n    onDragEnd={({ active, over }) => {\n      const snapshot = startedIds.current; startedIds.current = null;\n      if (disabled || snapshot !== JSON.stringify(ids) || !over || active.id === over.id) return;\n      const source = ids.indexOf(String(active.id)); const target = ids.indexOf(String(over.id));\n      if (source < 0 || target < 0) return;\n      onMove(ids[source], source < target ? ids[target + 1] : ids[target]);\n    }}><SortableContext items={ids} strategy={verticalListSortingStrategy}>{children}</SortableContext></DndContext>;\n}\nexport function RecordEditorSortableArrayItem({ id, disabled, label, children }: { id: string; disabled: boolean; label: string; children: ReactNode }) {\n  const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition, isDragging } = useSortable({ id, disabled });\n  return <fieldset ref={setNodeRef} data-editor-sortable-item={id} style={{ transform: CSS.Transform.toString(transform), transition, opacity: isDragging ? 0.65 : undefined }}>\n    <button type=\"button\" ref={setActivatorNodeRef} {...attributes} {...listeners} disabled={disabled} aria-label={label} style={{ touchAction: 'none', cursor: disabled ? undefined : 'grab' }}>↕</button>\n    {children}\n  </fieldset>;\n}\n","import type { JsonValue } from '@inf-monkeys-tech/monkeys';\n\nexport type TypedSecretInputKind = 'password' | 'text' | 'textarea' | 'boolean' | 'number' | 'json';\nexport type TypedSecretInputResult = { status: 'valid'; value: JsonValue } | { status: 'empty' } | { status: 'invalid'; code: 'invalid-kind' | 'invalid-type' | 'invalid-number' | 'invalid-json' | 'unsafe-json' | 'input-budget-exceeded' };\nexport const TYPED_SECRET_MAX_BYTES = 1024 * 1024;\n/** Parse only transient control input. Callers may put valid values in secretChanges, never the draft. */\nexport function parseTypedSecretInput(kind: unknown, raw: unknown): TypedSecretInputResult {\n  const resolved = kind === undefined ? 'password' : kind;\n  if (typeof resolved !== 'string' || !['password', 'text', 'textarea', 'boolean', 'number', 'json'].includes(resolved)) return { status: 'invalid', code: 'invalid-kind' };\n  if (raw === undefined) return { status: 'empty' };\n  if (raw === '' && resolved !== 'password' && resolved !== 'text' && resolved !== 'textarea') return { status: 'empty' };\n  if (resolved === 'boolean') {\n    if (raw === true || raw === 'true') return { status: 'valid', value: true };\n    if (raw === false || raw === 'false') return { status: 'valid', value: false };\n    return { status: 'invalid', code: 'invalid-type' };\n  }\n  if (typeof raw !== 'string') return { status: 'invalid', code: 'invalid-type' };\n  if (raw.length > TYPED_SECRET_MAX_BYTES || new TextEncoder().encode(raw).byteLength > TYPED_SECRET_MAX_BYTES) return { status: 'invalid', code: 'input-budget-exceeded' };\n  if (resolved === 'password' || resolved === 'text' || resolved === 'textarea') return { status: 'valid', value: raw };\n  if (!raw.trim()) return { status: 'empty' };\n  if (resolved === 'number') {\n    const text = raw.trim();\n    if (!/^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i.test(text) || !Number.isFinite(Number(text))) return { status: 'invalid', code: 'invalid-number' };\n    return { status: 'valid', value: Number(text) };\n  }\n  let parsed: unknown;\n  try { parsed = JSON.parse(raw); } catch { return { status: 'invalid', code: 'invalid-json' }; }\n  let nodes = 0;\n  let error: 'unsafe-json' | 'input-budget-exceeded' | undefined;\n  const visit = (value: unknown, depth: number): value is JsonValue => {\n    if (++nodes > 16384 || depth > 32) { error = 'input-budget-exceeded'; return false; }\n    if (typeof value === 'number') { if (!Number.isFinite(value)) { error = 'unsafe-json'; return false; } return true; }\n    if (value === null || typeof value === 'string' || typeof value === 'boolean') return true;\n    if (typeof value !== 'object') { error = 'unsafe-json'; return false; }\n    for (const [key, child] of Object.entries(value)) {\n      if (['__proto__', 'constructor', 'prototype'].includes(key)) { error = 'unsafe-json'; return false; }\n      if (!visit(child, depth + 1)) return false;\n    }\n    return true;\n  };\n  if (!visit(parsed, 0)) return { status: 'invalid', code: error ?? 'unsafe-json' };\n  return { status: 'valid', value: parsed };\n}\n","import type { JsonObject, RecordEditorDraft, RecordEditorDraftOperation, RecordEditorPath } from '@inf-monkeys-tech/monkeys';\nimport { collectPageExpressionReads, RecordEditorPathSchema } from '@inf-monkeys-tech/monkeys';\nimport { applyRecordEditorDraft, compileTargetRenderModelValidator, evaluatePageExpression, readRecordEditorPath, recordEditorArrayItems, recordEditorPathKey, recordEditorValuesEqual } from '@inf-monkeys-tech/monkeys/runtime';\nimport { RECORD_EDITOR_OPTIONS_SOURCE_SCHEMA, validateRecordEditorOptionTables, validateRecordEditorOptions } from './recordEditorOptions';\n\nconst validateOptionsSource = compileTargetRenderModelValidator(RECORD_EDITOR_OPTIONS_SOURCE_SCHEMA);\nconst ownLookupPath = (value: unknown, path: readonly string[]): unknown => {\n  let current = value;\n  for (const key of path) {\n    if (current === undefined) return undefined;\n    if (!current || typeof current !== 'object' || Array.isArray(current) || ![Object.prototype, null].includes(Object.getPrototypeOf(current))) throw new TypeError('Editor options lookup path requires plain objects.');\n    if (!Object.prototype.hasOwnProperty.call(current, key)) return undefined;\n    current = (current as Record<string, unknown>)[key];\n  }\n  return current;\n};\nconst optionsSourcePath = (input: unknown): string[] => {\n  if (!Array.isArray(input) || input.some(key => typeof key !== 'string' || /[\\u0000-\\u001f\\u007f-\\u009f]/.test(key))) throw new TypeError('Invalid editor options lookup path.');\n  return input;\n};\nconst lookupEditorOptions = (source: unknown, model: JsonObject, parent: unknown): JsonObject[] => {\n  const parsed = validateOptionsSource(source);\n  const table = ownLookupPath(model, optionsSourcePath(parsed.modelPath));\n  const key = ownLookupPath(parent, optionsSourcePath(parsed.parentKeyPath));\n  if (table !== undefined && (!table || typeof table !== 'object' || Array.isArray(table) || ![Object.prototype, null].includes(Object.getPrototypeOf(table)))) throw new TypeError('Editor options source must be a lookup table.');\n  if (key !== undefined && key !== null && typeof key !== 'string') throw new TypeError('Editor options parent key must be a string.');\n  if (typeof key === 'string' && ['__proto__', 'prototype', 'constructor'].includes(key)) throw new TypeError('Unsafe editor options parent key.');\n  if (table === undefined || key === undefined || key === null || !Object.prototype.hasOwnProperty.call(table, key)) return [];\n  return validateRecordEditorOptions((table as Record<string, unknown>)[key]);\n};\n\nexport const editorObjects = (value: unknown): JsonObject[] => Array.isArray(value) ? value.filter((item): item is JsonObject => Boolean(item) && typeof item === 'object' && !Array.isArray(item)) : [];\nexport const projectEditorFields = (fields: JsonObject[], draft: RecordEditorDraft, parent: RecordEditorPath = [], model: JsonObject = {}): JsonObject[] => {\n  if (parent.length === 0 && model.optionTables !== undefined) validateRecordEditorOptionTables(model.optionTables);\n  return fields.map((field) => {\n  const path = [...parent, ...RecordEditorPathSchema.parse(field.path ?? [field.id])];\n  if (field.kind === 'secret' && readRecordEditorPath(draft.value, path) != null) throw new TypeError('Secret values cannot be stored in editor drafts.');\n  const value = field.kind === 'secret' ? null : readRecordEditorPath(draft.value, path) ?? null;\n  const projected: JsonObject = { ...field, path, id: recordEditorPathKey(path), value };\n  for (const [condition, property] of [['requiredWhen', 'required'], ['disabledWhen', 'disabled'], ['hiddenWhen', 'hidden'], ['hasValueWhen', 'hasValue']] as const) {\n    if (field[condition] !== undefined) {\n      const result = evaluatePageExpression(field[condition], { model, state: { draft: draft.value }, scope: { value, parent: readRecordEditorPath(draft.value, parent) ?? null } });\n      if (typeof result !== 'boolean') throw new TypeError('Editor field condition must return a boolean.');\n      projected[property] = result;\n    }\n  }\n  const options = field.optionsSource === undefined ? field.options : lookupEditorOptions(field.optionsSource, model, readRecordEditorPath(draft.value, parent));\n  if (field.optionsSource !== undefined && field.options !== undefined) throw new TypeError('Editor options require exactly one source.');\n  if (Array.isArray(options)) projected.options = editorObjects(options).map(option => {\n    if (option.disabledWhen === undefined) return option;\n    if (collectPageExpressionReads(option.disabledWhen as Parameters<typeof collectPageExpressionReads>[0]).some(read => !['model', 'state', 'scope'].includes(read.root))) throw new TypeError('Editor option condition has a forbidden root.');\n    const disabled = evaluatePageExpression(option.disabledWhen, { model, state: { draft: draft.value }, scope: { value: option.id ?? null, fieldValue: value, parent: readRecordEditorPath(draft.value, parent) ?? null } });\n    if (typeof disabled !== 'boolean') throw new TypeError('Editor option condition must return a boolean.');\n    return { ...option, disabled: option.disabled === true || disabled };\n  });\n  if (field.kind === 'object') projected.children = projectEditorFields(editorObjects(field.children), draft, path, model);\n  if (field.kind === 'array') {\n    const idKey = typeof field.itemIdKey === 'string' ? field.itemIdKey : 'id';\n    projected.items = recordEditorArrayItems(value === null && field.nullToggle !== undefined ? [] : value, idKey).map((item) => ({ id: item[idKey]!, fields: projectEditorFields(editorObjects(field.children), draft, [...path, { itemId: String(item[idKey]), idKey }], model) }));\n  }\n  return projected;\n  });\n};\nexport const editorLeafFields = (fields: JsonObject[], inheritedHidden = false, inheritedDisabled = false): JsonObject[] => fields.flatMap((field) => {\n  const hidden = inheritedHidden || field.hidden === true;\n  const disabled = inheritedDisabled || field.disabled === true;\n  return field.kind === 'object' ? editorLeafFields(editorObjects(field.children), hidden, disabled)\n    : field.kind === 'array' ? editorObjects(field.items).flatMap((item) => editorLeafFields(editorObjects(item.fields), hidden, disabled))\n      : [{ ...field, hidden, disabled }];\n});\nexport const editorDraftErrors = (model: JsonObject, draft: RecordEditorDraft): JsonObject[] => {\n  const validation = model.draftValidation;\n  if (!validation || typeof validation !== 'object' || Array.isArray(validation) || validation.revision !== draft.revision || !validation.value || !recordEditorValuesEqual(validation.value, draft.value)) return [];\n  return editorObjects(validation.errors);\n};\n\n\n/** Apply only the edited field's declared patches, then publish one resulting draft. */\nexport const applyEditorFieldChange = (draft: RecordEditorDraft, operation: RecordEditorDraftOperation, field?: JsonObject, model: JsonObject = {}): RecordEditorDraft => {\n  let next = applyRecordEditorDraft(draft, operation);\n  if (operation.kind !== 'set' || field?.changeEffects === undefined) return next;\n  const effects = field.changeEffects;\n  if (!Array.isArray(effects) || effects.length > 32) throw new TypeError('Editor change effects require an array of at most 32 patches.');\n  const parentPath = operation.path.slice(0, -1);\n  for (const effect of effects) {\n    if (!effect || typeof effect !== 'object' || Array.isArray(effect)) throw new TypeError('Editor change effect requires an object.');\n    const literal = Object.prototype.hasOwnProperty.call(effect, 'value');\n    const expression = Object.prototype.hasOwnProperty.call(effect, 'expression');\n    if (literal === expression) throw new TypeError('Editor change effect requires exactly one value or expression.');\n    for (const candidate of [effect.when, effect.expression]) {\n      if (candidate !== undefined && collectPageExpressionReads(candidate as Parameters<typeof collectPageExpressionReads>[0]).some((read) => !['model', 'state', 'scope'].includes(read.root))) throw new TypeError('Editor change effect expression has a forbidden root.');\n    }\n    const context = { model, state: { draft: next.value }, scope: { value: operation.value, parent: readRecordEditorPath(next.value, parentPath) ?? null } };\n    if (effect.pathScope !== undefined && effect.pathScope !== 'root' && effect.pathScope !== 'parent') throw new TypeError('Invalid editor change effect path scope.');\n    const declaredPath = RecordEditorPathSchema.parse(effect.path);\n    const path = effect.pathScope === 'parent' ? RecordEditorPathSchema.parse([...parentPath, ...declaredPath]) : declaredPath;\n    if (effect.when !== undefined) {\n      const enabled = evaluatePageExpression(effect.when, context);\n      if (typeof enabled !== 'boolean') throw new TypeError('Editor change effect condition must return a boolean.');\n      if (!enabled) continue;\n    }\n    next = applyRecordEditorDraft(next, { kind: 'set', path, value: expression ? evaluatePageExpression(effect.expression, context) : effect.value! });\n  }\n  return next;\n};\n","import { JsonObjectSchema, type JsonObject } from '@inf-monkeys-tech/monkeys';\nimport { createRecordEditorDraft } from '@inf-monkeys-tech/monkeys/runtime';\nimport type { CapabilityTranslate } from './contracts';\nimport { editorLeafFields, editorObjects, projectEditorFields } from './recordEditorDraft';\nimport { resolveI18nDisplayText, resolveLocalizedDisplayParameters } from './localizedDisplayValue';\n\n/** Project the same field presentation and conditions without exposing secret leaves. */\nexport function projectReadOnlyEditorFields(model: JsonObject, translate: CapabilityTranslate, locale = 'en'): JsonObject[] {\n  const source = editorObjects(model.fields);\n  const presentations = new Map(editorObjects(model.fieldPresentation).map(field => [field.id, field]));\n  const byId = new Map(source.map(field => [field.id, field]));\n  const selected = Array.isArray(model.visibleFieldIds)\n    ? model.visibleFieldIds.flatMap(id => typeof id === 'string' && byId.has(id) ? [byId.get(id)!] : []) : source;\n  const fields = selected.filter(field => field.kind !== 'secret').map(field => {\n    const merged: JsonObject = { ...field, ...presentations.get(field.id), id: field.id, value: field.value ?? null };\n    return merged.kind === 'select' && typeof merged.fallbackValue === 'string' && merged.fallbackValue &&\n      !editorObjects(merged.options).some(option => option.id === String(merged.value ?? ''))\n      ? { ...merged, value: merged.fallbackValue } : merged;\n  });\n  const withoutSecrets = (items: JsonObject[]): JsonObject[] => items.filter(field => field.kind !== 'secret').map(field =>\n    field.kind === 'object' || field.kind === 'array' ? { ...field, children: withoutSecrets(editorObjects(field.children)) } : field);\n  const safeFields = withoutSecrets(fields);\n  const envelope = model.draft;\n  const hasDraft = envelope && typeof envelope === 'object' && !Array.isArray(envelope);\n  // Legacy value-only forms have a flat field contract; nested stable paths require a draft.\n  if (!hasDraft && safeFields.some(field => field.kind === 'object' || field.kind === 'array' || field.path !== undefined)) {\n    throw new TypeError('Nested read-only editor fields require a draft.');\n  }\n  const value = hasDraft ? envelope.value : Object.fromEntries(safeFields.map(field => [String(field.id), field.value ?? null]));\n  const draft = createRecordEditorDraft(hasDraft && typeof envelope.revision === 'string' ? envelope.revision : 'read-only', JsonObjectSchema.parse(value));\n  return editorLeafFields(projectEditorFields(safeFields, draft, [], model)).filter(field => !field.hidden && field.kind !== 'secret').map(field => {\n    const displayLabel = (item: JsonObject, fallback: string) => item.labelI18n !== undefined\n      ? resolveI18nDisplayText(item.labelI18n, locale)\n      : typeof item.labelKey === 'string' && item.labelKey\n        ? translate(item.labelKey, resolveLocalizedDisplayParameters(item.labelParameters, locale))\n        : typeof item.label === 'string' ? item.label : fallback;\n    const label = (value: unknown) => {\n      const option = editorObjects(field.options).find(option => option.id === value);\n      return option ? displayLabel(option, String(value)) : String(value ?? '');\n    };\n    let value = field.kind === 'select' ? label(field.value) : field.kind === 'multi-select' && Array.isArray(field.value) ? field.value.map(label).join(', ') : field.value ?? null;\n    if (value && typeof value === 'object' && !Array.isArray(value) && ['relations', 'tags', 'files'].includes(String(value.kind))) {\n      value = { ...value, items: editorObjects(value.items).map(item => {\n        const projected: JsonObject = { ...item, label: displayLabel(item, String(item.id ?? '')) };\n        delete projected.labelKey; delete projected.labelParameters; delete projected.labelI18n;\n        return projected;\n      }) };\n    }\n    const projected: JsonObject = { ...field, label: displayLabel(field, String(field.id)), value };\n    delete projected.labelKey; delete projected.labelParameters; delete projected.labelI18n;\n    return projected;\n  });\n}\n","import { z } from 'zod';\nimport { JsonObjectSchema, RecordEditorDraftOperationSchema, type RecordEditorDraft } from '@inf-monkeys-tech/monkeys';\nimport { applyRecordEditorDraft, createRecordEditorDraft, recordEditorValuesEqual } from '@inf-monkeys-tech/monkeys/runtime';\n\n/** Contains only public draft values. The renderer must also reject writes to its secret fields. */\nexport const RecordEditorDraftPatchSchema = z.object({\n  key: z.string().min(1).max(128),\n  revision: z.string().min(1).max(256),\n  expectedValue: JsonObjectSchema,\n  operations: z.array(RecordEditorDraftOperationSchema.refine((operation) => operation.kind !== 'reset', 'Draft patches cannot reset the original.')).min(1).max(32),\n}).strict();\nexport type RecordEditorDraftPatch = z.infer<typeof RecordEditorDraftPatchSchema>;\nexport type RecordEditorDraftPatchResult = { success: true; draft: RecordEditorDraft } | { success: false; reason: 'stale-revision' | 'stale-value' | 'invalid-operation' };\n\n/** All changes remain local until every operation succeeds. Original and unrelated edits survive. */\nexport function applyEditorDraftPatch(draft: RecordEditorDraft, input: unknown): RecordEditorDraftPatchResult {\n  try {\n    const patch = RecordEditorDraftPatchSchema.parse(input);\n    if (patch.revision !== draft.revision) return { success: false, reason: 'stale-revision' };\n    // Reuse the SDK's JSON, depth and node budget before recursive snapshot comparison.\n    createRecordEditorDraft(patch.revision, patch.expectedValue);\n    if (!recordEditorValuesEqual(patch.expectedValue, draft.value)) return { success: false, reason: 'stale-value' };\n    let next = draft;\n    for (const operation of patch.operations) next = applyRecordEditorDraft(next, operation);\n    return { success: true, draft: next };\n  } catch {\n    return { success: false, reason: 'invalid-operation' };\n  }\n}\n","/** Date control conversion is local-time aware and never uses Date's rollover as validation. */\nexport interface RecordEditorDateField {\n  kind: 'date' | 'datetime-local';\n  valueFormat?: 'date' | 'iso-start-of-day' | 'iso-end-of-day' | 'local-datetime' | 'iso';\n  value?: unknown;\n}\n\ntype Parts = [number, number, number, number, number, number, number];\nconst invalid = (): never => { throw new RangeError('Invalid record editor date value'); };\nconst pad = (value: number, width = 2) => String(value).padStart(width, '0');\nfunction parts(value: string, datetime: boolean): Parts {\n  const match = (datetime\n    ? /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{1,3}))?)?$/\n    : /^(\\d{4})-(\\d{2})-(\\d{2})$/).exec(value);\n  if (!match) return invalid();\n  const result: Parts = [+match[1]!, +match[2]!, +match[3]!, +(match[4] ?? 0), +(match[5] ?? 0), +(match[6] ?? 0), +(match[7] ?? '').padEnd(3, '0')];\n  const [year, month, day, hour, minute, second, millisecond] = result;\n  const check = new Date(0);\n  check.setUTCFullYear(year, month - 1, day);\n  check.setUTCHours(hour, minute, second, millisecond);\n  if (check.getUTCFullYear() !== year || check.getUTCMonth() !== month - 1 || check.getUTCDate() !== day || hour > 23 || minute > 59 || second > 59) return invalid();\n  return result;\n}\nfunction localDate(values: Parts): Date {\n  const [year, month, day, hour, minute, second, millisecond] = values;\n  const date = new Date(0);\n  // setFullYear avoids the constructor's special treatment of years 0 through 99.\n  date.setFullYear(year, month - 1, day);\n  date.setHours(hour, minute, second, millisecond);\n  if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day || date.getHours() !== hour || date.getMinutes() !== minute || date.getSeconds() !== second || date.getMilliseconds() !== millisecond) return invalid();\n  return date;\n}\nfunction format(field: RecordEditorDateField): string {\n  const result = field.valueFormat ?? (field.kind === 'date' ? 'date' : 'local-datetime');\n  if (!(field.kind === 'date' ? ['date', 'iso-start-of-day', 'iso-end-of-day'] : ['local-datetime', 'iso']).includes(result)) return invalid();\n  return result;\n}\nexport function fromControlValue(field: RecordEditorDateField, value: string): string | null {\n  const valueFormat = format(field);\n  if (value === '') return null;\n  const values = parts(value, field.kind === 'datetime-local');\n  if (valueFormat === 'date') return value;\n  // Validate local datetime even when retaining the original string: DST gaps are invalid.\n  if (valueFormat === 'iso-end-of-day') values.splice(3, 4, 23, 59, 59, 999);\n  const date = localDate(values);\n  return valueFormat === 'local-datetime' ? value : date.toISOString();\n}\nexport function toControlValue(field: RecordEditorDateField): string {\n  const valueFormat = format(field);\n  if (field.value === null || field.value === undefined || field.value === '') return '';\n  if (typeof field.value !== 'string') return invalid();\n  if (valueFormat === 'date' || valueFormat === 'local-datetime') {\n    fromControlValue(field, field.value);\n    return field.value;\n  }\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(field.value);\n  if (!match) return invalid();\n  parts(match[1]!, true);\n  const date = new Date(field.value);\n  if (!Number.isFinite(date.getTime()) || date.getFullYear() < 0 || date.getFullYear() > 9999) return invalid();\n  const day = `${pad(date.getFullYear(), 4)}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;\n  if (field.kind === 'date') return day;\n  return `${day}T${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}.${pad(date.getMilliseconds(), 3)}`;\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  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 type { JsonObject } from \"@inf-monkeys-tech/monkeys\";\nimport type { CSSProperties } from \"react\";\n\nimport { cn } from \"../base\";\n\nexport type RecordHistoryDagRow = {\n  commitId: string;\n  lane: number;\n  lanesIn: number[];\n  lanesOut: number[];\n  edgesDown: Array<{\n    fromLane: number;\n    toLane: number;\n    parentCommitId: string;\n  }>;\n  onMainLine: boolean;\n  mergesIntoLane?: number;\n};\n\nexport type RecordHistoryDagLayout = {\n  rows: RecordHistoryDagRow[];\n  laneCount: number;\n};\n\nconst text = (value: unknown) =>\n  typeof value === \"string\" ? value.trim() : \"\";\n\nconst parentIds = (commit: JsonObject | undefined): string[] =>\n  Array.isArray(commit?.parentCommitIds)\n    ? commit.parentCommitIds.map(text).filter(Boolean)\n    : [];\n\n/**\n * Compute the product-neutral Git-style history rail used by record history.\n * Commits are newest first; the active head and its first-parent ancestors\n * stay in lane zero while unreachable revisions remain visible on side lanes.\n */\nexport const computeRecordHistoryDag = (\n  commits: JsonObject[],\n  headCommitId: string,\n): RecordHistoryDagLayout => {\n  if (!commits.length) return { rows: [], laneCount: 0 };\n\n  const indexByCommit = new Map<string, number>();\n  commits.forEach((commit, index) => {\n    const commitId = text(commit.commitId);\n    if (commitId) indexByCommit.set(commitId, index);\n  });\n  const resolvedHead =\n    headCommitId && indexByCommit.has(headCommitId)\n      ? headCommitId\n      : text(commits[0]?.commitId);\n  const mainLine = new Set<string>();\n  let cursor = resolvedHead;\n  while (cursor && !mainLine.has(cursor)) {\n    mainLine.add(cursor);\n    const index = indexByCommit.get(cursor);\n    if (index === undefined) break;\n    cursor = parentIds(commits[index]).find((parent) =>\n      indexByCommit.has(parent),\n    ) ?? \"\";\n  }\n\n  const occupiedLanes = [-1];\n  const laneByCommit = new Map<string, number>();\n  const acquireLane = () => {\n    for (let lane = 1; lane < occupiedLanes.length; lane += 1) {\n      if (occupiedLanes[lane] === -1) return lane;\n    }\n    occupiedLanes.push(-1);\n    return occupiedLanes.length - 1;\n  };\n  commits.forEach((commit, index) => {\n    const commitId = text(commit.commitId);\n    if (!commitId) return;\n    if (mainLine.has(commitId)) {\n      laneByCommit.set(commitId, 0);\n      occupiedLanes[0] = index;\n      return;\n    }\n    let lane: number | undefined;\n    for (let childIndex = index - 1; childIndex >= 0; childIndex -= 1) {\n      if (parentIds(commits[childIndex])[0] !== commitId) continue;\n      const childLane = laneByCommit.get(text(commits[childIndex]?.commitId));\n      if (childLane !== undefined && childLane !== 0) {\n        lane = childLane;\n        break;\n      }\n    }\n    lane ??= acquireLane();\n    laneByCommit.set(commitId, lane);\n    occupiedLanes[lane] = index;\n  });\n\n  const laneSpans = new Map<number, { top: number; bottom: number }>();\n  commits.forEach((commit, index) => {\n    const lane = laneByCommit.get(text(commit.commitId));\n    if (lane === undefined) return;\n    const span = laneSpans.get(lane);\n    if (span) {\n      span.top = Math.min(span.top, index);\n      span.bottom = Math.max(span.bottom, index);\n    } else {\n      laneSpans.set(lane, { top: index, bottom: index });\n    }\n  });\n  laneSpans.set(0, { top: 0, bottom: commits.length - 1 });\n\n  const mergesInto = new Map<number, number>();\n  commits.forEach((commit, index) => {\n    const commitId = text(commit.commitId);\n    const lane = laneByCommit.get(commitId);\n    if (!commitId || lane === undefined || mainLine.has(commitId)) return;\n    const knownParent = parentIds(commit).find((parent) =>\n      indexByCommit.has(parent),\n    );\n    if (knownParent && !mainLine.has(knownParent)) return;\n    const bottom = commits.reduce(\n      (candidate, other, otherIndex) =>\n        otherIndex > index &&\n        laneByCommit.get(text(other.commitId)) === lane\n          ? otherIndex\n          : candidate,\n      index,\n    );\n    if (bottom !== index) return;\n    if (knownParent) {\n      mergesInto.set(index, laneByCommit.get(knownParent) ?? 0);\n      return;\n    }\n    const nextMainIndex = commits.findIndex(\n      (other, otherIndex) =>\n        otherIndex > index && mainLine.has(text(other.commitId)),\n    );\n    if (nextMainIndex >= 0) {\n      mergesInto.set(\n        index,\n        laneByCommit.get(text(commits[nextMainIndex]?.commitId)) ?? 0,\n      );\n    }\n  });\n\n  const rows = commits.flatMap((commit, index) => {\n    const commitId = text(commit.commitId);\n    const lane = laneByCommit.get(commitId);\n    if (!commitId || lane === undefined) return [];\n    const lanesIn: number[] = [];\n    const lanesOut: number[] = [];\n    laneSpans.forEach((span, candidateLane) => {\n      if (index > span.top && index <= span.bottom)\n        lanesIn.push(candidateLane);\n      if (index >= span.top && index < span.bottom)\n        lanesOut.push(candidateLane);\n    });\n    const edgesDown = parentIds(commit).flatMap((parentCommitId) => {\n      const parentLane = laneByCommit.get(parentCommitId);\n      return parentLane === undefined\n        ? []\n        : [{ fromLane: lane, toLane: parentLane, parentCommitId }];\n    });\n    const mergeLane = mergesInto.get(index);\n    if (\n      mergeLane !== undefined &&\n      mergeLane !== lane &&\n      !edgesDown.some(\n        (edge) => edge.fromLane === lane && edge.toLane === mergeLane,\n      )\n    ) {\n      edgesDown.push({\n        fromLane: lane,\n        toLane: mergeLane,\n        parentCommitId: \"\",\n      });\n    }\n    return [\n      {\n        commitId,\n        lane,\n        lanesIn: Array.from(new Set(lanesIn)).sort((a, b) => a - b),\n        lanesOut: Array.from(new Set(lanesOut)).sort((a, b) => a - b),\n        edgesDown,\n        onMainLine: mainLine.has(commitId),\n        ...(mergeLane === undefined ? {} : { mergesIntoLane: mergeLane }),\n      },\n    ];\n  });\n\n  return {\n    rows,\n    laneCount: Math.max(\n      1,\n      ...Array.from(laneSpans.keys()).map((lane) => lane + 1),\n    ),\n  };\n};\n\nconst LANE_PX = 18;\nconst NODE_SIZE_PX = 11;\n\nexport const RecordHistoryDagRail = ({\n  row,\n  laneCount,\n  selected,\n  current,\n  rollback,\n}: {\n  row: RecordHistoryDagRow;\n  laneCount: number;\n  selected: boolean;\n  current: boolean;\n  rollback: boolean;\n}) => {\n  const width = Math.max(laneCount, row.lane + 1, 1) * LANE_PX;\n  const nodeCenter = row.lane * LANE_PX + LANE_PX / 2;\n  const vertical = (\n    lane: number,\n    half: \"top\" | \"bottom\",\n    key: string,\n  ) => {\n    const style: CSSProperties = { left: lane * LANE_PX + LANE_PX / 2 - 0.5 };\n    if (half === \"top\") {\n      style.top = 0;\n      style.height = \"50%\";\n    } else {\n      style.top = \"50%\";\n      style.bottom = 0;\n    }\n    return (\n      <span\n        key={key}\n        aria-hidden\n        className={cn(\n          \"absolute w-px\",\n          lane === row.lane && row.onMainLine\n            ? \"bg-success/70\"\n            : \"bg-muted-foreground/30\",\n        )}\n        style={style}\n      />\n    );\n  };\n  const straightLanes = row.edgesDown\n    .filter((edge) => edge.fromLane === edge.toLane)\n    .map((edge) => edge.fromLane);\n  const bottomLanes = Array.from(\n    new Set([...row.lanesOut, ...straightLanes]),\n  ).sort((a, b) => a - b);\n  return (\n    <div\n      className=\"relative shrink-0 self-stretch\"\n      style={{ width }}\n      aria-hidden\n      data-record-history-dag-lane={row.lane}\n    >\n      {row.lanesIn.map((lane) => vertical(lane, \"top\", `in-${lane}`))}\n      {bottomLanes.map((lane) => vertical(lane, \"bottom\", `out-${lane}`))}\n      {row.edgesDown.length ? (\n        <svg\n          className=\"absolute inset-x-0 overflow-visible\"\n          style={{ top: \"50%\", bottom: 0, height: \"50%\" }}\n          width={width}\n          viewBox={`0 0 ${width} 100`}\n          preserveAspectRatio=\"none\"\n        >\n          {row.edgesDown.map((edge, index) => {\n            const from = edge.fromLane * LANE_PX + LANE_PX / 2;\n            const to = edge.toLane * LANE_PX + LANE_PX / 2;\n            return edge.fromLane === edge.toLane ? (\n              <line\n                key={`edge-${index}`}\n                x1={from}\n                x2={to}\n                y1={0}\n                y2={100}\n                className={cn(\n                  \"stroke-[1.5]\",\n                  edge.fromLane === row.lane && row.onMainLine\n                    ? \"stroke-success/70\"\n                    : \"stroke-muted-foreground/30\",\n                )}\n              />\n            ) : (\n              <path\n                key={`edge-${index}`}\n                d={`M ${from} 0 C ${from} 60, ${to} 40, ${to} 100`}\n                className={cn(\n                  \"fill-none stroke-[1.5]\",\n                  rollback ? \"stroke-warning\" : \"stroke-muted-foreground/60\",\n                )}\n              />\n            );\n          })}\n        </svg>\n      ) : null}\n      <span\n        className={cn(\n          \"absolute rounded-full border-2 transition-colors\",\n          current && \"border-success/25 bg-success\",\n          !current && selected && \"border-primary bg-primary\",\n          !current && !selected && rollback && \"border-warning/30 bg-warning\",\n          !current && !selected && !rollback && row.onMainLine &&\n            \"border-success/25 bg-background\",\n          !current && !selected && !rollback && !row.onMainLine &&\n            \"border-muted-foreground/50 bg-background\",\n        )}\n        style={{\n          left: nodeCenter - NODE_SIZE_PX / 2,\n          top: `calc(50% - ${NODE_SIZE_PX / 2}px)`,\n          width: NODE_SIZE_PX,\n          height: NODE_SIZE_PX,\n        }}\n      />\n    </div>\n  );\n};\n","import { ChoicePickerCapabilityRenderer } from './choicePicker';\nimport { RecordEditorNullToggle } from './recordEditorNullToggle';\nimport { RecordEditorStringSelection } from './recordEditorStringSelection';\nimport { OrderedSelectionCapabilityRenderer } from './orderedSelection';\nimport { GalleryFieldPresentation } from './GalleryFieldPresentation';\nimport { collectionToolbarActions } from './collectionActionPresentation';\nimport { BaseInline } from '../base/BaseInline';\nimport { GalleryPresentationFieldsSchema, normalizeGalleryPresentationSettings, validateGalleryPresentationSettings } from './galleryPresentationSettings';\nimport { RecordEditorArraySorting, RecordEditorSortableArrayItem } from './recordEditorArraySorting';\nimport { RuntimeTerminalCapabilityRenderer } from './runtimeTerminal';\nimport { parseTypedSecretInput } from './typed-secret-input';\nimport { TypedDisplayCell } from './typedDisplayCell';\nimport { LocalizedDisplayText, LocalizedMessageText, resolveI18nDisplayText, resolveLocalizedDisplayParameters } from './localizedDisplayValue';\nimport { useMonkeysLocale } from '../../provider/context';\nimport { renderDateTimeValue } from './dateTimeValue';\nimport { projectReadOnlyEditorFields } from './recordEditorReadOnly';\nimport { FilePickerCapabilityRenderer } from './filePicker';\nimport { applyEditorDraftPatch } from './recordEditorDraftPatch';\nimport { fromControlValue, toControlValue, type RecordEditorDateField } from './recordEditorDate';\nimport { renderTableMessageValue } from './tableMessageValue';\nimport { RecordEditorPathSchema, type RecordEditorDraftOperation } from '@inf-monkeys-tech/monkeys';\nimport { createRecordEditorDraft, recordEditorDraftIsDirty, recordEditorPathKey } from '@inf-monkeys-tech/monkeys/runtime';\nimport { applyEditorFieldChange, editorObjects, projectEditorFields, editorLeafFields, editorDraftErrors } from './recordEditorDraft';\nimport { RecordDetailCopyValue } from \"./recordDetailCopyValue\";\nimport { NumericSeriesCapabilityRenderer } from \"./numericSeries\";\nimport { SummaryChartCapabilityRenderer } from './summaryChart';\nimport type { JsonObject, JsonValue } from \"@inf-monkeys-tech/monkeys\";\nimport {\n  closestCenter,\n  DndContext,\n  type DragEndEvent,\n  KeyboardSensor,\n  PointerSensor,\n  useSensor,\n  useSensors,\n} from \"@dnd-kit/core\";\nimport {\n  SortableContext,\n  sortableKeyboardCoordinates,\n  useSortable,\n  verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport {\n  Children,\n  Fragment,\n  useCallback,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState,\n  type ChangeEvent,\n  type CSSProperties,\n  type ReactNode,\n} from \"react\";\nimport {\n  BarChart3,\n  Calendar,\n  CalendarDays,\n  Check,\n  Clock3,\n  Columns3,\n  ChevronDown,\n  ChevronLeft,\n  ChevronRight,\n  ChevronUp,\n  Copy,\n  Database,\n  Download,\n  Edit,\n  Eye,\n  FileText,\n  FolderTree,\n  GitBranch,\n  GitCommitHorizontal,\n  GripVertical,\n  History as HistoryLucide,\n  LayoutDashboard,\n  LayoutGrid,\n  Link2,\n  Loader2,\n  HardDrive,\n  Hash,\n  Image as ImageIcon,\n  Images,\n  Maximize2,\n  MoreHorizontal,\n  PanelRightClose,\n  Paperclip,\n  Pencil,\n  Plus,\n  Puzzle,\n  RefreshCw,\n  Rows3,\n  Save,\n  Search,\n  SlidersHorizontal,\n  Table2,\n  Table as TableIcon,\n  Tag,\n  Trash2,\n  Type,\n  Braces,\n  X,\n} from \"lucide-react\";\n\nimport {\n  BaseBadge,\n  BaseButton,\n  BaseCheckbox,\n  BaseCode,\n  BaseDescriptionList,\n  BaseDialog,\n  BaseDropdownMenu,\n  BaseField,\n  BaseFieldset,\n  BaseHeading,\n  BaseInput,\n  BaseSelect,\n  BaseLayout,\n  BaseLayoutPane,\n  BaseListFooter,\n  BaseMultiSelect,\n  BaseNotice,\n  BasePanel,\n  BasePagination,\n  BaseSectionHeader,\n  BaseStack,\n  BaseTable,\n  BaseTableBody,\n  BaseTableCell,\n  BaseTableContainer,\n  BaseTableHead,\n  BaseTableHeader,\n  BaseTableRow,\n  BaseTextarea,\n  BaseToolbar,\n} from \"../base\";\nimport {\n  DataExplorerButton,\n  DataExplorerCheckbox,\n  DataExplorerCollectionFooter,\n  DataExplorerDetailShell,\n  DataExplorerDraggableTree,\n  DataExplorerDisplayActionMenu,\n  DataExplorerDisplayCard,\n  DataExplorerPage,\n  DataExplorerRecordCard,\n  DataExplorerToolbarActions,\n  DataExplorerToolbarShell,\n  DataExplorerTreeShell,\n  DataExplorerViewCollection,\n  DataExplorerViewShell,\n  DataExplorerViewTree,\n  type DataExplorerAppearance,\n  type DataExplorerDisplayAction,\n  type DataExplorerDisplayItem,\n  type DataExplorerToolbarAction,\n} from \"../data-explorer\";\nimport { DATA_EXPLORER_APPEARANCE_OPTIONS } from \"../data-explorer/appearanceOptions\";\nimport {\n  WorkbenchContentToolbar,\n  WorkbenchGalleryView,\n  WorkbenchTableView,\n  type WorkbenchGalleryColumn,\n  type WorkbenchGallerySettingsValue,\n  type WorkbenchTableViewColumn,\n} from \"../workbench\";\nimport {\n  computeRecordHistoryDag,\n  RecordHistoryDagRail,\n} from \"./recordHistoryDag\";\nimport {\n  Badge,\n  Button,\n  Checkbox,\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  FloatingPopover,\n  FloatingPopoverContent,\n  FloatingPopoverTrigger,\n  Input,\n  Label,\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectLabel,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n  Sheet,\n  SheetContent,\n  SheetTitle,\n  SheetTrigger,\n  Switch,\n  ScrollArea,\n  ScrollBar,\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n  Textarea,\n} from \"../primitives\";\nimport {\n  MediaPreviewFrame,\n  MediaPreviewImage,\n  type MediaPreviewRatio,\n} from \"../primitives/MediaPreview\";\nimport { CapabilityStatus } from \"./CapabilityStatus\";\nimport type {\n  CapabilityTranslate,\n  DesignCapabilityRenderer,\n  DesignCapabilityRendererContext,\n  GalleryLoadMoreIntentPayload,\n} from \"./contracts\";\nimport { isJsonObject } from \"./contracts\";\nimport { DESIGN_CAPABILITY_RENDERER_KEYS } from \"./neutralCatalog\";\nimport { DESIGN_CAPABILITY_I18N_KEYS } from \"./i18n\";\nimport {\n  DataContextBarCapabilityRenderer,\n  OntologyTrendMatrixCapabilityRenderer,\n} from \"./nativeAnalytics\";\nimport { OntologyManagementCapabilityRenderer } from \"./ontologyManagement\";\nimport { FeatureColumnManagerCapabilityRenderer } from \"./featureColumnManager\";\n\nconst stringValue = (value: JsonValue | undefined) =>\n  typeof value === \"string\" && value.trim() ? value : undefined;\n\nconst copyValue = (\n  value: JsonValue | undefined,\n  key: JsonValue | undefined,\n  translate: CapabilityTranslate,\n  fallbackKey: string,\n): ReactNode => {\n  const semanticKey = stringValue(key);\n  if (semanticKey) return translate(semanticKey);\n  const dataValue = stringValue(value);\n  return dataValue ?? translate(fallbackKey);\n};\n\nconst copyValueOrFallback = (\n  value: JsonValue | undefined,\n  key: JsonValue | undefined,\n  translate: CapabilityTranslate,\n  fallback: ReactNode,\n): ReactNode => {\n  const semanticKey = stringValue(key);\n  if (semanticKey) return translate(semanticKey);\n  return stringValue(value) ?? fallback;\n};\n\nconst objectArray = (value: JsonValue | undefined): JsonObject[] =>\n  Array.isArray(value) ? value.filter(isJsonObject) : [];\n\nconst readAppearanceEnum = <T extends string>(\n  value: unknown,\n  allowed: readonly T[],\n): T | undefined =>\n  typeof value === \"string\" && allowed.includes(value as T)\n    ? (value as T)\n    : undefined;\n\nconst resolveDataExplorerAppearance = (\n  value: JsonValue | undefined,\n): DataExplorerAppearance | undefined => {\n  if (!isJsonObject(value)) return undefined;\n  const appearance: DataExplorerAppearance = {};\n  const surface = readAppearanceEnum(\n    value.surface,\n    DATA_EXPLORER_APPEARANCE_OPTIONS.surface,\n  );\n  const preset = readAppearanceEnum(\n    value.preset,\n    DATA_EXPLORER_APPEARANCE_OPTIONS.preset,\n  );\n  const density = readAppearanceEnum(\n    value.density,\n    DATA_EXPLORER_APPEARANCE_OPTIONS.density,\n  );\n  const radius = readAppearanceEnum(\n    value.radius,\n    DATA_EXPLORER_APPEARANCE_OPTIONS.radius,\n  );\n  const border = readAppearanceEnum(\n    value.border,\n    DATA_EXPLORER_APPEARANCE_OPTIONS.border,\n  );\n  const background = readAppearanceEnum(\n    value.background,\n    DATA_EXPLORER_APPEARANCE_OPTIONS.background,\n  );\n  if (surface) appearance.surface = surface;\n  if (preset) appearance.preset = preset;\n  if (density) appearance.density = density;\n  if (radius) appearance.radius = radius;\n  if (border) appearance.border = border;\n  if (background) appearance.background = background;\n  return Object.keys(appearance).length ? appearance : undefined;\n};\n\nconst SearchIcon = () => (\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    strokeWidth=\"2\"\n  >\n    <circle cx=\"11\" cy=\"11\" r=\"7\" />\n    <path d=\"m20 20-3.5-3.5\" />\n  </svg>\n);\n\nconst RefreshIcon = () => (\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    strokeWidth=\"2\"\n  >\n    <path d=\"M20 11a8 8 0 1 0 2 5.5\" />\n    <path d=\"M20 4v7h-7\" />\n  </svg>\n);\n\nconst PlusIcon = () => (\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    strokeWidth=\"2\"\n  >\n    <path d=\"M12 5v14M5 12h14\" />\n  </svg>\n);\n\nconst MoreIcon = () => (\n  <svg\n    aria-hidden=\"true\"\n    viewBox=\"0 0 24 24\"\n    className=\"h-4 w-4\"\n    fill=\"currentColor\"\n  >\n    <circle cx=\"5\" cy=\"12\" r=\"1.5\" />\n    <circle cx=\"12\" cy=\"12\" r=\"1.5\" />\n    <circle cx=\"19\" cy=\"12\" r=\"1.5\" />\n  </svg>\n);\n\nconst DeleteIcon = () => (\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    strokeWidth=\"2\"\n  >\n    <path d=\"M4 7h16M9 7V4h6v3m-8 0 1 13h8l1-13M10 11v5m4-5v5\" />\n  </svg>\n);\n\nconst EditIcon = () => (\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    strokeWidth=\"2\"\n  >\n    <path d=\"m4 20 4.5-1 10-10a2.1 2.1 0 0 0-3-3l-10 10Z\" />\n    <path d=\"m14 7 3 3\" />\n  </svg>\n);\n\nconst ViewIcon = () => (\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    strokeWidth=\"2\"\n  >\n    <path d=\"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z\" />\n    <circle cx=\"12\" cy=\"12\" r=\"2.5\" />\n  </svg>\n);\n\nconst HistoryIcon = () => (\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    strokeWidth=\"2\"\n  >\n    <path d=\"M3 12a9 9 0 1 0 3-6.7L3 8\" />\n    <path d=\"M3 3v5h5M12 7v5l3 2\" />\n  </svg>\n);\n\nconst DownloadIcon = () => (\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    strokeWidth=\"2\"\n  >\n    <path d=\"M12 3v12m-4-4 4 4 4-4M4 20h16\" />\n  </svg>\n);\n\nconst UploadIcon = () => (\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    strokeWidth=\"2\"\n  >\n    <path d=\"M12 16V4m-4 4 4-4 4 4M4 20h16\" />\n  </svg>\n);\n\nconst SettingsIcon = () => (\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    strokeWidth=\"2\"\n  >\n    <circle cx=\"12\" cy=\"12\" r=\"3\" />\n    <path\n      d=\"M19 13.5v-3l-2-.7-.7-1.7.9-1.9-2.1-2.1-1.9.9-1.7-.7L10.5 2h-3l-.7 2-1.7.7-1.9-.9L1.1 6l.9 1.9-.7 1.7-2 .7v3l2 .7.7 1.7-.9 1.9 2.1 2.1 1.9-.9 1.7.7.7 2h3l.7-2 1.7-.7 1.9.9 2.1-2.1-.9-1.9.7-1.7Z\"\n      transform=\"translate(2) scale(.83)\"\n    />\n  </svg>\n);\n\nconst LinkIcon = () => (\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    strokeWidth=\"2\"\n  >\n    <path d=\"m10 13 4-4M8 16H6a4 4 0 0 1 0-8h3M16 8h2a4 4 0 1 1 0 8h-3\" />\n  </svg>\n);\n\nconst DataKindIcon = ({ kind }: { kind?: string }) => {\n  if (kind === \"folder\" || kind === \"group\") {\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        strokeWidth=\"1.8\"\n      >\n        <path d=\"M3 6.5h6l2 2h10v9.5a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z\" />\n      </svg>\n    );\n  }\n  if (kind === \"view\" || kind === \"dashboard\") {\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        strokeWidth=\"1.8\"\n      >\n        <rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"2\" />\n        <path d=\"M8 4v16M8 10h13\" />\n      </svg>\n    );\n  }\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      strokeWidth=\"1.8\"\n    >\n      <ellipse cx=\"12\" cy=\"5\" rx=\"8\" ry=\"3\" />\n      <path d=\"M4 5v7c0 1.7 3.6 3 8 3s8-1.3 8-3V5M4 12v7c0 1.7 3.6 3 8 3s8-1.3 8-3v-7\" />\n    </svg>\n  );\n};\n\nconst actionTone = (\n  action: JsonObject,\n): \"default\" | \"primary\" | \"danger\" | \"muted\" =>\n  action.destructive === true || action.presentation === \"danger\"\n    ? \"danger\"\n    : action.presentation === \"primary\"\n      ? \"primary\"\n      : action.presentation === \"icon\"\n        ? \"muted\"\n        : \"default\";\n\nconst semanticIcon = (semanticIdValue: string | undefined) => {\n  const semanticId = (semanticIdValue ?? \"\").toLowerCase();\n  if (semanticId === \"table\") return <TableIcon className=\"h-4 w-4\" />;\n  if (semanticId === \"layout-grid\") return <LayoutGrid className=\"h-4 w-4\" />;\n  if (semanticId === \"images\") return <Images className=\"h-4 w-4\" />;\n  if (/(database|ontology)/.test(semanticId))\n    return <Database className=\"h-4 w-4\" />;\n  if (/(grid|all-data|table)/.test(semanticId))\n    return <Table2 className=\"h-4 w-4\" />;\n  if (/(chart|dashboard)/.test(semanticId))\n    return <LayoutDashboard className=\"h-4 w-4\" />;\n  if (/(create|add|new|plus)/.test(semanticId)) return <PlusIcon />;\n  if (/(edit|update|rename|pencil)/.test(semanticId)) return <EditIcon />;\n  if (/(view|open|detail|preview|eye)/.test(semanticId)) return <ViewIcon />;\n  if (/(history|revision|rollback|restore|clock)/.test(semanticId))\n    return <HistoryIcon />;\n  if (/(export|download)/.test(semanticId)) return <DownloadIcon />;\n  if (/(import|upload)/.test(semanticId)) return <UploadIcon />;\n  if (/(setting|configure|column|layout)/.test(semanticId))\n    return <SettingsIcon />;\n  if (/(attach|link|relation)/.test(semanticId)) return <LinkIcon />;\n  if (/(refresh|reload)/.test(semanticId)) return <RefreshIcon />;\n  return <MoreIcon />;\n};\n\nconst actionIcon = (action: JsonObject) => {\n  if (action.destructive === true || action.presentation === \"danger\") {\n    return <DeleteIcon />;\n  }\n  const governedIcon = isJsonObject(action.icon)\n    ? stringValue(action.icon.id)\n    : undefined;\n  return semanticIcon(governedIcon ?? stringValue(action.id));\n};\n\nconst legacyRecordActionIcon = (actionId: string) => {\n  if (actionId === \"record-detail\") return <Eye className=\"mr-2 h-4 w-4\" />;\n  if (actionId === \"record-edit\") return <Edit className=\"mr-2 h-4 w-4\" />;\n  if (actionId === \"record-history\")\n    return <HistoryLucide className=\"mr-2 h-4 w-4\" />;\n  if (actionId === \"record-delete\") return <Trash2 className=\"mr-2 h-4 w-4\" />;\n  return <span className=\"mr-2 h-4 w-4\">{semanticIcon(actionId)}</span>;\n};\n\nconst actionAriaLabel = (\n  action: JsonObject,\n  translate: CapabilityTranslate,\n) => {\n  const ariaLabelKey = stringValue(action.ariaLabelKey);\n  return ariaLabelKey ? translate(ariaLabelKey) : undefined;\n};\n\nconst collectionRowActions = (\n  actions: JsonObject[],\n  itemId: string,\n  translate: CapabilityTranslate,\n  emitIntent: DesignCapabilityRendererContext[\"emitIntent\"],\n  port: \"capability.card-grid.row-action\" | \"capability.gallery.row-action\",\n  deletePort?: \"capability.card-grid.delete\",\n): Array<DataExplorerDisplayAction<JsonObject>> =>\n  actions.flatMap((action) => {\n    const actionId = stringValue(action.id);\n    if (!actionId) return [];\n    return [\n      {\n        id: actionId,\n        label: copyValueOrFallback(\n          action.label,\n          action.labelKey,\n          translate,\n          actionId,\n        ),\n        icon: actionIcon(action),\n        tone: actionTone(action),\n        disabled: action.disabled === true,\n        separatorBefore:\n          action.presentation === \"danger\" || action.destructive === true,\n        onAction: () =>\n          actionId === \"record-delete\" && deletePort\n            ? emitIntent(deletePort, { itemId })\n            : emitIntent(port, { itemId, actionId }),\n      },\n    ];\n  });\n\nconst formatCollectionTimestamp = (value: JsonValue | undefined) => {\n  if (value === null || value === undefined || value === \"\") return \"-\";\n  const date = new Date(\n    typeof value === \"number\" && value < 1_000_000_000_000\n      ? value * 1000\n      : typeof value === \"number\" || typeof value === \"string\"\n        ? value\n        : Number.NaN,\n  );\n  if (Number.isNaN(date.getTime())) return governedReadValue(value);\n  const locale =\n    typeof navigator !== \"undefined\" ? navigator.language : undefined;\n  return new Intl.DateTimeFormat(locale, {\n    year: \"numeric\",\n    month: \"numeric\",\n    day: \"numeric\",\n    hour: \"2-digit\",\n    minute: \"2-digit\",\n    second: \"2-digit\",\n    hour12: false,\n  }).format(date);\n};\n\nconst formatLegacyTableTimestamp = (value: JsonValue | undefined) => {\n  if (value === null || value === undefined || value === \"\") return \"-\";\n  const date = new Date(\n    typeof value === \"number\" && value < 1_000_000_000_000\n      ? value * 1000\n      : typeof value === \"number\" || typeof value === \"string\"\n        ? value\n        : Number.NaN,\n  );\n  if (Number.isNaN(date.getTime())) return \"-\";\n  const pad = (part: number) => String(part).padStart(2, \"0\");\n  return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}`;\n};\n\nconst formatLegacyFileSize = (value: JsonValue | undefined) => {\n  if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0)\n    return \"-\";\n  if (value === 0) return \"0 B\";\n  const units = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\"];\n  const unit = Math.min(\n    Math.floor(Math.log(value) / Math.log(1024)),\n    units.length - 1,\n  );\n  return `${Math.round((value / 1024 ** unit) * 100) / 100} ${units[unit]}`;\n};\n\nconst formatDetailTimestamp = (value: JsonValue | undefined) => {\n  if (value === null || value === undefined || value === \"\") return \"-\";\n  const date = new Date(\n    typeof value === \"number\" && value < 1_000_000_000_000\n      ? value * 1000\n      : typeof value === \"number\" || typeof value === \"string\"\n        ? value\n        : Number.NaN,\n  );\n  if (Number.isNaN(date.getTime())) return governedReadValue(value);\n  const pad = (part: number) => String(part).padStart(2, \"0\");\n  return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;\n};\n\nconst stringArray = (value: JsonValue | undefined): string[] =>\n  Array.isArray(value)\n    ? value.filter((item): item is string => typeof item === \"string\")\n    : [];\n\nconst primitiveValue = (value: JsonValue | undefined): ReactNode => {\n  if (value === null || value === undefined) return \"\";\n  if (typeof value === \"boolean\") return String(value);\n  return typeof value === \"string\" || typeof value === \"number\" ? value : \"\";\n};\n\nconst governedReadValue = (value: JsonValue | undefined): ReactNode => {\n  if (!isJsonObject(value)) return primitiveValue(value);\n  const kind = stringValue(value.kind);\n  if (kind === \"json\") {\n    if (value.dataType === 'img') {\n      const safeUrl = (url: unknown) => {\n        if (typeof url !== 'string') return undefined;\n        try { const parsed = new URL(url); return ['https:', 'http:'].includes(parsed.protocol) && !parsed.username && !parsed.password ? parsed.href : undefined; }\n        catch { return undefined; }\n      };\n      const media = (Array.isArray(value.value) ? value.value : []).flatMap(item => {\n        const entry = isJsonObject(item) ? item : {};\n        const url = safeUrl(typeof item === 'string' ? item : entry.url);\n        return url ? [{ url, thumbnail: safeUrl(entry.thumbnailUrl) || url, image: !entry.mediaType || entry.mediaType === 'image' }] : [];\n      });\n      return <span data-read-value-kind=\"feature-media\" className=\"flex flex-wrap gap-2\">{media.map((item, index) => <a key={item.url} href={item.url} target=\"_blank\" rel=\"noopener noreferrer\" onClick={event => event.stopPropagation()}>{item.image ? <img src={item.thumbnail} alt={String(index + 1)} loading=\"lazy\" className=\"h-16 w-16 rounded object-cover\" referrerPolicy=\"no-referrer\" /> : String(index + 1)}</a>)}</span>;\n    }\n    return (\n      <BaseCode display=\"block\" data-read-value-kind=\"json\">\n        {JSON.stringify(value.value ?? null, null, 2)}\n      </BaseCode>\n    );\n  }\n  if (kind !== \"tags\" && kind !== \"files\" && kind !== \"relations\") return \"\";\n  const items = objectArray(value.items);\n  return (\n    <span data-read-value-kind={kind} role=\"list\">\n      {items.map((item) => {\n        const id = stringValue(item.id);\n        if (!id) return null;\n        const label = item.labelI18n === undefined ? stringValue(item.label) ?? id : <LocalizedDisplayText value={item.labelI18n} />;\n        return (\n          <BaseBadge\n            key={`${kind}:${id}`}\n            label={label}\n            title={kind === \"files\" ? id : undefined}\n            tone={kind === \"tags\" ? \"primary\" : \"muted\"}\n            role=\"listitem\"\n          />\n        );\n      })}\n    </span>\n  );\n};\n\nconst hasGovernedReadValue = (value: JsonValue | undefined): boolean => {\n  if (value === undefined || value === null || value === \"\") return false;\n  if (!isJsonObject(value)) return true;\n  const kind = stringValue(value.kind);\n  if (kind === \"json\") return hasGovernedReadValue(value.value);\n  if (kind === \"tags\" || kind === \"files\" || kind === \"relations\") {\n    return objectArray(value.items).length > 0;\n  }\n  return false;\n};\n\nconst scalarValue = (\n  value: JsonValue | undefined,\n): string | number | boolean | null | undefined =>\n  value === null ||\n  typeof value === \"string\" ||\n  typeof value === \"number\" ||\n  typeof value === \"boolean\"\n    ? value\n    : undefined;\n\nconst governedEditorValue = (\n  value: JsonValue | undefined,\n): JsonValue | undefined => {\n  if (scalarValue(value) !== undefined) return value;\n  if (!isJsonObject(value)) return undefined;\n  const kind = stringValue(value.kind);\n  if (kind === \"json\") return value;\n  if (\n    (kind === \"tags\" || kind === \"files\" || kind === \"relations\") &&\n    Array.isArray(value.items)\n  )\n    return value;\n  return undefined;\n};\n\ntype GovernedSelectionKind = \"tags\" | \"files\" | \"relations\";\n\nconst governedSelectionKind = (\n  fieldKind: JsonValue | undefined,\n): GovernedSelectionKind | undefined => {\n  if (fieldKind === \"tags\") return \"tags\";\n  if (fieldKind === \"files\" || fieldKind === \"media\") return \"files\";\n  if (fieldKind === \"relation\") return \"relations\";\n  return undefined;\n};\n\nconst governedSelectionItems = (\n  value: JsonValue | undefined,\n  kind: GovernedSelectionKind,\n): JsonObject[] =>\n  isJsonObject(value) && value.kind === kind ? objectArray(value.items) : [];\n\nconst optionIdentity = (item: JsonObject): string | undefined =>\n  stringValue(item.id);\n\nconst mergeGovernedOptions = (\n  current: JsonObject[],\n  options: JsonObject[],\n): JsonObject[] => {\n  const merged = new Map<string, JsonObject>();\n  for (const option of [...current, ...options]) {\n    const id = optionIdentity(option);\n    if (id) merged.set(id, option);\n  }\n  return [...merged.values()];\n};\n\nconst editorSelectionValue = (\n  kind: GovernedSelectionKind,\n  ids: string[],\n  options: JsonObject[],\n): JsonObject => {\n  const optionsById = new Map(\n    options.flatMap((option) => {\n      const id = optionIdentity(option);\n      return id ? [[id, option] as const] : [];\n    }),\n  );\n  return {\n    kind,\n    items: ids.flatMap((id) => {\n      const option = optionsById.get(id);\n      if (!option) return [];\n      const label = stringValue(option.label) ?? id;\n      return [\n        {\n          id,\n          label,\n          ...(kind === \"tags\" && stringValue(option.color)\n            ? { color: String(option.color) }\n            : {}),\n          ...(kind === \"files\" && stringValue(option.mediaType)\n            ? { mediaType: String(option.mediaType) }\n            : {}),\n          ...(kind === \"relations\" && stringValue(option.ontologyId)\n            ? { ontologyId: String(option.ontologyId) }\n            : {}),\n        },\n      ];\n    }),\n  };\n};\n\ntype CollectionPaginationModel = {\n  mode: \"append\" | \"window\";\n  hasMore: boolean;\n  nextCursor?: string | null;\n  loadingMore: boolean;\n  errorCode?: string;\n  pageSize?: number;\n  returned?: number;\n  total?: number;\n  loadedCount?: number;\n  loadedStart?: number;\n  loadedEnd?: number;\n  currentPage?: number;\n  totalPages?: number;\n  hasPrevious?: boolean;\n  hasNext?: boolean;\n  loading?: boolean;\n};\n\nconst cursorPagination = (\n  value: JsonValue | undefined,\n): CollectionPaginationModel | undefined => {\n  if (!isJsonObject(value)) return undefined;\n  const mode = value.mode === \"window\" ? \"window\" : \"append\";\n  const hasMore = value.hasMore === true;\n  const nextCursor = stringValue(value.nextCursor);\n  const loadingMore = value.loadingMore === true;\n  const errorCode = stringValue(value.errorCode);\n  const safeCount = (candidate: JsonValue | undefined) =>\n    typeof candidate === \"number\" &&\n    Number.isSafeInteger(candidate) &&\n    candidate >= 0\n      ? candidate\n      : undefined;\n  return {\n    mode,\n    hasMore,\n    nextCursor,\n    loadingMore,\n    errorCode,\n    pageSize: safeCount(value.pageSize),\n    returned: safeCount(value.returned),\n    total: safeCount(value.total),\n    loadedCount: safeCount(value.loadedCount),\n    loadedStart: safeCount(value.loadedStart),\n    loadedEnd: safeCount(value.loadedEnd),\n    currentPage: safeCount(value.currentPage),\n    totalPages: safeCount(value.totalPages),\n    hasPrevious: value.hasPrevious === true,\n    hasNext: value.hasNext === true,\n    loading: value.loading === true,\n  };\n};\n\nconst CursorLoadMore = ({\n  pagination,\n  label,\n  loadingLabel,\n  onLoadMore,\n}: {\n  pagination: ReturnType<typeof cursorPagination>;\n  label: ReactNode;\n  loadingLabel: ReactNode;\n  onLoadMore: (cursor: string) => void;\n}) => {\n  if (!pagination?.hasMore || !pagination.nextCursor) return null;\n  return (\n    <div role=\"status\" aria-live=\"polite\">\n      <DataExplorerButton\n        label={pagination.loadingMore ? loadingLabel : label}\n        loading={pagination.loadingMore}\n        onClick={() => onLoadMore(pagination.nextCursor!)}\n      />\n    </div>\n  );\n};\n\nconst CursorInfiniteScroll = ({\n  pagination,\n  label,\n  loadingLabel,\n  onLoadMore,\n}: {\n  pagination: ReturnType<typeof cursorPagination>;\n  label: ReactNode;\n  loadingLabel: ReactNode;\n  onLoadMore: (cursor: string) => void;\n}) => {\n  const sentinelRef = useRef<HTMLDivElement>(null);\n  const requestedCursorRef = useRef<string>();\n  const cursor = pagination?.nextCursor;\n\n  useEffect(() => {\n    if (!pagination?.loadingMore && requestedCursorRef.current !== cursor) {\n      requestedCursorRef.current = undefined;\n    }\n  }, [cursor, pagination?.loadingMore]);\n\n  useEffect(() => {\n    const sentinel = sentinelRef.current;\n    if (!sentinel || !pagination?.hasMore || !cursor || pagination.loadingMore)\n      return;\n    if (typeof IntersectionObserver === \"undefined\") return;\n    const observer = new IntersectionObserver(\n      (entries) => {\n        if (!entries.some((entry) => entry.isIntersecting)) return;\n        if (requestedCursorRef.current === cursor) return;\n        requestedCursorRef.current = cursor;\n        onLoadMore(cursor);\n      },\n      { rootMargin: \"240px 0px\" },\n    );\n    observer.observe(sentinel);\n    return () => observer.disconnect();\n  }, [cursor, onLoadMore, pagination?.hasMore, pagination?.loadingMore]);\n\n  if (!pagination?.hasMore || !cursor) return null;\n  return (\n    <div\n      ref={sentinelRef}\n      role=\"status\"\n      aria-live=\"polite\"\n      aria-busy={pagination.loadingMore}\n      aria-label={pagination.loadingMore ? String(loadingLabel) : String(label)}\n      className=\"flex min-h-4 items-center justify-center py-1 text-xs text-muted-foreground\"\n    >\n      {pagination.loadingMore ? loadingLabel : null}\n    </div>\n  );\n};\n\nconst CollectionPaginationFooter = ({\n  pagination,\n  selectedCount,\n  loadMoreLabel,\n  loadingMoreLabel,\n  onLoadMore,\n  onPageChange,\n  onPageSizeChange,\n  legacyDataExplorer = false,\n  loadMoreInContent = false,\n  translate,\n}: {\n  pagination: ReturnType<typeof cursorPagination>;\n  selectedCount: number;\n  loadMoreLabel: ReactNode;\n  loadingMoreLabel: ReactNode;\n  onLoadMore: (cursor: string) => void;\n  onPageChange?: (page: number) => void;\n  onPageSizeChange: (pageSize: number) => void;\n  legacyDataExplorer?: boolean;\n  loadMoreInContent?: boolean;\n  translate?: CapabilityTranslate;\n}) => {\n  if (!pagination) return null;\n  const loadedEnd =\n    pagination.loadedEnd ?? pagination.loadedCount ?? pagination.returned ?? 0;\n  const loadedStart = pagination.loadedStart ?? (loadedEnd > 0 ? 1 : 0);\n  const total = pagination.total ?? loadedEnd;\n  const pageSize = pagination.pageSize ?? Math.max(1, loadedEnd);\n  const currentPage = Math.max(1, Math.ceil(loadedEnd / Math.max(1, pageSize)));\n  if (pagination.mode === \"window\") {\n    const windowPage = pagination.currentPage ?? 1;\n    const loading = pagination.loading === true;\n    return (\n      <BaseListFooter\n        total={total}\n        loadedStart={loadedStart}\n        loadedEnd={loadedEnd}\n        selectedCount={selectedCount}\n        page={windowPage}\n        pageCount={pagination.totalPages}\n        pageSize={pageSize}\n        pageSizeOptions={[20, 50, 100, 200, 500, 1000]}\n        paginationMode=\"compact\"\n        hasPrevious={!loading && pagination.hasPrevious === true}\n        hasNext={!loading && pagination.hasNext === true}\n        loading={loading}\n        onPageChange={(page) => {\n          if (!loading) onPageChange?.(page);\n        }}\n        onPageSizeChange={onPageSizeChange}\n      />\n    );\n  }\n  return (\n    <>\n      {!loadMoreInContent && <CursorInfiniteScroll\n        pagination={pagination}\n        label={loadMoreLabel}\n        loadingLabel={loadingMoreLabel}\n        onLoadMore={onLoadMore}\n      />}\n      <DataExplorerCollectionFooter\n        selectedCount={selectedCount}\n        selectedLabel={\n          legacyDataExplorer && translate\n            ? translate(\"components.data.card-view.selected-count\", {\n                count: selectedCount,\n              })\n            : undefined\n        }\n        loadedStart={loadedStart}\n        loadedEnd={loadedEnd}\n        total={Math.max(total, loadedEnd)}\n        loadedLabel={\n          legacyDataExplorer && translate\n            ? translate(\n                loadedStart > 0\n                  ? \"components.data.card-view.loaded-window\"\n                  : \"components.data.card-view.loaded-count\",\n                loadedStart > 0\n                  ? {\n                      start: loadedStart,\n                      end: loadedEnd,\n                      total: Math.max(total, loadedEnd),\n                    }\n                  : { loaded: loadedEnd, total: Math.max(total, loadedEnd) },\n              )\n            : undefined\n        }\n        currentPage={currentPage}\n        pageSize={pageSize}\n        pageSizeOptions={[20, 50, 100, 200, 500, 1000]}\n        loading={pagination.loadingMore}\n        tone=\"hard-edge\"\n        classNames={legacyDataExplorer ? { summary: \"min-w-max\" } : undefined}\n        onJumpToPage={(targetPage) => {\n          const cursor = stringValue(pagination.nextCursor);\n          if (targetPage === currentPage + 1 && pagination.hasMore && cursor)\n            onLoadMore(cursor);\n        }}\n        onPageSizeChange={onPageSizeChange}\n      />\n    </>\n  );\n};\n\nconst galleryPagination = (\n  value: JsonValue | undefined,\n): CollectionPaginationModel | undefined => {\n  if (!isJsonObject(value)) return undefined;\n  const hasMore = value.hasMore;\n  const nextCursor = value.nextCursor;\n  const loadingMore = value.loadingMore;\n  const errorCode = stringValue(value.errorCode);\n  const safeCount = (candidate: JsonValue | undefined) =>\n    typeof candidate === \"number\" &&\n    Number.isSafeInteger(candidate) &&\n    candidate >= 0\n      ? candidate\n      : undefined;\n  if (\n    typeof hasMore !== \"boolean\" ||\n    typeof loadingMore !== \"boolean\" ||\n    (hasMore && !stringValue(nextCursor)) ||\n    (!hasMore && nextCursor !== null && nextCursor !== undefined) ||\n    (!hasMore && loadingMore) ||\n    (loadingMore && errorCode !== undefined)\n  )\n    return undefined;\n  return {\n    mode: \"append\",\n    hasMore,\n    nextCursor: hasMore ? String(nextCursor) : null,\n    loadingMore,\n    ...(errorCode ? { errorCode } : {}),\n    ...(safeCount(value.pageSize) !== undefined\n      ? { pageSize: safeCount(value.pageSize) }\n      : {}),\n    ...(safeCount(value.returned) !== undefined\n      ? { returned: safeCount(value.returned) }\n      : {}),\n    ...(safeCount(value.total) !== undefined\n      ? { total: safeCount(value.total) }\n      : {}),\n    ...(safeCount(value.loadedCount) !== undefined\n      ? { loadedCount: safeCount(value.loadedCount) }\n      : {}),\n    ...(safeCount(value.loadedStart) !== undefined\n      ? { loadedStart: safeCount(value.loadedStart) }\n      : {}),\n    ...(safeCount(value.loadedEnd) !== undefined\n      ? { loadedEnd: safeCount(value.loadedEnd) }\n      : {}),\n  };\n};\n\nconst ShellLayoutCapabilityView = ({\n  model,\n  children,\n  childNodes,\n  childrenBySlot,\n  translate,\n  emitIntent,\n}: Parameters<DesignCapabilityRenderer>[0]) => {\n  const clampSidebarWidth = (width: number) =>\n    Math.min(600, Math.max(200, Math.round(width)));\n  const clampAsideWidth = (width: number) =>\n    Math.min(560, Math.max(320, Math.round(width)));\n  const [sidebarWidth, setSidebarWidth] = useState(() => {\n    const configuredWidth =\n      typeof model.sidebarWidth === \"number\" ? model.sidebarWidth : 256;\n    return clampSidebarWidth(configuredWidth);\n  });\n  const sidebarResizeRef = useRef<{\n    pointerId: number;\n    startX: number;\n    startWidth: number;\n    currentWidth: number;\n  } | null>(null);\n  const [sidebarResizing, setSidebarResizing] = useState(false);\n  const [asideWidth, setAsideWidth] = useState(() =>\n    clampAsideWidth(\n      typeof model.asideWidth === \"number\" ? model.asideWidth : 400,\n    ),\n  );\n  const asideResizeRef = useRef<{\n    pointerId: number;\n    startX: number;\n    startWidth: number;\n    currentWidth: number;\n  } | null>(null);\n  const sidebarCollapsed = model.sidebarCollapsed === true;\n  const sidebarCollapsible = model.sidebarCollapsible !== false;\n  const sidebarResizable = model.sidebarResizable !== false;\n  const asideResizable = model.asideResizable !== false;\n  const [narrow, setNarrow] = useState(false);\n  const [mobileSidebarOpen, setMobileSidebarOpen] = useState(false);\n  useEffect(() => {\n    if (model.mobileSidebar !== 'drawer') return;\n    const query = window.matchMedia('(max-width: 767px)');\n    const update = () => {\n      setNarrow(query.matches);\n      if (!query.matches) setMobileSidebarOpen(false);\n    };\n    update();\n    query.addEventListener('change', update);\n    return () => query.removeEventListener('change', update);\n  }, [model.mobileSidebar]);\n  useEffect(() => {\n    if (typeof model.sidebarWidth === \"number\") {\n      setSidebarWidth(clampSidebarWidth(model.sidebarWidth));\n    }\n  }, [model.sidebarWidth]);\n  useEffect(() => {\n    if (typeof model.asideWidth === \"number\") {\n      setAsideWidth(clampAsideWidth(model.asideWidth));\n    }\n  }, [model.asideWidth]);\n  const sidebarLabel = stringValue(model.sidebarLabelKey)\n    ? translate(String(model.sidebarLabelKey))\n    : undefined;\n  const asideLabel = stringValue(model.asideLabelKey)\n    ? translate(String(model.asideLabelKey))\n    : undefined;\n  const main = childrenBySlot.main ?? (childNodes?.length\n    ? Object.entries(childrenBySlot).filter(([slot]) => !['header', 'sidebar', 'aside', 'footer', 'notices', 'overlay'].includes(slot)).map(([, content]) => content)\n    : children);\n  const drawerSidebar = model.mobileSidebar === 'drawer' && narrow && childrenBySlot.sidebar;\n  const overlay = childrenBySlot.overlay ? (\n    <div\n      className=\"pointer-events-none fixed inset-0 z-50 [&>*]:pointer-events-auto\"\n      data-monkeys-shell-overlay\n    >\n      {childrenBySlot.overlay}\n    </div>\n  ) : null;\n\n  if (model.variant === \"region-stack\") {\n    return <>{children}</>;\n  }\n\n  if (model.variant === \"data-explorer\") {\n    const appearance = resolveDataExplorerAppearance(model.appearance);\n    const resizeSidebar = (nextWidth: number) => {\n      const width = clampSidebarWidth(nextWidth);\n      setSidebarWidth(width);\n      if (sidebarResizeRef.current)\n        sidebarResizeRef.current.currentWidth = width;\n      return width;\n    };\n    const resizeAside = (nextWidth: number) => {\n      const width = clampAsideWidth(nextWidth);\n      setAsideWidth(width);\n      if (asideResizeRef.current) asideResizeRef.current.currentWidth = width;\n      return width;\n    };\n    const content = (\n      <DataExplorerViewShell footer={childrenBySlot.footer}>\n        {main}\n      </DataExplorerViewShell>\n    );\n    return (\n      <>\n        <DataExplorerPage\n          appearance={appearance}\n          tree={\n            childrenBySlot.sidebar ? (\n              <div\n                className=\"relative h-full min-h-0\"\n                style={{\n                  width: sidebarCollapsed\n                    ? 0\n                    : `min(${sidebarWidth}px, max(200px, calc(100vw - 480px)))`,\n                  transitionProperty: \"width\",\n                  transitionDuration: sidebarResizing ? \"0ms\" : \"280ms\",\n                  transitionTimingFunction: \"cubic-bezier(0.22, 1, 0.36, 1)\",\n                }}\n                data-sidebar-collapsed={sidebarCollapsed ? \"true\" : \"false\"}\n              >\n                {sidebarCollapsed ? null : (\n                  <DataExplorerTreeShell title={sidebarLabel}>\n                    {childrenBySlot.sidebar}\n                  </DataExplorerTreeShell>\n                )}\n                {!sidebarCollapsed ? (\n                  <div\n                    aria-hidden=\"true\"\n                    className=\"pointer-events-none absolute bottom-14 right-0 top-14 z-40 w-px bg-border/80\"\n                  />\n                ) : null}\n                {sidebarCollapsible ? (\n                  <div className=\"absolute -right-3 top-1/2 z-30 -translate-y-1/2\">\n                    <Button\n                      type=\"button\"\n                      variant=\"outline\"\n                      size=\"icon\"\n                      title={translate(\n                        sidebarCollapsed\n                          ? DESIGN_CAPABILITY_I18N_KEYS.shellLayout\n                              .expandSidebar\n                          : DESIGN_CAPABILITY_I18N_KEYS.shellLayout\n                              .collapseSidebar,\n                      )}\n                      aria-label={translate(\n                        sidebarCollapsed\n                          ? DESIGN_CAPABILITY_I18N_KEYS.shellLayout\n                              .expandSidebar\n                          : DESIGN_CAPABILITY_I18N_KEYS.shellLayout\n                              .collapseSidebar,\n                      )}\n                      className=\"h-10 w-6 rounded-md bg-background shadow-md transition-[box-shadow,background-color] duration-200\"\n                      onClick={() =>\n                        emitIntent(\"capability.shell-layout.sidebar-collapse\", {\n                          collapsed: !sidebarCollapsed,\n                        })\n                      }\n                    >\n                      {sidebarCollapsed ? (\n                        <ChevronRight className=\"h-4 w-4\" />\n                      ) : (\n                        <ChevronLeft className=\"h-4 w-4\" />\n                      )}\n                    </Button>\n                  </div>\n                ) : null}\n                {!sidebarCollapsed && sidebarResizable ? (\n                  <button\n                    type=\"button\"\n                    aria-label={translate(\n                      DESIGN_CAPABILITY_I18N_KEYS.shellLayout.resizeSidebar,\n                    )}\n                    data-testid=\"data-sidebar-resize-handle\"\n                    className=\"group/resize absolute -right-2 top-0 z-40 h-full w-4 cursor-col-resize touch-none select-none bg-transparent outline-none opacity-100 focus-visible:ring-2 focus-visible:ring-primary/35\"\n                    onPointerDown={(event) => {\n                      setSidebarResizing(true);\n                      sidebarResizeRef.current = {\n                        pointerId: event.pointerId,\n                        startX: event.clientX,\n                        startWidth: sidebarWidth,\n                        currentWidth: sidebarWidth,\n                      };\n                      event.currentTarget.setPointerCapture(event.pointerId);\n                    }}\n                    onPointerMove={(event) => {\n                      const resize = sidebarResizeRef.current;\n                      if (!resize || resize.pointerId !== event.pointerId)\n                        return;\n                      resizeSidebar(\n                        resize.startWidth + event.clientX - resize.startX,\n                      );\n                    }}\n                    onPointerUp={(event) => {\n                      if (\n                        sidebarResizeRef.current?.pointerId === event.pointerId\n                      ) {\n                        emitIntent(\"capability.shell-layout.sidebar-resize\", {\n                          width: sidebarResizeRef.current.currentWidth,\n                        });\n                        sidebarResizeRef.current = null;\n                        setSidebarResizing(false);\n                        event.currentTarget.releasePointerCapture(\n                          event.pointerId,\n                        );\n                      }\n                    }}\n                    onPointerCancel={() => {\n                      sidebarResizeRef.current = null;\n                      setSidebarResizing(false);\n                    }}\n                  >\n                    <span className=\"pointer-events-none absolute inset-y-0 left-1/2 w-px -translate-x-1/2 bg-primary/0 transition-colors group-hover/resize:bg-primary/30 group-active/resize:bg-primary/50\" />\n                  </button>\n                ) : null}\n              </div>\n            ) : undefined\n          }\n          controls={childrenBySlot.header}\n          notices={childrenBySlot.notices}\n          content={\n            childrenBySlot.aside ? (\n              <div\n                className=\"flex min-h-0 min-w-0 flex-1 overflow-hidden\"\n                data-data-explorer-content-with-detail=\"true\"\n              >\n                <div className=\"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden\">\n                  {content}\n                </div>\n                <div\n                  className=\"monkeys-data-explorer-detail-slot relative min-h-0 shrink-0 border-l border-border/55 dark:border-border/45\"\n                  style={{ width: `${asideWidth}px` }}\n                >\n                  {asideResizable ? (\n                    <button\n                      type=\"button\"\n                      aria-label={translate(\n                        DESIGN_CAPABILITY_I18N_KEYS.shellLayout.resizeAside,\n                      )}\n                      className=\"group/resize absolute inset-y-0 left-0 z-20 w-3 -translate-x-1/2 cursor-col-resize touch-none bg-transparent outline-none focus-visible:ring-2 focus-visible:ring-primary/35\"\n                      onPointerDown={(event) => {\n                        asideResizeRef.current = {\n                          pointerId: event.pointerId,\n                          startX: event.clientX,\n                          startWidth: asideWidth,\n                          currentWidth: asideWidth,\n                        };\n                        event.currentTarget.setPointerCapture(event.pointerId);\n                      }}\n                      onPointerMove={(event) => {\n                        const resize = asideResizeRef.current;\n                        if (!resize || resize.pointerId !== event.pointerId)\n                          return;\n                        resizeAside(\n                          resize.startWidth - event.clientX + resize.startX,\n                        );\n                      }}\n                      onPointerUp={(event) => {\n                        if (\n                          asideResizeRef.current?.pointerId === event.pointerId\n                        ) {\n                          emitIntent(\"capability.shell-layout.aside-resize\", {\n                            width: asideResizeRef.current.currentWidth,\n                          });\n                          asideResizeRef.current = null;\n                          event.currentTarget.releasePointerCapture(\n                            event.pointerId,\n                          );\n                        }\n                      }}\n                      onPointerCancel={() => {\n                        asideResizeRef.current = null;\n                      }}\n                    >\n                      <span className=\"pointer-events-none absolute inset-y-0 left-1/2 w-px -translate-x-1/2 bg-primary/0 transition-colors group-hover/resize:bg-primary/45\" />\n                    </button>\n                  ) : null}\n                  <aside\n                    aria-label={asideLabel}\n                    className=\"h-full min-h-0 w-full overflow-auto\"\n                  >\n                    {childrenBySlot.aside}\n                  </aside>\n                </div>\n              </div>\n            ) : (\n              content\n            )\n          }\n          className={model.fullHeight === true ? \"h-full\" : undefined}\n          classNames={{\n            sidebar: \"overflow-visible\",\n            main: \"min-w-0\",\n            content: \"min-w-0\",\n          }}\n        />\n        {overlay}\n      </>\n    );\n  }\n\n  return (\n    <>\n      <BaseLayout\n        header={drawerSidebar ? <>\n          <Sheet open={mobileSidebarOpen} onOpenChange={setMobileSidebarOpen}>\n            <SheetTrigger asChild><BaseButton label={sidebarLabel || translate(DESIGN_CAPABILITY_I18N_KEYS.shellLayout.expandSidebar)} /></SheetTrigger>\n            <SheetContent side=\"left\" className=\"flex w-[min(22rem,calc(100vw-1.5rem))] flex-col p-4\" aria-describedby={undefined}>\n              <SheetTitle>{sidebarLabel || translate(DESIGN_CAPABILITY_I18N_KEYS.shellLayout.expandSidebar)}</SheetTitle>\n              {childrenBySlot.sidebar}\n            </SheetContent>\n          </Sheet>\n          {childrenBySlot.header}\n        </> : childrenBySlot.header}\n        sidebar={drawerSidebar ? undefined : childrenBySlot.sidebar}\n        aside={childrenBySlot.aside}\n        footer={childrenBySlot.footer}\n        sidebarLabel={sidebarLabel}\n        asideLabel={asideLabel}\n        sidebarSize={typeof model.sidebarWidth === 'number' ? model.sidebarWidth : undefined}\n        asideSize={typeof model.asideWidth === 'number' ? model.asideWidth : undefined}\n        gap=\"var(--global-spacing)\"\n        fullHeight={model.fullHeight === true}\n        classNames={{\n          body: 'max-md:!grid-cols-1 max-md:overflow-y-auto',\n          sidebar: 'max-md:min-h-40 max-md:max-h-80',\n          main: 'max-md:min-h-80',\n          aside: 'max-md:min-h-40',\n        }}\n      >\n        {childrenBySlot.notices}\n        {main}\n      </BaseLayout>\n      {overlay}\n    </>\n  );\n};\n\nexport const ShellLayoutCapabilityRenderer: DesignCapabilityRenderer = (\n  props,\n) => <ShellLayoutCapabilityView {...props} />;\n\nexport const SidebarFilterCapabilityRenderer: DesignCapabilityRenderer = ({\n  model,\n  childrenBySlot,\n  translate,\n  emitIntent,\n}) => {\n  const search = isJsonObject(model.search) ? model.search : undefined;\n  const groups = objectArray(model.groups);\n  const title = copyValue(\n    model.title,\n    model.titleKey,\n    translate,\n    DESIGN_CAPABILITY_I18N_KEYS.sidebarFilter.title,\n  );\n\n  return (\n    <BaseLayoutPane as=\"section\" scrollable>\n      <BaseStack gap=\"var(--global-spacing)\">\n        {childrenBySlot.header}\n        <BaseHeading level={2} size=\"sm\">\n          {title}\n        </BaseHeading>\n        {search ? (\n          <BaseInput\n            type=\"search\"\n            value={stringValue(search.value) ?? \"\"}\n            aria-label={translate(\n              stringValue(search.labelKey) ??\n                DESIGN_CAPABILITY_I18N_KEYS.sidebarFilter.searchLabel,\n            )}\n            placeholder={translate(\n              stringValue(search.placeholderKey) ??\n                DESIGN_CAPABILITY_I18N_KEYS.sidebarFilter.searchPlaceholder,\n            )}\n            onChange={(event: ChangeEvent<HTMLInputElement>) =>\n              emitIntent(\"capability.sidebar-filter.search\", {\n                parameterName: stringValue(search.parameterName) ?? \"\",\n                value: event.currentTarget.value,\n              })\n            }\n          />\n        ) : null}\n        {groups.map((group) => {\n          const groupId = stringValue(group.id);\n          if (!groupId) return null;\n          return (\n            <BaseFieldset\n              key={groupId}\n              legend={copyValue(\n                group.label,\n                group.labelKey,\n                translate,\n                DESIGN_CAPABILITY_I18N_KEYS.sidebarFilter.groupLabel,\n              )}\n            >\n              {objectArray(group.options).map((option) => {\n                const optionId = stringValue(option.id);\n                if (!optionId) return null;\n                const selected = option.selected === true;\n                return (\n                  <BaseCheckbox\n                    key={optionId}\n                    checked={selected}\n                    disabled={option.disabled === true}\n                    label={copyValue(\n                      option.label,\n                      option.labelKey,\n                      translate,\n                      DESIGN_CAPABILITY_I18N_KEYS.sidebarFilter.optionLabel,\n                    )}\n                    onChange={(event) =>\n                      emitIntent(\"capability.sidebar-filter.toggle\", {\n                        parameterName: stringValue(group.parameterName) ?? \"\",\n                        groupId,\n                        optionId,\n                        selected: event.currentTarget.checked,\n                      })\n                    }\n                  />\n                );\n              })}\n            </BaseFieldset>\n          );\n        })}\n        {childrenBySlot.footer}\n      </BaseStack>\n    </BaseLayoutPane>\n  );\n};\n\nexport const GalleryCapabilityRenderer: DesignCapabilityRenderer = ({\n  node,\n  model,\n  childrenBySlot,\n  translate,\n  emitIntent,\n  resolveMedia = () => undefined,\n  loading,\n  pendingActionInvocations,\n}) => {\n  const items = objectArray(model.items);\n  const selected = items\n    .filter((item) => item.selected === true)\n    .flatMap((item) => (stringValue(item.id) ? [String(item.id)] : []));\n  const pagination = galleryPagination(model.pagination);\n  if (items.length === 0 && pagination?.hasMore !== true) {\n    return <CapabilityStatus kind=\"empty\" translate={translate} />;\n  }\n  const requestNextPage = () => {\n    if (!pagination?.hasMore || pagination.loadingMore) return;\n    const cursor = stringValue(pagination.nextCursor);\n    if (!cursor) return;\n    const payload: GalleryLoadMoreIntentPayload = { cursor };\n    emitIntent(\"capability.gallery.load-more\", payload);\n  };\n  const paginationControl = pagination?.errorCode ? (\n    <CapabilityStatus\n      kind=\"error\"\n      code={pagination.errorCode}\n      onRetry={requestNextPage}\n      translate={translate}\n    />\n  ) : pagination ? (\n    <CollectionPaginationFooter\n      pagination={pagination}\n      selectedCount={selected.length}\n      loadMoreLabel={translate(DESIGN_CAPABILITY_I18N_KEYS.gallery.loadMore)}\n      loadingMoreLabel={translate(\n        DESIGN_CAPABILITY_I18N_KEYS.gallery.loadingMore,\n      )}\n      onLoadMore={(cursor) =>\n        emitIntent(\"capability.gallery.load-more\", { cursor })\n      }\n      onPageSizeChange={(pageSize) =>\n        emitIntent(\"capability.gallery.page-size-change\", { pageSize })\n      }\n    />\n  ) : null;\n  if (model.galleryFields !== undefined || model.gallerySettings !== undefined) return <GalleryFieldPresentation renderActionIcon={actionIcon} kind=\"gallery\" model={model} translate={translate} emitIntent={emitIntent} resolveMedia={resolveMedia} loading={loading} pendingActionInvocations={pendingActionInvocations} header={childrenBySlot.header} footer={<>{paginationControl}{childrenBySlot.footer}</>} />;\n  const displayItems = items.flatMap((item) => {\n    const itemId = stringValue(item.id);\n    if (!itemId) return [];\n    const media = isJsonObject(item.media) ? item.media : undefined;\n    const mediaReference =\n      media && isJsonObject(media.reference) ? media.reference : undefined;\n    const mediaId = mediaReference ? stringValue(mediaReference.id) : undefined;\n    const mediaAlt = media ? stringValue(media.alt) : undefined;\n    const mediaAspectRatio = media ? stringValue(media.aspectRatio) : undefined;\n    const resolvedMedia = mediaId ? resolveMedia({ id: mediaId }) : undefined;\n    const mediaNode =\n      media && mediaId && mediaAlt ? (\n        <MediaPreviewFrame\n          aspectRatio={\n            (mediaAspectRatio as MediaPreviewRatio | undefined) ?? \"1:1\"\n          }\n          data-media-placeholder={stringValue(media.placeholder) ?? \"neutral\"}\n        >\n          {resolvedMedia ? (\n            <MediaPreviewImage\n              src={resolvedMedia.src}\n              alt={mediaAlt}\n              fit=\"cover\"\n            />\n          ) : (\n            <div\n              aria-hidden=\"true\"\n              className=\"size-full bg-muted\"\n              data-media-unresolved={mediaId}\n            />\n          )}\n        </MediaPreviewFrame>\n      ) : undefined;\n    return [\n      {\n        id: itemId,\n        title: copyValue(\n          item.title,\n          item.titleKey,\n          translate,\n          DESIGN_CAPABILITY_I18N_KEYS.gallery.itemTitle,\n        ),\n        description:\n          stringValue(item.description) ??\n          (stringValue(item.descriptionKey)\n            ? translate(String(item.descriptionKey))\n            : undefined),\n        selected: item.selected === true,\n        disabled: item.disabled === true,\n        ...(mediaId && mediaAlt\n          ? {\n              media: {\n                id: mediaId,\n                kind: \"image\" as const,\n                alt: mediaAlt,\n                node: mediaNode,\n              },\n            }\n          : {}),\n        source: item,\n      } satisfies DataExplorerDisplayItem<JsonObject>,\n    ];\n  });\n\n  const presentation = isJsonObject(model.presentation)\n    ? model.presentation\n    : undefined;\n  const legacyDataExplorer = presentation?.kind === \"legacy-data-explorer\";\n  if (legacyDataExplorer) {\n    const galleryColumns: WorkbenchGalleryColumn[] = [\n      {\n        key: \"galleryPreview\",\n        label: translate(\"components.data-v2.gallery.fields.preview\"),\n        renderType: \"image\",\n      },\n      {\n        key: \"name\",\n        label: translate(\"components.data-v2.gallery.fields.name\"),\n      },\n      {\n        key: \"description\",\n        label: translate(\"components.data-v2.gallery.fields.description\"),\n        wrap: true,\n      },\n      {\n        key: \"keywords\",\n        label: translate(\"components.data-v2.gallery.fields.keywords\"),\n      },\n      {\n        key: \"type\",\n        label: translate(\"components.data-v2.gallery.fields.type\"),\n      },\n      {\n        key: \"updatedAt\",\n        label: translate(\"components.data-v2.gallery.fields.updated\"),\n      },\n    ];\n    const galleryRows = items.flatMap((item) => {\n      const id = stringValue(item.id);\n      if (!id) return [];\n      const metadata = new Map(\n        objectArray(item.metadata).flatMap((entry) => {\n          const key = stringValue(entry.id);\n          return key ? [[key, entry.value] as const] : [];\n        }),\n      );\n      const media = isJsonObject(item.media) ? item.media : undefined;\n      const reference =\n        media && isJsonObject(media.reference) ? media.reference : undefined;\n      const resolved =\n        reference && stringValue(reference.id)\n          ? resolveMedia({ id: String(reference.id) })\n          : undefined;\n      return [\n        {\n          id,\n          name: stringValue(item.title) ?? id,\n          description: stringValue(item.description) ?? \"\",\n          galleryPreview: resolved?.src ?? \"\",\n          // The legacy gallery intentionally renders an absent keyword list as\n          // blank while retaining the dash placeholder for other absent scalar\n          // fields such as type and preview.\n          keywords: metadata.get(\"keywords\") ?? [],\n          type: metadata.get(\"type\") ?? null,\n          updatedAt: metadata.get(\"updatedAt\") ?? null,\n          selected: item.selected === true,\n        },\n      ];\n    });\n    return (\n      <DataExplorerViewShell\n        className=\"col-span-full h-full\"\n        header={childrenBySlot.header}\n        footer={\n          <>\n            <CollectionPaginationFooter\n              pagination={pagination}\n              selectedCount={selected.length}\n              legacyDataExplorer\n              loadMoreInContent\n              translate={translate}\n              loadMoreLabel={translate(\n                DESIGN_CAPABILITY_I18N_KEYS.gallery.loadMore,\n              )}\n              loadingMoreLabel={translate(\n                DESIGN_CAPABILITY_I18N_KEYS.gallery.loadingMore,\n              )}\n              onLoadMore={(cursor) =>\n                emitIntent(\"capability.gallery.load-more\", { cursor })\n              }\n              onPageSizeChange={(pageSize) =>\n                emitIntent(\"capability.gallery.page-size-change\", { pageSize })\n              }\n            />\n            {childrenBySlot.footer}\n          </>\n        }\n      >\n        <div className=\"min-h-0 flex-1 overflow-auto p-4\">\n          <WorkbenchGalleryView\n            rows={galleryRows}\n            columns={galleryColumns}\n            selectedRowKey={selected.length === 1 ? selected[0] : undefined}\n            onRowClick={(item: Record<string, JsonValue>) =>\n              emitIntent(\"capability.gallery.activate\", {\n                itemId: String(item.id),\n              })\n            }\n            galleryFieldKey=\"galleryPreview\"\n            galleryDensity=\"comfortable\"\n            galleryBentoColumns={2}\n            galleryDetailVisibility=\"limit\"\n            galleryDetailLimit={4}\n            galleryGridColumns=\"auto\"\n            isMasonry={false}\n            getFieldValue={(\n              column: WorkbenchGalleryColumn,\n              row: Record<string, JsonValue>,\n            ) => row[column.key]}\n            getDisplayText={(value: unknown) => {\n              if (value === null || value === undefined || value === \"\")\n                return \"-\";\n              if (Array.isArray(value)) return value.map(String).join(\", \");\n              return String(value);\n            }}\n            renderFieldValue={(\n              column: WorkbenchGalleryColumn,\n              row: Record<string, JsonValue>,\n            ) => {\n              const raw = row[column.key];\n              const value =\n                column.key === \"updatedAt\"\n                  ? formatCollectionTimestamp(raw)\n                  : raw === null || raw === undefined || raw === \"\"\n                    ? \"-\"\n                    : Array.isArray(raw)\n                      ? raw.map(String).join(\", \")\n                      : String(raw);\n              return (\n                <span\n                  className=\"block min-w-0 max-w-full truncate\"\n                  title={String(value)}\n                >\n                  {value}\n                </span>\n              );\n            }}\n            isMediaColumn={(\n              column: WorkbenchGalleryColumn,\n              row: Record<string, JsonValue>,\n            ) =>\n              column.key === \"galleryPreview\" &&\n              typeof row.galleryPreview === \"string\" &&\n              row.galleryPreview.length > 0\n            }\n            isImageField={(column: WorkbenchGalleryColumn, value: unknown) =>\n              column.key === \"galleryPreview\" &&\n              typeof value === \"string\" &&\n              value.length > 0\n            }\n            getImagePreviewSrc={(value: unknown) =>\n              typeof value === \"string\" ? value : \"\"\n            }\n            isTitleCandidate={(column: WorkbenchGalleryColumn) =>\n              column.key === \"name\"\n            }\n            isSummaryCandidate={(column: WorkbenchGalleryColumn) =>\n              column.key === \"description\"\n            }\n            className=\"items-start\"\n          />\n          {pagination?.mode !== 'window' && pagination?.hasMore ? <CursorInfiniteScroll pagination={pagination} label={translate(DESIGN_CAPABILITY_I18N_KEYS.gallery.loadMore)} loadingLabel={translate(DESIGN_CAPABILITY_I18N_KEYS.gallery.loadingMore)} onLoadMore={cursor => emitIntent('capability.gallery.load-more', { cursor })} /> : null}\n          {pagination?.hasMore === false && galleryRows.length > 0 ? (\n            <div className=\"py-8 text-center text-sm text-muted-foreground\">\n              {translate(\"components.data.card-view.all-loaded\", {\n                total:\n                  pagination.total ??\n                  pagination.loadedEnd ??\n                  pagination.returned ??\n                  galleryRows.length,\n              })}\n            </div>\n          ) : null}\n        </div>\n      </DataExplorerViewShell>\n    );\n  }\n\n  return (\n    <DataExplorerViewShell\n      className=\"col-span-full\"\n      footer={\n        <>\n          {paginationControl}\n          {childrenBySlot.footer}\n        </>\n      }\n    >\n      {childrenBySlot.header}\n      <DataExplorerViewCollection\n        items={displayItems}\n        activeViewId=\"gallery\"\n        layout=\"grid\"\n        selectedIds={selected}\n        getItemId={(item) => item.id}\n        classNames={{ items: \"p-4\" }}\n        itemsStyle={{\n          gridTemplateColumns: `repeat(${node.layout.columns ?? 1}, minmax(0, 1fr))`,\n        }}\n        onOpenItem={(item) =>\n          emitIntent(\"capability.gallery.activate\", { itemId: item.id })\n        }\n        onSelectionChange={(itemIds) =>\n          emitIntent(\"capability.gallery.selection-change\", { itemIds })\n        }\n        renderItem={({\n          item,\n          selected: itemSelected,\n          onOpen,\n          onSelectionChange,\n        }) => (\n          <DataExplorerRecordCard\n            item={item}\n            selected={itemSelected}\n            disabled={item.disabled}\n            media={item.media?.node}\n            actions={\n              <DataExplorerButton\n                label={translate(\n                  stringValue(item.source.actionLabelKey) ??\n                    DESIGN_CAPABILITY_I18N_KEYS.gallery.itemActivate,\n                )}\n                disabled={item.disabled}\n                stopPropagation\n                onClick={() =>\n                  emitIntent(\"capability.gallery.activate\", { itemId: item.id })\n                }\n              />\n            }\n            footer={\n              <BaseDescriptionList\n                items={objectArray(item.source.metadata).flatMap((entry) => {\n                  const entryId = stringValue(entry.id);\n                  return entryId\n                    ? [\n                        {\n                          term: copyValueOrFallback(\n                            entry.label,\n                            entry.labelKey,\n                            translate,\n                            entryId,\n                          ),\n                          value: governedReadValue(entry.value),\n                        },\n                      ]\n                    : [];\n                })}\n              />\n            }\n            selectLabel={translate(DESIGN_CAPABILITY_I18N_KEYS.cardGrid.select)}\n            unselectLabel={translate(\n              DESIGN_CAPABILITY_I18N_KEYS.cardGrid.select,\n            )}\n            onClick={() => onOpen?.(item)}\n            onToggleSelection={() =>\n              onSelectionChange?.(item, itemSelected !== true)\n            }\n          />\n        )}\n      />\n    </DataExplorerViewShell>\n  );\n};\n\ninterface OntologyNavigatorTreeNode {\n  id: string;\n  label: ReactNode;\n  description?: ReactNode;\n  icon?: ReactNode;\n  meta?: ReactNode;\n  disabled?: boolean;\n  selectable: boolean;\n  collapsible: boolean;\n  reorderable?: boolean;\n  source: JsonObject;\n  actions?: Array<{\n    id: string;\n    label: ReactNode;\n    icon?: ReactNode;\n    tone?: \"default\" | \"primary\" | \"danger\" | \"muted\";\n    disabled?: boolean;\n    loading?: boolean;\n  }>;\n  children: OntologyNavigatorTreeNode[];\n}\n\nconst treeNodes = (\n  value: JsonValue | undefined,\n  translate: CapabilityTranslate,\n): OntologyNavigatorTreeNode[] =>\n  objectArray(value).flatMap((item) => {\n    const id = stringValue(item.id);\n    if (!id) return [];\n    const children = treeNodes(item.children, translate);\n    return [\n      {\n        id,\n        label: copyValue(\n          item.label,\n          item.labelKey,\n          translate,\n          DESIGN_CAPABILITY_I18N_KEYS.ontologyNavigator.empty,\n        ),\n        ...(stringValue(item.description) || stringValue(item.descriptionKey)\n          ? {\n              description: stringValue(item.descriptionKey)\n                ? translate(String(item.descriptionKey))\n                : stringValue(item.description),\n            }\n          : {}),\n        ...(stringValue(item.meta) ? { meta: stringValue(item.meta) } : {}),\n        icon: isJsonObject(item.icon) ? (\n          semanticIcon(stringValue(item.icon.id))\n        ) : (\n          <DataKindIcon kind={stringValue(item.kind)} />\n        ),\n        disabled: item.disabled === true,\n        selectable: item.disabled !== true,\n        collapsible: children.length > 0,\n        reorderable: item.reorderable === true,\n        source: item,\n        actions: objectArray(item.actions).flatMap((action) => {\n          const actionId = stringValue(action.id);\n          if (!actionId) return [];\n          return [\n            {\n              id: actionId,\n              label: copyValueOrFallback(\n                action.label,\n                action.labelKey,\n                translate,\n                actionId,\n              ),\n              icon: actionIcon(action),\n              tone: actionTone(action),\n              disabled: action.disabled === true,\n              loading: action.loading === true,\n            },\n          ];\n        }),\n        children,\n      },\n    ];\n  });\n\nconst searchableTreeNodeText = (value: ReactNode) =>\n  typeof value === \"string\" || typeof value === \"number\"\n    ? String(value).toLocaleLowerCase()\n    : \"\";\n\nconst filterTreeNodes = (\n  nodes: OntologyNavigatorTreeNode[],\n  searchValue: string,\n): OntologyNavigatorTreeNode[] => {\n  const query = searchValue.trim().toLocaleLowerCase();\n  if (!query) return nodes;\n  return nodes.flatMap((node) => {\n    const children = filterTreeNodes(node.children, query);\n    const matches = [node.label, node.description, node.meta].some((value) =>\n      searchableTreeNodeText(value).includes(query),\n    );\n    return matches || children.length\n      ? [{ ...node, children, collapsible: children.length > 0 }]\n      : [];\n  });\n};\n\nconst legacyViewTreeClassName = (\n  ...parts: Array<string | false | null | undefined>\n) => parts.filter(Boolean).join(\" \");\n\ninterface LegacyDataSidebarViewTreeProps {\n  nodes: OntologyNavigatorTreeNode[];\n  selectedNodeId?: string;\n  empty: ReactNode;\n  translate: CapabilityTranslate;\n  emitIntent: DesignCapabilityRendererContext[\"emitIntent\"];\n}\n\nconst flattenLegacyViewTree = (\n  nodes: OntologyNavigatorTreeNode[],\n  parentId: string | undefined = undefined,\n  result = new Map<\n    string,\n    { node: OntologyNavigatorTreeNode; parentId?: string; index: number }\n  >(),\n) => {\n  nodes.forEach((node, index) => {\n    result.set(node.id, { node, parentId, index });\n    flattenLegacyViewTree(node.children, node.id, result);\n  });\n  return result;\n};\n\ninterface LegacyDataSidebarViewTreeNodeProps {\n  node: OntologyNavigatorTreeNode;\n  selectedNodeId?: string;\n  expandedNodeIds: Set<string>;\n  depth: number;\n  translate: CapabilityTranslate;\n  emitIntent: DesignCapabilityRendererContext[\"emitIntent\"];\n  onToggle: (nodeId: string) => void;\n}\n\nconst LegacyDataSidebarViewTreeNode = ({\n  node,\n  selectedNodeId,\n  expandedNodeIds,\n  depth,\n  translate,\n  emitIntent,\n  onToggle,\n}: LegacyDataSidebarViewTreeNodeProps) => {\n  const {\n    attributes,\n    listeners,\n    setNodeRef,\n    transform,\n    transition,\n    isDragging,\n  } = useSortable({ id: node.id });\n  const children = node.children;\n  const hasChildren = children.length > 0;\n  const isExpanded = node.collapsible === false || expandedNodeIds.has(node.id);\n  const isSelected = selectedNodeId === node.id;\n  const childIds = children.map((child) => child.id);\n  const normalizedTransform = transform\n    ? { ...transform, scaleX: 1, scaleY: 1 }\n    : null;\n\n  return (\n    <div\n      ref={setNodeRef}\n      style={{\n        transform: CSS.Transform.toString(normalizedTransform),\n        transition,\n        opacity: isDragging ? 0.55 : 1,\n      }}\n      className=\"min-w-0 space-y-1\"\n    >\n      <div\n        {...attributes}\n        {...listeners}\n        className={legacyViewTreeClassName(\n          \"group/tree-node bg-background/72 hover:border-primary/24 relative flex min-h-8 w-full min-w-0 cursor-grab items-center rounded-lg border border-border/55 pr-1 text-left text-[13px] font-medium transition-[background-color,border-color,box-shadow,opacity,transform] duration-200 before:absolute before:-left-2 before:top-1/2 before:h-px before:w-2 before:bg-border/70 hover:bg-background active:cursor-grabbing\",\n          isSelected &&\n            \"border-primary/26 bg-primary/[0.08] text-foreground hover:bg-primary/[0.08] dark:border-primary/10 dark:bg-primary/[0.12] dark:hover:bg-primary/[0.12]\",\n          isDragging && \"shadow-md ring-1 ring-primary/25\",\n        )}\n        style={{ paddingLeft: `${depth * 8 + 4}px` }}\n        role=\"treeitem\"\n        aria-selected={isSelected || undefined}\n        aria-expanded={hasChildren ? isExpanded : undefined}\n        tabIndex={0}\n        onClick={() =>\n          emitIntent(\"capability.ontology-navigator.select\", {\n            nodeId: node.id,\n          })\n        }\n        onKeyDown={(event) => {\n          if (event.key !== \"Enter\" && event.key !== \" \") return;\n          event.preventDefault();\n          emitIntent(\"capability.ontology-navigator.select\", {\n            nodeId: node.id,\n          });\n        }}\n      >\n        <span\n          className=\"mr-1 flex h-6 w-3.5 shrink-0 items-center justify-center rounded-sm text-muted-foreground/70 transition-colors group-hover/tree-node:text-foreground\"\n          aria-label={translate(\"components.data-v2.sidebar.drag-to-sort\")}\n        >\n          <GripVertical className=\"h-3.5 w-3.5\" />\n        </span>\n        {hasChildren ? (\n          <button\n            type=\"button\"\n            className=\"mr-1 inline-flex h-6 w-4 shrink-0 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground\"\n            aria-label={translate(\n              isExpanded ? \"common.actions.collapse\" : \"common.actions.expand\",\n            )}\n            onPointerDown={(event) => event.stopPropagation()}\n            onClick={(event) => {\n              event.stopPropagation();\n              onToggle(node.id);\n            }}\n          >\n            <ChevronDown\n              className={legacyViewTreeClassName(\n                \"h-4 w-4 transition-transform\",\n                isExpanded ? \"rotate-0\" : \"-rotate-90\",\n              )}\n            />\n          </button>\n        ) : null}\n        <span className=\"mr-1 inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground group-hover/tree-node:text-foreground\">\n          <Database className=\"h-4 w-4\" />\n        </span>\n        <span className=\"min-w-0 flex-1 truncate\">{node.label}</span>\n        {node.actions?.length ? (\n          <DropdownMenu>\n            <DropdownMenuTrigger asChild>\n              <Button\n                type=\"button\"\n                variant=\"ghost\"\n                size=\"icon\"\n                className={legacyViewTreeClassName(\n                  \"ml-1 h-7 w-7 shrink-0 transition-opacity data-[state=open]:opacity-100\",\n                  isSelected\n                    ? \"opacity-100\"\n                    : \"opacity-0 group-hover/tree-node:opacity-100\",\n                )}\n                aria-label={translate(\"common.actions.more-actions\")}\n                title={translate(\"common.actions.more-actions\")}\n                onClick={(event) => event.stopPropagation()}\n                onPointerDown={(event) => event.stopPropagation()}\n              >\n                <MoreHorizontal className=\"h-4 w-4\" />\n              </Button>\n            </DropdownMenuTrigger>\n            <DropdownMenuContent align=\"end\">\n              {node.actions.map((action) => (\n                <DropdownMenuItem\n                  key={action.id}\n                  disabled={action.disabled === true || action.loading === true}\n                  className={legacyViewTreeClassName(\n                    action.tone === \"danger\" &&\n                      \"text-destructive-text focus:text-destructive-text\",\n                  )}\n                  onClick={(event) => {\n                    event.stopPropagation();\n                    if (action.disabled === true || action.loading === true)\n                      return;\n                    emitIntent(\"capability.ontology-navigator.action\", {\n                      actionId: action.id,\n                      nodeId: node.id,\n                    });\n                  }}\n                >\n                  {action.icon}\n                  <span>{action.label}</span>\n                </DropdownMenuItem>\n              ))}\n            </DropdownMenuContent>\n          </DropdownMenu>\n        ) : null}\n      </div>\n      {hasChildren ? (\n        <div\n          aria-hidden={!isExpanded}\n          className={legacyViewTreeClassName(\n            \"ease-emphasized grid origin-top transition-[grid-template-rows,transform] duration-300\",\n            isExpanded\n              ? \"translate-y-0 grid-rows-[1fr]\"\n              : \"pointer-events-none -translate-y-0.5 grid-rows-[0fr]\",\n          )}\n        >\n          <div className=\"min-h-0 overflow-hidden\">\n            <SortableContext\n              items={childIds}\n              strategy={verticalListSortingStrategy}\n            >\n              <div className=\"ml-2 space-y-1 border-l border-border/70 pl-2 pt-1\">\n                {children.map((child) => (\n                  <LegacyDataSidebarViewTreeNode\n                    key={child.id}\n                    node={child}\n                    selectedNodeId={selectedNodeId}\n                    expandedNodeIds={expandedNodeIds}\n                    depth={depth + 1}\n                    translate={translate}\n                    emitIntent={emitIntent}\n                    onToggle={onToggle}\n                  />\n                ))}\n              </div>\n            </SortableContext>\n          </div>\n        </div>\n      ) : null}\n    </div>\n  );\n};\n\nconst LegacyDataSidebarViewTree = ({\n  nodes,\n  selectedNodeId,\n  empty,\n  translate,\n  emitIntent,\n}: LegacyDataSidebarViewTreeProps) => {\n  const [expandedNodeIds, setExpandedNodeIds] = useState<Set<string>>(\n    () => new Set(),\n  );\n  const sensors = useSensors(\n    useSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n    useSensor(KeyboardSensor, {\n      coordinateGetter: sortableKeyboardCoordinates,\n    }),\n  );\n  const flattenedNodes = useMemo(() => flattenLegacyViewTree(nodes), [nodes]);\n  const rootIds = nodes.map((node) => node.id);\n\n  useEffect(() => {\n    if (!selectedNodeId) return;\n    const next = new Set<string>();\n    let parentId = flattenedNodes.get(selectedNodeId)?.parentId;\n    while (parentId) {\n      next.add(parentId);\n      parentId = flattenedNodes.get(parentId)?.parentId;\n    }\n    if (!next.size) return;\n    setExpandedNodeIds((previous) => {\n      const merged = new Set(previous);\n      next.forEach((id) => merged.add(id));\n      return merged.size === previous.size ? previous : merged;\n    });\n  }, [flattenedNodes, selectedNodeId]);\n\n  const onToggle = (nodeId: string) => {\n    const next = new Set(expandedNodeIds);\n    if (next.has(nodeId)) next.delete(nodeId);\n    else next.add(nodeId);\n    setExpandedNodeIds(next);\n    emitIntent(\"capability.ontology-navigator.toggle\", {\n      expandedNodeIds: [...next],\n    });\n  };\n\n  const onDragEnd = (event: DragEndEvent) => {\n    if (!event.over || event.active.id === event.over.id) return;\n    const active = flattenedNodes.get(String(event.active.id));\n    const over = flattenedNodes.get(String(event.over.id));\n    if (!active || !over || active.parentId !== over.parentId) return;\n    emitIntent(\"capability.ontology-navigator.reorder\", {\n      nodeId: active.node.id,\n      parentNodeId: active.parentId ?? null,\n      beforeNodeId: over.node.id,\n    });\n  };\n\n  if (!nodes.length) {\n    return (\n      <div className=\"flex min-h-12 items-center justify-center px-3 py-3 text-center text-xs text-muted-foreground\">\n        {empty}\n      </div>\n    );\n  }\n\n  return (\n    <DndContext\n      sensors={sensors}\n      collisionDetection={closestCenter}\n      onDragEnd={onDragEnd}\n    >\n      <SortableContext items={rootIds} strategy={verticalListSortingStrategy}>\n        <div className=\"space-y-1\">\n          {nodes.map((node) => (\n            <LegacyDataSidebarViewTreeNode\n              key={node.id}\n              node={node}\n              selectedNodeId={selectedNodeId}\n              expandedNodeIds={expandedNodeIds}\n              depth={0}\n              translate={translate}\n              emitIntent={emitIntent}\n              onToggle={onToggle}\n            />\n          ))}\n        </div>\n      </SortableContext>\n    </DndContext>\n  );\n};\n\nexport const OntologyNavigatorCapabilityRenderer: DesignCapabilityRenderer = ({\n  model,\n  binding,\n  childrenBySlot,\n  translate,\n  emitIntent,\n}) => {\n  const pagination = cursorPagination(model.pagination);\n  const search = isJsonObject(model.search) ? model.search : undefined;\n  const searchValue = search ? stringValue(search.value) ?? \"\" : \"\";\n  const visibleNodes = filterTreeNodes(\n    treeNodes(model.nodes, translate),\n    searchValue,\n  );\n  const error = isJsonObject(model.error) ? model.error : undefined;\n  const retry = isJsonObject(model.retry) ? model.retry : undefined;\n  const presentation = isJsonObject(model.presentation)\n    ? model.presentation\n    : undefined;\n  const exactBinding = isJsonObject(binding as JsonValue)\n    ? (binding as JsonObject)\n    : undefined;\n  const queryDefinitionRef =\n    exactBinding && isJsonObject(exactBinding.queryDefinitionRevisionRef)\n      ? exactBinding.queryDefinitionRevisionRef\n      : undefined;\n  const queryDefinitionId = stringValue(queryDefinitionRef?.id);\n  const legacyRole =\n    queryDefinitionId === \"data.ontology.catalog\"\n      ? \"ontology\"\n      : queryDefinitionId === \"data.view.catalog\"\n        ? \"view\"\n        : stringValue(presentation?.role);\n  const legacyDataSidebar =\n    Boolean(legacyRole) || presentation?.kind === \"legacy-data-sidebar\";\n  const legacyNodes = (\n    nodes: OntologyNavigatorTreeNode[],\n  ): OntologyNavigatorTreeNode[] =>\n    nodes.map((node) => ({\n      ...node,\n      description: undefined,\n      meta: undefined,\n      children: legacyNodes(node.children),\n    }));\n  const renderedNodes = legacyDataSidebar\n    ? legacyNodes(visibleNodes)\n    : visibleNodes;\n  const footerVisible =\n    Boolean(childrenBySlot.footer) ||\n    Boolean(pagination?.hasMore && pagination.nextCursor);\n  if (legacyDataSidebar && legacyRole === \"view\") {\n    if (presentation?.kind === \"domain-record-team-views\") {\n      return (\n        <nav className=\"ml-8 w-max min-w-full space-y-1 border-l border-border/80 pl-2 pt-1\">\n          {renderedNodes.map((node) => (\n            <Button\n              key={node.id}\n              size=\"sm\"\n              variant=\"ghost\"\n              className={`h-8 w-full !justify-start border bg-transparent px-2.5 text-left text-[13px] font-medium ${\n                node.id === stringValue(model.selectedNodeId)\n                  ? \"border-primary/30 bg-primary/[0.08]\"\n                  : \"border-border/70\"\n              }`}\n              title={typeof node.label === \"string\" ? node.label : undefined}\n              onClick={() =>\n                emitIntent(\"capability.ontology-navigator.select\", {\n                  nodeId: node.id,\n                })\n              }\n            >\n              <span className=\"flex-1 whitespace-nowrap\">{node.label}</span>\n            </Button>\n          ))}\n        </nav>\n      );\n    }\n    return (\n      <div\n        className=\"ml-8 border-l border-border/80 pl-2 pt-1\"\n        data-presentation=\"legacy-data-sidebar-view\"\n      >\n        <LegacyDataSidebarViewTree\n          nodes={renderedNodes}\n          selectedNodeId={stringValue(model.selectedNodeId)}\n          empty={translate(\"components.data-v2.sidebar.no-views\")}\n          translate={translate}\n          emitIntent={emitIntent}\n        />\n      </div>\n    );\n  }\n  if (legacyDataSidebar) {\n    const selectedNodeId = stringValue(model.selectedNodeId);\n    type SidebarNode = (typeof renderedNodes)[number];\n    const selectedPath = (nodes: SidebarNode[]): string[] => {\n      for (const node of nodes) {\n        if (node.id === selectedNodeId) return [node.id];\n        const path = selectedPath(node.children || []);\n        if (path.length) return [node.id, ...path];\n      }\n      return [];\n    };\n    const expandedIds = Array.isArray(model.expandedNodeIds) ? stringArray(model.expandedNodeIds) : selectedPath(renderedNodes);\n    const sidebarNodes = (nodes: SidebarNode[]): SidebarNode[] => nodes.map(node => ({ ...node, icon: node.source?.kind === 'folder' ? node.icon : <Database className=\"h-4 w-4\" />, collapsible: true, draggable: node.source?.kind !== 'folder', children: sidebarNodes(node.children || []) }));\n    const findSidebarNode = (nodes: SidebarNode[], id: string | undefined): SidebarNode | undefined => {\n      for (const node of nodes) { if (node.id === id) return node; const child = findSidebarNode(node.children || [], id); if (child) return child; }\n    };\n    const firstOntologyId = (nodes: SidebarNode[]): string | undefined => {\n      for (const node of nodes) { if (node.source?.kind !== 'folder') return node.id; const id = firstOntologyId(node.children || []); if (id) return id; }\n    };\n    const activeDestinationId = stringValue(presentation?.activeDestinationId);\n    const activeViewId = stringValue(presentation?.activeViewId);\n    const allDataActive = !activeDestinationId && !activeViewId;\n    return (\n      <div\n        className=\"flex h-full min-h-0 w-full flex-col overflow-hidden bg-muted/10\"\n        data-presentation=\"legacy-data-sidebar\"\n      >\n        <div className=\"flex h-14 shrink-0 items-center px-4\">\n          <div className=\"flex w-full items-center justify-between gap-2\">\n            <h2 className=\"min-w-0 truncate text-sm font-semibold\">\n              {translate(\"components.data-v2.sidebar.data-views\")}\n            </h2>\n            <div className=\"flex shrink-0 items-center gap-1\">\n              <Button\n                size=\"sm\"\n                variant=\"ghost\"\n                className=\"h-7 px-2 text-xs hover:bg-accent/80\"\n                title={translate(\n                  \"components.data-v2.sidebar.collapse-all-nodes\",\n                )}\n                onClick={() =>\n                  emitIntent(\"capability.ontology-navigator.toggle\", {\n                    expandedNodeIds: [],\n                  })\n                }\n              >\n                {translate(\"components.data-v2.sidebar.collapse-nodes\")}\n              </Button>\n              <Button\n                type=\"button\"\n                variant=\"ghost\"\n                size=\"icon\"\n                className=\"h-7 w-7\"\n                title={translate(\"common.actions.refresh\")}\n                aria-label={translate(\"common.actions.refresh\")}\n                onClick={() =>\n                  emitIntent(\"capability.ontology-navigator.retry\", {})\n                }\n              >\n                <RefreshCw className=\"h-3.5 w-3.5\" />\n              </Button>\n              <Button\n                type=\"button\"\n                variant=\"ghost\"\n                size=\"icon\"\n                className=\"h-7 w-7\"\n                title={translate(\"components.data-v2.sidebar.create-view\")}\n                aria-label={translate(\"components.data-v2.sidebar.create-view\")}\n                onClick={() => {\n                  const targetOntologyId =\n                    selectedNodeId ?? firstOntologyId(renderedNodes);\n                  if (!targetOntologyId) return;\n                  emitIntent(\"capability.ontology-navigator.action\", {\n                    nodeId: targetOntologyId,\n                    actionId: \"view-create\",\n                  });\n                }}\n              >\n                <Plus className=\"h-3.5 w-3.5\" />\n              </Button>\n            </div>\n          </div>\n        </div>\n        <ScrollArea className=\"min-h-0 flex-1 px-3 pb-4 pt-0\">\n          <div\n            className=\"space-y-1\"\n            style={{ maxWidth: \"100%\", overflow: \"hidden\" }}\n          >\n            <div className=\"relative space-y-1\">\n              <Button\n                type=\"button\"\n                size=\"sm\"\n                variant=\"ghost\"\n                className={`w-full !justify-start ${\n                  allDataActive\n                    ? \"bg-primary/20 font-medium text-foreground hover:bg-primary/20\"\n                    : \"font-normal\"\n                }`}\n                onClick={() =>\n                  emitIntent(\"capability.ontology-navigator.home\", {})\n                }\n              >\n                <LayoutGrid className=\"mr-2 h-4 w-4\" />\n                {translate(\"components.data-v2.sidebar.all-data\")}\n              </Button>\n              <Button\n                type=\"button\"\n                size=\"sm\"\n                variant={\n                  activeDestinationId === \"dashboards\" ? \"secondary\" : \"ghost\"\n                }\n                className=\"w-full !justify-start font-normal\"\n                onClick={() =>\n                  emitIntent(\"capability.ontology-navigator.destination\", {\n                    destinationId: \"dashboards\",\n                  })\n                }\n              >\n                <BarChart3 className=\"mr-2 h-4 w-4\" />\n                {translate(\"layout.sidebar.dashboards\")}\n              </Button>\n              <div className=\"pt-1\">\n                <DataExplorerDraggableTree\n                  nodes={sidebarNodes(renderedNodes)}\n                  loading={model.loading === true}\n                  selectedNodeId={selectedNodeId}\n                  expandedNodeIds={expandedIds}\n                  activationMode=\"handle\"\n                  indentSize={14}\n                  appearance={{ density: \"compact\", radius: \"md\" }}\n                  labels={{\n                    dragHandle: translate(\n                      \"components.data-v2.sidebar.drag-to-sort\",\n                    ),\n                    expand: translate(\"common.actions.expand\"),\n                    collapse: translate(\"common.actions.collapse\"),\n                  }}\n                  classNames={{\n                    root: \"space-y-1 overflow-visible\",\n                    list: \"space-y-1\",\n                    item: \"group/tree-node\",\n                    itemButton:\n                      \"min-h-8 rounded-md border-border/70 bg-background/70 text-[13px] font-medium leading-none hover:bg-background\",\n                    itemSelected:\n                      \"border-primary/30 bg-primary/[0.08] text-foreground hover:bg-primary/[0.08]\",\n                    itemDragging: \"opacity-80 shadow-sm\",\n                    itemOver: \"border-primary/35 bg-primary/[0.08]\",\n                    dragHandle: \"opacity-100\",\n                    actions: \"ml-auto\",\n                  }}\n                  empty={translate(\n                    DESIGN_CAPABILITY_I18N_KEYS.ontologyNavigator.empty,\n                  )}\n                  onSelectNode={node => {\n                    if (node.source?.kind === 'folder') { emitIntent('capability.ontology-navigator.toggle', { expandedNodeIds: expandedIds.includes(node.id) ? expandedIds.filter(id => id !== node.id) : [...expandedIds, node.id] }); return; }\n                    emitIntent('capability.ontology-navigator.select', { nodeId: node.id });\n                  }}\n                  onExpandedNodeIdsChange={expandedNodeIds => {\n                    emitIntent('capability.ontology-navigator.toggle', { expandedNodeIds });\n                    const opened = findSidebarNode(renderedNodes, expandedNodeIds.find(id => !expandedIds.includes(id)));\n                    if (opened && opened.source?.kind !== 'folder' && opened.id !== selectedNodeId) emitIntent('capability.ontology-navigator.select', { nodeId: opened.id });\n                  }}\n                  renderNodeChildren={({ node }) => node.id === selectedNodeId && expandedIds.includes(node.id) ? childrenBySlot.footer : null}\n                  renderNodeActions={({ node }) => {\n                    const actions = objectArray(node.source?.actions);\n                    if (!actions.length) return null;\n                    return (\n                      <DropdownMenu>\n                        <DropdownMenuTrigger asChild>\n                          <Button\n                            type=\"button\"\n                            variant=\"ghost\"\n                            size=\"icon\"\n                            className=\"h-7 w-7 opacity-0 transition-opacity hover:bg-accent group-hover/tree-node:opacity-100 data-[state=open]:opacity-100\"\n                            aria-label={translate(\n                              \"common.actions.more-actions\",\n                            )}\n                            title={translate(\"common.actions.more-actions\")}\n                            onClick={(event) => event.stopPropagation()}\n                            onPointerDown={(event) => event.stopPropagation()}\n                          >\n                            <MoreHorizontal className=\"h-4 w-4\" />\n                          </Button>\n                        </DropdownMenuTrigger>\n                        <DropdownMenuContent align=\"end\">\n                          {actions.flatMap((action) => {\n                            const actionId = stringValue(action.id);\n                            if (!actionId) return [];\n                            return [\n                              <DropdownMenuItem\n                                key={actionId}\n                                disabled={\n                                  action.disabled === true ||\n                                  action.loading === true\n                                }\n                                className={\n                                  actionTone(action) === \"danger\"\n                                    ? \"text-destructive-text focus:text-destructive-text\"\n                                    : undefined\n                                }\n                                onClick={(event) => {\n                                  event.stopPropagation();\n                                  if (\n                                    action.disabled === true ||\n                                    action.loading === true\n                                  )\n                                    return;\n                                  emitIntent(\n                                    \"capability.ontology-navigator.action\",\n                                    {\n                                      nodeId: node.id,\n                                      actionId,\n                                    },\n                                  );\n                                }}\n                              >\n                                {actionIcon(action)}\n                                <span>\n                                  {copyValueOrFallback(\n                                    action.label,\n                                    action.labelKey,\n                                    translate,\n                                    actionId,\n                                  )}\n                                </span>\n                              </DropdownMenuItem>,\n                            ];\n                          })}\n                        </DropdownMenuContent>\n                      </DropdownMenu>\n                    );\n                  }}\n                  onDragEnd={(payload) =>\n                    emitIntent(\"capability.ontology-navigator.reorder\", {\n                      nodeId: payload.activeNode.id,\n                      parentNodeId: payload.targetParentId ?? null,\n                      beforeNodeId: payload.overNode.id,\n                    })\n                  }\n                />\n                <CursorInfiniteScroll\n                  pagination={pagination}\n                  label={translate(\n                    DESIGN_CAPABILITY_I18N_KEYS.ontologyNavigator.loadMore,\n                  )}\n                  loadingLabel={translate(\n                    DESIGN_CAPABILITY_I18N_KEYS.ontologyNavigator.loadingMore,\n                  )}\n                  onLoadMore={(cursor) =>\n                    emitIntent(\"capability.ontology-navigator.load-more\", {\n                      cursor,\n                    })\n                  }\n                />\n              </div>\n            </div>\n          </div>\n        </ScrollArea>\n      </div>\n    );\n  }\n  return (\n    <nav\n      aria-label={translate(\n        stringValue(model.labelKey) ??\n          DESIGN_CAPABILITY_I18N_KEYS.catalog.ontologyNavigator.label,\n      )}\n      className=\"flex h-full min-h-0 flex-col overflow-hidden\"\n    >\n      <div className=\"shrink-0 space-y-2 border-b border-border/50 px-3 py-3\">\n        {search ? (\n          <div className=\"relative\">\n            <span className=\"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground\">\n              <SearchIcon />\n            </span>\n            <BaseInput\n              type=\"search\"\n              value={searchValue}\n              aria-label={translate(\n                stringValue(search.labelKey) ??\n                  DESIGN_CAPABILITY_I18N_KEYS.ontologyNavigator.searchLabel,\n              )}\n              placeholder={translate(\n                stringValue(search.placeholderKey) ??\n                  DESIGN_CAPABILITY_I18N_KEYS.ontologyNavigator\n                    .searchPlaceholder,\n              )}\n              disabled={search.disabled === true}\n              className=\"h-9 pl-9\"\n              onChange={(event: ChangeEvent<HTMLInputElement>) =>\n                emitIntent(\"capability.ontology-navigator.search\", {\n                  value: event.currentTarget.value,\n                })\n              }\n            />\n          </div>\n        ) : null}\n        {childrenBySlot.header}\n      </div>\n      <div className=\"min-h-0 flex-1 overflow-y-auto px-3 py-2\">\n        <DataExplorerViewTree\n          nodes={renderedNodes}\n          loading={model.loading === true}\n          error={\n            error\n              ? translate(\n                  stringValue(error.messageKey) ??\n                    DESIGN_CAPABILITY_I18N_KEYS.status.error.description,\n                  {\n                    code: stringValue(error.code) ?? \"UNKNOWN\",\n                  },\n                )\n              : undefined\n          }\n          selectedNodeId={stringValue(model.selectedNodeId)}\n          expandedNodeIds={stringArray(model.expandedNodeIds)}\n          reorderMode=\"any\"\n          empty={translate(DESIGN_CAPABILITY_I18N_KEYS.ontologyNavigator.empty)}\n          labels={{\n            actions: translate(\n              stringValue(model.actionsLabelKey) ??\n                DESIGN_CAPABILITY_I18N_KEYS.ontologyNavigator.moreActions,\n            ),\n          }}\n          onSelectNode={(node) =>\n            emitIntent(\"capability.ontology-navigator.select\", {\n              nodeId: node.id,\n            })\n          }\n          onExpandedNodeIdsChange={(expandedNodeIds) =>\n            emitIntent(\"capability.ontology-navigator.toggle\", {\n              expandedNodeIds,\n            })\n          }\n          onAction={({ action, node }) => {\n            if (!node) return;\n            emitIntent(\"capability.ontology-navigator.action\", {\n              actionId: action.id,\n              nodeId: node.id,\n            });\n          }}\n          onReorderNodes={(payload) =>\n            emitIntent(\"capability.ontology-navigator.reorder\", {\n              nodeId: payload.activeNode.id,\n              parentNodeId: payload.overParentId ?? null,\n              beforeNodeId: payload.overNode.id,\n            })\n          }\n        />\n        {error && retry && error.retryable !== false ? (\n          <div className=\"mt-3\">\n            <DataExplorerButton\n              label={translate(String(retry.labelKey))}\n              disabled={retry.disabled === true}\n              loading={retry.loading === true}\n              onClick={() =>\n                emitIntent(\"capability.ontology-navigator.retry\", {})\n              }\n            />\n          </div>\n        ) : null}\n      </div>\n      {footerVisible ? (\n        <div className=\"shrink-0 border-t border-border/50 p-3\">\n          <BaseStack gap=\"var(--global-spacing-sm, 0.5rem)\">\n            <CursorInfiniteScroll\n              pagination={pagination}\n              label={translate(\n                DESIGN_CAPABILITY_I18N_KEYS.ontologyNavigator.loadMore,\n              )}\n              loadingLabel={translate(\n                DESIGN_CAPABILITY_I18N_KEYS.ontologyNavigator.loadingMore,\n              )}\n              onLoadMore={(cursor) =>\n                emitIntent(\"capability.ontology-navigator.load-more\", {\n                  cursor,\n                })\n              }\n            />\n            {childrenBySlot.footer}\n          </BaseStack>\n        </div>\n      ) : null}\n    </nav>\n  );\n};\n\nconst DomainRecordEquivalentToolbar = ({\n  model,\n  translate,\n  emitIntent,\n}: Pick<\n  DesignCapabilityRendererContext,\n  \"model\" | \"translate\" | \"emitIntent\"\n>) => {\n  const presentation = isJsonObject(model.presentation)\n    ? model.presentation\n    : {};\n  const search = isJsonObject(model.search) ? model.search : undefined;\n  const refresh = isJsonObject(model.refresh) ? model.refresh : undefined;\n  const searchValue = search ? stringValue(search.value) ?? \"\" : \"\";\n  const [draft, setDraft] = useState(searchValue);\n  useEffect(() => setDraft(searchValue), [searchValue]);\n  const schemaRef = stringValue(presentation.schemaRef) ?? \"—\";\n\n  return (\n    <div\n      className=\"flex shrink-0 flex-wrap items-center gap-3 border-b px-4 py-3\"\n      data-presentation=\"domain-record-equivalent\"\n    >\n      <div className=\"min-w-0 flex-1\">\n        <div className=\"flex items-center gap-2\">\n          <Database className=\"h-4 w-4 text-muted-foreground\" />\n          <h2 className=\"truncate text-sm font-medium\">\n            {stringValue(presentation.title) ?? \"—\"}\n          </h2>\n          {stringValue(presentation.contract) ? (\n            <Badge variant=\"outline\">\n              {stringValue(presentation.contract)}\n            </Badge>\n          ) : null}\n          {presentation.readOnly === true ? (\n            <Badge variant=\"secondary\">\n              {translate(\n                \"components.data-management.ontology-records.read-only\",\n              )}\n            </Badge>\n          ) : null}\n        </div>\n        <p className=\"mt-1 truncate text-xs text-muted-foreground\">\n          {translate(\n            \"components.data-management.ontology-records.description\",\n            {\n              schema: schemaRef,\n            },\n          )}\n        </p>\n      </div>\n      {search ? (\n        <form\n          className=\"flex items-center gap-2\"\n          onSubmit={(event) => {\n            event.preventDefault();\n            emitIntent(\"capability.data-toolbar.search\", {\n              value: draft.trim(),\n            });\n          }}\n        >\n          <Input\n            value={draft}\n            placeholder={translate(\n              \"components.data-management.ontology-records.search-placeholder\",\n            )}\n            disabled={search.disabled === true}\n            className=\"h-9 w-56\"\n            onChange={(event) => setDraft(event.currentTarget.value)}\n          />\n          <Button\n            type=\"submit\"\n            size=\"sm\"\n            variant=\"outline\"\n            className=\"h-9 gap-2\"\n          >\n            <Search className=\"h-4 w-4\" />\n            {translate(\"components.data-management.ontology-records.search\")}\n          </Button>\n          {refresh ? (\n            <Button\n              type=\"button\"\n              size=\"sm\"\n              variant=\"outline\"\n              className=\"h-9 gap-2\"\n              disabled={refresh.disabled === true}\n              onClick={() => emitIntent(\"capability.data-toolbar.refresh\", {})}\n            >\n              <RefreshCw\n                className={`h-4 w-4 ${refresh.loading === true ? \"animate-spin\" : \"\"}`}\n              />\n              {translate(\n                stringValue(refresh.labelKey) ??\n                  \"components.data-management.ontology-records.refresh\",\n              )}\n            </Button>\n          ) : null}\n        </form>\n      ) : null}\n    </div>\n  );\n};\n\nconst legacyAuxiliaryIcon = (action: JsonObject) => {\n  const id =\n    `${stringValue(action.id) ?? \"\"} ${isJsonObject(action.icon) ? stringValue(action.icon.id) ?? \"\" : \"\"}`.toLowerCase();\n  if (/(plugin|extension)/.test(id)) return <Puzzle className=\"h-4 w-4\" />;\n  if (/(row-height|rows)/.test(id)) return <Rows3 className=\"h-4 w-4\" />;\n  if (/(feature-column|column|setting)/.test(id))\n    return <SlidersHorizontal className=\"h-4 w-4\" />;\n  return actionIcon(action);\n};\n\nconst normalizeRowHeightScale = (value: JsonValue | undefined) => {\n  const numeric =\n    typeof value === \"number\" && Number.isFinite(value) ? value : 1;\n  return Math.round(Math.min(10, Math.max(0.5, numeric)) * 2) / 2;\n};\n\nconst LegacyRowHeightMenu = ({\n  action,\n  translate,\n  emitIntent,\n  showLabel = false,\n}: {\n  action: JsonObject;\n  translate: DesignCapabilityRendererContext[\"translate\"];\n  emitIntent: DesignCapabilityRendererContext[\"emitIntent\"];\n  showLabel?: boolean;\n}) => {\n  const preset = [\"compact\", \"default\", \"comfortable\"].includes(\n    String(action.preset),\n  )\n    ? String(action.preset)\n    : \"default\";\n  const mode = action.mode === \"custom\" ? \"custom\" : \"preset\";\n  const scale = normalizeRowHeightScale(action.scale);\n  const [scaleInput, setScaleInput] = useState(String(scale));\n  useEffect(() => setScaleInput(String(scale)), [scale]);\n  const label = copyValueOrFallback(\n    action.label,\n    action.labelKey,\n    translate,\n    \"row-height\",\n  );\n  const emit = (next: {\n    mode: \"preset\" | \"custom\";\n    preset: string;\n    scale: number;\n  }) => emitIntent(\"capability.data-toolbar.row-height-change\", next);\n  const commitScale = (value: string) => {\n    const numeric = Number(value);\n    const nextScale = normalizeRowHeightScale(\n      Number.isFinite(numeric) ? numeric : scale,\n    );\n    setScaleInput(String(nextScale));\n    emit({ mode: \"custom\", preset, scale: nextScale });\n  };\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button\n          type=\"button\"\n          variant=\"outline\"\n          size=\"sm\"\n          className=\"h-9 shrink-0 gap-2 px-3 text-foreground\"\n          aria-label={typeof label === \"string\" ? label : \"row-height\"}\n          title={typeof label === \"string\" ? label : undefined}\n          disabled={action.disabled === true}\n        >\n          <Rows3 className=\"h-4 w-4\" />\n          <span className={showLabel ? \"\" : \"sr-only 2xl:not-sr-only\"}>\n            {label}\n          </span>\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent align=\"start\" className=\"w-56\">\n        <DropdownMenuLabel>{label}</DropdownMenuLabel>\n        <DropdownMenuSeparator />\n        <DropdownMenuRadioGroup\n          value={mode === \"preset\" ? preset : \"\"}\n          onValueChange={(value) =>\n            emit({ mode: \"preset\", preset: value, scale: 1 })\n          }\n        >\n          {objectArray(action.options).map((option) => {\n            const id = stringValue(option.id);\n            if (!id) return null;\n            return (\n              <DropdownMenuRadioItem key={id} value={id}>\n                {copyValueOrFallback(\n                  option.label,\n                  option.labelKey,\n                  translate,\n                  id,\n                )}\n              </DropdownMenuRadioItem>\n            );\n          })}\n        </DropdownMenuRadioGroup>\n        <DropdownMenuSeparator />\n        <div\n          className=\"space-y-1.5 px-2 py-1.5\"\n          onKeyDown={(event) => event.stopPropagation()}\n        >\n          <div className=\"text-xs text-muted-foreground\">\n            {translate(\n              stringValue(action.customLabelKey) ??\n                \"components.data-management.row-height-custom-label\",\n            )}\n          </div>\n          <div className=\"flex items-stretch gap-1.5\">\n            <Input\n              value={scaleInput}\n              inputMode=\"decimal\"\n              className=\"h-8 text-sm [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none\"\n              onChange={(event) => {\n                const next = event.currentTarget.value;\n                if (/^\\d*(?:\\.[05]?)?$/.test(next)) setScaleInput(next);\n              }}\n              onBlur={() => commitScale(scaleInput)}\n              onKeyDown={(event) => {\n                if (event.key === \"Enter\") {\n                  event.preventDefault();\n                  commitScale(scaleInput);\n                }\n              }}\n            />\n            <div className=\"flex flex-col justify-between\">\n              <Button\n                type=\"button\"\n                variant=\"outline\"\n                className=\"h-[15px] w-6 p-0\"\n                disabled={scale >= 10}\n                onClick={() => commitScale(String(scale + 0.5))}\n              >\n                <ChevronUp className=\"h-3 w-3\" />\n              </Button>\n              <Button\n                type=\"button\"\n                variant=\"outline\"\n                className=\"h-[15px] w-6 p-0\"\n                disabled={scale <= 0.5}\n                onClick={() => commitScale(String(scale - 0.5))}\n              >\n                <ChevronDown className=\"h-3 w-3\" />\n              </Button>\n            </div>\n          </div>\n          <div className=\"text-[11px] leading-none text-muted-foreground\">\n            {translate(\n              stringValue(action.customRangeLabelKey) ??\n                \"components.data-management.row-height-custom-range\",\n            )}\n          </div>\n        </div>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  );\n};\n\nconst columnConfigurationIcon = (option: JsonObject) => {\n  const semantic =\n    `${stringValue(option.id) ?? \"\"} ${isJsonObject(option.icon) ? stringValue(option.icon.id) ?? \"\" : \"\"}`.toLowerCase();\n  if (/(^|\\W)(index|hash)(\\W|$)/.test(semantic))\n    return <Hash className=\"h-3.5 w-3.5\" />;\n  if (/(preview|image|thumbnail)/.test(semantic))\n    return <ImageIcon className=\"h-3.5 w-3.5\" />;\n  if (/(^|\\W)(name|text)(\\W|$)/.test(semantic))\n    return <Type className=\"h-3.5 w-3.5\" />;\n  if (/(size|storage)/.test(semantic))\n    return <HardDrive className=\"h-3.5 w-3.5\" />;\n  if (/(updated|clock)/.test(semantic))\n    return <Clock3 className=\"h-3.5 w-3.5\" />;\n  if (/(created|calendar)/.test(semantic))\n    return <CalendarDays className=\"h-3.5 w-3.5\" />;\n  if (/(category|folder)/.test(semantic))\n    return <FolderTree className=\"h-3.5 w-3.5\" />;\n  if (/(tag)/.test(semantic)) return <Tag className=\"h-3.5 w-3.5\" />;\n  if (/(attachment|file|media|img)/.test(semantic))\n    return <Paperclip className=\"h-3.5 w-3.5\" />;\n  if (/(relation|link)/.test(semantic))\n    return <Link2 className=\"h-3.5 w-3.5\" />;\n  if (/(json|object)/.test(semantic)) return <Braces className=\"h-3.5 w-3.5\" />;\n  return <Rows3 className=\"h-3.5 w-3.5\" />;\n};\n\nconst LegacyColumnConfiguration = ({\n  configuration,\n  translate,\n  emitIntent,\n}: {\n  configuration: JsonObject;\n  translate: DesignCapabilityRendererContext[\"translate\"];\n  emitIntent: DesignCapabilityRendererContext[\"emitIntent\"];\n}) => {\n  const [open, setOpen] = useState(false);\n  const [searchBySection, setSearchBySection] = useState<\n    Record<string, string>\n  >({});\n  const sections = objectArray(configuration.sections);\n  const sourceSelections = useMemo(\n    () =>\n      Object.fromEntries(\n        sections.flatMap((section) => {\n          const id = stringValue(section.id);\n          return id ? [[id, stringArray(section.selectedIds)]] : [];\n        }),\n      ) as Record<string, string[]>,\n    [configuration.sections],\n  );\n  const [selectedBySection, setSelectedBySection] =\n    useState<Record<string, string[]>>(sourceSelections);\n  useEffect(() => setSelectedBySection(sourceSelections), [sourceSelections]);\n  useEffect(() => {\n    if (!open) setSearchBySection({});\n  }, [open]);\n\n  const triggerLabel = translate(\n    stringValue(configuration.triggerLabelKey) ??\n      \"components.data-v2.column-config.configure\",\n  );\n  const closeLabel = translate(\n    stringValue(configuration.closeLabelKey) ?? \"common.actions.close\",\n  );\n  const expectedDefinitionVersion = Number(\n    configuration.expectedDefinitionVersion,\n  );\n  const displayConfig = isJsonObject(configuration.displayConfig)\n    ? configuration.displayConfig\n    : {};\n  const tableColumns = isJsonObject(displayConfig.tableColumns)\n    ? displayConfig.tableColumns\n    : {};\n\n  const toggle = (section: JsonObject, optionId: string) => {\n    const sectionId = stringValue(section.id);\n    if (!sectionId || !Number.isSafeInteger(expectedDefinitionVersion)) return;\n    const current = selectedBySection[sectionId] ?? [];\n    const selected = new Set(current);\n    if (selected.has(optionId)) selected.delete(optionId);\n    else selected.add(optionId);\n    const optionOrder = objectArray(section.options)\n      .map((option) => stringValue(option.id))\n      .filter((id): id is string => Boolean(id));\n    const nextSelection = optionOrder.filter((id) => selected.has(id));\n    const nextSelectedBySection = {\n      ...selectedBySection,\n      [sectionId]: nextSelection,\n    };\n    const nextDisplayConfig: JsonObject = {\n      ...displayConfig,\n      tableColumns: {\n        ...tableColumns,\n        [sectionId]: nextSelection,\n      },\n    };\n    setSelectedBySection(nextSelectedBySection);\n    emitIntent(\"capability.data-toolbar.column-configuration-change\", {\n      expectedDefinitionVersion,\n      changes: { displayConfig: nextDisplayConfig },\n    });\n  };\n\n  return (\n    <Popover open={open} onOpenChange={setOpen}>\n      <PopoverTrigger asChild>\n        <Button\n          type=\"button\"\n          variant=\"outline\"\n          size=\"sm\"\n          disabled={configuration.disabled === true}\n          className=\"monkeys-data-toolbar-secondary-action h-10 shrink-0 gap-2 px-2 text-foreground 2xl:px-3\"\n          aria-label={triggerLabel}\n          title={triggerLabel}\n        >\n          <Eye className=\"h-4 w-4 2xl:mr-1\" />\n          <span className=\"monkeys-data-toolbar-secondary-action-label sr-only 2xl:not-sr-only\">\n            {triggerLabel}\n          </span>\n          <ChevronRight className=\"monkeys-data-toolbar-secondary-action-chevron hidden h-3.5 w-3.5 text-muted-foreground/70\" />\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent\n        align=\"end\"\n        side=\"bottom\"\n        sideOffset={8}\n        collisionPadding={16}\n        className=\"z-[80] w-[min(22.75rem,calc(100vw-1rem))] rounded-xl border border-border bg-background p-0 text-foreground shadow-[0_14px_32px_-20px_rgba(15,23,42,0.24)] outline-none\"\n        data-settings-nested-popover\n        onOpenAutoFocus={(event) => event.preventDefault()}\n        onCloseAutoFocus={(event) => event.preventDefault()}\n      >\n        <div className=\"flex max-h-[min(70vh,32rem)] flex-col overflow-hidden\">\n          <div className=\"shrink-0 border-b border-border/60 px-3.5 py-2.5\">\n            <div className=\"flex items-start gap-2.5\">\n              <div className=\"flex h-7 w-7 shrink-0 items-center justify-center rounded-md bg-muted/35 text-muted-foreground\">\n                <Columns3 className=\"h-3.5 w-3.5\" />\n              </div>\n              <div className=\"min-w-0 flex-1\">\n                <h2 className=\"truncate text-sm font-semibold text-foreground\">\n                  {translate(\n                    stringValue(configuration.titleKey) ??\n                      \"components.data-v2.column-config.dialog-title\",\n                  )}\n                </h2>\n                <p className=\"mt-0.5 text-[11px] leading-4 text-muted-foreground\">\n                  {translate(\n                    stringValue(configuration.descriptionKey) ??\n                      \"components.data-v2.column-config.dialog-desc\",\n                  )}\n                </p>\n              </div>\n              <button\n                type=\"button\"\n                className=\"inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground\"\n                onClick={() => setOpen(false)}\n                aria-label={closeLabel}\n              >\n                <X className=\"h-3.5 w-3.5\" />\n              </button>\n            </div>\n          </div>\n          <div className=\"flex-1 space-y-2.5 overflow-y-auto px-2.5 pb-2.5 pt-2\">\n            {sections.map((section) => {\n              const sectionId = stringValue(section.id);\n              if (!sectionId) return null;\n              const selectedIds = new Set(\n                selectedBySection[sectionId] ??\n                  stringArray(section.selectedIds),\n              );\n              const keyword = searchBySection[sectionId] ?? \"\";\n              const options = objectArray(section.options);\n              const filteredOptions = keyword.trim()\n                ? options.filter((option) => {\n                    const label = copyValueOrFallback(\n                      option.label,\n                      option.labelKey,\n                      translate,\n                      stringValue(option.id) ?? \"\",\n                    );\n                    return String(label)\n                      .toLocaleLowerCase()\n                      .includes(keyword.trim().toLocaleLowerCase());\n                  })\n                : options;\n              return (\n                <section key={sectionId} className=\"space-y-1\">\n                  <div className=\"flex items-start justify-between gap-2 px-0.5\">\n                    <div className=\"flex min-w-0 items-center gap-1.5\">\n                      <h3 className=\"truncate text-[13px] font-medium text-muted-foreground\">\n                        {translate(stringValue(section.labelKey) ?? sectionId)}\n                      </h3>\n                      <Badge\n                        variant=\"secondary\"\n                        className=\"rounded-full bg-muted/70 px-1.5 py-0 text-[10px] font-medium text-muted-foreground\"\n                      >\n                        {selectedIds.size}/{options.length}\n                      </Badge>\n                    </div>\n                    {section.searchable === true ? (\n                      <div className=\"relative w-32 shrink-0\">\n                        <Search className=\"pointer-events-none absolute left-2.5 top-1/2 h-3 w-3 -translate-y-1/2 text-muted-foreground\" />\n                        <Input\n                          value={keyword}\n                          onChange={(event) =>\n                            setSearchBySection((current) => ({\n                              ...current,\n                              [sectionId]: event.currentTarget.value,\n                            }))\n                          }\n                          placeholder={translate(\n                            stringValue(section.searchPlaceholderKey) ??\n                              \"common.actions.search\",\n                          )}\n                          className=\"h-7 rounded-md border-border/70 bg-background pl-7 text-[11px] shadow-none\"\n                        />\n                      </div>\n                    ) : null}\n                  </div>\n                  <div className=\"space-y-1\">\n                    {filteredOptions.map((option) => {\n                      const optionId = stringValue(option.id);\n                      if (!optionId) return null;\n                      const active = selectedIds.has(optionId);\n                      return (\n                        <button\n                          key={optionId}\n                          type=\"button\"\n                          disabled={option.disabled === true}\n                          className={`group flex w-full items-center gap-2 rounded-lg border px-2.5 py-2 text-left transition-colors ${active ? \"border-border/80 bg-muted/35\" : \"border-border/60 bg-background\"} ${option.disabled === true ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer hover:border-border hover:bg-accent/30\"}`}\n                          onClick={() => toggle(section, optionId)}\n                        >\n                          <span\n                            className={`flex h-7 w-7 shrink-0 items-center justify-center rounded-md bg-muted/35 text-muted-foreground transition-colors ${active ? \"text-foreground\" : \"\"}`}\n                          >\n                            {columnConfigurationIcon(option)}\n                          </span>\n                          <span className=\"min-w-0 flex-1\">\n                            <span className=\"block text-[13px] font-medium text-foreground\">\n                              {copyValueOrFallback(\n                                option.label,\n                                option.labelKey,\n                                translate,\n                                optionId,\n                              )}\n                            </span>\n                            {option.description || option.descriptionKey ? (\n                              <span className=\"mt-0.5 block text-[11px] leading-4 text-muted-foreground\">\n                                {copyValueOrFallback(\n                                  option.description,\n                                  option.descriptionKey,\n                                  translate,\n                                  \"\",\n                                )}\n                              </span>\n                            ) : null}\n                          </span>\n                          <span\n                            className={`flex h-[18px] w-[18px] shrink-0 items-center justify-center rounded-full border transition-colors ${active ? \"border-foreground/60 bg-foreground/60 text-background\" : \"border-border/70 bg-background text-transparent group-hover:text-muted-foreground\"}`}\n                          >\n                            <Check className=\"h-2.5 w-2.5\" />\n                          </span>\n                        </button>\n                      );\n                    })}\n                    {filteredOptions.length === 0 ? (\n                      <div className=\"rounded-xl border border-dashed border-border/70 bg-background px-3 py-4 text-center text-xs text-muted-foreground\">\n                        {translate(\n                          stringValue(section.emptyLabelKey) ??\n                            \"common.status.no-data\",\n                        )}\n                      </div>\n                    ) : null}\n                  </div>\n                </section>\n              );\n            })}\n          </div>\n        </div>\n      </PopoverContent>\n    </Popover>\n  );\n};\n\nconst LegacyTrendMatrixConfiguration = ({\n  configuration,\n  translate,\n  emitIntent,\n}: {\n  configuration: JsonObject;\n  translate: CapabilityTranslate;\n  emitIntent: (type: string, payload?: JsonObject) => void;\n}) => {\n  const configuredValue = isJsonObject(configuration.value)\n    ? configuration.value\n    : {};\n  const fieldOptions = objectArray(configuration.fieldOptions).flatMap(\n    (option) => {\n      const id = stringValue(option.id);\n      const kind = stringValue(option.kind);\n      return id && (kind === \"preview\" || kind === \"featureImage\")\n        ? [{ ...option, id, kind }]\n        : [];\n    },\n  );\n  const fallbackSourceFieldKey =\n    fieldOptions.find((option) => option.kind === \"preview\")?.id ??\n    fieldOptions[0]?.id ??\n    \"preview\";\n  const fallbackGeneratedFieldKey =\n    fieldOptions.find((option) => option.kind === \"featureImage\")?.id ??\n    fallbackSourceFieldKey;\n  const configuredSourceFieldKey =\n    stringValue(configuredValue.sourceFieldKey) ?? fallbackSourceFieldKey;\n  const configuredGeneratedFieldKey =\n    stringValue(configuredValue.generatedFieldKey) ?? fallbackGeneratedFieldKey;\n  const configuredHistoryMode =\n    configuredValue.historyMode === \"all\" ? \"all\" : \"current\";\n  const [value, setValue] = useState({\n    sourceFieldKey: configuredSourceFieldKey,\n    generatedFieldKey: configuredGeneratedFieldKey,\n    historyMode: configuredHistoryMode,\n  });\n  useEffect(\n    () =>\n      setValue({\n        sourceFieldKey: configuredSourceFieldKey,\n        generatedFieldKey: configuredGeneratedFieldKey,\n        historyMode: configuredHistoryMode,\n      }),\n    [\n      configuredGeneratedFieldKey,\n      configuredHistoryMode,\n      configuredSourceFieldKey,\n    ],\n  );\n  const disabled = configuration.disabled === true || fieldOptions.length === 0;\n  const update = (patch: Partial<typeof value>) => {\n    const next = { ...value, ...patch };\n    setValue(next);\n    const displayConfig = isJsonObject(configuration.displayConfig)\n      ? configuration.displayConfig\n      : {};\n    emitIntent(\"capability.data-toolbar.trend-matrix-configuration-change\", {\n      expectedDefinitionVersion: Number(\n        configuration.expectedDefinitionVersion,\n      ),\n      changes: {\n        displayConfig: {\n          ...displayConfig,\n          trendMatrixSettings: next,\n        },\n      },\n    });\n  };\n  const optionLabel = (option: JsonObject) =>\n    copyValueOrFallback(\n      option.label,\n      option.labelKey,\n      translate,\n      stringValue(option.id) ?? \"\",\n    );\n\n  return (\n    <Popover>\n      <PopoverTrigger asChild>\n        <Button\n          type=\"button\"\n          variant=\"outline\"\n          size=\"icon\"\n          className=\"h-10 w-10 shrink-0 rounded-md\"\n          aria-label={translate(\n            stringValue(configuration.triggerLabelKey) ??\n              \"components.data-v2.trend-matrix.settings.button\",\n          )}\n        >\n          <SlidersHorizontal className=\"h-4 w-4\" />\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent align=\"end\" className=\"w-80 p-4\">\n        <div className=\"space-y-4\">\n          <div>\n            <div className=\"text-sm font-medium\">\n              {translate(\n                stringValue(configuration.titleKey) ??\n                  \"components.data-v2.trend-matrix.settings.title\",\n              )}\n            </div>\n            <div className=\"mt-1 text-xs text-muted-foreground\">\n              {translate(\n                stringValue(configuration.descriptionKey) ??\n                  \"components.data-v2.trend-matrix.settings.description\",\n              )}\n            </div>\n          </div>\n          <div className=\"space-y-2\">\n            <Label className=\"text-xs font-medium\">\n              {translate(\n                stringValue(configuration.sourceFieldLabelKey) ??\n                  \"components.data-v2.trend-matrix.settings.source-field\",\n              )}\n            </Label>\n            <Select\n              value={value.sourceFieldKey}\n              disabled={disabled}\n              onValueChange={(sourceFieldKey) => update({ sourceFieldKey })}\n            >\n              <SelectTrigger>\n                <SelectValue />\n              </SelectTrigger>\n              <SelectContent>\n                {fieldOptions.map((option) => (\n                  <SelectItem key={option.id} value={option.id}>\n                    <span className=\"inline-flex items-center gap-2\">\n                      <ImageIcon className=\"h-3.5 w-3.5\" />\n                      {optionLabel(option)}\n                    </span>\n                  </SelectItem>\n                ))}\n              </SelectContent>\n            </Select>\n          </div>\n          <div className=\"space-y-2\">\n            <Label className=\"text-xs font-medium\">\n              {translate(\n                stringValue(configuration.generatedFieldLabelKey) ??\n                  \"components.data-v2.trend-matrix.settings.generated-field\",\n              )}\n            </Label>\n            <Select\n              value={value.generatedFieldKey}\n              disabled={disabled}\n              onValueChange={(generatedFieldKey) =>\n                update({ generatedFieldKey })\n              }\n            >\n              <SelectTrigger>\n                <SelectValue />\n              </SelectTrigger>\n              <SelectContent>\n                {fieldOptions.map((option) => (\n                  <SelectItem key={option.id} value={option.id}>\n                    <span className=\"inline-flex items-center gap-2\">\n                      <ImageIcon className=\"h-3.5 w-3.5\" />\n                      {optionLabel(option)}\n                    </span>\n                  </SelectItem>\n                ))}\n              </SelectContent>\n            </Select>\n          </div>\n          <div className=\"flex items-center justify-between gap-3 rounded-md border px-3 py-2\">\n            <div className=\"min-w-0\">\n              <Label className=\"text-xs font-medium\">\n                {translate(\n                  stringValue(configuration.showHistoryLabelKey) ??\n                    \"components.data-v2.trend-matrix.settings.show-history\",\n                )}\n              </Label>\n              <div className=\"mt-0.5 text-xs text-muted-foreground\">\n                {translate(\n                  stringValue(configuration.showHistoryHintKey) ??\n                    \"components.data-v2.trend-matrix.settings.show-history-hint\",\n                )}\n              </div>\n            </div>\n            <Switch\n              checked={value.historyMode === \"all\"}\n              onCheckedChange={(checked) =>\n                update({ historyMode: checked ? \"all\" : \"current\" })\n              }\n            />\n          </div>\n        </div>\n      </PopoverContent>\n    </Popover>\n  );\n};\n\nconst LegacyDataExplorerToolbar = ({\n  model,\n  childrenBySlot,\n  translate,\n  emitIntent,\n}: DesignCapabilityRendererContext) => {\n  const presentation = isJsonObject(model.presentation)\n    ? model.presentation\n    : {};\n  const appearance = resolveDataExplorerAppearance(model.appearance);\n  const search = isJsonObject(model.search) ? model.search : undefined;\n  const refresh = isJsonObject(model.refresh) ? model.refresh : undefined;\n  const searchValue = search ? stringValue(search.value) ?? \"\" : \"\";\n  const [draft, setDraft] = useState(searchValue);\n  useEffect(() => setDraft(searchValue), [searchValue]);\n  const scopeSelected = presentation.scopeSelected === true;\n  const views = objectArray(model.views).flatMap((view) => {\n    const id = stringValue(view.id);\n    return id\n      ? [\n          {\n            value: id,\n            label: copyValueOrFallback(\n              view.label,\n              view.labelKey,\n              translate,\n              id,\n            ),\n            icon: isJsonObject(view.icon) ? actionIcon(view) : undefined,\n            disabled: view.disabled === true,\n          },\n        ]\n      : [];\n  });\n  const activeViewId = stringValue(model.activeViewId);\n  const recordCreateCommand = objectArray(model.commands).find(\n    (command) => stringValue(command.id) === \"record-create\",\n  );\n  const auxiliaryActions = objectArray(presentation.auxiliaryActions);\n  const displayActions = scopeSelected ? objectArray(model.displayActions) : [];\n  const columnConfiguration =\n    activeViewId === \"table\" && isJsonObject(model.columnConfiguration)\n      ? model.columnConfiguration\n      : undefined;\n  const trendMatrixConfiguration =\n    activeViewId === \"trendMatrix\" &&\n    isJsonObject(model.trendMatrixConfiguration)\n      ? model.trendMatrixConfiguration\n      : undefined;\n  const toolbarRootRef = useRef<HTMLDivElement | null>(null);\n  const [toolbarWidth, setToolbarWidth] = useState<number | null>(null);\n  useEffect(() => {\n    const toolbar = toolbarRootRef.current;\n    if (!toolbar) return;\n    const measure = () =>\n      setToolbarWidth(toolbar.getBoundingClientRect().width);\n    measure();\n    if (typeof ResizeObserver !== \"undefined\") {\n      const observer = new ResizeObserver(measure);\n      observer.observe(toolbar);\n      return () => observer.disconnect();\n    }\n    window.addEventListener(\"resize\", measure);\n    return () => window.removeEventListener(\"resize\", measure);\n  }, []);\n  const hasSecondaryActions =\n    auxiliaryActions.length > 1 ||\n    Children.count(childrenBySlot.secondaryActions) > 0 ||\n    Boolean(columnConfiguration);\n  const columnConfigurationAction = columnConfiguration ? (\n    <LegacyColumnConfiguration\n      configuration={columnConfiguration}\n      translate={translate}\n      emitIntent={emitIntent}\n    />\n  ) : null;\n  const trendMatrixConfigurationAction = trendMatrixConfiguration ? (\n    <LegacyTrendMatrixConfiguration\n      configuration={trendMatrixConfiguration}\n      translate={translate}\n      emitIntent={emitIntent}\n    />\n  ) : null;\n  const useCompactSecondaryActions =\n    hasSecondaryActions && toolbarWidth !== null && toolbarWidth < 920;\n  const button = (action: JsonObject, showLabel = false) => {\n    const id = stringValue(action.id);\n    if (!id) return null;\n    if (action.kind === \"row-height\") {\n      return (\n        <LegacyRowHeightMenu\n          key={id}\n          action={action}\n          translate={translate}\n          emitIntent={emitIntent}\n          showLabel={showLabel}\n        />\n      );\n    }\n    const label = copyValueOrFallback(\n      action.label,\n      action.labelKey,\n      translate,\n      id,\n    );\n    return (\n      <Button\n        key={id}\n        type=\"button\"\n        variant=\"outline\"\n        size=\"sm\"\n        className=\"h-9 shrink-0 gap-2 px-3 text-foreground\"\n        aria-label={typeof label === \"string\" ? label : id}\n        title={typeof label === \"string\" ? label : undefined}\n        disabled={action.disabled === true}\n        onClick={() =>\n          emitIntent(\"capability.data-toolbar.command\", { commandId: id })\n        }\n      >\n        {legacyAuxiliaryIcon(action)}\n        <span className={showLabel ? \"\" : \"sr-only\"}>{label}</span>\n      </Button>\n    );\n  };\n\n  return (\n    <DataExplorerToolbarShell\n      rootRef={toolbarRootRef}\n      appearance={appearance}\n      searchVisible={false}\n      className=\"min-h-14 flex-col gap-2 py-2 pl-0 pr-3 md:flex-row md:flex-nowrap md:items-center md:justify-between md:gap-x-3 md:gap-y-2 xl:py-0 xl:pr-4\"\n      dataAttributes={{\n        \"data-presentation\": \"legacy-data-explorer-toolbar\",\n        \"data-scope-selected\": scopeSelected ? \"true\" : \"false\",\n        \"data-toolbar-compact\": useCompactSecondaryActions ? \"true\" : \"false\",\n      }}\n      classNames={{\n        actions: \"flex w-full min-w-0 flex-row items-center gap-2 md:w-auto md:flex-1\",\n      }}\n    >\n      <div className=\"flex w-full min-w-0 flex-row items-center gap-2 md:w-auto md:flex-1\">\n        <form\n          className=\"relative min-w-[8rem] max-w-[14rem] flex-1 basis-[14rem]\"\n          onSubmit={(event) => {\n            event.preventDefault();\n            emitIntent(\"capability.data-toolbar.search\", {\n              value: draft.trim(),\n            });\n          }}\n        >\n          <Search className=\"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n          <Input\n            value={draft}\n            placeholder={\n              search\n                ? translate(\n                    stringValue(search.placeholderKey) ??\n                      DESIGN_CAPABILITY_I18N_KEYS.dataToolbar.searchPlaceholder,\n                  )\n                : undefined\n            }\n            className=\"pl-9 focus-visible:ring-0 focus-visible:ring-offset-0\"\n            onChange={(event) => setDraft(event.currentTarget.value)}\n          />\n        </form>\n        {refresh ? (\n          <Button\n            type=\"button\"\n            variant=\"outline\"\n            size=\"icon\"\n            className=\"relative z-10 shrink-0 text-foreground\"\n            aria-label={translate(\n              stringValue(refresh.labelKey) ??\n                DESIGN_CAPABILITY_I18N_KEYS.dataToolbar.searchPlaceholder,\n            )}\n            disabled={refresh.disabled === true}\n            onClick={() => emitIntent(\"capability.data-toolbar.refresh\", {})}\n          >\n            <RefreshCw\n              className={`h-4 w-4 ${refresh.loading === true ? \"animate-spin\" : \"\"}`}\n            />\n          </Button>\n        ) : null}\n        {recordCreateCommand ? (\n          <Button\n            type=\"button\"\n            variant=\"outline\"\n            size=\"icon\"\n            className=\"relative z-10 shrink-0 text-foreground\"\n            aria-label={translate(\n              DESIGN_CAPABILITY_I18N_KEYS.dataToolbar.addRow,\n            )}\n            title={translate(DESIGN_CAPABILITY_I18N_KEYS.dataToolbar.addRow)}\n            disabled={recordCreateCommand.disabled === true}\n            onClick={() =>\n              emitIntent(\"capability.data-toolbar.add-row\", {\n                blankRowLabel: translate(\n                  DESIGN_CAPABILITY_I18N_KEYS.dataToolbar.blankRowName,\n                ),\n                requestedAt: Date.now(),\n              })\n            }\n          >\n            <Plus className=\"h-4 w-4 text-foreground\" />\n          </Button>\n        ) : null}\n      </div>\n      <div className=\"flex w-full flex-wrap items-center justify-end gap-1.5 sm:gap-2 md:ml-auto md:w-auto md:max-w-full md:shrink-0 md:flex-nowrap\">\n        {auxiliaryActions.slice(0, 1).map((action) => button(action))}\n        {!useCompactSecondaryActions ? (\n          <>\n            {auxiliaryActions.slice(1).map((action) => button(action))}\n            {childrenBySlot.secondaryActions}\n            {columnConfigurationAction}\n          </>\n        ) : (\n          <FloatingPopover placement=\"bottom-end\" offset={6}>\n            <FloatingPopoverTrigger asChild>\n              <Button\n                type=\"button\"\n                variant=\"outline\"\n                size=\"icon\"\n                className=\"h-10 w-10 shrink-0 text-foreground\"\n                aria-label={translate(\"common.actions.more-actions\")}\n                title={translate(\"common.actions.more-actions\")}\n              >\n                <MoreHorizontal className=\"h-4 w-4\" />\n              </Button>\n            </FloatingPopoverTrigger>\n            <FloatingPopoverContent\n              className=\"z-50 w-52 rounded-lg border border-border/70 bg-popover p-1.5 text-popover-foreground shadow-lg\"\n              data-slot=\"data-toolbar-more-menu\"\n            >\n              <div className=\"px-2.5 pb-1 pt-1 text-[11px] font-medium text-muted-foreground\">\n                {translate(\"components.data-v2.toolbar.display-settings\")}\n              </div>\n              <div className=\"flex flex-col gap-0.5\">\n                {auxiliaryActions\n                  .slice(1)\n                  .map((action) => button(action, true))}\n                {childrenBySlot.secondaryActions}\n                {columnConfigurationAction}\n              </div>\n            </FloatingPopoverContent>\n          </FloatingPopover>\n        )}\n        {trendMatrixConfigurationAction}\n        {childrenBySlot.actions}\n        {displayActions.map((action) => button(action))}\n        {views.length ? (\n          <WorkbenchContentToolbar\n            viewMode={stringValue(model.activeViewId)}\n            viewModeOptions={views}\n            onViewModeChange={(viewId: string) =>\n              emitIntent(\"capability.data-toolbar.view-change\", { viewId })\n            }\n            gallerySettings={false}\n            className=\"!min-h-0 !border-0 !bg-transparent !p-0\"\n            classNames={{\n              start: \"gap-0\",\n              viewModeRoot: \"w-[8.75rem] shrink-0\",\n              viewModeTrigger:\n                \"!h-10 w-full !rounded-md !border !border-border !bg-background px-3 !font-sans !text-sm !font-medium !text-foreground !shadow-sm hover:!bg-accent\",\n              viewModeMenu:\n                \"right-0 left-auto !w-full !min-w-0 !rounded-md !border-border !bg-popover !p-1 !font-sans !text-sm !font-medium !text-popover-foreground !shadow-md\",\n              viewModeItem:\n                \"!rounded-sm !px-2.5 !py-1.5 !font-sans !text-sm !font-medium !text-foreground\",\n            }}\n          />\n        ) : null}\n      </div>\n      {childrenBySlot.content}\n    </DataExplorerToolbarShell>\n  );\n};\n\nexport const DataToolbarCapabilityRenderer: DesignCapabilityRenderer = (\n  context,\n) => {\n  const { model, childrenBySlot, translate, emitIntent } = context;\n  const appearance = resolveDataExplorerAppearance(model.appearance);\n  const { locale } = useMonkeysLocale();\n  const presentation = isJsonObject(model.presentation)\n    ? model.presentation\n    : undefined;\n  if (presentation?.kind === \"domain-record-equivalent\") {\n    return (\n      <DomainRecordEquivalentToolbar\n        model={model}\n        translate={translate}\n        emitIntent={emitIntent}\n      />\n    );\n  }\n  if (presentation?.kind === \"legacy-data-explorer\") {\n    return <LegacyDataExplorerToolbar {...context} />;\n  }\n  const search = isJsonObject(model.search) ? model.search : undefined;\n  const refresh = isJsonObject(model.refresh) ? model.refresh : undefined;\n  const commands = objectArray(model.commands);\n  const displayActions = objectArray(model.displayActions);\n  const filterGroups = objectArray(model.filterGroups);\n  const selection = isJsonObject(model.selection) ? model.selection : undefined;\n  const gallerySettings = isJsonObject(model.gallerySettings)\n    ? model.gallerySettings\n    : undefined;\n  const galleryFields = model.galleryFields === undefined ? undefined : GalleryPresentationFieldsSchema.parse(model.galleryFields);\n  const canonicalGallerySettings = galleryFields ? validateGalleryPresentationSettings(model.gallerySettings, galleryFields.map(field => field.id)) : undefined;\n  const gallerySettingLabel = (name: string) => translate(`monkeys.design.capability.dataToolbar.galleryPresentation.${name}`);\n  const gallerySettingLabels = {\n    settingsButton: translate(DESIGN_CAPABILITY_I18N_KEYS.dataToolbar.gallerySettings),\n    title: translate(DESIGN_CAPABILITY_I18N_KEYS.dataToolbar.gallerySettings),\n    visibleColumns: gallerySettingLabel('visibleColumns'), coverField: gallerySettingLabel('coverField'),\n    autoDetect: gallerySettingLabel('autoDetect'), cardDensity: gallerySettingLabel('cardDensity'),\n    cardColumns: gallerySettingLabel('cardColumns'), detailColumns: gallerySettingLabel('detailColumns'),\n    fieldVisibility: gallerySettingLabel('fieldVisibility'), fieldLimit: gallerySettingLabel('fieldLimit'),\n    fieldLimitHint: gallerySettingLabel('fieldLimitHint'), layout: gallerySettingLabel('layout'),\n    compact: gallerySettingLabel('compact'), comfortable: gallerySettingLabel('comfortable'), detailed: gallerySettingLabel('detailed'),\n    autoColumns: gallerySettingLabel('autoColumns'), columns: (count: number) => translate('monkeys.design.capability.dataToolbar.galleryPresentation.columns', { count }),\n    bentoColumns: (count: number) => translate('monkeys.design.capability.dataToolbar.galleryPresentation.bentoColumns', { count }),\n    topLimit: gallerySettingLabel('topLimit'), allFields: gallerySettingLabel('allFields'),\n    adaptiveGrid: gallerySettingLabel('adaptiveGrid'), masonry: gallerySettingLabel('masonry'),\n  };\n  const primaryCommands = commands.filter(\n    (command) => command.presentation === \"primary\",\n  );\n  const menuCommands = commands.filter(\n    (command) => command.presentation !== \"primary\",\n  );\n  const primaryToolbarActions = primaryCommands.flatMap((command) => {\n    const id = stringValue(command.id);\n    if (!id) return [];\n    return [\n      {\n        id,\n        kind: \"button\" as const,\n        label: copyValueOrFallback(\n          command.label,\n          command.labelKey,\n          translate,\n          id,\n        ),\n        tone: \"primary\" as const,\n        icon: actionIcon(command),\n        ariaLabel: actionAriaLabel(command, translate),\n        disabled: command.disabled === true,\n        loading: command.loading === true,\n        onAction: () =>\n          emitIntent(\"capability.data-toolbar.command\", { commandId: id }),\n      } as const,\n    ];\n  });\n  const menuToolbarActions: DataExplorerToolbarAction[] = [\n    ...filterGroups.flatMap((group) => {\n      const groupId = stringValue(group.id);\n      if (!groupId) return [];\n      const selectedValues = objectArray(group.values)\n        .map((value) => String(value.id ?? value.value ?? \"\"))\n        .filter(Boolean);\n      return [\n        {\n          id: `filter:${groupId}`,\n          kind: \"menu\" as const,\n          label: copyValueOrFallback(\n            group.label,\n            group.labelKey,\n            translate,\n            groupId,\n          ),\n          triggerLabel: String(\n            copyValueOrFallback(\n              group.label,\n              group.labelKey,\n              translate,\n              groupId,\n            ),\n          ),\n          items: objectArray(group.options).flatMap((option) => {\n            const optionId = stringValue(option.id);\n            if (!optionId) return [];\n            return [\n              {\n                id: optionId,\n                label: copyValueOrFallback(\n                  option.label,\n                  option.labelKey,\n                  translate,\n                  optionId,\n                ),\n                active: selectedValues.includes(optionId),\n                disabled: option.disabled === true,\n                onAction: () =>\n                  emitIntent(\"capability.data-toolbar.filter-change\", {\n                    filterId: groupId,\n                    values: selectedValues.includes(optionId)\n                      ? selectedValues.filter((value) => value !== optionId)\n                      : [...selectedValues, optionId],\n                  }),\n              },\n            ];\n          }),\n        },\n      ];\n    }),\n    ...displayActions.flatMap((action) => {\n      const id = stringValue(action.id);\n      if (!id) return [];\n      return [\n        {\n          id,\n          kind:\n            action.presentation === \"icon\"\n              ? (\"icon-button\" as const)\n              : (\"button\" as const),\n          label: copyValueOrFallback(\n            action.label,\n            action.labelKey,\n            translate,\n            id,\n          ),\n          triggerLabel: actionAriaLabel(action, translate),\n          icon: actionIcon(action),\n          tone: actionTone(action),\n          disabled: action.disabled === true,\n          loading: action.loading === true,\n          onAction: () =>\n            emitIntent(\"capability.data-toolbar.command\", { commandId: id }),\n        },\n      ];\n    }),\n    ...(menuCommands.length\n      ? [\n          {\n            id: \"commands\",\n            kind: \"menu\" as const,\n            label: translate(\n              'monkeys.design.capability.dataToolbar.moreActions',\n            ),\n            triggerLabel: translate(\n              'monkeys.design.capability.dataToolbar.moreActions',\n            ),\n            items: menuCommands.flatMap((command) => {\n              const id = stringValue(command.id);\n              if (!id) return [];\n              return [\n                {\n                  id,\n                  label: copyValueOrFallback(\n                    command.label,\n                    command.labelKey,\n                    translate,\n                    id,\n                  ),\n                  title: actionAriaLabel(command, translate),\n                  icon: actionIcon(command),\n                  tone: actionTone(command),\n                  disabled: command.disabled === true,\n                  loading: command.loading === true,\n                  onAction: () =>\n                    emitIntent(\"capability.data-toolbar.command\", {\n                      commandId: id,\n                    }),\n                },\n              ];\n            }),\n          },\n        ]\n      : []),\n  ];\n  const viewOptions = objectArray(model.views).flatMap((view) => {\n    const id = stringValue(view.id);\n    return id\n      ? [\n          {\n            value: id,\n            label: copyValueOrFallback(\n              view.label,\n              view.labelKey,\n              translate,\n              id,\n            ),\n            disabled: view.disabled === true,\n          },\n        ]\n      : [];\n  });\n  const searchValue = search ? stringValue(search.value) ?? \"\" : \"\";\n  const searchPlaceholder = search\n    ? translate(\n        stringValue(search.placeholderKey) ??\n          DESIGN_CAPABILITY_I18N_KEYS.dataToolbar.searchPlaceholder,\n      )\n    : undefined;\n  const hasLeading = Boolean(childrenBySlot.leading || search || (refresh && stringValue(refresh.labelKey)) || (selection && Number(selection.selectedCount) > 0));\n  return (\n    <DataExplorerToolbarShell\n      appearance={appearance}\n      leading={hasLeading ?\n        <>\n          {childrenBySlot.leading}\n          {selection &&\n          typeof selection.selectedCount === \"number\" &&\n          selection.selectedCount > 0 ? (\n            <BaseBadge tone=\"primary\">\n              {translate(\n                stringValue(selection.labelKey) ??\n                  DESIGN_CAPABILITY_I18N_KEYS.dataToolbar.selection,\n                {\n                  count: selection.selectedCount,\n                },\n              )}\n            </BaseBadge>\n          ) : null}\n          {search ? (\n            <form\n              className=\"relative min-w-[8rem] max-w-[14rem] flex-1\"\n              onSubmit={(event) => {\n                event.preventDefault();\n                emitIntent(\"capability.data-toolbar.search\", {\n                  value: searchValue,\n                });\n              }}\n            >\n              <span className=\"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground\">\n                <SearchIcon />\n              </span>\n              <BaseInput\n                type=\"search\"\n                value={searchValue}\n                aria-label={searchPlaceholder}\n                placeholder={searchPlaceholder}\n                className=\"h-10 w-full pl-9\"\n                onChange={(event: ChangeEvent<HTMLInputElement>) =>\n                  emitIntent(\"capability.data-toolbar.search\", {\n                    value: event.currentTarget.value,\n                  })\n                }\n              />\n            </form>\n          ) : null}\n          {refresh && stringValue(refresh.labelKey) ? (\n            <DataExplorerButton\n              iconOnly\n              icon={<RefreshIcon />}\n              label={translate(String(refresh.labelKey))}\n              disabled={refresh.disabled === true}\n              loading={refresh.loading === true}\n              onClick={() => emitIntent(\"capability.data-toolbar.refresh\", {})}\n            />\n          ) : null}\n        </> : undefined\n      }\n      searchVisible={false}\n      actions={\n        <>\n          {viewOptions.length || canonicalGallerySettings ? (\n            <WorkbenchContentToolbar\n              viewMode={stringValue(model.activeViewId)}\n              viewModeOptions={viewOptions}\n              onViewModeChange={(viewId: string) =>\n                emitIntent(\"capability.data-toolbar.view-change\", { viewId })\n              }\n              gallerySettings={\n                canonicalGallerySettings && galleryFields ? {\n                  triggerLabel: gallerySettingLabels.settingsButton,\n                  labels: gallerySettingLabels,\n                  columns: galleryFields.map(field => ({ key: field.id, label: field.labelI18n ? resolveI18nDisplayText(field.labelI18n, locale) : field.labelKey ? translate(field.labelKey) : field.label ?? field.id })),\n                  value: canonicalGallerySettings,\n                  showColumnVisibility: true, showGalleryControls: true, showLayoutControl: true, showGridColumns: true, showDetailColumns: true,\n                  allowEmptyVisibleColumns: false,\n                  onValueChange: (_next: WorkbenchGallerySettingsValue, patch: Partial<WorkbenchGallerySettingsValue>) => {\n                    const keys = Object.keys(patch);\n                    if (keys.length !== 1) return;\n                    const settingId = keys[0];\n                    if (!Object.prototype.hasOwnProperty.call(canonicalGallerySettings, settingId)) return;\n                    let next;\n                    try { next = normalizeGalleryPresentationSettings({ ...canonicalGallerySettings, ...patch }, galleryFields.map(field => field.id)); }\n                    catch { return; }\n                    const value = next[settingId as keyof typeof next];\n                    emitIntent('capability.data-toolbar.gallery-settings-change', { settingId, value });\n                  },\n                } : gallerySettings\n                  ? {\n                      labels: gallerySettingLabels,\n                      triggerLabel: translate(\n                        DESIGN_CAPABILITY_I18N_KEYS.dataToolbar.gallerySettings,\n                      ),\n                      value: {\n                        galleryGridColumns:\n                          typeof gallerySettings.columns === \"number\"\n                            ? gallerySettings.columns\n                            : \"auto\",\n                      },\n                      showColumnVisibility: false,\n                      showGalleryControls: true,\n                      showLayoutControl: false,\n                      showGridColumns: true,\n                      showDetailColumns: false,\n                      onValueChange: (\n                        nextValue: WorkbenchGallerySettingsValue,\n                      ) =>\n                        emitIntent(\n                          \"capability.data-toolbar.gallery-settings-change\",\n                          {\n                            settingId: \"columns\",\n                            value: nextValue.galleryGridColumns ?? \"auto\",\n                          },\n                        ),\n                    }\n                  : false\n              }\n              className=\"!min-h-0 !border-0 !bg-transparent !p-0\"\n              classNames={{\n                start: \"gap-0\",\n                viewModeRoot: \"w-[8.75rem] shrink-0\",\n                viewModeTrigger:\n                  \"!h-10 w-full !rounded-md !border !border-border !bg-background px-3 !font-sans !text-sm !font-medium !text-foreground !shadow-sm hover:!bg-accent\",\n                viewModeMenu:\n                  \"right-0 left-auto !w-full !min-w-0 !rounded-md !border-border !bg-popover !p-1 !font-sans !text-sm !font-medium !text-popover-foreground !shadow-md\",\n                viewModeItem:\n                  \"!rounded-sm !px-2.5 !py-1.5 !font-sans !text-sm !font-medium !text-foreground\",\n              }}\n            />\n          ) : null}\n          {menuToolbarActions.length ? (\n            <DataExplorerToolbarActions\n              actions={menuToolbarActions}\n              layout=\"toolbar\"\n            />\n          ) : null}\n          {childrenBySlot.actions}\n          {primaryToolbarActions.map((action) => (\n            <DataExplorerButton\n              key={action.id}\n              icon={action.icon}\n              label={action.label}\n              ariaLabel={action.ariaLabel}\n              tone={action.tone}\n              disabled={action.disabled}\n              loading={action.loading}\n              onClick={action.onAction}\n            />\n          ))}\n        </>\n      }\n      classNames={{\n        root: \"min-h-14 flex-col gap-2 border-b bg-background py-2 lg:flex-row lg:flex-wrap lg:items-center lg:justify-between lg:gap-3 2xl:flex-nowrap 2xl:px-4\",\n        leading: \"w-full min-w-0 flex-1 flex-wrap lg:w-auto\",\n        actions:\n          \"ml-auto w-full min-w-0 max-w-full flex-nowrap justify-start overflow-x-auto pb-1 overscroll-x-contain [scrollbar-width:thin] lg:w-auto lg:flex-1 lg:justify-end 2xl:overflow-visible 2xl:pb-0\",\n      }}\n    >\n      {childrenBySlot.content}\n    </DataExplorerToolbarShell>\n  );\n};\n\nconst LegacyDataExplorerRowMenu = ({\n  rowId,\n  rowDisabled,\n  menuActions,\n  translate,\n  onAction,\n}: {\n  rowId: string;\n  rowDisabled: boolean;\n  menuActions: Array<{ action: JsonObject; actionId: string }>;\n  translate: DesignCapabilityRendererContext[\"translate\"];\n  onAction: (rowId: string, actionId: string) => void;\n}) => {\n  const suppressFocusRestoreRef = useRef(false);\n  return (\n    <div className=\"flex items-center justify-center\">\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button\n            type=\"button\"\n            variant=\"ghost\"\n            className=\"h-8 w-8 p-0\"\n            aria-label={translate(\"components.data-v1.table.open-menu\")}\n            onClick={(event) => event.stopPropagation()}\n          >\n            <MoreHorizontal className=\"h-4 w-4\" />\n            <span className=\"sr-only\">\n              {translate(\"components.data-v1.table.open-menu\")}\n            </span>\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent\n          align=\"end\"\n          onClick={(event) => event.stopPropagation()}\n          onCloseAutoFocus={(event) => {\n            if (suppressFocusRestoreRef.current) {\n              event.preventDefault();\n              suppressFocusRestoreRef.current = false;\n            }\n          }}\n        >\n          <DropdownMenuLabel>\n            {translate(\"common.actions.actions\")}\n          </DropdownMenuLabel>\n          <DropdownMenuSeparator />\n          {menuActions.flatMap(({ action, actionId }, actionIndex) => {\n            const destructive =\n              action.destructive === true || action.presentation === \"danger\";\n            const previousAction =\n              actionIndex > 0\n                ? menuActions[actionIndex - 1]?.action\n                : undefined;\n            const previousDestructive =\n              previousAction?.destructive === true ||\n              previousAction?.presentation === \"danger\";\n            return [\n              destructive && !previousDestructive ? (\n                <DropdownMenuSeparator key={`${actionId}:separator`} />\n              ) : null,\n              <DropdownMenuItem\n                key={actionId}\n                title={typeof action.titleKey === 'string' ? translate(action.titleKey) : undefined}\n                disabled={action.disabled === true || rowDisabled}\n                className={destructive ? \"text-destructive-text\" : undefined}\n                onSelect={() => {\n                  suppressFocusRestoreRef.current =\n                    actionId === \"record-history\";\n                  onAction(rowId, actionId);\n                }}\n              >\n                {legacyRecordActionIcon(actionId)}\n                {copyValueOrFallback(\n                  action.label,\n                  action.labelKey,\n                  translate,\n                  actionId,\n                )}\n              </DropdownMenuItem>,\n            ];\n          })}\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </div>\n  );\n};\n\nconst restrictTableRowActions = (actions: JsonObject[], row: JsonObject): JsonObject[] => {\n  const restrictions = isJsonObject(row.actionAvailability) ? row.actionAvailability : {};\n  return actions.flatMap((action) => {\n    const id = stringValue(action.id);\n    const restriction = id && isJsonObject(restrictions[id]) ? restrictions[id] : undefined;\n    if (restriction?.hidden === true) return [];\n    const merged: JsonObject = { ...action, disabled: action.disabled === true || restriction?.disabled === true };\n    if (typeof restriction?.labelKey === 'string') { delete merged.label; merged.labelKey = restriction.labelKey; }\n    if (typeof restriction?.titleKey === 'string') merged.titleKey = restriction.titleKey;\n    return [merged];\n  });\n};\n\nconst declaredTableDimension = (value: unknown): number | undefined => typeof value === 'number' && Number.isFinite(value) && value >= 0 && value <= 10000 ? value : undefined;\n\nexport const OntologyTableCapabilityRenderer: DesignCapabilityRenderer = ({\n  model,\n  pendingActionInvocations = [],\n  collectionScrollRestoration,\n  childrenBySlot,\n  translate,\n  emitIntent,\n  resolveMedia = () => undefined,\n}) => {\n  const modelColumns = objectArray(model.columns);\n  const rows = objectArray(model.rows);\n  const selected = rows\n    .filter((row) => row.selected === true)\n    .flatMap((row) => (stringValue(row.id) ? [String(row.id)] : []));\n  const pagination = cursorPagination(model.pagination);\n  const selectAll = isJsonObject(model.selectAll) ? model.selectAll : undefined;\n  const rowActions = objectArray(model.rowActions);\n  const emitRowAction = (rowId: string, actionId: string) =>\n    actionId === \"record-delete\"\n      ? emitIntent(\"capability.ontology-table.delete\", { rowId })\n      : emitIntent(\"capability.ontology-table.row-action\", { rowId, actionId, ...(isJsonObject(rows.find(row => row.id === rowId)?.context) ? { context: rows.find(row => row.id === rowId)!.context } : {}) });\n  const columnActions = objectArray(model.columnActions);\n  const presentation = isJsonObject(model.presentation)\n    ? model.presentation\n    : undefined;\n  const domainRecordEquivalent =\n    presentation?.kind === \"domain-record-equivalent\";\n  const legacyDataExplorer = presentation?.kind === \"legacy-data-explorer\";\n  const renderedModelColumns = legacyDataExplorer\n    ? modelColumns.filter((column) => column.hidden !== true)\n    : modelColumns;\n  const legacyHiddenModelColumns = legacyDataExplorer\n    ? modelColumns.filter((column) => column.hidden === true)\n    : [];\n  const rowHeight = isJsonObject(model.rowHeight) ? model.rowHeight : undefined;\n  const rowHeightPreset =\n    rowHeight?.preset === \"compact\" || rowHeight?.preset === \"comfortable\"\n      ? rowHeight.preset\n      : \"default\";\n  const rowHeightScale =\n    rowHeight?.mode === \"custom\" ? normalizeRowHeightScale(rowHeight.scale) : 1;\n  const rowPaddingY =\n    (rowHeightPreset === \"compact\"\n      ? 4\n      : rowHeightPreset === \"comfortable\"\n        ? 16\n        : 8) * rowHeightScale;\n  const legacyRowHeight =\n    (rowHeightPreset === \"compact\"\n      ? 57\n      : rowHeightPreset === \"comfortable\"\n        ? 121\n        : 81) * rowHeightScale;\n  const selectionEnabled = model.selectionEnabled !== false;\n  const activationEnabled = model.activationEnabled !== false;\n  if (!rows.length && !pagination?.hasMore && !domainRecordEquivalent) {\n    if (legacyDataExplorer) {\n      return (\n        <div className=\"flex h-64 items-center justify-center\">\n          <p className=\"text-muted-foreground\">\n            {translate(\n              stringValue(model.emptyLabelKey) ?? \"common.status.no-data\",\n            )}\n          </p>\n        </div>\n      );\n    }\n    if (childrenBySlot.header || childrenBySlot.footer) {\n      return (\n        <DataExplorerViewShell\n          className=\"col-span-full\"\n          header={childrenBySlot.header}\n          footer={childrenBySlot.footer}\n        >\n          <div className=\"flex min-h-48 flex-1 items-center justify-center\">\n            <CapabilityStatus\n              kind=\"empty\"\n              translate={translate}\n              emptyLabelKey={stringValue(model.emptyLabelKey)}\n            />\n          </div>\n        </DataExplorerViewShell>\n      );\n    }\n    return <CapabilityStatus kind=\"empty\" translate={translate} emptyLabelKey={stringValue(model.emptyLabelKey)} />;\n  }\n\n  const cellValue = (columnId: string, row: JsonObject) => {\n    const cells = isJsonObject(row.cells) ? row.cells : {};\n    const cell = cells[columnId];\n    const typedCell =\n      isJsonObject(cell) && stringValue(cell.valueType) ? cell : undefined;\n    const rawValue = typedCell ? typedCell.value : cell;\n    const valueType = stringValue(typedCell?.valueType);\n    if (valueType === 'copy' || valueType === 'localized-text' || valueType === 'identity' || valueType === 'badge' || valueType === 'stack' || valueType === 'metrics') return <TypedDisplayCell valueType={valueType} value={rawValue} copy={typedCell?.copy} valueFormat={typedCell?.valueFormat} translate={translate} />;\n    if (valueType === \"message\") return renderTableMessageValue(rawValue, translate);\n    if (valueType === 'timestamp') return renderDateTimeValue(rawValue, typeof rawValue === 'number' && rawValue < 1_000_000_000_000 ? 'seconds' : 'milliseconds', stringValue(typedCell?.locale));\n    return governedReadValue(rawValue);\n  };\n\n  if (domainRecordEquivalent) {\n    return (\n      <div\n        className=\"col-span-full flex min-h-0 flex-1 flex-col overflow-hidden bg-background\"\n        data-presentation=\"domain-record-equivalent\"\n      >\n        {childrenBySlot.header}\n        <div className=\"min-h-0 flex-1 overflow-auto\">\n          <Table style={typeof model.tableMinWidth === 'number' ? { minWidth: model.tableMinWidth } : undefined}>\n            <TableHeader className=\"sticky top-0 z-10 bg-background\">\n              <TableRow>\n                {modelColumns.map((column) => {\n                  const id = stringValue(column.id);\n                  if (!id) return null;\n                  return (\n                    <TableHead\n                      key={id}\n                      style={{ width: declaredTableDimension(column.width), minWidth: declaredTableDimension(column.minWidth), whiteSpace: column.wrap === true ? 'normal' : column.wrap === false ? 'nowrap' : undefined }}\n                      className={id === \"recordVersion\" ? \"w-24\" : undefined}\n                    >\n                      {copyValueOrFallback(\n                        column.label,\n                        column.labelKey,\n                        translate,\n                        id,\n                      )}\n                    </TableHead>\n                  );\n                })}\n              </TableRow>\n            </TableHeader>\n            <TableBody>\n              {model.loading === true ? (\n                <TableRow>\n                  <TableCell\n                    colSpan={Math.max(modelColumns.length, 1)}\n                    className=\"h-40 text-center text-muted-foreground\"\n                  >\n                    <Loader2 className=\"mr-2 inline h-4 w-4 animate-spin\" />\n                    {translate(\n                      \"components.data-management.ontology-records.loading\",\n                    )}\n                  </TableCell>\n                </TableRow>\n              ) : rows.length ? (\n                rows.map((row) => {\n                  const rowId = stringValue(row.id);\n                  if (!rowId) return null;\n                  return (\n                    <TableRow key={rowId}>\n                      {modelColumns.map((column) => {\n                        const id = stringValue(column.id);\n                        if (!id) return null;\n                        const value = cellValue(id, row);\n                        return (\n                          <TableCell\n                            key={id}\n                            style={{ width: declaredTableDimension(column.width), minWidth: declaredTableDimension(column.minWidth), whiteSpace: column.wrap === true ? 'normal' : column.wrap === false ? 'nowrap' : undefined, overflowWrap: column.wrap === true ? 'anywhere' : undefined }}\n                            className={\n                              column.wrap === true ? \"align-top\" :\n                              id === \"aggregateId\"\n                                ? \"max-w-72 font-mono text-xs\"\n                                : id === \"createdTimestamp\"\n                                  ? \"whitespace-nowrap text-xs text-muted-foreground\"\n                                  : \"max-w-72 truncate\"\n                            }\n                            title={\n                              typeof value === \"string\" ||\n                              typeof value === \"number\"\n                                ? String(value)\n                                : undefined\n                            }\n                          >\n                            {id === \"recordVersion\" ? (\n                              <Badge variant=\"secondary\">{value}</Badge>\n                            ) : (\n                              value\n                            )}\n                          </TableCell>\n                        );\n                      })}\n                    </TableRow>\n                  );\n                })\n              ) : (\n                <TableRow>\n                  <TableCell\n                    colSpan={Math.max(modelColumns.length, 1)}\n                    className=\"h-40 text-center text-muted-foreground\"\n                  >\n                    {translate(\n                      \"components.data-management.ontology-records.empty\",\n                    )}\n                  </TableCell>\n                </TableRow>\n              )}\n            </TableBody>\n          </Table>\n        </div>\n        {pagination?.hasMore && pagination.nextCursor ? (\n          <div className=\"flex justify-center border-t border-border p-3\">\n            <BaseButton\n              label={translate(\n                DESIGN_CAPABILITY_I18N_KEYS.ontologyTable.loadMore,\n              )}\n              loading={pagination.loadingMore}\n              disabled={pagination.loadingMore}\n              onClick={() =>\n                emitIntent(\"capability.ontology-table.load-more\", {\n                  cursor: String(pagination.nextCursor),\n                })\n              }\n            />\n          </div>\n        ) : null}\n        {childrenBySlot.footer}\n      </div>\n    );\n  }\n  const selectionColumnId = \"__selection\";\n  const legacyCellDivider = legacyDataExplorer\n    ? \"relative after:pointer-events-none after:absolute after:bottom-2 after:right-0 after:top-2 after:w-px after:bg-border/20 after:content-[''] group-hover:after:bg-border/35\"\n    : undefined;\n  const columns: WorkbenchTableViewColumn[] = [\n    ...(selectionEnabled\n      ? [\n          {\n            key: selectionColumnId,\n            label: \"\",\n            align: \"center\" as const,\n            width: 56,\n            minWidth: 56,\n            maxWidth: 56,\n            draggable: false,\n            resizable: false,\n            headerClassName: legacyDataExplorer\n              ? \"!sticky !bg-background !shadow-none\"\n              : undefined,\n            cellClassName: legacyDataExplorer\n              ? \"!sticky !z-20 !bg-background !shadow-none group-hover:!bg-muted group-data-[state=selected]:!bg-muted after:pointer-events-none after:absolute after:bottom-2 after:right-0 after:top-2 after:w-px after:bg-border/20 after:content-[''] group-hover:after:bg-border/35\"\n              : undefined,\n          },\n        ]\n      : []),\n    ...renderedModelColumns.flatMap((column) => {\n      const id = stringValue(column.id);\n      if (!id) return [];\n      const actions = legacyDataExplorer\n        ? []\n        : [...objectArray(column.actions), ...columnActions];\n      const legacySize =\n        id === \"index\"\n          ? { width: 72, minWidth: 56 }\n          : id === \"preview\"\n            ? { width: 96, minWidth: 72 }\n            : id === \"name\"\n              ? { width: 240, minWidth: 180 }\n              : id === \"type\"\n                ? { width: 120, minWidth: 80 }\n                : undefined;\n      return [\n        {\n          key: id,\n          label: copyValueOrFallback(\n            column.label,\n            column.labelKey,\n            translate,\n            id,\n          ),\n          align:\n            legacyDataExplorer && id === \"preview\"\n              ? \"center\"\n              : (stringValue(column.align) as\n                  | \"left\"\n                  | \"center\"\n                  | \"right\"\n                  | undefined) ?? \"left\",\n          sortable:\n            column.sortable === true && Boolean(stringValue(column.sortKey)),\n          sortDirection:\n            (stringValue(column.sortDirection) as\n              | \"asc\"\n              | \"desc\"\n              | \"none\"\n              | undefined) ?? \"none\",\n          sortLabel: translate(DESIGN_CAPABILITY_I18N_KEYS.ontologyTable.sort),\n          sortKey: stringValue(column.sortKey),\n          resizable: true,\n          valueType: stringValue(column.valueType),\n          ...legacySize,\n          width: declaredTableDimension(column.width) ?? legacySize?.width,\n          minWidth: declaredTableDimension(column.minWidth) ?? legacySize?.minWidth,\n          wrap: column.wrap === true,\n          headerStyle: { minWidth: declaredTableDimension(column.minWidth), whiteSpace: column.wrap === true ? 'normal' as const : undefined },\n          cellClassName: legacyCellDivider,\n          actions: actions.length ? (\n            <DataExplorerToolbarActions\n              layout=\"inline\"\n              actions={actions.flatMap((action) => {\n                const actionId = stringValue(action.id);\n                if (!actionId) return [];\n                return [\n                  {\n                    id: `${id}:${actionId}`,\n                    kind: \"icon-button\" as const,\n                    label: copyValueOrFallback(\n                      action.label,\n                      action.labelKey,\n                      translate,\n                      actionId,\n                    ),\n                    icon: actionIcon(action),\n                    tone: actionTone(action),\n                    disabled: action.disabled === true,\n                    onAction: () =>\n                      emitIntent(\"capability.ontology-table.column-action\", {\n                        columnId: id,\n                        actionId,\n                      }),\n                  },\n                ];\n              })}\n            />\n          ) : undefined,\n        },\n      ];\n    }),\n    ...(rowActions.length\n      ? [\n          {\n            key: \"__actions\",\n            label: legacyDataExplorer\n              ? translate(\"common.actions.actions\")\n              : \"\",\n            align: legacyDataExplorer ? (\"center\" as const) : undefined,\n            width: typeof model.actionWidth === 'number' ? model.actionWidth : 72,\n            minWidth: typeof model.actionWidth === 'number' ? model.actionWidth : 72,\n            maxWidth: typeof model.actionWidth === 'number' ? model.actionWidth : 72,\n            draggable: false,\n            resizable: false,\n            cellClassName: legacyCellDivider,\n          },\n        ]\n      : []),\n    ...legacyHiddenModelColumns.flatMap((column) => {\n      const id = stringValue(column.id);\n      if (!id) return [];\n      return [\n        {\n          key: `__legacy-hidden:${id}`,\n          label: \"\",\n          width: 180,\n          minWidth: 120,\n          draggable: false,\n          resizable: false,\n          headerClassName: \"!bg-transparent !p-0\",\n          cellClassName: \"!bg-transparent !p-0\",\n        },\n      ];\n    }),\n    ...(legacyDataExplorer\n      ? [\n          {\n            key: \"__legacy-filler\",\n            label: (\n              <div\n                className=\"pointer-events-none absolute inset-y-2 left-0 right-0\"\n                style={{\n                  backgroundImage:\n                    \"repeating-linear-gradient(to right, transparent 0, transparent 179px, hsl(var(--border) / 0.5) 179px, hsl(var(--border) / 0.5) 180px)\",\n                }}\n              />\n            ),\n            width: \"auto\",\n            minWidth: 1,\n            draggable: false,\n            resizable: false,\n            headerClassName: \"!bg-transparent !p-0 after:!hidden\",\n            cellClassName: \"!bg-transparent !p-0\",\n            headerStyle: {\n              backgroundImage:\n                \"repeating-linear-gradient(to right, hsl(var(--muted) / 0.08) 0, hsl(var(--muted) / 0.08) 180px, hsl(var(--muted) / 0.04) 180px, hsl(var(--muted) / 0.04) 360px)\",\n            },\n            cellStyle: {\n              backgroundImage:\n                \"repeating-linear-gradient(to right, hsl(var(--muted) / 0.05) 0, hsl(var(--muted) / 0.05) 180px, hsl(var(--muted) / 0.025) 180px, hsl(var(--muted) / 0.025) 360px)\",\n            },\n          },\n        ]\n      : []),\n  ];\n  const legacyTableMinimumWidth = legacyDataExplorer\n    ? columns.reduce((total, column) => {\n        if (column.key === \"__legacy-filler\") return total;\n        if (typeof column.width === \"number\") return total + column.width;\n        if (typeof column.minWidth === \"number\") return total + column.minWidth;\n        return total + 160;\n      }, 0)\n    : undefined;\n  return (\n    <DataExplorerViewShell\n      className=\"col-span-full\"\n      header={childrenBySlot.header}\n      footer={\n        model.showFooter === false && pagination?.hasMore !== true ? childrenBySlot.footer : domainRecordEquivalent ? (\n          <CollectionPaginationFooter\n            pagination={pagination}\n            selectedCount={selected.length}\n            loadMoreLabel={translate(\n              DESIGN_CAPABILITY_I18N_KEYS.ontologyTable.loadMore,\n            )}\n            loadingMoreLabel={translate(\n              DESIGN_CAPABILITY_I18N_KEYS.ontologyTable.loadingMore,\n            )}\n            onLoadMore={(cursor) =>\n              emitIntent(\"capability.ontology-table.load-more\", { cursor })\n            }\n            onPageChange={(page) =>\n              emitIntent(\"capability.ontology-table.page-change\", { page })\n            }\n            onPageSizeChange={(pageSize) =>\n              emitIntent(\"capability.ontology-table.page-size-change\", {\n                pageSize,\n              })\n            }\n          />\n        ) : (\n          <BaseStack\n            gap={legacyDataExplorer ? \"0\" : \"var(--global-spacing-sm, 0.5rem)\"}\n          >\n            <CollectionPaginationFooter\n              pagination={pagination}\n              selectedCount={selected.length}\n              legacyDataExplorer={legacyDataExplorer}\n              loadMoreInContent\n              translate={translate}\n              loadMoreLabel={translate(\n                DESIGN_CAPABILITY_I18N_KEYS.ontologyTable.loadMore,\n              )}\n              loadingMoreLabel={translate(\n                DESIGN_CAPABILITY_I18N_KEYS.ontologyTable.loadingMore,\n              )}\n              onLoadMore={(cursor) =>\n                emitIntent(\"capability.ontology-table.load-more\", { cursor })\n              }\n              onPageChange={(page) =>\n                emitIntent(\"capability.ontology-table.page-change\", { page })\n              }\n              onPageSizeChange={(pageSize) =>\n                emitIntent(\"capability.ontology-table.page-size-change\", {\n                  pageSize,\n                })\n              }\n            />\n            {childrenBySlot.footer}\n          </BaseStack>\n        )\n      }\n    >\n      <WorkbenchTableView<JsonObject>\n        scrollRestoration={collectionScrollRestoration}\n        rows={rows}\n        columns={columns}\n        tableMinWidth={typeof model.tableMinWidth === 'number' ? model.tableMinWidth : legacyTableMinimumWidth}\n        scrollFooter={\n          pagination?.mode !== 'window' && pagination?.hasMore ? <CursorInfiniteScroll pagination={pagination} label={translate(DESIGN_CAPABILITY_I18N_KEYS.ontologyTable.loadMore)} loadingLabel={translate(DESIGN_CAPABILITY_I18N_KEYS.ontologyTable.loadingMore)} onLoadMore={cursor => emitIntent('capability.ontology-table.load-more', { cursor })} /> : legacyDataExplorer &&\n          rows.length > 0 &&\n          pagination?.hasMore === false ? (\n            <div className=\"py-8 text-center text-sm text-muted-foreground\">\n              {translate(\"components.data.card-view.all-loaded\", {\n                total:\n                  pagination.total ??\n                  pagination.loadedEnd ??\n                  pagination.returned ??\n                  rows.length,\n              })}\n            </div>\n          ) : undefined\n        }\n        bodyMaxHeight=\"100%\"\n        columnResizeEnabled={model.columnResizeEnabled !== false}\n        columnDragEnabled={legacyDataExplorer}\n        headerPresentation={\n          legacyDataExplorer ? \"classic-data-grid\" : undefined\n        }\n        fillRemainingWidthColumnKey={\n          legacyDataExplorer ? \"__legacy-filler\" : undefined\n        }\n        style={\n          {\n            \"--monkeys-data-row-padding-y\": `${rowPaddingY}px`,\n            \"--monkeys-data-row-height\": `${legacyRowHeight}px`,\n            scrollbarGutter: legacyDataExplorer ? \"auto\" : undefined,\n          } as CSSProperties\n        }\n        classNames={{\n          root: \"!rounded-none !border-0 !bg-transparent\",\n          scrollArea: \"min-h-0 flex-1\",\n          table: legacyDataExplorer\n            ? \"!table-fixed !border-collapse !text-sm [&_th:first-child]:!bg-background [&_th:last-child]:!bg-transparent [&_th:last-child]:!p-0 [&_th:last-child]:!font-bold [&_th:last-child]:!text-foreground [&_td:last-child]:!p-0\"\n            : \"!text-sm\",\n          header: legacyDataExplorer\n            ? \"!border-b !border-gray-200 !bg-background !font-sans !text-sm !font-normal !normal-case !tracking-normal !text-foreground\"\n            : \"!font-sans !text-xs !normal-case !tracking-normal\",\n          headerRow: legacyDataExplorer ? \"[&>*]:!border-b-0\" : undefined,\n          body: legacyDataExplorer\n            ? \"!divide-y-0 [&_tr:last-child>*]:!border-b [&_tr:last-child>*]:!border-gray-200\"\n            : undefined,\n          row: legacyDataExplorer\n            ? \"group !h-[var(--monkeys-data-row-height)] !border-b !border-gray-200 !transition-colors [&>*]:!border-b-0 hover:!bg-muted/50\"\n            : undefined,\n          headerCell: domainRecordEquivalent\n            ? \"!bg-background !px-4 !py-2\"\n            : legacyDataExplorer\n              ? \"!h-9 !bg-transparent !px-3 !py-px !text-sm !shadow-none\"\n              : \"!bg-background !px-3 !py-2.5\",\n          cell: domainRecordEquivalent\n            ? \"!px-4 !py-2\"\n            : legacyDataExplorer\n              ? \"!px-3 !py-[var(--monkeys-data-row-padding-y)] !text-foreground\"\n              : \"!px-3 !py-[var(--monkeys-data-row-padding-y)]\",\n        }}\n        getRowKey={(row) => String(row.id)}\n        isRowDisabled={(row) => row.disabled === true}\n        onRowClick={(row) => {\n          const rowId = stringValue(row.id);\n          if (rowId && activationEnabled) {\n            emitIntent(\"capability.ontology-table.activate\", { rowId });\n          }\n        }}\n        onSort={(_columnKey, column) => {\n          const sortBy = stringValue(column.sortKey);\n          if (!sortBy || column.key === selectionColumnId) return;\n          emitIntent(\"capability.ontology-table.sort\", {\n            columnId: column.key,\n            sortBy,\n            direction: column.sortDirection === \"asc\" ? \"desc\" : \"asc\",\n          });\n        }}\n        renderColumnHeader={(column) => {\n          if (column.key === selectionColumnId) {\n            const control = (\n              <Checkbox\n                checked={selectAll?.selected === true}\n                aria-label={translate(\n                  stringValue(selectAll?.labelKey) ??\n                    DESIGN_CAPABILITY_I18N_KEYS.ontologyTable.select,\n                )}\n                disabled={selectAll?.disabled === true}\n                onCheckedChange={(checked) =>\n                  emitIntent(\"capability.ontology-table.selection-change\", {\n                    rowIds: checked\n                      ? rows.flatMap((row) =>\n                          stringValue(row.id) && row.disabled !== true\n                            ? [String(row.id)]\n                            : [],\n                        )\n                      : [],\n                  })\n                }\n              />\n            );\n            return legacyDataExplorer ? (\n              <div className=\"flex w-full items-center justify-center\">\n                {control}\n              </div>\n            ) : (\n              control\n            );\n          }\n          if (column.key.startsWith(\"__legacy-hidden:\")) return null;\n          if (column.key === \"__legacy-filler\") return column.label;\n          if (column.key === \"__actions\")\n            return legacyDataExplorer ? column.label : null;\n          return column.label;\n        }}\n        renderCell={(column, row, { rowIndex }) => {\n          const rowId = stringValue(row.id);\n          if (!rowId) return null;\n          if (column.key === selectionColumnId) {\n            const control = (\n              <Checkbox\n                checked={row.selected === true}\n                aria-label={translate(\n                  DESIGN_CAPABILITY_I18N_KEYS.ontologyTable.select,\n                )}\n                disabled={row.disabled === true}\n                onCheckedChange={(checked) =>\n                  emitIntent(\"capability.ontology-table.selection-change\", {\n                    rowIds: checked\n                      ? Array.from(new Set([...selected, rowId]))\n                      : selected.filter((value) => value !== rowId),\n                  })\n                }\n              />\n            );\n            return legacyDataExplorer ? (\n              <div className=\"flex w-full items-center justify-center\">\n                {control}\n              </div>\n            ) : (\n              control\n            );\n          }\n          if (column.key.startsWith(\"__legacy-hidden:\")) return null;\n          if (column.key === \"__legacy-filler\") {\n            return (\n              <div\n                className=\"pointer-events-none absolute inset-y-2 left-0 right-0\"\n                style={{\n                  backgroundImage:\n                    \"repeating-linear-gradient(to right, transparent 0, transparent 179px, hsl(var(--border) / 0.28) 179px, hsl(var(--border) / 0.28) 180px)\",\n                }}\n              />\n            );\n          }\n          if (column.key === \"__actions\") {\n            if (legacyDataExplorer) {\n              const menuActions = restrictTableRowActions(rowActions, row).flatMap((action) => {\n                const actionId = stringValue(action.id);\n                if (!actionId) return [];\n                return [{ action, actionId }];\n              });\n              return (\n                <LegacyDataExplorerRowMenu\n                  rowId={rowId}\n                  rowDisabled={row.disabled === true}\n                  menuActions={menuActions}\n                  translate={translate}\n                  onAction={emitRowAction}\n                />\n              );\n            }\n            return (\n              <DataExplorerToolbarActions\n                layout=\"inline\"\n                actions={collectionToolbarActions(restrictTableRowActions(rowActions, row).flatMap((action) => {\n                  const actionId = stringValue(action.id);\n                  if (!actionId) return [];\n                  const pending = action.loading === true || pendingActionInvocations.some(invocation =>\n                    invocation.source.port === (actionId === 'record-delete' ? 'capability.ontology-table.delete' : 'capability.ontology-table.row-action') &&\n                    invocation.intent.rowId === rowId && (actionId === 'record-delete' || invocation.intent.actionId === actionId));\n                  return [\n                    {\n                      id: `${rowId}:${actionId}`,\n                      presentation: action.presentation,\n                      destructive: action.destructive === true,\n                      kind:\n                        action.presentation === \"icon\"\n                          ? (\"icon-button\" as const)\n                          : (\"button\" as const),\n                      label: copyValueOrFallback(\n                        action.label,\n                        action.labelKey,\n                        translate,\n                        actionId,\n                      ),\n                      title: typeof action.titleKey === 'string' ? translate(action.titleKey) : undefined,\n                      icon: actionIcon(action),\n                      tone: actionTone(action),\n                      disabled:\n                        action.disabled === true || row.disabled === true || pending,\n                      loading: pending,\n                      onAction: () => emitRowAction(rowId, actionId),\n                    },\n                  ];\n                }), translate('monkeys.design.capability.dataToolbar.moreActions'))}\n              />\n            );\n          }\n          const cells = isJsonObject(row.cells) ? row.cells : {};\n          const cell = cells[column.key];\n          const typedCell =\n            isJsonObject(cell) && stringValue(cell.valueType)\n              ? cell\n              : undefined;\n          const rawValue = typedCell ? typedCell.value : cell;\n          if (legacyDataExplorer && column.key === \"index\") {\n            const indexValue =\n              typeof rawValue === \"number\" && Number.isFinite(rawValue)\n                ? rawValue\n                : rowIndex + 1;\n            return (\n              <div className=\"w-full text-center tabular-nums text-muted-foreground\">\n                {indexValue}\n              </div>\n            );\n          }\n          if (legacyDataExplorer && column.key === \"preview\") {\n            if (isJsonObject(rawValue) && rawValue.kind === 'json' && rawValue.dataType === 'img') return governedReadValue(rawValue);\n            const files =\n              isJsonObject(rawValue) && rawValue.kind === \"files\"\n                ? objectArray(rawValue.items)\n                : [];\n            const firstFile = files[0];\n            const mediaId = firstFile ? stringValue(firstFile.id) : undefined;\n            const mediaType = firstFile\n              ? stringValue(firstFile.mediaType)\n              : undefined;\n            const resolvedMedia =\n              mediaId && mediaType?.startsWith(\"image/\")\n                ? resolveMedia({ id: mediaId })\n                : undefined;\n            return resolvedMedia ? (\n              <MediaPreviewFrame\n                aspectRatio=\"4:3\"\n                className=\"h-10 w-14 overflow-hidden rounded\"\n              >\n                <MediaPreviewImage\n                  src={resolvedMedia.src}\n                  alt={stringValue(firstFile?.label) ?? rowId}\n                  fit=\"cover\"\n                />\n              </MediaPreviewFrame>\n            ) : (\n              <span className=\"text-sm text-muted-foreground\">-</span>\n            );\n          }\n          if (legacyDataExplorer && column.key === \"size\") {\n            const formatted = formatLegacyFileSize(rawValue);\n            return (\n              <div\n                className=\"w-full min-w-0 truncate whitespace-nowrap\"\n                title={formatted}\n              >\n                {formatted}\n              </div>\n            );\n          }\n          if (legacyDataExplorer && column.key === \"status\") {\n            const status = stringValue(rawValue);\n            if (!status) return \"-\";\n            const statusLabel = (\n              {\n                published: \"common.status.published\",\n                draft: \"common.status.draft\",\n                archived: \"common.status.archived\",\n              } as const\n            )[status as \"published\" | \"draft\" | \"archived\"];\n            const label = statusLabel ? translate(statusLabel) : status;\n            return (\n              <Badge\n                variant={\n                  status === \"published\"\n                    ? \"default\"\n                    : status === \"archived\"\n                      ? \"outline\"\n                      : \"secondary\"\n                }\n                className=\"min-w-0 max-w-full truncate\"\n                title={label}\n              >\n                {label}\n              </Badge>\n            );\n          }\n          if (\n            legacyDataExplorer &&\n            (column.key === \"updatedTimestamp\" ||\n              column.key === \"createdTimestamp\")\n          ) {\n            const formatted = formatLegacyTableTimestamp(rawValue);\n            return (\n              <div\n                className=\"w-full min-w-0 truncate whitespace-nowrap\"\n                title={formatted}\n              >\n                {formatted}\n              </div>\n            );\n          }\n          const content =\n            typedCell?.valueType === 'copy' || typedCell?.valueType === 'localized-text' || typedCell?.valueType === 'identity' || typedCell?.valueType === 'badge' || typedCell?.valueType === 'stack' || typedCell?.valueType === 'metrics'\n              ? <TypedDisplayCell valueType={typedCell.valueType} value={rawValue} copy={typedCell.copy} valueFormat={typedCell.valueFormat} translate={translate} /> :\n            typedCell?.valueType === \"message\" ? renderTableMessageValue(rawValue, translate) :\n            typedCell?.valueType === 'timestamp'\n              ? renderDateTimeValue(rawValue, typeof rawValue === 'number' && rawValue < 1_000_000_000_000 ? 'seconds' : 'milliseconds', stringValue(typedCell?.locale))\n              : governedReadValue(rawValue);\n          if (\n            typedCell &&\n            typedCell.editable === true &&\n            stringValue(typedCell.intentId)\n          ) {\n            return (\n              <button\n                type=\"button\"\n                className=\"min-w-0 rounded px-1 py-0.5 text-left hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n                disabled={typedCell.disabled === true || row.disabled === true}\n                onClick={(event) => {\n                  event.stopPropagation();\n                  emitIntent(\"capability.ontology-table.cell-intent\", {\n                    rowId,\n                    columnId: column.key,\n                    intentId: String(typedCell.intentId),\n                  });\n                }}\n              >\n                {content}\n              </button>\n            );\n          }\n          if (column.wrap === true) return <div className=\"w-full min-w-0 whitespace-normal break-words\">{content}</div>;\n          if (legacyDataExplorer && column.key === \"name\") {\n            return (\n              <div\n                className=\"w-full min-w-0 truncate font-medium\"\n                title={typeof content === \"string\" ? content : undefined}\n              >\n                {content}\n              </div>\n            );\n          }\n          if (legacyDataExplorer && column.key === \"type\") {\n            const typeText =\n              typeof content === \"string\" || typeof content === \"number\"\n                ? String(content)\n                : \"\";\n            return typeText ? (\n              <Badge\n                variant=\"secondary\"\n                className=\"min-w-0 max-w-full truncate\"\n                title={typeText}\n              >\n                {typeText}\n              </Badge>\n            ) : (\n              \"-\"\n            );\n          }\n          return content;\n        }}\n      />\n    </DataExplorerViewShell>\n  );\n};\n\nconst LEGACY_CARD_GRID_ROW_HEIGHT = 4;\nconst LEGACY_CARD_GRID_GAP = 8;\nconst LEGACY_CARD_GRID_INITIAL_HEADER_HEIGHT = 140;\n\nconst legacyCardGridSpan = (height: number) =>\n  Math.max(\n    1,\n    Math.ceil(\n      (height + LEGACY_CARD_GRID_GAP) /\n        (LEGACY_CARD_GRID_ROW_HEIGHT + LEGACY_CARD_GRID_GAP),\n    ),\n  );\n\nconst LegacyCardGridItem = ({ children }: { children: ReactNode }) => {\n  const measuredRef = useRef<HTMLDivElement>(null);\n  const [span, setSpan] = useState(() =>\n    legacyCardGridSpan(LEGACY_CARD_GRID_INITIAL_HEADER_HEIGHT),\n  );\n\n  useEffect(() => {\n    const element = measuredRef.current;\n    if (!element) return;\n    const updateSpan = () =>\n      setSpan(legacyCardGridSpan(element.getBoundingClientRect().height));\n    updateSpan();\n    if (typeof ResizeObserver === \"undefined\") return;\n    const observer = new ResizeObserver(updateSpan);\n    observer.observe(element);\n    return () => observer.disconnect();\n  }, []);\n\n  return (\n    <div style={{ gridRowEnd: `span ${span}` }}>\n      <div ref={measuredRef} className=\"w-full\">\n        {children}\n      </div>\n    </div>\n  );\n};\n\nexport const CardGridCapabilityRenderer: DesignCapabilityRenderer = ({\n  node,\n  model,\n  childrenBySlot,\n  translate,\n  emitIntent,\n  resolveMedia,\n  loading,\n  pendingActionInvocations,\n}) => {\n  const items = objectArray(model.items);\n  const selected = items\n    .filter((item) => item.selected === true)\n    .flatMap((item) => (stringValue(item.id) ? [String(item.id)] : []));\n  const pagination = cursorPagination(model.pagination);\n  if (!items.length && !pagination?.hasMore)\n    return <CapabilityStatus kind=\"empty\" translate={translate} />;\n  if (model.galleryFields !== undefined || model.gallerySettings !== undefined) return <GalleryFieldPresentation renderActionIcon={actionIcon} kind=\"card-grid\" model={model} translate={translate} emitIntent={emitIntent} resolveMedia={resolveMedia} loading={loading} pendingActionInvocations={pendingActionInvocations} header={childrenBySlot.header} footer={<><CollectionPaginationFooter pagination={pagination} selectedCount={selected.length} loadMoreLabel={translate(DESIGN_CAPABILITY_I18N_KEYS.cardGrid.loadMore)} loadingMoreLabel={translate(DESIGN_CAPABILITY_I18N_KEYS.cardGrid.loadingMore)} onLoadMore={cursor => emitIntent(\"capability.card-grid.load-more\", { cursor })} onPageSizeChange={pageSize => emitIntent(\"capability.card-grid.page-size-change\", { pageSize })} />{childrenBySlot.footer}</>} />;\n  const displayItems: Array<DataExplorerDisplayItem<JsonObject>> =\n    items.flatMap((item) => {\n      const id = stringValue(item.id);\n      if (!id) return [];\n      return [\n        {\n          id,\n          title: copyValueOrFallback(item.title, item.titleKey, translate, id),\n          description: stringValue(item.descriptionKey)\n            ? translate(String(item.descriptionKey))\n            : stringValue(item.description),\n          selected: item.selected === true,\n          disabled: item.disabled === true,\n          metadata: objectArray(item.metadata).flatMap((entry) => {\n            const entryId = stringValue(entry.id);\n            return entryId\n              ? [\n                  {\n                    id: entryId,\n                    label: copyValueOrFallback(\n                      entry.label,\n                      entry.labelKey,\n                      translate,\n                      entryId,\n                    ),\n                    value: governedReadValue(entry.value),\n                  },\n                ]\n              : [];\n          }),\n          source: item,\n        },\n      ];\n    });\n  const presentation = isJsonObject(model.presentation)\n    ? model.presentation\n    : undefined;\n  const legacyDataExplorer = presentation?.kind === \"legacy-data-explorer\";\n  const rowActions = objectArray(model.rowActions);\n  if (legacyDataExplorer) {\n    return (\n      <DataExplorerViewShell\n        className=\"col-span-full h-full\"\n        header={childrenBySlot.header}\n        footer={\n          <>\n            <CollectionPaginationFooter\n              pagination={pagination}\n              selectedCount={selected.length}\n              legacyDataExplorer\n              loadMoreInContent\n              translate={translate}\n              loadMoreLabel={translate(\n                DESIGN_CAPABILITY_I18N_KEYS.cardGrid.loadMore,\n              )}\n              loadingMoreLabel={translate(\n                DESIGN_CAPABILITY_I18N_KEYS.cardGrid.loadingMore,\n              )}\n              onLoadMore={(cursor) =>\n                emitIntent(\"capability.card-grid.load-more\", { cursor })\n              }\n              onPageSizeChange={(pageSize) =>\n                emitIntent(\"capability.card-grid.page-size-change\", {\n                  pageSize,\n                })\n              }\n            />\n            {childrenBySlot.footer}\n          </>\n        }\n      >\n        <div className=\"min-h-0 flex-1 overflow-auto p-4\">\n          <DataExplorerViewCollection<DataExplorerDisplayItem<JsonObject>>\n            activeViewId=\"card-grid\"\n            items={displayItems}\n            layout=\"grid\"\n            scrollable={false}\n            wrapItems={false}\n            selectedIds={selected}\n            getItemId={(item) => item.id}\n            classNames={{\n              root: \"min-h-0 flex-none overflow-visible\",\n              items: \"grid overflow-visible\",\n            }}\n            itemsStyle={{\n              gap: 8,\n              gridAutoFlow: \"dense\",\n              gridAutoRows: 4,\n              gridTemplateColumns: \"repeat(auto-fill, minmax(220px, 1fr))\",\n            }}\n            renderItem={({ item, selected: isSelected }) => {\n              const actions = collectionRowActions(\n                rowActions.filter(\n                  (action) => stringValue(action.id) !== \"record-history\",\n                ),\n                item.id,\n                translate,\n                emitIntent,\n                \"capability.card-grid.row-action\",\n                \"capability.card-grid.delete\",\n              );\n              const preview = isJsonObject(item.source?.fields) && isJsonObject(item.source.fields.preview) ? item.source.fields.preview : undefined;\n              const reference = preview && isJsonObject(preview.reference) ? preview.reference : undefined;\n              const cover = reference && stringValue(reference.id) ? resolveMedia?.({ id: String(reference.id) }) : undefined;\n              return (\n                <LegacyCardGridItem>\n                  <DataExplorerDisplayCard\n                    item={item}\n                    children={null}\n                    media={cover?.src ? <img src={cover.src} alt={String(item.title ?? '')} loading=\"lazy\" className=\"h-auto w-full object-cover\" referrerPolicy=\"no-referrer\" /> : undefined}\n                    appearance={{ preset: \"soft\" }}\n                    className={`border-border/70 transition-shadow hover:shadow-sm${isSelected ? \" ring-2 ring-primary\" : \"\"}`}\n                    classNames={{ header: \"p-3 pb-2\" }}\n                    header={\n                      <div className=\"flex items-center justify-between gap-2\">\n                        <div className=\"flex min-w-0 flex-1 items-center gap-2\">\n                          <Checkbox\n                            checked={isSelected}\n                            onCheckedChange={() =>\n                              emitIntent(\n                                \"capability.card-grid.selection-change\",\n                                {\n                                  itemIds: isSelected\n                                    ? selected.filter(\n                                        (value) => value !== item.id,\n                                      )\n                                    : Array.from(\n                                        new Set([...selected, item.id]),\n                                      ),\n                                },\n                              )\n                            }\n                            onClick={(event) => event.stopPropagation()}\n                            aria-label={translate(\n                              DESIGN_CAPABILITY_I18N_KEYS.cardGrid.select,\n                            )}\n                          />\n                          <div className=\"min-w-0 flex-1\">\n                            <span\n                              className=\"inline-flex min-w-0 max-w-full items-baseline text-sm font-semibold leading-none\"\n                              title={String(item.title ?? \"\")}\n                              aria-label={String(item.title ?? \"\")}\n                              data-content-safe-text=\"filename\"\n                            >\n                              <span className=\"min-w-0 truncate\">\n                                {item.title}\n                              </span>\n                            </span>\n                          </div>\n                        </div>\n                        <DataExplorerDisplayActionMenu\n                          item={item}\n                          label={translate(\"common.actions.actions\")}\n                          triggerLabel={translate(\"common.actions.actions\")}\n                          actions={actions}\n                          appearance={{ preset: \"soft\" }}\n                          className=\"h-7 w-7 rounded-full text-foreground shadow-sm backdrop-blur-sm\"\n                        />\n                      </div>\n                    }\n                  />\n                </LegacyCardGridItem>\n              );\n            }}\n          />\n          {pagination?.mode !== 'window' && pagination?.hasMore ? <CursorInfiniteScroll pagination={pagination} label={translate(DESIGN_CAPABILITY_I18N_KEYS.cardGrid.loadMore)} loadingLabel={translate(DESIGN_CAPABILITY_I18N_KEYS.cardGrid.loadingMore)} onLoadMore={cursor => emitIntent('capability.card-grid.load-more', { cursor })} /> : null}\n          {pagination?.hasMore === false && displayItems.length > 0 ? (\n            <div className=\"py-8 text-center text-sm text-muted-foreground\">\n              {translate(\"components.data.card-view.all-loaded\", {\n                total:\n                  pagination.total ??\n                  pagination.loadedEnd ??\n                  pagination.returned ??\n                  displayItems.length,\n              })}\n            </div>\n          ) : null}\n        </div>\n      </DataExplorerViewShell>\n    );\n  }\n  return (\n    <DataExplorerViewShell\n      className=\"col-span-full\"\n      header={childrenBySlot.header}\n      footer={\n        <BaseStack gap=\"var(--global-spacing-sm, 0.5rem)\">\n          <CollectionPaginationFooter\n            pagination={pagination}\n            selectedCount={selected.length}\n            loadMoreLabel={translate(\n              DESIGN_CAPABILITY_I18N_KEYS.cardGrid.loadMore,\n            )}\n            loadingMoreLabel={translate(\n              DESIGN_CAPABILITY_I18N_KEYS.cardGrid.loadingMore,\n            )}\n            onLoadMore={(cursor) =>\n              emitIntent(\"capability.card-grid.load-more\", { cursor })\n            }\n            onPageSizeChange={(pageSize) =>\n              emitIntent(\"capability.card-grid.page-size-change\", { pageSize })\n            }\n          />\n          {childrenBySlot.footer}\n        </BaseStack>\n      }\n    >\n      <DataExplorerViewCollection<DataExplorerDisplayItem<JsonObject>>\n        activeViewId=\"card-grid\"\n        items={displayItems}\n        layout=\"grid\"\n        selectedIds={selected}\n        getItemId={(item) => item.id}\n        classNames={{ items: \"p-4\" }}\n        itemsStyle={{\n          gridTemplateColumns: `repeat(${node.layout.columns ?? 3}, minmax(0, 1fr))`,\n        }}\n        renderItem={({ item, selected: isSelected }) => (\n          <DataExplorerRecordCard\n            item={item}\n            selected={isSelected}\n            disabled={item.disabled}\n            selectLabel={translate(DESIGN_CAPABILITY_I18N_KEYS.cardGrid.select)}\n            unselectLabel={translate(\n              DESIGN_CAPABILITY_I18N_KEYS.cardGrid.select,\n            )}\n            footer={\n              item.description || item.metadata?.length ? (\n                <BaseStack gap=\"var(--global-spacing-sm, 0.5rem)\">\n                  {item.description}\n                  <BaseDescriptionList\n                    items={(item.metadata ?? []).map((entry) => ({\n                      term: entry.label,\n                      value: entry.value,\n                    }))}\n                  />\n                </BaseStack>\n              ) : undefined\n            }\n            onClick={() =>\n              emitIntent(\"capability.card-grid.activate\", {\n                itemId: item.id,\n              })\n            }\n            onToggleSelection={() =>\n              emitIntent(\"capability.card-grid.selection-change\", {\n                itemIds: isSelected\n                  ? selected.filter((value) => value !== item.id)\n                  : Array.from(new Set([...selected, item.id])),\n              })\n            }\n          />\n        )}\n      />\n    </DataExplorerViewShell>\n  );\n};\n\nexport const PaginationCapabilityRenderer: DesignCapabilityRenderer = ({\n  model,\n  translate,\n  emitIntent,\n}) => {\n  if (model.mode === \"cursor\") {\n    return (\n      <CursorLoadMore\n        pagination={{\n          mode: \"append\",\n          hasMore: model.hasNext === true,\n          nextCursor: stringValue(model.nextCursor),\n          loadingMore: model.loading === true,\n          errorCode: stringValue(model.errorCode),\n        }}\n        label={translate(DESIGN_CAPABILITY_I18N_KEYS.pagination.loadMore)}\n        loadingLabel={translate(\n          DESIGN_CAPABILITY_I18N_KEYS.pagination.loadingMore,\n        )}\n        onLoadMore={(cursor) =>\n          emitIntent(\"capability.pagination.load-more\", { cursor })\n        }\n      />\n    );\n  }\n  return (\n    <BasePagination\n      page={typeof model.page === \"number\" ? model.page : 1}\n      pageSize={typeof model.pageSize === \"number\" ? model.pageSize : 20}\n      total={typeof model.total === \"number\" ? model.total : 0}\n      pageCount={\n        typeof model.pageCount === \"number\" && model.pageCount > 0\n          ? model.pageCount\n          : undefined\n      }\n      hasNext={model.hasNext === true}\n      hasPrevious={model.hasPrevious === true}\n      mode=\"pages\"\n      label={translate(\n        stringValue(model.labelKey) ??\n          DESIGN_CAPABILITY_I18N_KEYS.pagination.label,\n      )}\n      onPageChange={(page) =>\n        emitIntent(\"capability.pagination.page-change\", { page })\n      }\n    />\n  );\n};\n\nconst RecordDetailViewedIntent = ({\n  itemId,\n  emitIntent,\n}: {\n  itemId: string;\n  emitIntent: DesignCapabilityRendererContext[\"emitIntent\"];\n}) => {\n  const trackedItemRef = useRef<string>();\n  useEffect(() => {\n    if (trackedItemRef.current === itemId) return;\n    trackedItemRef.current = itemId;\n    emitIntent(\"capability.record-detail.viewed\", { itemId });\n  }, [emitIntent, itemId]);\n  return null;\n};\n\nexport const RecordDetailCapabilityRenderer: DesignCapabilityRenderer = ({\n  model,\n  childrenBySlot,\n  translate,\n  emitIntent,\n}) => {\n  const presentation = isJsonObject(model.presentation)\n    ? model.presentation\n    : undefined;\n  const impressionRecord = isJsonObject(model.dataExplorerRecord)\n    ? model.dataExplorerRecord\n    : {};\n  // Dismissal is available for a standalone detail surface unless the host\n  // explicitly owns closing it.\n  const closeEnabled = model.closeEnabled !== false;\n  if (presentation?.kind === \"hidden\") return null;\n  if (presentation?.kind === \"data-explorer-sidebar\") {\n    const record = impressionRecord;\n    const id = stringValue(record.id) ?? \"-\";\n    const recordTitle =\n      stringValue(record.title) ?? stringValue(model.title) ?? id;\n    const description =\n      stringValue(record.description) ?? stringValue(model.description);\n    const recordType = stringValue(record.type);\n    const status = stringValue(record.status);\n    const previewSource = stringValue(record.previewSource);\n    const previewAlt = stringValue(record.previewAlt) ?? recordTitle;\n    const previewKind = stringValue(record.previewKind);\n    const tagLabels = stringArray(record.tagLabels);\n    const properties = isJsonObject(record.properties) ? record.properties : {};\n    const metadata = isJsonObject(record.metadata) ? record.metadata : {};\n    const navigation = isJsonObject(model.navigation)\n      ? model.navigation\n      : undefined;\n    const previewDialogId = `monkeys-record-preview-${id.replace(/[^a-zA-Z0-9_-]/g, \"-\")}`;\n    const fieldMap = new Map(\n      objectArray(model.fields).flatMap((field) => {\n        const fieldId = stringValue(field.id);\n        return fieldId ? [[fieldId, field] as const] : [];\n      }),\n    );\n    const metric = (value: JsonValue | undefined) =>\n      typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0\n        ? value\n        : 0;\n    const timestamp = (value: JsonValue | undefined) =>\n      value === undefined || value === null || value === \"\"\n        ? undefined\n        : formatDetailTimestamp(value);\n    const detailValue = (fieldId: string) =>\n      governedReadValue(fieldMap.get(fieldId)?.value);\n    const featureFields = [...fieldMap.entries()].filter(\n      ([fieldId, field]) =>\n        fieldId.startsWith(\"feature:\") && hasGovernedReadValue(field.value),\n    );\n    const statusTone =\n      status === \"published\"\n        ? \"border-success/25 bg-success/10 text-success dark:border-success/25 dark:bg-success/12 dark:text-success\"\n        : status === \"draft\"\n          ? \"border-warning/30 bg-warning/10 text-warning dark:border-warning/30 dark:bg-warning/12 dark:text-warning\"\n          : \"border-border/70 bg-muted/70 text-muted-foreground\";\n    const closeLabel = translate(\n      stringValue(model.closeAriaLabelKey) ??\n        stringValue(model.closeLabelKey) ??\n        DESIGN_CAPABILITY_I18N_KEYS.recordDetail.close,\n    );\n    const previousLabel = translate(\n      stringValue(navigation?.previousLabelKey) ??\n        DESIGN_CAPABILITY_I18N_KEYS.recordDetail.previous,\n    );\n    const nextLabel = translate(\n      stringValue(navigation?.nextLabelKey) ??\n        DESIGN_CAPABILITY_I18N_KEYS.recordDetail.next,\n    );\n    const previousId = stringValue(navigation?.previousId);\n    const nextId = stringValue(navigation?.nextId);\n    const downloadPreview = async () => {\n      if (!previewSource) return;\n      try {\n        const response = await fetch(previewSource);\n        if (!response.ok) throw new Error(\"preview download failed\");\n        const blob = await response.blob();\n        const objectUrl = URL.createObjectURL(blob);\n        try {\n          const anchor = document.createElement(\"a\");\n          anchor.href = objectUrl;\n          anchor.download = recordTitle;\n          anchor.target = \"_self\";\n          anchor.rel = \"noopener noreferrer\";\n          anchor.style.display = \"none\";\n          document.body.appendChild(anchor);\n          anchor.click();\n          anchor.remove();\n        } finally {\n          window.setTimeout(() => URL.revokeObjectURL(objectUrl), 10_000);\n        }\n        emitIntent(\"capability.record-detail.preview-download\", {\n          itemId: id,\n          source: previewSource,\n        });\n      } catch {\n        const anchor = document.createElement(\"a\");\n        anchor.href = previewSource;\n        anchor.download = recordTitle;\n        anchor.target = \"_blank\";\n        anchor.rel = \"noopener noreferrer\";\n        anchor.click();\n        emitIntent(\"capability.record-detail.preview-download\", {\n          itemId: id,\n          source: previewSource,\n        });\n      }\n    };\n    const compactField = (\n      label: ReactNode,\n      icon: ReactNode,\n      value: ReactNode,\n      key?: string,\n    ) => (\n      <div key={key} className=\"min-w-0 space-y-1.5\">\n        <div className=\"inline-flex min-w-0 items-center gap-1.5 text-[11px] font-semibold text-foreground\">\n          {icon}\n          <span className=\"min-w-0 truncate\">{label}</span>\n        </div>\n        <div className=\"flex min-h-10 min-w-0 items-center 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          {value}\n        </div>\n      </div>\n    );\n    const sectionTitle = (label: ReactNode) => (\n      <div className=\"inline-flex max-w-full items-center gap-2 rounded-md border border-border/60 bg-muted/20 px-2.5 py-1.5 text-xs font-medium text-foreground dark:border-border/45 dark:bg-muted/10\">\n        {label}\n      </div>\n    );\n    return (\n      <div\n        className=\"relative flex h-full min-h-0 w-full flex-col overflow-hidden bg-background shadow-none\"\n        data-data-explorer-record-detail\n      >\n        <RecordDetailViewedIntent itemId={id} emitIntent={emitIntent} />\n        <div className=\"shrink-0 border-b border-border/40 px-3 py-3 dark:border-border/30\">\n          <div className=\"min-w-0 space-y-3\">\n            <div className=\"flex h-8 items-center justify-between gap-3\">\n              <div className=\"inline-flex h-7 items-center overflow-hidden rounded-md border border-border/60 bg-muted/15 text-muted-foreground shadow-[inset_0_1px_0_hsl(var(--background)/0.75)]\">\n                <button\n                  type=\"button\"\n                  disabled={!previousId}\n                  aria-label={previousLabel}\n                  onClick={() =>\n                    previousId &&\n                    emitIntent(\"capability.record-detail.navigate\", {\n                      direction: \"previous\",\n                      targetId: previousId,\n                    })\n                  }\n                  className=\"flex h-7 w-7 items-center justify-center transition-colors hover:bg-accent hover:text-foreground disabled:pointer-events-none disabled:opacity-40\"\n                >\n                  <ChevronUp className=\"h-3.5 w-3.5\" />\n                </button>\n                <span className=\"h-4 w-px bg-border/60\" aria-hidden=\"true\" />\n                <button\n                  type=\"button\"\n                  disabled={!nextId}\n                  aria-label={nextLabel}\n                  onClick={() =>\n                    nextId &&\n                    emitIntent(\"capability.record-detail.navigate\", {\n                      direction: \"next\",\n                      targetId: nextId,\n                    })\n                  }\n                  className=\"flex h-7 w-7 items-center justify-center transition-colors hover:bg-accent hover:text-foreground disabled:pointer-events-none disabled:opacity-40\"\n                >\n                  <ChevronDown className=\"h-3.5 w-3.5\" />\n                </button>\n              </div>\n              {closeEnabled ? (\n                <button\n                  type=\"button\"\n                  aria-label={closeLabel}\n                  onClick={() => emitIntent(\"capability.record-detail.close\", {})}\n                  className=\"flex h-8 w-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent hover:text-foreground\"\n                >\n                  <PanelRightClose className=\"h-4 w-4\" />\n                </button>\n              ) : null}\n            </div>\n            <div className=\"space-y-2\">\n              <div className=\"break-words text-sm font-semibold leading-5 text-foreground\">\n                {recordTitle}\n              </div>\n              <div className=\"break-all font-mono text-[11px] leading-4 text-muted-foreground\">\n                {translate(\"common.table.id\")}: {id}\n              </div>\n            </div>\n          </div>\n        </div>\n        <div className=\"min-h-0 flex-1 space-y-4 overflow-y-auto px-3 py-4\">\n          <div className=\"rounded-md border border-border/55 bg-muted/20 p-2 dark:border-border/45 dark:bg-muted/10\">\n            <div className=\"group relative flex aspect-[4/3] max-h-[300px] items-center justify-center overflow-hidden rounded-md bg-background\">\n              {previewSource ? (\n                previewKind === \"text\" ? (\n                  <pre className=\"h-full w-full overflow-auto whitespace-pre-wrap break-all p-4 text-xs leading-5 text-foreground\">\n                    {previewSource}\n                  </pre>\n                ) : (\n                  <img\n                    src={previewSource}\n                    alt={previewAlt}\n                    className=\"h-full w-full object-contain\"\n                  />\n                )\n              ) : (\n                <div className=\"text-center text-muted-foreground\">\n                  <FileText className=\"mx-auto mb-2 h-8 w-8 opacity-60\" />\n                  <span className=\"text-xs\">\n                    {translate(\"common.status.no-preview\")}\n                  </span>\n                </div>\n              )}\n              {previewSource ? (\n                <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center gap-2 bg-black/0 opacity-0 transition duration-150 group-focus-within:bg-black/25 group-focus-within:opacity-100 group-hover:bg-black/25 group-hover:opacity-100\">\n                  <button\n                    type=\"button\"\n                    aria-label={translate(\n                      \"components.data-v1.detail.enlarge-preview\",\n                    )}\n                    title={translate(\n                      \"components.data-v1.detail.enlarge-preview\",\n                    )}\n                    onClick={() =>\n                      (\n                        document.getElementById(\n                          previewDialogId,\n                        ) as HTMLDialogElement | null\n                      )?.showModal()\n                    }\n                    className=\"pointer-events-auto inline-flex h-9 items-center gap-2 rounded-md border border-white/25 bg-background/95 px-3 text-xs font-medium text-foreground shadow-lg backdrop-blur transition-colors hover:bg-background\"\n                  >\n                    <Maximize2 className=\"h-3.5 w-3.5\" />\n                    <span>\n                      {translate(\"components.data-v1.detail.enlarge-preview\")}\n                    </span>\n                  </button>\n                  <button\n                    type=\"button\"\n                    aria-label={translate(\"common.actions.download\")}\n                    title={translate(\"common.actions.download\")}\n                    onClick={() => void downloadPreview()}\n                    className=\"pointer-events-auto inline-flex h-9 items-center gap-2 rounded-md border border-white/25 bg-background/95 px-3 text-xs font-medium text-foreground shadow-lg backdrop-blur transition-colors hover:bg-background disabled:pointer-events-none disabled:opacity-60\"\n                  >\n                    <Download className=\"h-3.5 w-3.5\" />\n                    <span>{translate(\"common.actions.download\")}</span>\n                  </button>\n                </div>\n              ) : null}\n            </div>\n          </div>\n          <section className=\"grid min-w-0 grid-cols-2 gap-3\">\n            {recordType\n              ? compactField(\n                  translate(\"common.table.type\"),\n                  <Tag className=\"h-4 w-4\" />,\n                  <Badge\n                    variant=\"secondary\"\n                    className=\"rounded-full px-3 py-1 text-sm font-medium\"\n                  >\n                    {recordType}\n                  </Badge>,\n                )\n              : null}\n            {status\n              ? compactField(\n                  translate(\"common.table.status\"),\n                  <span className=\"relative inline-flex h-3.5 w-3.5 items-center justify-center\">\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                  <Badge\n                    className={`cursor-default select-none rounded-full border px-3 py-1 text-sm font-medium ${statusTone}`}\n                  >\n                    {status}\n                  </Badge>,\n                )\n              : null}\n            {compactField(\n              translate(\"components.data-v1.detail.view-count\"),\n              <Eye className=\"h-4 w-4\" />,\n              metric(record.viewCount),\n            )}\n            {compactField(\n              translate(\"components.data-v1.detail.download-count\"),\n              <Download className=\"h-4 w-4\" />,\n              metric(record.downloadCount),\n            )}\n          </section>\n          <section className=\"min-w-0 space-y-3\">\n            {sectionTitle(translate(\"components.data.detail-dialog.labels\"))}\n            {compactField(\n              translate(\"components.data.detail-dialog.tags\"),\n              <Tag className=\"h-4 w-4\" />,\n              tagLabels.length ? (\n                <div className=\"flex flex-wrap gap-2\">\n                  {tagLabels.map((tag) => (\n                    <Badge\n                      key={tag}\n                      variant=\"outline\"\n                      className=\"select-none rounded-full px-3 py-1 text-sm font-medium\"\n                    >\n                      {tag}\n                    </Badge>\n                  ))}\n                </div>\n              ) : (\n                <span className=\"text-muted-foreground\">\n                  {translate(\"components.data.detail-dialog.no-labels\")}\n                </span>\n              ),\n            )}\n          </section>\n          {timestamp(record.createdAt) || timestamp(record.updatedAt) ? (\n            <section className=\"min-w-0 space-y-3\">\n              {sectionTitle(translate(\"components.data-v1.detail.time-info\"))}\n              <div className=\"grid gap-3\">\n                {timestamp(record.createdAt)\n                  ? compactField(\n                      translate(\"common.table.created-at\"),\n                      <Calendar className=\"h-4 w-4\" />,\n                      timestamp(record.createdAt),\n                    )\n                  : null}\n                {timestamp(record.updatedAt)\n                  ? compactField(\n                      translate(\"common.table.updated-at\"),\n                      <Calendar className=\"h-4 w-4\" />,\n                      timestamp(record.updatedAt),\n                    )\n                  : null}\n                {stringValue(record.creatorId)\n                  ? compactField(\n                      translate(\"components.data-v1.detail.creator\"),\n                      <span className=\"relative inline-flex h-3.5 w-3.5 items-center justify-center\">\n                        <span className=\"h-1.5 w-1.5 rounded-full bg-primary\" />\n                      </span>,\n                      <span className=\"break-all font-mono text-[13px]\">\n                        {String(record.creatorId)}\n                      </span>,\n                    )\n                  : null}\n              </div>\n            </section>\n          ) : null}\n          {description ? (\n            <section className=\"min-w-0 space-y-3\">\n              {sectionTitle(translate(\"common.table.description\"))}\n              <div className=\"grid gap-3\">\n                {compactField(\n                  translate(\"common.table.description\"),\n                  <FileText className=\"h-4 w-4\" />,\n                  <span className=\"whitespace-pre-wrap break-words\">\n                    {description}\n                  </span>,\n                )}\n              </div>\n            </section>\n          ) : null}\n          {featureFields.length ? (\n            <section className=\"min-w-0 space-y-3\">\n              {sectionTitle(\n                translate(\n                  \"components.dataBrowser.detailPanel.sections.customProperties\",\n                ),\n              )}\n              <div className=\"grid gap-3\">\n                {featureFields.map(([fieldId, field]) =>\n                  compactField(\n                    copyValueOrFallback(\n                      field.label,\n                      field.labelKey,\n                      translate,\n                      fieldId.slice(8),\n                    ),\n                    <span className=\"relative inline-flex h-3.5 w-3.5 items-center justify-center\">\n                      <span className=\"h-1.5 w-1.5 rounded-full bg-primary\" />\n                    </span>,\n                    detailValue(fieldId),\n                    fieldId,\n                  ),\n                )}\n              </div>\n            </section>\n          ) : null}\n          {Object.keys(properties).length ? (\n            <section className=\"min-w-0 space-y-3\">\n              {sectionTitle(\n                translate(\n                  \"components.dataBrowser.detailPanel.sections.customProperties\",\n                ),\n              )}\n              <div className=\"grid gap-3\">\n                {Object.entries(properties)\n                  .filter(\n                    ([propertyId]) => !fieldMap.has(`feature:${propertyId}`),\n                  )\n                  .map(([propertyId, value]) =>\n                    compactField(\n                      propertyId,\n                      <span className=\"relative inline-flex h-3.5 w-3.5 items-center justify-center\">\n                        <span className=\"h-1.5 w-1.5 rounded-full bg-primary\" />\n                      </span>,\n                      governedReadValue(value as JsonValue),\n                      propertyId,\n                    ),\n                  )}\n              </div>\n            </section>\n          ) : null}\n          {Object.keys(metadata).length ? (\n            <section className=\"min-w-0 space-y-3\">\n              {sectionTitle(\n                translate(\"components.data-v1.detail.full-metadata\"),\n              )}\n              <pre className=\"max-h-80 overflow-auto whitespace-pre-wrap break-all rounded-md border border-border/55 bg-muted/25 p-3 font-mono text-xs leading-5 text-foreground\">\n                {JSON.stringify(metadata, null, 2)}\n              </pre>\n            </section>\n          ) : null}\n        </div>\n        <dialog\n          id={previewDialogId}\n          aria-label={recordTitle}\n          className=\"fixed left-1/2 top-1/2 m-0 h-[min(900px,88vh)] w-[min(1180px,92vw)] max-w-[min(1180px,92vw)] -translate-x-1/2 -translate-y-1/2 overflow-hidden rounded-2xl border border-border bg-background p-3 text-foreground shadow-[0_24px_70px_rgba(15,23,42,0.26)] backdrop:bg-black/55 dark:shadow-[0_24px_70px_rgba(0,0,0,0.55)] dark:backdrop:bg-black/75\"\n        >\n          <div className=\"sr-only\">\n            {translate(\"components.data-v1.detail.preview-dialog-description\")}\n          </div>\n          <form method=\"dialog\" className=\"absolute right-4 top-4 z-10\">\n            <button\n              type=\"submit\"\n              aria-label={translate(\"common.actions.close\")}\n              className=\"flex h-8 w-8 items-center justify-center rounded-lg bg-background/90 text-muted-foreground shadow hover:bg-accent hover:text-foreground\"\n            >\n              <PanelRightClose className=\"h-4 w-4\" />\n            </button>\n          </form>\n          <div className=\"h-full min-h-0 overflow-auto rounded-xl bg-background\">\n            {previewKind === \"text\" ? (\n              <pre className=\"whitespace-pre-wrap break-all p-5 text-sm leading-6 text-foreground\">\n                {previewSource}\n              </pre>\n            ) : (\n              <img\n                src={previewSource}\n                alt={previewAlt}\n                className=\"h-full w-full object-contain\"\n              />\n            )}\n          </div>\n        </dialog>\n      </div>\n    );\n  }\n  const title = copyValueOrFallback(\n    model.title,\n    model.titleKey,\n    translate,\n    undefined,\n  );\n  const detailField = (field: JsonObject) => {\n    const id = stringValue(field.id);\n    if (!id) return undefined;\n    const value = stringValue(field.valueLabelKey)\n      ? translate(String(field.valueLabelKey))\n      : field.valueType === 'timestamp' ? renderDateTimeValue(field.value, 'milliseconds', stringValue(field.locale)) : governedReadValue(field.value);\n    const actionId = stringValue(field.actionId);\n    return {\n      id,\n      label: <RecordEditorReadOnlyFieldLabel field={field} label={copyValueOrFallback(field.label, field.labelKey, translate, id)} translate={translate} />,\n      value: isJsonObject(field.copy) && typeof field.value === \"string\" ? (\n        <RecordDetailCopyValue key={`${id}:${field.value}`} value={field.value} copy={field.copy} translate={translate} />\n      ) : actionId ? (\n        <button\n          type=\"button\"\n          className=\"rounded px-1 py-0.5 text-left text-primary hover:bg-accent\"\n          onClick={() =>\n            emitIntent(\"capability.record-detail.action\", {\n              actionId,\n              itemId: id,\n            })\n          }\n        >\n          {value}\n        </button>\n      ) : (\n        value\n      ),\n    };\n  };\n  const declaredSections = objectArray(model.sections);\n  const attachments = objectArray(model.attachments);\n  const navigation = isJsonObject(model.navigation)\n    ? model.navigation\n    : undefined;\n  const actions = objectArray(model.actions);\n  const preview = isJsonObject(model.preview) ? model.preview : undefined;\n  const sections = [\n    ...(declaredSections.length\n      ? declaredSections.flatMap((section) => {\n          const id = stringValue(section.id);\n          if (!id) return [];\n          return [\n            {\n              id,\n              title: copyValueOrFallback(\n                section.label,\n                section.labelKey,\n                translate,\n                undefined,\n              ),\n              fields: objectArray(section.fields).flatMap((field) => {\n                const mapped = detailField(field);\n                return mapped ? [mapped] : [];\n              }),\n            },\n          ];\n        })\n      : [\n          {\n            id: \"record-fields\",\n            fields: objectArray(model.fields).flatMap((field) => {\n              const mapped = detailField(field);\n              return mapped ? [mapped] : [];\n            }),\n          },\n        ]),\n    ...(attachments.length\n      ? [\n          {\n            id: \"attachments\",\n            title: translate(\n              DESIGN_CAPABILITY_I18N_KEYS.recordDetail.attachments,\n            ),\n            children: (\n              <div className=\"space-y-2\">\n                {attachments.map((attachment) => {\n                  const id = stringValue(attachment.id);\n                  if (!id) return null;\n                  const actionId = stringValue(attachment.actionId);\n                  return (\n                    <DataExplorerButton\n                      key={id}\n                      label={copyValueOrFallback(\n                        attachment.label,\n                        attachment.labelKey,\n                        translate,\n                        id,\n                      )}\n                      disabled={attachment.disabled === true || !actionId}\n                      onClick={() =>\n                        actionId &&\n                        emitIntent(\"capability.record-detail.action\", {\n                          actionId,\n                          itemId: id,\n                        })\n                      }\n                    />\n                  );\n                })}\n              </div>\n            ),\n          },\n        ]\n      : []),\n  ];\n  return (\n    <DataExplorerDetailShell\n      title={title}\n      subtitle={\n        stringValue(model.descriptionKey)\n          ? translate(String(model.descriptionKey))\n          : stringValue(model.description)\n      }\n      preview={\n        childrenBySlot.header ??\n        (preview ? (\n          <div className=\"flex min-h-40 flex-col items-center justify-center gap-2 rounded-lg bg-muted/40 p-6 text-center\">\n            <DataKindIcon kind={stringValue(preview.kind)} />\n            <span className=\"text-sm font-medium\">\n              {copyValueOrFallback(\n                isJsonObject(preview.reference)\n                  ? preview.reference.label\n                  : undefined,\n                preview.altKey,\n                translate,\n                isJsonObject(preview.reference)\n                  ? stringValue(preview.reference.id)\n                  : undefined,\n              )}\n            </span>\n          </div>\n        ) : null)\n      }\n      previewVisible={Boolean(childrenBySlot.header || preview)}\n      closeLabel={translate(\n        stringValue(model.closeAriaLabelKey) ??\n          stringValue(model.closeLabelKey) ??\n          DESIGN_CAPABILITY_I18N_KEYS.recordDetail.close,\n      )}\n      closeVisible={closeEnabled}\n      onClose={closeEnabled ? () => emitIntent(\"capability.record-detail.close\", {}) : undefined}\n      actions={\n        <div className=\"flex flex-nowrap items-center gap-2\">\n          {model.editable !== false || model.editDisabled === true ? (\n            <DataExplorerButton\n              label={translate(\n                stringValue(model.editLabelKey) ??\n                  DESIGN_CAPABILITY_I18N_KEYS.recordDetail.edit,\n              )}\n              ariaLabel={\n                stringValue(model.editAriaLabelKey)\n                  ? translate(String(model.editAriaLabelKey))\n                  : undefined\n              }\n              disabled={model.editable === false || model.editDisabled === true}\n              onClick={() => emitIntent(\"capability.record-detail.edit\", {})}\n            />\n          ) : null}\n          {actions.map((action) => {\n            const actionId = stringValue(action.id);\n            if (!actionId) return null;\n            return (\n              <DataExplorerButton\n                key={actionId}\n                icon={actionIcon(action)}\n                label={copyValueOrFallback(\n                  action.label,\n                  action.labelKey,\n                  translate,\n                  actionId,\n                )}\n                ariaLabel={actionAriaLabel(action, translate)}\n                tone={actionTone(action)}\n                disabled={action.disabled === true}\n                loading={action.loading === true}\n                onClick={() =>\n                  emitIntent(\"capability.record-detail.action\", { actionId })\n                }\n              />\n            );\n          })}\n          {childrenBySlot.footer}\n        </div>\n      }\n      navigation={\n        navigation &&\n        (stringValue(navigation.previousId) || stringValue(navigation.nextId))\n          ? {\n              visible: true,\n              index: 1,\n              count: 2,\n              previousLabel: translate(\n                stringValue(navigation.previousLabelKey) ??\n                  DESIGN_CAPABILITY_I18N_KEYS.recordDetail.previous,\n              ),\n              nextLabel: translate(\n                stringValue(navigation.nextLabelKey) ??\n                  DESIGN_CAPABILITY_I18N_KEYS.recordDetail.next,\n              ),\n              onPrevious: stringValue(navigation.previousId)\n                ? () =>\n                    emitIntent(\"capability.record-detail.navigate\", {\n                      direction: \"previous\",\n                      targetId: navigation.previousId,\n                    })\n                : undefined,\n              onNext: stringValue(navigation.nextId)\n                ? () =>\n                    emitIntent(\"capability.record-detail.navigate\", {\n                      direction: \"next\",\n                      targetId: navigation.nextId,\n                    })\n                : undefined,\n            }\n          : undefined\n      }\n      sections={sections}\n      classNames={{\n        header: \"min-w-0\",\n        headerMain: \"min-w-0 flex-1\",\n        headerActions: \"shrink-0 flex-nowrap\",\n      }}\n    />\n  );\n};\n\nfunction resolveRecordEditorFieldDescription(field: JsonObject, translate: CapabilityTranslate, locale: string): string | undefined {\n  const keys = ['description', 'descriptionKey', 'descriptionI18n'].filter(key => field[key] !== undefined);\n  if (keys.length > 1) throw new TypeError('Editor field descriptions are mutually exclusive.');\n  if (field.descriptionI18n !== undefined) return resolveI18nDisplayText(field.descriptionI18n, locale);\n  if (field.descriptionKey !== undefined) { if (typeof field.descriptionKey !== 'string' || !field.descriptionKey) throw new TypeError('Invalid editor field description key.'); return translate(field.descriptionKey); }\n  if (field.description !== undefined && typeof field.description !== 'string') throw new TypeError('Invalid editor field description.');\n  return field.description;\n}\nconst RecordEditorReadOnlyFieldLabel = ({ field, label, translate }: { field: JsonObject; label: ReactNode; translate: CapabilityTranslate }) => {\n  const { locale } = useMonkeysLocale();\n  const description = resolveRecordEditorFieldDescription(field, translate, locale);\n  return description === undefined ? <>{label}</> : <span className=\"flex flex-col gap-1\"><span>{label}</span><span className=\"text-sm font-normal text-muted-foreground\" data-editor-field-description>{description}</span></span>;\n};\n\nconst RecordEditorSelectionField = ({\n  field,\n  fieldId,\n  domId,\n  label,\n  description,\n  disabled,\n  translate,\n  emitIntent,\n}: {\n  field: JsonObject;\n  fieldId: string;\n  domId: string;\n  label: ReactNode;\n  description?: string;\n  disabled: boolean;\n  translate: CapabilityTranslate;\n  emitIntent: DesignCapabilityRendererContext[\"emitIntent\"];\n}) => {\n  const kind = governedSelectionKind(field.kind);\n  if (!kind) return null;\n  const selected = governedSelectionItems(field.value, kind);\n  const options = mergeGovernedOptions(selected, objectArray(field.options));\n  const selectedIds = selected.flatMap((item) => {\n    const id = optionIdentity(item);\n    return id ? [id] : [];\n  });\n  const pagination = cursorPagination(field.optionsPagination);\n  const externalError = stringValue(field.errorCode);\n  return (\n    <BaseField\n      label={label}\n      description={description}\n      required={field.required === true}\n      error={externalError ? translate(externalError) : undefined}\n      disabled={disabled}\n      data-editor-field-kind={String(field.kind)}\n    >\n      <BaseStack gap=\"var(--global-spacing-sm, 0.5rem)\">\n        <BaseMultiSelect\n          id={domId}\n          aria-label={typeof label === \"string\" ? label : fieldId}\n          options={options.flatMap((option) => {\n            const id = optionIdentity(option);\n            if (!id) return [];\n            const optionLabel = stringValue(option.label) ?? id;\n            return [\n              {\n                value: id,\n                label: optionLabel,\n                textValue: optionLabel,\n                disabled: option.disabled === true,\n              },\n            ];\n          })}\n          value={selectedIds}\n          required={field.required === true}\n          disabled={disabled}\n          emptyLabel={translate(\n            DESIGN_CAPABILITY_I18N_KEYS.recordEditor.optionsEmpty,\n          )}\n          onValueChange={(ids) =>\n            emitIntent(\"capability.record-editor.change\", {\n              fieldId,\n              value: editorSelectionValue(kind, ids, options),\n            })\n          }\n        />\n        <div data-options-cursor={pagination?.nextCursor}>\n          <CursorLoadMore\n            pagination={pagination}\n            label={translate(\n              DESIGN_CAPABILITY_I18N_KEYS.recordEditor.optionsLoadMore,\n            )}\n            loadingLabel={translate(\n              DESIGN_CAPABILITY_I18N_KEYS.recordEditor.optionsLoadingMore,\n            )}\n            onLoadMore={(cursor) =>\n              emitIntent(\"capability.record-editor.options-load-more\", {\n                fieldId,\n                cursor,\n              })\n            }\n          />\n        </div>\n        {pagination?.errorCode ? (\n          <CapabilityStatus\n            kind=\"error\"\n            code={pagination.errorCode}\n            translate={translate}\n          />\n        ) : null}\n      </BaseStack>\n    </BaseField>\n  );\n};\n\nconst jsonEditorValue = (value: JsonValue | undefined) =>\n  isJsonObject(value) && value.kind === \"json\"\n    ? JSON.stringify(value.value ?? null, null, 2)\n    : \"null\";\n\nconst RecordEditorJsonField = ({\n  field,\n  fieldId,\n  domId,\n  label,\n  description,\n  disabled,\n  translate,\n  emitIntent,\n  onValidityChange,\n}: {\n  field: JsonObject;\n  fieldId: string;\n  domId: string;\n  label: ReactNode;\n  description?: string;\n  disabled: boolean;\n  translate: CapabilityTranslate;\n  emitIntent: DesignCapabilityRendererContext[\"emitIntent\"];\n  onValidityChange: (fieldId: string, valid: boolean) => void;\n}) => {\n  const modelText = jsonEditorValue(field.value);\n  const [text, setText] = useState(modelText);\n  const [invalid, setInvalid] = useState(false);\n  useEffect(() => {\n    setText(modelText);\n    setInvalid(false);\n    onValidityChange(fieldId, true);\n  }, [modelText, fieldId, onValidityChange]);\n  useEffect(\n    () => () => onValidityChange(fieldId, true),\n    [fieldId, onValidityChange],\n  );\n  const externalError = stringValue(field.errorCode);\n  return (\n    <BaseField\n      label={label}\n      description={description}\n      htmlFor={domId}\n      required={field.required === true}\n      error={\n        invalid\n          ? translate(DESIGN_CAPABILITY_I18N_KEYS.recordEditor.jsonInvalid)\n          : externalError\n            ? translate(externalError)\n            : undefined\n      }\n      disabled={disabled}\n      data-editor-field-kind=\"json\"\n    >\n      <BaseTextarea\n        id={domId}\n        aria-label={typeof label === \"string\" ? label : fieldId}\n        value={text}\n        disabled={disabled}\n        required={field.required === true}\n        invalid={invalid}\n        onChange={(event) => {\n          const nextText = event.currentTarget.value;\n          setText(nextText);\n          try {\n            const value = JSON.parse(nextText) as JsonValue;\n            setInvalid(false);\n            onValidityChange(fieldId, true);\n            emitIntent(\"capability.record-editor.change\", {\n              fieldId,\n              value: {\n                kind: \"json\",\n                dataType:\n                  isJsonObject(field.value) && stringValue(field.value.dataType)\n                    ? String(field.value.dataType)\n                    : \"json\",\n                value,\n              },\n            });\n          } catch {\n            setInvalid(true);\n            onValidityChange(fieldId, false);\n          }\n        }}\n      />\n    </BaseField>\n  );\n};\n\nconst RecordEditorDateControl = ({ field, fieldId, domId, label, description, disabled, translate, emitIntent, onValidityChange }: {\n  field: JsonObject; fieldId: string; domId: string; label: string; description?: string; disabled: boolean;\n  translate: DesignCapabilityRendererContext['translate']; emitIntent: DesignCapabilityRendererContext['emitIntent'];\n  onValidityChange: (id: string, valid: boolean) => void;\n}) => {\n  const definition: RecordEditorDateField = { kind: field.kind === 'date' ? 'date' : 'datetime-local', value: field.value,\n    ...(typeof field.valueFormat === 'string' ? { valueFormat: field.valueFormat as RecordEditorDateField['valueFormat'] } : {}) };\n  const read = () => {\n    let text = '';\n    try {\n      text = toControlValue(definition);\n      const comparable = (value: string) => definition.kind === 'date' ? value : (value.length === 16 ? value + ':00.000' : value.length === 19 ? value + '.000' : value.padEnd(23, '0'));\n      for (const limit of ['min', 'max'] as const) {\n        const bound = field[limit];\n        if (!text || typeof bound !== 'string' || !bound) continue;\n        fromControlValue(definition, bound);\n        if (limit === 'min' ? comparable(text) < comparable(bound) : comparable(text) > comparable(bound)) throw new RangeError();\n      }\n      return { text, invalid: false };\n    } catch { return { text, invalid: true }; }\n  };\n  const [control, setControl] = useState(read);\n  useEffect(() => { const next = read(); setControl(next); onValidityChange(fieldId, !next.invalid); }, [field.value, field.kind, field.valueFormat, field.min, field.max, fieldId, onValidityChange]);\n  useEffect(() => () => onValidityChange(fieldId, true), [fieldId, onValidityChange]);\n  return <BaseField htmlFor={domId} label={label} description={description} required={field.required === true}\n    error={control.invalid || field.errorCode ? translate(typeof field.errorCode === 'string' ? field.errorCode : 'monkeys.design.capability.recordEditor.date.invalid') : undefined}>\n    <BaseInput id={domId} type={definition.kind} value={control.text}\n    min={typeof field.min === 'string' ? field.min : undefined} max={typeof field.max === 'string' ? field.max : undefined}\n    step={definition.kind === 'datetime-local' ? 'any' : undefined} disabled={disabled} required={field.required === true} aria-invalid={control.invalid || Boolean(field.errorCode)}\n    onChange={(event) => {\n      const text = event.currentTarget.value;\n      try {\n        if (event.currentTarget.validity.badInput || event.currentTarget.validity.rangeUnderflow || event.currentTarget.validity.rangeOverflow) throw new RangeError();\n        const value = fromControlValue(definition, text);\n        setControl({ text, invalid: false }); onValidityChange(fieldId, true);\n        emitIntent('capability.record-editor.change', { fieldId, value });\n      } catch { setControl({ text, invalid: true }); onValidityChange(fieldId, false); }\n    }} />\n  </BaseField>;\n};\n\nfunction recordEditorArrayBounds(field: JsonObject) {\n  if (field.reorderable !== undefined && typeof field.reorderable !== 'boolean') throw new TypeError('Invalid array reorderable flag.');\n  const min = field.minItems === undefined ? 0 : field.minItems;\n  const max = field.maxItems === undefined ? 1000 : field.maxItems;\n  if (typeof min !== 'number' || typeof max !== 'number' || !Number.isInteger(min) || !Number.isInteger(max) || min < 0 || max > 1000 || min > max) throw new TypeError('Invalid record editor array bounds.');\n  return { min, max };\n}\nfunction recordEditorArraysInvalid(fields: JsonObject[]): boolean {\n  return fields.some(field => {\n    if (field.hidden === true || field.disabled === true) return false;\n    if (field.kind === 'object') return recordEditorArraysInvalid(editorObjects(field.children));\n    if (field.kind !== 'array') {\n      if (field.minItems !== undefined || field.maxItems !== undefined || field.reorderable !== undefined) throw new TypeError('Array bounds require an array field.');\n      return false;\n    }\n    const { min, max } = recordEditorArrayBounds(field);\n    const value = field.value;\n    if (value === null && isJsonObject(field.nullToggle)) return false;\n    if (!Array.isArray(value)) return value !== null && value !== undefined || min > 0;\n    return value.length < min || value.length > max || editorObjects(field.items).some(item => recordEditorArraysInvalid(editorObjects(item.fields)));\n  });\n}\n\nconst renderRecordEditorDescription = (model: JsonObject, translate: CapabilityTranslate): ReactNode => {\n  if (model.description !== undefined && model.descriptionKey !== undefined) throw new TypeError('Ambiguous editor description.');\n  if (model.description !== undefined) {\n    if (typeof model.description !== 'string') throw new TypeError('Invalid editor description.');\n    return model.description || null;\n  }\n  return stringValue(model.descriptionKey) ? <LocalizedMessageText messageKey={String(model.descriptionKey)} values={model.descriptionParameters} translate={translate} /> : null;\n};\n\nconst RecordEditor = ({\n  model,\n  childrenBySlot,\n  translate,\n  emitIntent: hostEmitIntent,\n}: DesignCapabilityRendererContext) => {\n  const { locale } = useMonkeysLocale();\n  const editorLabel = (field: JsonObject, fallback: string) => field.labelI18n !== undefined\n    ? resolveI18nDisplayText(field.labelI18n, locale)\n    : typeof field.labelKey === 'string' && field.labelKey\n      ? translate(field.labelKey, resolveLocalizedDisplayParameters(field.labelParameters, locale))\n      : stringValue(field.label) ?? fallback;\n  const groupedOptions = (options: JsonObject[], render: (option: JsonObject) => ReactNode, multiple: boolean) => {\n    const runs: { group?: JsonObject; options: JsonObject[] }[] = [];\n    for (const option of options) {\n      const group = isJsonObject(option.group) ? option.group : undefined;\n      const previous = runs[runs.length - 1];\n      if (previous && previous.group?.id === group?.id) previous.options.push(option);\n      else runs.push({ group, options: [option] });\n    }\n    return runs.map((run, index) => {\n      const children = run.options.map(render);\n      if (!run.group) return <Fragment key={index}>{children}</Fragment>;\n      const label = editorLabel(run.group, '');\n      return multiple\n        ? <fieldset key={index} data-editor-option-group={String(run.group.id)}><legend>{label}</legend>{children}</fieldset>\n        : <SelectGroup key={index} data-editor-option-group={String(run.group.id)}><SelectLabel>{label}</SelectLabel>{children}</SelectGroup>;\n    });\n  };\n  const editorId = useId();\n  const draftConfig = isJsonObject(model.draft) ? model.draft : undefined;\n  const draftRevision = draftConfig && stringValue(draftConfig.revision);\n  const draftScope = stringValue(model.secretInputScopeKey) ?? '';\n  const draftIdentity = JSON.stringify([draftRevision]);\n  const makeDraft = () => draftRevision && draftConfig && isJsonObject(draftConfig.value) ? createRecordEditorDraft(draftRevision, draftConfig.value) : undefined;\n  const [draftState, setDraftState] = useState(() => ({ identity: draftIdentity, draft: makeDraft(), resetGeneration: 0 }));\n  const draft = draftState.identity === draftIdentity ? draftState.draft : makeDraft();\n  useEffect(() => { setDraftState({ identity: draftIdentity, draft: makeDraft(), resetGeneration: 0 }); }, [draftIdentity]);\n  const changeDraft = (operation: RecordEditorDraftOperation) => {\n    if (!draft) return;\n    const changedField = operation.kind === 'set' ? leaves.find((field) => field.id === recordEditorPathKey(operation.path)) : undefined;\n    const next = applyEditorFieldChange(draft, operation, changedField, model);\n    if (operation.kind === 'set' && changedField?.changeEffects !== undefined) projectEditorFields(presentedFields, next, [], model);\n    setDraftState({ identity: draftIdentity, draft: next, resetGeneration: draftState.resetGeneration + (operation.kind === 'reset' ? 1 : 0) });\n    if (operation.kind === 'touch') return;\n    hostEmitIntent('capability.record-editor.change', { fieldId: 'path' in operation ? recordEditorPathKey(operation.path) : '', value: next.value, draft: { revision: next.revision, value: next.value, dirty: recordEditorDraftIsDirty(next), touched: next.touched } });\n  };\n  const emitIntent: DesignCapabilityRendererContext['emitIntent'] = (type, payload = {}, options) => {\n    if (draft && type === 'capability.record-editor.change' && typeof payload.fieldId === 'string') {\n      changeDraft({ kind: 'set', path: RecordEditorPathSchema.parse(JSON.parse(payload.fieldId)), value: payload.value ?? null });\n      return;\n    }\n    return hostEmitIntent(type, payload, options);\n  };\n\n  const rawSecretScope = stringValue(model.secretInputScopeKey);\n  const secretScope = rawSecretScope ? JSON.stringify([rawSecretScope, draftRevision ?? null]) : undefined;\n  const [secretDraft, setSecretDraft] = useState<{ scope: string | undefined; values: Record<string, string>; modes: Record<string, \"keep\" | \"replace\" | \"clear\"> }>({ scope: secretScope, values: {}, modes: {} });\n  const secretValues = secretDraft.scope === secretScope ? secretDraft.values : {};\n  useEffect(() => {\n    setSecretDraft({ scope: secretScope, values: {}, modes: {} });\n  }, [secretScope]);\n  const auxiliaryIdentity = JSON.stringify([secretScope, draftIdentity]);\n  const [auxiliaryPending, setAuxiliaryPending] = useState<{ identity: string; id: string }>();\n  const auxiliaryTicket = useRef<object>();\n  const currentAuxiliaryIdentity = useRef(auxiliaryIdentity); currentAuxiliaryIdentity.current = auxiliaryIdentity;\n  useEffect(() => { auxiliaryTicket.current = undefined; return () => { auxiliaryTicket.current = undefined; }; }, [auxiliaryIdentity]);\n  const auxPending = auxiliaryPending?.identity === auxiliaryIdentity ? auxiliaryPending.id : undefined;\n  const editorLocked = model.submitting === true || Boolean(auxPending);\n  const clearSecrets = () => setSecretDraft({ scope: secretScope, values: {}, modes: {} });\n  const cancel = () => {\n    if (editorLocked) return;\n    if (model.resetOnCancel === true && draft) {\n      setDraftState({ identity: draftIdentity, draft: createRecordEditorDraft(draft.revision, draft.original), resetGeneration: draftState.resetGeneration + 1 });\n    }\n    clearSecrets();\n    emitIntent(\"capability.record-editor.cancel\", {});\n  };\n\n  const [invalidJsonFieldIds, setInvalidJsonFieldIds] = useState<Set<string>>(\n    () => new Set(),\n  );\n  const onValidityChange = useCallback((fieldId: string, valid: boolean) => {\n    setInvalidJsonFieldIds((current) => {\n      if (current.has(fieldId) === !valid) return current;\n      const next = new Set(current);\n      if (valid) next.delete(fieldId);\n      else next.add(fieldId);\n      return next;\n    });\n  }, []);\n  const baseCannotSubmit = editorLocked || model.submitDisabled === true || invalidJsonFieldIds.size > 0;\n  const sourceFields = objectArray(model.fields);\n  const presentationById = new Map(\n    objectArray(model.fieldPresentation).flatMap((field) => {\n      const id = stringValue(field.id);\n      return id ? [[id, field] as const] : [];\n    }),\n  );\n  const mergeFieldPresentation = (field: JsonObject): JsonObject => {\n    const id = stringValue(field.id);\n    if (!id) return field;\n    const presentation = presentationById.get(id);\n    if (!presentation) return field;\n    const merged: JsonObject = {\n      ...field,\n      ...presentation,\n      id,\n      value: field.value ?? null,\n    };\n    const fallbackValue = stringValue(merged.fallbackValue);\n    const optionIds = objectArray(merged.options).flatMap((option) =>\n      typeof option.id === 'string' ? [option.id] : [],\n    );\n    return merged.kind === \"select\" &&\n      fallbackValue &&\n      !optionIds.includes(String(merged.value ?? \"\"))\n      ? { ...merged, value: fallbackValue }\n      : merged;\n  };\n  const visibleFieldIds = Array.isArray(model.visibleFieldIds)\n    ? model.visibleFieldIds.flatMap((id) =>\n        typeof id === \"string\" ? [id] : [],\n      )\n    : undefined;\n  const sourceFieldsById = new Map(\n    sourceFields.flatMap((field) => {\n      const id = stringValue(field.id);\n      return id ? [[id, field] as const] : [];\n    }),\n  );\n  const presentedFields = visibleFieldIds\n    ? visibleFieldIds.flatMap((id) => {\n        const field = sourceFieldsById.get(id);\n        return field ? [mergeFieldPresentation(field)] : [];\n      })\n    : sourceFields.map(mergeFieldPresentation);\n  const fields = draft ? projectEditorFields(presentedFields, draft, [], model) : presentedFields;\n  const patchKeys = useRef<{ identity: string; keys: Set<string> }>({ identity: draftIdentity, keys: new Set() });\n  useEffect(() => {\n    if (patchKeys.current.identity !== draftIdentity) patchKeys.current = { identity: draftIdentity, keys: new Set() };\n    if (!draft || model.readOnly === true || model.submitting === true || !isJsonObject(model.draftPatch)) return;\n    const patch = model.draftPatch;\n    const key = typeof patch.key === 'string' ? patch.key : '';\n    if (patchKeys.current.keys.has(key)) return;\n    patchKeys.current.keys.add(key);\n    const result = applyEditorDraftPatch(draft, patch);\n    let reason = result.success ? undefined : result.reason;\n    if (result.success) {\n      try { projectEditorFields(sourceFields, result.draft, [], model); }\n      catch { reason = 'invalid-operation'; }\n    }\n    if (reason) { hostEmitIntent('capability.record-editor.draftPatchRejected', { key, reason }); return; }\n    if (!result.success) return;\n    const next = result.draft;\n    setDraftState({ identity: draftIdentity, draft: next, resetGeneration: draftState.resetGeneration });\n    hostEmitIntent('capability.record-editor.change', { fieldId: '', value: next.value, draft: { revision: next.revision, value: next.value, dirty: recordEditorDraftIsDirty(next), touched: next.touched } });\n  }, [model.draftPatch, model.readOnly, model.submitting, draftIdentity, draft]);\n  const leaves = editorLeafFields(fields);\n  const cannotSubmit = baseCannotSubmit || recordEditorArraysInvalid(fields) || Boolean(draft && leaves.some(field => {\n    if (field.kind !== 'secret' || field.hidden === true || field.disabled === true) return false;\n    const mode = secretDraft.scope === secretScope ? secretDraft.modes[String(field.id)] ?? (field.hasValue === true ? 'keep' : 'replace') : (field.hasValue === true ? 'keep' : 'replace');\n    if (mode !== 'replace') return field.required === true && (mode === 'clear' || field.hasValue !== true);\n    const parsed = parseTypedSecretInput(field.inputKind, secretValues[String(field.id)]);\n    return parsed.status === 'invalid' || (field.required === true && (parsed.status === 'empty' || parsed.value === '' || parsed.value === null));\n  }));\n  const fieldErrors = draft ? editorDraftErrors(model, draft) : [];\n  const draftInvalid = draft && leaves.some((field) => field.hidden !== true && field.disabled !== true && field.kind !== 'secret' && field.required === true && ((field.value === null && !isJsonObject(field.nullToggle)) || field.value === '' || (Array.isArray(field.value) && !field.value.length)));\n  const values = Object.fromEntries(\n    leaves.flatMap((field) =>\n      stringValue(field.id) ? [[String(field.id), field.value ?? null]] : [],\n    ),\n  );\n  const featureValues = Object.fromEntries(\n    leaves.flatMap((field) => {\n      const fieldId = stringValue(field.id);\n      const value = governedEditorValue(field.value);\n      if (\n        field.kind === \"secret\" ||\n        !fieldId?.startsWith(\"feature:\") ||\n        fieldId.length === \"feature:\".length ||\n        value === undefined\n      )\n        return [];\n      return [[fieldId.slice(\"feature:\".length), value]];\n    }),\n  );\n  const auxiliarySubmissions = objectArray(model.auxiliarySubmissions);\n  const auxiliaryInvalid = (action: JsonObject) => {\n    const ids = action.validateFieldIds;\n    if (!Array.isArray(ids) || !ids.length || new Set(ids).size !== ids.length || ids.some(id => typeof id !== 'string' || !sourceFields.some(field => field.id === id))) return true;\n    const targets = leaves.filter(field => ids.some(id => field.id === id || (Array.isArray(field.path) && field.path[0] === id)));\n    return editorLocked || model.readOnly === true || action.disabled === true || targets.some(field => invalidJsonFieldIds.has(String(field.id)) || (field.required === true && (field.value === undefined || (field.value === null && !isJsonObject(field.nullToggle)) || field.value === '' || (Array.isArray(field.value) && !field.value.length)))) || recordEditorArraysInvalid(targets) || fieldErrors.some(error => Array.isArray(error.path) && ids.includes(error.path[0]));\n  };\n  const submit = (auxiliary?: JsonObject) => {\n    if (auxiliary ? auxiliaryInvalid(auxiliary) : cannotSubmit || draftInvalid || fieldErrors.length) return;\n    const submittedValues = draft ? { ...draft.value } : { ...values };\n    const secretChanges: JsonObject[] = [];\n    for (const field of leaves) {\n      if (field.kind !== \"secret\" || field.hidden === true || field.disabled === true) continue;\n      const id = String(field.id);\n      if (draft) {\n        const mode = secretDraft.scope === secretScope ? secretDraft.modes[id] ?? (field.hasValue === true ? 'keep' : 'replace') : (field.hasValue === true ? 'keep' : 'replace');\n        const parsed = parseTypedSecretInput(field.inputKind, secretValues[id]);\n        if (!secretScope || (field.required === true && (mode === 'clear' || (mode === 'keep' && field.hasValue !== true)))) return;\n        if (mode === 'replace') {\n          if (parsed.status === 'invalid') return;\n          if (parsed.status === 'empty') { if (field.required === true) return; continue; }\n          if (field.required === true && (parsed.value === '' || parsed.value === null)) return;\n          secretChanges.push({ path: field.path!, mode, value: parsed.value });\n        } else secretChanges.push({ path: field.path!, mode });\n        continue;\n      }\n      if (field.inputKind !== undefined && field.inputKind !== 'password') return;\n      if (!secretScope || (field.required === true && !secretValues[id])) return;\n      if (Object.prototype.hasOwnProperty.call(secretValues, id)) submittedValues[id] = secretValues[id];\n      else delete submittedValues[id];\n    }\n    if (auxiliary) {\n      const id = String(auxiliary.id), identity = auxiliaryIdentity, ticket = {};\n      if (auxiliaryTicket.current) return;\n      auxiliaryTicket.current = ticket; setAuxiliaryPending({ identity, id });\n      const finish = () => { if (auxiliaryTicket.current !== ticket || currentAuxiliaryIdentity.current !== identity) return; auxiliaryTicket.current = undefined; setAuxiliaryPending(undefined); };\n      try {\n        const completion = emitIntent('capability.record-editor.auxiliary-submit', { actionId: id, values: submittedValues, featureValues, ...(draft ? { secretChanges, draftRevision: draft.revision } : {}) }, { awaitCompletion: true });\n        void Promise.resolve(completion).then(finish, finish);\n      } catch { finish(); }\n      return;\n    }\n    const submittedDraft = secretDraft;\n    const clearSubmittedSecrets = () => setSecretDraft((current) => current === submittedDraft\n      ? { scope: secretScope, values: {}, modes: {} } : current);\n    const completion = emitIntent(\"capability.record-editor.submit\", { values: submittedValues, featureValues, ...(draft ? { secretChanges, draftRevision: draft.revision } : {}) }, { awaitCompletion: true });\n    if (completion && typeof completion.then === \"function\") {\n      void completion.then(clearSubmittedSecrets, () => undefined);\n    } else clearSubmittedSecrets();\n  };\n  const renderField = (\n    field: JsonObject,\n    dialog: boolean,\n    availableColumns: number,\n    inheritedDisabled = false,\n  ) => {\n    const id = stringValue(field.id);\n    if (!id || field.hidden === true) return null;\n    const domId = `${editorId}-${id}`;\n    const label = editorLabel(field, id);\n    const description = resolveRecordEditorFieldDescription(field, translate, locale);\n    const descriptionNode = description === undefined ? null : <span className=\"block text-sm text-muted-foreground\" data-editor-field-description>{description}</span>;\n    const error = stringValue(field.errorCode) ?? stringValue(fieldErrors.find((entry) => recordEditorPathKey(RecordEditorPathSchema.parse(entry.path)) === id)?.code);\n    if (error) field = { ...field, errorCode: error };\n    const disabled = inheritedDisabled || field.disabled === true || editorLocked;\n    const span = Math.min(availableColumns, typeof field.columnSpan === 'number' ? field.columnSpan : 1);\n    const fieldClassName = model.presentation === 'toolbar' ? 'min-w-0 basis-40 grow' : span === 3 ? 'min-w-0 sm:col-span-3' : span === 2 ? 'min-w-0 sm:col-span-2' : 'min-w-0';\n    const fieldIdentity = JSON.stringify([draftIdentity, draftScope, draftState.resetGeneration, id]);\n    const wrapNullable = (children: ReactNode) => {\n      if (field.nullToggle === undefined) return children;\n      if (!isJsonObject(field.nullToggle) || typeof field.nullToggle.labelKey !== 'string' || !field.nullToggle.labelKey || !['multi-select', 'array'].includes(String(field.kind))) throw new TypeError('Invalid nullable editor field.');\n      const toggle = field.nullToggle;\n      if (field.kind === 'array' && toggle.retainSelectionOnNull === true) throw new TypeError('Array fields cannot retain nullable selection.');\n      return <RecordEditorNullToggle value={field.value ?? null} label={translate(toggle.labelKey as string)}\n        checkedWhen={toggle.checkedWhen === 'non-null' ? 'non-null' : 'null'} retainSelectionOnNull={toggle.retainSelectionOnNull === true}\n        disabled={disabled} resetKey={fieldIdentity} onChange={value => emitIntent('capability.record-editor.change', { fieldId: id, value })}>{children}</RecordEditorNullToggle>;\n    };\n    if (draft && (field.kind === 'object' || field.kind === 'array')) {\n      const path = RecordEditorPathSchema.parse(field.path);\n      const idKey = stringValue(field.itemIdKey) ?? 'id';\n      const items = editorObjects(field.items);\n      const bounds = field.kind === 'array' ? recordEditorArrayBounds(field) : { min: 0, max: 1000 };\n      return <fieldset key={id} disabled={disabled} className={fieldClassName}><legend>{label}</legend>{descriptionNode}\n        {error ? <div role=\"alert\">{translate(error)}</div> : null}\n        {wrapNullable(field.kind === 'object' ? editorObjects(field.children).map((child) => renderField(child, dialog, 1, disabled)) : <>\n          <RecordEditorArraySorting ids={items.map(item => String(item.id))} enabled={field.reorderable === true} disabled={disabled} onMove={(itemId, beforeId) => changeDraft({ kind: 'move', path, idKey, itemId, ...(beforeId === undefined ? {} : { beforeId }) })}>\n          {items.map((item, index) => { const content = <>\n            {editorObjects(item.fields).map((child) => renderField(child, dialog, 1, disabled))}\n            <BaseButton label={translate(stringValue(field.removeLabelKey) ?? 'monkeys.design.capability.recordEditor.remove')} disabled={disabled || items.length <= bounds.min} onClick={() => changeDraft({ kind: 'remove', path, idKey, itemId: String(item.id) })} />\n            <BaseButton label={translate('monkeys.design.capability.recordEditor.moveUp')} disabled={disabled || index === 0} onClick={() => changeDraft({ kind: 'move', path, idKey, itemId: String(item.id), beforeId: String(items[index - 1]?.id) })} />\n            <BaseButton label={translate('monkeys.design.capability.recordEditor.moveDown')} disabled={disabled || index === items.length - 1} onClick={() => changeDraft({ kind: 'move', path, idKey, itemId: String(item.id), ...(items[index + 2] ? { beforeId: String(items[index + 2]!.id) } : {}) })} />\n          </>; return field.reorderable === true ? <RecordEditorSortableArrayItem key={String(item.id)} id={String(item.id)} disabled={disabled} label={`${translate('monkeys.design.capability.recordEditor.moveUp')} / ${translate('monkeys.design.capability.recordEditor.moveDown')} ${index + 1}`}>{content}</RecordEditorSortableArrayItem> : <fieldset key={String(item.id)}>{content}</fieldset>; })}\n          </RecordEditorArraySorting>\n          <BaseButton label={translate(stringValue(field.addLabelKey) ?? 'monkeys.design.capability.recordEditor.add')} disabled={disabled || field.addDisabled === true || items.length >= bounds.max} onClick={() => changeDraft({ kind: 'insert', path, idKey, value: { ...(isJsonObject(field.itemDefault) ? field.itemDefault : {}), [idKey]: globalThis.crypto.randomUUID() } })} />\n        </>)}\n      </fieldset>;\n    }\n    if (field.kind === \"secret\") {\n      const secret = secretValues[id] ?? \"\";\n      const inputKind = field.inputKind ?? 'password';\n      if (!['password', 'text', 'textarea', 'boolean', 'number', 'json'].includes(String(inputKind)) || (!draft && inputKind !== 'password')) throw new TypeError('Typed secret controls require a draft and a declared input kind.');\n      const update = (value: string) => setSecretDraft((current) => ({ scope: secretScope, values: { ...(current.scope === secretScope ? current.values : {}), [id]: value }, modes: { ...(current.scope === secretScope ? current.modes : {}), [id]: \"replace\" } }));\n      const secretMode = secretDraft.scope === secretScope ? secretDraft.modes[id] ?? (field.hasValue === true ? 'keep' : 'replace') : (field.hasValue === true ? 'keep' : 'replace');\n      const secretDisabled = disabled || !secretScope || Boolean(draft && secretMode !== 'replace');\n      return <BaseField key={id} className={fieldClassName} label={label} htmlFor={domId} description={description} required={field.required === true} error={error ? translate(error) : undefined}><BaseStack gap=\"var(--global-spacing)\">\n        {draft ? <BaseSelect id={`${domId}-mode`} aria-label={translate('monkeys.design.capability.recordEditor.secretMode', { field: typeof label === 'string' ? label : id })} value={secretMode} disabled={disabled || !secretScope} onChange={(event) => {\n          const mode = event.currentTarget.value as 'keep' | 'replace' | 'clear';\n          setSecretDraft((current) => ({ scope: secretScope, values: { ...(current.scope === secretScope ? current.values : {}), [id]: '' }, modes: { ...(current.scope === secretScope ? current.modes : {}), [id]: mode } }));\n        }}>\n          <option value=\"keep\" disabled={field.hasValue !== true}>{translate('monkeys.design.capability.recordEditor.secretKeep')}</option>\n          <option value=\"replace\">{translate('monkeys.design.capability.recordEditor.secretReplace')}</option>\n          <option value=\"clear\" disabled={field.required === true}>{translate('monkeys.design.capability.recordEditor.secretClear')}</option>\n        </BaseSelect> : null}\n        {inputKind === 'boolean' ? <BaseCheckbox id={domId} aria-label={typeof label === 'string' ? label : id} checked={secret === 'true'} disabled={secretDisabled} onChange={event => update(String(event.currentTarget.checked))} /> : inputKind === 'textarea' || inputKind === 'json' ? <BaseTextarea id={domId} aria-label={typeof label === 'string' ? label : id} autoComplete=\"off\" spellCheck={false} value={secret} disabled={secretDisabled} rows={typeof field.rows === 'number' ? field.rows : 4} onChange={event => update(event.currentTarget.value)} /> : inputKind === 'text' || inputKind === 'number' ? <BaseInput id={domId} type={inputKind} aria-label={typeof label === 'string' ? label : id} autoComplete=\"off\" value={secret} disabled={secretDisabled} onChange={event => update(event.currentTarget.value)} /> : field.multiline === true ? <div className=\"relative\">\n          <textarea aria-label={typeof label === \"string\" ? label : id} autoComplete=\"off\" spellCheck={false} value={secret}\n            rows={typeof field.rows === \"number\" ? field.rows : 4}\n            disabled={secretDisabled} required={field.required === true}\n            className=\"relative z-10 w-full bg-transparent font-mono text-transparent caret-current\"\n            style={{ color: \"transparent\", caretColor: \"var(--foreground)\", WebkitTextFillColor: \"transparent\" }}\n            onChange={(event) => update(event.target.value)} />\n          <div aria-hidden=\"true\" className=\"pointer-events-none absolute inset-0 whitespace-pre-wrap break-all font-mono\">\n            {secret.replace(/[^\\r\\n]/g, \"•\")}\n          </div>\n        </div> : <BaseInput id={domId} type=\"password\" aria-label={typeof label === \"string\" ? label : id} autoComplete=\"new-password\" spellCheck={false}\n          value={secret} disabled={secretDisabled} required={field.required === true}\n          onChange={(event) => update(event.target.value)} />}\n      </BaseStack></BaseField>;\n    }\n    if (field.kind === 'multi-select') {\n      const selected = Array.isArray(field.value) ? field.value.filter((value): value is string => typeof value === 'string') : [];\n      const enhanced = field.searchable === true || field.allowCustomValues === true || field.showSelectedIds === true || field.optionsSource !== undefined;\n      const choices = wrapNullable(enhanced ? <RecordEditorStringSelection key={fieldIdentity} field={field} value={selected} disabled={disabled} id={id} domId={domId} translate={translate} resolveLabel={editorLabel}\n          onChange={value => emitIntent('capability.record-editor.change', { fieldId: id, value })} /> : groupedOptions(objectArray(field.options), (option) => {\n          const optionId = typeof option.id === 'string' ? option.id : undefined;\n          if (optionId === undefined) return null;\n          const optionLabel = editorLabel(option, optionId);\n          return <BaseCheckbox key={optionId} id={`${domId}-${encodeURIComponent(optionId)}`}\n            aria-label={typeof optionLabel === 'string' ? optionLabel : optionId}\n            label={optionLabel} disabled={disabled || option.disabled === true} checked={selected.includes(optionId)}\n            onChange={(event) => emitIntent('capability.record-editor.change', { fieldId: id, value: event.currentTarget.checked ? [...new Set([...selected, optionId])] : selected.filter((value) => value !== optionId) })} />;\n        }, true));\n      return <fieldset key={id} disabled={disabled} className={fieldClassName} data-editor-field-path={draft ? id : undefined} aria-required={field.required === true} aria-invalid={Boolean(error)}>\n        <legend>{label}</legend>{descriptionNode}\n        {model.presentation === 'toolbar' ? <Popover><PopoverTrigger asChild><BaseButton disabled={disabled} ariaLabel={typeof label === 'string' ? label : id} label={selected.length ? translate('monkeys.design.capability.recordEditor.selectionSummary', { count: selected.length }) : translate('monkeys.design.capability.recordEditor.pick')} /></PopoverTrigger><PopoverContent align=\"start\" className=\"max-h-80 overflow-auto\">{choices}</PopoverContent></Popover> : choices}\n        {error ? <div role=\"alert\">{translate(error)}</div> : null}\n      </fieldset>;\n    }\n    if (field.kind === 'relation' && field.presentation === 'picker') {\n      return <fieldset key={id} className={fieldClassName} disabled={disabled || !draft} data-editor-field-path={draft ? id : undefined}>\n        <legend>{label}</legend>{descriptionNode}<div>{governedReadValue(field.value)}</div>\n        <BaseButton label={translate(typeof field.pickLabelKey === 'string' ? field.pickLabelKey : 'monkeys.design.capability.recordEditor.pick')} disabled={disabled || !draft}\n          onClick={() => { if (draft) hostEmitIntent('capability.record-editor.pick', { fieldId: id, draftValues: draft.value, draftRevision: draft.revision }); }} />\n        {error ? <div role=\"alert\">{translate(error)}</div> : null}\n      </fieldset>;\n    }\n    if (governedSelectionKind(field.kind)) {\n      return (\n        <div key={id} className={fieldClassName} data-editor-field-path={draft ? id : undefined}>\n          <RecordEditorSelectionField\n            field={field}\n            fieldId={id}\n            domId={domId}\n            label={label}\n            description={description}\n            disabled={disabled}\n            translate={translate}\n            emitIntent={emitIntent}\n          />\n        </div>\n      );\n    }\n    if (field.kind === 'date' || field.kind === 'datetime-local') {\n      return <div key={id} className={fieldClassName} data-editor-field-path={draft ? id : undefined}>\n        <RecordEditorDateControl field={field} fieldId={id} domId={domId} label={typeof label === 'string' ? label : id} description={description} disabled={disabled} translate={translate} emitIntent={emitIntent} onValidityChange={onValidityChange} />\n      </div>;\n    }\n    if (field.kind === \"json\") {\n      return (\n        <div key={id} className={fieldClassName} data-editor-field-path={draft ? id : undefined}>\n          <RecordEditorJsonField\n            field={field}\n            fieldId={id}\n            domId={domId}\n            label={label}\n            description={description}\n            disabled={disabled}\n            translate={translate}\n            emitIntent={emitIntent}\n            onValidityChange={onValidityChange}\n          />\n        </div>\n      );\n    }\n    const common = {\n      id: domId,\n      disabled,\n      required: field.required === true,\n      value:\n        typeof field.value === \"string\" || typeof field.value === \"number\"\n          ? field.value\n          : \"\",\n      onChange: (event: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n        const rawValue = event.currentTarget.value;\n        const value =\n          field.kind === \"number\"\n            ? rawValue.trim() === \"\"\n              ? null\n              : event.currentTarget instanceof HTMLInputElement && Number.isFinite(event.currentTarget.valueAsNumber)\n                ? event.currentTarget.valueAsNumber\n                : rawValue\n            : rawValue;\n        emitIntent(\"capability.record-editor.change\", { fieldId: id, value });\n      },\n    };\n    const placeholder = copyValueOrFallback(\n      field.placeholder,\n      field.placeholderKey,\n      translate,\n      undefined,\n    );\n    const control =\n      field.kind === 'text' && Array.isArray(field.options) ? <>\n        {dialog ? <Input {...common} type=\"text\" list={`${domId}-options`} placeholder={typeof placeholder === 'string' ? placeholder : undefined} /> : <BaseInput {...common} type=\"text\" list={`${domId}-options`} placeholder={typeof placeholder === 'string' ? placeholder : undefined} />}\n        <datalist id={`${domId}-options`}>{objectArray(field.options).filter(option => typeof option.id === 'string' && option.disabled !== true).map(option => <option key={String(option.id)} value={String(option.id)}>{editorLabel(option, String(option.id))}</option>)}</datalist>\n      </> : field.kind === \"select\" ? (\n        <Select\n          value={typeof field.value === \"string\" ? JSON.stringify([field.value]) : \"\"}\n          disabled={disabled}\n          onOpenChange={open => { if (open && !disabled && model.readOnly !== true) emitIntent('capability.record-editor.options-request', { fieldId: id }); }}\n          onValueChange={(value) =>\n            emitIntent(\"capability.record-editor.change\", {\n              fieldId: id,\n              value: JSON.parse(value)[0],\n            })\n          }\n        >\n          <SelectTrigger\n            id={domId}\n            aria-label={typeof label === \"string\" ? label : id}\n          >\n            <SelectValue\n              placeholder={\n                stringValue(field.placeholderKey)\n                  ? translate(String(field.placeholderKey))\n                  : undefined\n              }\n            />\n          </SelectTrigger>\n          <SelectContent>\n            {groupedOptions(objectArray(field.options), (option) => {\n              const optionId = typeof option.id === 'string' ? option.id : undefined;\n              if (optionId === undefined) return null;\n              return (\n                <SelectItem\n                  key={optionId}\n                  value={JSON.stringify([optionId])}\n                  disabled={option.disabled === true}\n                >\n                  {editorLabel(option, optionId)}\n                </SelectItem>\n              );\n            }, false)}\n          </SelectContent>\n        </Select>\n      ) : field.kind === \"textarea\" || (field.kind === \"text\" && field.multiline === true) ? (\n        dialog ? (\n          <Textarea\n            {...common}\n            placeholder={\n              typeof placeholder === \"string\" ? placeholder : undefined\n            }\n            rows={Number(field.rows) || undefined}\n          />\n        ) : (\n          <BaseTextarea\n            {...common}\n            className=\"w-full\"\n            placeholder={\n              typeof placeholder === \"string\" ? placeholder : undefined\n            }\n            rows={Number(field.rows) || undefined}\n          />\n        )\n      ) : field.kind === \"boolean\" ? (\n        <BaseCheckbox\n          id={domId}\n          aria-label={typeof label === \"string\" ? label : undefined}\n          checked={field.value === true}\n          disabled={common.disabled}\n          onChange={(event) =>\n            emitIntent(\"capability.record-editor.change\", {\n              fieldId: id,\n              value: event.currentTarget.checked,\n            })\n          }\n        />\n      ) : dialog ? (\n        <Input\n          {...common}\n          placeholder={\n            typeof placeholder === \"string\" ? placeholder : undefined\n          }\n          type={field.kind === \"number\" ? \"number\" : \"text\"}\n        />\n      ) : (\n        <BaseInput\n          {...common}\n          placeholder={\n            typeof placeholder === \"string\" ? placeholder : undefined\n          }\n          type={field.kind === \"number\" ? \"number\" : \"text\"}\n        />\n      );\n    return (\n      <BaseField\n        key={id}\n        label={label}\n        description={description}\n        htmlFor={domId}\n        required={field.required === true}\n        error={error ? translate(error) : undefined}\n        data-editor-field-kind={String(field.kind)}\n        data-editor-field-path={draft ? id : undefined}\n        className={fieldClassName}\n      >\n        {control}\n      </BaseField>\n    );\n  };\n  const configuredFieldRows = Array.isArray(model.fieldRows)\n    ? model.fieldRows.flatMap((row) =>\n        Array.isArray(row)\n          ? [\n              row.flatMap((fieldId) =>\n                typeof fieldId === \"string\" && fieldId.trim() ? [fieldId] : [],\n              ),\n            ]\n          : [],\n      )\n    : [];\n  const fieldsById = new Map(\n    fields.flatMap((field, index) => {\n      const id = stringValue(field.id);\n      const originalId = stringValue(presentedFields[index]?.id);\n      if (!id) return [];\n      // Map both the transformed id and the original id to the field\n      const entries: Array<[string, JsonObject]> = [[id, field]];\n      if (originalId && originalId !== id) {\n        entries.push([originalId, field]);\n      }\n      return entries;\n    }),\n  );\n  const groupedFieldIds = new Set<string>();\n  const fieldRows = configuredFieldRows.flatMap((row) => {\n    const groupedFields = row.flatMap((fieldId) => {\n      const field = fieldsById.get(fieldId);\n      if (!field || field.hidden === true || groupedFieldIds.has(String(field.id)))\n        return [];\n      groupedFieldIds.add(String(field.id));\n      return [field];\n    });\n    return groupedFields.length > 0 ? [groupedFields] : [];\n  });\n  const editorGridColumns = (columns: unknown) => columns === 3 ? 'grid-cols-1 sm:grid-cols-3' : columns === 2 ? 'grid-cols-1 sm:grid-cols-2' : 'grid-cols-1';\n  const renderFieldsContent = (dialog: boolean) => {\n    if (model.presentation === 'toolbar') return fields.map(field => renderField(field, false, 1));\n    const groups = objectArray(model.fieldGroups);\n    if (groups.length) {\n      const renderedIds = new Set<string>();\n      return <div className=\"grid gap-4\">\n        {groups.map((group) => {\n          const groupFields = (Array.isArray(group.fieldIds) ? group.fieldIds : []).flatMap((fieldId) => {\n            const field = typeof fieldId === 'string' ? fieldsById.get(fieldId) : undefined;\n            if (!field || field.hidden === true || renderedIds.has(String(field.id))) return [];\n            renderedIds.add(String(field.id));\n            return [field];\n          });\n          if (!groupFields.length) return null;\n          const groupContent = <fieldset key={String(group.id)} data-editor-group={String(group.id)}>\n            <legend>{translate(String(group.titleKey))}</legend>\n            {stringValue(group.descriptionKey) ? <p>{translate(String(group.descriptionKey))}</p> : null}\n            <div className={`grid gap-4 ${editorGridColumns(group.columns)}`}>\n              {groupFields.map((field) => renderField(field, dialog, group.columns === 3 ? 3 : group.columns === 2 ? 2 : 1))}\n            </div>\n          </fieldset>;\n          return group.surface === 'panel' ? <BasePanel key={String(group.id)}>{groupContent}</BasePanel> : groupContent;\n        })}\n        {fields.filter((field) => !renderedIds.has(String(field.id))).map((field) => renderField(field, dialog, 1))}\n      </div>;\n    }\n\n    if (fieldRows.length > 0) {\n      return (\n        <div className=\"grid gap-4\">\n          {fieldRows.map((row, rowIndex) => (\n            <div\n              key={`field-row-${rowIndex}`}\n              className={`grid ${editorGridColumns(row.length)} gap-4`}\n            >\n              {row.map((field) => renderField(field, dialog, 1))}\n            </div>\n          ))}\n          {fields\n            .filter((field) => {\n              const id = stringValue(field.id);\n              return id && !groupedFieldIds.has(id);\n            })\n            .map((field) => renderField(field, dialog, 1))}\n        </div>\n      );\n    }\n    return (\n      <div\n        className={\n          dialog || model.layoutColumns !== undefined\n            ? `grid gap-4 ${editorGridColumns(model.layoutColumns)}`\n            : undefined\n        }\n      >\n        {fields.map((field) => renderField(field, dialog, model.layoutColumns === 3 ? 3 : model.layoutColumns === 2 ? 2 : 1))}\n      </div>\n    );\n  };\n  const renderFields = (dialog: boolean) => <div className={model.presentation === 'toolbar' ? 'contents' : undefined} key={`${draftIdentity}:${draftState.resetGeneration}`} data-editor-dirty={draft ? recordEditorDraftIsDirty(draft) : undefined} data-editor-touched={draft?.touched.length} onBlur={(event) => {\n    if (!draft) return;\n    const target = event.target as HTMLElement;\n    const id = target.closest('[data-editor-field-path]')?.getAttribute('data-editor-field-path') ?? target.id;\n    const field = leaves.find((field) => field.id === id);\n    if (field && field.kind !== 'secret') changeDraft({ kind: 'touch', path: RecordEditorPathSchema.parse(field.path) });\n  }}>{renderFieldsContent(dialog)}</div>;\n  const resetButton = draft && model.showReset !== false ? <BaseButton label={translate('monkeys.design.capability.recordEditor.reset')} disabled={editorLocked} onClick={() => { clearSecrets(); changeDraft({ kind: 'reset', revision: draft.revision, value: draft.original }); }} /> : null;\n  const visibleLeafIds = new Set(leaves.filter((field) => field.hidden !== true).map((field) => String(field.id)));\n  const summaryErrors = fieldErrors.filter((error) => !visibleLeafIds.has(recordEditorPathKey(RecordEditorPathSchema.parse(error.path))));\n  const errorSummary = summaryErrors.length ? <ul role=\"alert\">{summaryErrors.map((error, index) => <li key={index}>{translate(String(error.code))}</li>)}</ul> : null;\n  const actions = (\n    <>\n      {resetButton}\n      {errorSummary}\n      {stringValue(model.errorCode) ? (\n        <CapabilityStatus\n          kind=\"error\"\n          code={String(model.errorCode)}\n          translate={translate}\n        />\n      ) : null}\n      {model.showCancel !== false ? <BaseButton\n        label={translate(\n          stringValue(model.cancelLabelKey) ??\n            DESIGN_CAPABILITY_I18N_KEYS.recordEditor.cancel,\n        )}\n        disabled={editorLocked}\n        onClick={cancel}\n      /> : null}\n      {model.showSubmit !== false ? <BaseButton\n        label={translate(\n          stringValue(model.submitLabelKey) ??\n            DESIGN_CAPABILITY_I18N_KEYS.recordEditor.submit,\n        )}\n        tone={model.submitDestructive === true ? \"danger\" : \"default\"}\n        loading={model.submitting === true && !auxPending}\n        disabled={Boolean(cannotSubmit || draftInvalid || fieldErrors.length)}\n        onClick={() => submit()}\n      /> : null}\n    </>\n  );\n  const auxiliaryButtons = auxiliarySubmissions.map(action => <BaseButton key={String(action.id)} label={translate(String(action.labelKey))} loading={auxPending === action.id} disabled={auxiliaryInvalid(action)} onClick={() => submit(action)} />);\n  const cancelLabel = translate(\n    stringValue(model.cancelLabelKey) ??\n      DESIGN_CAPABILITY_I18N_KEYS.recordEditor.cancel,\n  );\n  const submitLabel = translate(\n    stringValue(model.submitLabelKey) ??\n      DESIGN_CAPABILITY_I18N_KEYS.recordEditor.submit,\n  );\n  const submittingLabel = translate(\n    stringValue(model.submittingLabelKey) ??\n      stringValue(model.submitLabelKey) ??\n      DESIGN_CAPABILITY_I18N_KEYS.recordEditor.submit,\n  );\n  const recordTitle =\n    stringValue(model.recordTitle) ?? stringValue(model.title);\n  const title = stringValue(model.titleKey)\n    ? translate(\n        String(model.titleKey),\n        recordTitle ? { title: recordTitle } : undefined,\n      )\n    : copyValueOrFallback(model.title, undefined, translate, undefined);\n  const description = renderRecordEditorDescription(model, translate);\n  if (model.presentation === 'toolbar') return (\n    <div data-record-editor-toolbar className=\"flex min-w-0 flex-wrap items-end\" style={{ gap: 'var(--global-spacing)' }}>\n      {childrenBySlot.header}\n      {renderFields(false)}\n      <BaseInline gap=\"var(--global-spacing)\">{auxiliaryButtons}{actions}{childrenBySlot.footer}</BaseInline>\n    </div>\n  );\n  if (model.presentation === 'sections') return (\n    <BaseStack gap=\"var(--global-spacing)\">\n      {childrenBySlot.header}\n      {description !== null ? <p className=\"text-sm text-muted-foreground\">{description}</p> : null}\n      {renderFields(false)}\n      <BaseToolbar actions={childrenBySlot.footer}>{auxiliaryButtons}{actions}</BaseToolbar>\n    </BaseStack>\n  );\n  if (model.presentation === \"data-explorer-dialog\" || model.presentation === \"dialog\") {\n    return (\n      <Dialog\n        open\n        onOpenChange={(open) =>\n          !open && cancel()\n        }\n      >\n        <DialogContent\n          className=\"flex max-h-[90dvh] max-w-2xl flex-col overflow-hidden\"\n          onOpenAutoFocus={(event) => {\n            if (model.initialFocus !== \"dialog\") return;\n            event.preventDefault();\n            (event.currentTarget as HTMLElement).focus();\n          }}\n        >\n          <DialogHeader>\n            <DialogTitle>{title}</DialogTitle>\n            {description !== null ? (\n              <DialogDescription>\n                {description}\n              </DialogDescription>\n            ) : null}\n          </DialogHeader>\n          <div className=\"min-h-0 flex-1 overflow-y-auto\">\n            {renderFields(true)}\n            {childrenBySlot.footer}\n          </div>\n          <DialogFooter className=\"shrink-0\">\n            {auxiliaryButtons}\n            {resetButton}\n            {errorSummary}\n            {stringValue(model.errorCode) ? (\n              <CapabilityStatus\n                kind=\"error\"\n                code={String(model.errorCode)}\n                translate={translate}\n              />\n            ) : null}\n            {model.showCancel !== false ? <Button\n              type=\"button\"\n              variant=\"outline\"\n              disabled={editorLocked}\n              onClick={cancel}\n            >\n              {cancelLabel}\n            </Button> : null}\n            {model.showSubmit !== false ? <Button\n              type=\"button\"\n              variant={model.submitDestructive === true ? \"destructive\" : \"default\"}\n              disabled={Boolean(cannotSubmit || draftInvalid || fieldErrors.length)}\n              onClick={() => submit()}\n            >\n              {model.submitting === true && !auxPending ? (\n                <>\n                  <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                  {submittingLabel}\n                </>\n              ) : (\n                submitLabel\n              )}\n            </Button> : null}\n          </DialogFooter>\n        </DialogContent>\n      </Dialog>\n    );\n  }\n  return (\n    <BasePanel title={title} media={childrenBySlot.header}>\n      <BaseStack gap=\"var(--global-spacing)\">\n        {description !== null ? <p className=\"text-sm text-muted-foreground\">{description}</p> : null}\n        {renderFields(false)}\n        {resetButton || errorSummary || model.errorCode || model.showCancel !== false || model.showSubmit !== false || auxiliaryButtons.length > 0 || childrenBySlot.footer\n          ? <BaseToolbar actions={childrenBySlot.footer}>{auxiliaryButtons}{actions}</BaseToolbar>\n          : null}\n      </BaseStack>\n    </BasePanel>\n  );\n};\n\nconst ReadOnlyRecordEditor = (context: DesignCapabilityRendererContext) => {\n  const { model, translate, emitIntent } = context;\n  const dialog = model.presentation === 'dialog' || model.presentation === 'data-explorer-dialog';\n  const { locale } = useMonkeysLocale();\n  const fields = projectReadOnlyEditorFields(model, translate, locale);\n  const body = <RecordDetailCapabilityRenderer {...context} model={{ title: dialog ? '' : model.title ?? model.recordTitle ?? '', titleKey: dialog ? '' : model.titleKey ?? '', editable: false, closeEnabled: false, fields }} />;\n  const description = renderRecordEditorDescription(model, translate);\n  if (!dialog) return <>{description !== null ? <p className=\"text-sm text-muted-foreground\">{description}</p> : null}{body}</>;\n  const cancel = () => { if (model.submitting !== true) emitIntent('capability.record-editor.cancel', {}); };\n  const title = typeof model.titleKey === 'string' && model.titleKey ? translate(model.titleKey, typeof model.recordTitle === 'string' ? { title: model.recordTitle } : undefined) : String(model.title ?? model.recordTitle ?? '');\n  return <Dialog open onOpenChange={open => { if (!open) cancel(); }}>\n    <DialogContent className=\"max-w-2xl\"><DialogHeader><DialogTitle>{title}</DialogTitle>\n      {description !== null ? <DialogDescription>{description}</DialogDescription> : null}\n    </DialogHeader>{body}<DialogFooter><Button type=\"button\" variant=\"outline\" disabled={model.submitting === true} onClick={cancel}>{translate(typeof model.cancelLabelKey === 'string' ? model.cancelLabelKey : DESIGN_CAPABILITY_I18N_KEYS.recordEditor.cancel)}</Button></DialogFooter></DialogContent>\n  </Dialog>;\n};\nexport const RecordEditorCapabilityRenderer: DesignCapabilityRenderer = (context) => context.model.readOnly === true\n  ? <ReadOnlyRecordEditor {...context} /> : <RecordEditor {...context} />;\n\nconst DataExplorerRecordHistoryDialog = ({\n  model,\n  translate,\n  emitIntent,\n}: Pick<\n  DesignCapabilityRendererContext,\n  \"model\" | \"translate\" | \"emitIntent\"\n>) => {\n  const cancelButtonRef = useRef<HTMLButtonElement>(null);\n  const dialogContentRef = useRef<HTMLDivElement>(null);\n  const aggregateId = stringValue(model.aggregateId) ?? \"\";\n  const headCommitId = stringValue(model.headCommitId) ?? \"\";\n  const commits = objectArray(model.commits);\n  const historyDag = useMemo(\n    () => computeRecordHistoryDag(commits, headCommitId),\n    [commits, headCommitId],\n  );\n  const selectedTargetCommitId = stringValue(model.selectedTargetCommitId);\n  const selectedCommit =\n    commits.find(\n      (commit) => stringValue(commit.commitId) === selectedTargetCommitId,\n    ) ?? commits[0];\n  const reason = typeof model.reason === \"string\" ? model.reason : \"\";\n  const rollback = isJsonObject(model.rollback) ? model.rollback : {};\n  const messageEditor = isJsonObject(model.messageEditor)\n    ? model.messageEditor\n    : {};\n  const editingCommitId = stringValue(messageEditor.commitId) ?? \"\";\n  const editingMessage =\n    typeof messageEditor.message === \"string\" ? messageEditor.message : \"\";\n  const messagePending = messageEditor.pending === true;\n  const pending = rollback.pending === true || messagePending;\n  const close = () => {\n    if (!pending) emitIntent(\"capability.record-history.close\", {});\n  };\n  const formatTimestamp = (raw: JsonValue | undefined) => {\n    const value = typeof raw === \"number\" || typeof raw === \"string\" ? raw : \"\";\n    const date = new Date(value);\n    if (!value || Number.isNaN(date.getTime())) return \"-\";\n    const part = (number: number) => String(number).padStart(2, \"0\");\n    return `${date.getFullYear()}-${part(date.getMonth() + 1)}-${part(date.getDate())} ${part(date.getHours())}:${part(date.getMinutes())}:${part(date.getSeconds())}`;\n  };\n  const shortCommitId = (raw: JsonValue | undefined) => {\n    const value = stringValue(raw) ?? \"\";\n    const withoutPrefix = value.startsWith(\"dvc_\") ? value.slice(4) : value;\n    return withoutPrefix ? withoutPrefix.slice(0, 10) : \"-\";\n  };\n  const formatValue = (value: JsonValue | undefined): string => {\n    if (value === undefined || value === null || value === \"\")\n      return translate(\"common.status.not-set\");\n    if (typeof value === \"boolean\")\n      return translate(value ? \"common.confirm.yes\" : \"common.confirm.no\");\n    if (typeof value === \"string\" || typeof value === \"number\")\n      return String(value);\n    return JSON.stringify(value);\n  };\n  const formatChange = (commit: JsonObject | undefined): string => {\n    if (!commit)\n      return translate(\n        \"components.data-management.version-history.data-change\",\n      );\n    const changes = objectArray(commit.changes);\n    if (!changes.length)\n      return (\n        stringValue(commit.summary) ??\n        translate(\"components.data-management.version-history.data-change\")\n      );\n    const first =\n      changes.find(\n        (change) =>\n          JSON.stringify(change.before ?? null) !==\n          JSON.stringify(change.after ?? null),\n      ) ?? changes[0]!;\n    const fieldName = copyValueOrFallback(\n      first.label,\n      first.labelKey,\n      translate,\n      stringValue(first.fieldId) ??\n        translate(\"components.data-management.version-history.field\"),\n    );\n    const field =\n      changes.length > 1\n        ? translate(\n            \"components.data-management.version-history.field-with-more\",\n            { field: String(fieldName), count: changes.length },\n          )\n        : String(fieldName);\n    return translate(\n      \"components.data-management.version-history.change-format\",\n      {\n        field,\n        before: formatValue(first.before),\n        after: formatValue(first.after),\n      },\n    );\n  };\n  const selectedId = stringValue(selectedCommit?.commitId) ?? \"\";\n  const selectedChanges = objectArray(selectedCommit?.changes);\n  const selectedChange =\n    selectedChanges.find(\n      (change) =>\n        JSON.stringify(change.before ?? null) !==\n        JSON.stringify(change.after ?? null),\n    ) ?? selectedChanges[0];\n  const selectedBefore =\n    typeof selectedChange?.before === \"string\" ? selectedChange.before : \"\";\n  const selectedAfter =\n    typeof selectedChange?.after === \"string\" ? selectedChange.after : \"\";\n  const selectedChangeUsesLongText = Boolean(\n    selectedChange && (selectedBefore.length > 60 || selectedAfter.length > 60),\n  );\n  const isCurrentSelected = selectedId === headCommitId;\n  const canRollback =\n    rollback.enabled === true &&\n    !pending &&\n    Boolean(selectedId && !isCurrentSelected);\n  const recordTitle = stringValue(model.recordTitle) ?? aggregateId;\n  const title = copyValue(\n    model.title,\n    model.titleKey,\n    translate,\n    DESIGN_CAPABILITY_I18N_KEYS.recordHistory.title,\n  );\n  return (\n    <Dialog\n      open\n      onOpenChange={(open) => {\n        if (!open) close();\n      }}\n    >\n      <DialogContent\n        ref={dialogContentRef}\n        className=\"sm:max-w-[980px]\"\n        data-data-explorer-record-history\n        onOpenAutoFocus={(event) => {\n          event.preventDefault();\n          cancelButtonRef.current?.focus({ preventScroll: true });\n        }}\n      >\n        <DialogHeader>\n          <DialogTitle className=\"flex items-center gap-2\">\n            <GitBranch className=\"h-5 w-5\" />\n            {title}\n          </DialogTitle>\n          <DialogDescription>\n            {translate(\n              \"components.data-management.version-history.description\",\n            )}\n          </DialogDescription>\n        </DialogHeader>\n        <div className=\"space-y-4\">\n          <div className=\"flex flex-col gap-3 rounded-md border bg-muted/20 px-3 py-2 sm:flex-row sm:items-center sm:justify-between\">\n            <div className=\"min-w-0\">\n              <div className=\"text-xs text-muted-foreground\">\n                {translate(\"components.data-management.version-history.asset\")}\n              </div>\n              <div className=\"mt-0.5 truncate text-sm font-medium\">\n                {recordTitle || aggregateId || \"-\"}\n              </div>\n            </div>\n            <div className=\"flex shrink-0 items-center gap-2 text-xs text-muted-foreground\">\n              <GitCommitHorizontal className=\"h-4 w-4\" />\n              <span>\n                {translate(\n                  \"components.data-management.version-history.commit-count\",\n                  { count: commits.length },\n                )}\n              </span>\n            </div>\n          </div>\n          <div className=\"grid gap-4 lg:grid-cols-[minmax(0,1fr)_300px]\">\n            <div className=\"rounded-md border bg-background\">\n              <div className=\"flex items-center justify-between gap-3 border-b px-4 py-2.5\">\n                <div className=\"text-sm font-medium\">\n                  {translate(\n                    \"components.data-management.version-history.commit-graph\",\n                  )}\n                </div>\n                <div className=\"flex items-center gap-3 text-xs text-muted-foreground\">\n                  <span className=\"flex items-center gap-1.5\">\n                    <span className=\"h-2 w-2 rounded-full bg-success\" />\n                    {translate(\n                      \"components.data-management.version-history.current-mainline\",\n                    )}\n                  </span>\n                  <span className=\"flex items-center gap-1.5\">\n                    <span className=\"h-2 w-2 rounded-full bg-primary\" />\n                    {translate(\n                      \"components.data-management.version-history.rollback-target\",\n                    )}\n                  </span>\n                </div>\n              </div>\n              <ScrollArea\n                className=\"h-[430px]\"\n                viewportClassName=\"overflow-x-auto\"\n              >\n                <div className=\"min-w-[760px]\">\n                  {commits.length === 1 ? (\n                    <div className=\"border-b px-4 py-3 text-sm text-muted-foreground\">\n                      {translate(\n                        \"components.data-management.version-history.only-current-version\",\n                      )}\n                    </div>\n                  ) : null}\n                  {commits.map((commit, commitIndex) => {\n                    const commitId = stringValue(commit.commitId) ?? \"\";\n                    const current = commitId === headCommitId;\n                    const selected = commitId === selectedId;\n                    const dagRow = historyDag.rows[commitIndex];\n                    const isOrphan = dagRow ? !dagRow.onMainLine : false;\n                    const rollbackGenerated = [\n                      stringValue(commit.systemMessage),\n                      stringValue(commit.summary),\n                    ]\n                      .filter(Boolean)\n                      .some((value) =>\n                        /(?:rollback|restore)/i.test(String(value)),\n                      );\n                    const editing = commitId === editingCommitId;\n                    const updatedTimestamp = Number(commit.updatedTimestamp);\n                    const hasExactMetadataRevision =\n                      Number.isSafeInteger(updatedTimestamp) &&\n                      updatedTimestamp >= 0;\n                    return (\n                      <div\n                        key={commitId}\n                        onClick={() => {\n                          if (!pending && !current)\n                            emitIntent(\"capability.record-history.select\", {\n                              targetCommitId: commitId,\n                            });\n                        }}\n                        className={`relative flex w-full gap-3 border-b px-4 py-3 text-left transition-colors last:border-b-0 ${current ? \"cursor-not-allowed bg-success/10\" : \"cursor-pointer hover:bg-muted/50\"} ${selected && !current ? \"bg-primary/5\" : \"\"} ${isOrphan && !selected ? \"opacity-60\" : \"\"}`}\n                      >\n                        {dagRow ? (\n                          <RecordHistoryDagRail\n                            row={dagRow}\n                            laneCount={historyDag.laneCount}\n                            selected={selected}\n                            current={current}\n                            rollback={rollbackGenerated}\n                          />\n                        ) : null}\n                        <div className=\"min-w-0 flex-1\">\n                          <div className=\"flex min-w-0 items-start gap-2\">\n                            <button\n                              type=\"button\"\n                              disabled={pending || current}\n                              onClick={(event) => {\n                                event.stopPropagation();\n                                if (!current)\n                                  emitIntent(\n                                    \"capability.record-history.select\",\n                                    { targetCommitId: commitId },\n                                  );\n                              }}\n                              className={`line-clamp-2 min-w-0 flex-1 break-words text-left text-sm font-medium leading-5 [overflow-wrap:anywhere] hover:text-primary disabled:cursor-not-allowed disabled:text-foreground${selected ? \" text-primary\" : \"\"}`}\n                              title={formatChange(commit)}\n                            >\n                              {formatChange(commit)}\n                            </button>\n                            <div className=\"ml-auto flex shrink-0 items-center gap-2 text-xs text-muted-foreground\">\n                              <span>{formatTimestamp(commit.createdAt)}</span>\n                              {current ? (\n                                <span className=\"rounded border border-success/25 bg-success/10 px-1.5 py-0.5 text-success\">\n                                  {translate(\n                                    \"components.data-management.version-history.current-mainline\",\n                                  )}\n                                </span>\n                              ) : null}\n                              {isOrphan ? (\n                                <span className=\"rounded border border-muted-foreground/30 bg-muted px-1.5 py-0.5 text-muted-foreground\">\n                                  {translate(\n                                    \"components.data-management.version-history.bypassed\",\n                                  )}\n                                </span>\n                              ) : null}\n                              {!editing ? (\n                                <Button\n                                  type=\"button\"\n                                  variant=\"ghost\"\n                                  size=\"icon\"\n                                  disabled={\n                                    messagePending || !hasExactMetadataRevision\n                                  }\n                                  className=\"h-7 w-7 shrink-0\"\n                                  aria-label={translate(\n                                    \"components.data-management.version-history.edit-description\",\n                                  )}\n                                  title={translate(\n                                    \"components.data-management.version-history.edit-description\",\n                                  )}\n                                  onClick={(event) => {\n                                    event.stopPropagation();\n                                    emitIntent(\n                                      \"capability.record-history.message-edit\",\n                                      {\n                                        commitId,\n                                        expectedUpdatedTimestamp:\n                                          updatedTimestamp,\n                                        message:\n                                          stringValue(commit.summary) ?? \"\",\n                                      },\n                                    );\n                                  }}\n                                >\n                                  <Pencil className=\"h-3.5 w-3.5\" />\n                                </Button>\n                              ) : null}\n                            </div>\n                          </div>\n                          <div className=\"mt-1 flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-muted-foreground\">\n                            <span>\n                              {stringValue(commit.actorLabel) ??\n                                translate(\n                                  \"components.data-management.version-history.system\",\n                                )}\n                            </span>\n                            {current ? (\n                              <span>\n                                {translate(\n                                  \"components.data-management.version-history.latest-version\",\n                                )}\n                              </span>\n                            ) : null}\n                          </div>\n                          {editing ? (\n                            <div className=\"mt-3 space-y-2\">\n                              <Textarea\n                                value={editingMessage}\n                                maxLength={500}\n                                rows={2}\n                                disabled={messagePending}\n                                placeholder={translate(\n                                  \"components.data-management.version-history.description-placeholder\",\n                                )}\n                                className=\"min-h-[72px] resize-none text-sm\"\n                                onClick={(event) => event.stopPropagation()}\n                                onKeyDown={(event) => event.stopPropagation()}\n                                onChange={(event) =>\n                                  emitIntent(\n                                    \"capability.record-history.message-change\",\n                                    { message: event.currentTarget.value },\n                                  )\n                                }\n                              />\n                              <div className=\"flex items-center justify-between gap-2\">\n                                <span className=\"text-xs text-muted-foreground\">\n                                  {editingMessage.trim().length}/500\n                                </span>\n                                <div className=\"flex items-center gap-2\">\n                                  <Button\n                                    type=\"button\"\n                                    variant=\"outline\"\n                                    size=\"sm\"\n                                    disabled={messagePending}\n                                    onClick={(event) => {\n                                      event.stopPropagation();\n                                      emitIntent(\n                                        \"capability.record-history.message-cancel\",\n                                        {},\n                                      );\n                                    }}\n                                  >\n                                    <X className=\"mr-1.5 h-3.5 w-3.5\" />\n                                    {translate(\"common.actions.cancel\")}\n                                  </Button>\n                                  <Button\n                                    type=\"button\"\n                                    size=\"sm\"\n                                    disabled={\n                                      messagePending ||\n                                      !hasExactMetadataRevision\n                                    }\n                                    onClick={(event) => {\n                                      event.stopPropagation();\n                                      if (!hasExactMetadataRevision) return;\n                                      emitIntent(\n                                        \"capability.record-history.message-update\",\n                                        {\n                                          commitId,\n                                          expectedUpdatedTimestamp:\n                                            updatedTimestamp,\n                                          message: editingMessage.trim(),\n                                        },\n                                      );\n                                    }}\n                                  >\n                                    {messagePending ? (\n                                      <Loader2 className=\"mr-1.5 h-3.5 w-3.5 animate-spin\" />\n                                    ) : (\n                                      <Save className=\"mr-1.5 h-3.5 w-3.5\" />\n                                    )}\n                                    {translate(\"common.actions.save\")}\n                                  </Button>\n                                </div>\n                              </div>\n                            </div>\n                          ) : stringValue(commit.summary) ? (\n                            <div className=\"mt-2\">\n                              <div\n                                className=\"line-clamp-2 min-w-0 flex-1 break-words text-sm leading-5 [overflow-wrap:anywhere]\"\n                                title={String(commit.summary)}\n                              >\n                                {String(commit.summary)}\n                              </div>\n                            </div>\n                          ) : null}\n                        </div>\n                      </div>\n                    );\n                  })}\n                </div>\n                <ScrollBar orientation=\"horizontal\" />\n              </ScrollArea>\n            </div>\n            <div className=\"flex max-h-[430px] min-h-0 flex-col overflow-hidden rounded-md border bg-muted/10\">\n              <div className=\"shrink-0 px-4 pt-4 text-sm font-medium\">\n                {translate(\n                  \"components.data-management.version-history.rollback-target\",\n                )}\n              </div>\n              <ScrollArea\n                className=\"min-h-0 flex-1 px-4 pb-4\"\n                viewportClassName=\"pr-3\"\n              >\n                {selectedCommit ? (\n                  <div className=\"mt-3 space-y-3 text-sm\">\n                    <div>\n                      <div className=\"text-xs text-muted-foreground\">\n                        {translate(\n                          \"components.data-management.version-history.commit\",\n                        )}\n                      </div>\n                      <div className=\"mt-1 flex min-w-0 items-center gap-2 font-mono\">\n                        <span className=\"truncate\">\n                          {shortCommitId(selectedCommit.commitId)}\n                        </span>\n                        <Button\n                          type=\"button\"\n                          variant=\"ghost\"\n                          size=\"sm\"\n                          className=\"h-6 w-6 shrink-0 p-0\"\n                          onClick={() => {\n                            const value = stringValue(selectedCommit.commitId);\n                            if (value && typeof navigator !== \"undefined\")\n                              void navigator.clipboard?.writeText(value);\n                          }}\n                          aria-label={translate(\"common.actions.copy\")}\n                          title={translate(\"common.actions.copy\")}\n                        >\n                          <Copy className=\"h-3.5 w-3.5\" />\n                        </Button>\n                      </div>\n                    </div>\n                    <div>\n                      <div className=\"text-xs text-muted-foreground\">\n                        {translate(\n                          \"components.data-management.version-history.time\",\n                        )}\n                      </div>\n                      <div className=\"mt-1\">\n                        {formatTimestamp(selectedCommit.createdAt)}\n                      </div>\n                    </div>\n                    <div>\n                      <div className=\"text-xs text-muted-foreground\">\n                        {translate(\n                          \"components.data-management.version-history.actor\",\n                        )}\n                      </div>\n                      <div className=\"mt-1 break-words [overflow-wrap:anywhere]\">\n                        {stringValue(selectedCommit.actorLabel) ??\n                          translate(\n                            \"components.data-management.version-history.system\",\n                          )}\n                      </div>\n                      {stringValue(selectedCommit.actorAccount) ? (\n                        <div className=\"mt-0.5 break-words text-xs text-muted-foreground [overflow-wrap:anywhere]\">\n                          {String(selectedCommit.actorAccount)}\n                        </div>\n                      ) : null}\n                    </div>\n                    <div>\n                      <div className=\"text-xs text-muted-foreground\">\n                        {translate(\n                          \"components.data-management.version-history.manual-description\",\n                        )}\n                      </div>\n                      <div className=\"mt-1 line-clamp-2 break-words [overflow-wrap:anywhere]\">\n                        {stringValue(selectedCommit.summary) ??\n                          translate(\n                            \"components.data-management.version-history.no-description\",\n                          )}\n                      </div>\n                    </div>\n                    {stringValue(selectedCommit.systemMessage) ? (\n                      <div>\n                        <div className=\"text-xs text-muted-foreground\">\n                          {translate(\n                            \"components.data-management.version-history.system-record\",\n                          )}\n                        </div>\n                        <div className=\"mt-1 line-clamp-3 break-words [overflow-wrap:anywhere]\">\n                          {String(selectedCommit.systemMessage)}\n                        </div>\n                      </div>\n                    ) : null}\n                    <div>\n                      <div className=\"text-xs text-muted-foreground\">\n                        {translate(\n                          \"components.data-management.version-history.change\",\n                        )}\n                      </div>\n                      {selectedChangeUsesLongText ? (\n                        <div className=\"mt-1 space-y-2 text-sm\">\n                          <div>\n                            <div className=\"text-[11px] uppercase tracking-wide text-muted-foreground\">\n                              {translate(\n                                \"components.data-management.version-history.before\",\n                              )}\n                            </div>\n                            <div className=\"mt-0.5 max-h-40 overflow-y-auto whitespace-pre-wrap break-words rounded border bg-muted/30 p-2 text-xs [overflow-wrap:anywhere]\">\n                              {selectedBefore ||\n                                translate(\n                                  \"components.data-management.version-history.empty-value\",\n                                )}\n                            </div>\n                          </div>\n                          <div>\n                            <div className=\"text-[11px] uppercase tracking-wide text-muted-foreground\">\n                              {translate(\n                                \"components.data-management.version-history.after\",\n                              )}\n                            </div>\n                            <div className=\"mt-0.5 max-h-40 overflow-y-auto whitespace-pre-wrap break-words rounded border bg-muted/30 p-2 text-xs [overflow-wrap:anywhere]\">\n                              {selectedAfter ||\n                                translate(\n                                  \"components.data-management.version-history.empty-value\",\n                                )}\n                            </div>\n                          </div>\n                        </div>\n                      ) : (\n                        <div className=\"mt-1 line-clamp-4 break-words font-medium [overflow-wrap:anywhere]\">\n                          {formatChange(selectedCommit)}\n                        </div>\n                      )}\n                    </div>\n                  </div>\n                ) : (\n                  <div className=\"mt-3 text-sm text-muted-foreground\">\n                    {translate(\n                      \"components.data-management.version-history.select-non-current\",\n                    )}\n                  </div>\n                )}\n              </ScrollArea>\n            </div>\n          </div>\n        </div>\n        <DialogFooter>\n          <Button\n            ref={cancelButtonRef}\n            variant=\"outline\"\n            disabled={pending}\n            onClick={close}\n          >\n            {translate(\"common.actions.cancel\")}\n          </Button>\n          <Button\n            disabled={!canRollback}\n            onClick={() => {\n              if (canRollback)\n                emitIntent(\"capability.record-history.rollback\", {\n                  aggregateId,\n                  targetCommitId: selectedId,\n                  expectedHeadCommitId: headCommitId,\n                  reason: reason.trim(),\n                });\n            }}\n          >\n            {pending ? <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" /> : null}\n            {translate(\n              \"components.data-management.version-history.confirm-rollback\",\n            )}\n          </Button>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  );\n};\n\nexport const RecordHistoryCapabilityRenderer: DesignCapabilityRenderer = ({\n  model,\n  childrenBySlot,\n  translate,\n  emitIntent,\n}) => {\n  if (model.presentation === \"data-explorer-dialog\") {\n    return (\n      <DataExplorerRecordHistoryDialog\n        model={model}\n        translate={translate}\n        emitIntent={emitIntent}\n      />\n    );\n  }\n  const aggregateId = stringValue(model.aggregateId);\n  const headCommitId = stringValue(model.headCommitId);\n  const selectedTargetCommitId = stringValue(model.selectedTargetCommitId);\n  const commits = objectArray(model.commits);\n  const pagination = cursorPagination(model.pagination);\n  const diff = isJsonObject(model.diff) ? objectArray(model.diff.items) : [];\n  const reason = typeof model.reason === \"string\" ? model.reason : \"\";\n  const rollback = isJsonObject(model.rollback) ? model.rollback : {};\n  const deletion = isJsonObject(model.deletion) ? model.deletion : {};\n  const pending = rollback.pending === true;\n  const deleting = deletion.pending === true;\n  const rollbackEnabled = rollback.enabled === true;\n  const canRollback = Boolean(\n    rollbackEnabled &&\n      !pending &&\n      !deleting &&\n      aggregateId &&\n      headCommitId &&\n      selectedTargetCommitId &&\n      reason.trim(),\n  );\n  const title = copyValue(\n    model.title,\n    model.titleKey,\n    translate,\n    DESIGN_CAPABILITY_I18N_KEYS.recordHistory.title,\n  );\n  const closeLabel = translate(\n    stringValue(model.closeLabelKey) ??\n      DESIGN_CAPABILITY_I18N_KEYS.recordHistory.close,\n  );\n\n  const content = (\n    <BaseStack gap=\"var(--global-spacing)\">\n      <section\n        aria-label={translate(\n          DESIGN_CAPABILITY_I18N_KEYS.recordHistory.commits,\n        )}\n      >\n        <ol>\n          {commits.map((commit) => {\n            const commitId = stringValue(commit.commitId);\n            if (!commitId) return null;\n            const selected = commitId === selectedTargetCommitId;\n            const label = copyValueOrFallback(\n              commit.label,\n              commit.labelKey,\n              translate,\n              commitId,\n            );\n            const metadata = [\n              stringValue(commit.actorLabel),\n              stringValue(commit.createdAt),\n              stringValue(commit.summary),\n            ].filter(Boolean);\n            return (\n              <li key={commitId}>\n                <BaseButton\n                  label={\n                    <span>\n                      <span>{label}</span>\n                      {metadata.length ? (\n                        <span> — {metadata.join(\" · \")}</span>\n                      ) : null}\n                    </span>\n                  }\n                  active={selected}\n                  aria-pressed={selected}\n                  disabled={commit.disabled === true}\n                  variant=\"ghost\"\n                  onClick={() =>\n                    emitIntent(\"capability.record-history.select\", {\n                      targetCommitId: commitId,\n                    })\n                  }\n                />\n              </li>\n            );\n          })}\n        </ol>\n        <CursorLoadMore\n          pagination={pagination}\n          label={translate(DESIGN_CAPABILITY_I18N_KEYS.recordHistory.loadMore)}\n          loadingLabel={translate(\n            DESIGN_CAPABILITY_I18N_KEYS.recordHistory.loadingMore,\n          )}\n          onLoadMore={(cursor) =>\n            emitIntent(\"capability.record-history.load-more\", { cursor })\n          }\n        />\n      </section>\n\n      <section\n        aria-label={translate(DESIGN_CAPABILITY_I18N_KEYS.recordHistory.diff)}\n      >\n        {diff.length ? (\n          <BaseTableContainer>\n            <BaseTable>\n              <BaseTableHeader>\n                <BaseTableRow>\n                  <BaseTableHead scope=\"col\">\n                    {translate(DESIGN_CAPABILITY_I18N_KEYS.recordHistory.field)}\n                  </BaseTableHead>\n                  <BaseTableHead scope=\"col\">\n                    {translate(\n                      DESIGN_CAPABILITY_I18N_KEYS.recordHistory.before,\n                    )}\n                  </BaseTableHead>\n                  <BaseTableHead scope=\"col\">\n                    {translate(DESIGN_CAPABILITY_I18N_KEYS.recordHistory.after)}\n                  </BaseTableHead>\n                </BaseTableRow>\n              </BaseTableHeader>\n              <BaseTableBody>\n                {diff.map((item) => {\n                  const fieldId = stringValue(item.fieldId);\n                  if (!fieldId) return null;\n                  return (\n                    <BaseTableRow key={fieldId}>\n                      <BaseTableHead scope=\"row\">\n                        {copyValueOrFallback(\n                          item.label,\n                          item.labelKey,\n                          translate,\n                          fieldId,\n                        )}\n                      </BaseTableHead>\n                      <BaseTableCell>\n                        {primitiveValue(item.before)}\n                      </BaseTableCell>\n                      <BaseTableCell>\n                        {primitiveValue(item.after)}\n                      </BaseTableCell>\n                    </BaseTableRow>\n                  );\n                })}\n              </BaseTableBody>\n            </BaseTable>\n          </BaseTableContainer>\n        ) : (\n          <p>{translate(DESIGN_CAPABILITY_I18N_KEYS.recordHistory.noDiff)}</p>\n        )}\n      </section>\n\n      <BaseField\n        label={translate(DESIGN_CAPABILITY_I18N_KEYS.recordHistory.reason)}\n        description={translate(\n          DESIGN_CAPABILITY_I18N_KEYS.recordHistory.reasonDescription,\n        )}\n        required\n        disabled={pending || deleting}\n      >\n        {(controlProps) => (\n          <BaseTextarea\n            {...controlProps}\n            value={reason}\n            maxLength={2048}\n            onChange={(event) =>\n              emitIntent(\"capability.record-history.reason-change\", {\n                reason: event.currentTarget.value,\n              })\n            }\n          />\n        )}\n      </BaseField>\n\n      {stringValue(rollback.errorCode) ? (\n        <CapabilityStatus\n          kind=\"error\"\n          code={String(rollback.errorCode)}\n          translate={translate}\n        />\n      ) : null}\n      {stringValue(deletion.errorCode) ? (\n        <CapabilityStatus\n          kind=\"error\"\n          code={String(deletion.errorCode)}\n          translate={translate}\n        />\n      ) : null}\n      <BaseToolbar actions={childrenBySlot.footer}>\n        <BaseButton\n          label={translate(DESIGN_CAPABILITY_I18N_KEYS.recordHistory.rollback)}\n          tone=\"warning\"\n          loading={pending}\n          disabled={!canRollback}\n          onClick={() => {\n            if (\n              !aggregateId ||\n              !headCommitId ||\n              !selectedTargetCommitId ||\n              !reason.trim()\n            )\n              return;\n            emitIntent(\"capability.record-history.rollback\", {\n              aggregateId,\n              targetCommitId: selectedTargetCommitId,\n              expectedHeadCommitId: headCommitId,\n              reason: reason.trim(),\n            });\n          }}\n        />\n        <BaseButton\n          label={translate(DESIGN_CAPABILITY_I18N_KEYS.recordHistory.delete)}\n          tone=\"danger\"\n          loading={deleting}\n          disabled={\n            deletion.enabled !== true ||\n            deletion.confirmationRequired !== true ||\n            pending ||\n            deleting ||\n            !aggregateId ||\n            !headCommitId ||\n            !reason.trim()\n          }\n          onClick={() => {\n            if (!aggregateId || !headCommitId || !reason.trim()) return;\n            emitIntent(\"capability.record-history.delete\", {\n              aggregateId,\n              expectedHeadCommitId: headCommitId,\n              reason: reason.trim(),\n            });\n          }}\n        />\n      </BaseToolbar>\n    </BaseStack>\n  );\n\n  if (model.presentation === \"dialog\") {\n    return (\n      <BaseDialog\n        open\n        portal\n        title={title}\n        closeLabel={closeLabel}\n        closeOnEscape={!pending && !deleting}\n        closeOnOverlayClick={!pending && !deleting}\n        classNames={{ panel: \"max-w-5xl\" }}\n        onOpenChange={(open) => {\n          if (!open && !pending && !deleting) {\n            emitIntent(\"capability.record-history.close\", {});\n          }\n        }}\n      >\n        {childrenBySlot.header}\n        {content}\n      </BaseDialog>\n    );\n  }\n\n  return (\n    <DataExplorerDetailShell\n      title={title}\n      leading={childrenBySlot.header}\n      preview={null}\n      previewVisible={false}\n      closeLabel={closeLabel}\n      closeVisible\n      onClose={() => emitIntent(\"capability.record-history.close\", {})}\n      sections={[{ id: \"record-history\", children: content }]}\n    />\n  );\n};\n\nconst localizedModelCopy = (\n  model: JsonObject,\n  name: \"eyebrow\" | \"title\" | \"description\",\n  translate: CapabilityTranslate,\n) => {\n  const key = stringValue(model[`${name}Key`]);\n  return key ? translate(key) : stringValue(model[name]);\n};\n\nexport const SectionHeaderCapabilityRenderer: DesignCapabilityRenderer = ({\n  model,\n  childrenBySlot,\n  translate,\n}) => (\n  <BaseSectionHeader\n    eyebrow={localizedModelCopy(model, \"eyebrow\", translate)}\n    title={localizedModelCopy(model, \"title\", translate)}\n    description={localizedModelCopy(model, \"description\", translate)}\n    actions={childrenBySlot.actions}\n  />\n);\n\nconst NOTICE_TONES = new Set([\n  \"default\",\n  \"primary\",\n  \"success\",\n  \"warning\",\n  \"danger\",\n  \"muted\",\n]);\n\nexport const NoticeCapabilityRenderer: DesignCapabilityRenderer = ({\n  model,\n  childrenBySlot,\n  translate,\n}) => {\n  const requestedTone = stringValue(model.tone);\n  const tone =\n    requestedTone && NOTICE_TONES.has(requestedTone)\n      ? (requestedTone as\n          | \"default\"\n          | \"primary\"\n          | \"success\"\n          | \"warning\"\n          | \"danger\"\n          | \"muted\")\n      : \"default\";\n  return (\n    <BaseNotice\n      tone={tone}\n      icon={childrenBySlot.icon}\n      title={localizedModelCopy(model, \"title\", translate)}\n      description={localizedModelCopy(model, \"description\", translate)}\n      actions={childrenBySlot.actions}\n    />\n  );\n};\n\nexport const DescriptionListCapabilityRenderer: DesignCapabilityRenderer = ({\n  model,\n  childrenBySlot,\n  translate,\n}) => {\n  const columns =\n    model.columns === 2 || model.columns === 3 ? model.columns : 1;\n  const items = objectArray(model.items).flatMap((item) => {\n    const id = stringValue(item.id);\n    if (!id) return [];\n    return [\n      {\n        term:\n          (stringValue(item.termKey)\n            ? translate(String(item.termKey))\n            : stringValue(item.term)) ?? \"\",\n        value: item.valueType === 'timestamp' ? renderDateTimeValue(item.value, 'milliseconds', stringValue(item.locale)) :\n          (stringValue(item.valueKey)\n            ? translate(String(item.valueKey))\n            : stringValue(item.value)) ?? \"\",\n      },\n    ];\n  });\n  const label = stringValue(model.labelKey)\n    ? translate(String(model.labelKey))\n    : stringValue(model.label);\n  return (\n    <BaseStack gap=\"var(--global-spacing)\">\n      <BaseDescriptionList items={items} columns={columns} aria-label={label} />\n      {childrenBySlot.footer}\n    </BaseStack>\n  );\n};\n\nexport const ContentPanelCapabilityRenderer: DesignCapabilityRenderer = ({\n  model,\n  childrenBySlot,\n  translate,\n}) => {\n  const requestedDensity = stringValue(model.density);\n  const density =\n    requestedDensity === \"compact\" || requestedDensity === \"comfortable\"\n      ? requestedDensity\n      : \"default\";\n  return (\n    <BasePanel\n      title={localizedModelCopy(model, \"title\", translate)}\n      description={localizedModelCopy(model, \"description\", translate)}\n      media={childrenBySlot.media}\n      footer={childrenBySlot.footer}\n      selected={model.selected === true}\n      disabled={model.disabled === true}\n      density={density}\n    >\n      {childrenBySlot.body}\n    </BasePanel>\n  );\n};\n\nexport const ToolbarCapabilityRenderer: DesignCapabilityRenderer = ({\n  model,\n  childrenBySlot,\n  translate,\n}) => (\n  <BaseToolbar\n    leading={childrenBySlot.leading}\n    title={localizedModelCopy(model, \"title\", translate)}\n    description={localizedModelCopy(model, \"description\", translate)}\n    actions={childrenBySlot.actions}\n  >\n    {childrenBySlot.content}\n  </BaseToolbar>\n);\n\nexport const StatusCapabilityRenderer: DesignCapabilityRenderer = ({\n  model,\n  childrenBySlot,\n  translate,\n  retry,\n}) => {\n  const requestedKind = stringValue(model.kind);\n  const kind =\n    requestedKind === \"loading\" ||\n    requestedKind === \"empty\" ||\n    requestedKind === \"error\" ||\n    requestedKind === \"forbidden\"\n      ? requestedKind\n      : \"error\";\n  if (model.presentation === \"legacy-data-explorer\") {\n    return (\n      <div\n        className=\"col-span-full flex h-full min-h-0 flex-1 flex-col overflow-hidden\"\n        data-presentation=\"legacy-data-explorer-status\"\n      >\n        {stringValue(model.noticeKey) ? (\n          <div className=\"mx-4 mt-3 shrink-0 rounded-md border border-warning/30 bg-warning/10 px-3 py-2 text-sm text-warning\">\n            {translate(String(model.noticeKey))}\n          </div>\n        ) : null}\n        {kind === \"loading\" ? (\n          <CapabilityStatus kind=\"loading\" translate={translate} titleKey={stringValue(model.titleKey)} />\n        ) : (\n          <div className=\"flex h-64 items-center justify-center\">\n            <p className=\"text-muted-foreground\">\n              {translate(\n                stringValue(model.emptyLabelKey) ??\n                  DESIGN_CAPABILITY_I18N_KEYS.status.empty.title,\n              )}\n            </p>\n          </div>\n        )}\n      </div>\n    );\n  }\n  return (\n    <CapabilityStatus\n      kind={kind}\n      code={stringValue(model.code)}\n      titleKey={stringValue(model.titleKey)}\n      descriptionKey={stringValue(model.descriptionKey)}\n      actions={childrenBySlot.actions}\n      onRetry={model.retryable === true ? retry : undefined}\n      translate={translate}\n    />\n  );\n};\n\nexport interface ProfessionalCapabilityBinding {\n  render(context: DesignCapabilityRendererContext): ReactNode;\n}\n\nconst isProfessionalBinding = (\n  value: unknown,\n): value is ProfessionalCapabilityBinding =>\n  typeof value === \"object\" &&\n  value !== null &&\n  \"render\" in value &&\n  typeof value.render === \"function\";\n\nexport const ProfessionalCapabilityLeafRenderer: DesignCapabilityRenderer = (\n  context,\n) => {\n  if (!isProfessionalBinding(context.binding)) {\n    return (\n      <CapabilityStatus\n        kind=\"error\"\n        code=\"capability.professional.renderer.missing\"\n        translate={context.translate}\n      />\n    );\n  }\n  const content = context.binding.render(context);\n  const body = (\n    <>\n      {context.childrenBySlot.toolbar}\n      {content}\n      {context.childrenBySlot.footer}\n    </>\n  );\n  return context.entry.provider.frameOwner === \"provider\" ? (\n    body\n  ) : (\n    <BaseLayoutPane>{body}</BaseLayoutPane>\n  );\n};\n\nexport const NEUTRAL_CAPABILITY_RENDERERS = Object.freeze({\n  'monkeys.design.renderer.choice-picker': ChoicePickerCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.runtimeTerminal]: RuntimeTerminalCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.orderedSelection]: OrderedSelectionCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.numericSeries]: NumericSeriesCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.summaryChart]: SummaryChartCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.filePicker]: FilePickerCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.shellLayout]: ShellLayoutCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.sidebarFilter]:\n    SidebarFilterCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.gallery]: GalleryCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.ontologyNavigator]:\n    OntologyNavigatorCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.dataToolbar]: DataToolbarCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.ontologyTable]:\n    OntologyTableCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.ontologyTrendMatrix]:\n    OntologyTrendMatrixCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.dataContextBar]:\n    DataContextBarCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.cardGrid]: CardGridCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.pagination]: PaginationCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.recordDetail]:\n    RecordDetailCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.recordEditor]:\n    RecordEditorCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.recordHistory]:\n    RecordHistoryCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.ontologyManagement]:\n    OntologyManagementCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.featureColumnManager]:\n    FeatureColumnManagerCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.sectionHeader]:\n    SectionHeaderCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.notice]: NoticeCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.descriptionList]:\n    DescriptionListCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.contentPanel]:\n    ContentPanelCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.toolbar]: ToolbarCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.status]: StatusCapabilityRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.professionalLeaf]:\n    ProfessionalCapabilityLeafRenderer,\n  [DESIGN_CAPABILITY_RENDERER_KEYS.professionalExtensionLeaf]:\n    ProfessionalCapabilityLeafRenderer,\n});\n","import type { ProductContext, RenderNode } from '@inf-monkeys-tech/monkeys';\n\nimport type {\n  CompiledDesignCapabilityCatalog,\n  CompiledDesignCapabilityRuntime,\n  DesignCapabilityProviderRegistry,\n  DesignCapabilityRendererRegistry,\n} from './contracts';\n\nexport interface CompileDesignCapabilityRuntimeInput {\n  catalog: CompiledDesignCapabilityCatalog;\n  providers: DesignCapabilityProviderRegistry;\n  renderers: DesignCapabilityRendererRegistry;\n}\n\nexport const compileDesignCapabilityRuntime = ({\n  catalog,\n  providers,\n  renderers,\n}: CompileDesignCapabilityRuntimeInput): CompiledDesignCapabilityRuntime => {\n  const providerSnapshot = Object.freeze(\n    Object.fromEntries(\n      Object.entries(providers).map(([providerId, provider]) => [\n        providerId,\n        Object.freeze({ ...provider }),\n      ]),\n    ),\n  ) as DesignCapabilityProviderRegistry;\n  const rendererSnapshot = Object.freeze({ ...renderers }) as DesignCapabilityRendererRegistry;\n\n  for (const entry of catalog.entries) {\n    const provider = providerSnapshot[entry.provider.providerId];\n    if (!provider || provider.providerId !== entry.provider.providerId) {\n      throw new TypeError(\n        `${entry.manifest.id} has no explicit runtime provider ${entry.provider.providerId}.`,\n      );\n    }\n    const expectedAdapterId = entry.provider.sideEffectAdapterRef?.id;\n    if (provider.sideEffectAdapterId !== expectedAdapterId) {\n      throw new TypeError(\n        `${entry.manifest.id} runtime provider must bind side-effect adapter ${expectedAdapterId ?? 'none'}.`,\n      );\n    }\n    if (typeof rendererSnapshot[entry.provider.rendererKey] !== 'function') {\n      throw new TypeError(\n        `${entry.manifest.id} has no explicit renderer ${entry.provider.rendererKey}.`,\n      );\n    }\n  }\n\n  const resolve = (node: RenderNode, product: ProductContext) => {\n    const entry = catalog.resolve(\n      node.capabilityRef.id,\n      product,\n      node.providerRef?.id,\n    );\n    if (\n      node.capabilityRef.kind !== 'capability'\n      || node.capabilityRef.ownerRepo !== entry.manifest.ownerRepo\n      || String(node.capabilityRef.version) !== String(entry.manifest.capabilityVersion)\n    ) {\n      throw new TypeError(\n        `Capability reference must pin owner ${entry.manifest.ownerRepo} and version ${entry.manifest.capabilityVersion}.`,\n      );\n    }\n    if (\n      !node.providerRef\n      || node.providerRef.kind !== 'view-provider'\n      || node.providerRef.ownerRepo !== entry.provider.ownerRepo\n      || String(node.providerRef.version) !== String(entry.provider.providerVersion)\n    ) {\n      throw new TypeError(\n        `Capability provider reference must pin owner ${entry.provider.ownerRepo} and version ${entry.provider.providerVersion}.`,\n      );\n    }\n    return {\n      entry,\n      provider: providerSnapshot[entry.provider.providerId]!,\n      renderer: rendererSnapshot[entry.provider.rendererKey]!,\n    };\n  };\n\n  return Object.freeze({\n    catalog,\n    providers: providerSnapshot,\n    renderers: rendererSnapshot,\n    resolve,\n  });\n};\n","import type { DesignCapabilityProviderRegistry } from './contracts';\nimport { NEUTRAL_DESIGN_CAPABILITY_CATALOG } from './neutralCatalog';\nimport { NEUTRAL_CAPABILITY_RENDERERS } from './neutralRenderers';\nimport { compileDesignCapabilityRuntime } from './runtime';\n\nexport const NEUTRAL_CAPABILITY_PROVIDERS = Object.freeze(\n  Object.fromEntries(\n    NEUTRAL_DESIGN_CAPABILITY_CATALOG.entries.map(({ provider }) => [\n      provider.providerId,\n      Object.freeze({\n        providerId: provider.providerId,\n        ...(provider.sideEffectAdapterRef\n          ? { sideEffectAdapterId: provider.sideEffectAdapterRef.id }\n          : {}),\n      }),\n    ]),\n  ),\n) as DesignCapabilityProviderRegistry;\n\nexport const NEUTRAL_DESIGN_CAPABILITY_RUNTIME =\n  compileDesignCapabilityRuntime({\n    catalog: NEUTRAL_DESIGN_CAPABILITY_CATALOG,\n    providers: NEUTRAL_CAPABILITY_PROVIDERS,\n    renderers: NEUTRAL_CAPABILITY_RENDERERS,\n  });\n"]}