@weasel-js/ui 1.5.0 → 1.5.2

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 (341) hide show
  1. package/dist/chunks/{ActionBar-DxGp3WuZ.js → ActionBar-CLwiY3Jg.js} +5 -6
  2. package/dist/chunks/ActionBar-CLwiY3Jg.js.map +1 -0
  3. package/dist/chunks/{ActionsBar-D1VFreoj.js → ActionsBar-D84a4eGy.js} +2 -2
  4. package/dist/chunks/{ActionsBar-D1VFreoj.js.map → ActionsBar-D84a4eGy.js.map} +1 -1
  5. package/dist/chunks/{Badge-Bf8Rd1R6.js → Badge-CW9pBPFl.js} +5 -5
  6. package/dist/chunks/Badge-CW9pBPFl.js.map +1 -0
  7. package/dist/chunks/{BandEditor-BeWO56_w.js → BandEditor-jY-PFKY6.js} +103 -108
  8. package/dist/chunks/BandEditor-jY-PFKY6.js.map +1 -0
  9. package/dist/chunks/{Button-CExdkQcU.js → Button-DRSApvnK.js} +15 -15
  10. package/dist/chunks/Button-DRSApvnK.js.map +1 -0
  11. package/dist/chunks/{Callout-BPIA2is-.js → Callout-DrNu-9Qr.js} +12 -12
  12. package/dist/chunks/Callout-DrNu-9Qr.js.map +1 -0
  13. package/dist/chunks/{Checkbox-D-pVpobU.js → Checkbox-BOsDAY2F.js} +5 -5
  14. package/dist/chunks/Checkbox-BOsDAY2F.js.map +1 -0
  15. package/dist/chunks/{ColorField-C20aRvCg.js → ColorField-BYzgZM9o.js} +7 -7
  16. package/dist/chunks/ColorField-BYzgZM9o.js.map +1 -0
  17. package/dist/chunks/{ComboBox-CPES6Y1i.js → ComboBox-Cz3f0Y_8.js} +13 -13
  18. package/dist/chunks/ComboBox-Cz3f0Y_8.js.map +1 -0
  19. package/dist/chunks/{CurveEditor-Cj0lLiyR.js → CurveEditor-DXwSP-iA.js} +175 -175
  20. package/dist/chunks/CurveEditor-DXwSP-iA.js.map +1 -0
  21. package/dist/chunks/{DataGrid-BVdDMZkQ.js → DataGrid-C8KrYtw7.js} +11 -11
  22. package/dist/chunks/DataGrid-C8KrYtw7.js.map +1 -0
  23. package/dist/chunks/DetentSlider-CAubVX0J.js +72 -0
  24. package/dist/chunks/DetentSlider-CAubVX0J.js.map +1 -0
  25. package/dist/chunks/{Dialog-CYBLjwbd.js → Dialog-fGqqQ6o_.js} +9 -9
  26. package/dist/chunks/Dialog-fGqqQ6o_.js.map +1 -0
  27. package/dist/chunks/{Disclosure-DiA6UKdM.js → Disclosure-CILDfWsU.js} +6 -6
  28. package/dist/chunks/Disclosure-CILDfWsU.js.map +1 -0
  29. package/dist/chunks/{Field-dzlxOGxT.js → Field-DWnV8WZY.js} +6 -6
  30. package/dist/chunks/Field-DWnV8WZY.js.map +1 -0
  31. package/dist/chunks/{FontFamilySelect-DIJ4phXz.js → FontFamilySelect-DxfgTC3G.js} +2 -2
  32. package/dist/chunks/{FontFamilySelect-DIJ4phXz.js.map → FontFamilySelect-DxfgTC3G.js.map} +1 -1
  33. package/dist/chunks/{GradientEditor-dBprHbS0.js → GradientEditor-rRBmf3G0.js} +77 -54
  34. package/dist/chunks/GradientEditor-rRBmf3G0.js.map +1 -0
  35. package/dist/chunks/Icon-DT0x6HaQ.js +519 -0
  36. package/dist/chunks/Icon-DT0x6HaQ.js.map +1 -0
  37. package/dist/chunks/{InlineRange-CcfzY80y.js → InlineRange-DdIlfGqG.js} +2 -2
  38. package/dist/chunks/{InlineRange-CcfzY80y.js.map → InlineRange-DdIlfGqG.js.map} +1 -1
  39. package/dist/chunks/{Input-CoKOtyD0.js → Input-DbMKpkXy.js} +5 -5
  40. package/dist/chunks/Input-DbMKpkXy.js.map +1 -0
  41. package/dist/chunks/{ItemList-BZJQReXD.js → ItemList-B9zYb0GE.js} +7 -7
  42. package/dist/chunks/ItemList-B9zYb0GE.js.map +1 -0
  43. package/dist/chunks/Jog-DkkTlL3_.js +81 -0
  44. package/dist/chunks/Jog-DkkTlL3_.js.map +1 -0
  45. package/dist/chunks/{Keycaps-DSeq6QWH.js → Keycaps-DunVpejA.js} +5 -5
  46. package/dist/chunks/Keycaps-DunVpejA.js.map +1 -0
  47. package/dist/chunks/{LayerStack-DOylrQcm.js → LayerStack-CfQ6GsRz.js} +18 -18
  48. package/dist/chunks/LayerStack-CfQ6GsRz.js.map +1 -0
  49. package/dist/chunks/{MenuButton-Do8fFUx1.js → MenuButton-C_4nox39.js} +7 -7
  50. package/dist/chunks/MenuButton-C_4nox39.js.map +1 -0
  51. package/dist/chunks/MeshEditor-Bipz-Ocl.js +123 -0
  52. package/dist/chunks/MeshEditor-Bipz-Ocl.js.map +1 -0
  53. package/dist/chunks/{NumberField-BWzhqS19.js → NumberField-CCjEDZCg.js} +9 -9
  54. package/dist/chunks/NumberField-CCjEDZCg.js.map +1 -0
  55. package/dist/chunks/{OptionsBar-D_Cd3ZYs.js → OptionsBar-DeQ-vUeZ.js} +2 -2
  56. package/dist/chunks/{OptionsBar-D_Cd3ZYs.js.map → OptionsBar-DeQ-vUeZ.js.map} +1 -1
  57. package/dist/chunks/PaintField-jBOJ32rL.js +62 -0
  58. package/dist/chunks/PaintField-jBOJ32rL.js.map +1 -0
  59. package/dist/chunks/PaintInput-Qs7Rul5R.js +131 -0
  60. package/dist/chunks/PaintInput-Qs7Rul5R.js.map +1 -0
  61. package/dist/chunks/{PatternPicker-Ba22Bf4L.js → PatternPicker-BMpXWboq.js} +6 -6
  62. package/dist/chunks/PatternPicker-BMpXWboq.js.map +1 -0
  63. package/dist/chunks/{Plot2D-CVZwQpWJ.js → Plot2D-CXf_f7QD.js} +1 -1
  64. package/dist/chunks/{Plot2D-CVZwQpWJ.js.map → Plot2D-CXf_f7QD.js.map} +1 -1
  65. package/dist/chunks/{PointPlotter-anTHwz8f.js → PointPlotter-S_gz7VYt.js} +2 -2
  66. package/dist/chunks/{PointPlotter-anTHwz8f.js.map → PointPlotter-S_gz7VYt.js.map} +1 -1
  67. package/dist/chunks/{Powerline-BaHDJlcO.js → Powerline-Ak5AWUlK.js} +5 -5
  68. package/dist/chunks/Powerline-Ak5AWUlK.js.map +1 -0
  69. package/dist/chunks/Prefs-CNC8tzyN.js +308 -0
  70. package/dist/chunks/Prefs-CNC8tzyN.js.map +1 -0
  71. package/dist/chunks/Properties-Rnb6TAbN.js +891 -0
  72. package/dist/chunks/Properties-Rnb6TAbN.js.map +1 -0
  73. package/dist/chunks/{RadioGroup-B2_LUgDp.js → RadioGroup-CsVp3SEu.js} +6 -6
  74. package/dist/chunks/RadioGroup-CsVp3SEu.js.map +1 -0
  75. package/dist/chunks/{RangeSlider-S2R3zA8N.js → RangeSlider-DNr-pJpZ.js} +8 -8
  76. package/dist/chunks/RangeSlider-DNr-pJpZ.js.map +1 -0
  77. package/dist/chunks/{ResizeHandle-CiExUWP-.js → ResizeHandle-RXFf5fXr.js} +1 -1
  78. package/dist/chunks/{ResizeHandle-CiExUWP-.js.map → ResizeHandle-RXFf5fXr.js.map} +1 -1
  79. package/dist/chunks/Select-BEope086.js +190 -0
  80. package/dist/chunks/Select-BEope086.js.map +1 -0
  81. package/dist/chunks/SelectionPanel-CEbLS-0D.js +102 -0
  82. package/dist/chunks/SelectionPanel-CEbLS-0D.js.map +1 -0
  83. package/dist/chunks/{Sidebar-Cqcfx3_s.js → Sidebar-qn_oSCNX.js} +4 -4
  84. package/dist/chunks/Sidebar-qn_oSCNX.js.map +1 -0
  85. package/dist/chunks/{SidebarPanel-BLzBo0S2.js → SidebarPanel-Bs6V21hg.js} +12 -12
  86. package/dist/chunks/SidebarPanel-Bs6V21hg.js.map +1 -0
  87. package/dist/chunks/Slider-CIIrqiFS.js +381 -0
  88. package/dist/chunks/Slider-CIIrqiFS.js.map +1 -0
  89. package/dist/chunks/{StatusBar-B9NQ8atD.js → StatusBar-B4L15DSm.js} +6 -6
  90. package/dist/chunks/StatusBar-B4L15DSm.js.map +1 -0
  91. package/dist/chunks/{Switch-C4NU-me1.js → Switch-DH5POG0T.js} +5 -5
  92. package/dist/chunks/Switch-DH5POG0T.js.map +1 -0
  93. package/dist/chunks/{Tabs-9sODd2Ut.js → Tabs-BFHikpml.js} +5 -5
  94. package/dist/chunks/Tabs-BFHikpml.js.map +1 -0
  95. package/dist/chunks/{Timeline-DOZgb1CG.js → Timeline-DNKY_yiK.js} +254 -253
  96. package/dist/chunks/Timeline-DNKY_yiK.js.map +1 -0
  97. package/dist/chunks/{Toast-LpN1WK8E.js → Toast-CI1UDuK6.js} +15 -15
  98. package/dist/chunks/Toast-CI1UDuK6.js.map +1 -0
  99. package/dist/chunks/{ToggleBar-Bxwv6xvj.js → ToggleBar-CClus5Cd.js} +8 -8
  100. package/dist/chunks/ToggleBar-CClus5Cd.js.map +1 -0
  101. package/dist/chunks/TokenPanel-BPHq24dc.js +634 -0
  102. package/dist/chunks/TokenPanel-BPHq24dc.js.map +1 -0
  103. package/dist/chunks/{ToolButton-B81YjdwO.js → ToolButton-9QzJCmuM.js} +7 -7
  104. package/dist/chunks/ToolButton-9QzJCmuM.js.map +1 -0
  105. package/dist/chunks/{ToolGroup-D7juDOC_.js → ToolGroup-BJiDrH_i.js} +3 -3
  106. package/dist/chunks/ToolGroup-BJiDrH_i.js.map +1 -0
  107. package/dist/chunks/ToolOptionsBar-CAM6RcUH.js +85 -0
  108. package/dist/chunks/ToolOptionsBar-CAM6RcUH.js.map +1 -0
  109. package/dist/chunks/{ToolPalette-BSzmRJS7.js → ToolPalette-DGkKwE7D.js} +8 -8
  110. package/dist/chunks/ToolPalette-DGkKwE7D.js.map +1 -0
  111. package/dist/chunks/{Tooltip-BHre_vbI.js → Tooltip-C4YBczLq.js} +3 -3
  112. package/dist/chunks/Tooltip-C4YBczLq.js.map +1 -0
  113. package/dist/chunks/{createKeyframeLayer-AL4jP0EX.js → createKeyframeLayer-DKtO0Sw_.js} +198 -193
  114. package/dist/chunks/createKeyframeLayer-DKtO0Sw_.js.map +1 -0
  115. package/dist/chunks/{icons-BV27dhKB.js → icons-DFLytcui.js} +35 -32
  116. package/dist/chunks/icons-DFLytcui.js.map +1 -0
  117. package/dist/chunks/model-13kZ_-mE.js +483 -0
  118. package/dist/chunks/model-13kZ_-mE.js.map +1 -0
  119. package/dist/chunks/number-BHz66zQO.js +89 -0
  120. package/dist/chunks/number-BHz66zQO.js.map +1 -0
  121. package/dist/chunks/range.module-DSsOIq1R.js +8 -0
  122. package/dist/chunks/range.module-DSsOIq1R.js.map +1 -0
  123. package/dist/chunks/{schema-CPdFNeP6.js → schema-Dft4Cu2p.js} +1 -1
  124. package/dist/chunks/schema-Dft4Cu2p.js.map +1 -0
  125. package/dist/chunks/segmentedControl.module-DS72X1ns.js +11 -0
  126. package/dist/chunks/segmentedControl.module-DS72X1ns.js.map +1 -0
  127. package/dist/chunks/snap-CEjuWOhN.js +13 -0
  128. package/dist/chunks/snap-CEjuWOhN.js.map +1 -0
  129. package/dist/chunks/useRovingTabIndex-Dkpf_KhN.js.map +1 -1
  130. package/dist/color/oklch.d.ts +2 -1
  131. package/dist/color/oklch.d.ts.map +1 -1
  132. package/dist/components/ActionBar/ActionBar.d.ts.map +1 -1
  133. package/dist/components/ActionBar/index.js +1 -1
  134. package/dist/components/ActionsBar/index.js +1 -1
  135. package/dist/components/Badge/index.js +1 -1
  136. package/dist/components/BandEditor/BandEditor.d.ts.map +1 -1
  137. package/dist/components/BandEditor/index.js +1 -1
  138. package/dist/components/BandEditor/scale.d.ts +1 -8
  139. package/dist/components/BandEditor/scale.d.ts.map +1 -1
  140. package/dist/components/Button/index.js +1 -1
  141. package/dist/components/Callout/index.js +1 -1
  142. package/dist/components/Checkbox/index.js +1 -1
  143. package/dist/components/ColorField/index.js +1 -1
  144. package/dist/components/ComboBox/index.js +1 -1
  145. package/dist/components/CurveEditor/createFunctionLayer.d.ts.map +1 -1
  146. package/dist/components/CurveEditor/createKeyframeLayer.d.ts.map +1 -1
  147. package/dist/components/CurveEditor/index.d.ts +1 -1
  148. package/dist/components/CurveEditor/index.d.ts.map +1 -1
  149. package/dist/components/CurveEditor/index.js +4 -3
  150. package/dist/components/DataGrid/index.js +1 -1
  151. package/dist/components/DetentSlider/DetentSlider.d.ts +9 -10
  152. package/dist/components/DetentSlider/DetentSlider.d.ts.map +1 -1
  153. package/dist/components/DetentSlider/index.js +1 -1
  154. package/dist/components/Dialog/index.js +1 -1
  155. package/dist/components/Disclosure/index.js +1 -1
  156. package/dist/components/Field/index.js +1 -1
  157. package/dist/components/FontFamilySelect/index.js +1 -1
  158. package/dist/components/GradientEditor/GradientEditor.d.ts +3 -0
  159. package/dist/components/GradientEditor/GradientEditor.d.ts.map +1 -1
  160. package/dist/components/GradientEditor/index.js +1 -1
  161. package/dist/components/InlineRange/index.js +1 -1
  162. package/dist/components/Input/index.js +1 -1
  163. package/dist/components/ItemList/index.js +1 -1
  164. package/dist/components/Jog/Jog.d.ts +28 -0
  165. package/dist/components/Jog/Jog.d.ts.map +1 -0
  166. package/dist/components/Jog/index.d.ts +3 -0
  167. package/dist/components/Jog/index.d.ts.map +1 -0
  168. package/dist/components/Jog/index.js +2 -0
  169. package/dist/components/Keycaps/index.js +1 -1
  170. package/dist/components/LayerStack/index.js +1 -1
  171. package/dist/components/MenuButton/index.js +1 -1
  172. package/dist/components/MeshEditor/MeshEditor.d.ts +30 -0
  173. package/dist/components/MeshEditor/MeshEditor.d.ts.map +1 -0
  174. package/dist/components/MeshEditor/index.d.ts +3 -0
  175. package/dist/components/MeshEditor/index.d.ts.map +1 -0
  176. package/dist/components/MeshEditor/index.js +2 -0
  177. package/dist/components/NumberField/UnitField.d.ts +2 -1
  178. package/dist/components/NumberField/UnitField.d.ts.map +1 -1
  179. package/dist/components/NumberField/index.js +1 -1
  180. package/dist/components/OptionsBar/index.js +1 -1
  181. package/dist/components/PaintField/PaintField.d.ts +36 -0
  182. package/dist/components/PaintField/PaintField.d.ts.map +1 -0
  183. package/dist/components/PaintField/index.d.ts +3 -0
  184. package/dist/components/PaintField/index.d.ts.map +1 -0
  185. package/dist/components/PaintField/index.js +2 -0
  186. package/dist/components/PaintInput/PaintInput.d.ts.map +1 -1
  187. package/dist/components/PaintInput/index.js +1 -1
  188. package/dist/components/PatternPicker/index.js +1 -1
  189. package/dist/components/Plot2D/index.js +1 -1
  190. package/dist/components/PointPlotter/index.js +1 -1
  191. package/dist/components/Powerline/index.js +2 -2
  192. package/dist/components/Prefs/PrefsForm.d.ts +4 -0
  193. package/dist/components/Prefs/PrefsForm.d.ts.map +1 -1
  194. package/dist/components/Prefs/index.js +2 -2
  195. package/dist/components/Prefs/schema.d.ts +2 -1
  196. package/dist/components/Prefs/schema.d.ts.map +1 -1
  197. package/dist/components/Properties/PropertyGroup.d.ts +7 -1
  198. package/dist/components/Properties/PropertyGroup.d.ts.map +1 -1
  199. package/dist/components/Properties/PropertyPanel.d.ts +91 -8
  200. package/dist/components/Properties/PropertyPanel.d.ts.map +1 -1
  201. package/dist/components/Properties/index.d.ts +2 -2
  202. package/dist/components/Properties/index.d.ts.map +1 -1
  203. package/dist/components/Properties/index.js +2 -2
  204. package/dist/components/Properties/storyLayouts.d.ts +1 -1
  205. package/dist/components/RadioGroup/index.js +1 -1
  206. package/dist/components/RangeSlider/index.js +1 -1
  207. package/dist/components/ResizeHandle/index.js +1 -1
  208. package/dist/components/Select/Select.d.ts +26 -0
  209. package/dist/components/Select/Select.d.ts.map +1 -1
  210. package/dist/components/Select/index.d.ts +1 -1
  211. package/dist/components/Select/index.d.ts.map +1 -1
  212. package/dist/components/Select/index.js +1 -1
  213. package/dist/components/SelectionPanel/SelectionPanel.d.ts +3 -50
  214. package/dist/components/SelectionPanel/SelectionPanel.d.ts.map +1 -1
  215. package/dist/components/SelectionPanel/index.js +3 -2
  216. package/dist/components/SelectionPanel/model.d.ts +4 -1
  217. package/dist/components/SelectionPanel/model.d.ts.map +1 -1
  218. package/dist/components/SelectionPanel/renderLeaf.d.ts +106 -0
  219. package/dist/components/SelectionPanel/renderLeaf.d.ts.map +1 -0
  220. package/dist/components/Sidebar/index.js +1 -1
  221. package/dist/components/SidebarPanel/index.js +1 -1
  222. package/dist/components/Slider/Slider.d.ts +19 -1
  223. package/dist/components/Slider/Slider.d.ts.map +1 -1
  224. package/dist/components/Slider/index.d.ts +1 -1
  225. package/dist/components/Slider/index.d.ts.map +1 -1
  226. package/dist/components/Slider/index.js +1 -1
  227. package/dist/components/StatusBar/index.js +1 -1
  228. package/dist/components/Switch/index.js +1 -1
  229. package/dist/components/Tabs/index.js +1 -1
  230. package/dist/components/Timeline/Lane.d.ts.map +1 -1
  231. package/dist/components/Timeline/index.js +2 -2
  232. package/dist/components/Timeline/keys.d.ts +1 -1
  233. package/dist/components/Timeline/keys.d.ts.map +1 -1
  234. package/dist/components/Toast/index.js +1 -1
  235. package/dist/components/ToggleBar/index.js +1 -1
  236. package/dist/components/TokenPanel/TokenPanel.d.ts +39 -0
  237. package/dist/components/TokenPanel/TokenPanel.d.ts.map +1 -0
  238. package/dist/components/TokenPanel/color.d.ts +7 -0
  239. package/dist/components/TokenPanel/color.d.ts.map +1 -0
  240. package/dist/components/TokenPanel/index.d.ts +5 -0
  241. package/dist/components/TokenPanel/index.d.ts.map +1 -0
  242. package/dist/components/TokenPanel/index.js +2 -0
  243. package/dist/components/TokenPanel/tokenTypes.d.ts +55 -0
  244. package/dist/components/TokenPanel/tokenTypes.d.ts.map +1 -0
  245. package/dist/components/ToolButton/index.js +1 -1
  246. package/dist/components/ToolGroup/index.js +1 -1
  247. package/dist/components/ToolOptionsBar/ToolOptionsBar.d.ts +29 -18
  248. package/dist/components/ToolOptionsBar/ToolOptionsBar.d.ts.map +1 -1
  249. package/dist/components/ToolOptionsBar/index.js +1 -1
  250. package/dist/components/ToolPalette/ToolPalette.d.ts +5 -4
  251. package/dist/components/ToolPalette/ToolPalette.d.ts.map +1 -1
  252. package/dist/components/ToolPalette/index.js +1 -1
  253. package/dist/components/Tooltip/index.js +1 -1
  254. package/dist/components/paintValue.d.ts +8 -0
  255. package/dist/components/paintValue.d.ts.map +1 -1
  256. package/dist/format/number.d.ts +10 -1
  257. package/dist/format/number.d.ts.map +1 -1
  258. package/dist/handles.d.ts +20 -0
  259. package/dist/handles.d.ts.map +1 -0
  260. package/dist/icons/Icon.d.ts +10 -2
  261. package/dist/icons/Icon.d.ts.map +1 -1
  262. package/dist/icons/index.d.ts +6 -3
  263. package/dist/icons/index.d.ts.map +1 -1
  264. package/dist/icons/paths.d.ts +279 -17
  265. package/dist/icons/paths.d.ts.map +1 -1
  266. package/dist/index.d.ts +7 -0
  267. package/dist/index.d.ts.map +1 -1
  268. package/dist/index.js +74 -75
  269. package/dist/index.js.map +1 -1
  270. package/dist/paintPreview.d.ts +13 -0
  271. package/dist/paintPreview.d.ts.map +1 -0
  272. package/dist/{components/CurveEditor/snap.d.ts → snap.d.ts} +2 -0
  273. package/dist/snap.d.ts.map +1 -0
  274. package/dist/style.css +1 -1
  275. package/dist/useRovingTabIndex.d.ts +7 -5
  276. package/dist/useRovingTabIndex.d.ts.map +1 -1
  277. package/package.json +8 -7
  278. package/dist/chunks/ActionBar-DxGp3WuZ.js.map +0 -1
  279. package/dist/chunks/Badge-Bf8Rd1R6.js.map +0 -1
  280. package/dist/chunks/BandEditor-BeWO56_w.js.map +0 -1
  281. package/dist/chunks/Button-CExdkQcU.js.map +0 -1
  282. package/dist/chunks/Callout-BPIA2is-.js.map +0 -1
  283. package/dist/chunks/Checkbox-D-pVpobU.js.map +0 -1
  284. package/dist/chunks/ColorField-C20aRvCg.js.map +0 -1
  285. package/dist/chunks/ComboBox-CPES6Y1i.js.map +0 -1
  286. package/dist/chunks/CurveEditor-Cj0lLiyR.js.map +0 -1
  287. package/dist/chunks/DataGrid-BVdDMZkQ.js.map +0 -1
  288. package/dist/chunks/DetentSlider-CYicfnKr.js +0 -83
  289. package/dist/chunks/DetentSlider-CYicfnKr.js.map +0 -1
  290. package/dist/chunks/Dialog-CYBLjwbd.js.map +0 -1
  291. package/dist/chunks/Disclosure-DiA6UKdM.js.map +0 -1
  292. package/dist/chunks/Field-dzlxOGxT.js.map +0 -1
  293. package/dist/chunks/GradientEditor-dBprHbS0.js.map +0 -1
  294. package/dist/chunks/Icon-DBXtBB1f.js +0 -101
  295. package/dist/chunks/Icon-DBXtBB1f.js.map +0 -1
  296. package/dist/chunks/Input-CoKOtyD0.js.map +0 -1
  297. package/dist/chunks/ItemList-BZJQReXD.js.map +0 -1
  298. package/dist/chunks/Keycaps-DSeq6QWH.js.map +0 -1
  299. package/dist/chunks/LayerStack-DOylrQcm.js.map +0 -1
  300. package/dist/chunks/MenuButton-Do8fFUx1.js.map +0 -1
  301. package/dist/chunks/NumberField-BWzhqS19.js.map +0 -1
  302. package/dist/chunks/PaintInput-DAevU7fd.js +0 -118
  303. package/dist/chunks/PaintInput-DAevU7fd.js.map +0 -1
  304. package/dist/chunks/PatternPicker-Ba22Bf4L.js.map +0 -1
  305. package/dist/chunks/Powerline-BaHDJlcO.js.map +0 -1
  306. package/dist/chunks/Prefs-CzIn-hlq.js +0 -302
  307. package/dist/chunks/Prefs-CzIn-hlq.js.map +0 -1
  308. package/dist/chunks/Properties-DJaDEJkT.js +0 -765
  309. package/dist/chunks/Properties-DJaDEJkT.js.map +0 -1
  310. package/dist/chunks/RadioGroup-B2_LUgDp.js.map +0 -1
  311. package/dist/chunks/RangeSlider-S2R3zA8N.js.map +0 -1
  312. package/dist/chunks/Select-CacMfs4v.js +0 -124
  313. package/dist/chunks/Select-CacMfs4v.js.map +0 -1
  314. package/dist/chunks/SelectionPanel-CbyUT3Dh.js +0 -572
  315. package/dist/chunks/SelectionPanel-CbyUT3Dh.js.map +0 -1
  316. package/dist/chunks/Sidebar-Cqcfx3_s.js.map +0 -1
  317. package/dist/chunks/SidebarPanel-BLzBo0S2.js.map +0 -1
  318. package/dist/chunks/Slider--DFRC_hc.js +0 -303
  319. package/dist/chunks/Slider--DFRC_hc.js.map +0 -1
  320. package/dist/chunks/StatusBar-B9NQ8atD.js.map +0 -1
  321. package/dist/chunks/Switch-C4NU-me1.js.map +0 -1
  322. package/dist/chunks/Tabs-9sODd2Ut.js.map +0 -1
  323. package/dist/chunks/Timeline-DOZgb1CG.js.map +0 -1
  324. package/dist/chunks/Toast-LpN1WK8E.js.map +0 -1
  325. package/dist/chunks/ToggleBar-Bxwv6xvj.js.map +0 -1
  326. package/dist/chunks/ToolButton-B81YjdwO.js.map +0 -1
  327. package/dist/chunks/ToolGroup-D7juDOC_.js.map +0 -1
  328. package/dist/chunks/ToolOptionsBar-B2xPWzJf.js +0 -27
  329. package/dist/chunks/ToolOptionsBar-B2xPWzJf.js.map +0 -1
  330. package/dist/chunks/ToolPalette-BSzmRJS7.js.map +0 -1
  331. package/dist/chunks/Tooltip-BHre_vbI.js.map +0 -1
  332. package/dist/chunks/createKeyframeLayer-AL4jP0EX.js.map +0 -1
  333. package/dist/chunks/icons-BV27dhKB.js.map +0 -1
  334. package/dist/chunks/number-f6PydOZK.js +0 -52
  335. package/dist/chunks/number-f6PydOZK.js.map +0 -1
  336. package/dist/chunks/range.module-CvSfABmu.js +0 -8
  337. package/dist/chunks/range.module-CvSfABmu.js.map +0 -1
  338. package/dist/chunks/schema-CPdFNeP6.js.map +0 -1
  339. package/dist/chunks/segmentedControl.module-BgvAPkSZ.js +0 -11
  340. package/dist/chunks/segmentedControl.module-BgvAPkSZ.js.map +0 -1
  341. package/dist/components/CurveEditor/snap.d.ts.map +0 -1
@@ -1,3 +1,3 @@
1
1
  export { Select, SelectItem } from './Select';
2
- export type { SelectProps, SelectItemProps, SelectOption } from './Select';
2
+ export type { SelectProps, SelectItemProps, SelectOption, SelectIndicator, SelectPopup, } from './Select';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Select/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Select/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9C,YAAY,EACV,WAAW,EACX,eAAe,EACf,YAAY,EACZ,eAAe,EACf,WAAW,GACZ,MAAM,UAAU,CAAC"}
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "../../chunks/Select-CacMfs4v.js";
1
+ import { n as e, t } from "../../chunks/Select-BEope086.js";
2
2
  export { t as Select, e as SelectItem };
@@ -1,54 +1,7 @@
1
1
  import { type ReactNode } from 'react';
2
- import { type NodePropertiesEntry, type NodeRoutingEntry, type Scene, type SelectionApi, type ToolPrefLeaf } from '@weasel-js/core';
3
- /** What a {@link PropertyRenderer} is given for the property it is rendering. */
4
- export interface PropertyRenderContext {
5
- /** Dotted node path of the leaf (`pose.x`, `data.fill`). */
6
- path: string;
7
- /** The schema leaf. App renderers narrow it to their own kind shape. */
8
- pref: ToolPrefLeaf;
9
- /** Aggregated value across the selection; `undefined` when mixed or unset. */
10
- value: unknown;
11
- /** True when selected nodes disagree at this path. */
12
- mixed: boolean;
13
- /**
14
- * True when the nodes agree and what they agree on is nothing — the field
15
- * is absent, and whatever paints comes from a fallback further down.
16
- *
17
- * Distinct from `mixed`, and both leave `value` undefined. A control must
18
- * not substitute its schema default here: doing so shows a value the node
19
- * does not hold, and the next edit writes that invention back.
20
- */
21
- unset: boolean;
22
- /**
23
- * The fields of the object this leaf is a field of — `undefined` for a
24
- * top-level leaf, and for a field of an object the node does not hold.
25
- *
26
- * What a control needs when its own field doesn't carry the whole answer:
27
- * a stroke's dash lengths are multiples of the stroke's width, so reading
28
- * the array as a style takes both.
29
- */
30
- siblings?: Record<string, unknown>;
31
- /** Commit a value — fans out to every selected node in one undo step. */
32
- setValue: (value: unknown) => void;
33
- /**
34
- * The aggregated value at another node path — what `value` and `mixed` are
35
- * for this leaf's own path, for any path.
36
- *
37
- * A control whose subject spans more than one field needs it: a font picker
38
- * reporting which variant will actually paint has to read the node's weight
39
- * and style. Reading it off `value` is impossible — a leaf is handed one
40
- * field.
41
- */
42
- valueAt: (path: string) => {
43
- value: unknown;
44
- mixed: boolean;
45
- };
46
- }
47
- /**
48
- * Renders the control for one property across the whole selection.
49
- * Returning `null` collapses the leaf.
50
- */
51
- export type PropertyRenderer = (ctx: PropertyRenderContext) => ReactNode;
2
+ import { type NodePropertiesEntry, type NodeRoutingEntry, type Scene, type SelectionApi } from '@weasel-js/core';
3
+ import { type PropertyRenderer } from './renderLeaf';
4
+ export type { PropertyRenderContext, PropertyRenderer } from './renderLeaf';
52
5
  /** Props for {@link SelectionPanel}. */
53
6
  export interface SelectionPanelProps<TData, TLayer extends string, TPose> {
54
7
  /** The scene handle (`useScene`). The panel subscribes itself, so it
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionPanel.d.ts","sourceRoot":"","sources":["../../../src/components/SelectionPanel/SelectionPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACjF,OAAO,EAIL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,KAAK,EACV,KAAK,YAAY,EAIjB,KAAK,YAAY,EAKlB,MAAM,iBAAiB,CAAC;AAyBzB,iFAAiF;AACjF,MAAM,WAAW,qBAAqB;IACpC,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,IAAI,EAAE,YAAY,CAAC;IACnB,8EAA8E;IAC9E,KAAK,EAAE,OAAO,CAAC;IACf,sDAAsD;IACtD,KAAK,EAAE,OAAO,CAAC;IACf;;;;;;;OAOG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,yEAAyE;IACzE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC;;;;;;;;OAQG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CAC/D;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,qBAAqB,KAAK,SAAS,CAAC;AAEzE,wCAAwC;AACxC,MAAM,WAAW,mBAAmB,CAAC,KAAK,EAAE,MAAM,SAAS,MAAM,EAAE,KAAK;IACtE;sEACkE;IAClE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC,iEAAiE;IACjE,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACzC;0EACsE;IACtE,UAAU,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC3C;2DACuD;IACvD,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACrC;;;uCAGmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC7C,2DAA2D;IAC3D,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,4CAA4C;IAC5C,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,SAAS,MAAM,EAAE,KAAK,EAChE,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,2CAwHjD"}
1
+ {"version":3,"file":"SelectionPanel.d.ts","sourceRoot":"","sources":["../../../src/components/SelectionPanel/SelectionPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvE,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,KAAK,EACV,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAC;AAatB,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE5E,wCAAwC;AACxC,MAAM,WAAW,mBAAmB,CAAC,KAAK,EAAE,MAAM,SAAS,MAAM,EAAE,KAAK;IACtE;sEACkE;IAClE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC,iEAAiE;IACjE,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACzC;0EACsE;IACtE,UAAU,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC3C;2DACuD;IACvD,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACrC;;;uCAGmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC7C,2DAA2D;IAC3D,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,4CAA4C;IAC5C,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,SAAS,MAAM,EAAE,KAAK,EAChE,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,2CAwHjD"}
@@ -1,2 +1,3 @@
1
- import { a as e, c as t, i as n, n as r, o as i, r as a, s as o, t as s } from "../../chunks/SelectionPanel-CbyUT3Dh.js";
2
- export { r as MIXED, s as SelectionPanel, a as aggregateValue, n as classifyKind, e as effectiveSections, i as kindBreakdown, o as nodeValueAt, t as setAtPath };
1
+ import { i as e, l as t, n, o as r, r as i, s as a, t as o } from "../../chunks/model-13kZ_-mE.js";
2
+ import { t as s } from "../../chunks/SelectionPanel-CEbLS-0D.js";
3
+ export { o as MIXED, s as SelectionPanel, n as aggregateValue, i as classifyKind, e as effectiveSections, r as kindBreakdown, a as nodeValueAt, t as setAtPath };
@@ -1,4 +1,4 @@
1
- import { MIXED, type Mixed, type NodePropertiesEntry, type NodeRoutingEntry, type SceneNode, type ToolPrefLeaf } from '@weasel-js/core';
1
+ import { MIXED, type Mixed, type NodePropertiesEntry, type NodeRoutingEntry, type SceneNode, type ToolPrefGroup, type ToolPrefLeaf } from '@weasel-js/core';
2
2
  export { MIXED };
3
3
  export type { Mixed };
4
4
  export type AnyNode = SceneNode<unknown, string, unknown>;
@@ -32,6 +32,9 @@ export interface PanelSection {
32
32
  * `data` through the routing entries (first match wins, `'unknown'`
33
33
  * otherwise) — same semantics as core's `NodeRouting.classify`. */
34
34
  export declare function classifyKind(node: AnyNode, routing: readonly NodeRoutingEntry[]): string;
35
+ export declare function isGroup(n: ToolPrefLeaf | ToolPrefGroup): n is ToolPrefGroup;
36
+ /** Merge consecutive leaves sharing a `pair` id into one labeled row. */
37
+ export declare function pairRows(leaves: readonly PanelLeaf[]): PanelRow[];
35
38
  /**
36
39
  * The schema the panel shows for a set of kinds: one kind → its full
37
40
  * schema; several → the intersection by (path, leaf kind), shaped by the
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/components/SelectionPanel/model.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,EACL,KAAK,KAAK,EACV,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EAEd,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EAAE,KAAK,EAAE,CAAC;AACjB,YAAY,EAAE,KAAK,EAAE,CAAC;AAEtB,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,EAAE,CAAC;CAClB;AAED;;oEAEoE;AACpE,wBAAgB,YAAY,CAC1B,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,SAAS,gBAAgB,EAAE,GACnC,MAAM,CAMR;AAiDD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,EAAE,SAAS,mBAAmB,EAAE,GACtC,YAAY,EAAE,CAkChB;AAED;;;uEAGuE;AACvE,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAUhE;AAED;;;;gDAIgD;AAChD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAiB3F;AAED,mEAAmE;AACnE,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,OAAO,EAAE,EACzB,IAAI,EAAE,MAAM,GACX,OAAO,GAAG,KAAK,CAajB;AAED,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAM9D"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/components/SelectionPanel/model.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,EACL,KAAK,KAAK,EACV,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EAAE,KAAK,EAAE,CAAC;AACjB,YAAY,EAAE,KAAK,EAAE,CAAC;AAEtB,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,EAAE,CAAC;CAClB;AAED;;oEAEoE;AACpE,wBAAgB,YAAY,CAC1B,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,SAAS,gBAAgB,EAAE,GACnC,MAAM,CAMR;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,CAAC,IAAI,aAAa,CAE3E;AA8BD,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,GAAG,QAAQ,EAAE,CAYjE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,EAAE,SAAS,mBAAmB,EAAE,GACtC,YAAY,EAAE,CAkChB;AAED;;;uEAGuE;AACvE,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAUhE;AAED;;;;gDAIgD;AAChD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAiB3F;AAED,mEAAmE;AACnE,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,OAAO,EAAE,EACzB,IAAI,EAAE,MAAM,GACX,OAAO,GAAG,KAAK,CAajB;AAED,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAM9D"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * The leaf → control mapping: one `ToolPrefLeaf` and its value in, one
3
+ * rendered control out, plus the run logic that turns a row of paired
4
+ * toggles into a single segmented bar.
5
+ *
6
+ * It lives beside `SelectionPanel` because it grew there and still draws on
7
+ * that stylesheet, but it is not the panel's: `ToolOptionsBar` renders a
8
+ * tool's options through the same function, so a leaf kind gets its control
9
+ * decided once rather than once per surface.
10
+ */
11
+ import { type ReactNode } from 'react';
12
+ import { type ToolPrefLeaf } from '@weasel-js/core';
13
+ /** What a {@link PropertyRenderer} is given for the property it is rendering. */
14
+ export interface PropertyRenderContext {
15
+ /** Dotted node path of the leaf (`pose.x`, `data.fill`). */
16
+ path: string;
17
+ /** The schema leaf. App renderers narrow it to their own kind shape. */
18
+ pref: ToolPrefLeaf;
19
+ /** Aggregated value across the selection; `undefined` when mixed or unset. */
20
+ value: unknown;
21
+ /** True when selected nodes disagree at this path. */
22
+ mixed: boolean;
23
+ /**
24
+ * True when the nodes agree and what they agree on is nothing — the field
25
+ * is absent, and whatever paints comes from a fallback further down.
26
+ *
27
+ * Distinct from `mixed`, and both leave `value` undefined. A control must
28
+ * not substitute its schema default here: doing so shows a value the node
29
+ * does not hold, and the next edit writes that invention back.
30
+ */
31
+ unset: boolean;
32
+ /**
33
+ * The fields of the object this leaf is a field of — `undefined` for a
34
+ * top-level leaf, and for a field of an object the node does not hold.
35
+ *
36
+ * What a control needs when its own field doesn't carry the whole answer:
37
+ * a stroke's dash lengths are multiples of the stroke's width, so reading
38
+ * the array as a style takes both.
39
+ */
40
+ siblings?: Record<string, unknown>;
41
+ /** Commit a value — fans out to every selected node in one undo step. */
42
+ setValue: (value: unknown) => void;
43
+ /**
44
+ * The aggregated value at another node path — what `value` and `mixed` are
45
+ * for this leaf's own path, for any path.
46
+ *
47
+ * A control whose subject spans more than one field needs it: a font picker
48
+ * reporting which variant will actually paint has to read the node's weight
49
+ * and style. Reading it off `value` is impossible — a leaf is handed one
50
+ * field.
51
+ */
52
+ valueAt: (path: string) => {
53
+ value: unknown;
54
+ mixed: boolean;
55
+ };
56
+ }
57
+ /**
58
+ * Renders the control for one property across the whole selection.
59
+ * Returning `null` collapses the leaf.
60
+ */
61
+ export type PropertyRenderer = (ctx: PropertyRenderContext) => ReactNode;
62
+ /**
63
+ * One leaf with its context built but nothing rendered yet.
64
+ *
65
+ * Deferring the render is what lets a run of sibling flags become one bar:
66
+ * whether a leaf joins its neighbors is a fact about the run, which no leaf
67
+ * rendering itself can see.
68
+ */
69
+ export interface LeafCell {
70
+ key: string;
71
+ leaf: ToolPrefLeaf;
72
+ ctx: PropertyRenderContext;
73
+ /** The accessible name this leaf's control carries — qualified by the row's
74
+ * pair where the row holds more than one leaf. */
75
+ ariaLabel: string;
76
+ /** Renders the leaf on its own, chrome and all. */
77
+ render: () => ReactNode;
78
+ }
79
+ /** A cell's content, once the run it belongs to has been decided. */
80
+ export interface RenderedCell {
81
+ key: string;
82
+ /** The leaf that names the cell — the run's first, for a flag bar. */
83
+ leaf: ToolPrefLeaf;
84
+ block: boolean;
85
+ content: ReactNode;
86
+ }
87
+ /**
88
+ * True for a leaf that can join a flag bar: a paired toggle boolean the
89
+ * consumer has not claimed with a renderer of its own.
90
+ */
91
+ export declare function isFlagCell(cell: LeafCell, renderers?: Record<string, PropertyRenderer>): boolean;
92
+ /**
93
+ * Renders a row's cells, collapsing each run of adjacent same-`pair` toggle
94
+ * booleans into one segmented bar — the idiom the enum toggle a row away
95
+ * already uses, rather than one detached pill per flag.
96
+ */
97
+ export declare function renderCells(cells: readonly LeafCell[], renderers?: Record<string, PropertyRenderer>): RenderedCell[];
98
+ export declare function renderBuiltin(ctx: PropertyRenderContext, ariaLabel: string, renderers?: Record<string, PropertyRenderer>,
99
+ /** Identifies the current selection, so a control holding per-selection
100
+ * scratch (the paint kind memory) is remounted rather than carried over. */
101
+ selectionKey?: string,
102
+ /** True for a field of an object leaf. Such a field writes itself into its
103
+ * parent, so it can only hold values its parent's type permits — which is
104
+ * what rules "none" out for a nested paint. */
105
+ nested?: boolean): ReactNode;
106
+ //# sourceMappingURL=renderLeaf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderLeaf.d.ts","sourceRoot":"","sources":["../../../src/components/SelectionPanel/renderLeaf.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAML,KAAK,YAAY,EAKlB,MAAM,iBAAiB,CAAC;AAgBzB,iFAAiF;AACjF,MAAM,WAAW,qBAAqB;IACpC,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,IAAI,EAAE,YAAY,CAAC;IACnB,8EAA8E;IAC9E,KAAK,EAAE,OAAO,CAAC;IACf,sDAAsD;IACtD,KAAK,EAAE,OAAO,CAAC;IACf;;;;;;;OAOG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,yEAAyE;IACzE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC;;;;;;;;OAQG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CAC/D;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,qBAAqB,KAAK,SAAS,CAAC;AAGzE;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,qBAAqB,CAAC;IAC3B;uDACmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,MAAM,EAAE,MAAM,SAAS,CAAC;CACzB;AAED,qEAAqE;AACrE,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,sEAAsE;IACtE,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,SAAS,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,OAAO,CAShG;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAC3C,YAAY,EAAE,CA8BhB;AA2CD,wBAAgB,aAAa,CAC3B,GAAG,EAAE,qBAAqB,EAC1B,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;AAC5C;6EAC6E;AAC7E,YAAY,SAAK;AACjB;;gDAEgD;AAChD,MAAM,UAAQ,GACb,SAAS,CAgRX"}
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/Sidebar-Cqcfx3_s.js";
1
+ import { t as e } from "../../chunks/Sidebar-qn_oSCNX.js";
2
2
  export { e as Sidebar };
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/SidebarPanel-BLzBo0S2.js";
1
+ import { t as e } from "../../chunks/SidebarPanel-Bs6V21hg.js";
2
2
  export { e as SidebarPanel };
@@ -49,6 +49,11 @@ export type TrackCtx = {
49
49
  trackWidth: number;
50
50
  valueToFraction: (v: number) => number;
51
51
  };
52
+ /** A {@link Slider} stop that carries a label, drawn under the track at the stop. */
53
+ export type SliderStop = {
54
+ value: number;
55
+ label?: ReactNode;
56
+ };
52
57
  /**
53
58
  * Props for {@link Slider}.
54
59
  *
@@ -59,6 +64,16 @@ export type TrackCtx = {
59
64
  * on it, and the arrow keys move stop to stop. `step` still quantizes the
60
65
  * values between them. Each one is drawn on the track as a mark; pass
61
66
  * `showStops: false` for a track whose own paint already reads as the stops.
67
+ * A stop given as a {@link SliderStop} with a `label` gets that label drawn
68
+ * under it; `stopLabels` narrows the row to the two ends or turns it off.
69
+ *
70
+ * `snap: 'strict'` makes every stop a detent the thumb must rest on: drags and
71
+ * track presses land on the nearest one, and `step` no longer applies.
72
+ * `spacing: 'even'` places the stops at equal intervals, runs the track from
73
+ * the first stop to the last, and maps values linearly within each gap — so a
74
+ * geometric list (0.25/0.5/1/2/4) gets usable room for every stop instead of
75
+ * four crowded into the first fifth. Both need stops; with fewer than two,
76
+ * `'even'` falls back to linear.
62
77
  *
63
78
  * `trackClick: 'move-nearest'` makes a press on bare track send the closest
64
79
  * thumb there and continue as a drag. It is off by default because on a
@@ -78,8 +93,11 @@ export type SliderProps<T extends Thumb = Thumb> = {
78
93
  min: number;
79
94
  max: number;
80
95
  step?: number;
81
- stops?: number[];
96
+ stops?: readonly (number | SliderStop)[];
82
97
  showStops?: boolean;
98
+ stopLabels?: 'all' | 'ends' | 'none';
99
+ snap?: 'magnetic' | 'strict';
100
+ spacing?: 'linear' | 'even';
83
101
  trackClick?: 'none' | 'move-nearest';
84
102
  constraint?: 'free' | 'ordered';
85
103
  onAddThumb?: (atValue: number) => T | null;
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../../../src/components/Slider/Slider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4K,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKpO;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,SAAS,GACT;IAAE,MAAM,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,SAAS,CAAA;CAAE,CAAC;AAEnD;;;;GAIG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,SAAS,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnE;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,IAAI;IACjD,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;IACrB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC;IAC3C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,SAAS,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;+EAC2E;IAC3E,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IACvD,gBAAgB,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,aAAa,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAsFF;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,YAAY,CAqWnF"}
1
+ {"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../../../src/components/Slider/Slider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqL,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAK7O;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,SAAS,GACT;IAAE,MAAM,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,SAAS,CAAA;CAAE,CAAC;AAEnD;;;;GAIG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,SAAS,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnE;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC,CAAC;AAEF,qFAAqF;AACrF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,IAAI;IACjD,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;IACrB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACrC,IAAI,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC7B,OAAO,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC;IAC3C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,SAAS,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;+EAC2E;IAC3E,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IACvD,gBAAgB,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,aAAa,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAiGF;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,YAAY,CAianF"}
@@ -1,3 +1,3 @@
1
1
  export { Slider } from './Slider';
2
- export type { SliderProps, Thumb, ThumbShape, ThumbRenderCtx, BoundsCtx, TrackCtx, } from './Slider';
2
+ export type { SliderProps, SliderStop, Thumb, ThumbShape, ThumbRenderCtx, BoundsCtx, TrackCtx, } from './Slider';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Slider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EACV,WAAW,EACX,KAAK,EACL,UAAU,EACV,cAAc,EACd,SAAS,EACT,QAAQ,GACT,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Slider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EACV,WAAW,EACX,UAAU,EACV,KAAK,EACL,UAAU,EACV,cAAc,EACd,SAAS,EACT,QAAQ,GACT,MAAM,UAAU,CAAC"}
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/Slider--DFRC_hc.js";
1
+ import { t as e } from "../../chunks/Slider-CIIrqiFS.js";
2
2
  export { e as Slider };
@@ -1,2 +1,2 @@
1
- import { n as e, r as t, t as n } from "../../chunks/StatusBar-B9NQ8atD.js";
1
+ import { n as e, r as t, t as n } from "../../chunks/StatusBar-B4L15DSm.js";
2
2
  export { n as StatusBar, e as StatusBarItem, t as StatusBarSpacer };
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/Switch-C4NU-me1.js";
1
+ import { t as e } from "../../chunks/Switch-DH5POG0T.js";
2
2
  export { e as Switch };
@@ -1,2 +1,2 @@
1
- import { i as e, n as t, r as n, t as r } from "../../chunks/Tabs-9sODd2Ut.js";
1
+ import { i as e, n as t, r as n, t as r } from "../../chunks/Tabs-BFHikpml.js";
2
2
  export { r as Tab, t as TabList, n as TabPanel, e as Tabs };
@@ -1 +1 @@
1
- {"version":3,"file":"Lane.d.ts","sourceRoot":"","sources":["../../../src/components/Timeline/Lane.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiH,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AACzJ,OAAO,EAAuC,KAAK,QAAQ,EAA8D,MAAM,iBAAiB,CAAC;AAGjJ,OAAO,EAA2C,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAGvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAQvC,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,sDAAsD;IACtD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,qCAAqC;IACrC,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,gDAAgD;IAChD,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,mEAAmE;IACnE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;IAC1D,0DAA0D;IAC1D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;IAC3D,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,oCAAoC;IACpC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAQD,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,YAAY,CAwKnD"}
1
+ {"version":3,"file":"Lane.d.ts","sourceRoot":"","sources":["../../../src/components/Timeline/Lane.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiH,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AACzJ,OAAO,EAAuC,KAAK,QAAQ,EAA8D,MAAM,iBAAiB,CAAC;AAGjJ,OAAO,EAA2C,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAGvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAKvC,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,sDAAsD;IACtD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,qCAAqC;IACrC,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,gDAAgD;IAChD,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,mEAAmE;IACnE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;IAC1D,0DAA0D;IAC1D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;IAC3D,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,oCAAoC;IACpC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAQD,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,YAAY,CAwKnD"}
@@ -1,2 +1,2 @@
1
- import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c } from "../../chunks/Timeline-DOZgb1CG.js";
2
- export { c as AnimatedTimeline, a as EASING_NAMES, e as EasingPicker, i as Timeline, o as Transport, s as easingBezier, t as easingLabel, n as samePath, r as sampleEasing };
1
+ import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c } from "../../chunks/Timeline-DNKY_yiK.js";
2
+ export { c as AnimatedTimeline, a as EASING_NAMES, e as EasingPicker, i as Timeline, n as Transport, s as easingBezier, t as easingLabel, o as samePath, r as sampleEasing };
@@ -31,5 +31,5 @@ export declare function setKeyEasing(tracks: readonly Track[], sel: KeySelection
31
31
  export declare function setKeys(tracks: readonly Track[], trackPath: readonly number[], keys: readonly Keyframe<unknown>[]): Track[];
32
32
  /** Set the selected key's value, leaving its time alone. */
33
33
  export declare function setKeyValue(tracks: readonly Track[], sel: KeySelection, value: unknown): Track[];
34
- export { snapToNearest as snapTime } from '../CurveEditor/snap';
34
+ export { snapToNearest as snapTime } from '../../snap';
35
35
  //# sourceMappingURL=keys.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/components/Timeline/keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,UAAU,EAAmB,KAAK,QAAQ,EAAyC,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGlJ,MAAM,WAAW,YAAY;IAC3B;;oBAEgB;IAChB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,SAAS,EAAE,YAAY,GAAG,IAAI,CAAC;CAChC;AAED,wDAAwD;AACxD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAE5E;AAgCD;;;;;;iEAMiE;AACjE,wBAAgB,OAAO,CACrB,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GACxD,OAAO,CA+BT;AAED;mDACmD;AACnD,wBAAgB,SAAS,CACvB,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GACnE,OAAO,CAeT;AAED,iDAAiD;AACjD,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAY9E;AAED,iEAAiE;AACjE,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,GAC1E,KAAK,EAAE,CAST;AAED,uEAAuE;AACvE,wBAAgB,OAAO,CACrB,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,QAAQ,CAAC,OAAO,CAAC,EAAE,GACzF,KAAK,EAAE,CAIT;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,GAC1D,KAAK,EAAE,CAQT;AAED,OAAO,EAAE,aAAa,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/components/Timeline/keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,UAAU,EAAmB,KAAK,QAAQ,EAAyC,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGlJ,MAAM,WAAW,YAAY;IAC3B;;oBAEgB;IAChB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,SAAS,EAAE,YAAY,GAAG,IAAI,CAAC;CAChC;AAED,wDAAwD;AACxD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAE5E;AAgCD;;;;;;iEAMiE;AACjE,wBAAgB,OAAO,CACrB,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GACxD,OAAO,CA+BT;AAED;mDACmD;AACnD,wBAAgB,SAAS,CACvB,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GACnE,OAAO,CAeT;AAED,iDAAiD;AACjD,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAY9E;AAED,iEAAiE;AACjE,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,GAC1E,KAAK,EAAE,CAST;AAED,uEAAuE;AACvE,wBAAgB,OAAO,CACrB,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,QAAQ,CAAC,OAAO,CAAC,EAAE,GACzF,KAAK,EAAE,CAIT;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,GAC1D,KAAK,EAAE,CAQT;AAED,OAAO,EAAE,aAAa,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC"}
@@ -1,2 +1,2 @@
1
- import { a as e, i as t, n, r, t as i } from "../../chunks/Toast-LpN1WK8E.js";
1
+ import { a as e, i as t, n, r, t as i } from "../../chunks/Toast-CI1UDuK6.js";
2
2
  export { n as ToastQueue, i as ToastRegion, r as createToastQueue, t as defaultToastQueue, e as toast };
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/ToggleBar-Bxwv6xvj.js";
1
+ import { t as e } from "../../chunks/ToggleBar-CClus5Cd.js";
2
2
  export { e as ToggleBar };
@@ -0,0 +1,39 @@
1
+ import { type TokenCategory, type TokenEntry, type TokenScale } from './tokenTypes';
2
+ type OnChange = (name: string, value: string | null) => void;
3
+ /** Props for `<TokenPanel>`. */
4
+ export interface TokenPanelProps {
5
+ tokens: readonly TokenEntry[];
6
+ /** A token's new value, or null to drop its override. Keep it stable: rows re-render only when it or their token changes. */
7
+ onChange: OnChange;
8
+ /** Sections held closed, by category. Omit to let the panel keep that state itself. */
9
+ collapsed?: Readonly<Partial<Record<TokenCategory, boolean>>>;
10
+ onCollapsedChange?: (category: TokenCategory, collapsed: boolean) => void;
11
+ /** Groups generated from a base, by group name. Such a group edits its base and rule above its steps. */
12
+ scales?: Readonly<Record<string, TokenScale>>;
13
+ /** A scale's new base or rule. The panel does not regenerate the steps; the consumer does, through `onChange`. */
14
+ onScaleChange?: (group: string, scale: TokenScale) => void;
15
+ /** Files a token under a section. Defaults to `tokenCategory`. */
16
+ categorize?: (token: TokenEntry) => TokenCategory;
17
+ /** The fewest colors, or sizes, sharing a group that draw as one row of swatches or one grid of steps. Default 3. */
18
+ familySize?: number;
19
+ /**
20
+ * Row layout. `tight` puts a token on one line — name, control, Reset — with the
21
+ * names on a fixed rail so the values read down the panel as a column, and caps
22
+ * the field rather than letting it span the panel. Default `normal` stacks the
23
+ * control under its name.
24
+ */
25
+ density?: 'tight' | 'normal';
26
+ className?: string;
27
+ }
28
+ /**
29
+ * Edits a set of design tokens by type: collapsible sections by category, a
30
+ * color group drawn as one row of swatches sized to fit, a group of sizes drawn
31
+ * as one grid of numbers labeled by step — with its base and rule above it when
32
+ * `scales` says how it is generated — and a control for each
33
+ * type — a number with its unit for dimensions and durations, the nine weights
34
+ * for a font weight, a curve beside a `cubic-bezier()`, a swatch beside a color,
35
+ * and text for everything else.
36
+ */
37
+ export declare function TokenPanel({ tokens, onChange, collapsed, onCollapsedChange, scales, onScaleChange, categorize, familySize, density, className, }: TokenPanelProps): import("react/jsx-runtime").JSX.Element;
38
+ export {};
39
+ //# sourceMappingURL=TokenPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenPanel.d.ts","sourceRoot":"","sources":["../../../src/components/TokenPanel/TokenPanel.tsx"],"names":[],"mappings":"AAWA,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,UAAU,EAGhB,MAAM,cAAc,CAAC;AAEtB,KAAK,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;AAE7D,gCAAgC;AAChC,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9B,6HAA6H;IAC7H,QAAQ,EAAE,QAAQ,CAAC;IACnB,uFAAuF;IACvF,SAAS,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9D,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1E,yGAAyG;IACzG,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9C,kHAAkH;IAClH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC3D,kEAAkE;IAClE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,aAAa,CAAC;IAClD,qHAAqH;IACrH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA2aD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,MAAM,EACN,aAAa,EACb,UAA0B,EAC1B,UAAc,EACd,OAAkB,EAClB,SAAS,GACV,EAAE,eAAe,2CAqCjB"}
@@ -0,0 +1,7 @@
1
+ type Supports = ((value: string) => boolean) | null;
2
+ /** Whether `value` is a CSS color — the browser's answer where it has `CSS.supports`, a small parser's otherwise. */
3
+ export declare function parsesAsColor(value: string, supports?: Supports): boolean;
4
+ /** `value` as the `#rrggbb` a color input takes, alpha dropped; null when it cannot be converted. */
5
+ export declare function toHex(value: string): string | null;
6
+ export {};
7
+ //# sourceMappingURL=color.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../src/components/TokenPanel/color.ts"],"names":[],"mappings":"AA0BA,KAAK,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC;AAQpD,qHAAqH;AACrH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,QAA4B,GAAG,OAAO,CAM5F;AAqCD,qGAAqG;AACrG,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMlD"}
@@ -0,0 +1,5 @@
1
+ export { TokenPanel } from './TokenPanel';
2
+ export type { TokenPanelProps } from './TokenPanel';
3
+ export { inferTokenType, refitScale, TOKEN_CATEGORIES, tokenCategory } from './tokenTypes';
4
+ export type { TokenCategory, TokenEntry, TokenScale, TokenScaleRule } from './tokenTypes';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/TokenPanel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3F,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { a as e, i as t, n, r, t as i } from "../../chunks/TokenPanel-BPHq24dc.js";
2
+ export { n as TOKEN_CATEGORIES, i as TokenPanel, r as inferTokenType, t as refitScale, e as tokenCategory };
@@ -0,0 +1,55 @@
1
+ /** A design token as `TokenPanel` edits it. */
2
+ export interface TokenEntry {
3
+ /** The custom property, e.g. `--wzl-gray-50`. */
4
+ name: string;
5
+ /** A DTCG type name. A type the panel has no control for edits as text. */
6
+ type: string;
7
+ /** Tokens sharing a group sit together; a color group large enough draws as one row of swatches. */
8
+ group: string;
9
+ value: string;
10
+ /** Whether `value` overrides the token's own, which offers Reset. */
11
+ overridden?: boolean;
12
+ description?: string;
13
+ }
14
+ /** How a scale's steps follow from its base: one multiplier per step, a constant ratio, or a constant step. */
15
+ export type TokenScaleRule = {
16
+ kind: 'factors';
17
+ factors: readonly number[];
18
+ } | {
19
+ kind: 'ratio';
20
+ ratio: number;
21
+ } | {
22
+ kind: 'step';
23
+ step: number;
24
+ };
25
+ /** A group whose steps are generated from a base, so the panel edits the base and the rule rather than each step. */
26
+ export interface TokenScale {
27
+ /** The generated tokens, smallest first. Anything else in the group draws as an ordinary step. */
28
+ tokens: readonly string[];
29
+ base: number;
30
+ rule: TokenScaleRule;
31
+ }
32
+ /**
33
+ * The same scale under another rule, fitted to the amounts its steps have now.
34
+ * A ratio or step counts from the first step, so switching to one moves the
35
+ * base there.
36
+ */
37
+ export declare function refitScale(scale: TokenScale, kind: TokenScaleRule['kind'], amounts: readonly number[]): TokenScale;
38
+ export type TokenCategory = 'color' | 'type' | 'size' | 'motion' | 'depth' | 'other';
39
+ /** The panel's sections, in the order it draws them. */
40
+ export declare const TOKEN_CATEGORIES: readonly {
41
+ id: TokenCategory;
42
+ title: string;
43
+ }[];
44
+ /** The section a token is filed under: by its type, and for a bare dimension or number by its group. */
45
+ export declare function tokenCategory(token: TokenEntry): TokenCategory;
46
+ /** A DTCG type read off the shape of a value, for a token that arrives without one. `'string'` when nothing fits. */
47
+ export declare function inferTokenType(value: string): string;
48
+ /** A number and its unit, or null for a value that is not one. */
49
+ export declare function splitUnit(value: string): {
50
+ amount: number;
51
+ unit: string;
52
+ } | null;
53
+ /** The four control points of a `cubic-bezier()`, or null for any other easing. */
54
+ export declare function bezierPoints(value: string): readonly [number, number, number, number] | null;
55
+ //# sourceMappingURL=tokenTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenTypes.d.ts","sourceRoot":"","sources":["../../../src/components/TokenPanel/tokenTypes.ts"],"names":[],"mappings":"AAEA,+CAA+C;AAC/C,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,oGAAoG;IACpG,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,+GAA+G;AAC/G,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC,qHAAqH;AACrH,MAAM,WAAW,UAAU;IACzB,kGAAkG;IAClG,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;CACtB;AAID;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAYlH;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAErF,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,EAAE,SAAS;IAAE,EAAE,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAO3E,CAAC;AAIF,wGAAwG;AACxG,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,CAqB9D;AAyBD,qHAAqH;AACrH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWpD;AAED,kEAAkE;AAClE,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAGhF;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAK5F"}
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/ToolButton-B81YjdwO.js";
1
+ import { t as e } from "../../chunks/ToolButton-9QzJCmuM.js";
2
2
  export { e as ToolButton };
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/ToolGroup-D7juDOC_.js";
1
+ import { t as e } from "../../chunks/ToolGroup-BJiDrH_i.js";
2
2
  export { e as ToolGroup };
@@ -1,4 +1,6 @@
1
1
  import type { ReactNode } from 'react';
2
+ import type { ToolPrefGroup } from '@weasel-js/core';
3
+ import { type PropertyRenderer } from '../SelectionPanel/renderLeaf';
2
4
  /** Props for {@link ToolOptionsBar}. */
3
5
  export interface ToolOptionsBarProps {
4
6
  /**
@@ -12,34 +14,43 @@ export interface ToolOptionsBarProps {
12
14
  * toolbar", then "Text" again when browsing into the visible span).
13
15
  * `aria-labelledby` would avoid the echo at the cost of id plumbing and
14
16
  * an awkward no-`id`-to-point-at case when `label` is omitted. The
15
- * double-announcement is common enough for labelled landmark regions
17
+ * double-announcement is common enough for labeled landmark regions
16
18
  * that it's left as-is — considered, not missed.
17
19
  */
18
20
  label?: string;
21
+ /**
22
+ * The active tool's options. Leaves draw through the same leaf → control
23
+ * mapping `SelectionPanel` uses, so a kind gets its control decided in one
24
+ * place; groups organize without drawing, since the bar is one line.
25
+ */
26
+ schema?: ToolPrefGroup;
27
+ /** Each leaf's value, keyed by dotted path. A path with no entry is unset. */
28
+ values?: Readonly<Record<string, unknown>>;
29
+ /** A leaf edit, as the dotted path it was declared at and its new value. */
30
+ onChange?: (path: string, value: unknown) => void;
31
+ /** Paths whose sources disagree — drawn as the control's mixed state. */
32
+ mixed?: ReadonlySet<string>;
33
+ /** Control overrides, by dotted path or by leaf kind, as the panel takes. */
34
+ renderers?: Record<string, PropertyRenderer>;
19
35
  children?: ReactNode;
20
36
  className?: string;
21
37
  }
22
38
  /**
23
- * Horizontal strip reserved above the workspace for contextual tool
24
- * options — its first tenant is the character controls a text tool
25
- * exposes while a caret range is active. Pure chrome: it renders an
26
- * optional label and a children slot, nothing else. It knows nothing
27
- * about text, or about any specific tool — any tool can fill it.
39
+ * Horizontal strip reserved above the workspace for contextual tool options.
40
+ * Given a `schema` it draws the active tool's options itself; the children
41
+ * slot stays open for a tenant that is not a tool's options at all, such as
42
+ * loupe controls.
28
43
  *
29
- * The row always renders, even with no `label` and no `children`,
30
- * because the app reserves its height permanently rather than mounting
31
- * it on demand — mounting mid-edit would resize the workspace under a
32
- * canvas that's sized to the page.
44
+ * The row always renders, even empty, because the app reserves its height
45
+ * permanently rather than mounting it on demand — mounting mid-edit would
46
+ * resize the workspace under a canvas that's sized to the page.
33
47
  *
34
48
  * `role="toolbar"` without roving tabindex: the ARIA authoring practices
35
- * expect arrow-key roving focus across a toolbar's items, but this
36
- * component doesn't own or know the shape of its children — they're
37
- * arbitrary, possibly compound controls (`NumberField`, `Select`,
38
- * `ColorField`) that already use arrow keys for their own value editing.
39
- * Imposing roving focus here would fight those controls' own key
40
- * handling. Tab order falls back to normal DOM order for now; revisit
41
- * once the first tenant's control set is concrete and a roving-focus
42
- * contract can be designed in coordination with those controls.
49
+ * expect arrow-key roving focus across a toolbar's items, but a bar of
50
+ * compound controls (`NumberField`, `Select`, `ColorField`) must leave the
51
+ * arrow keys to them — they edit their own value with them. That is true of
52
+ * schema-drawn controls as much as of arbitrary children, so the bar keeps
53
+ * plain DOM tab order and `useRovingTabIndex` documents this as its opt-out.
43
54
  */
44
55
  export declare function ToolOptionsBar(props: ToolOptionsBarProps): import("react/jsx-runtime").JSX.Element;
45
56
  //# sourceMappingURL=ToolOptionsBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolOptionsBar.d.ts","sourceRoot":"","sources":["../../../src/components/ToolOptionsBar/ToolOptionsBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,wCAAwC;AACxC,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,2CASxD"}
1
+ {"version":3,"file":"ToolOptionsBar.d.ts","sourceRoot":"","sources":["../../../src/components/ToolOptionsBar/ToolOptionsBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,8BAA8B,CAAC;AAItC,wCAAwC;AACxC,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3C,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,yEAAyE;IACzE,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,2CAsBxD"}
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/ToolOptionsBar-B2xPWzJf.js";
1
+ import { t as e } from "../../chunks/ToolOptionsBar-CAM6RcUH.js";
2
2
  export { e as ToolOptionsBar };