@weasel-js/labkit 1.5.1 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/README.md +3 -7
  2. package/dist/_dts/{CanvasStackContext-CJNMS6mz.d.ts → CanvasStackContext-DQgcH1ny.d.ts} +1 -1
  3. package/dist/_dts/LayerList.d-2c9yup5Y.d.ts +83 -0
  4. package/dist/_dts/{PrefsForm.d-DPy9I8It.d.ts → PrefsRow.d-DFpPIeIC.d.ts} +16 -1
  5. package/dist/_dts/{Select.d-Gwr8fLpK.d.ts → Select.d-BchGMC2Y.d.ts} +129 -12
  6. package/dist/_dts/{frac-B4okC2lX.d.ts → frac-DTRq7Xpb.d.ts} +31 -13
  7. package/dist/_dts/inDialog-D5ZKGjiD.d.ts +23 -0
  8. package/dist/_dts/{index-CSJoj4LC.d.ts → index-B0--8PEM.d.ts} +5 -4
  9. package/dist/_dts/index-DINmCuLA.d.ts +453 -0
  10. package/dist/_dts/number.d-OeQYQoUO.d.ts +28 -0
  11. package/dist/_dts/{types-DzoNY1pO.d.ts → types-B7y8hX1D.d.ts} +6 -6
  12. package/dist/_dts/{usePanZoom-Pzf9f2jh.d.ts → usePanZoom-Bq73pwFe.d.ts} +4 -47
  13. package/dist/_dts/{useTrialState-uLlmaccn.d.ts → useTrialState-CP4jfuKl.d.ts} +1 -1
  14. package/dist/canvas/index.d.ts +6 -5
  15. package/dist/canvas/index.js +1 -1
  16. package/dist/chrome/index.d.ts +5 -4
  17. package/dist/chrome/index.js +7 -7
  18. package/dist/chunk-2RVCB2PT.js +3 -0
  19. package/dist/chunk-2RVCB2PT.js.map +1 -0
  20. package/dist/{chunk-UN4U4P63.js → chunk-3FI7Y4R4.js} +9 -9
  21. package/dist/chunk-3FI7Y4R4.js.map +1 -0
  22. package/dist/{chunk-7PFH3CNM.js → chunk-AWH3SRPW.js} +31 -5
  23. package/dist/chunk-AWH3SRPW.js.map +1 -0
  24. package/dist/{chunk-ZDHY47EV.js → chunk-BVL7Y574.js} +25 -9
  25. package/dist/chunk-BVL7Y574.js.map +1 -0
  26. package/dist/{chunk-IHUVQ3TX.js → chunk-H5VIV7MQ.js} +31 -27
  27. package/dist/chunk-H5VIV7MQ.js.map +1 -0
  28. package/dist/chunk-HFRE4QQV.js +400 -0
  29. package/dist/chunk-HFRE4QQV.js.map +1 -0
  30. package/dist/{chunk-IXTQI7JX.js → chunk-MOLIUNVH.js} +4 -4
  31. package/dist/{chunk-IXTQI7JX.js.map → chunk-MOLIUNVH.js.map} +1 -1
  32. package/dist/{chunk-CEIUBPPW.js → chunk-TT5C5S6R.js} +3 -86
  33. package/dist/chunk-TT5C5S6R.js.map +1 -0
  34. package/dist/chunk-USO6TERP.js +90 -0
  35. package/dist/chunk-USO6TERP.js.map +1 -0
  36. package/dist/{chunk-PHK4W562.js → chunk-VQ47KWD5.js} +3 -3
  37. package/dist/{chunk-PHK4W562.js.map → chunk-VQ47KWD5.js.map} +1 -1
  38. package/dist/chunk-WUJXJC5O.js +14568 -0
  39. package/dist/chunk-WUJXJC5O.js.map +1 -0
  40. package/dist/{chunk-EHGVROVV.js → chunk-ZORVNOKX.js} +6 -25
  41. package/dist/chunk-ZORVNOKX.js.map +1 -0
  42. package/dist/config/index.d.ts +53 -11
  43. package/dist/config/index.js +5 -5
  44. package/dist/controls/index.d.ts +6 -3
  45. package/dist/controls/index.js +4 -4
  46. package/dist/dragdrop/index.d.ts +4 -3
  47. package/dist/index.d.ts +139 -114
  48. package/dist/index.js +470 -479
  49. package/dist/index.js.map +1 -1
  50. package/dist/layers/index.d.ts +6 -35
  51. package/dist/layers/index.js +2 -3
  52. package/dist/loupe/index.d.ts +6 -5
  53. package/dist/passthrough/weasel-ui.d.ts +421 -215
  54. package/dist/passthrough/weasel-ui.js +1 -1
  55. package/dist/primitives/index.d.ts +2 -13
  56. package/dist/primitives/index.js +4 -4
  57. package/dist/state/index.d.ts +6 -5
  58. package/dist/state/index.js +5 -5
  59. package/dist/styles.css +410 -190
  60. package/dist/undo/index.d.ts +4 -3
  61. package/package.json +9 -13
  62. package/src/annotations/frac.test.ts +7 -0
  63. package/src/annotations/paint.test.ts +21 -0
  64. package/src/annotations/paint.ts +12 -0
  65. package/src/annotations/store.test.ts +31 -0
  66. package/src/annotations/types.ts +3 -2
  67. package/src/canvas/Stage.test.tsx +18 -0
  68. package/src/canvas/index.ts +0 -9
  69. package/src/chrome/labTypes.ts +1 -1
  70. package/src/chrome/regions/PaletteRegion.test.tsx +18 -0
  71. package/src/chrome/regions/PaletteRegion.tsx +5 -4
  72. package/src/chrome/regions/SidebarRegion.less +197 -0
  73. package/src/chrome/regions/SidebarRegion.test.tsx +20 -0
  74. package/src/chrome/regions/SidebarRegion.tsx +7 -2
  75. package/src/chrome/regions/TitleBarRegion.tsx +1 -1
  76. package/src/chrome/types.ts +13 -4
  77. package/src/config/autoConfig.ts +2 -2
  78. package/src/config/builder.ts +23 -5
  79. package/src/config/entry.test.ts +8 -0
  80. package/src/config/index.ts +2 -0
  81. package/src/config/rules.ts +2 -0
  82. package/src/config/sectionTree.test.ts +146 -0
  83. package/src/config/sectionTree.ts +124 -0
  84. package/src/config/types.ts +4 -4
  85. package/src/controls/AutoControls.stories.tsx +6 -6
  86. package/src/controls/ControlPanel.less +27 -0
  87. package/src/controls/ControlPanel.stories.tsx +95 -1
  88. package/src/controls/ControlPanel.test.tsx +82 -112
  89. package/src/controls/ControlPanel.tsx +159 -396
  90. package/src/controls/inDialog.test.tsx +82 -0
  91. package/src/controls/inDialog.tsx +46 -0
  92. package/src/controls/index.ts +1 -0
  93. package/src/index.test.ts +0 -2
  94. package/src/index.ts +14 -35
  95. package/src/instrument/types.ts +5 -2
  96. package/src/lab/Lab.nebula.test.tsx +31 -0
  97. package/src/lab/Lab.tsx +57 -18
  98. package/src/lab/LabBoundary.test.tsx +66 -0
  99. package/src/lab/LabBoundary.tsx +56 -0
  100. package/src/lab/LabHeader.tsx +4 -23
  101. package/src/lab/LabRoot.tsx +2 -3
  102. package/src/lab/LabShell.less +0 -1
  103. package/src/lab/LabShell.stories.tsx +15 -0
  104. package/src/lab/LabShell.test.tsx +18 -0
  105. package/src/lab/LabShell.tsx +14 -1
  106. package/src/lab/LabSwitcher.less +1 -1
  107. package/src/lab/LabSwitcher.test.tsx +41 -0
  108. package/src/lab/LabSwitcher.tsx +30 -8
  109. package/src/lab/index.ts +1 -0
  110. package/src/layers/AGENTS.md +18 -74
  111. package/src/layers/index.ts +4 -2
  112. package/src/passthrough/weasel-ui.ts +25 -10
  113. package/src/primitives/FpsMeter.less +6 -1
  114. package/src/primitives/FpsMeter.test.tsx +12 -4
  115. package/src/primitives/FpsMeter.tsx +6 -1
  116. package/src/primitives/JobProgress.stories.tsx +1 -1
  117. package/src/primitives/StatusBar.less +6 -0
  118. package/src/primitives/index.ts +0 -2
  119. package/src/specimen/Specimen.tsx +42 -56
  120. package/src/state/types.ts +8 -2
  121. package/src/state/view.test.ts +4 -4
  122. package/src/styles.less +4 -2
  123. package/src/theme/Interstellar.stories.tsx +8 -9
  124. package/src/theme/base.less +3 -20
  125. package/src/theme/interstellar.test.ts +6 -3
  126. package/src/theme/interstellar.theme.json +0 -56
  127. package/src/theme/interstellar.ts +2 -2
  128. package/src/trial/Trial.canvas.test.tsx +9 -5
  129. package/src/trial/Trial.config.test.tsx +1 -1
  130. package/src/trial/Trial.tsx +30 -8
  131. package/dist/_dts/index-BNdz-tNd.d.ts +0 -423
  132. package/dist/chunk-7PFH3CNM.js.map +0 -1
  133. package/dist/chunk-CEIUBPPW.js.map +0 -1
  134. package/dist/chunk-EH7UEQV7.js +0 -590
  135. package/dist/chunk-EH7UEQV7.js.map +0 -1
  136. package/dist/chunk-EHGVROVV.js.map +0 -1
  137. package/dist/chunk-IHUVQ3TX.js.map +0 -1
  138. package/dist/chunk-MDVTK5U3.js +0 -170
  139. package/dist/chunk-MDVTK5U3.js.map +0 -1
  140. package/dist/chunk-PJ7WEQBJ.js +0 -18
  141. package/dist/chunk-PJ7WEQBJ.js.map +0 -1
  142. package/dist/chunk-T3EC2DXD.js +0 -12628
  143. package/dist/chunk-T3EC2DXD.js.map +0 -1
  144. package/dist/chunk-UN4U4P63.js.map +0 -1
  145. package/dist/chunk-ZDHY47EV.js.map +0 -1
  146. package/dist/ui/layers/index.d.ts +0 -66
  147. package/dist/ui/layers/index.js +0 -3
  148. package/dist/ui/layers/index.js.map +0 -1
  149. package/src/canvas/useOrbit.test.ts +0 -167
  150. package/src/canvas/useOrbit.ts +0 -156
  151. package/src/lab/useSystemMode.ts +0 -30
  152. package/src/layers/LayerList.less +0 -93
  153. package/src/layers/LayerList.stories.tsx +0 -66
  154. package/src/layers/LayerList.test.tsx +0 -232
  155. package/src/layers/LayerList.tsx +0 -268
  156. package/src/primitives/Sidebar.less +0 -112
  157. package/src/primitives/Sidebar.stories.tsx +0 -38
  158. package/src/primitives/Sidebar.test.tsx +0 -74
  159. package/src/primitives/Sidebar.tsx +0 -35
  160. package/src/ui/layers/index.ts +0 -5
package/dist/index.d.ts CHANGED
@@ -1,34 +1,35 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { I as IconProps } from './_dts/Select.d-Gwr8fLpK.js';
3
- export { B as Button, a as ButtonProps, b as ButtonSize, c as ButtonVariant, d as Icon, e as Input, f as InputProps, S as Select, g as SelectProps, T as ToggleBar, h as ToggleBarItem, i as ToggleBarProps, j as ToggleBarSize, k as ToggleBarVariant } from './_dts/Select.d-Gwr8fLpK.js';
4
- export { LayerStack, LayerStackItem, LayerStackProps } from './ui/layers/index.js';
2
+ import { I as IconProps } from './_dts/Select.d-BchGMC2Y.js';
3
+ export { B as Button, a as ButtonProps, b as ButtonSize, c as ButtonVariant, d as Icon, e as Input, f as InputProps, S as Select, g as SelectProps, T as ToggleBar, h as ToggleBarItem, i as ToggleBarProps, j as ToggleBarSize, k as ToggleBarVariant } from './_dts/Select.d-BchGMC2Y.js';
4
+ export { L as LayerList, a as LayerListItem, b as LayerListProps, c as LayerMove, m as moveLayers } from './_dts/LayerList.d-2c9yup5Y.js';
5
+ import { P as PropertyMetricProps, a as PropertyListPack } from './_dts/index-DINmCuLA.js';
6
+ export { C as ControlPanel, b as PropertyControl, c as PropertyControlProps, d as PropertyField, e as PropertyFieldProps, f as PropertyList, g as PropertyListProps, h as PropertyOption, i as PropertyPanel, j as PropertyPanelProps, k as PropertyRow, l as PropertyRowLayout, m as PropertyRowProps, n as PropertyRowVariant, o as PropertySpan, p as PropertySpanProps } from './_dts/index-DINmCuLA.js';
5
7
  import * as react from 'react';
6
8
  import { ReactNode } from 'react';
7
- import { P as PropertyMetricProps, a as PropertyListPack } from './_dts/index-BNdz-tNd.js';
8
- export { C as CheckboxRow, b as CheckboxRowProps, c as ColorRow, d as ColorRowProps, e as ControlPanel, N as NumberRow, f as NumberRowProps, g as PropertyList, h as PropertyListProps, i as PropertyOption, j as PropertyPanel, k as PropertyPanelProps, l as PropertyRow, m as PropertyRowLayout, n as PropertyRowProps, o as PropertyRowVariant, p as PropertySpan, q as PropertySpanProps, S as SelectRow, r as SelectRowProps, s as SliderRow, t as SliderRowProps, T as TextRow, u as TextRowProps, v as ToggleRow, w as ToggleRowProps } from './_dts/index-BNdz-tNd.js';
9
- import { DrawCommand, SceneNode, View, Path, FillStyle, StrokeAlign, StyledRun, TextStyle, TextVerticalAlign, Stroke, BuiltinToolId } from '@weasel-js/core';
10
- import { t as WorldRect, A as AnnotationData, v as AnnotationMeaning, w as MarkScene, x as CaptureSource, y as CaptureOptions, z as CaptureResult, B as AnnotationTarget, E as AnnotationsApi, F as AnnotationsCapability, G as TrialInfo, H as TrialTool, J as AnnotationKind, k as ViewTransform, K as Instrument, q as InstrumentList, o as LabMode, N as TrialContribution, c as StorageAdapter, T as TrialRecord } from './_dts/frac-B4okC2lX.js';
11
- export { O as Annotation, Q as AnnotationInit, R as AnnotationPatch, X as AnnotationQuery, Y as AnnotationStatus, Z as AnnotationStoreOptions, _ as AnnotationTargetInfo, $ as Auto, a0 as CanvasCapability, a1 as CanvasLayer, a2 as CaptureDeps, a3 as ContributionBase, C as CreateLabStoreOptions, D as DEFAULT_FRAME, n as DragDropCapability, m as DragFeedback, a4 as FracPoint, a5 as FracRect, a6 as HitResult, a7 as IconComponent, a8 as LOUPE_DEFAULTS, L as LabDocument, d as LabStoreState, a9 as LayerCapability, aa as LayerDescriptor, ab as LoupeCapability, ac as LoupeDeclaration, ad as LoupeRenderArgs, P as PaletteItem, l as Point, ae as RegionContribution, af as RenderContext, ag as ResolvedLoupe, e as SavedSnapshot, ah as SerializedAnnotations, S as SerializedTrial, ai as SidebarSection, aj as SidebarSlotContext, ak as StageCapability, al as StatusReadout, f as StorageChange, am as SystemEvent, an as ToolCapability, ao as ToolItem, ap as ToolSlotContext, aq as ToolbarItem, ar as TrialChromeContext, as as TrialRegion, g as TrialStateHandle, at as UndoCapability, U as UndoStack, h as UndockedPanel, i as UndockedPanels, au as ViewportControl, V as ViewportSize, W as WorldFrame, a as WorldSpec, av as annotationsFromJSON, b as applyCamera, aw as auto, ax as createAnnotationScene, ay as createAnnotationStore, j as dockPanel, az as fracContains, aA as fracEncloses, aB as fracToWorld, aC as isAuto, p as panelKey, r as resolveFrame, aD as resolveLoupe, aE as roundFrac, u as undockPanel, aF as worldToFrac } from './_dts/frac-B4okC2lX.js';
12
- export { C as CanvasStack, a as CanvasStackProps, O as OrbitHandlers, b as OrbitView, P as PITCH_LIMIT, c as PanZoomHandlers, S as Stage, d as StageProps, U as UseOrbitOptions, e as UsePanZoomOptions, V as Vec3, Z as ZoomAtOptions, f as centerOn, g as clampPitch, h as fitStage, o as orbitAfterDrag, i as orbitAfterWheel, s as screenToWorld, u as useOrbit, j as usePanZoom, w as worldToScreen, k as wrapYaw, z as zoomAt } from './_dts/usePanZoom-Pzf9f2jh.js';
13
- export { C as CanvasLayerDescriptor, a as CanvasStackContext, b as CanvasStackContextValue, c as CanvasStackSurface } from './_dts/CanvasStackContext-CJNMS6mz.js';
14
- import { L as LabContribution } from './_dts/index-CSJoj4LC.js';
15
- export { A as AddTrialOptions, a as LabAsideRegion, b as LabChromeContext, c as LabContext, d as LabContextValue, e as LabFooterRegion, f as LabHeaderRegion, g as LabRegion, h as LabRegionProps, i as LabSidebarRegion, P as PaletteRegion, j as PaletteRegionProps, S as SidebarRegion, k as SidebarRegionProps, l as StatusRegion, m as StatusRegionProps, T as TitleBarPlacement, n as TitleBarRegion, o as TitleBarRegionProps, p as ToolbarRegion, q as ToolbarRegionProps, V as ViewportRegion, r as ViewportRegionProps, s as addTrial, t as builtinContributions, u as cloneTrial, v as closeTrial, w as contributionsIn, x as labContributions, y as mergeContributions, z as reorderTrials, B as resetTrial, C as suppressContributions, D as toolContributions, E as useLabChromeContext, F as useLabContext } from './_dts/index-CSJoj4LC.js';
16
- export { BaseNode, BooleanNode, ColorNode, CustomNode, EnumNode, GroupNode, NumberNode, StringNode, ValueNode, applyRules, autoPathsOf, builtinRules, f, fillConfigDefaults, fromConfigFields, hasConfigPath, isConfigBranch, isLeafVisible, resolveAutoConfig, resolveConfigSchema, schemaNodeAtPath, titleCase, useConfigSchema, useResolvedConfig, valueAtPath, withValueAtPath } from './config/index.js';
17
- import { b as ConfigSchema, a as ConfigField, c as ConfigRule, d as ControlRenderer } from './_dts/types-DzoNY1pO.js';
18
- export { A as Annotations, B as BranchAnnotations, e as BranchOptions, f as CheckboxField, g as ColorField, h as ConfigBranch, i as ConfigEntry, j as ConfigFieldBase, k as ConfigFieldType, l as ConfigNode, m as ConfigOf, n as ConfigOption, C as ConfigPath, o as ConfigRuleContext, p as ConfigShape, E as EntryValue, I as InferConfig, L as LeafPatch, N as NodeOptions, q as NodeValue, r as NumberField, R as ResolvedConfig, S as SectionSpec, s as SelectField, t as SelectOption, u as SliderField, T as TextField, V as ValueAtPath } from './_dts/types-DzoNY1pO.js';
9
+ import { S as StanceProps } from './_dts/PrefsRow.d-DFpPIeIC.js';
10
+ import { DrawCommand, SceneNode, View, Path, FillStyle, ScreenLength, StrokeAlign, StyledRun, TextStyle, TextVerticalAlign, Stroke, BuiltinToolId } from '@weasel-js/core';
11
+ import { w as WorldRect, A as AnnotationData, x as AnnotationMeaning, y as MarkScene, z as CaptureSource, B as CaptureOptions, E as CaptureResult, F as AnnotationTarget, G as AnnotationsApi, H as AnnotationsCapability, J as TrialInfo, K as TrialTool, N as AnnotationKind, m as ViewTransform, O as Instrument, t as InstrumentList, s as LabMode, Q as LabDensity, R as TrialContribution, d as StorageAdapter, T as TrialRecord } from './_dts/frac-DTRq7Xpb.js';
12
+ export { X as Annotation, Y as AnnotationInit, Z as AnnotationPatch, _ as AnnotationQuery, $ as AnnotationStatus, a0 as AnnotationStoreOptions, a1 as AnnotationTargetInfo, a2 as Auto, a3 as CanvasCapability, a4 as CanvasLayer, a5 as CaptureDeps, a6 as ContributionBase, C as CreateLabStoreOptions, D as DEFAULT_FRAME, q as DragDropCapability, o as DragFeedback, a7 as FracPoint, a8 as FracRect, a9 as HitResult, aa as IconComponent, ab as LOUPE_DEFAULTS, e as LabDocument, f as LabStoreState, L as LayerCapability, a as LayerDescriptor, ac as LoupeCapability, ad as LoupeDeclaration, ae as LoupeRenderArgs, P as PaletteItem, n as Point, af as RegionContribution, ag as RenderContext, ah as ResolvedLoupe, g as SavedSnapshot, ai as SerializedAnnotations, S as SerializedTrial, aj as SidebarSection, ak as SidebarSlotContext, al as StageCapability, am as StatusReadout, h as StorageChange, an as SystemEvent, ao as ToolCapability, ap as ToolItem, aq as ToolSlotContext, ar as ToolbarItem, as as TrialChromeContext, at as TrialRegion, i as TrialStateHandle, au as UndoCapability, U as UndoStack, j as UndockedPanel, k as UndockedPanels, av as ViewportControl, V as ViewportSize, W as WorldFrame, b as WorldSpec, aw as annotationsFromJSON, c as applyCamera, ax as auto, ay as createAnnotationScene, az as createAnnotationStore, l as dockPanel, aA as fracContains, aB as fracEncloses, aC as fracToWorld, aD as isAuto, p as panelKey, r as resolveFrame, aE as resolveLoupe, aF as roundFrac, u as undockPanel, aG as worldToFrac } from './_dts/frac-DTRq7Xpb.js';
13
+ export { C as CanvasStack, a as CanvasStackProps, P as PanZoomHandlers, S as Stage, b as StageProps, U as UsePanZoomOptions, Z as ZoomAtOptions, c as centerOn, f as fitStage, s as screenToWorld, u as usePanZoom, w as worldToScreen, z as zoomAt } from './_dts/usePanZoom-Bq73pwFe.js';
14
+ export { C as CanvasLayerDescriptor, a as CanvasStackContext, b as CanvasStackContextValue, c as CanvasStackSurface } from './_dts/CanvasStackContext-DQgcH1ny.js';
15
+ import { L as LabContribution } from './_dts/index-B0--8PEM.js';
16
+ export { A as AddTrialOptions, a as LabAsideRegion, b as LabChromeContext, c as LabContext, d as LabContextValue, e as LabFooterRegion, f as LabHeaderRegion, g as LabRegion, h as LabRegionProps, i as LabSidebarRegion, P as PaletteRegion, j as PaletteRegionProps, S as SidebarRegion, k as SidebarRegionProps, l as StatusRegion, m as StatusRegionProps, T as TitleBarPlacement, n as TitleBarRegion, o as TitleBarRegionProps, p as ToolbarRegion, q as ToolbarRegionProps, V as ViewportRegion, r as ViewportRegionProps, s as addTrial, t as builtinContributions, u as cloneTrial, v as closeTrial, w as contributionsIn, x as labContributions, y as mergeContributions, z as reorderTrials, B as resetTrial, C as suppressContributions, D as toolContributions, E as useLabChromeContext, F as useLabContext } from './_dts/index-B0--8PEM.js';
17
+ export { BaseNode, BooleanNode, ColorNode, CustomNode, EnumNode, GroupNode, ListNode, NumberNode, SectionTree, StringNode, ValueNode, applyRules, autoPathsOf, builtinRules, f, fillConfigDefaults, fromConfigFields, hasConfigPath, isConfigBranch, isLeafVisible, resolveAutoConfig, resolveConfigSchema, schemaNodeAtPath, sectionTree, titleCase, useConfigSchema, useResolvedConfig, valueAtPath, withValueAtPath } from './config/index.js';
18
+ import { c as ConfigSchema, b as ConfigField, d as ConfigRule, C as ControlRenderer } from './_dts/types-B7y8hX1D.js';
19
+ export { A as Annotations, B as BranchAnnotations, e as BranchOptions, f as CheckboxField, g as ColorField, h as ConfigBranch, i as ConfigEntry, j as ConfigFieldBase, k as ConfigFieldType, l as ConfigNode, m as ConfigOf, n as ConfigOption, a as ConfigPath, o as ConfigRuleContext, p as ConfigShape, E as EntryValue, I as InferConfig, L as LeafPatch, N as NodeOptions, q as NodeValue, r as NumberField, R as ResolvedConfig, S as SectionSpec, s as SelectField, t as SelectOption, u as SliderField, T as TextField, V as ValueAtPath } from './_dts/types-B7y8hX1D.js';
20
+ export { I as InDialogOptions, i as inDialog, s as summarizeValue } from './_dts/inDialog-D5ZKGjiD.js';
19
21
  import { J as JobHandle } from './_dts/types-DJ79Tg5J.js';
20
22
  export { a as JobCapability, b as JobEvent, c as JobFailure, d as JobStatus } from './_dts/types-DJ79Tg5J.js';
21
23
  export { UseJobOptions, useJob } from './job/index.js';
22
- export { LayerList, LayerListProps, LayerTreeNode } from './layers/index.js';
24
+ import { Theme, ColorList } from '@weasel-js/theme';
23
25
  export { CanvasLoupe, CanvasLoupeProps, DomLoupe, DomLoupeProps, LOUPE_MAGNIFY_ID, LOUPE_PEEK_ID, LensCamera, LoupeBubble, LoupeBubbleProps, LoupeGestures, LoupeGesturesProps, LoupeInputApi, LoupeState, SourceRect, TrialLoupe, TrialLoupeProps, UseLoupeOptions, createLoupeActions, drawCanvasLens, lensCamera, lensSourceRect, sampleStack, useLoupe } from './loupe/index.js';
24
26
  import { SplitProps } from './primitives/index.js';
25
- export { FloatingPanel, FloatingPanelProps, FpsMeter, JobProgress, JobProgressProps, Legend, LegendEntry, LegendMark, LegendProps, ScaleIndicator, ScaleIndicatorProps, Sidebar, SidebarProps, Split, StatusBar, StatusBarProps, StatusBarSectionProps, Toolbar, ToolbarButtonProps, ToolbarGroupProps, ToolbarProps, ZoomControl, ZoomControlProps } from './primitives/index.js';
26
- export { C as CURRENT_DOCUMENT_VERSION, I as IndexedDbAdapterOptions, b as LabStoreContext, c as LabStoreProvider, O as OpenLabStoreOptions, d as OpenedLabStore, P as PersistedStateOptions, e as Persistence, f as PersistenceProps, R as RecordCache, g as RecordChange, T as TrialIdContext, h as TrialIdProvider, i as createIndexedDbAdapter, k as createMemoryAdapter, l as indexedDbAdapter, m as labDocumentKey, n as localStorageAdapter, o as noneAdapter, p as openLabStore, q as quarantineKey, s as sessionStorageAdapter, u as urlHashAdapter, r as useLabStore, t as usePersistedState, v as useTrialId, w as useTrialState } from './_dts/useTrialState-uLlmaccn.js';
27
+ export { FloatingPanel, FloatingPanelProps, FpsMeter, JobProgress, JobProgressProps, Legend, LegendEntry, LegendMark, LegendProps, ScaleIndicator, ScaleIndicatorProps, Split, StatusBar, StatusBarProps, StatusBarSectionProps, Toolbar, ToolbarButtonProps, ToolbarGroupProps, ToolbarProps, ZoomControl, ZoomControlProps } from './primitives/index.js';
28
+ export { C as CURRENT_DOCUMENT_VERSION, I as IndexedDbAdapterOptions, b as LabStoreContext, c as LabStoreProvider, O as OpenLabStoreOptions, d as OpenedLabStore, P as PersistedStateOptions, e as Persistence, f as PersistenceProps, R as RecordCache, g as RecordChange, T as TrialIdContext, h as TrialIdProvider, i as createIndexedDbAdapter, k as createMemoryAdapter, l as indexedDbAdapter, m as labDocumentKey, n as localStorageAdapter, o as noneAdapter, p as openLabStore, q as quarantineKey, s as sessionStorageAdapter, u as urlHashAdapter, r as useLabStore, t as usePersistedState, v as useTrialId, w as useTrialState } from './_dts/useTrialState-CP4jfuKl.js';
27
29
  export { Box, Rect, SurfaceCanvasContext, SurfaceCanvases, SurfaceClear, SurfaceContext, SurfaceFrame, SurfaceHandle, SurfaceLayer, TilePainter, UseTiledSurfaceOptions, composeRects, rectsEqual, toDeviceRect, useSurface, useSurfaceCanvas, useSurfaceOptional, useSurfaceTile, useTileId, useTiledSurface } from './surface/index.js';
28
- import { Theme } from '@weasel-js/theme';
29
30
  export { EventBus, EventListener, clearUndo, createEventBus, emptyStack, pushSnapshot, redo, undo } from './undo/index.js';
30
31
  import 'react-aria-components';
31
- import './_dts/PrefsForm.d-DPy9I8It.js';
32
+ import './_dts/number.d-OeQYQoUO.js';
32
33
  import 'windease';
33
34
  import 'zustand/vanilla';
34
35
 
@@ -79,77 +80,17 @@ interface CurveFieldProps {
79
80
  */
80
81
  declare function CurveField({ values, min, max, step, width, height, defaults, onChange, marks, }: CurveFieldProps): react_jsx_runtime.JSX.Element;
81
82
 
82
- /** Props for `<Subpanel>`. */
83
- interface SubpanelProps extends PropertyMetricProps {
84
- title: ReactNode;
85
- children: ReactNode;
86
- className?: string;
87
- }
88
- /** A typographic divider inside a property list: a small title flanked by a
89
- * rule. Purely a heading — use `<PropertyGroup>` for a bordered section. */
90
- declare function Subpanel({ title, children, className, density, align }: SubpanelProps): react_jsx_runtime.JSX.Element;
91
- /** Props for `<EffectCard>`. */
92
- interface EffectCardProps {
93
- /** Card title rendered in the title bar (e.g. effect kind label or a select). */
94
- title: ReactNode;
95
- /** Optional badge/chip displayed before the remove button (e.g. primary value summary). */
96
- primary?: ReactNode;
97
- /** Optional accent color in any CSS color form. Sets --wzl-effect-card-accent on the card. */
98
- accent?: string;
99
- /** Optional ordinal badge that doubles as the drag handle (used by tail cards in SB). */
100
- index?: number;
101
- expanded?: boolean;
102
- onToggleExpanded?: () => void;
103
- onRemove?: () => void;
104
- /**
105
- * Drag-handle wiring. When provided, an inline handle (⋮⋮ icon or `index`)
106
- * activates HTML5 drag on press. Consumer owns the drag/drop coordination —
107
- * see EffectCardList for the batteries-included wrapper.
108
- */
109
- draggable?: boolean;
110
- onPressHandle?: () => void;
111
- onReleaseHandle?: () => void;
112
- onDragStart?: (e: React.DragEvent<HTMLDivElement>) => void;
113
- onDragEnd?: (e: React.DragEvent<HTMLDivElement>) => void;
114
- onDragOver?: (e: React.DragEvent<HTMLDivElement>) => void;
115
- onDragLeave?: (e: React.DragEvent<HTMLDivElement>) => void;
116
- onDrop?: (e: React.DragEvent<HTMLDivElement>) => void;
117
- dragging?: boolean;
118
- children?: ReactNode;
119
- className?: string;
120
- }
121
- /** An accented, collapsible card for one item in a list of like things —
122
- * effects, layers, tails. The accent color rebinds the theme accent token
123
- * within the card, so its controls pick it up too. */
124
- declare function EffectCard({ title, primary, accent, index, expanded, onToggleExpanded, onRemove, draggable, onPressHandle, onReleaseHandle, onDragStart, onDragEnd, onDragOver, onDragLeave, onDrop, dragging, children, className, }: EffectCardProps): react_jsx_runtime.JSX.Element;
125
- /** The minimum an item must carry to appear in an `<EffectCardList>`. */
126
- interface EffectCardListItem {
127
- id: string | number;
128
- }
129
- /** Props for `<EffectCardList>`. */
130
- interface EffectCardListProps<T extends EffectCardListItem> {
131
- items: ReadonlyArray<T>;
132
- renderItem: (item: T, helpers: {
133
- isExpanded: boolean;
134
- isDragging: boolean;
135
- toggleExpanded: () => void;
136
- cardProps: Pick<EffectCardProps, 'expanded' | 'dragging' | 'draggable' | 'onToggleExpanded' | 'onPressHandle' | 'onReleaseHandle' | 'onDragStart' | 'onDragEnd' | 'onDragOver' | 'onDragLeave' | 'onDrop'>;
137
- }) => ReactNode;
138
- onReorder: (sourceId: T['id'], targetId: T['id'], position: 'before' | 'after') => void;
139
- /** Optional rendered when the list is empty. */
140
- empty?: ReactNode;
141
- /** IDs to render expanded on first mount. Defaults to all collapsed. */
142
- defaultExpandedIds?: ReadonlyArray<T['id']>;
143
- }
144
- /** A drag-reorderable list of `<EffectCard>`s. Owns the expanded and dragging
145
- * state and hands it back to `renderItem`, so the caller only supplies each
146
- * card's contents. */
147
- declare function EffectCardList<T extends EffectCardListItem>({ items, renderItem, onReorder, empty, defaultExpandedIds, }: EffectCardListProps<T>): react_jsx_runtime.JSX.Element;
148
-
149
83
  /** Props for `<PropertyGroup>`. */
150
- interface PropertyGroupProps extends PropertyMetricProps {
84
+ interface PropertyGroupProps extends PropertyMetricProps, StanceProps {
151
85
  /** Title rendered between two rules at the top of the group. */
152
86
  title: ReactNode;
87
+ /** Before the title: a drag handle, an ordinal. Clicks here do not fold the group. */
88
+ leading?: ReactNode;
89
+ /** After the title: a summary of the group's value, a remove button. Clicks here do not fold the group. */
90
+ actions?: ReactNode;
91
+ /** Help text for the whole group, drawn under the title and above the
92
+ * rows. `<PropertyRow description>` covers the per-row case. */
93
+ description?: ReactNode;
153
94
  /** When true the group renders nothing — useful for conditional sections. */
154
95
  hidden?: boolean;
155
96
  /**
@@ -169,6 +110,9 @@ interface PropertyGroupProps extends PropertyMetricProps {
169
110
  onCollapsedChange?: (next: boolean) => void;
170
111
  children: ReactNode;
171
112
  className?: string;
113
+ /** Take the whole width of a packed grid, like `<PropertyRow span>`: a group
114
+ * lays its own rows out, so half a column leaves them overlapping. */
115
+ span?: boolean;
172
116
  /** How rows pack into the 2-column grid — see `<PropertyList pack>`. */
173
117
  pack?: PropertyListPack;
174
118
  }
@@ -178,9 +122,24 @@ interface PropertyGroupProps extends PropertyMetricProps {
178
122
  * inside a fill effect's controls).
179
123
  *
180
124
  * A collapsible group keeps its rows mounted and hides them, so a control's
181
- * local state survives being folded away.
125
+ * local state survives being folded away. `stance` and `tone` work as on
126
+ * `<PropertyPanel>`; a tone also draws the group's leading edge in it, which
127
+ * is how a list of like groups — effects, tails — tells its members apart.
128
+ * `leading` and `actions` put a handle and controls in the title row, and the
129
+ * groups of a `<PropertyList>` reorder with `useReorderDragList`.
182
130
  */
183
- declare function PropertyGroup({ title, hidden, collapsible, defaultCollapsed, collapsed, onCollapsedChange, children, className, pack, density, align, }: PropertyGroupProps): react_jsx_runtime.JSX.Element | null;
131
+ declare function PropertyGroup({ title, leading, actions, description, hidden, collapsible, defaultCollapsed, collapsed, onCollapsedChange, children, className, span, pack, density, align, stance, tone, }: PropertyGroupProps): react_jsx_runtime.JSX.Element | null;
132
+
133
+ /** Props for `<Subpanel>`. */
134
+ interface SubpanelProps extends PropertyMetricProps, StanceProps {
135
+ title: ReactNode;
136
+ children: ReactNode;
137
+ className?: string;
138
+ }
139
+ /** A typographic divider inside a property list: a small title flanked by a
140
+ * rule. Purely a heading — use `<PropertyGroup>` for a bordered section. A
141
+ * stance or tone colors the title and rule. */
142
+ declare function Subpanel({ title, children, className, density, align, stance, tone }: SubpanelProps): react_jsx_runtime.JSX.Element;
184
143
 
185
144
  /** A design token as `TokenPanel` edits it. */
186
145
  interface TokenEntry {
@@ -195,6 +154,30 @@ interface TokenEntry {
195
154
  overridden?: boolean;
196
155
  description?: string;
197
156
  }
157
+ /** How a scale's steps follow from its base: one multiplier per step, a constant ratio, or a constant step. */
158
+ type TokenScaleRule = {
159
+ kind: 'factors';
160
+ factors: readonly number[];
161
+ } | {
162
+ kind: 'ratio';
163
+ ratio: number;
164
+ } | {
165
+ kind: 'step';
166
+ step: number;
167
+ };
168
+ /** A group whose steps are generated from a base, so the panel edits the base and the rule rather than each step. */
169
+ interface TokenScale {
170
+ /** The generated tokens, smallest first. Anything else in the group draws as an ordinary step. */
171
+ tokens: readonly string[];
172
+ base: number;
173
+ rule: TokenScaleRule;
174
+ }
175
+ /**
176
+ * The same scale under another rule, fitted to the amounts its steps have now.
177
+ * A ratio or step counts from the first step, so switching to one moves the
178
+ * base there.
179
+ */
180
+ declare function refitScale(scale: TokenScale, kind: TokenScaleRule['kind'], amounts: readonly number[]): TokenScale;
198
181
  type TokenCategory = 'color' | 'type' | 'size' | 'motion' | 'depth' | 'other';
199
182
  /** A DTCG type read off the shape of a value, for a token that arrives without one. `'string'` when nothing fits. */
200
183
  declare function inferTokenType(value: string): string;
@@ -208,9 +191,13 @@ interface TokenPanelProps {
208
191
  /** Sections held closed, by category. Omit to let the panel keep that state itself. */
209
192
  collapsed?: Readonly<Partial<Record<TokenCategory, boolean>>>;
210
193
  onCollapsedChange?: (category: TokenCategory, collapsed: boolean) => void;
194
+ /** Groups generated from a base, by group name. Such a group edits its base and rule above its steps. */
195
+ scales?: Readonly<Record<string, TokenScale>>;
196
+ /** A scale's new base or rule. The panel does not regenerate the steps; the consumer does, through `onChange`. */
197
+ onScaleChange?: (group: string, scale: TokenScale) => void;
211
198
  /** Files a token under a section. Defaults to `tokenCategory`. */
212
199
  categorize?: (token: TokenEntry) => TokenCategory;
213
- /** The fewest colors sharing a group that draw as one row of swatches. Default 3. */
200
+ /** The fewest colors, or sizes, sharing a group that draw as one row of swatches or one grid of steps. Default 3. */
214
201
  familySize?: number;
215
202
  /**
216
203
  * Row layout. `tight` puts a token on one line — name, control, Reset — with the
@@ -223,12 +210,14 @@ interface TokenPanelProps {
223
210
  }
224
211
  /**
225
212
  * Edits a set of design tokens by type: collapsible sections by category, a
226
- * color group drawn as one row of swatches sized to fit, and a control for each
213
+ * color group drawn as one row of swatches sized to fit, a group of sizes drawn
214
+ * as one grid of numbers labeled by step — with its base and rule above it when
215
+ * `scales` says how it is generated — and a control for each
227
216
  * type — a number with its unit for dimensions and durations, the nine weights
228
217
  * for a font weight, a curve beside a `cubic-bezier()`, a swatch beside a color,
229
218
  * and text for everything else.
230
219
  */
231
- declare function TokenPanel({ tokens, onChange, collapsed, onCollapsedChange, categorize, familySize, density, className, }: TokenPanelProps): react_jsx_runtime.JSX.Element;
220
+ declare function TokenPanel({ tokens, onChange, collapsed, onCollapsedChange, scales, onScaleChange, categorize, familySize, density, className, }: TokenPanelProps): react_jsx_runtime.JSX.Element;
232
221
 
233
222
  /** Props for {@link Jog}. */
234
223
  interface JogProps {
@@ -395,6 +384,8 @@ declare function seenFrom(config: unknown, keys: readonly string[]): Record<stri
395
384
  */
396
385
  declare function isStale(seen: Readonly<Record<string, unknown>> | undefined, config: unknown, keys: readonly string[]): boolean;
397
386
 
387
+ type Mat3 = readonly [number, number, number, number, number, number];
388
+
398
389
  /**
399
390
  * Public types for `@weasel-js/svg`. The package exposes a flat,
400
391
  * discriminated-union node model (`SvgNode`) that mirrors the SVG element
@@ -442,10 +433,14 @@ interface NamespacedElement {
442
433
  children?: Record<string, NamespacedElement[]>;
443
434
  }
444
435
  /**
445
- * 2x3 affine matrix in column-major form (SVG's `matrix(a b c d e f)`
446
- * order). Maps `[x', y'] = [a*x + c*y + e, b*x + d*y + f]`.
436
+ * 2x3 affine matrix in SVG's `matrix(a b c d e f)` order, mapping
437
+ * `[x', y'] = [a*x + c*y + e, b*x + d*y + f]`.
438
+ *
439
+ * The same order the kernel's affine tier uses, so this is that type under
440
+ * the name the SVG spec gives it — not a parallel one. An `SvgGroupNode`'s
441
+ * transform and a geom `Mat3` are interchangeable without a conversion.
447
442
  */
448
- type Matrix = readonly [number, number, number, number, number, number];
443
+ type Matrix = Mat3;
449
444
  /**
450
445
  * FillStyle description in the SVG sense — either explicit `none`, a solid
451
446
  * color, or a reference to a weasel-native gradient `FillStyle`. Solid colors
@@ -466,11 +461,9 @@ type SvgPaint = {
466
461
  interface SvgStroke {
467
462
  paint: SvgPaint;
468
463
  /** World units, or `{ px }` for a width that holds its rendered thickness
469
- * however the document is scaled — SVG's `vector-effect="non-scaling-stroke"`,
470
- * and the same unit system as the kit's `Stroke.width`. */
471
- width: number | {
472
- px: number;
473
- };
464
+ * however the document is scaled — SVG's `vector-effect="non-scaling-stroke"`.
465
+ * Literally the kit's own unit, not a second spelling of it. */
466
+ width: ScreenLength;
474
467
  opacity?: number;
475
468
  /** `stroke-linecap`. Default per SVG spec is `'butt'`. */
476
469
  cap?: 'butt' | 'round' | 'square';
@@ -775,7 +768,8 @@ declare function validateConfigSchema(fields: ConfigField[]): ValidationResult;
775
768
 
776
769
  /** One page in a project's set of labs. */
777
770
  interface LabPage {
778
- /** The page's own URL, and how the switcher knows which page is open. */
771
+ /** The page's own URL, and how the switcher knows which page is open. A
772
+ * hash route (`#/dev/tools`) names a page on the current document. */
779
773
  href: string;
780
774
  label: string;
781
775
  }
@@ -794,7 +788,11 @@ interface LabSwitcherProps {
794
788
  * Matched on the end of the path so a query string, a trailing slash or a
795
789
  * leftover `.html` cannot lose it: a project whose dev server maps `/stats`
796
790
  * to `stats.html` serves both spellings, and a bookmark from before the URLs
797
- * lost their extension still resolves to the same page. */
791
+ * lost their extension still resolves to the same page.
792
+ *
793
+ * A page whose `href` carries a hash is a route on a single document and wins
794
+ * when the path's hash is that route or one under it. A page without one
795
+ * ignores the hash, so an in-page anchor does not lose it. */
798
796
  declare function currentPage(path: string, pages: readonly LabPage[]): number;
799
797
  /** A project's lab title, doubling as the way to reach its other labs.
800
798
  *
@@ -815,15 +813,24 @@ interface LabBaseProps {
815
813
  instruments: InstrumentList;
816
814
  defaultInstrument: string;
817
815
  mode?: LabMode;
816
+ /** How much room the lab's chrome takes. Default `'comfortable'`; a lab whose
817
+ * window is the whole app, rather than a panel beside one, reads better at
818
+ * `'roomy'`. The trials' own contents are unaffected. */
819
+ density?: LabDensity;
820
+ /** The theme the lab's chrome resolves against, applied at `mode` and
821
+ * `density`. Default `interstellarTheme`; extend it rather than replace it to
822
+ * keep the lab's look while changing a few tokens. */
823
+ theme?: Theme;
818
824
  /** Rendered while a stored lab loads. Default: the lab's empty shell. */
819
825
  fallback?: ReactNode;
820
826
  /**
821
- * Optional list of CSS colors used to compose the interstellar theme's
822
- * cosmic backdrop. Each color becomes one radial-gradient blob on the
823
- * dark void base. Order maps to a fixed spread of positions; extras wrap
824
- * around. Ignored unless the resolved mode is dark.
827
+ * Colors composing the interstellar theme's cosmic backdrop. Each becomes
828
+ * one radial-gradient blob on the dark void base, in a fixed spread of
829
+ * positions; extras wrap around. A theme ramp resolves against the lab's
830
+ * theme; a function list gives as many blobs as there are positions.
831
+ * Ignored unless the resolved mode is dark.
825
832
  */
826
- nebula?: readonly string[];
833
+ nebula?: ColorList;
827
834
  title?: string;
828
835
  /** The project's other labs. Given two or more, the title becomes the way to
829
836
  * reach them — the same switcher `<LabShell>` renders, so a lab reached from
@@ -870,7 +877,22 @@ type LabProps = LabBaseProps & ({
870
877
  });
871
878
  /** The lab runtime: opens the store, provides it, and renders one trial
872
879
  * per record in a grid. Each trial runs one of `instruments`. */
873
- declare function Lab(props: LabProps): string | number | bigint | boolean | react_jsx_runtime.JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | null;
880
+ declare function Lab(props: LabProps): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null;
881
+
882
+ /** Props for `<LabBoundary>`. */
883
+ interface LabBoundaryProps {
884
+ children: ReactNode;
885
+ }
886
+ /**
887
+ * Renders its children as though no lab, trial or theme were above them: every context a `<Lab>` or a
888
+ * `<Trial>` publishes reads as absent below it, so a labkit piece mounted inside a trial behaves the way it
889
+ * does on a bare page. A `<LabRoot>` under it applies its own theme instead of deferring to the lab's, and a
890
+ * `usePersistedState` under it keeps local state instead of writing into the enclosing lab's records.
891
+ *
892
+ * For a host that shows arbitrary content inside a trial, such as a component workshop; a lab's own chrome
893
+ * never needs it.
894
+ */
895
+ declare function LabBoundary({ children }: LabBoundaryProps): react_jsx_runtime.JSX.Element;
874
896
 
875
897
  /** Props for `<LabPalette>`. */
876
898
  interface LabPaletteProps {
@@ -920,11 +942,14 @@ interface LabShellProps {
920
942
  /** The path the switcher reads to mark the open page. Defaults to the
921
943
  * current location. */
922
944
  path?: string;
945
+ /** Set as `document.title` while the shell is mounted, and the previous
946
+ * title restored after. Omitted, the document's title is left alone. */
947
+ documentTitle?: string;
923
948
  }
924
949
  /** Page frame for a lab: a titled header, a body, and an optional footer,
925
950
  * themed for the resolved color mode. Presentational only — use `<Lab>` when
926
951
  * the trial runtime is wanted too. */
927
- declare function LabShell({ title, children, header, footer, mode, pages, path, }: LabShellProps): react_jsx_runtime.JSX.Element;
952
+ declare function LabShell({ title, children, header, footer, mode, pages, path, documentTitle, }: LabShellProps): react_jsx_runtime.JSX.Element;
928
953
 
929
954
  /** A tile's persisted extent, keyed by the id its caller gave it. Grid resizes
930
955
  * write `span`; `size` is here because a strategy swap would write that. */
@@ -1009,8 +1034,8 @@ declare const DEFAULT_VIEW: ViewTransform2D;
1009
1034
  declare function as2DView(view: unknown): ViewTransform2D | null;
1010
1035
 
1011
1036
  /**
1012
- * labkit's theme: a cosmic dark and a warm parchment light, extending the
1013
- * built-in weasel theme. A pins-only theme definition: nothing in it is
1037
+ * labkit's theme: a cosmic dark over the built-in weasel theme, whose light
1038
+ * mode it keeps as is. A pins-only theme definition: nothing in it is
1014
1039
  * derived, so it loads without the engine.
1015
1040
  */
1016
1041
  declare const interstellarTheme: Theme;
@@ -1082,5 +1107,5 @@ interface TrialChromeProps {
1082
1107
  * each region its slice. */
1083
1108
  declare function TrialChrome({ trialId, record, instrument, isLastTrial, undoBindings, job, loupe, trialChrome, chrome, suppress, activeToolId, setActiveTool, children, }: TrialChromeProps): react_jsx_runtime.JSX.Element;
1084
1109
 
1085
- export { ANNOTATION_TOOLS, ANNOTATION_WEASEL_TOOLS, AnnotationData, AnnotationKind, AnnotationMeaning, AnnotationOverlay, AnnotationTarget, AnnotationTargets, AnnotationsApi, AnnotationsCapability, AnnotationsContext, CaptureOptions, CaptureResult, CaptureSource, CloseIcon, CollapseIcon, ConfigField, ConfigRule, ConfigSchema, ControlRenderer, CurveField, DEFAULT_VIEW, EffectCard, EffectCardList, ExpandIcon, ExportMenu, IconProps, Instrument, InstrumentList, JobHandle, Jog, Lab, LabContribution, LabMode, LabPalette, LabRoot, LabShell, LabSwitcher, MarkList, MarkScene, PauseIcon, PlayIcon, PropertyGroup, PropertyListPack, ResetIcon, SPECIMEN_SECTIONS, Specimen, SplitProps, StepBackIcon, StepForwardIcon, StopIcon, StorageAdapter, Subpanel, TokenPanel, Trial, TrialBody, TrialChrome, TrialContribution, TrialInfo, TrialRecord, TrialTool, ViewTransform, Workspace, WorldRect, annotationToolInfo, as2DView, capturePlan, captureTarget, composeCaptureSvg, createMarkDrawOne, currentPage, defineInstrument, fitView, fromWeaselView, inferTokenType, interstellarTheme, isStale, markCommands, markSvgNodes, resolveMarkStyle, seenFrom, toWeaselView, useAnnotations, useAnnotationsOptional, validateConfigSchema };
1086
- export type { AnnotationOverlayProps, AnnotationTargetsProps, AnnotationToolInfo, CaptureArgs, CapturePlan, ComposeSvgArgs, ContentSize, CurveFieldProps, CurveMark, EffectCardListItem, EffectCardListProps, EffectCardProps, InstrumentSpec, JogProps, LabPage, LabPaletteProps, LabProps, LabRootProps, LabShellProps, LabSwitcherProps, MarkDrawOptions, MarkListProps, MarkStyle, PaintableMark, PaneSize, PanelDescriptor, PropertyGroupProps, SubpanelProps, TokenCategory, TokenEntry, TokenPanelProps, TrialBodyProps, TrialChromeProps, TrialLayout, TrialProps, UndoBindings, ValidationResult, ViewTransform2D, WorkspaceProps };
1110
+ export { ANNOTATION_TOOLS, ANNOTATION_WEASEL_TOOLS, AnnotationData, AnnotationKind, AnnotationMeaning, AnnotationOverlay, AnnotationTarget, AnnotationTargets, AnnotationsApi, AnnotationsCapability, AnnotationsContext, CaptureOptions, CaptureResult, CaptureSource, CloseIcon, CollapseIcon, ConfigField, ConfigRule, ConfigSchema, ControlRenderer, CurveField, DEFAULT_VIEW, ExpandIcon, ExportMenu, IconProps, Instrument, InstrumentList, JobHandle, Jog, Lab, LabBoundary, LabContribution, LabDensity, LabMode, LabPalette, LabRoot, LabShell, LabSwitcher, MarkList, MarkScene, PauseIcon, PlayIcon, PropertyGroup, PropertyListPack, ResetIcon, SPECIMEN_SECTIONS, Specimen, SplitProps, StepBackIcon, StepForwardIcon, StopIcon, StorageAdapter, Subpanel, TokenPanel, Trial, TrialBody, TrialChrome, TrialContribution, TrialInfo, TrialRecord, TrialTool, ViewTransform, Workspace, WorldRect, annotationToolInfo, as2DView, capturePlan, captureTarget, composeCaptureSvg, createMarkDrawOne, currentPage, defineInstrument, fitView, fromWeaselView, inferTokenType, interstellarTheme, isStale, markCommands, markSvgNodes, refitScale, resolveMarkStyle, seenFrom, toWeaselView, useAnnotations, useAnnotationsOptional, validateConfigSchema };
1111
+ export type { AnnotationOverlayProps, AnnotationTargetsProps, AnnotationToolInfo, CaptureArgs, CapturePlan, ComposeSvgArgs, ContentSize, CurveFieldProps, CurveMark, InstrumentSpec, JogProps, LabBoundaryProps, LabPage, LabPaletteProps, LabProps, LabRootProps, LabShellProps, LabSwitcherProps, MarkDrawOptions, MarkListProps, MarkStyle, PaintableMark, PaneSize, PanelDescriptor, PropertyGroupProps, SubpanelProps, TokenCategory, TokenEntry, TokenPanelProps, TokenScale, TokenScaleRule, TrialBodyProps, TrialChromeProps, TrialLayout, TrialProps, UndoBindings, ValidationResult, ViewTransform2D, WorkspaceProps };