@weasel-js/labkit 1.6.1 → 1.7.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 (162) hide show
  1. package/dist/_dts/{CanvasStackContext-Wo6OwIVM.d.ts → CanvasStackContext-D2jnIwfk.d.ts} +1 -1
  2. package/dist/_dts/{LayerList.d-BoELAMsM.d.ts → LayerList.d-DiuEArKq.d.ts} +2 -2
  3. package/dist/_dts/PrefsRow.d-TOZ7BgD9.d.ts +79 -0
  4. package/dist/_dts/PropertyPanel.d-D-1paCbE.d.ts +141 -0
  5. package/dist/_dts/{Select.d-Cr8-zoup.d.ts → Select.d-Bensr_MT.d.ts} +11 -1
  6. package/dist/_dts/{Stage-DWBBi8IU.d.ts → Stage-CCWfQQWM.d.ts} +58 -18
  7. package/dist/_dts/index-B2Yj5aA0.d.ts +274 -0
  8. package/dist/_dts/{index-CKyX0ME_.d.ts → index-CsYqUHD3.d.ts} +2 -2
  9. package/dist/_dts/{types-DTuViBvc.d.ts → types-CRPSGFAp.d.ts} +13 -4
  10. package/dist/_dts/{types-B7yBTTF9.d.ts → types-CSm9jgol.d.ts} +2 -2
  11. package/dist/_dts/{useTrialState-CMaV6UD4.d.ts → useTrialState-CTZPgeZ7.d.ts} +1 -1
  12. package/dist/canvas/index.d.ts +6 -6
  13. package/dist/canvas/index.js +2 -2
  14. package/dist/chrome/index.d.ts +5 -5
  15. package/dist/chrome/index.js +8 -8
  16. package/dist/{chunk-QGMOA2YE.js → chunk-275JRRVD.js} +67 -70
  17. package/dist/chunk-275JRRVD.js.map +1 -0
  18. package/dist/{chunk-KHK5FGER.js → chunk-4LJSC7MB.js} +8 -10
  19. package/dist/chunk-4LJSC7MB.js.map +1 -0
  20. package/dist/{chunk-SLAQPUI4.js → chunk-7BO7HNGF.js} +5 -5
  21. package/dist/{chunk-SLAQPUI4.js.map → chunk-7BO7HNGF.js.map} +1 -1
  22. package/dist/chunk-CZZPXUOU.js +3 -0
  23. package/dist/{chunk-SBXNQW4G.js.map → chunk-CZZPXUOU.js.map} +1 -1
  24. package/dist/{chunk-6FLXL3I7.js → chunk-FMK7UQ6V.js} +19 -4
  25. package/dist/chunk-FMK7UQ6V.js.map +1 -0
  26. package/dist/{chunk-O6FFFOHS.js → chunk-FZ7YFQN7.js} +16 -8
  27. package/dist/chunk-FZ7YFQN7.js.map +1 -0
  28. package/dist/{chunk-GHGO52SO.js → chunk-GOZLNM4L.js} +5 -5
  29. package/dist/{chunk-GHGO52SO.js.map → chunk-GOZLNM4L.js.map} +1 -1
  30. package/dist/{chunk-4TT3PNPR.js → chunk-I5DUQ5HM.js} +33 -36
  31. package/dist/chunk-I5DUQ5HM.js.map +1 -0
  32. package/dist/{chunk-NEXR37YJ.js → chunk-J7OWWTCW.js} +4 -5
  33. package/dist/chunk-J7OWWTCW.js.map +1 -0
  34. package/dist/{chunk-IRTGUQ5O.js → chunk-KMJ7RWD3.js} +16 -6
  35. package/dist/chunk-KMJ7RWD3.js.map +1 -0
  36. package/dist/{chunk-S4NCI32V.js → chunk-M7HP3FTK.js} +4 -4
  37. package/dist/{chunk-S4NCI32V.js.map → chunk-M7HP3FTK.js.map} +1 -1
  38. package/dist/chunk-MIM5R4ZT.js +14972 -0
  39. package/dist/chunk-MIM5R4ZT.js.map +1 -0
  40. package/dist/{chunk-ASOK76ZH.js → chunk-T5IBSPAM.js} +59 -26
  41. package/dist/chunk-T5IBSPAM.js.map +1 -0
  42. package/dist/{chunk-DWMSB4CA.js → chunk-UNAZSLWE.js} +82 -16
  43. package/dist/chunk-UNAZSLWE.js.map +1 -0
  44. package/dist/{chunk-TJ77A4A3.js → chunk-Y23G2VZL.js} +5 -9
  45. package/dist/chunk-Y23G2VZL.js.map +1 -0
  46. package/dist/{chunk-HKV7LRHY.js → chunk-YT75VYRD.js} +4 -4
  47. package/dist/{chunk-HKV7LRHY.js.map → chunk-YT75VYRD.js.map} +1 -1
  48. package/dist/{chunk-CGHF6RZV.js → chunk-ZIFPHIWZ.js} +9 -7
  49. package/dist/chunk-ZIFPHIWZ.js.map +1 -0
  50. package/dist/config/index.d.ts +16 -9
  51. package/dist/config/index.js +4 -4
  52. package/dist/controls/index.d.ts +2 -2
  53. package/dist/controls/index.js +5 -5
  54. package/dist/dragdrop/index.d.ts +3 -3
  55. package/dist/index.d.ts +263 -24
  56. package/dist/index.js +376 -237
  57. package/dist/index.js.map +1 -1
  58. package/dist/layers/index.d.ts +4 -4
  59. package/dist/layers/index.js +2 -2
  60. package/dist/loupe/index.d.ts +4 -4
  61. package/dist/loupe/index.js +2 -2
  62. package/dist/overview/index.d.ts +2 -2
  63. package/dist/overview/index.js +9 -8
  64. package/dist/overview/index.js.map +1 -1
  65. package/dist/passthrough/weasel-ui.d.ts +208 -38
  66. package/dist/passthrough/weasel-ui.js +3 -3
  67. package/dist/primitives/index.d.ts +3 -178
  68. package/dist/primitives/index.js +6 -6
  69. package/dist/state/index.d.ts +5 -5
  70. package/dist/state/index.js +4 -4
  71. package/dist/styles.css +91 -83
  72. package/dist/undo/index.d.ts +3 -3
  73. package/package.json +13 -12
  74. package/src/annotations/AnnotationOverlay.tsx +2 -2
  75. package/src/annotations/Annotations.less +0 -10
  76. package/src/annotations/MarkList.tsx +4 -8
  77. package/src/annotations/paint.test.ts +3 -14
  78. package/src/annotations/paint.ts +3 -19
  79. package/src/annotations/svgNodes.test.ts +6 -9
  80. package/src/annotations/svgNodes.ts +3 -3
  81. package/src/canvas/AGENTS.md +1 -0
  82. package/src/canvas/CameraInput.tsx +44 -33
  83. package/src/canvas/CanvasStack.tsx +6 -1
  84. package/src/canvas/LinkedCursor.less +1 -1
  85. package/src/canvas/Stage.test.tsx +33 -4
  86. package/src/canvas/Stage.tsx +6 -1
  87. package/src/canvas/cameraRegistry.test.ts +55 -0
  88. package/src/canvas/cameraRegistry.ts +86 -0
  89. package/src/canvas/cameraZoom.test.ts +46 -0
  90. package/src/canvas/cameraZoom.ts +24 -0
  91. package/src/canvas/index.ts +14 -2
  92. package/src/canvas/sharedScope.test.tsx +94 -0
  93. package/src/chrome/ChromeRegions.stories.tsx +1 -0
  94. package/src/chrome/regions/PaletteRegion.less +0 -7
  95. package/src/chrome/regions/SidebarRegion.less +12 -2
  96. package/src/config/builder.test.ts +2 -1
  97. package/src/config/builder.ts +12 -5
  98. package/src/config/fromConfigField.test.ts +14 -0
  99. package/src/config/fromConfigField.ts +18 -4
  100. package/src/config/path.ts +2 -5
  101. package/src/config/resolve.ts +4 -0
  102. package/src/config/types.ts +13 -9
  103. package/src/controls/ControlPanel.less +1 -1
  104. package/src/controls/ControlPanel.stories.tsx +3 -2
  105. package/src/controls/ControlPanel.test.tsx +64 -11
  106. package/src/controls/ControlPanel.tsx +52 -2
  107. package/src/index.ts +15 -1
  108. package/src/lab/Lab.tsx +83 -72
  109. package/src/lab/{LabFit.stories.less → LabFit.browser.test.less} +1 -1
  110. package/src/lab/{LabFit.stories.tsx → LabFit.browser.test.tsx} +41 -63
  111. package/src/lab/LabFullChrome.stories.tsx +1 -0
  112. package/src/lab/LabHeader.test.tsx +24 -14
  113. package/src/lab/LabHeader.tsx +11 -12
  114. package/src/lab/LabShell.less +8 -17
  115. package/src/lab/LabSwitcher.less +6 -6
  116. package/src/lab/LabZoom.test.tsx +223 -0
  117. package/src/lab/LabZoom.tsx +170 -0
  118. package/src/lab/index.ts +1 -0
  119. package/src/loupe/LoupeGestures.tsx +1 -1
  120. package/src/overview/TrialOverview.tsx +7 -5
  121. package/src/passthrough/weasel-ui.test.ts +2 -0
  122. package/src/passthrough/weasel-ui.ts +16 -4
  123. package/src/primitives/FloatingPanel.test.tsx +11 -0
  124. package/src/primitives/FloatingPanel.tsx +2 -5
  125. package/src/primitives/JobProgress.less +1 -1
  126. package/src/primitives/Legend.stories.tsx +1 -0
  127. package/src/primitives/Readout.browser.test.tsx +137 -0
  128. package/src/primitives/Readout.less +12 -0
  129. package/src/primitives/Readout.stories.tsx +58 -0
  130. package/src/primitives/Readout.test.tsx +93 -0
  131. package/src/primitives/Readout.tsx +56 -0
  132. package/src/primitives/index.ts +2 -0
  133. package/src/specimen/Specimen.stories.tsx +1 -0
  134. package/src/specimen/Specimen.tsx +2 -2
  135. package/src/state/Persistence.browser.test.tsx +47 -0
  136. package/src/state/store.test.ts +5 -1
  137. package/src/state/usePersistedState.test.tsx +1 -1
  138. package/src/styles.less +1 -0
  139. package/src/theme/Interstellar.stories.tsx +3 -1
  140. package/src/theme/base.less +21 -47
  141. package/src/theme/interstellar.test.ts +1 -1
  142. package/src/theme/interstellar.theme.json +10 -3
  143. package/src/trial/Trial.less +0 -13
  144. package/src/trial/Trial.tsx +12 -6
  145. package/src/trial/TrialChrome.tsx +21 -3
  146. package/dist/_dts/PrefsRow.d-DFpPIeIC.d.ts +0 -39
  147. package/dist/_dts/PropertyField.d-D0ndfIIt.d.ts +0 -404
  148. package/dist/chunk-4TT3PNPR.js.map +0 -1
  149. package/dist/chunk-6FLXL3I7.js.map +0 -1
  150. package/dist/chunk-ASOK76ZH.js.map +0 -1
  151. package/dist/chunk-CGHF6RZV.js.map +0 -1
  152. package/dist/chunk-DWMSB4CA.js.map +0 -1
  153. package/dist/chunk-IRTGUQ5O.js.map +0 -1
  154. package/dist/chunk-KHK5FGER.js.map +0 -1
  155. package/dist/chunk-NEXR37YJ.js.map +0 -1
  156. package/dist/chunk-O6FFFOHS.js.map +0 -1
  157. package/dist/chunk-QGMOA2YE.js.map +0 -1
  158. package/dist/chunk-SBXNQW4G.js +0 -3
  159. package/dist/chunk-TJ77A4A3.js.map +0 -1
  160. package/dist/chunk-TYN6MLXX.js +0 -13864
  161. package/dist/chunk-TYN6MLXX.js.map +0 -1
  162. package/src/state/Persistence.stories.tsx +0 -75
@@ -1,14 +1,14 @@
1
- import { j as ToggleBarSize, k as ToggleBarVariant, l as SegmentTooltipFields, F as FieldOrientation, O as OverlayPortalProps, W as WithoutPortalTarget } from '../_dts/Select.d-Cr8-zoup.js';
2
- export { B as Button, a as ButtonProps, b as ButtonSize, c as ButtonVariant, m as Field, n as FieldProps, o as ICON_PATHS, d as Icon, p as IconName, I as IconProps, e as Input, f as InputProps, S as Select, q as SelectItem, r as SelectItemProps, s as SelectOption, g as SelectProps, T as ToggleBar, h as ToggleBarItem, i as ToggleBarProps, t as fieldClasses } from '../_dts/Select.d-Cr8-zoup.js';
1
+ import { S as StanceProps, D as Display, P as PrefRenderer } from '../_dts/PrefsRow.d-TOZ7BgD9.js';
2
+ export { M as MINUS_SIGN, a as PrefRenderContext, f as formatNumber } from '../_dts/PrefsRow.d-TOZ7BgD9.js';
3
+ import { j as ToggleBarSize, k as ToggleBarVariant, b as ButtonSize, c as ButtonVariant, l as SegmentTooltipFields, F as FieldOrientation, O as OverlayPortalProps, W as WithoutPortalTarget } from '../_dts/Select.d-Bensr_MT.js';
4
+ export { B as Button, a as ButtonProps, m as Field, n as FieldProps, o as ICON_PATHS, d as Icon, p as IconName, I as IconProps, e as Input, f as InputProps, S as Select, q as SelectItem, r as SelectItemProps, s as SelectOption, g as SelectProps, T as ToggleBar, h as ToggleBarItem, i as ToggleBarProps, t as fieldClasses } from '../_dts/Select.d-Bensr_MT.js';
3
5
  import { ToolPrefLeaf, ToolPrefGroup, ToolsApi, oklchDegToHex } from '@weasel-js/core';
4
- export { ToolPref as BuiltinPref, ToolPrefBoolean as PrefBoolean, ToolPrefBooleanControl as PrefBooleanControl, ToolPrefColor as PrefColor, ToolPrefCustom as PrefCustom, ToolPrefEnum as PrefEnum, ToolPrefEnumControl as PrefEnumControl, ToolPrefEnumEncoding as PrefEnumEncoding, ToolPrefGroup as PrefGroup, ToolPrefKind as PrefKind, ToolPrefLeaf as PrefLeaf, ToolPrefNumber as PrefNumber, ToolPrefNumberControl as PrefNumberControl, ToolPrefNumberUnit as PrefNumberUnit, ToolPrefObject as PrefObject, ToolPrefPaint as PrefPaint, ToolPrefString as PrefString, ToolPrefStringControl as PrefStringControl } from '@weasel-js/core';
6
+ export { ToolPref as BuiltinPref, ToolPrefBoolean as PrefBoolean, ToolPrefBooleanControl as PrefBooleanControl, ToolPrefBooleanEncoding as PrefBooleanEncoding, ToolPrefColor as PrefColor, ToolPrefCustom as PrefCustom, ToolPrefEnum as PrefEnum, ToolPrefEnumControl as PrefEnumControl, ToolPrefEnumEncoding as PrefEnumEncoding, ToolPrefGroup as PrefGroup, ToolPrefKind as PrefKind, ToolPrefLeaf as PrefLeaf, ToolPrefNumber as PrefNumber, ToolPrefNumberControl as PrefNumberControl, ToolPrefNumberUnit as PrefNumberUnit, ToolPrefObject as PrefObject, ToolPrefPaint as PrefPaint, ToolPrefString as PrefString, ToolPrefStringControl as PrefStringControl } from '@weasel-js/core';
5
7
  import * as react from 'react';
6
- import { ReactNode, CSSProperties, HTMLAttributes, ReactElement, PointerEvent, RefCallback, KeyboardEvent, RefObject } from 'react';
7
- import { S as StanceProps, P as PrefRenderer } from '../_dts/PrefsRow.d-DFpPIeIC.js';
8
- export { a as PrefRenderContext } from '../_dts/PrefsRow.d-DFpPIeIC.js';
9
- export { L as LayerList, a as LayerListItem, b as LayerListProps, c as LayerMove, m as moveLayers } from '../_dts/LayerList.d-BoELAMsM.js';
8
+ import { ReactNode, CSSProperties, HTMLAttributes, ButtonHTMLAttributes, ReactElement, PointerEvent, RefCallback, KeyboardEvent, RefObject } from 'react';
9
+ export { L as LayerList, a as LayerListItem, b as LayerListProps, c as LayerMove, m as moveLayers } from '../_dts/LayerList.d-DiuEArKq.js';
10
10
  import { ColorModePreference } from '@weasel-js/theme';
11
- export { M as MINUS_SIGN, q as PropertyAlign, r as PropertyDensity, P as PropertyMetricProps, s as formatNumber } from '../_dts/PropertyField.d-D0ndfIIt.js';
11
+ export { l as PropertyAlign, m as PropertyDensity, P as PropertyMetricProps } from '../_dts/PropertyPanel.d-D-1paCbE.js';
12
12
  import { CheckboxProps as CheckboxProps$1, SwitchProps as SwitchProps$1, TabProps as TabProps$1, TabListProps as TabListProps$1, TabPanelProps as TabPanelProps$1, TabsProps as TabsProps$1, RadioProps as RadioProps$1, RadioGroupProps as RadioGroupProps$1, ValidationResult, NumberFieldProps as NumberFieldProps$1, ComboBoxProps as ComboBoxProps$1, ListBoxItemProps, SliderProps as SliderProps$1, ModalOverlayProps, DialogProps as DialogProps$1, PopoverProps } from 'react-aria-components';
13
13
  export { DialogTrigger as CalloutTrigger } from 'react-aria-components';
14
14
 
@@ -466,12 +466,19 @@ interface RibbonParams {
466
466
  * returns the horizontal displacement of that point, positive to the right.
467
467
  */
468
468
  type EdgeProfile = (t: number, depth: number) => number;
469
- /** The named edge profiles in {@link EDGE_PROFILES}. */
470
- type BuiltInEdgeName = 'flat' | 'chevron' | 'slant' | 'slant-up' | 'round' | 'scallop' | 'concave-chevron';
469
+ /** The named edge caps expressible as an {@link EdgeProfile}, in {@link EDGE_PROFILES}. */
470
+ type BuiltInProfileName = 'flat' | 'chevron' | 'slant' | 'slant-up' | 'round' | 'scallop' | 'concave-chevron';
471
+ /**
472
+ * Every named edge cap. `puzzle` is a jigsaw tab: a round knob on a narrower
473
+ * neck, protruding from the edge's owner into a matching socket in its
474
+ * neighbor. Its bulb overhangs its neck, so it is not a function of `t` and
475
+ * has no entry in {@link EDGE_PROFILES}.
476
+ */
477
+ type BuiltInEdgeName = BuiltInProfileName | 'puzzle';
471
478
  /** An edge profile, either by name or as a function. */
472
479
  type EdgeCap = BuiltInEdgeName | EdgeProfile;
473
480
  /** The built-in {@link EdgeProfile} implementations, by name. */
474
- declare const EDGE_PROFILES: Record<BuiltInEdgeName, EdgeProfile>;
481
+ declare const EDGE_PROFILES: Record<BuiltInProfileName, EdgeProfile>;
475
482
 
476
483
  interface PowerlineParams {
477
484
  /** Profile for the left edge (the cap segment N inherits from segment N-1). */
@@ -810,6 +817,26 @@ type BadgeProps = BadgePropsByShape;
810
817
  */
811
818
  declare const Badge: react.ForwardRefExoticComponent<BadgePropsByShape & react.RefAttributes<HTMLElement>>;
812
819
 
820
+ /** Props for {@link CloseButton}. */
821
+ interface CloseButtonProps {
822
+ /** Accessible name — what the press closes or removes: `Close dialog`,
823
+ * `Remove Glow`. Required, since the button shows only a glyph. */
824
+ ariaLabel: string;
825
+ onClick?: ButtonHTMLAttributes<HTMLButtonElement>['onClick'];
826
+ /** Kit tooltip content. None by default. */
827
+ tooltip?: ReactNode;
828
+ disabled?: boolean;
829
+ className?: string;
830
+ }
831
+ /**
832
+ * The kit's close / dismiss / remove button: the `close` glyph at chrome size
833
+ * in a square `--wzl-icon-button-size` target. Kit components that dismiss a
834
+ * surface or remove a row draw their × with this.
835
+ *
836
+ * `ref` forwards to the underlying `<button>`.
837
+ */
838
+ declare const CloseButton: react.ForwardRefExoticComponent<CloseButtonProps & react.RefAttributes<HTMLButtonElement>>;
839
+
813
840
  /**
814
841
  * One column of a {@link DataGrid}. `id` doubles as the default property name
815
842
  * read off each row when no `accessor` is given.
@@ -892,7 +919,7 @@ interface DisclosureMarkProps {
892
919
  * button. Anywhere the mark has to be the control, use `<Disclosure>`.
893
920
  *
894
921
  * Deliberately not part of the icon register, on the same grounds as
895
- * `DragHandleGlyph`: that register is outline strokes at a fixed weight, and
922
+ * `DragGrip`: that register is outline strokes at a fixed weight, and
896
923
  * this mark is filled.
897
924
  */
898
925
  declare function DisclosureMark({ open, size, className }: DisclosureMarkProps): react.JSX.Element;
@@ -968,8 +995,8 @@ interface DragGhostProps {
968
995
  */
969
996
  declare function DragGhost({ at, from, children }: DragGhostProps): react.ReactPortal;
970
997
 
971
- /** Props for `<DragHandleGlyph>`. */
972
- interface DragHandleGlyphProps {
998
+ /** Props for `<DragGrip>`. */
999
+ interface DragGripProps {
973
1000
  /** Height in px; width scales with it. Default 16. */
974
1001
  size?: number;
975
1002
  }
@@ -978,7 +1005,7 @@ interface DragHandleGlyphProps {
978
1005
  * Deliberately not part of the icon register: that register is outline strokes
979
1006
  * at a fixed weight, and a grip is filled dots. Forcing it in would either
980
1007
  * break the register's rule or produce a worse glyph. */
981
- declare function DragHandleGlyph({ size }: DragHandleGlyphProps): react.JSX.Element;
1008
+ declare function DragGrip({ size }: DragGripProps): react.JSX.Element;
982
1009
 
983
1010
  /**
984
1011
  * Width class of a keycap: a modifier glyph, a multi-character legend that
@@ -1031,16 +1058,22 @@ interface KeySpec {
1031
1058
  * trigger the action (e.g. an optional modifier). Defaults to false. */
1032
1059
  optional?: boolean;
1033
1060
  }
1061
+ /** Where {@link KeySequence} draws its separator. */
1062
+ type KeySequenceJoins = 'all' | 'key' | 'none';
1034
1063
  /** Props for {@link KeySequence}. */
1035
1064
  interface KeySequenceProps {
1036
1065
  /** Keys to render. `undefined` or empty renders a muted em-dash.
1037
1066
  * Modifiers are always rendered first regardless of input order; relative
1038
1067
  * order within each group is preserved. */
1039
1068
  keys: readonly KeySpec[] | undefined;
1040
- /** Character inserted between the trailing modifier chip and the first
1041
- * non-modifier chip (e.g. `'+'` renders `⌘ + K`). `null` or `''`
1042
- * suppresses it. Defaults to `'+'`. */
1043
- separator?: string | null;
1069
+ /** Glyph drawn wherever {@link joins} places a separator. Defaults to `'+'`. */
1070
+ separator?: string;
1071
+ /** Where the separator goes. Defaults to `'key'`.
1072
+ * - `'all'`: between every pair of chips — `⌘ + ⇧ + K`, `⌘ + ⇧`, `A + B`.
1073
+ * - `'key'`: before every non-modifier — `⌘ ⇧ + K`, `⌘ + K + L`, `A + B`.
1074
+ * Modifiers stay unjoined, so `⌘ ⇧` gets none.
1075
+ * - `'none'`: never. */
1076
+ joins?: KeySequenceJoins;
1044
1077
  /** Forwarded to every `KeyCap` in the sequence. `'minimal'` renders
1045
1078
  * unfilled chips whose border + legend are `currentColor`. */
1046
1079
  variant?: KeyCapVariant;
@@ -1051,7 +1084,7 @@ interface KeySequenceProps {
1051
1084
  }
1052
1085
  /** Renders a shortcut as a row of `KeyCap` chips, one per key. Optional
1053
1086
  * keys render inverted to distinguish them from required ones. */
1054
- declare function KeySequence({ keys, separator, variant, font, className }: KeySequenceProps): react.JSX.Element;
1087
+ declare function KeySequence({ keys, separator, joins, variant, font, className }: KeySequenceProps): react.JSX.Element;
1055
1088
 
1056
1089
  /** Apple-style glyph for a DOM `KeyboardEvent.key` value. Covers escape,
1057
1090
  * delete/backspace, arrows, enter/return, tab, space. Unknown keys are
@@ -1215,12 +1248,17 @@ type BoundsCtx = {
1215
1248
  index: number;
1216
1249
  };
1217
1250
  /**
1218
- * Passed to `renderTrack`: the track's width in CSS px and a mapping from a
1219
- * slider value to its 0..1 position along the track.
1251
+ * Passed to `renderTrack`: the track's width in CSS px, a mapping from a
1252
+ * slider value to its 0..1 position along the value span, and the CSS
1253
+ * position (a `calc()` against the painted box's width) of a 0..1 fraction of
1254
+ * that span. A painter places everything that must line up with the thumbs
1255
+ * through `fractionToPosition`: under `thumbFit: 'inside'` the span stops half
1256
+ * a thumb short of each end of the track.
1220
1257
  */
1221
1258
  type TrackCtx = {
1222
1259
  trackWidth: number;
1223
1260
  valueToFraction: (v: number) => number;
1261
+ fractionToPosition: (f: number) => string;
1224
1262
  };
1225
1263
  /** A {@link Slider} stop that carries a label, drawn under the track at the stop. */
1226
1264
  type SliderStop = {
@@ -1259,6 +1297,12 @@ type SliderStop = {
1259
1297
  * `onRemoveThumb` lets a right-click or a drag off the track remove one —
1260
1298
  * both callbacks can decline by returning `null`/`false`. `allowShiftAll`
1261
1299
  * makes shift-drag translate every thumb together.
1300
+ *
1301
+ * `thumbFit: 'inside'`, the default, runs the value span half a thumb short of
1302
+ * each end of the track, so a thumb at `min` or `max` sits flush with the
1303
+ * track's edge instead of hanging half over it — the layout a native range
1304
+ * input has. `'overhang'` runs the span edge to edge and centers an end thumb
1305
+ * on the edge.
1262
1306
  */
1263
1307
  type SliderProps<T extends Thumb = Thumb> = {
1264
1308
  thumbs: readonly T[];
@@ -1278,11 +1322,16 @@ type SliderProps<T extends Thumb = Thumb> = {
1278
1322
  onRemoveThumb?: (index: number) => boolean;
1279
1323
  allowShiftAll?: boolean;
1280
1324
  renderTrack?: (ctx: TrackCtx) => ReactNode;
1325
+ thumbFit?: 'inside' | 'overhang';
1281
1326
  trackHeight?: number;
1282
1327
  /** `'slim'` drives the track and thumb from the kit's slider tokens, so a
1283
1328
  * Slider matches the property rows. `trackHeight` still wins if given. */
1284
1329
  density?: 'default' | 'slim';
1285
1330
  renderReadout?: (thumb: T, index: number) => ReactNode;
1331
+ /** How a thumb's value shows in the default readout and is spoken as its
1332
+ * `aria-valuetext` when the thumb gives no `valueText` of its own. Default:
1333
+ * three decimals shown, nothing spoken beyond `aria-valuenow`. */
1334
+ display?: Display;
1286
1335
  readoutPlacement?: 'none' | 'inline-after' | 'below-thumb';
1287
1336
  ariaLabel?: string;
1288
1337
  className?: string;
@@ -1320,7 +1369,7 @@ interface UseReorderDragListOptions {
1320
1369
  * also handles `click` sees one press, not two. A press that starts on a
1321
1370
  * control inside the row (a toggle) is left to the control. */
1322
1371
  onPress?(id: string, mods: PressModifiers): void;
1323
- /** Pointer-move distance (px) before pending drag engages. Default 4. */
1372
+ /** Pointer-move distance (px) before pending drag engages. Default `DRAG_THRESHOLD_PX`. */
1324
1373
  threshold?: number;
1325
1374
  /** Selector matching the container's children that are rows, for a list
1326
1375
  * that interleaves other elements (a table's detail rows). Default: every
@@ -1437,6 +1486,41 @@ interface ColorModeControlProps {
1437
1486
  */
1438
1487
  declare function ColorModeControl({ value, onChange, ariaLabel, size, variant, className, }: ColorModeControlProps): ReactElement;
1439
1488
 
1489
+ /** One stop in a {@link ThemeSwitcher}'s rotation. */
1490
+ interface ThemeSwitcherOption<T extends string = string> {
1491
+ value: T;
1492
+ /** Drawn in the button while this option is current. */
1493
+ icon: ReactNode;
1494
+ /** The option's name, read in the accessible name and tooltip. */
1495
+ label: string;
1496
+ }
1497
+ /** The color modes, in rotation order, as {@link ThemeSwitcher} cycles them by default. */
1498
+ declare const COLOR_MODE_OPTIONS: readonly ThemeSwitcherOption<ColorModePreference>[];
1499
+ /** Props for {@link ThemeSwitcher}. */
1500
+ interface ThemeSwitcherProps<T extends string = ColorModePreference> {
1501
+ value: T;
1502
+ onChange: (next: T) => void;
1503
+ /** The rotation, in order. Defaults to {@link COLOR_MODE_OPTIONS}. */
1504
+ options?: readonly ThemeSwitcherOption<T>[];
1505
+ /** What is being switched, leading the accessible name and tooltip
1506
+ * (`Theme: Auto — click for Light`). Defaults to `'Theme'`. */
1507
+ ariaLabel?: string;
1508
+ /** Defaults to `sm`, the size of a header's icon buttons. */
1509
+ size?: ButtonSize;
1510
+ /** Defaults to `ghost`. */
1511
+ variant?: ButtonVariant;
1512
+ className?: string;
1513
+ }
1514
+ /**
1515
+ * One icon button that steps through a list of options: a click moves to the
1516
+ * next, a shift-click to the previous, both wrapping. It shows the current
1517
+ * option's icon, and its name and tooltip say what is current and what a
1518
+ * click chooses. The compact alternative to `ColorModeControl`'s three
1519
+ * segments. Controlled: pair the default color modes with
1520
+ * `useColorModePreference` from `@weasel-js/theme/react`.
1521
+ */
1522
+ declare function ThemeSwitcher<T extends string = ColorModePreference>({ value, onChange, options, ariaLabel, size, variant, className, }: ThemeSwitcherProps<T>): ReactElement;
1523
+
1440
1524
  /**
1441
1525
  * One segment of an {@link OptionsBar}. Unlike `ToggleBar`, each item carries
1442
1526
  * its own selected state and its own `onChange`.
@@ -1549,6 +1633,24 @@ interface PowerlineProps {
1549
1633
  */
1550
1634
  declare function Powerline({ segments, startCap, size, variant, depth, gap, className, ...rest }: PowerlineProps): react.JSX.Element;
1551
1635
 
1636
+ /**
1637
+ * The segments {@link GestureRoute} draws for a route string: phase atoms, then
1638
+ * `gesture(arg)`, then the held modifiers as one chord, then the target.
1639
+ * A descriptor's default arg and a wildcard target stay visible, muted, so
1640
+ * the strip shows the whole binding.
1641
+ */
1642
+ declare function gestureRouteSegments(route: string): PowerlineSegment[];
1643
+ /** Props for {@link GestureRoute}. */
1644
+ interface GestureRouteProps extends Omit<PowerlineProps, 'segments'> {
1645
+ /** A route in the dispatcher's grammar, e.g. `[initial] drag => node +shift`. */
1646
+ route: string;
1647
+ }
1648
+ /**
1649
+ * A dispatcher route drawn as a {@link Powerline}: phase, gesture, modifiers
1650
+ * and target as one chevron-linked chain.
1651
+ */
1652
+ declare function GestureRoute({ route, 'aria-label': ariaLabel, ...rest }: GestureRouteProps): react.JSX.Element;
1653
+
1552
1654
  /** Distinguishes a leaf from a group while walking a schema tree. */
1553
1655
  declare function isPrefLeaf(node: ToolPrefLeaf | ToolPrefGroup): node is ToolPrefLeaf;
1554
1656
  /** Get the value at a dotted path inside a nested value tree. Returns
@@ -1689,7 +1791,7 @@ interface SidebarPanelProps {
1689
1791
  */
1690
1792
  onToggleCollapse?(): void;
1691
1793
  /**
1692
- * Optional close handler — when provided, the header gains a `×`
1794
+ * Optional close handler — when provided, the header gains a close
1693
1795
  * button on the trailing edge. Caller flips its "hidden" state and
1694
1796
  * conditionally unmounts the panel from the parent.
1695
1797
  */
@@ -1801,6 +1903,10 @@ interface WorkspaceVisual {
1801
1903
  * independently undoable and `exit` is non-destructive. A `strict` mode
1802
1904
  * (free-transform, crop) is a transaction: the whole session collapses to one
1803
1905
  * undoable step and leaving requires an explicit `commit` or `cancel`.
1906
+ *
1907
+ * The four shortcut fields are key chords (`'Escape'`, `'Meta+T'`) that
1908
+ * `modeShortcuts` in `@weasel-js/routing` turns into dispatcher bindings,
1909
+ * each live only while the mode it acts on is (or, for `entry`, is not).
1804
1910
  */
1805
1911
  interface ModeDefinition {
1806
1912
  id: string;
@@ -1828,6 +1934,43 @@ interface ModeDefinition {
1828
1934
  cancel?: {
1829
1935
  shortcut?: string;
1830
1936
  };
1937
+ /** Leave a soft mode and throw its session away, where `exit` keeps it to
1938
+ * resume. */
1939
+ discard?: {
1940
+ shortcut?: string;
1941
+ };
1942
+ }
1943
+
1944
+ /** One registrant of a key: its value and, when the registrant named one, where it came from. */
1945
+ interface Registrant<V> {
1946
+ readonly value: V;
1947
+ readonly source: string | undefined;
1948
+ }
1949
+ /** One key as a reflection reports it. */
1950
+ interface ReflectedEntry<V, K = string> extends Registrant<V> {
1951
+ readonly key: K;
1952
+ /** The registrants this one displaced, oldest first. Non-empty means two
1953
+ * registrants claimed one key — a conflict, resolved newest-wins. */
1954
+ readonly shadowed: readonly Registrant<V>[];
1955
+ }
1956
+ /**
1957
+ * The read-only face of a registry: what is registered, what displaced what,
1958
+ * and a way to hear about changes. Every kit registry that embeds a
1959
+ * {@link Reflectable} hands this out, so a debug overlay or a conflict check
1960
+ * can walk any of them the same way.
1961
+ *
1962
+ * `subscribe` and `getVersion` are shaped for `useSyncExternalStore`; so is
1963
+ * `entries`, which returns the same frozen array until the next change.
1964
+ */
1965
+ interface Reflection<V, K = string> {
1966
+ get(key: K): V | undefined;
1967
+ has(key: K): boolean;
1968
+ /** Every key's live registrant, in the order each key was first registered. */
1969
+ entries(): readonly ReflectedEntry<V, K>[];
1970
+ /** Called after every change. Returns the unsubscribe. */
1971
+ subscribe(listener: () => void): () => void;
1972
+ /** Advances on every change. */
1973
+ getVersion(): number;
1831
1974
  }
1832
1975
 
1833
1976
  /** Holds the set of available modes and which one is active, and notifies
@@ -1836,10 +1979,15 @@ interface ModeDefinition {
1836
1979
  * ignored. */
1837
1980
  interface ModeRegistry {
1838
1981
  current(): ModeDefinition;
1982
+ /** Every registered mode, in registration order. */
1983
+ list(): readonly ModeDefinition[];
1839
1984
  setMode(id: string): void;
1840
1985
  byId(id: string): ModeDefinition;
1841
1986
  getVersion(): number;
1842
1987
  subscribe(listener: () => void): () => void;
1988
+ /** The registered modes keyed by id. Shares this registry's version, so it
1989
+ * also advances on `setMode`. */
1990
+ readonly reflection: Reflection<ModeDefinition>;
1843
1991
  }
1844
1992
 
1845
1993
  /** Props for {@link ToolPalette}. */
@@ -1869,7 +2017,8 @@ interface ToolPaletteProps {
1869
2017
  /**
1870
2018
  * Toolbar of the registered tools, split into separator-divided groups by
1871
2019
  * each tool's presentation group and navigable by arrow keys. Clicking a
1872
- * button makes that tool active.
2020
+ * button makes that tool active. A tool whose presentation sets `hide` is
2021
+ * left out.
1873
2022
  *
1874
2023
  * Given a `modeRegistry`, tools whose capabilities the current mode does not
1875
2024
  * allow render greyed out and inert rather than disappearing.
@@ -2214,14 +2363,14 @@ type CalloutProps = Omit<WithoutPortalTarget<PopoverProps>, 'children' | 'classN
2214
2363
  */
2215
2364
  modal?: boolean;
2216
2365
  /**
2217
- * Show the × button. Defaults to `!modal`. In programmatic
2366
+ * Show the close button. Defaults to `!modal`. In programmatic
2218
2367
  * `triggerRef`/`anchorRect` modes the close button needs controlled open
2219
2368
  * (`isOpen` + `onOpenChange`); with only `defaultOpen` it has no open-state
2220
2369
  * setter to call and cannot close.
2221
2370
  */
2222
2371
  showCloseButton?: boolean;
2223
2372
  /**
2224
- * The user asked for this callout to go away — the × button or Escape.
2373
+ * The user asked for this callout to go away — the close button or Escape.
2225
2374
  *
2226
2375
  * Distinct from `onOpenChange`, which a non-modal popover *also* fires when
2227
2376
  * interaction or focus merely leaves it. On a canvas that's every click on
@@ -2260,7 +2409,7 @@ declare function Callout(props: CalloutProps): react.JSX.Element;
2260
2409
  * Model space: caller-defined xRange × yRange. Y axis goes UP.
2261
2410
  * Plot space: 0..width × 0..height in CSS pixels. Y axis goes DOWN (SVG).
2262
2411
  */
2263
- interface Point {
2412
+ interface Point$1 {
2264
2413
  x: number;
2265
2414
  y: number;
2266
2415
  }
@@ -2321,8 +2470,8 @@ interface TickSettings {
2321
2470
  }
2322
2471
  /** A pointer position given in both of the plot's coordinate systems. */
2323
2472
  interface Plot2DCoords {
2324
- plot: Point;
2325
- model: Point;
2473
+ plot: Point$1;
2474
+ model: Point$1;
2326
2475
  }
2327
2476
  /** Props for {@link Plot2D}. */
2328
2477
  interface Plot2DProps {
@@ -2363,19 +2512,19 @@ interface Plot2DProps {
2363
2512
  */
2364
2513
  interface Plot2DHandle {
2365
2514
  readonly svg: SVGSVGElement | null;
2366
- plotToModel(pt: Point): Point;
2367
- modelToPlot(pt: Point): Point;
2515
+ plotToModel(pt: Point$1): Point$1;
2516
+ modelToPlot(pt: Point$1): Point$1;
2368
2517
  /** Convert a DOM event's clientX/clientY (e.g. from a window-attached
2369
2518
  * pointermove during drag) to plot-space. */
2370
2519
  clientToPlot(e: {
2371
2520
  clientX: number;
2372
2521
  clientY: number;
2373
- }): Point;
2522
+ }): Point$1;
2374
2523
  /** Convenience: clientToPlot → plotToModel. */
2375
2524
  clientToModel(e: {
2376
2525
  clientX: number;
2377
2526
  clientY: number;
2378
- }): Point;
2527
+ }): Point$1;
2379
2528
  readonly width: number;
2380
2529
  readonly height: number;
2381
2530
  }
@@ -2386,6 +2535,22 @@ interface Plot2DHandle {
2386
2535
  */
2387
2536
  declare const Plot2D: react.ForwardRefExoticComponent<Plot2DProps & react.RefAttributes<Plot2DHandle>>;
2388
2537
 
2538
+ /**
2539
+ * Catmull-Rom spline sampling, parameterized by α.
2540
+ *
2541
+ * α = 0 → uniform parameterization (original Catmull-Rom). Fast, can
2542
+ * produce cusps and self-intersections at sharp 2D angles.
2543
+ * α = 0.5 → centripetal (Yuksel/Schneider 2011). No cusps, no
2544
+ * self-intersection. The "safe default" for 2D.
2545
+ * α = 1 → chordal. Smoother than uniform, different artifacts.
2546
+ *
2547
+ * `sampleCurve(...)` is the convenience alias for centripetal (α=0.5).
2548
+ */
2549
+ interface Point {
2550
+ x: number;
2551
+ y: number;
2552
+ }
2553
+
2389
2554
  /**
2390
2555
  * Interpolation mode dispatcher for CurveEditor. The vocabulary of
2391
2556
  * supported algorithms and the unified `sample(...)` entry point that
@@ -2398,6 +2563,8 @@ declare const Plot2D: react.ForwardRefExoticComponent<Plot2DProps & react.RefAtt
2398
2563
  * every anchor); the differences are in tangent computation and
2399
2564
  * parameterization. */
2400
2565
  type InterpolationMode = 'linear' | 'catmull-rom' | 'catmull-rom-uniform' | 'catmull-rom-chordal' | 'monotone';
2566
+ /** Sample `anchors` using the chosen interpolation mode. */
2567
+ declare function sampleByInterpolation(anchors: readonly Point[], samplesPerSegment: number, mode: InterpolationMode): Point[];
2401
2568
 
2402
2569
  /**
2403
2570
  * Built-in function/curve layer for LayeredCurveEditor. Bundles the
@@ -2554,8 +2721,11 @@ declare function PointPlotter(props: PointPlotterProps): react.JSX.Element;
2554
2721
  /**
2555
2722
  * Options for {@link paintGradientTrack}.
2556
2723
  *
2557
- * `gradient` maps a normalized position along the track (0 to 1) to a CSS
2558
- * color; `samples` is how many stops the resulting linear-gradient uses.
2724
+ * `gradient` maps a normalized position along the slider's value span (0 to
2725
+ * 1) to a CSS color; `samples` is how many stops the resulting
2726
+ * linear-gradient uses. The ramp is laid on the same span as the thumbs, so a
2727
+ * thumb at 0.3 sits over `gradient(0.3)`; any track beyond the span takes the
2728
+ * end colors.
2559
2729
  * `activeRange`, given in the slider's own value units, keeps that span at
2560
2730
  * full strength and dims + hatches the rest.
2561
2731
  */
@@ -2697,5 +2867,5 @@ type RovingTabIndex<T extends HTMLElement = HTMLDivElement> = {
2697
2867
  */
2698
2868
  declare function useRovingTabIndex<T extends HTMLElement = HTMLDivElement>(options: UseRovingTabIndexOptions): RovingTabIndex<T>;
2699
2869
 
2700
- export { ActionBar, Badge, ButtonBar, Callout, Checkbox, ColorModeControl, ComboBox, ComboBoxItem, CurveEditor, DataGrid, Dialog, Disclosure, DisclosureMark, DisclosureRow, DragGhost, DragHandleGlyph, EDGE_PROFILES, FieldOrientation, KeyCap, KeySequence, ListEditor, MenuButton, NumberField, OptionsBar, OverlayPortalProps, Plot2D, PointPlotter, Powerline, PrefRenderer, PrefsDialog, PrefsForm, Radio, RadioGroup, RangeSlider, SegmentTooltipFields, Sidebar, SidebarPanel, Slider, StanceProps, Switch, Tab, TabList, TabPanel, Tabs, ToggleBarSize, ToggleBarVariant, ToolButton, ToolGroup, ToolPalette, WithoutPortalTarget, chromaAt, detectPlatform, dlog, formatShortcut, formatShortcutParts, inferKeycapKind, isDebugEnabled, isPrefLeaf, keyGlyph, keySpecFromKey, keySpecsFromMods, keySpecsFromShortcut, oklchToHex, paintGradientTrack, prefValueAtPath, useAsyncOptions, useReorderDragList, useRovingTabIndex, visiblePrefSubtree };
2701
- export type { ActionBarProps, AddPointMode, AnchorRenderProps, AsyncOption, AsyncOptionsResult, AxesSettings, BadgeProps, BadgeShape, BadgeSize, BadgeStatus, BadgeVariant, BoundsCtx, BuiltInEdgeName, ButtonBarItem, ButtonBarProps, ButtonBarSize, ButtonBarVariant, CalloutProps, CheckboxProps, ChromaCurve, ChromaCurvePoint, ColorModeControlProps, ComboBoxCommit, ComboBoxFilter, ComboBoxItemProps, ComboBoxOption, ComboBoxProps, ControlPoint, CurveDomain, CurveEditorProps, DataGridColumn, DataGridProps, DialogProps, DisclosureMarkProps, DisclosureProps, DisclosureRowProps, DragGhostProps, DragHandleGlyphProps, EdgeCap, EdgeProfile, EndpointMode, FillSettings, GradientTrackOpts, GridSettings, InterpolationMode, KeyCapProps, KeyCapVariant, KeySequenceProps, KeySpec, KeycapKind, ListEditorProps, LogicalMod, LogicalModSpec, MenuButtonItem, MenuButtonProps, NumberFieldProps, OptionsBarItem, OptionsBarProps, OptionsBarSize, OptionsBarVariant, Platform, Plot2DCoords, Plot2DHandle, Plot2DProps, PointPlotterProps, PowerlineProps, PowerlineSegment, PrefsDialogProps, PrefsFormProps, PrefsLayout, RadioGroupProps, RadioProps, RangeSliderProps, ReorderDragHandlers, ReorderDragState, ReorderGhost, RovingItem, RovingTabIndex, SidebarPanelProps, SidebarProps, SliderProps, SwitchProps, TabListProps, TabPanelProps, TabProps, TabsProps, Thumb, ThumbRenderCtx, ThumbShape, ToolButtonProps, ToolGroupProps, ToolPaletteProps, TrackCtx, UseAsyncOptionsProps, UseReorderDragListOptions, UseRovingTabIndexOptions };
2870
+ export { ActionBar, Badge, ButtonBar, ButtonSize, ButtonVariant, COLOR_MODE_OPTIONS, Callout, Checkbox, CloseButton, ColorModeControl, ComboBox, ComboBoxItem, CurveEditor, DataGrid, Dialog, Disclosure, DisclosureMark, DisclosureRow, DragGhost, DragGrip, EDGE_PROFILES, FieldOrientation, GestureRoute, KeyCap, KeySequence, ListEditor, MenuButton, NumberField, OptionsBar, OverlayPortalProps, Plot2D, PointPlotter, Powerline, PrefRenderer, PrefsDialog, PrefsForm, Radio, RadioGroup, RangeSlider, SegmentTooltipFields, Sidebar, SidebarPanel, Slider, StanceProps, Switch, Tab, TabList, TabPanel, Tabs, ThemeSwitcher, ToggleBarSize, ToggleBarVariant, ToolButton, ToolGroup, ToolPalette, WithoutPortalTarget, chromaAt, detectPlatform, dlog, formatShortcut, formatShortcutParts, gestureRouteSegments, inferKeycapKind, isDebugEnabled, isPrefLeaf, keyGlyph, keySpecFromKey, keySpecsFromMods, keySpecsFromShortcut, oklchToHex, paintGradientTrack, prefValueAtPath, sampleByInterpolation, useAsyncOptions, useReorderDragList, useRovingTabIndex, visiblePrefSubtree };
2871
+ export type { ActionBarProps, AddPointMode, AnchorRenderProps, AsyncOption, AsyncOptionsResult, AxesSettings, BadgeProps, BadgeShape, BadgeSize, BadgeStatus, BadgeVariant, BoundsCtx, BuiltInEdgeName, BuiltInProfileName, ButtonBarItem, ButtonBarProps, ButtonBarSize, ButtonBarVariant, CalloutProps, CheckboxProps, ChromaCurve, ChromaCurvePoint, CloseButtonProps, ColorModeControlProps, ComboBoxCommit, ComboBoxFilter, ComboBoxItemProps, ComboBoxOption, ComboBoxProps, ControlPoint, CurveDomain, CurveEditorProps, DataGridColumn, DataGridProps, DialogProps, DisclosureMarkProps, DisclosureProps, DisclosureRowProps, DragGhostProps, DragGripProps, EdgeCap, EdgeProfile, EndpointMode, FillSettings, GestureRouteProps, GradientTrackOpts, GridSettings, InterpolationMode, KeyCapProps, KeyCapVariant, KeySequenceJoins, KeySequenceProps, KeySpec, KeycapKind, ListEditorProps, LogicalMod, LogicalModSpec, MenuButtonItem, MenuButtonProps, NumberFieldProps, OptionsBarItem, OptionsBarProps, OptionsBarSize, OptionsBarVariant, Platform, Plot2DCoords, Plot2DHandle, Plot2DProps, PointPlotterProps, PowerlineProps, PowerlineSegment, PrefsDialogProps, PrefsFormProps, PrefsLayout, RadioGroupProps, RadioProps, RangeSliderProps, ReorderDragHandlers, ReorderDragState, ReorderGhost, RovingItem, RovingTabIndex, SidebarPanelProps, SidebarProps, SliderProps, SwitchProps, TabListProps, TabPanelProps, TabProps, TabsProps, ThemeSwitcherOption, ThemeSwitcherProps, Thumb, ThumbRenderCtx, ThumbShape, ToolButtonProps, ToolGroupProps, ToolPaletteProps, TrackCtx, UseAsyncOptionsProps, UseReorderDragListOptions, UseRovingTabIndexOptions };
@@ -1,5 +1,5 @@
1
- import '../chunk-SBXNQW4G.js';
2
- export { v as ActionBar, Ht as Badge, c as Button, a7 as ButtonBar, g2 as Callout, u6 as CalloutTrigger, o3 as Checkbox, s3 as ColorModeControl, y2 as ComboBox, S3 as ComboBoxItem, L as CurveEditor, f as DataGrid, u3 as Dialog, i2 as Disclosure, r as DisclosureMark, a2 as DisclosureRow, a3 as DragGhost, n4 as DragHandleGlyph, Qe as EDGE_PROFILES, n5 as Field, n as ICON_PATHS, l as Icon, u4 as Input, f2 as KeyCap, p as KeySequence, D as LayerList, s2 as ListEditor, e2 as MINUS_SIGN, d2 as MenuButton, g as NumberField, r3 as OptionsBar, w as Plot2D, n9 as PointPlotter, r4 as Powerline, F2 as PrefsDialog, A2 as PrefsForm, u5 as Radio, l5 as RadioGroup, l8 as RangeSlider, T as Select, L2 as SelectItem, n6 as Sidebar, s5 as SidebarPanel, y as Slider, a6 as Switch, c5 as Tab, s6 as TabList, l7 as TabPanel, o5 as Tabs, a5 as ToggleBar, o4 as ToolButton, n8 as ToolGroup, h2 as ToolPalette, Z2 as chromaAt, o2 as detectPlatform, a as dlog, r2 as fieldClasses, t2 as formatNumber, n2 as formatShortcut, t as formatShortcutParts, d as inferKeycapKind, i as isDebugEnabled, s4 as isPrefLeaf, e as keyGlyph, l3 as keySpecFromKey, s as keySpecsFromMods, m as keySpecsFromShortcut, S2 as moveLayers, X2 as oklchToHex, v2 as paintGradientTrack, c2 as prefValueAtPath, Li as useAsyncOptions, u2 as useReorderDragList, a4 as useRovingTabIndex, l6 as visiblePrefSubtree } from '../chunk-TYN6MLXX.js';
3
- import '../chunk-QGMOA2YE.js';
1
+ import '../chunk-CZZPXUOU.js';
2
+ export { v as ActionBar, Xt as Badge, c as Button, a10 as ButtonBar, a9 as COLOR_MODE_OPTIONS, _2 as Callout, d4 as CalloutTrigger, o5 as Checkbox, a2 as CloseButton, s2 as ColorModeControl, y2 as ComboBox, S2 as ComboBoxItem, L as CurveEditor, f as DataGrid, d2 as Dialog, i2 as Disclosure, r as DisclosureMark, a3 as DisclosureRow, a5 as DragGhost, n4 as DragGrip, Ze as EDGE_PROFILES, n5 as Field, p3 as GestureRoute, n as ICON_PATHS, l as Icon, u3 as Input, f2 as KeyCap, p as KeySequence, E3 as LayerList, c2 as ListEditor, MINUS_SIGN, d3 as MenuButton, y as NumberField, r3 as OptionsBar, w as Plot2D, n9 as PointPlotter, r4 as Powerline, I2 as PrefsDialog, j as PrefsForm, u4 as Radio, l4 as RadioGroup, l7 as RangeSlider, E2 as Select, L2 as SelectItem, n6 as Sidebar, a11 as SidebarPanel, S as Slider, a8 as Switch, c6 as Tab, s4 as TabList, l6 as TabPanel, o6 as Tabs, o3 as ThemeSwitcher, a7 as ToggleBar, o4 as ToolButton, n8 as ToolGroup, h2 as ToolPalette, Z2 as chromaAt, o2 as detectPlatform, a as dlog, r2 as fieldClasses, formatNumber, n2 as formatShortcut, t as formatShortcutParts, f4 as gestureRouteSegments, d as inferKeycapKind, i as isDebugEnabled, s3 as isPrefLeaf, e as keyGlyph, l3 as keySpecFromKey, s as keySpecsFromMods, m as keySpecsFromShortcut, x3 as moveLayers, X2 as oklchToHex, C2 as paintGradientTrack, c3 as prefValueAtPath, x as sampleByInterpolation, wi as useAsyncOptions, u2 as useReorderDragList, a6 as useRovingTabIndex, l5 as visiblePrefSubtree } from '../chunk-MIM5R4ZT.js';
3
+ import '../chunk-275JRRVD.js';
4
4
  //# sourceMappingURL=weasel-ui.js.map
5
5
  //# sourceMappingURL=weasel-ui.js.map