@weasel-js/ui 1.5.2 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (466) hide show
  1. package/dist/chunks/ActionBar-CYvfmEz0.js +57 -0
  2. package/dist/chunks/ActionBar-CYvfmEz0.js.map +1 -0
  3. package/dist/chunks/{Badge-CW9pBPFl.js → Badge-DZ0lFs14.js} +755 -738
  4. package/dist/chunks/Badge-DZ0lFs14.js.map +1 -0
  5. package/dist/chunks/{BandEditor-jY-PFKY6.js → BandEditor-D-nVrVO4.js} +34 -34
  6. package/dist/chunks/{BandEditor-jY-PFKY6.js.map → BandEditor-D-nVrVO4.js.map} +1 -1
  7. package/dist/chunks/Button-Dyp31jMt.js +111 -0
  8. package/dist/chunks/Button-Dyp31jMt.js.map +1 -0
  9. package/dist/chunks/ButtonBar-smZzFuEo.js +46 -0
  10. package/dist/chunks/ButtonBar-smZzFuEo.js.map +1 -0
  11. package/dist/chunks/Callout-xLjnx7Mp.js +119 -0
  12. package/dist/chunks/Callout-xLjnx7Mp.js.map +1 -0
  13. package/dist/chunks/{Checkbox-BOsDAY2F.js → Checkbox-ChZz30Ds.js} +1 -1
  14. package/dist/chunks/{Checkbox-BOsDAY2F.js.map → Checkbox-ChZz30Ds.js.map} +1 -1
  15. package/dist/chunks/Code-v4tDWuuN.js +24 -0
  16. package/dist/chunks/Code-v4tDWuuN.js.map +1 -0
  17. package/dist/chunks/{ColorField-BYzgZM9o.js → ColorField-DJSCuSJv.js} +15 -15
  18. package/dist/chunks/ColorField-DJSCuSJv.js.map +1 -0
  19. package/dist/chunks/ColorModeControl-JOEiqtE0.js +47 -0
  20. package/dist/chunks/ColorModeControl-JOEiqtE0.js.map +1 -0
  21. package/dist/chunks/{ComboBox-Cz3f0Y_8.js → ComboBox-C1JgIpML.js} +2 -2
  22. package/dist/chunks/{ComboBox-Cz3f0Y_8.js.map → ComboBox-C1JgIpML.js.map} +1 -1
  23. package/dist/chunks/{CurveEditor-DXwSP-iA.js → CurveEditor-f1R4kSbD.js} +2 -2
  24. package/dist/chunks/{CurveEditor-DXwSP-iA.js.map → CurveEditor-f1R4kSbD.js.map} +1 -1
  25. package/dist/chunks/DataGrid-CZPrB_3a.js +152 -0
  26. package/dist/chunks/DataGrid-CZPrB_3a.js.map +1 -0
  27. package/dist/chunks/DetailList-DHaXX4TG.js +43 -0
  28. package/dist/chunks/DetailList-DHaXX4TG.js.map +1 -0
  29. package/dist/chunks/{DetentSlider-CAubVX0J.js → DetentSlider-BYyaZha6.js} +2 -2
  30. package/dist/chunks/{DetentSlider-CAubVX0J.js.map → DetentSlider-BYyaZha6.js.map} +1 -1
  31. package/dist/chunks/Dialog-GIvjoDQj.js +66 -0
  32. package/dist/chunks/Dialog-GIvjoDQj.js.map +1 -0
  33. package/dist/chunks/Disclosure-D79jhmh2.js +58 -0
  34. package/dist/chunks/Disclosure-D79jhmh2.js.map +1 -0
  35. package/dist/chunks/DragGhost-DcU7cOwy.js +30 -0
  36. package/dist/chunks/DragGhost-DcU7cOwy.js.map +1 -0
  37. package/dist/chunks/{DragHandleGlyph-CppAz4_8.js → DragHandleGlyph-BtBxHjZS.js} +1 -1
  38. package/dist/chunks/{DragHandleGlyph-CppAz4_8.js.map → DragHandleGlyph-BtBxHjZS.js.map} +1 -1
  39. package/dist/chunks/{Field-DWnV8WZY.js → Field-xbqRmjsI.js} +1 -1
  40. package/dist/chunks/{Field-DWnV8WZY.js.map → Field-xbqRmjsI.js.map} +1 -1
  41. package/dist/chunks/FillStrokeSwatch-BViKXIPx.js +111 -0
  42. package/dist/chunks/FillStrokeSwatch-BViKXIPx.js.map +1 -0
  43. package/dist/chunks/{FontFamilySelect-DxfgTC3G.js → FontFamilySelect-r9TV_xIH.js} +2 -2
  44. package/dist/chunks/{FontFamilySelect-DxfgTC3G.js.map → FontFamilySelect-r9TV_xIH.js.map} +1 -1
  45. package/dist/chunks/GradientEditor-BRTxHG-W.js +333 -0
  46. package/dist/chunks/{GradientEditor-rRBmf3G0.js.map → GradientEditor-BRTxHG-W.js.map} +1 -1
  47. package/dist/chunks/{Icon-DT0x6HaQ.js → Icon-BW0qv_U7.js} +28 -20
  48. package/dist/chunks/Icon-BW0qv_U7.js.map +1 -0
  49. package/dist/chunks/InlineRange-BwGFDhpT.js +29 -0
  50. package/dist/chunks/InlineRange-BwGFDhpT.js.map +1 -0
  51. package/dist/chunks/{Input-DbMKpkXy.js → Input-Bx2cuUbS.js} +24 -19
  52. package/dist/chunks/Input-Bx2cuUbS.js.map +1 -0
  53. package/dist/chunks/ItemList-DzJ2lK0R.js +175 -0
  54. package/dist/chunks/ItemList-DzJ2lK0R.js.map +1 -0
  55. package/dist/chunks/ItemList.module-DDUXfuZL.js +14 -0
  56. package/dist/chunks/ItemList.module-DDUXfuZL.js.map +1 -0
  57. package/dist/chunks/{Jog-DkkTlL3_.js → Jog-LPoac9s4.js} +6 -6
  58. package/dist/chunks/{Jog-DkkTlL3_.js.map → Jog-LPoac9s4.js.map} +1 -1
  59. package/dist/chunks/{Keycaps-DunVpejA.js → Keycaps-CKiKOJnJ.js} +71 -65
  60. package/dist/chunks/Keycaps-CKiKOJnJ.js.map +1 -0
  61. package/dist/chunks/LayerList-BeGrkLb9.js +427 -0
  62. package/dist/chunks/LayerList-BeGrkLb9.js.map +1 -0
  63. package/dist/chunks/ListEditor-C6zLzCsJ.js +74 -0
  64. package/dist/chunks/ListEditor-C6zLzCsJ.js.map +1 -0
  65. package/dist/chunks/MenuButton-BcdhrNGh.js +70 -0
  66. package/dist/chunks/MenuButton-BcdhrNGh.js.map +1 -0
  67. package/dist/chunks/MeshEditor-BOOIFWnz.js +87 -0
  68. package/dist/chunks/MeshEditor-BOOIFWnz.js.map +1 -0
  69. package/dist/chunks/{NumberField-CCjEDZCg.js → NumberField-C1Y7zP-a.js} +27 -22
  70. package/dist/chunks/NumberField-C1Y7zP-a.js.map +1 -0
  71. package/dist/chunks/{OptionsBar-DeQ-vUeZ.js → OptionsBar-DlcagPYK.js} +3 -3
  72. package/dist/chunks/{OptionsBar-DeQ-vUeZ.js.map → OptionsBar-DlcagPYK.js.map} +1 -1
  73. package/dist/chunks/{PaintField-jBOJ32rL.js → PaintField-B2mLRZa4.js} +20 -20
  74. package/dist/chunks/PaintField-B2mLRZa4.js.map +1 -0
  75. package/dist/chunks/{PaintInput-Qs7Rul5R.js → PaintInput-BFKhd83I.js} +24 -24
  76. package/dist/chunks/{PaintInput-Qs7Rul5R.js.map → PaintInput-BFKhd83I.js.map} +1 -1
  77. package/dist/chunks/{PatternPicker-BMpXWboq.js → PatternPicker-DdfpxoQy.js} +2 -2
  78. package/dist/chunks/{PatternPicker-BMpXWboq.js.map → PatternPicker-DdfpxoQy.js.map} +1 -1
  79. package/dist/chunks/{Plot2D-CXf_f7QD.js → Plot2D-lyO7waPQ.js} +1 -1
  80. package/dist/chunks/{Plot2D-CXf_f7QD.js.map → Plot2D-lyO7waPQ.js.map} +1 -1
  81. package/dist/chunks/{PointPlotter-S_gz7VYt.js → PointPlotter-DGs9i5P-.js} +2 -2
  82. package/dist/chunks/{PointPlotter-S_gz7VYt.js.map → PointPlotter-DGs9i5P-.js.map} +1 -1
  83. package/dist/chunks/{Powerline-Ak5AWUlK.js → Powerline-DBEPceLE.js} +4 -2
  84. package/dist/chunks/Powerline-DBEPceLE.js.map +1 -0
  85. package/dist/chunks/Prefs-Ctu0H4-b.js +475 -0
  86. package/dist/chunks/Prefs-Ctu0H4-b.js.map +1 -0
  87. package/dist/chunks/Properties-Bbneh1ws.js +281 -0
  88. package/dist/chunks/Properties-Bbneh1ws.js.map +1 -0
  89. package/dist/chunks/PropertyField-CDb19d3F.js +756 -0
  90. package/dist/chunks/PropertyField-CDb19d3F.js.map +1 -0
  91. package/dist/chunks/{RadioGroup-CsVp3SEu.js → RadioGroup-BK2mD6Q0.js} +2 -2
  92. package/dist/chunks/{RadioGroup-CsVp3SEu.js.map → RadioGroup-BK2mD6Q0.js.map} +1 -1
  93. package/dist/chunks/{RangeSlider-DNr-pJpZ.js → RangeSlider-BiRAOsTh.js} +1 -1
  94. package/dist/chunks/{RangeSlider-DNr-pJpZ.js.map → RangeSlider-BiRAOsTh.js.map} +1 -1
  95. package/dist/chunks/{ResizeHandle-RXFf5fXr.js → ResizeHandle-Cc6EOehs.js} +9 -9
  96. package/dist/chunks/{ResizeHandle-RXFf5fXr.js.map → ResizeHandle-Cc6EOehs.js.map} +1 -1
  97. package/dist/chunks/Select-DVValBe1.js +225 -0
  98. package/dist/chunks/Select-DVValBe1.js.map +1 -0
  99. package/dist/chunks/{SelectionPanel-CEbLS-0D.js → SelectionPanel-C5LmZA7b.js} +21 -20
  100. package/dist/chunks/{SelectionPanel-CEbLS-0D.js.map → SelectionPanel-C5LmZA7b.js.map} +1 -1
  101. package/dist/chunks/{Sidebar-qn_oSCNX.js → Sidebar-DKKd4R-x.js} +1 -1
  102. package/dist/chunks/{Sidebar-qn_oSCNX.js.map → Sidebar-DKKd4R-x.js.map} +1 -1
  103. package/dist/chunks/{SidebarPanel-Bs6V21hg.js → SidebarPanel-u5NsuAZY.js} +15 -19
  104. package/dist/chunks/SidebarPanel-u5NsuAZY.js.map +1 -0
  105. package/dist/chunks/{Slider-CIIrqiFS.js → Slider-BwRrWHFW.js} +42 -42
  106. package/dist/chunks/{Slider-CIIrqiFS.js.map → Slider-BwRrWHFW.js.map} +1 -1
  107. package/dist/chunks/{StatusBar-B4L15DSm.js → StatusBar-CdPdmmda.js} +1 -1
  108. package/dist/chunks/{StatusBar-B4L15DSm.js.map → StatusBar-CdPdmmda.js.map} +1 -1
  109. package/dist/chunks/SwatchGrid-C-Zx2Exd.js +73 -0
  110. package/dist/chunks/SwatchGrid-C-Zx2Exd.js.map +1 -0
  111. package/dist/chunks/{Switch-DH5POG0T.js → Switch-DxF7TsEu.js} +1 -1
  112. package/dist/chunks/{Switch-DH5POG0T.js.map → Switch-DxF7TsEu.js.map} +1 -1
  113. package/dist/chunks/{Tabs-BFHikpml.js → Tabs-GXEfoe3o.js} +1 -1
  114. package/dist/chunks/{Tabs-BFHikpml.js.map → Tabs-GXEfoe3o.js.map} +1 -1
  115. package/dist/chunks/{Timeline-DNKY_yiK.js → Timeline-SgmpQtUV.js} +128 -132
  116. package/dist/chunks/Timeline-SgmpQtUV.js.map +1 -0
  117. package/dist/chunks/{Toast-CI1UDuK6.js → Toast-BfcljZz6.js} +1 -1
  118. package/dist/chunks/{Toast-CI1UDuK6.js.map → Toast-BfcljZz6.js.map} +1 -1
  119. package/dist/chunks/ToggleBar-Btnl5r7F.js +80 -0
  120. package/dist/chunks/{ToggleBar-CClus5Cd.js.map → ToggleBar-Btnl5r7F.js.map} +1 -1
  121. package/dist/chunks/{TokenPanel-BPHq24dc.js → TokenPanel-5ajHEHha.js} +40 -40
  122. package/dist/chunks/{TokenPanel-BPHq24dc.js.map → TokenPanel-5ajHEHha.js.map} +1 -1
  123. package/dist/chunks/{ToolButton-9QzJCmuM.js → ToolButton-rzqlFlAc.js} +4 -4
  124. package/dist/chunks/{ToolButton-9QzJCmuM.js.map → ToolButton-rzqlFlAc.js.map} +1 -1
  125. package/dist/chunks/{ToolGroup-BJiDrH_i.js → ToolGroup-4bUBV5k6.js} +1 -1
  126. package/dist/chunks/{ToolGroup-BJiDrH_i.js.map → ToolGroup-4bUBV5k6.js.map} +1 -1
  127. package/dist/chunks/{ToolOptionsBar-CAM6RcUH.js → ToolOptionsBar-BF3TNXA3.js} +2 -2
  128. package/dist/chunks/{ToolOptionsBar-CAM6RcUH.js.map → ToolOptionsBar-BF3TNXA3.js.map} +1 -1
  129. package/dist/chunks/ToolPalette-Uw4PvWwa.js +83 -0
  130. package/dist/chunks/ToolPalette-Uw4PvWwa.js.map +1 -0
  131. package/dist/chunks/{Tooltip-C4YBczLq.js → Tooltip-9XiJF937.js} +13 -13
  132. package/dist/chunks/Tooltip-9XiJF937.js.map +1 -0
  133. package/dist/chunks/Tree-BGt6P8tI.js +203 -0
  134. package/dist/chunks/Tree-BGt6P8tI.js.map +1 -0
  135. package/dist/chunks/{createKeyframeLayer-DKtO0Sw_.js → createKeyframeLayer-BzDRCrrh.js} +71 -71
  136. package/dist/chunks/{createKeyframeLayer-DKtO0Sw_.js.map → createKeyframeLayer-BzDRCrrh.js.map} +1 -1
  137. package/dist/chunks/formatShortcut-BoGqUoWi.js +15 -0
  138. package/dist/chunks/formatShortcut-BoGqUoWi.js.map +1 -0
  139. package/dist/chunks/icons-DbScMMqX.js +179 -0
  140. package/dist/chunks/icons-DbScMMqX.js.map +1 -0
  141. package/dist/chunks/interactiveTarget-C7QUBaJN.js +24 -0
  142. package/dist/chunks/interactiveTarget-C7QUBaJN.js.map +1 -0
  143. package/dist/chunks/{keyGlyph-Bp0wnLHn.js → keyGlyph-CLvUHU8c.js} +1 -1
  144. package/dist/chunks/{keyGlyph-Bp0wnLHn.js.map → keyGlyph-CLvUHU8c.js.map} +1 -1
  145. package/dist/chunks/model-BQMvTLnW.js +360 -0
  146. package/dist/chunks/model-BQMvTLnW.js.map +1 -0
  147. package/dist/chunks/{number-BHz66zQO.js → number-6S8IzXVt.js} +3 -3
  148. package/dist/chunks/number-6S8IzXVt.js.map +1 -0
  149. package/dist/chunks/paintPreview-DPtZS4yU.js +42 -0
  150. package/dist/chunks/paintPreview-DPtZS4yU.js.map +1 -0
  151. package/dist/chunks/paintValue-Bz6AVuh3.js +18 -0
  152. package/dist/chunks/paintValue-Bz6AVuh3.js.map +1 -0
  153. package/dist/chunks/prefField-CLkhrvYl.js +197 -0
  154. package/dist/chunks/prefField-CLkhrvYl.js.map +1 -0
  155. package/dist/chunks/segmentTooltip-CAkZlW-t.js +29 -0
  156. package/dist/chunks/segmentTooltip-CAkZlW-t.js.map +1 -0
  157. package/dist/chunks/segmentedControl.module-D2nw68Yo.js +11 -0
  158. package/dist/chunks/segmentedControl.module-D2nw68Yo.js.map +1 -0
  159. package/dist/chunks/{snap-CEjuWOhN.js → snap-DC4Km8xG.js} +1 -1
  160. package/dist/chunks/{snap-CEjuWOhN.js.map → snap-DC4Km8xG.js.map} +1 -1
  161. package/dist/chunks/stance-CarrcbbP.js +17 -0
  162. package/dist/chunks/stance-CarrcbbP.js.map +1 -0
  163. package/dist/chunks/useReorderDragList-Dcezzgix.js +131 -0
  164. package/dist/chunks/useReorderDragList-Dcezzgix.js.map +1 -0
  165. package/dist/chunks/{useRovingTabIndex-Dkpf_KhN.js → useRovingTabIndex-B4uJqiKP.js} +1 -1
  166. package/dist/chunks/useRovingTabIndex-B4uJqiKP.js.map +1 -0
  167. package/dist/color/ramp.d.ts +38 -0
  168. package/dist/color/ramp.d.ts.map +1 -0
  169. package/dist/components/ActionBar/ActionBar.d.ts +6 -4
  170. package/dist/components/ActionBar/ActionBar.d.ts.map +1 -1
  171. package/dist/components/ActionBar/index.js +1 -1
  172. package/dist/components/Badge/Badge.d.ts +21 -7
  173. package/dist/components/Badge/Badge.d.ts.map +1 -1
  174. package/dist/components/Badge/effects/Aqua.d.ts +1 -1
  175. package/dist/components/Badge/effects/Aqua.d.ts.map +1 -1
  176. package/dist/components/Badge/index.d.ts +1 -1
  177. package/dist/components/Badge/index.d.ts.map +1 -1
  178. package/dist/components/Badge/index.js +1 -1
  179. package/dist/components/Badge/types.d.ts +6 -5
  180. package/dist/components/Badge/types.d.ts.map +1 -1
  181. package/dist/components/BandEditor/index.js +1 -1
  182. package/dist/components/Button/Button.d.ts +17 -3
  183. package/dist/components/Button/Button.d.ts.map +1 -1
  184. package/dist/components/Button/index.d.ts +1 -1
  185. package/dist/components/Button/index.d.ts.map +1 -1
  186. package/dist/components/Button/index.js +1 -1
  187. package/dist/components/ButtonBar/ButtonBar.d.ts +36 -0
  188. package/dist/components/ButtonBar/ButtonBar.d.ts.map +1 -0
  189. package/dist/components/ButtonBar/index.d.ts +3 -0
  190. package/dist/components/ButtonBar/index.d.ts.map +1 -0
  191. package/dist/components/ButtonBar/index.js +2 -0
  192. package/dist/components/Callout/Callout.d.ts +2 -5
  193. package/dist/components/Callout/Callout.d.ts.map +1 -1
  194. package/dist/components/Callout/index.d.ts +1 -1
  195. package/dist/components/Callout/index.d.ts.map +1 -1
  196. package/dist/components/Callout/index.js +1 -1
  197. package/dist/components/Checkbox/index.js +1 -1
  198. package/dist/components/Code/Code.d.ts +28 -0
  199. package/dist/components/Code/Code.d.ts.map +1 -0
  200. package/dist/components/Code/index.d.ts +3 -0
  201. package/dist/components/Code/index.d.ts.map +1 -0
  202. package/dist/components/Code/index.js +2 -0
  203. package/dist/components/ColorField/index.js +1 -1
  204. package/dist/components/ColorModeControl/ColorModeControl.d.ts +21 -0
  205. package/dist/components/ColorModeControl/ColorModeControl.d.ts.map +1 -0
  206. package/dist/components/ColorModeControl/index.d.ts +3 -0
  207. package/dist/components/ColorModeControl/index.d.ts.map +1 -0
  208. package/dist/components/ColorModeControl/index.js +2 -0
  209. package/dist/components/ComboBox/index.js +1 -1
  210. package/dist/components/CurveEditor/index.js +3 -3
  211. package/dist/components/DataGrid/DataGrid.d.ts +22 -0
  212. package/dist/components/DataGrid/DataGrid.d.ts.map +1 -1
  213. package/dist/components/DataGrid/index.js +1 -1
  214. package/dist/components/DetailList/DetailList.d.ts +36 -0
  215. package/dist/components/DetailList/DetailList.d.ts.map +1 -0
  216. package/dist/components/DetailList/index.d.ts +3 -0
  217. package/dist/components/DetailList/index.d.ts.map +1 -0
  218. package/dist/components/DetailList/index.js +2 -0
  219. package/dist/components/DetentSlider/index.js +1 -1
  220. package/dist/components/Dialog/Dialog.d.ts +8 -2
  221. package/dist/components/Dialog/Dialog.d.ts.map +1 -1
  222. package/dist/components/Dialog/index.js +1 -1
  223. package/dist/components/Disclosure/Disclosure.d.ts +25 -17
  224. package/dist/components/Disclosure/Disclosure.d.ts.map +1 -1
  225. package/dist/components/Disclosure/index.d.ts +2 -2
  226. package/dist/components/Disclosure/index.d.ts.map +1 -1
  227. package/dist/components/Disclosure/index.js +2 -2
  228. package/dist/components/DragGhost/DragGhost.d.ts +21 -0
  229. package/dist/components/DragGhost/DragGhost.d.ts.map +1 -0
  230. package/dist/components/DragGhost/index.d.ts +3 -0
  231. package/dist/components/DragGhost/index.d.ts.map +1 -0
  232. package/dist/components/DragGhost/index.js +2 -0
  233. package/dist/components/DragHandleGlyph/index.js +1 -1
  234. package/dist/components/Field/index.js +1 -1
  235. package/dist/components/FillStrokeSwatch/FillStrokeSwatch.d.ts +45 -0
  236. package/dist/components/FillStrokeSwatch/FillStrokeSwatch.d.ts.map +1 -0
  237. package/dist/components/FillStrokeSwatch/index.d.ts +3 -0
  238. package/dist/components/FillStrokeSwatch/index.d.ts.map +1 -0
  239. package/dist/components/FillStrokeSwatch/index.js +2 -0
  240. package/dist/components/FontFamilySelect/index.js +1 -1
  241. package/dist/components/GradientEditor/SceneGradientHandles.d.ts.map +1 -1
  242. package/dist/components/GradientEditor/index.js +1 -1
  243. package/dist/components/InlineRange/InlineRange.d.ts +6 -2
  244. package/dist/components/InlineRange/InlineRange.d.ts.map +1 -1
  245. package/dist/components/InlineRange/index.js +1 -1
  246. package/dist/components/Input/Input.d.ts +13 -0
  247. package/dist/components/Input/Input.d.ts.map +1 -1
  248. package/dist/components/Input/index.js +1 -1
  249. package/dist/components/ItemList/ItemList.d.ts +70 -10
  250. package/dist/components/ItemList/ItemList.d.ts.map +1 -1
  251. package/dist/components/ItemList/index.js +1 -1
  252. package/dist/components/Jog/index.js +1 -1
  253. package/dist/components/Keycaps/index.d.ts +1 -0
  254. package/dist/components/Keycaps/index.d.ts.map +1 -1
  255. package/dist/components/Keycaps/index.js +3 -3
  256. package/dist/components/Keycaps/keySpecsFromMods.d.ts +2 -0
  257. package/dist/components/Keycaps/keySpecsFromMods.d.ts.map +1 -1
  258. package/dist/components/Keycaps/keySpecsFromShortcut.d.ts +16 -0
  259. package/dist/components/Keycaps/keySpecsFromShortcut.d.ts.map +1 -0
  260. package/dist/components/LayerList/LayerList.d.ts +79 -0
  261. package/dist/components/LayerList/LayerList.d.ts.map +1 -0
  262. package/dist/components/LayerList/index.d.ts +3 -0
  263. package/dist/components/LayerList/index.d.ts.map +1 -0
  264. package/dist/components/LayerList/index.js +2 -0
  265. package/dist/components/LayerList/useSceneLayerList.d.ts +20 -0
  266. package/dist/components/LayerList/useSceneLayerList.d.ts.map +1 -0
  267. package/dist/components/ListEditor/ListEditor.d.ts +23 -0
  268. package/dist/components/ListEditor/ListEditor.d.ts.map +1 -0
  269. package/dist/components/ListEditor/index.d.ts +3 -0
  270. package/dist/components/ListEditor/index.d.ts.map +1 -0
  271. package/dist/components/ListEditor/index.js +2 -0
  272. package/dist/components/MenuButton/MenuButton.d.ts +6 -2
  273. package/dist/components/MenuButton/MenuButton.d.ts.map +1 -1
  274. package/dist/components/MenuButton/index.js +1 -1
  275. package/dist/components/MeshEditor/index.js +1 -1
  276. package/dist/components/NumberField/NumberField.d.ts +13 -0
  277. package/dist/components/NumberField/NumberField.d.ts.map +1 -1
  278. package/dist/components/NumberField/index.js +1 -1
  279. package/dist/components/OptionsBar/index.js +1 -1
  280. package/dist/components/PaintField/index.js +1 -1
  281. package/dist/components/PaintInput/index.js +1 -1
  282. package/dist/components/PatternPicker/index.js +1 -1
  283. package/dist/components/Plot2D/index.js +1 -1
  284. package/dist/components/PointPlotter/index.js +1 -1
  285. package/dist/components/Powerline/Powerline.d.ts +4 -3
  286. package/dist/components/Powerline/Powerline.d.ts.map +1 -1
  287. package/dist/components/Powerline/index.js +2 -2
  288. package/dist/components/Prefs/PrefsDialog.d.ts +10 -2
  289. package/dist/components/Prefs/PrefsDialog.d.ts.map +1 -1
  290. package/dist/components/Prefs/PrefsForm.d.ts +26 -25
  291. package/dist/components/Prefs/PrefsForm.d.ts.map +1 -1
  292. package/dist/components/Prefs/PrefsPane.d.ts +24 -0
  293. package/dist/components/Prefs/PrefsPane.d.ts.map +1 -0
  294. package/dist/components/Prefs/PrefsRail.d.ts +32 -0
  295. package/dist/components/Prefs/PrefsRail.d.ts.map +1 -0
  296. package/dist/components/Prefs/PrefsRow.d.ts +32 -0
  297. package/dist/components/Prefs/PrefsRow.d.ts.map +1 -0
  298. package/dist/components/Prefs/index.d.ts +5 -2
  299. package/dist/components/Prefs/index.d.ts.map +1 -1
  300. package/dist/components/Prefs/index.js +3 -3
  301. package/dist/components/Prefs/prefField.d.ts +36 -0
  302. package/dist/components/Prefs/prefField.d.ts.map +1 -0
  303. package/dist/components/Prefs/schema.d.ts +30 -0
  304. package/dist/components/Prefs/schema.d.ts.map +1 -1
  305. package/dist/components/Properties/DialogRow.d.ts +33 -0
  306. package/dist/components/Properties/DialogRow.d.ts.map +1 -0
  307. package/dist/components/Properties/PropertyField.d.ts +238 -0
  308. package/dist/components/Properties/PropertyField.d.ts.map +1 -0
  309. package/dist/components/Properties/PropertyGroup.d.ts +12 -3
  310. package/dist/components/Properties/PropertyGroup.d.ts.map +1 -1
  311. package/dist/components/Properties/PropertyPanel.d.ts +32 -236
  312. package/dist/components/Properties/PropertyPanel.d.ts.map +1 -1
  313. package/dist/components/Properties/Subpanel.d.ts +14 -0
  314. package/dist/components/Properties/Subpanel.d.ts.map +1 -0
  315. package/dist/components/Properties/index.d.ts +8 -4
  316. package/dist/components/Properties/index.d.ts.map +1 -1
  317. package/dist/components/Properties/index.js +3 -2
  318. package/dist/components/Properties/storyLayouts.d.ts.map +1 -1
  319. package/dist/components/RadioGroup/index.js +1 -1
  320. package/dist/components/RangeSlider/index.js +1 -1
  321. package/dist/components/ResizeHandle/index.js +1 -1
  322. package/dist/components/Select/Select.d.ts +38 -5
  323. package/dist/components/Select/Select.d.ts.map +1 -1
  324. package/dist/components/Select/index.d.ts +2 -2
  325. package/dist/components/Select/index.d.ts.map +1 -1
  326. package/dist/components/Select/index.js +2 -2
  327. package/dist/components/SelectionPanel/index.js +2 -2
  328. package/dist/components/SelectionPanel/renderLeaf.d.ts +14 -8
  329. package/dist/components/SelectionPanel/renderLeaf.d.ts.map +1 -1
  330. package/dist/components/Sidebar/index.js +1 -1
  331. package/dist/components/SidebarPanel/SidebarPanel.d.ts +2 -2
  332. package/dist/components/SidebarPanel/SidebarPanel.d.ts.map +1 -1
  333. package/dist/components/SidebarPanel/index.js +1 -1
  334. package/dist/components/Slider/index.js +1 -1
  335. package/dist/components/StatusBar/index.js +1 -1
  336. package/dist/components/SwatchGrid/SwatchGrid.d.ts +34 -0
  337. package/dist/components/SwatchGrid/SwatchGrid.d.ts.map +1 -0
  338. package/dist/components/SwatchGrid/index.d.ts +3 -0
  339. package/dist/components/SwatchGrid/index.d.ts.map +1 -0
  340. package/dist/components/SwatchGrid/index.js +2 -0
  341. package/dist/components/Switch/index.js +1 -1
  342. package/dist/components/Tabs/index.js +1 -1
  343. package/dist/components/Timeline/Lane.d.ts.map +1 -1
  344. package/dist/components/Timeline/index.js +1 -1
  345. package/dist/components/Toast/index.js +1 -1
  346. package/dist/components/ToggleBar/ToggleBar.d.ts +2 -1
  347. package/dist/components/ToggleBar/ToggleBar.d.ts.map +1 -1
  348. package/dist/components/ToggleBar/index.js +1 -1
  349. package/dist/components/TokenPanel/index.js +1 -1
  350. package/dist/components/ToolButton/index.js +1 -1
  351. package/dist/components/ToolGroup/index.js +1 -1
  352. package/dist/components/ToolOptionsBar/index.js +1 -1
  353. package/dist/components/ToolPalette/index.d.ts +1 -0
  354. package/dist/components/ToolPalette/index.d.ts.map +1 -1
  355. package/dist/components/ToolPalette/index.js +3 -2
  356. package/dist/components/Tooltip/Tooltip.d.ts +6 -2
  357. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  358. package/dist/components/Tooltip/index.d.ts +1 -1
  359. package/dist/components/Tooltip/index.d.ts.map +1 -1
  360. package/dist/components/Tooltip/index.js +2 -2
  361. package/dist/components/Tree/Tree.d.ts +84 -0
  362. package/dist/components/Tree/Tree.d.ts.map +1 -0
  363. package/dist/components/Tree/index.d.ts +3 -0
  364. package/dist/components/Tree/index.d.ts.map +1 -0
  365. package/dist/components/Tree/index.js +2 -0
  366. package/dist/components/segmentTooltip.d.ts +30 -0
  367. package/dist/components/segmentTooltip.d.ts.map +1 -0
  368. package/dist/components/stance.d.ts +30 -0
  369. package/dist/components/stance.d.ts.map +1 -0
  370. package/dist/components/stanceCss.d.ts +31 -0
  371. package/dist/components/stanceCss.d.ts.map +1 -0
  372. package/dist/components/stanceSurfaces.d.ts +4 -0
  373. package/dist/components/stanceSurfaces.d.ts.map +1 -0
  374. package/dist/format/number.d.ts +3 -2
  375. package/dist/format/number.d.ts.map +1 -1
  376. package/dist/icons/Icon.d.ts.map +1 -1
  377. package/dist/icons/ShapeKindIcon.d.ts +10 -0
  378. package/dist/icons/ShapeKindIcon.d.ts.map +1 -0
  379. package/dist/icons/index.d.ts +5 -3
  380. package/dist/icons/index.d.ts.map +1 -1
  381. package/dist/icons/paths.d.ts +2 -0
  382. package/dist/icons/paths.d.ts.map +1 -1
  383. package/dist/index.d.ts +16 -3
  384. package/dist/index.d.ts.map +1 -1
  385. package/dist/index.js +110 -78
  386. package/dist/index.js.map +1 -1
  387. package/dist/interactiveTarget.d.ts +9 -0
  388. package/dist/interactiveTarget.d.ts.map +1 -0
  389. package/dist/style.css +1 -1
  390. package/dist/useReorderDragList.d.ts +36 -7
  391. package/dist/useReorderDragList.d.ts.map +1 -1
  392. package/dist/useRovingTabIndex.d.ts +1 -1
  393. package/dist/useScrollSpy.d.ts +48 -0
  394. package/dist/useScrollSpy.d.ts.map +1 -0
  395. package/package.json +8 -8
  396. package/dist/chunks/ActionBar-CLwiY3Jg.js +0 -62
  397. package/dist/chunks/ActionBar-CLwiY3Jg.js.map +0 -1
  398. package/dist/chunks/ActionsBar-D84a4eGy.js +0 -41
  399. package/dist/chunks/ActionsBar-D84a4eGy.js.map +0 -1
  400. package/dist/chunks/Badge-CW9pBPFl.js.map +0 -1
  401. package/dist/chunks/Button-DRSApvnK.js +0 -90
  402. package/dist/chunks/Button-DRSApvnK.js.map +0 -1
  403. package/dist/chunks/Callout-DrNu-9Qr.js +0 -122
  404. package/dist/chunks/Callout-DrNu-9Qr.js.map +0 -1
  405. package/dist/chunks/ColorField-BYzgZM9o.js.map +0 -1
  406. package/dist/chunks/DataGrid-C8KrYtw7.js +0 -104
  407. package/dist/chunks/DataGrid-C8KrYtw7.js.map +0 -1
  408. package/dist/chunks/Dialog-fGqqQ6o_.js +0 -61
  409. package/dist/chunks/Dialog-fGqqQ6o_.js.map +0 -1
  410. package/dist/chunks/Disclosure-CILDfWsU.js +0 -47
  411. package/dist/chunks/Disclosure-CILDfWsU.js.map +0 -1
  412. package/dist/chunks/GradientEditor-rRBmf3G0.js +0 -333
  413. package/dist/chunks/Icon-DT0x6HaQ.js.map +0 -1
  414. package/dist/chunks/InlineRange-DdIlfGqG.js +0 -29
  415. package/dist/chunks/InlineRange-DdIlfGqG.js.map +0 -1
  416. package/dist/chunks/Input-DbMKpkXy.js.map +0 -1
  417. package/dist/chunks/ItemList-B9zYb0GE.js +0 -42
  418. package/dist/chunks/ItemList-B9zYb0GE.js.map +0 -1
  419. package/dist/chunks/Keycaps-DunVpejA.js.map +0 -1
  420. package/dist/chunks/LayerStack-CfQ6GsRz.js +0 -142
  421. package/dist/chunks/LayerStack-CfQ6GsRz.js.map +0 -1
  422. package/dist/chunks/MenuButton-C_4nox39.js +0 -60
  423. package/dist/chunks/MenuButton-C_4nox39.js.map +0 -1
  424. package/dist/chunks/MeshEditor-Bipz-Ocl.js +0 -123
  425. package/dist/chunks/MeshEditor-Bipz-Ocl.js.map +0 -1
  426. package/dist/chunks/NumberField-CCjEDZCg.js.map +0 -1
  427. package/dist/chunks/PaintField-jBOJ32rL.js.map +0 -1
  428. package/dist/chunks/Powerline-Ak5AWUlK.js.map +0 -1
  429. package/dist/chunks/Prefs-CNC8tzyN.js +0 -308
  430. package/dist/chunks/Prefs-CNC8tzyN.js.map +0 -1
  431. package/dist/chunks/Properties-Rnb6TAbN.js +0 -891
  432. package/dist/chunks/Properties-Rnb6TAbN.js.map +0 -1
  433. package/dist/chunks/Select-BEope086.js +0 -190
  434. package/dist/chunks/Select-BEope086.js.map +0 -1
  435. package/dist/chunks/SidebarPanel-Bs6V21hg.js.map +0 -1
  436. package/dist/chunks/Timeline-DNKY_yiK.js.map +0 -1
  437. package/dist/chunks/ToggleBar-CClus5Cd.js +0 -75
  438. package/dist/chunks/ToolPalette-DGkKwE7D.js +0 -97
  439. package/dist/chunks/ToolPalette-DGkKwE7D.js.map +0 -1
  440. package/dist/chunks/Tooltip-C4YBczLq.js.map +0 -1
  441. package/dist/chunks/icons-DFLytcui.js +0 -165
  442. package/dist/chunks/icons-DFLytcui.js.map +0 -1
  443. package/dist/chunks/model-13kZ_-mE.js +0 -483
  444. package/dist/chunks/model-13kZ_-mE.js.map +0 -1
  445. package/dist/chunks/number-BHz66zQO.js.map +0 -1
  446. package/dist/chunks/range.module-DSsOIq1R.js +0 -8
  447. package/dist/chunks/range.module-DSsOIq1R.js.map +0 -1
  448. package/dist/chunks/schema-Dft4Cu2p.js +0 -47
  449. package/dist/chunks/schema-Dft4Cu2p.js.map +0 -1
  450. package/dist/chunks/segmentedControl.module-DS72X1ns.js +0 -11
  451. package/dist/chunks/segmentedControl.module-DS72X1ns.js.map +0 -1
  452. package/dist/chunks/useReorderDragList-CSQGd7zQ.js +0 -102
  453. package/dist/chunks/useReorderDragList-CSQGd7zQ.js.map +0 -1
  454. package/dist/chunks/useRovingTabIndex-Dkpf_KhN.js.map +0 -1
  455. package/dist/components/ActionsBar/ActionsBar.d.ts +0 -35
  456. package/dist/components/ActionsBar/ActionsBar.d.ts.map +0 -1
  457. package/dist/components/ActionsBar/index.d.ts +0 -3
  458. package/dist/components/ActionsBar/index.d.ts.map +0 -1
  459. package/dist/components/ActionsBar/index.js +0 -2
  460. package/dist/components/LayerStack/LayerStack.d.ts +0 -62
  461. package/dist/components/LayerStack/LayerStack.d.ts.map +0 -1
  462. package/dist/components/LayerStack/index.d.ts +0 -2
  463. package/dist/components/LayerStack/index.d.ts.map +0 -1
  464. package/dist/components/LayerStack/index.js +0 -2
  465. package/dist/components/Properties/EffectCard.d.ts +0 -69
  466. package/dist/components/Properties/EffectCard.d.ts.map +0 -1
@@ -1,24 +1,8 @@
1
- import { type ReactNode } from 'react';
2
- import { type PrefGroup, type PrefLeaf } from './schema';
3
- /** What a {@link PrefRenderer} is given for the leaf it is rendering. */
4
- export interface PrefRenderContext {
5
- /** Dotted path of the leaf within the schema root. */
6
- path: string;
7
- /** The schema node. App renderers narrow this to their own kind shape. */
8
- pref: PrefLeaf;
9
- /** Current value — `values` at `path`, falling back to `pref.default`. */
10
- value: unknown;
11
- setValue: (value: unknown) => void;
12
- /** Whether this leaf is currently auto — not pinned, computed by the owner. */
13
- auto: boolean;
14
- /** Toggle this leaf's auto state. */
15
- setAuto: (next: boolean) => void;
16
- }
17
- /**
18
- * Renders the control cell for one preference leaf. Returning `null`
19
- * collapses the row.
20
- */
21
- export type PrefRenderer = (ctx: PrefRenderContext) => ReactNode;
1
+ import { type PrefGroup } from './schema';
2
+ import { type PrefRenderer } from './PrefsRow';
3
+ export type { PrefRenderer, PrefRenderContext } from './PrefsRow';
4
+ /** How a {@link PrefsForm} lays its groups out. */
5
+ export type PrefsLayout = 'columns' | 'rail';
22
6
  /** Props for {@link PrefsForm}. */
23
7
  export interface PrefsFormProps {
24
8
  /** Root of the schema tree. Core `ToolPrefGroup`s assign structurally. */
@@ -40,13 +24,30 @@ export interface PrefsFormProps {
40
24
  renderers?: Record<string, PrefRenderer>;
41
25
  /** Reveal `hidden` leaves (dev tooling). Default false. */
42
26
  showHidden?: boolean;
27
+ /**
28
+ * `'columns'` (the default) wraps each top-level group into its own panel
29
+ * column. `'rail'` puts a two-level navigation rail beside one group's
30
+ * settings at a time — what a dialog-sized surface wants, since columns
31
+ * overflow sideways once there are more than two.
32
+ */
33
+ layout?: PrefsLayout;
34
+ /** Show a filter field that narrows the form to matching leaves. */
35
+ filterable?: boolean;
36
+ /** Rail layout: path of the open top-level group. Controlled. */
37
+ section?: string;
38
+ /** Rail layout: path of the group open before the reader picks one.
39
+ * Defaults to the first in the schema. */
40
+ defaultSection?: string;
41
+ onSectionChange?: (path: string) => void;
43
42
  className?: string;
44
43
  }
45
44
  /**
46
- * Schema-driven preferences form. Top-level groups render as columns,
47
- * nested groups as indented sub-panels, leaves as label + control rows.
48
- * Storage-agnostic: pair with `PrefsDialog` for the modal composition,
49
- * and persist however the app likes via `onChange`.
45
+ * Schema-driven preferences form. Leaves render as label + control rows;
46
+ * how the groups around them are arranged is `layout`'s to say — columns of
47
+ * panels, or a navigation rail beside one group at a time.
48
+ *
49
+ * Storage-agnostic: pair with `PrefsDialog` for the modal composition, and
50
+ * persist however the app likes via `onChange`.
50
51
  */
51
52
  export declare function PrefsForm(props: PrefsFormProps): import("react/jsx-runtime").JSX.Element;
52
53
  //# sourceMappingURL=PrefsForm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PrefsForm.d.ts","sourceRoot":"","sources":["../../../src/components/Prefs/PrefsForm.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAehD,OAAO,EAML,KAAK,SAAS,EACd,KAAK,QAAQ,EACd,MAAM,UAAU,CAAC;AAGlB,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,IAAI,EAAE,QAAQ,CAAC;IACf,0EAA0E;IAC1E,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,+EAA+E;IAC/E,IAAI,EAAE,OAAO,CAAC;IACd,qCAAqC;IACrC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,iBAAiB,KAAK,SAAS,CAAC;AAEjE,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,MAAM,EAAE,SAAS,CAAC;IAClB;8DAC0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;0CACsC;IACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CAsB9C"}
1
+ {"version":3,"file":"PrefsForm.d.ts","sourceRoot":"","sources":["../../../src/components/Prefs/PrefsForm.tsx"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAW,KAAK,YAAY,EAAgB,MAAM,YAAY,CAAC;AAKtE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAElE,mDAAmD;AACnD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;AAE7C,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,MAAM,EAAE,SAAS,CAAC;IAClB;8DAC0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;0CACsC;IACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,oEAAoE;IACpE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;+CAC2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CAgE9C"}
@@ -0,0 +1,24 @@
1
+ import { type RefObject } from 'react';
2
+ import { type PrefGroup } from './schema';
3
+ import { type WalkCtx } from './PrefsRow';
4
+ /** Props for {@link PrefsPane}. */
5
+ export interface PrefsPaneProps {
6
+ ctx: WalkCtx;
7
+ /** The open group, or a synthetic one holding the root's loose leaves. */
8
+ group: PrefGroup;
9
+ /** Dotted path of `group`. Empty for the loose-leaf pane. */
10
+ path: string;
11
+ /** The pane's scroll container, for the rail's scroll spy. */
12
+ scrollRef: RefObject<HTMLDivElement | null>;
13
+ className?: string;
14
+ }
15
+ /**
16
+ * One rail section's settings: the group's own leaves, then one headed
17
+ * section per nested group.
18
+ *
19
+ * Nothing here draws a panel. The rail is the layout's structure, and a card
20
+ * inside a dialog that already has a border only restates it — the columns
21
+ * layout's sunken panels are what this is the alternative to.
22
+ */
23
+ export declare function PrefsPane(props: PrefsPaneProps): import("react/jsx-runtime").JSX.Element;
24
+ //# sourceMappingURL=PrefsPane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrefsPane.d.ts","sourceRoot":"","sources":["../../../src/components/Prefs/PrefsPane.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAc,KAAK,SAAS,EAAiB,MAAM,UAAU,CAAC;AACrE,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAGnD,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,OAAO,CAAC;IACb,0EAA0E;IAC1E,KAAK,EAAE,SAAS,CAAC;IACjB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,SAAS,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CAoC9C"}
@@ -0,0 +1,32 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { PrefRailItem } from './schema';
3
+ /** Props for {@link PrefsRail}. */
4
+ export interface PrefsRailProps {
5
+ items: readonly PrefRailItem[];
6
+ /** Path of the open depth-0 group. */
7
+ section: string;
8
+ /** Path of the depth-1 group in view, from the pane's scroll spy. */
9
+ current: string | null;
10
+ /** A depth-0 entry was chosen: open its pane. */
11
+ onOpen: (path: string) => void;
12
+ /** A depth-1 entry was chosen: scroll the open pane to it. */
13
+ onScrollTo: (path: string) => void;
14
+ /** Accessible name for the rail's landmark. */
15
+ ariaLabel: string;
16
+ /** Rendered above the list — the filter field, when there is one. */
17
+ header?: ReactNode;
18
+ /** Show each entry's match count. Only meaningful while filtering. */
19
+ showCounts?: boolean;
20
+ }
21
+ /**
22
+ * The rail beside a `PrefsForm` pane: depth-0 groups, each followed by the
23
+ * depth-1 groups that scroll within it.
24
+ *
25
+ * A list of buttons rather than a tablist, because only half of these entries
26
+ * switch anything — the nested ones scroll the pane the selected entry already
27
+ * opened, and a tab that does not own a panel has no honest role. The open
28
+ * group is `aria-current="page"`; the nested group in view is
29
+ * `aria-current="location"`.
30
+ */
31
+ export declare function PrefsRail(props: PrefsRailProps): import("react/jsx-runtime").JSX.Element;
32
+ //# sourceMappingURL=PrefsRail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrefsRail.d.ts","sourceRoot":"","sources":["../../../src/components/Prefs/PrefsRail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG7C,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iDAAiD;IACjD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,8DAA8D;IAC9D,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,sEAAsE;IACtE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CAyC9C"}
@@ -0,0 +1,32 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type PrefLeaf } from './schema';
3
+ /** What a {@link PrefRenderer} is given for the leaf it is rendering. */
4
+ export interface PrefRenderContext {
5
+ /** Dotted path of the leaf within the schema root. */
6
+ path: string;
7
+ /** The schema node. App renderers narrow this to their own kind shape. */
8
+ pref: PrefLeaf;
9
+ /** Current value — `values` at `path`, falling back to `pref.default`. */
10
+ value: unknown;
11
+ setValue: (value: unknown) => void;
12
+ /** Whether this leaf is currently auto — not pinned, computed by the owner. */
13
+ auto: boolean;
14
+ /** Toggle this leaf's auto state. */
15
+ setAuto: (next: boolean) => void;
16
+ }
17
+ /**
18
+ * Renders the control cell for one preference leaf. Returning `null`
19
+ * collapses the row.
20
+ */
21
+ export type PrefRenderer = (ctx: PrefRenderContext) => ReactNode;
22
+ export interface WalkCtx {
23
+ values: unknown;
24
+ onChange: (path: string, value: unknown) => void;
25
+ renderers?: Record<string, PrefRenderer>;
26
+ }
27
+ export declare function PrefRow({ ctx, path, pref }: {
28
+ ctx: WalkCtx;
29
+ path: string;
30
+ pref: PrefLeaf;
31
+ }): import("react/jsx-runtime").JSX.Element | null;
32
+ //# sourceMappingURL=PrefsRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrefsRow.d.ts","sourceRoot":"","sources":["../../../src/components/Prefs/PrefsRow.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,EAIL,KAAK,QAAQ,EAEd,MAAM,UAAU,CAAC;AAGlB,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,IAAI,EAAE,QAAQ,CAAC;IACf,0EAA0E;IAC1E,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,+EAA+E;IAC/E,IAAI,EAAE,OAAO,CAAC;IACd,qCAAqC;IACrC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,iBAAiB,KAAK,SAAS,CAAC;AAEjE,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC1C;AAED,wBAAgB,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,kDA+B1F"}
@@ -1,4 +1,7 @@
1
- export { PrefsForm, type PrefsFormProps, type PrefRenderer, type PrefRenderContext } from './PrefsForm';
1
+ export { PrefsForm, type PrefsFormProps, type PrefsLayout, type PrefRenderer, type PrefRenderContext, } from './PrefsForm';
2
+ export { prefFieldProps, type PrefFieldState } from './prefField';
3
+ export { PrefsRail, type PrefsRailProps } from './PrefsRail';
4
+ export { PrefsPane, type PrefsPaneProps } from './PrefsPane';
2
5
  export { PrefsDialog, type PrefsDialogProps } from './PrefsDialog';
3
- export { isPrefLeaf, prefDisplayBounds, prefValueAtPath, visiblePrefSubtree, type BuiltinPref, type PrefBoolean, type PrefBooleanControl, type PrefColor, type PrefCustom, type PrefEnum, type PrefEnumControl, type PrefEnumEncoding, type PrefGroup, type PrefKind, type PrefLeaf, type PrefNumber, type PrefNumberControl, type PrefNumberFormat, type PrefNumberUnit, type PrefPaint, type PrefObject, type PrefString, type PrefStringControl, } from './schema';
6
+ export { filterPrefSubtree, isPrefLeaf, prefDisplayBounds, prefRailItems, prefValueAtPath, visiblePrefSubtree, type PrefRailItem, type BuiltinPref, type PrefBoolean, type PrefBooleanControl, type PrefColor, type PrefCustom, type PrefEnum, type PrefEnumControl, type PrefEnumEncoding, type PrefGroup, type PrefKind, type PrefLeaf, type PrefNumber, type PrefNumberControl, type PrefNumberFormat, type PrefNumberUnit, type PrefPaint, type PrefObject, type PrefString, type PrefStringControl, } from './schema';
4
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Prefs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACxG,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,iBAAiB,GACvB,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Prefs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,iBAAiB,GACvB,MAAM,UAAU,CAAC"}
@@ -1,3 +1,3 @@
1
- import { n as e, t } from "../../chunks/Prefs-CNC8tzyN.js";
2
- import { a as n, i as r, n as i, t as a } from "../../chunks/schema-Dft4Cu2p.js";
3
- export { t as PrefsDialog, e as PrefsForm, a as isPrefLeaf, i as prefDisplayBounds, r as prefValueAtPath, n as visiblePrefSubtree };
1
+ import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "../../chunks/prefField-CLkhrvYl.js";
2
+ import { i as s, n as c, r as l, t as u } from "../../chunks/Prefs-Ctu0H4-b.js";
3
+ export { u as PrefsDialog, c as PrefsForm, s as PrefsPane, l as PrefsRail, n as filterPrefSubtree, i as isPrefLeaf, t as prefDisplayBounds, o as prefFieldProps, e as prefRailItems, r as prefValueAtPath, a as visiblePrefSubtree };
@@ -0,0 +1,36 @@
1
+ import type { PropertyControlProps } from '../Properties/PropertyField';
2
+ import { type PrefLeaf } from './schema';
3
+ /** What {@link prefFieldProps} is told about one leaf's value. */
4
+ export interface PrefFieldState {
5
+ /** The value held at the leaf. `undefined` when `mixed` or `unset`. */
6
+ value: unknown;
7
+ mixed?: boolean;
8
+ unset?: boolean;
9
+ /** The object the leaf is a field of, for an enum `encoding` and a font's
10
+ * weight and slant. `undefined` for a top-level leaf. */
11
+ siblings?: Record<string, unknown>;
12
+ /** Writes a value in the leaf's stored form. */
13
+ setValue: (value: unknown) => void;
14
+ /** A font family's weight and slant, where they are not `siblings`' own
15
+ * `fontWeight` / `fontStyle`. */
16
+ fontVariant?: {
17
+ weight?: unknown;
18
+ style?: unknown;
19
+ };
20
+ }
21
+ /**
22
+ * A schema leaf as {@link PropertyControl} props: its value, bounds and
23
+ * options in the form it is shown in, and a writer that stores what the
24
+ * control reports in the form the leaf holds.
25
+ *
26
+ * The conversions every schema-driven surface needs live here once — a
27
+ * number's display unit and its bounds, an enum's `encoding`, a color's
28
+ * alpha, an icon resolved to a glyph. A leaf that is not a single control —
29
+ * an `object`, whose fields each are, or an app-defined kind — returns
30
+ * `null`, and the surface draws it.
31
+ *
32
+ * Spread the result and add what the surface decides: `chrome`, `name`, a
33
+ * class, a different default `control`.
34
+ */
35
+ export declare function prefFieldProps(leaf: PrefLeaf, state: PrefFieldState): PropertyControlProps | null;
36
+ //# sourceMappingURL=prefField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefField.d.ts","sourceRoot":"","sources":["../../../src/components/Prefs/prefField.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAsC,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE7E,kEAAkE;AAClE,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;8DAC0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,gDAAgD;IAChD,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC;sCACkC;IAClC,WAAW,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACrD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,GAAG,oBAAoB,GAAG,IAAI,CAqIjG"}
@@ -30,4 +30,34 @@ export declare function prefValueAtPath(values: unknown, path: string): unknown;
30
30
  * that end up empty. Returns null when the entire subtree is hidden.
31
31
  */
32
32
  export declare function visiblePrefSubtree<T extends ToolPrefLeaf | ToolPrefGroup>(node: T, showHidden: boolean): T | null;
33
+ /** One entry in a {@link PrefsForm} rail: a group the reader can navigate to. */
34
+ export interface PrefRailItem {
35
+ /** Dotted path of the group. Empty for the entry holding loose root leaves. */
36
+ path: string;
37
+ name: string;
38
+ /** 0 opens a pane; 1 scrolls within the open one. The rail goes no deeper. */
39
+ depth: 0 | 1;
40
+ /** Path of the depth-0 ancestor — its own path when `depth` is 0. */
41
+ section: string;
42
+ /** Leaves surviving the active filter, counted over the whole subtree. */
43
+ matches: number;
44
+ }
45
+ /**
46
+ * The rail's model for a schema: depth-0 groups, each followed by its depth-1
47
+ * children. Deeper groups render inside a pane and get no entry — a schema
48
+ * that nests ten deep still navigates two levels.
49
+ *
50
+ * Loose leaves directly under the root lead the list under an entry named for
51
+ * the root itself, since they belong to no group that could name them.
52
+ */
53
+ export declare function prefRailItems(root: ToolPrefGroup): PrefRailItem[];
54
+ /**
55
+ * Drop every leaf that does not answer to `query`, pruning groups left empty.
56
+ * A group whose own name matches keeps all of its leaves — a reader who typed
57
+ * the group's name is asking for the group, not for leaves repeating it.
58
+ *
59
+ * An empty or whitespace query matches everything, so a cleared field restores
60
+ * the tree rather than emptying it.
61
+ */
62
+ export declare function filterPrefSubtree<T extends ToolPrefLeaf | ToolPrefGroup>(node: T, query: string, path?: string): T | null;
33
63
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/Prefs/schema.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,QAAQ,IAAI,WAAW,EACvB,eAAe,IAAI,WAAW,EAC9B,sBAAsB,IAAI,kBAAkB,EAC5C,aAAa,IAAI,SAAS,EAC1B,cAAc,IAAI,UAAU,EAC5B,YAAY,IAAI,QAAQ,EACxB,mBAAmB,IAAI,eAAe,EACtC,oBAAoB,IAAI,gBAAgB,EACxC,aAAa,IAAI,SAAS,EAC1B,YAAY,IAAI,QAAQ,EACxB,YAAY,IAAI,QAAQ,EACxB,cAAc,IAAI,UAAU,EAC5B,qBAAqB,IAAI,iBAAiB,EAC1C,oBAAoB,IAAI,gBAAgB,EACxC,kBAAkB,IAAI,cAAc,EACpC,cAAc,IAAI,UAAU,EAC5B,aAAa,IAAI,SAAS,EAC1B,cAAc,IAAI,UAAU,EAC5B,qBAAqB,IAAI,iBAAiB,GAC3C,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,kBAAkB,IAAI,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE7H;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,cAAc,GAChB;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAU9C;AAED;2CAC2C;AAC3C,wBAAgB,eAAe,CAAC,IAAI,EAAE,kBAAkB,GAAG,QAAQ,CAAC,SAAS,CAAC,CAE7E;AAED,qEAAqE;AACrE,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,GAAG,IAAI,IAAI,YAAY,CAEnF;AAED;kEACkE;AAClE,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAOtE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,YAAY,GAAG,aAAa,EACvE,IAAI,EAAE,CAAC,EACP,UAAU,EAAE,OAAO,GAClB,CAAC,GAAG,IAAI,CAUV"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/Prefs/schema.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,QAAQ,IAAI,WAAW,EACvB,eAAe,IAAI,WAAW,EAC9B,sBAAsB,IAAI,kBAAkB,EAC5C,aAAa,IAAI,SAAS,EAC1B,cAAc,IAAI,UAAU,EAC5B,YAAY,IAAI,QAAQ,EACxB,mBAAmB,IAAI,eAAe,EACtC,oBAAoB,IAAI,gBAAgB,EACxC,aAAa,IAAI,SAAS,EAC1B,YAAY,IAAI,QAAQ,EACxB,YAAY,IAAI,QAAQ,EACxB,cAAc,IAAI,UAAU,EAC5B,qBAAqB,IAAI,iBAAiB,EAC1C,oBAAoB,IAAI,gBAAgB,EACxC,kBAAkB,IAAI,cAAc,EACpC,cAAc,IAAI,UAAU,EAC5B,aAAa,IAAI,SAAS,EAC1B,cAAc,IAAI,UAAU,EAC5B,qBAAqB,IAAI,iBAAiB,GAC3C,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,kBAAkB,IAAI,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE7H;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,cAAc,GAChB;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAU9C;AAED;2CAC2C;AAC3C,wBAAgB,eAAe,CAAC,IAAI,EAAE,kBAAkB,GAAG,QAAQ,CAAC,SAAS,CAAC,CAE7E;AAED,qEAAqE;AACrE,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,GAAG,IAAI,IAAI,YAAY,CAEnF;AAED;kEACkE;AAClE,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAOtE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,YAAY,GAAG,aAAa,EACvE,IAAI,EAAE,CAAC,EACP,UAAU,EAAE,OAAO,GAClB,CAAC,GAAG,IAAI,CAUV;AAED,iFAAiF;AACjF,MAAM,WAAW,YAAY;IAC3B,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IACb,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAUD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,YAAY,EAAE,CA2BjE;AASD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,YAAY,GAAG,aAAa,EACtE,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,MAAM,EACb,IAAI,SAAK,GACR,CAAC,GAAG,IAAI,CAaV"}
@@ -0,0 +1,33 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type PropertyMetricProps, type PropertyRowLayout } from './PropertyPanel';
3
+ /** Props for `<DialogRow>`. */
4
+ export interface DialogRowProps extends PropertyMetricProps {
5
+ label: ReactNode;
6
+ /** What the row shows of the value, on the button that opens the dialog. One
7
+ * line; a longer one is cut off with an ellipsis. */
8
+ summary: ReactNode;
9
+ /** The dialog's body. A function runs only while the dialog is open, as a
10
+ * component — it may use hooks — and is handed `close`. */
11
+ children: ReactNode | ((close: () => void) => ReactNode);
12
+ /** The dialog's heading. Defaults to `label`. */
13
+ title?: ReactNode;
14
+ /** Dialog footer. Defaults to a Done button; `null` draws none. */
15
+ footer?: ReactNode | null;
16
+ layout?: PropertyRowLayout;
17
+ description?: string;
18
+ /** Right-aligned readout shown next to the label — see `<PropertyRow readout>`. */
19
+ readout?: ReactNode;
20
+ /** Take the full width of the enclosing grid — see `<PropertyRow span>`. */
21
+ span?: boolean;
22
+ /** The row is auto — see `<PropertyRow auto>`. */
23
+ auto?: boolean;
24
+ /** Toggles `auto` from the row's label — see `<PropertyRow onAutoChange>`. */
25
+ onAutoChange?: (next: boolean) => void;
26
+ }
27
+ /**
28
+ * A row for a value too big to edit in place: it shows a one-line summary on a
29
+ * button, and the button opens a modal holding whatever editor the row is
30
+ * given. The body edits live — the dialog is room, not a transaction.
31
+ */
32
+ export declare function DialogRow({ label, summary, children, title, footer, layout, description, readout, span, density, align, auto, onAutoChange, }: DialogRowProps): import("react/jsx-runtime").JSX.Element;
33
+ //# sourceMappingURL=DialogRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DialogRow.d.ts","sourceRoot":"","sources":["../../../src/components/Properties/DialogRow.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AAGjD,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,iBAAiB,EAAe,MAAM,iBAAiB,CAAC;AAGhG,+BAA+B;AAC/B,MAAM,WAAW,cAAe,SAAQ,mBAAmB;IACzD,KAAK,EAAE,SAAS,CAAC;IACjB;0DACsD;IACtD,OAAO,EAAE,SAAS,CAAC;IACnB;gEAC4D;IAC5D,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,SAAS,CAAC,CAAC;IACzD,iDAAiD;IACjD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,mEAAmE;IACnE,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,kDAAkD;IAClD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8EAA8E;IAC9E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,OAAO,EACP,QAAQ,EACR,KAAK,EACL,MAAM,EACN,MAAM,EACN,WAAW,EACX,OAAO,EACP,IAAI,EACJ,OAAO,EACP,KAAK,EACL,IAAI,EACJ,YAAY,GACb,EAAE,cAAc,2CAiDhB"}
@@ -0,0 +1,238 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type FillStyle, type PaintKind } from '@weasel-js/core';
3
+ import { type UnitTable } from '../../format/number';
4
+ import type { PrefNumberFormat } from '../Prefs/schema';
5
+ import { type PropertyMetricProps, type PropertyRowLayout } from './PropertyPanel';
6
+ /**
7
+ * Which controls a field is drawn with.
8
+ *
9
+ * - `'bare'` (the default): native inputs the property row's own stylesheet
10
+ * draws — the compact controls of an inspector sidebar or a lab panel.
11
+ * - `'framed'`: the kit's field components, each bringing its own frame —
12
+ * for a surface whose row does not style its controls (`SelectionPanel`,
13
+ * `ToolOptionsBar`), or that needs what only they do, such as reading a
14
+ * unit typed into a number (`accepts`).
15
+ *
16
+ * The two differ only where the kit still has two widgets for one job; a
17
+ * slider, a switch, a font picker and a paint are the same in both.
18
+ */
19
+ export type PropertyFieldChrome = 'bare' | 'framed';
20
+ /** One choice of an enum field. */
21
+ export interface PropertyOption<T extends string> {
22
+ value: T;
23
+ /** The option's name. A string also names its segment for a screen reader. */
24
+ label: ReactNode;
25
+ /** What a segment shows in place of `label` when the full one would not fit
26
+ * — a glyph or a letter. `label` stays the accessible name. */
27
+ glyph?: ReactNode;
28
+ /** Shown but not choosable: a value the control reports and cannot author. */
29
+ disabled?: boolean;
30
+ }
31
+ /** Props every kind of field shares. */
32
+ interface FieldBase {
33
+ /** The control's accessible name. A `<PropertyField>` takes it from a string
34
+ * `label` when this is omitted. */
35
+ name?: string;
36
+ /** The sources the field reads disagree — a multi-selection whose nodes
37
+ * differ. The control shows no value, in whatever form it has for that. */
38
+ mixed?: boolean;
39
+ /**
40
+ * The sources agree on holding nothing: whatever is in effect comes from a
41
+ * fallback further down. The control shows no chosen value rather than
42
+ * inventing one, since the next edit would write the invention back.
43
+ */
44
+ unset?: boolean;
45
+ chrome?: PropertyFieldChrome;
46
+ /** Class on the control element itself. */
47
+ className?: string;
48
+ /** Id for the control element, for a `<label htmlFor>` outside it. */
49
+ id?: string;
50
+ }
51
+ /** A boolean field. */
52
+ export interface PropertyBooleanFieldProps extends FieldBase {
53
+ kind: 'boolean';
54
+ /** `checkbox` (default), `switch`, or `toggle` — a one-segment pressable bar. */
55
+ control?: 'checkbox' | 'switch' | 'toggle';
56
+ /** Absent reads as off. */
57
+ value: boolean | undefined;
58
+ onChange: (next: boolean) => void;
59
+ /** A `toggle`'s segment content. Defaults to the first letter of `name`. */
60
+ glyph?: ReactNode;
61
+ }
62
+ /** A number field. */
63
+ export interface PropertyNumberFieldProps extends FieldBase {
64
+ kind: 'number';
65
+ /** `input` (default) for a typed number; `slider` for a track with an
66
+ * editable readout, where the range matters more than the exact value. */
67
+ control?: 'input' | 'slider';
68
+ /** Absent reads as an empty field. */
69
+ value: number | null | undefined;
70
+ /**
71
+ * The committed value. Given `onInput` as well, it fires once a drag ends,
72
+ * or on blur or Enter in a typed field; on its own it fires on every move
73
+ * and keystroke. A `framed` typed field commits only on blur or Enter,
74
+ * whichever callbacks it has.
75
+ */
76
+ onChange: (next: number) => void;
77
+ /** The live value, fired continuously. Pass it alongside `onChange` when the
78
+ * write is expensive — cheap state here, the costly work there. */
79
+ onInput?: (next: number) => void;
80
+ /** A slider's track runs 0..100 where these are omitted. */
81
+ min?: number;
82
+ max?: number;
83
+ step?: number;
84
+ /**
85
+ * Suffix after the value. A string becomes a dim word unit (`px`); pass JSX
86
+ * like `<sup>°</sup>` for a symbol. Display only — the value stays a number.
87
+ */
88
+ unit?: ReactNode;
89
+ /** Units a person may type into a `framed` field, each mapped to the factor
90
+ * that turns it into the unit shown: `{ mm: 0.1, cm: 1 }`. */
91
+ accepts?: Readonly<UnitTable>;
92
+ /** A slider readout's display. Defaults to the value at `step`'s precision. */
93
+ format?: (value: number) => ReactNode;
94
+ /** A named display for the value: `compact` reads `2.00M`. `format` wins. */
95
+ notation?: PrefNumberFormat;
96
+ placeholder?: string;
97
+ /** A `framed` unitless field's stepper buttons. Default `true`. */
98
+ steppers?: boolean;
99
+ }
100
+ /** A text field. */
101
+ export interface PropertyStringFieldProps extends FieldBase {
102
+ kind: 'string';
103
+ control?: 'input' | 'textarea';
104
+ /** Absent reads as an empty field. */
105
+ value: string | null | undefined;
106
+ /**
107
+ * The committed text. On its own it fires on every keystroke. Given
108
+ * `onInput` as well, the field drafts: `onInput` gets each keystroke and
109
+ * this fires once, on blur or Enter, and only if the text changed.
110
+ */
111
+ onChange: (next: string) => void;
112
+ onInput?: (next: string) => void;
113
+ placeholder?: string;
114
+ maxLength?: number;
115
+ }
116
+ /** A choice among fixed options. */
117
+ export interface PropertyEnumFieldProps<T extends string = string> extends FieldBase {
118
+ kind: 'enum';
119
+ /**
120
+ * `select` (default) is a dropdown. `radio` and `toggle` show every option
121
+ * at once — a radio group chooses, and a toggle is a row of pressable
122
+ * segments. Drawn `bare`, both are segments.
123
+ */
124
+ control?: 'select' | 'radio' | 'toggle';
125
+ /** Absent, or not one of `options`, chooses nothing. */
126
+ value: T | undefined;
127
+ options: ReadonlyArray<PropertyOption<T>>;
128
+ onChange: (next: T) => void;
129
+ /** Shown while no option is chosen. Defaults to "Choose option…". */
130
+ placeholder?: string;
131
+ }
132
+ /** A single color. */
133
+ export interface PropertyColorFieldProps extends FieldBase {
134
+ kind: 'color';
135
+ /** `#rrggbb`, or `#rrggbbaa` when `alpha` is `true`. */
136
+ value: string | undefined;
137
+ /**
138
+ * The committed color. `bare`: given `onInput` as well, it fires once the
139
+ * picker closes; on its own it fires on every move. `framed`: it fires once
140
+ * per gesture, whichever callbacks it has.
141
+ */
142
+ onChange: (next: string) => void;
143
+ onInput?: (next: string) => void;
144
+ /**
145
+ * Offer an opacity track. `true` keeps the alpha in `value` as `#rrggbbaa`;
146
+ * a number is the 0..1 alpha held apart from it, reported through
147
+ * `onAlphaChange` / `onAlphaInput`.
148
+ */
149
+ alpha?: boolean | number;
150
+ onAlphaChange?: (next: number) => void;
151
+ onAlphaInput?: (next: number) => void;
152
+ /** Draw the opacity track inert, for a consumer that drops alpha. */
153
+ alphaDisabled?: boolean;
154
+ }
155
+ /** A whole paint: a solid, a gradient, a pattern, or none. */
156
+ export interface PropertyPaintFieldProps extends FieldBase {
157
+ kind: 'paint';
158
+ /** `swatch` (default) opens the editor in a popover, for a narrow slot;
159
+ * `inline` draws the kind bar and its editor in place. */
160
+ control?: 'swatch' | 'inline';
161
+ /** `null` is an explicit "no paint"; `undefined` is nothing to show. */
162
+ value: FillStyle | null | undefined;
163
+ onChange: (next: FillStyle | null) => void;
164
+ onInput?: (next: FillStyle | null) => void;
165
+ /** Offer "None". Default `true`. */
166
+ allowNone?: boolean;
167
+ /** Restrict the kinds offered. Default: every registered kind. */
168
+ kinds?: readonly PaintKind[];
169
+ }
170
+ /** A font family, picked from the live font registry. */
171
+ export interface PropertyFontFamilyFieldProps extends FieldBase {
172
+ kind: 'font-family';
173
+ value: string | undefined;
174
+ onChange: (next: string) => void;
175
+ /** The weight and slant the family is drawn at, so the picker names the
176
+ * variant that will actually paint. */
177
+ weight?: number;
178
+ fontStyle?: 'normal' | 'italic';
179
+ }
180
+ /**
181
+ * One field for {@link PropertyControl} and {@link PropertyField}, keyed by
182
+ * `kind`.
183
+ */
184
+ export type PropertyControlProps<T extends string = string> = PropertyBooleanFieldProps | PropertyNumberFieldProps | PropertyStringFieldProps | PropertyEnumFieldProps<T> | PropertyColorFieldProps | PropertyPaintFieldProps | PropertyFontFamilyFieldProps;
185
+ /** The kinds a {@link PropertyControl} draws. */
186
+ export type PropertyFieldKind = PropertyControlProps['kind'];
187
+ /** Row props {@link PropertyField} adds to the field it draws. */
188
+ export interface PropertyFieldRowProps extends PropertyMetricProps {
189
+ label: ReactNode;
190
+ /**
191
+ * Text beside the label. On a slider it replaces the editable readout —
192
+ * use it when the row is not showing a number a caller could type back,
193
+ * such as an auto row's `auto`.
194
+ */
195
+ readout?: ReactNode;
196
+ description?: string;
197
+ layout?: PropertyRowLayout;
198
+ /** Take the full width of the enclosing grid — see `<PropertyRow span>`. */
199
+ span?: boolean;
200
+ /** The row is auto — see `<PropertyRow auto>`. */
201
+ auto?: boolean;
202
+ /** Toggles `auto` from the row's label — see `<PropertyRow onAutoChange>`. */
203
+ onAutoChange?: (next: boolean) => void;
204
+ /** Class on the row. `controlClassName` reaches the control. */
205
+ rowClassName?: string;
206
+ controlClassName?: string;
207
+ }
208
+ /** Props for {@link PropertyField}: one field, and the row around it. */
209
+ export type PropertyFieldProps<T extends string = string> = PropertyFieldRowProps & DistributiveOmit<PropertyControlProps<T>, 'className' | 'id'>;
210
+ type DistributiveOmit<U, K extends PropertyKey> = U extends unknown ? Omit<U, K> : never;
211
+ /**
212
+ * A labeled settings row for one field, its control chosen by `kind` (and
213
+ * `control`): `<PropertyField kind="number" control="slider" label="Blur" …>`.
214
+ *
215
+ * The row is a {@link PropertyRow}; the control is the one
216
+ * {@link PropertyControl} draws for the same props. Every schema-driven
217
+ * settings surface in the kit — `ControlPanel`, `PrefsForm`, `SelectionPanel`
218
+ * — draws its built-in kinds through that one mapping, so a kind's control
219
+ * is decided once.
220
+ *
221
+ * Callbacks follow the field's shape: a discrete control (a box, a choice)
222
+ * reports each pick; a continuous or typed one reports every change through
223
+ * `onChange` alone, or splits them into live `onInput` and settled
224
+ * `onChange` when given both. `mixed` and `unset` show a field whose sources
225
+ * disagree, or agree on holding nothing.
226
+ */
227
+ export declare function PropertyField<T extends string = string>(props: PropertyFieldProps<T>): import("react/jsx-runtime").JSX.Element;
228
+ /**
229
+ * The control for one field, with no row around it — for a cell that shares
230
+ * a row with others, or a surface that draws its own row. Keyed by `kind`
231
+ * (and `control`), the same mapping {@link PropertyField} draws.
232
+ *
233
+ * A slider brings its readout beside the track. Several elements come back
234
+ * as siblings rather than wrapped, so the surrounding row lays them out.
235
+ */
236
+ export declare function PropertyControl<T extends string = string>(typed: PropertyControlProps<T>): import("react/jsx-runtime").JSX.Element;
237
+ export {};
238
+ //# sourceMappingURL=PropertyField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyField.d.ts","sourceRoot":"","sources":["../../../src/components/Properties/PropertyField.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,14 @@
1
1
  import { type ReactNode } from 'react';
2
+ import { type StanceProps } from '../stance';
2
3
  import { type PropertyListPack, type PropertyMetricProps } from './PropertyPanel';
3
4
  /** Props for `<PropertyGroup>`. */
4
- export interface PropertyGroupProps extends PropertyMetricProps {
5
+ export interface PropertyGroupProps extends PropertyMetricProps, StanceProps {
5
6
  /** Title rendered between two rules at the top of the group. */
6
7
  title: ReactNode;
8
+ /** Before the title: a drag handle, an ordinal. Clicks here do not fold the group. */
9
+ leading?: ReactNode;
10
+ /** After the title: a summary of the group's value, a remove button. Clicks here do not fold the group. */
11
+ actions?: ReactNode;
7
12
  /** Help text for the whole group, drawn under the title and above the
8
13
  * rows. `<PropertyRow description>` covers the per-row case. */
9
14
  description?: ReactNode;
@@ -38,7 +43,11 @@ export interface PropertyGroupProps extends PropertyMetricProps {
38
43
  * inside a fill effect's controls).
39
44
  *
40
45
  * A collapsible group keeps its rows mounted and hides them, so a control's
41
- * local state survives being folded away.
46
+ * local state survives being folded away. `stance` and `tone` work as on
47
+ * `<PropertyPanel>`; a tone also draws the group's leading edge in it, which
48
+ * is how a list of like groups — effects, tails — tells its members apart.
49
+ * `leading` and `actions` put a handle and controls in the title row, and the
50
+ * groups of a `<PropertyList>` reorder with `useReorderDragList`.
42
51
  */
43
- export declare function PropertyGroup({ title, description, hidden, collapsible, defaultCollapsed, collapsed, onCollapsedChange, children, className, span, pack, density, align, }: PropertyGroupProps): import("react/jsx-runtime").JSX.Element | null;
52
+ export declare function PropertyGroup({ title, leading, actions, description, hidden, collapsible, defaultCollapsed, collapsed, onCollapsedChange, children, className, span, pack, density, align, stance, tone, }: PropertyGroupProps): import("react/jsx-runtime").JSX.Element | null;
44
53
  //# sourceMappingURL=PropertyGroup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyGroup.d.ts","sourceRoot":"","sources":["../../../src/components/Properties/PropertyGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,OAAO,CAAC;AAGxD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EAGzB,MAAM,iBAAiB,CAAC;AAEzB,mCAAmC;AACnC,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,gEAAgE;IAChE,KAAK,EAAE,SAAS,CAAC;IACjB;qEACiE;IACjE,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;2EACuE;IACvE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wEAAwE;IACxE,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,IAAmB,EACnB,OAAO,EACP,KAAK,GACN,EAAE,kBAAkB,kDA4CpB"}
1
+ {"version":3,"file":"PropertyGroup.d.ts","sourceRoot":"","sources":["../../../src/components/Properties/PropertyGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,OAAO,CAAC;AAExD,OAAO,EAAE,KAAK,WAAW,EAAa,MAAM,WAAW,CAAC;AAExD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EAGzB,MAAM,iBAAiB,CAAC;AAEzB,mCAAmC;AACnC,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB,EAAE,WAAW;IAC1E,gEAAgE;IAChE,KAAK,EAAE,SAAS,CAAC;IACjB,sFAAsF;IACtF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,2GAA2G;IAC3G,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;qEACiE;IACjE,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;2EACuE;IACvE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wEAAwE;IACxE,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,EACP,OAAO,EACP,WAAW,EACX,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,IAAmB,EACnB,OAAO,EACP,KAAK,EACL,MAAM,EACN,IAAI,GACL,EAAE,kBAAkB,kDAuDpB"}