@next-buildr/editor 2.0.1 → 3.0.0-rc.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 (645) hide show
  1. package/README.md +2 -0
  2. package/UPGRADING.md +322 -0
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/app/builder-editor.test.js +223 -18
  5. package/dist/app/config.d.ts +27 -4
  6. package/dist/app/config.d.ts.map +1 -1
  7. package/dist/app/config.js +4 -3
  8. package/dist/app/contracts.d.ts +40 -0
  9. package/dist/app/contracts.d.ts.map +1 -0
  10. package/dist/app/contracts.js +4 -0
  11. package/dist/app/editor-app.d.ts.map +1 -1
  12. package/dist/app/editor-app.js +316 -24
  13. package/dist/app/editor-app.test.js +144 -6
  14. package/dist/app/layout.d.ts +11 -2
  15. package/dist/app/layout.d.ts.map +1 -1
  16. package/dist/app/layout.js +170 -9
  17. package/dist/app/manifest.d.ts +7 -2
  18. package/dist/app/manifest.d.ts.map +1 -1
  19. package/dist/app/manifest.js +16 -4
  20. package/dist/app/shell-panels.d.ts +15 -0
  21. package/dist/app/shell-panels.d.ts.map +1 -1
  22. package/dist/app/small-screen.test.js +2 -2
  23. package/dist/app/stage-slots.d.ts +9 -0
  24. package/dist/app/stage-slots.d.ts.map +1 -0
  25. package/dist/app/stage-slots.js +10 -0
  26. package/dist/app/status-info.d.ts +2 -3
  27. package/dist/app/status-info.d.ts.map +1 -1
  28. package/dist/app/status-info.js +49 -16
  29. package/dist/canvas-host/canvas-frame.d.ts +13 -1
  30. package/dist/canvas-host/canvas-frame.d.ts.map +1 -1
  31. package/dist/canvas-host/canvas-frame.js +96 -8
  32. package/dist/canvas-host/canvas-frame.test.js +156 -3
  33. package/dist/canvas-host/host.d.ts +6 -0
  34. package/dist/canvas-host/host.d.ts.map +1 -1
  35. package/dist/canvas-host/host.js +116 -4
  36. package/dist/canvas-host/host.test.js +195 -6
  37. package/dist/clipboard/clipboard.d.ts +1 -1
  38. package/dist/clipboard/clipboard.d.ts.map +1 -1
  39. package/dist/clipboard/clipboard.js +5 -0
  40. package/dist/clipboard/clipboard.test.js +21 -1
  41. package/dist/clipboard/format.d.ts +3 -1
  42. package/dist/clipboard/format.d.ts.map +1 -1
  43. package/dist/clipboard/react.d.ts +1 -1
  44. package/dist/clipboard/react.d.ts.map +1 -1
  45. package/dist/clipboard/react.js +49 -3
  46. package/dist/dialogs/external-source.d.ts +15 -0
  47. package/dist/dialogs/external-source.d.ts.map +1 -0
  48. package/dist/dialogs/external-source.js +18 -0
  49. package/dist/dialogs/index.d.ts +4 -0
  50. package/dist/dialogs/index.d.ts.map +1 -1
  51. package/dist/dialogs/index.js +2 -0
  52. package/dist/dialogs/media-picker/index.d.ts +2 -2
  53. package/dist/dialogs/media-picker/index.d.ts.map +1 -1
  54. package/dist/dialogs/media-picker/index.js +1 -1
  55. package/dist/dialogs/media-picker/media-picker.d.ts +5 -0
  56. package/dist/dialogs/media-picker/media-picker.d.ts.map +1 -1
  57. package/dist/dialogs/media-picker/media-picker.js +67 -5
  58. package/dist/dialogs/media-picker/media-picker.test.js +72 -1
  59. package/dist/dialogs/media-picker/media-ref.d.ts +15 -0
  60. package/dist/dialogs/media-picker/media-ref.d.ts.map +1 -1
  61. package/dist/dialogs/media-picker/media-ref.js +29 -0
  62. package/dist/dialogs/remove-confirm.d.ts +14 -0
  63. package/dist/dialogs/remove-confirm.d.ts.map +1 -0
  64. package/dist/dialogs/remove-confirm.js +42 -0
  65. package/dist/dialogs/remove-confirm.test.d.ts +2 -0
  66. package/dist/dialogs/remove-confirm.test.d.ts.map +1 -0
  67. package/dist/dialogs/remove-confirm.test.js +118 -0
  68. package/dist/dnd/dnd-react.test.js +11 -2
  69. package/dist/dnd/dnd.test.js +23 -0
  70. package/dist/dnd/engine.d.ts +4 -2
  71. package/dist/dnd/engine.d.ts.map +1 -1
  72. package/dist/dnd/engine.js +6 -0
  73. package/dist/dnd/move-to-dialog.d.ts +4 -3
  74. package/dist/dnd/move-to-dialog.d.ts.map +1 -1
  75. package/dist/dnd/move-to-dialog.js +67 -10
  76. package/dist/dnd/react.d.ts.map +1 -1
  77. package/dist/dnd/react.js +5 -0
  78. package/dist/i18n/diagnostics.d.ts +22 -0
  79. package/dist/i18n/diagnostics.d.ts.map +1 -0
  80. package/dist/i18n/diagnostics.js +153 -0
  81. package/dist/i18n/diagnostics.test.d.ts +2 -0
  82. package/dist/i18n/diagnostics.test.d.ts.map +1 -0
  83. package/dist/i18n/diagnostics.test.js +74 -0
  84. package/dist/i18n/label-catalog.d.ts +20 -0
  85. package/dist/i18n/label-catalog.d.ts.map +1 -0
  86. package/dist/i18n/label-catalog.js +1 -0
  87. package/dist/i18n/locale-name.d.ts +7 -0
  88. package/dist/i18n/locale-name.d.ts.map +1 -0
  89. package/dist/i18n/locale-name.js +31 -0
  90. package/dist/i18n/localize-manifest.d.ts +11 -0
  91. package/dist/i18n/localize-manifest.d.ts.map +1 -0
  92. package/dist/i18n/localize-manifest.js +78 -0
  93. package/dist/i18n/localize-manifest.test.d.ts +2 -0
  94. package/dist/i18n/localize-manifest.test.d.ts.map +1 -0
  95. package/dist/i18n/localize-manifest.test.js +71 -0
  96. package/dist/messages/catalogs.test.d.ts +2 -0
  97. package/dist/messages/catalogs.test.d.ts.map +1 -0
  98. package/dist/messages/catalogs.test.js +80 -0
  99. package/dist/messages/en/app.d.ts +8 -0
  100. package/dist/messages/en/app.d.ts.map +1 -0
  101. package/dist/messages/en/app.js +7 -0
  102. package/dist/messages/en/blocks.d.ts +54 -0
  103. package/dist/messages/en/blocks.d.ts.map +1 -0
  104. package/dist/messages/en/blocks.js +53 -0
  105. package/dist/messages/en/canvas.d.ts +31 -0
  106. package/dist/messages/en/canvas.d.ts.map +1 -0
  107. package/dist/messages/en/canvas.js +30 -0
  108. package/dist/messages/en/clipboard.d.ts +13 -0
  109. package/dist/messages/en/clipboard.d.ts.map +1 -0
  110. package/dist/messages/en/clipboard.js +12 -0
  111. package/dist/messages/en/colorPicker.d.ts +20 -0
  112. package/dist/messages/en/colorPicker.d.ts.map +1 -0
  113. package/dist/messages/en/colorPicker.js +19 -0
  114. package/dist/messages/en/diagnostics.d.ts +40 -0
  115. package/dist/messages/en/diagnostics.d.ts.map +1 -0
  116. package/dist/messages/en/diagnostics.js +39 -0
  117. package/dist/messages/en/dialogs/common.d.ts +6 -0
  118. package/dist/messages/en/dialogs/common.d.ts.map +1 -0
  119. package/dist/messages/en/dialogs/common.js +5 -0
  120. package/dist/messages/en/dialogs/conflict.d.ts +15 -0
  121. package/dist/messages/en/dialogs/conflict.d.ts.map +1 -0
  122. package/dist/messages/en/dialogs/conflict.js +14 -0
  123. package/dist/messages/en/dialogs/delete.d.ts +19 -0
  124. package/dist/messages/en/dialogs/delete.d.ts.map +1 -0
  125. package/dist/messages/en/dialogs/delete.js +18 -0
  126. package/dist/messages/en/dialogs/pageOptions.d.ts +9 -0
  127. package/dist/messages/en/dialogs/pageOptions.d.ts.map +1 -0
  128. package/dist/messages/en/dialogs/pageOptions.js +8 -0
  129. package/dist/messages/en/dialogs/publish.d.ts +15 -0
  130. package/dist/messages/en/dialogs/publish.d.ts.map +1 -0
  131. package/dist/messages/en/dialogs/publish.js +14 -0
  132. package/dist/messages/en/dnd.d.ts +19 -0
  133. package/dist/messages/en/dnd.d.ts.map +1 -0
  134. package/dist/messages/en/dnd.js +18 -0
  135. package/dist/messages/en/editor.d.ts +30 -0
  136. package/dist/messages/en/editor.d.ts.map +1 -0
  137. package/dist/messages/en/editor.js +29 -0
  138. package/dist/messages/en/external.d.ts +6 -0
  139. package/dist/messages/en/external.d.ts.map +1 -0
  140. package/dist/messages/en/external.js +5 -0
  141. package/dist/messages/en/insert.d.ts +25 -0
  142. package/dist/messages/en/insert.d.ts.map +1 -0
  143. package/dist/messages/en/insert.js +24 -0
  144. package/dist/messages/en/inspector.d.ts +176 -0
  145. package/dist/messages/en/inspector.d.ts.map +1 -0
  146. package/dist/messages/en/inspector.js +175 -0
  147. package/dist/messages/en/issues.d.ts +36 -0
  148. package/dist/messages/en/issues.d.ts.map +1 -0
  149. package/dist/messages/en/issues.js +35 -0
  150. package/dist/messages/en/layers.d.ts +29 -0
  151. package/dist/messages/en/layers.d.ts.map +1 -0
  152. package/dist/messages/en/layers.js +28 -0
  153. package/dist/messages/en/leftPanel.d.ts +15 -0
  154. package/dist/messages/en/leftPanel.d.ts.map +1 -0
  155. package/dist/messages/en/leftPanel.js +14 -0
  156. package/dist/messages/en/list.d.ts +9 -0
  157. package/dist/messages/en/list.d.ts.map +1 -0
  158. package/dist/messages/en/list.js +8 -0
  159. package/dist/messages/en/locale.d.ts +4 -0
  160. package/dist/messages/en/locale.d.ts.map +1 -0
  161. package/dist/messages/en/locale.js +3 -0
  162. package/dist/messages/en/media.d.ts +51 -0
  163. package/dist/messages/en/media.d.ts.map +1 -0
  164. package/dist/messages/en/media.js +50 -0
  165. package/dist/messages/en/menu.d.ts +12 -0
  166. package/dist/messages/en/menu.d.ts.map +1 -0
  167. package/dist/messages/en/menu.js +11 -0
  168. package/dist/messages/en/patterns.d.ts +24 -0
  169. package/dist/messages/en/patterns.d.ts.map +1 -0
  170. package/dist/messages/en/patterns.js +23 -0
  171. package/dist/messages/en/preview.d.ts +8 -0
  172. package/dist/messages/en/preview.d.ts.map +1 -0
  173. package/dist/messages/en/preview.js +7 -0
  174. package/dist/messages/en/publish.d.ts +19 -0
  175. package/dist/messages/en/publish.d.ts.map +1 -0
  176. package/dist/messages/en/publish.js +18 -0
  177. package/dist/messages/en/richText.d.ts +21 -0
  178. package/dist/messages/en/richText.d.ts.map +1 -0
  179. package/dist/messages/en/richText.js +20 -0
  180. package/dist/messages/en/sample.d.ts +5 -0
  181. package/dist/messages/en/sample.d.ts.map +1 -0
  182. package/dist/messages/en/sample.js +4 -0
  183. package/dist/messages/en/save.d.ts +15 -0
  184. package/dist/messages/en/save.d.ts.map +1 -0
  185. package/dist/messages/en/save.js +14 -0
  186. package/dist/messages/en/shortcut.d.ts +36 -0
  187. package/dist/messages/en/shortcut.d.ts.map +1 -0
  188. package/dist/messages/en/shortcut.js +35 -0
  189. package/dist/messages/en/statusBar.d.ts +14 -0
  190. package/dist/messages/en/statusBar.d.ts.map +1 -0
  191. package/dist/messages/en/statusBar.js +13 -0
  192. package/dist/messages/en/structure.d.ts +28 -0
  193. package/dist/messages/en/structure.d.ts.map +1 -0
  194. package/dist/messages/en/structure.js +27 -0
  195. package/dist/messages/en/style.d.ts +168 -0
  196. package/dist/messages/en/style.d.ts.map +1 -0
  197. package/dist/messages/en/style.js +167 -0
  198. package/dist/messages/en/styleField.d.ts +301 -0
  199. package/dist/messages/en/styleField.d.ts.map +1 -0
  200. package/dist/messages/en/styleField.js +300 -0
  201. package/dist/messages/en/styleOption.d.ts +128 -0
  202. package/dist/messages/en/styleOption.d.ts.map +1 -0
  203. package/dist/messages/en/styleOption.js +127 -0
  204. package/dist/messages/en/styleSection.d.ts +16 -0
  205. package/dist/messages/en/styleSection.d.ts.map +1 -0
  206. package/dist/messages/en/styleSection.js +15 -0
  207. package/dist/messages/en/toast.d.ts +22 -0
  208. package/dist/messages/en/toast.d.ts.map +1 -0
  209. package/dist/messages/en/toast.js +21 -0
  210. package/dist/messages/en/toolbar.d.ts +47 -0
  211. package/dist/messages/en/toolbar.d.ts.map +1 -0
  212. package/dist/messages/en/toolbar.js +46 -0
  213. package/dist/messages/en/translation.d.ts +7 -0
  214. package/dist/messages/en/translation.d.ts.map +1 -0
  215. package/dist/messages/en/translation.js +6 -0
  216. package/dist/messages/en/ui.d.ts +4 -0
  217. package/dist/messages/en/ui.d.ts.map +1 -0
  218. package/dist/messages/en/ui.js +3 -0
  219. package/dist/messages/en/values.d.ts +45 -0
  220. package/dist/messages/en/values.d.ts.map +1 -0
  221. package/dist/messages/en/values.js +44 -0
  222. package/dist/messages/en.d.ts +1298 -202
  223. package/dist/messages/en.d.ts.map +1 -1
  224. package/dist/messages/en.js +82 -330
  225. package/dist/messages/index.d.ts +12 -0
  226. package/dist/messages/index.d.ts.map +1 -1
  227. package/dist/messages/index.js +28 -1
  228. package/dist/messages/pl/app.d.ts +8 -0
  229. package/dist/messages/pl/app.d.ts.map +1 -0
  230. package/dist/messages/pl/app.js +7 -0
  231. package/dist/messages/pl/blocks.d.ts +54 -0
  232. package/dist/messages/pl/blocks.d.ts.map +1 -0
  233. package/dist/messages/pl/blocks.js +53 -0
  234. package/dist/messages/pl/canvas.d.ts +31 -0
  235. package/dist/messages/pl/canvas.d.ts.map +1 -0
  236. package/dist/messages/pl/canvas.js +30 -0
  237. package/dist/messages/pl/clipboard.d.ts +13 -0
  238. package/dist/messages/pl/clipboard.d.ts.map +1 -0
  239. package/dist/messages/pl/clipboard.js +12 -0
  240. package/dist/messages/pl/colorPicker.d.ts +20 -0
  241. package/dist/messages/pl/colorPicker.d.ts.map +1 -0
  242. package/dist/messages/pl/colorPicker.js +19 -0
  243. package/dist/messages/pl/componentLabels.d.ts +9 -0
  244. package/dist/messages/pl/componentLabels.d.ts.map +1 -0
  245. package/dist/messages/pl/componentLabels.js +308 -0
  246. package/dist/messages/pl/diagnostics.d.ts +39 -0
  247. package/dist/messages/pl/diagnostics.d.ts.map +1 -0
  248. package/dist/messages/pl/diagnostics.js +38 -0
  249. package/dist/messages/pl/dialogs/common.d.ts +6 -0
  250. package/dist/messages/pl/dialogs/common.d.ts.map +1 -0
  251. package/dist/messages/pl/dialogs/common.js +5 -0
  252. package/dist/messages/pl/dialogs/conflict.d.ts +15 -0
  253. package/dist/messages/pl/dialogs/conflict.d.ts.map +1 -0
  254. package/dist/messages/pl/dialogs/conflict.js +14 -0
  255. package/dist/messages/pl/dialogs/delete.d.ts +19 -0
  256. package/dist/messages/pl/dialogs/delete.d.ts.map +1 -0
  257. package/dist/messages/pl/dialogs/delete.js +18 -0
  258. package/dist/messages/pl/dialogs/pageOptions.d.ts +9 -0
  259. package/dist/messages/pl/dialogs/pageOptions.d.ts.map +1 -0
  260. package/dist/messages/pl/dialogs/pageOptions.js +8 -0
  261. package/dist/messages/pl/dialogs/publish.d.ts +15 -0
  262. package/dist/messages/pl/dialogs/publish.d.ts.map +1 -0
  263. package/dist/messages/pl/dialogs/publish.js +14 -0
  264. package/dist/messages/pl/dnd.d.ts +19 -0
  265. package/dist/messages/pl/dnd.d.ts.map +1 -0
  266. package/dist/messages/pl/dnd.js +18 -0
  267. package/dist/messages/pl/editor.d.ts +30 -0
  268. package/dist/messages/pl/editor.d.ts.map +1 -0
  269. package/dist/messages/pl/editor.js +29 -0
  270. package/dist/messages/pl/external.d.ts +6 -0
  271. package/dist/messages/pl/external.d.ts.map +1 -0
  272. package/dist/messages/pl/external.js +5 -0
  273. package/dist/messages/pl/insert.d.ts +25 -0
  274. package/dist/messages/pl/insert.d.ts.map +1 -0
  275. package/dist/messages/pl/insert.js +24 -0
  276. package/dist/messages/pl/inspector.d.ts +176 -0
  277. package/dist/messages/pl/inspector.d.ts.map +1 -0
  278. package/dist/messages/pl/inspector.js +175 -0
  279. package/dist/messages/pl/issues.d.ts +36 -0
  280. package/dist/messages/pl/issues.d.ts.map +1 -0
  281. package/dist/messages/pl/issues.js +35 -0
  282. package/dist/messages/pl/layers.d.ts +29 -0
  283. package/dist/messages/pl/layers.d.ts.map +1 -0
  284. package/dist/messages/pl/layers.js +28 -0
  285. package/dist/messages/pl/leftPanel.d.ts +15 -0
  286. package/dist/messages/pl/leftPanel.d.ts.map +1 -0
  287. package/dist/messages/pl/leftPanel.js +14 -0
  288. package/dist/messages/pl/list.d.ts +9 -0
  289. package/dist/messages/pl/list.d.ts.map +1 -0
  290. package/dist/messages/pl/list.js +8 -0
  291. package/dist/messages/pl/locale.d.ts +4 -0
  292. package/dist/messages/pl/locale.d.ts.map +1 -0
  293. package/dist/messages/pl/locale.js +3 -0
  294. package/dist/messages/pl/media.d.ts +51 -0
  295. package/dist/messages/pl/media.d.ts.map +1 -0
  296. package/dist/messages/pl/media.js +50 -0
  297. package/dist/messages/pl/menu.d.ts +12 -0
  298. package/dist/messages/pl/menu.d.ts.map +1 -0
  299. package/dist/messages/pl/menu.js +11 -0
  300. package/dist/messages/pl/patterns.d.ts +24 -0
  301. package/dist/messages/pl/patterns.d.ts.map +1 -0
  302. package/dist/messages/pl/patterns.js +23 -0
  303. package/dist/messages/pl/preview.d.ts +8 -0
  304. package/dist/messages/pl/preview.d.ts.map +1 -0
  305. package/dist/messages/pl/preview.js +7 -0
  306. package/dist/messages/pl/publish.d.ts +19 -0
  307. package/dist/messages/pl/publish.d.ts.map +1 -0
  308. package/dist/messages/pl/publish.js +18 -0
  309. package/dist/messages/pl/richText.d.ts +21 -0
  310. package/dist/messages/pl/richText.d.ts.map +1 -0
  311. package/dist/messages/pl/richText.js +20 -0
  312. package/dist/messages/pl/sample.d.ts +5 -0
  313. package/dist/messages/pl/sample.d.ts.map +1 -0
  314. package/dist/messages/pl/sample.js +4 -0
  315. package/dist/messages/pl/save.d.ts +15 -0
  316. package/dist/messages/pl/save.d.ts.map +1 -0
  317. package/dist/messages/pl/save.js +14 -0
  318. package/dist/messages/pl/shortcut.d.ts +36 -0
  319. package/dist/messages/pl/shortcut.d.ts.map +1 -0
  320. package/dist/messages/pl/shortcut.js +35 -0
  321. package/dist/messages/pl/statusBar.d.ts +14 -0
  322. package/dist/messages/pl/statusBar.d.ts.map +1 -0
  323. package/dist/messages/pl/statusBar.js +13 -0
  324. package/dist/messages/pl/structure.d.ts +28 -0
  325. package/dist/messages/pl/structure.d.ts.map +1 -0
  326. package/dist/messages/pl/structure.js +27 -0
  327. package/dist/messages/pl/style.d.ts +168 -0
  328. package/dist/messages/pl/style.d.ts.map +1 -0
  329. package/dist/messages/pl/style.js +167 -0
  330. package/dist/messages/pl/styleField.d.ts +301 -0
  331. package/dist/messages/pl/styleField.d.ts.map +1 -0
  332. package/dist/messages/pl/styleField.js +300 -0
  333. package/dist/messages/pl/styleOption.d.ts +128 -0
  334. package/dist/messages/pl/styleOption.d.ts.map +1 -0
  335. package/dist/messages/pl/styleOption.js +127 -0
  336. package/dist/messages/pl/styleSection.d.ts +16 -0
  337. package/dist/messages/pl/styleSection.d.ts.map +1 -0
  338. package/dist/messages/pl/styleSection.js +15 -0
  339. package/dist/messages/pl/toast.d.ts +22 -0
  340. package/dist/messages/pl/toast.d.ts.map +1 -0
  341. package/dist/messages/pl/toast.js +21 -0
  342. package/dist/messages/pl/toolbar.d.ts +47 -0
  343. package/dist/messages/pl/toolbar.d.ts.map +1 -0
  344. package/dist/messages/pl/toolbar.js +46 -0
  345. package/dist/messages/pl/translation.d.ts +7 -0
  346. package/dist/messages/pl/translation.d.ts.map +1 -0
  347. package/dist/messages/pl/translation.js +6 -0
  348. package/dist/messages/pl/ui.d.ts +4 -0
  349. package/dist/messages/pl/ui.d.ts.map +1 -0
  350. package/dist/messages/pl/ui.js +3 -0
  351. package/dist/messages/pl/values.d.ts +45 -0
  352. package/dist/messages/pl/values.d.ts.map +1 -0
  353. package/dist/messages/pl/values.js +44 -0
  354. package/dist/messages/pl.d.ts.map +1 -1
  355. package/dist/messages/pl.js +82 -325
  356. package/dist/messages/plural.test.d.ts +2 -0
  357. package/dist/messages/plural.test.d.ts.map +1 -0
  358. package/dist/messages/plural.test.js +50 -0
  359. package/dist/panels/breadcrumbs/breadcrumbs.d.ts +1 -1
  360. package/dist/panels/breadcrumbs/breadcrumbs.d.ts.map +1 -1
  361. package/dist/panels/breadcrumbs/breadcrumbs.js +10 -3
  362. package/dist/panels/breadcrumbs/breadcrumbs.test.js +9 -2
  363. package/dist/panels/index.d.ts +3 -0
  364. package/dist/panels/index.d.ts.map +1 -1
  365. package/dist/panels/index.js +1 -0
  366. package/dist/panels/insert/catalog.d.ts +21 -1
  367. package/dist/panels/insert/catalog.d.ts.map +1 -1
  368. package/dist/panels/insert/catalog.js +85 -3
  369. package/dist/panels/insert/catalog.order.test.js +106 -1
  370. package/dist/panels/insert/index.d.ts +1 -0
  371. package/dist/panels/insert/index.d.ts.map +1 -1
  372. package/dist/panels/insert/insert-panel.d.ts +14 -4
  373. package/dist/panels/insert/insert-panel.d.ts.map +1 -1
  374. package/dist/panels/insert/insert-panel.js +128 -69
  375. package/dist/panels/insert/insert-panel.test.js +278 -37
  376. package/dist/panels/insert/target.d.ts +5 -1
  377. package/dist/panels/insert/target.d.ts.map +1 -1
  378. package/dist/panels/insert/target.js +11 -1
  379. package/dist/panels/inspector/author-fields.d.ts +21 -0
  380. package/dist/panels/inspector/author-fields.d.ts.map +1 -0
  381. package/dist/panels/inspector/author-fields.js +191 -0
  382. package/dist/panels/inspector/author-fields.test.d.ts +2 -0
  383. package/dist/panels/inspector/author-fields.test.d.ts.map +1 -0
  384. package/dist/panels/inspector/author-fields.test.js +237 -0
  385. package/dist/panels/inspector/controls/external-link.d.ts +24 -0
  386. package/dist/panels/inspector/controls/external-link.d.ts.map +1 -0
  387. package/dist/panels/inspector/controls/external-link.js +43 -0
  388. package/dist/panels/inspector/controls/external-link.test.d.ts +2 -0
  389. package/dist/panels/inspector/controls/external-link.test.d.ts.map +1 -0
  390. package/dist/panels/inspector/controls/external-link.test.js +105 -0
  391. package/dist/panels/inspector/controls/index.d.ts +1 -0
  392. package/dist/panels/inspector/controls/index.d.ts.map +1 -1
  393. package/dist/panels/inspector/controls/index.js +1 -0
  394. package/dist/panels/inspector/controls/media.d.ts +3 -1
  395. package/dist/panels/inspector/controls/media.d.ts.map +1 -1
  396. package/dist/panels/inspector/controls/media.js +8 -3
  397. package/dist/panels/inspector/controls/rich-text.d.ts.map +1 -1
  398. package/dist/panels/inspector/controls/rich-text.js +36 -6
  399. package/dist/panels/inspector/controls/textarea.d.ts +7 -2
  400. package/dist/panels/inspector/controls/textarea.d.ts.map +1 -1
  401. package/dist/panels/inspector/controls/textarea.js +37 -2
  402. package/dist/panels/inspector/default-hint.d.ts +13 -0
  403. package/dist/panels/inspector/default-hint.d.ts.map +1 -0
  404. package/dist/panels/inspector/default-hint.js +30 -0
  405. package/dist/panels/inspector/default-hint.test.d.ts +2 -0
  406. package/dist/panels/inspector/default-hint.test.d.ts.map +1 -0
  407. package/dist/panels/inspector/default-hint.test.js +46 -0
  408. package/dist/panels/inspector/index.d.ts +3 -3
  409. package/dist/panels/inspector/index.d.ts.map +1 -1
  410. package/dist/panels/inspector/index.js +2 -2
  411. package/dist/panels/inspector/inspector.d.ts +20 -2
  412. package/dist/panels/inspector/inspector.d.ts.map +1 -1
  413. package/dist/panels/inspector/inspector.js +246 -26
  414. package/dist/panels/inspector/inspector.test.js +276 -11
  415. package/dist/panels/inspector/props-panel.d.ts +36 -0
  416. package/dist/panels/inspector/props-panel.d.ts.map +1 -1
  417. package/dist/panels/inspector/props-panel.js +99 -17
  418. package/dist/panels/inspector/props-panel.test.d.ts +2 -0
  419. package/dist/panels/inspector/props-panel.test.d.ts.map +1 -0
  420. package/dist/panels/inspector/props-panel.test.js +17 -0
  421. package/dist/panels/inspector/scrub-label.d.ts +14 -0
  422. package/dist/panels/inspector/scrub-label.d.ts.map +1 -0
  423. package/dist/panels/inspector/scrub-label.js +75 -0
  424. package/dist/panels/inspector/scrub-label.test.d.ts +2 -0
  425. package/dist/panels/inspector/scrub-label.test.d.ts.map +1 -0
  426. package/dist/panels/inspector/scrub-label.test.js +132 -0
  427. package/dist/panels/inspector/styles/background-media.d.ts +28 -0
  428. package/dist/panels/inspector/styles/background-media.d.ts.map +1 -0
  429. package/dist/panels/inspector/styles/background-media.js +78 -0
  430. package/dist/panels/inspector/styles/box-model.d.ts +13 -16
  431. package/dist/panels/inspector/styles/box-model.d.ts.map +1 -1
  432. package/dist/panels/inspector/styles/box-model.js +10 -25
  433. package/dist/panels/inspector/styles/color-input.d.ts +3 -0
  434. package/dist/panels/inspector/styles/color-input.d.ts.map +1 -0
  435. package/dist/panels/inspector/styles/color-input.js +72 -0
  436. package/dist/panels/inspector/styles/gradient-fields.d.ts +9 -0
  437. package/dist/panels/inspector/styles/gradient-fields.d.ts.map +1 -0
  438. package/dist/panels/inspector/styles/gradient-fields.js +50 -0
  439. package/dist/panels/inspector/styles/index.d.ts +2 -0
  440. package/dist/panels/inspector/styles/index.d.ts.map +1 -1
  441. package/dist/panels/inspector/styles/index.js +2 -0
  442. package/dist/panels/inspector/styles/model.d.ts +27 -5
  443. package/dist/panels/inspector/styles/model.d.ts.map +1 -1
  444. package/dist/panels/inspector/styles/model.js +101 -3
  445. package/dist/panels/inspector/styles/motion-rows.d.ts +17 -0
  446. package/dist/panels/inspector/styles/motion-rows.d.ts.map +1 -0
  447. package/dist/panels/inspector/styles/motion-rows.js +117 -0
  448. package/dist/panels/inspector/styles/number-input.d.ts +4 -0
  449. package/dist/panels/inspector/styles/number-input.d.ts.map +1 -0
  450. package/dist/panels/inspector/styles/number-input.js +12 -0
  451. package/dist/panels/inspector/styles/option-label.d.ts +7 -0
  452. package/dist/panels/inspector/styles/option-label.d.ts.map +1 -0
  453. package/dist/panels/inspector/styles/option-label.js +9 -0
  454. package/dist/panels/inspector/styles/property-label.d.ts +9 -0
  455. package/dist/panels/inspector/styles/property-label.d.ts.map +1 -0
  456. package/dist/panels/inspector/styles/property-label.js +11 -0
  457. package/dist/panels/inspector/styles/section-state.d.ts +22 -0
  458. package/dist/panels/inspector/styles/section-state.d.ts.map +1 -0
  459. package/dist/panels/inspector/styles/section-state.js +96 -0
  460. package/dist/panels/inspector/styles/section.d.ts +25 -0
  461. package/dist/panels/inspector/styles/section.d.ts.map +1 -0
  462. package/dist/panels/inspector/styles/section.js +43 -0
  463. package/dist/panels/inspector/styles/sections-context.d.ts +13 -0
  464. package/dist/panels/inspector/styles/sections-context.d.ts.map +1 -0
  465. package/dist/panels/inspector/styles/sections-context.js +19 -0
  466. package/dist/panels/inspector/styles/sections-context.test.d.ts +2 -0
  467. package/dist/panels/inspector/styles/sections-context.test.d.ts.map +1 -0
  468. package/dist/panels/inspector/styles/sections-context.test.js +18 -0
  469. package/dist/panels/inspector/styles/sections-toggle.d.ts +6 -0
  470. package/dist/panels/inspector/styles/sections-toggle.d.ts.map +1 -0
  471. package/dist/panels/inspector/styles/sections-toggle.js +18 -0
  472. package/dist/panels/inspector/styles/segments.d.ts +3 -0
  473. package/dist/panels/inspector/styles/segments.d.ts.map +1 -1
  474. package/dist/panels/inspector/styles/segments.js +11 -4
  475. package/dist/panels/inspector/styles/sides-editor.d.ts +1 -1
  476. package/dist/panels/inspector/styles/sides-editor.d.ts.map +1 -1
  477. package/dist/panels/inspector/styles/sides-editor.js +33 -4
  478. package/dist/panels/inspector/styles/style-inspector.d.ts +3 -1
  479. package/dist/panels/inspector/styles/style-inspector.d.ts.map +1 -1
  480. package/dist/panels/inspector/styles/style-inspector.js +610 -42
  481. package/dist/panels/inspector/styles/style-inspector.test.js +694 -14
  482. package/dist/panels/inspector/styles/token-picker.d.ts +1 -1
  483. package/dist/panels/inspector/styles/token-picker.d.ts.map +1 -1
  484. package/dist/panels/inspector/styles/token-picker.js +10 -3
  485. package/dist/panels/inspector/styles/widgets.d.ts +116 -0
  486. package/dist/panels/inspector/styles/widgets.d.ts.map +1 -0
  487. package/dist/panels/inspector/styles/widgets.js +304 -0
  488. package/dist/panels/inspector/styles/widgets.test.d.ts +2 -0
  489. package/dist/panels/inspector/styles/widgets.test.d.ts.map +1 -0
  490. package/dist/panels/inspector/styles/widgets.test.js +247 -0
  491. package/dist/panels/inspector/values/value-editor.d.ts +1 -1
  492. package/dist/panels/inspector/values/value-editor.d.ts.map +1 -1
  493. package/dist/panels/inspector/values/value-editor.js +9 -8
  494. package/dist/panels/inspector/values/values.test.js +9 -3
  495. package/dist/panels/issues/collect.d.ts +2 -0
  496. package/dist/panels/issues/collect.d.ts.map +1 -1
  497. package/dist/panels/issues/collect.js +1 -0
  498. package/dist/panels/issues/index.d.ts +1 -0
  499. package/dist/panels/issues/index.d.ts.map +1 -1
  500. package/dist/panels/issues/index.js +1 -0
  501. package/dist/panels/issues/issues-panel.d.ts +4 -3
  502. package/dist/panels/issues/issues-panel.d.ts.map +1 -1
  503. package/dist/panels/issues/issues-panel.js +22 -35
  504. package/dist/panels/issues/path.d.ts +7 -0
  505. package/dist/panels/issues/path.d.ts.map +1 -0
  506. package/dist/panels/issues/path.js +21 -0
  507. package/dist/panels/layers/flatten.d.ts +16 -2
  508. package/dist/panels/layers/flatten.d.ts.map +1 -1
  509. package/dist/panels/layers/flatten.js +48 -4
  510. package/dist/panels/layers/layers-panel.d.ts +5 -2
  511. package/dist/panels/layers/layers-panel.d.ts.map +1 -1
  512. package/dist/panels/layers/layers-panel.js +177 -35
  513. package/dist/panels/layers/layers-panel.test.js +173 -15
  514. package/dist/panels/left-panel.d.ts +17 -0
  515. package/dist/panels/left-panel.d.ts.map +1 -0
  516. package/dist/panels/left-panel.js +47 -0
  517. package/dist/panels/left-panel.test.d.ts +2 -0
  518. package/dist/panels/left-panel.test.d.ts.map +1 -0
  519. package/dist/panels/left-panel.test.js +77 -0
  520. package/dist/persistence/persistence.test.js +9 -3
  521. package/dist/persistence/react.d.ts.map +1 -1
  522. package/dist/persistence/react.js +2 -2
  523. package/dist/preview/preview.d.ts +8 -0
  524. package/dist/preview/preview.d.ts.map +1 -1
  525. package/dist/preview/preview.js +21 -1
  526. package/dist/preview/preview.test.js +18 -1
  527. package/dist/shortcuts/actions.d.ts +13 -2
  528. package/dist/shortcuts/actions.d.ts.map +1 -1
  529. package/dist/shortcuts/actions.js +70 -15
  530. package/dist/shortcuts/help.d.ts +11 -0
  531. package/dist/shortcuts/help.d.ts.map +1 -0
  532. package/dist/shortcuts/help.js +77 -0
  533. package/dist/shortcuts/index.d.ts +5 -2
  534. package/dist/shortcuts/index.d.ts.map +1 -1
  535. package/dist/shortcuts/index.js +3 -1
  536. package/dist/shortcuts/map.d.ts +1 -1
  537. package/dist/shortcuts/map.d.ts.map +1 -1
  538. package/dist/shortcuts/map.js +14 -8
  539. package/dist/shortcuts/navigation.d.ts +13 -0
  540. package/dist/shortcuts/navigation.d.ts.map +1 -0
  541. package/dist/shortcuts/navigation.js +48 -0
  542. package/dist/shortcuts/shortcuts.d.ts +12 -1
  543. package/dist/shortcuts/shortcuts.d.ts.map +1 -1
  544. package/dist/shortcuts/shortcuts.js +61 -14
  545. package/dist/shortcuts/shortcuts.test.js +206 -5
  546. package/dist/store/create-store.d.ts.map +1 -1
  547. package/dist/store/create-store.js +19 -1
  548. package/dist/store/index.d.ts +4 -1
  549. package/dist/store/index.d.ts.map +1 -1
  550. package/dist/store/index.js +3 -1
  551. package/dist/store/react.d.ts +4 -0
  552. package/dist/store/react.d.ts.map +1 -1
  553. package/dist/store/react.js +7 -0
  554. package/dist/store/store.test.js +24 -0
  555. package/dist/store/structure-lock.d.ts +16 -0
  556. package/dist/store/structure-lock.d.ts.map +1 -0
  557. package/dist/store/structure-lock.js +43 -0
  558. package/dist/store/structure-lock.test.d.ts +2 -0
  559. package/dist/store/structure-lock.test.d.ts.map +1 -0
  560. package/dist/store/structure-lock.test.js +49 -0
  561. package/dist/store/types.d.ts +9 -0
  562. package/dist/store/types.d.ts.map +1 -1
  563. package/dist/store/view.d.ts +20 -0
  564. package/dist/store/view.d.ts.map +1 -0
  565. package/dist/store/view.js +17 -0
  566. package/dist/store/view.test.d.ts +2 -0
  567. package/dist/store/view.test.d.ts.map +1 -0
  568. package/dist/store/view.test.js +103 -0
  569. package/dist/styles/tokens.test.js +88 -9
  570. package/dist/styles.css +4112 -586
  571. package/dist/toolbar/brand.d.ts +2 -2
  572. package/dist/toolbar/brand.d.ts.map +1 -1
  573. package/dist/toolbar/brand.js +4 -4
  574. package/dist/toolbar/breakpoint-control.d.ts +4 -0
  575. package/dist/toolbar/breakpoint-control.d.ts.map +1 -1
  576. package/dist/toolbar/breakpoint-control.js +11 -4
  577. package/dist/toolbar/editable-title.d.ts +4 -1
  578. package/dist/toolbar/editable-title.d.ts.map +1 -1
  579. package/dist/toolbar/editable-title.js +2 -2
  580. package/dist/toolbar/editable-title.test.js +10 -0
  581. package/dist/toolbar/locale-chip.d.ts +10 -0
  582. package/dist/toolbar/locale-chip.d.ts.map +1 -0
  583. package/dist/toolbar/locale-chip.js +27 -0
  584. package/dist/toolbar/locale-switcher.d.ts.map +1 -1
  585. package/dist/toolbar/locale-switcher.js +4 -1
  586. package/dist/toolbar/more-menu.d.ts +26 -4
  587. package/dist/toolbar/more-menu.d.ts.map +1 -1
  588. package/dist/toolbar/more-menu.js +60 -13
  589. package/dist/toolbar/page-chip.d.ts +10 -0
  590. package/dist/toolbar/page-chip.d.ts.map +1 -0
  591. package/dist/toolbar/page-chip.js +12 -0
  592. package/dist/toolbar/page-options-dialog.d.ts +16 -0
  593. package/dist/toolbar/page-options-dialog.d.ts.map +1 -0
  594. package/dist/toolbar/page-options-dialog.js +13 -0
  595. package/dist/toolbar/panel-toggles.d.ts +3 -2
  596. package/dist/toolbar/panel-toggles.d.ts.map +1 -1
  597. package/dist/toolbar/panel-toggles.js +9 -4
  598. package/dist/toolbar/publish-dialog.d.ts +3 -0
  599. package/dist/toolbar/publish-dialog.d.ts.map +1 -1
  600. package/dist/toolbar/publish-dialog.js +34 -7
  601. package/dist/toolbar/publish.test.js +63 -19
  602. package/dist/toolbar/safe-history.d.ts +3 -0
  603. package/dist/toolbar/safe-history.d.ts.map +1 -0
  604. package/dist/toolbar/safe-history.js +5 -0
  605. package/dist/toolbar/sample-picker.d.ts +24 -4
  606. package/dist/toolbar/sample-picker.d.ts.map +1 -1
  607. package/dist/toolbar/sample-picker.js +42 -18
  608. package/dist/toolbar/toolbar-centre.d.ts +3 -11
  609. package/dist/toolbar/toolbar-centre.d.ts.map +1 -1
  610. package/dist/toolbar/toolbar-centre.js +4 -5
  611. package/dist/toolbar/toolbar-left.d.ts +4 -7
  612. package/dist/toolbar/toolbar-left.d.ts.map +1 -1
  613. package/dist/toolbar/toolbar-left.js +13 -11
  614. package/dist/toolbar/toolbar-right.d.ts +21 -6
  615. package/dist/toolbar/toolbar-right.d.ts.map +1 -1
  616. package/dist/toolbar/toolbar-right.js +28 -14
  617. package/dist/toolbar/toolbar.d.ts +23 -17
  618. package/dist/toolbar/toolbar.d.ts.map +1 -1
  619. package/dist/toolbar/toolbar.js +28 -11
  620. package/dist/toolbar/toolbar.test.js +238 -23
  621. package/dist/toolbar/use-overflow-level.d.ts +2 -1
  622. package/dist/toolbar/use-overflow-level.d.ts.map +1 -1
  623. package/dist/toolbar/use-overflow-level.js +9 -3
  624. package/dist/toolbar/zoom-menu.d.ts +5 -1
  625. package/dist/toolbar/zoom-menu.d.ts.map +1 -1
  626. package/dist/toolbar/zoom-menu.js +3 -2
  627. package/dist/ui/icon.d.ts +53 -0
  628. package/dist/ui/icon.d.ts.map +1 -1
  629. package/dist/ui/icon.js +58 -1
  630. package/dist/ui/icon.test.js +101 -3
  631. package/dist/ui/index.d.ts +4 -3
  632. package/dist/ui/index.d.ts.map +1 -1
  633. package/dist/ui/index.js +3 -2
  634. package/dist/ui/primitives.d.ts +97 -14
  635. package/dist/ui/primitives.d.ts.map +1 -1
  636. package/dist/ui/primitives.js +108 -22
  637. package/dist/ui/primitives.test.js +204 -3
  638. package/dist/ui/structure-locked.d.ts +9 -0
  639. package/dist/ui/structure-locked.d.ts.map +1 -0
  640. package/dist/ui/structure-locked.js +28 -0
  641. package/dist/ui/toast.d.ts +3 -1
  642. package/dist/ui/toast.d.ts.map +1 -1
  643. package/dist/ui/toast.js +21 -5
  644. package/dist/ui/toast.test.js +34 -0
  645. package/package.json +5 -4
@@ -1,4 +1,5 @@
1
1
  import { type StylePropertyDef, type Theme } from '@next-buildr/core';
2
+ import type { StyleLayer } from '@next-buildr/core/commands';
2
3
  /** What an author typed, checked against the property's grammar and the theme. */
3
4
  export type StyleInput = {
4
5
  readonly ok: true;
@@ -22,17 +23,18 @@ export declare function keywordsOf(def: StylePropertyDef): readonly string[];
22
23
  /** A property that is only a list of keywords is edited with a select. */
23
24
  export declare function isEnumeration(def: StylePropertyDef): boolean;
24
25
  /** The layer a breakpoint id edits: desktop is `{}`. */
25
- export declare const layerFor: (breakpoint: string | undefined) => {
26
- bp?: never;
27
- } | {
28
- bp: string;
29
- };
26
+ export declare const layerFor: (breakpoint: string | undefined) => StyleLayer;
30
27
  /** The units the property's grammar allows, and nothing else: they are all the unit menu offers. */
31
28
  export declare function unitsOf(def: StylePropertyDef): readonly string[];
32
29
  /** Whether the grammar takes a bare number (`opacity`, `lineHeight`) rather than only lengths. */
33
30
  export declare function takesNumber(def: StylePropertyDef): boolean;
34
31
  /** How much an arrow key adds: a fraction where the number is confined to a small range. */
35
32
  export declare function stepOf(def: StylePropertyDef): number;
33
+ /** Scrubbing follows the active notation: a length and a unitless number can have different limits. */
34
+ export declare function boundsOf(def: StylePropertyDef, value: string): {
35
+ min?: number;
36
+ max?: number;
37
+ };
36
38
  /** Whether the property is edited as a number (with a unit menu) rather than as free keyword text. */
37
39
  export declare function isNumeric(def: StylePropertyDef): boolean;
38
40
  export interface TokenEntry {
@@ -52,4 +54,24 @@ export declare function sliderOf(def: StylePropertyDef): {
52
54
  readonly max: number;
53
55
  readonly step: number;
54
56
  } | undefined;
57
+ /** How a numeric property is edited with a slider: its span, the unit it writes and what it shows. */
58
+ export interface RangeSpec {
59
+ readonly min: number;
60
+ readonly max: number;
61
+ readonly step: number;
62
+ /** The unit written after the number (`px`, `deg`); empty for a bare number. */
63
+ readonly unit: string;
64
+ /** The value the property has while nothing sets it; the slider rests there and the field hints it. */
65
+ readonly fallback: number;
66
+ /** Bare numbers shown as a share (`1` as `100%`). */
67
+ readonly percent?: boolean;
68
+ }
69
+ /** Sliders of the effects group (docs/design/template: shadow, filters, transforms). */
70
+ export declare const RANGES: Readonly<Record<string, RangeSpec>>;
71
+ /** What an unset keyword property does, so an empty select can say it instead of showing a dash. */
72
+ export declare const KEYWORD_DEFAULTS: Readonly<Record<string, string>>;
73
+ /** The number a slider position stands for, written as the text the grammar takes. */
74
+ export declare const rangeText: (spec: RangeSpec, value: number) => string;
75
+ /** The text a slider's bubble shows. */
76
+ export declare const rangeShown: (spec: RangeSpec, value: number) => string;
55
77
  //# sourceMappingURL=model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/panels/inspector/styles/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,gBAAgB,EACrB,KAAK,KAAK,EACX,MAAM,mBAAmB,CAAC;AAE3B,kFAAkF;AAClF,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAKrD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU,CAmB7F;AAED,wFAAwF;AACxF,eAAO,MAAM,OAAO,QAAS,gBAAgB,KAAG,SAAS,MAAM,EACW,CAAC;AAE3E,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,CAM9E;AAED,iGAAiG;AACjG,wBAAgB,UAAU,CAAC,GAAG,EAAE,gBAAgB,GAAG,SAAS,MAAM,EAAE,CAGnE;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAS5D;AAED,wDAAwD;AACxD,eAAO,MAAM,QAAQ,eAAgB,MAAM,GAAG,SAAS;;;;CACsB,CAAC;AAE9E,oGAAoG;AACpG,wBAAgB,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,SAAS,MAAM,EAAE,CAGhE;AAED,kGAAkG;AAClG,wBAAgB,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAG1D;AAED,4FAA4F;AAC5F,wBAAgB,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAMpD;AAED,sGAAsG;AACtG,wBAAgB,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAExD;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU,EAAE,CAQ9E;AAED,iGAAiG;AACjG,wBAAgB,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAO7F;AAED,0FAA0F;AAC1F,wBAAgB,QAAQ,CACtB,GAAG,EAAE,gBAAgB,GACpB;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAMnF"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/panels/inspector/styles/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,gBAAgB,EACrB,KAAK,KAAK,EACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,kFAAkF;AAClF,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAKrD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU,CAmB7F;AAED,wFAAwF;AACxF,eAAO,MAAM,OAAO,QAAS,gBAAgB,KAAG,SAAS,MAAM,EACW,CAAC;AAE3E,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,CAM9E;AAED,iGAAiG;AACjG,wBAAgB,UAAU,CAAC,GAAG,EAAE,gBAAgB,GAAG,SAAS,MAAM,EAAE,CAGnE;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAS5D;AAED,wDAAwD;AACxD,eAAO,MAAM,QAAQ,eAAgB,MAAM,GAAG,SAAS,KAAG,UAKzD,CAAC;AAEF,oGAAoG;AACpG,wBAAgB,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,SAAS,MAAM,EAAE,CAOhE;AAED,kGAAkG;AAClG,wBAAgB,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAG1D;AAED,4FAA4F;AAC5F,wBAAgB,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAMpD;AAED,uGAAuG;AACvG,wBAAgB,QAAQ,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAQ7F;AAED,sGAAsG;AACtG,wBAAgB,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAOxD;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU,EAAE,CAQ9E;AAED,iGAAiG;AACjG,wBAAgB,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAO7F;AAED,0FAA0F;AAC1F,wBAAgB,QAAQ,CACtB,GAAG,EAAE,gBAAgB,GACpB;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAMnF;AAED,sGAAsG;AACtG,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uGAAuG;IACvG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAgCD,wFAAwF;AACxF,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CA2BtD,CAAC;AAEF,oGAAoG;AACpG,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAS7D,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,SAAS,SAAU,SAAS,SAAS,MAAM,KAAG,MAChB,CAAC;AAE5C,wCAAwC;AACxC,eAAO,MAAM,UAAU,SAAU,SAAS,SAAS,MAAM,KAAG,MACuC,CAAC"}
@@ -53,11 +53,21 @@ export function isEnumeration(def) {
53
53
  grammar.number === undefined);
54
54
  }
55
55
  /** The layer a breakpoint id edits: desktop is `{}`. */
56
- export const layerFor = (breakpoint) => breakpoint === undefined || breakpoint === 'base' ? {} : { bp: breakpoint };
56
+ export const layerFor = (breakpoint) => {
57
+ if (breakpoint === 'state:hover')
58
+ return { state: 'hover' };
59
+ if (breakpoint === 'state:focus-visible')
60
+ return { state: 'focus-visible' };
61
+ if (breakpoint === 'state:active')
62
+ return { state: 'active' };
63
+ return breakpoint === undefined || breakpoint === 'base' ? {} : { bp: breakpoint };
64
+ };
57
65
  /** The units the property's grammar allows, and nothing else: they are all the unit menu offers. */
58
66
  export function unitsOf(def) {
59
67
  const grammar = def.grammar;
60
- return grammar.kind === 'composite' ? (grammar.length?.units ?? []) : [];
68
+ return grammar.kind === 'composite'
69
+ ? (grammar.length?.units ?? []).filter((unit) => def.group !== 'spacing' || ['px', '%', 'rem', 'vw'].includes(unit))
70
+ : [];
61
71
  }
62
72
  /** Whether the grammar takes a bare number (`opacity`, `lineHeight`) rather than only lengths. */
63
73
  export function takesNumber(def) {
@@ -75,9 +85,24 @@ export function stepOf(def) {
75
85
  return 100;
76
86
  return grammar.number.max - grammar.number.min <= 10 && grammar.number.integer !== true ? 0.1 : 1;
77
87
  }
88
+ /** Scrubbing follows the active notation: a length and a unitless number can have different limits. */
89
+ export function boundsOf(def, value) {
90
+ const grammar = def.grammar;
91
+ if (grammar.kind === 'gridTrack' || grammar.kind === 'gridSpan')
92
+ return { min: 1, max: 12 };
93
+ if (grammar.kind !== 'composite')
94
+ return {};
95
+ if (grammar.number !== undefined && !/[a-z%]$/i.test(value)) {
96
+ return { min: grammar.number.min, max: grammar.number.max };
97
+ }
98
+ return grammar.length?.negative === true ? {} : { min: 0 };
99
+ }
78
100
  /** Whether the property is edited as a number (with a unit menu) rather than as free keyword text. */
79
101
  export function isNumeric(def) {
80
- return unitsOf(def).length > 0 || takesNumber(def);
102
+ return (unitsOf(def).length > 0 ||
103
+ takesNumber(def) ||
104
+ def.grammar.kind === 'gridTrack' ||
105
+ def.grammar.kind === 'gridSpan');
81
106
  }
82
107
  /** The tokens a property accepts in this theme, with their values, for the picker. */
83
108
  export function tokenEntries(def, theme) {
@@ -109,3 +134,76 @@ export function sliderOf(def) {
109
134
  const { min, max } = grammar.number;
110
135
  return max - min <= 1 ? { min, max, step: 0.01 } : undefined;
111
136
  }
137
+ const px = (min, max, fallback = 0) => ({
138
+ min,
139
+ max,
140
+ step: 1,
141
+ unit: 'px',
142
+ fallback,
143
+ });
144
+ const deg = (min, max) => ({
145
+ min,
146
+ max,
147
+ step: 1,
148
+ unit: 'deg',
149
+ fallback: 0,
150
+ });
151
+ const ms = (min, max, step, fallback) => ({
152
+ min,
153
+ max,
154
+ step,
155
+ unit: 'ms',
156
+ fallback,
157
+ });
158
+ const share = (min, max, fallback) => ({
159
+ min,
160
+ max,
161
+ step: 0.01,
162
+ unit: '',
163
+ fallback,
164
+ percent: true,
165
+ });
166
+ /** Sliders of the effects group (docs/design/template: shadow, filters, transforms). */
167
+ export const RANGES = {
168
+ 'effects.shadowX': px(-40, 40),
169
+ 'effects.shadowY': px(-40, 40),
170
+ 'effects.shadowBlur': px(0, 80),
171
+ 'effects.shadowSpread': px(-40, 40),
172
+ 'effects.textShadowX': px(-10, 10),
173
+ 'effects.textShadowY': px(-10, 10),
174
+ 'effects.textShadowBlur': px(0, 20),
175
+ 'effects.blur': px(0, 20),
176
+ 'effects.backdropBlur': px(0, 40),
177
+ 'effects.brightness': share(0, 2, 1),
178
+ 'effects.contrast': share(0, 2, 1),
179
+ 'effects.saturate': share(0, 2, 1),
180
+ 'effects.grayscale': share(0, 1, 0),
181
+ 'effects.sepia': share(0, 1, 0),
182
+ 'effects.invert': share(0, 1, 0),
183
+ 'effects.hueRotate': deg(-180, 180),
184
+ 'effects.rotate': deg(-180, 180),
185
+ 'effects.skewX': deg(-45, 45),
186
+ 'effects.skewY': deg(-45, 45),
187
+ 'effects.scale': share(0.5, 1.5, 1),
188
+ 'effects.opacity': share(0, 1, 1),
189
+ // Motion (ADR-027): the defaults are the compiler's (600ms entrance, 200ms hover).
190
+ 'motion.entranceDuration': ms(0, 2000, 50, 600),
191
+ 'motion.entranceDelay': ms(0, 2000, 50, 0),
192
+ 'motion.hoverDuration': ms(0, 1000, 20, 200),
193
+ 'motion.scrollParallax': { min: 0, max: 200, step: 5, unit: 'px', fallback: 0 },
194
+ };
195
+ /** What an unset keyword property does, so an empty select can say it instead of showing a dash. */
196
+ export const KEYWORD_DEFAULTS = {
197
+ 'effects.blendMode': 'normal',
198
+ 'effects.shadowInset': 'outset',
199
+ 'effects.cursor': 'auto',
200
+ 'effects.transformOrigin': 'center',
201
+ 'motion.entrance': 'none',
202
+ 'motion.entranceEasing': 'ease-out',
203
+ 'motion.hover': 'none',
204
+ 'motion.scrollReveal': 'none',
205
+ };
206
+ /** The number a slider position stands for, written as the text the grammar takes. */
207
+ export const rangeText = (spec, value) => `${Number(value.toFixed(4))}${spec.unit}`;
208
+ /** The text a slider's bubble shows. */
209
+ export const rangeShown = (spec, value) => spec.percent === true ? `${Math.round(value * 100)}%` : `${Number(value.toFixed(2))}${spec.unit}`;
@@ -0,0 +1,17 @@
1
+ import type { EffectiveStyles } from '@next-buildr/core';
2
+ import type { ReactNode } from 'react';
3
+ /**
4
+ * The rows of the Animations section (ADR-027): ready entrance effects, then the entrance, hover and
5
+ * scroll controls, each shown only when it has something to adjust. Every control is the regular
6
+ * style row (`row(name)`), so reset, breakpoint override and validation work as everywhere else.
7
+ */
8
+ export declare function MotionRows(props: {
9
+ readonly nodeId: string;
10
+ readonly effective: EffectiveStyles;
11
+ readonly layer: string;
12
+ readonly disabled: boolean;
13
+ readonly onError: (message: string) => void;
14
+ readonly row: (name: string) => ReactNode;
15
+ readonly has: (name: string) => boolean;
16
+ }): import("react").JSX.Element;
17
+ //# sourceMappingURL=motion-rows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motion-rows.d.ts","sourceRoot":"","sources":["../../../../src/panels/inspector/styles/motion-rows.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AA8DvC;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;IAC1C,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CACzC,+BAuGA"}
@@ -0,0 +1,117 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { interpolate, useT } from '../../../messages/index.js';
3
+ import { useEditor } from '../../../store/index.js';
4
+ import { Button } from '../../../ui/index.js';
5
+ import { layerFor } from './model.js';
6
+ import { optionLabel } from './option-label.js';
7
+ /** The cubic-bezier of each easing the compiler knows (compile-motion.ts), for the curve preview. */
8
+ const CURVES = {
9
+ ease: [0.25, 0.1, 0.25, 1],
10
+ 'ease-in': [0.42, 0, 1, 1],
11
+ 'ease-out': [0, 0, 0.58, 1],
12
+ 'ease-in-out': [0.42, 0, 0.58, 1],
13
+ linear: [0, 0, 1, 1],
14
+ snappy: [0.2, 0.8, 0.2, 1],
15
+ bounce: [0.34, 1.56, 0.64, 1],
16
+ };
17
+ /** The ready entrance effects: what they write is only the effect and its direction. */
18
+ const PRESETS = [
19
+ { id: 'none', label: 'styleField.motion.preset.none', entrance: 'none' },
20
+ { id: 'fade', label: 'styleField.motion.preset.fade', entrance: 'fade' },
21
+ { id: 'slideUp', label: 'styleField.motion.preset.slideUp', entrance: 'slide', direction: 'up' },
22
+ {
23
+ id: 'slideLeft',
24
+ label: 'styleField.motion.preset.slideLeft',
25
+ entrance: 'slide',
26
+ direction: 'left',
27
+ },
28
+ { id: 'zoom', label: 'styleField.motion.preset.zoom', entrance: 'zoom' },
29
+ ];
30
+ const X = (x) => (4 + 56 * x).toFixed(1);
31
+ const Y = (y) => (60 - 56 * y).toFixed(1);
32
+ /** A small plot of the easing (time across, progress up); decorative, the name is the caption. */
33
+ function Curve({ easing }) {
34
+ const t = useT();
35
+ const bezier = CURVES[easing] ?? CURVES['ease-out'] ?? [0, 0, 0.58, 1];
36
+ const [a, b, c, d] = bezier;
37
+ return (_jsxs("figure", { className: "bd-motion-curve", children: [_jsxs("svg", { viewBox: "0 0 64 64", "aria-hidden": "true", focusable: "false", children: [_jsx("path", { className: "bd-motion-curve__grid", d: "M4 60 H60 M4 60 V4" }), _jsx("path", { className: "bd-motion-curve__handles", d: `M4 60 L${X(a)} ${Y(b)} M60 4 L${X(c)} ${Y(d)}` }), _jsx("path", { className: "bd-motion-curve__line", d: `M4 60 C${X(a)} ${Y(b)} ${X(c)} ${Y(d)} 60 4` })] }), _jsx("figcaption", { children: interpolate(t('styleField.motion.curve'), { name: optionLabel(easing, t) }) })] }));
38
+ }
39
+ /**
40
+ * The rows of the Animations section (ADR-027): ready entrance effects, then the entrance, hover and
41
+ * scroll controls, each shown only when it has something to adjust. Every control is the regular
42
+ * style row (`row(name)`), so reset, breakpoint override and validation work as everywhere else.
43
+ */
44
+ export function MotionRows(props) {
45
+ const t = useT();
46
+ const store = useEditor();
47
+ const { effective, layer, row, has } = props;
48
+ const value = (name) => {
49
+ const entry = effective[`motion.${name}`];
50
+ return entry === undefined ? undefined : String(entry.value);
51
+ };
52
+ const entrance = value('entrance') ?? 'none';
53
+ const direction = value('entranceDirection') ?? 'up';
54
+ const easing = value('entranceEasing') ?? 'ease-out';
55
+ const hover = value('hover') ?? 'none';
56
+ const here = (name) => effective[`motion.${name}`]?.source === layer;
57
+ const base = layer === 'base';
58
+ const choose = (preset) => {
59
+ const target = layerFor(layer);
60
+ const set = (property, text) => ({
61
+ type: 'node.setStyle',
62
+ payload: { id: props.nodeId, layer: target, group: 'motion', property, value: text },
63
+ });
64
+ const unset = (property) => ({
65
+ type: 'node.unsetStyle',
66
+ payload: { id: props.nodeId, layer: target, group: 'motion', property },
67
+ });
68
+ const commands = preset.entrance === 'none'
69
+ ? base
70
+ ? ['entrance', 'entranceDirection'].filter(here).map(unset)
71
+ : [set('entrance', 'none')]
72
+ : [
73
+ set('entrance', preset.entrance),
74
+ ...(preset.direction !== undefined ? [set('entranceDirection', preset.direction)] : []),
75
+ ];
76
+ if (commands.length === 0)
77
+ return;
78
+ const result = store.dispatchBatch(commands, { label: t(preset.label) });
79
+ props.onError(result.ok ? '' : (result.error?.message ?? ''));
80
+ };
81
+ const active = (preset) => preset.entrance === entrance && (preset.entrance !== 'slide' || preset.direction === direction);
82
+ const sub = (key) => (_jsx("span", { className: "bd-flabel bd-style-sub", children: t(key) }, key));
83
+ const rows = [];
84
+ if (has('entrance')) {
85
+ rows.push(sub('styleField.motion.entrance'));
86
+ rows.push(_jsx("fieldset", { className: "bd-segmented bd-motion-presets", "aria-label": t('styleField.motion.presets'), children: PRESETS.map((preset) => (_jsx(Button, { variant: "ghost", className: "bd-segment", "aria-pressed": active(preset), disabled: props.disabled, onClick: () => choose(preset), children: t(preset.label) }, preset.id))) }, "presets"));
87
+ rows.push(_jsx("div", { children: row('entrance') }, "entrance"));
88
+ if (entrance !== 'none') {
89
+ if (entrance === 'slide' && has('entranceDirection')) {
90
+ rows.push(_jsx("div", { children: row('entranceDirection') }, "direction"));
91
+ }
92
+ for (const name of ['entranceDuration', 'entranceDelay', 'entranceEasing']) {
93
+ if (has(name))
94
+ rows.push(_jsx("div", { children: row(name) }, name));
95
+ }
96
+ if (has('entranceEasing'))
97
+ rows.push(_jsx(Curve, { easing: easing }, "curve"));
98
+ }
99
+ }
100
+ if (has('hover')) {
101
+ rows.push(sub('styleField.motion.hover'));
102
+ rows.push(_jsx("div", { children: row('hover') }, "hover"));
103
+ if (hover !== 'none' && has('hoverDuration')) {
104
+ rows.push(_jsx("div", { children: row('hoverDuration') }, "hoverDuration"));
105
+ }
106
+ }
107
+ if (has('scrollReveal') || has('scrollParallax')) {
108
+ rows.push(sub('styleField.motion.scroll'));
109
+ if (has('scrollReveal'))
110
+ rows.push(_jsx("div", { children: row('scrollReveal') }, "scrollReveal"));
111
+ if (has('scrollParallax'))
112
+ rows.push(_jsx("div", { children: row('scrollParallax') }, "scrollParallax"));
113
+ rows.push(_jsx("p", { className: "bd-hint", children: t('styleField.motion.scrollHint') }, "scrollHint"));
114
+ }
115
+ rows.push(_jsx("p", { className: "bd-hint", children: t('styleField.motion.reduced') }, "reduced"));
116
+ return _jsx(_Fragment, { children: rows });
117
+ }
@@ -0,0 +1,4 @@
1
+ import type { ComponentProps } from 'react';
2
+ import { NumberUnitInput as Input } from '../../../ui/index.ts';
3
+ export declare function NumberUnitInput(props: ComponentProps<typeof Input>): import("react").JSX.Element;
4
+ //# sourceMappingURL=number-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-input.d.ts","sourceRoot":"","sources":["../../../../src/panels/inspector/styles/number-input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAQ,eAAe,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACtE,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,KAAK,CAAC,+BAgClE"}
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useT } from '../../../messages/index.js';
3
+ import { Icon, NumberUnitInput as Input } from '../../../ui/index.js';
4
+ export function NumberUnitInput(props) {
5
+ const t = useT();
6
+ const step = (direction) => {
7
+ const match = /^(-?(?:\d+\.?\d*|\.\d+))([a-z%]*)$/.exec(props.value);
8
+ const value = Number(match?.[1] ?? 0) + direction * (props.step ?? 1);
9
+ props.onValueChange(`${Number(value.toFixed(4))}${match?.[2] ?? (props.bareNumber ? '' : (props.units[0] ?? ''))}`);
10
+ };
11
+ return (_jsxs("span", { className: "bd-style-number", children: [_jsx(Input, { ...props }), _jsxs("span", { className: "bd-style-steps", children: [_jsx("button", { type: "button", disabled: props.disabled, "aria-label": `${props.ariaLabel ?? props.unitLabel}: ${t('style.step.up')}`, onClick: () => step(1), children: _jsx(Icon, { name: "chevron-up" }) }), _jsx("button", { type: "button", disabled: props.disabled, "aria-label": `${props.ariaLabel ?? props.unitLabel}: ${t('style.step.down')}`, onClick: () => step(-1), children: _jsx(Icon, { name: "chevron-down" }) })] })] }));
12
+ }
@@ -0,0 +1,7 @@
1
+ import type { Translate } from '../../../messages/index.tsx';
2
+ /**
3
+ * The words an author reads for a CSS keyword (`flex-start`, `nowrap`, `multiply`). The stored
4
+ * value stays the keyword; only what is shown is translated. A keyword without a message shows as it is.
5
+ */
6
+ export declare function optionLabel(keyword: string, t: Translate): string;
7
+ //# sourceMappingURL=option-label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option-label.d.ts","sourceRoot":"","sources":["../../../../src/panels/inspector/styles/option-label.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAEzE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAGjE"}
@@ -0,0 +1,9 @@
1
+ import { en } from '../../../messages/en.js';
2
+ /**
3
+ * The words an author reads for a CSS keyword (`flex-start`, `nowrap`, `multiply`). The stored
4
+ * value stays the keyword; only what is shown is translated. A keyword without a message shows as it is.
5
+ */
6
+ export function optionLabel(keyword, t) {
7
+ const key = `styleOption.kw.${keyword.trim().replaceAll(' ', '-')}`;
8
+ return Object.hasOwn(en, key) ? t(key) : keyword;
9
+ }
@@ -0,0 +1,9 @@
1
+ import type { StylePropertyDef } from '@next-buildr/core';
2
+ import type { Translate } from '../../../messages/index.tsx';
3
+ export declare const propertyLabel: (def: StylePropertyDef, t: Translate) => string;
4
+ /** The label text with the first match of the search query wrapped in `<mark>`. */
5
+ export declare function Highlight(props: {
6
+ readonly text: string;
7
+ readonly query?: string | undefined;
8
+ }): import("react").JSX.Element;
9
+ //# sourceMappingURL=property-label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property-label.d.ts","sourceRoot":"","sources":["../../../../src/panels/inspector/styles/property-label.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAEzE,eAAO,MAAM,aAAa,QAAS,gBAAgB,KAAK,SAAS,KAAG,MACR,CAAC;AAE7D,mFAAmF;AACnF,wBAAgB,SAAS,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,+BAY9F"}
@@ -0,0 +1,11 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export const propertyLabel = (def, t) => t(`style.property.${def.group}.${def.name}`);
3
+ /** The label text with the first match of the search query wrapped in `<mark>`. */
4
+ export function Highlight(props) {
5
+ const query = (props.query ?? '').trim().toLowerCase();
6
+ const lower = props.text.toLowerCase();
7
+ const at = query === '' || lower.length !== props.text.length ? -1 : lower.indexOf(query);
8
+ if (at < 0)
9
+ return _jsx(_Fragment, { children: props.text });
10
+ return (_jsxs(_Fragment, { children: [props.text.slice(0, at), _jsx("mark", { children: props.text.slice(at, at + query.length) }), props.text.slice(at + query.length)] }));
11
+ }
@@ -0,0 +1,22 @@
1
+ export declare const SECTIONS_STORAGE_KEY = "buildr.editor.inspector.styles";
2
+ type Listener = () => void;
3
+ export declare const subscribeSections: (listener: Listener) => (() => void);
4
+ /** A stable snapshot: the same object until the stored text changes. */
5
+ export declare function rememberedSections(): Readonly<Record<string, boolean>>;
6
+ export declare function setSectionOpen(name: string, open: boolean): void;
7
+ export interface SectionsSnapshot {
8
+ readonly names: readonly string[];
9
+ readonly allOpen: boolean;
10
+ }
11
+ /** The sections mounted under one inspector; every editor on a page has its own. */
12
+ export interface SectionRegistry {
13
+ readonly subscribe: (listener: Listener) => () => void;
14
+ readonly snapshot: () => SectionsSnapshot;
15
+ /** A section reports whether it is open; the returned function removes it. */
16
+ readonly report: (name: string, open: boolean) => () => void;
17
+ }
18
+ export declare function createSectionRegistry(): SectionRegistry;
19
+ /** Expand or collapse every section of one registry, as one remembered change. */
20
+ export declare function setAllSections(registry: SectionRegistry, open: boolean): void;
21
+ export {};
22
+ //# sourceMappingURL=section-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"section-state.d.ts","sourceRoot":"","sources":["../../../../src/panels/inspector/styles/section-state.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,oBAAoB,mCAAmC,CAAC;AAErE,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAC;AAK3B,eAAO,MAAM,iBAAiB,aAAc,QAAQ,KAAG,CAAC,MAAM,IAAI,CAKjE,CAAC;AAiBF,wEAAwE;AACxE,wBAAgB,kBAAkB,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAYtE;AAaD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAEhE;AAGD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,MAAM,IAAI,CAAC;IACvD,QAAQ,CAAC,QAAQ,EAAE,MAAM,gBAAgB,CAAC;IAC1C,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,MAAM,IAAI,CAAC;CAC9D;AAED,wBAAgB,qBAAqB,IAAI,eAAe,CA4BvD;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAI7E"}
@@ -0,0 +1,96 @@
1
+ import { z } from 'zod';
2
+ const stateSchema = z.record(z.string(), z.boolean());
3
+ export const SECTIONS_STORAGE_KEY = 'buildr.editor.inspector.styles';
4
+ const listeners = new Set();
5
+ const notify = () => {
6
+ for (const listener of listeners)
7
+ listener();
8
+ };
9
+ export const subscribeSections = (listener) => {
10
+ listeners.add(listener);
11
+ return () => {
12
+ listeners.delete(listener);
13
+ };
14
+ };
15
+ // --- remembered open/closed state (outside the document) ---------------------------------------
16
+ let raw;
17
+ let remembered = {};
18
+ /** Corrupt or foreign data is ignored as a whole. */
19
+ function parse(text) {
20
+ if (text === null)
21
+ return {};
22
+ try {
23
+ const parsed = stateSchema.safeParse(JSON.parse(text));
24
+ return parsed.success ? parsed.data : {};
25
+ }
26
+ catch {
27
+ return {};
28
+ }
29
+ }
30
+ /** A stable snapshot: the same object until the stored text changes. */
31
+ export function rememberedSections() {
32
+ let stored;
33
+ try {
34
+ stored = localStorage.getItem(SECTIONS_STORAGE_KEY);
35
+ }
36
+ catch {
37
+ return remembered;
38
+ }
39
+ if (stored !== raw) {
40
+ raw = stored;
41
+ remembered = parse(stored);
42
+ }
43
+ return remembered;
44
+ }
45
+ function remember(next) {
46
+ remembered = next;
47
+ try {
48
+ localStorage.setItem(SECTIONS_STORAGE_KEY, JSON.stringify(next));
49
+ raw = localStorage.getItem(SECTIONS_STORAGE_KEY);
50
+ }
51
+ catch {
52
+ // Private browsing and full storage still allow in-memory preferences.
53
+ }
54
+ notify();
55
+ }
56
+ export function setSectionOpen(name, open) {
57
+ remember({ ...rememberedSections(), [name]: open });
58
+ }
59
+ export function createSectionRegistry() {
60
+ const mounted = new Map();
61
+ const own = new Set();
62
+ let snapshot = { names: [], allOpen: false };
63
+ const refresh = () => {
64
+ const names = [...mounted.keys()];
65
+ const allOpen = names.length > 0 && [...mounted.values()].every(Boolean);
66
+ if (allOpen === snapshot.allOpen && names.join(',') === snapshot.names.join(','))
67
+ return;
68
+ snapshot = { names, allOpen };
69
+ for (const listener of [...own])
70
+ listener();
71
+ };
72
+ return {
73
+ subscribe: (listener) => {
74
+ own.add(listener);
75
+ return () => {
76
+ own.delete(listener);
77
+ };
78
+ },
79
+ snapshot: () => snapshot,
80
+ report: (name, open) => {
81
+ mounted.set(name, open);
82
+ refresh();
83
+ return () => {
84
+ mounted.delete(name);
85
+ refresh();
86
+ };
87
+ },
88
+ };
89
+ }
90
+ /** Expand or collapse every section of one registry, as one remembered change. */
91
+ export function setAllSections(registry, open) {
92
+ const next = { ...rememberedSections() };
93
+ for (const name of registry.snapshot().names)
94
+ next[name] = open;
95
+ remember(next);
96
+ }
@@ -0,0 +1,25 @@
1
+ import { type ReactNode } from 'react';
2
+ /**
3
+ * One collapsible section of the Style tab: lead icon, title, a chip counting the values that
4
+ * exist only at the breakpoint being edited, a dot while the section holds any value, and a chevron
5
+ * on the right. Open/closed is a preference kept outside the document (see `section-state.ts`).
6
+ */
7
+ export declare function StyleSection(props: {
8
+ readonly name: string;
9
+ readonly label: string;
10
+ readonly defaultOpen: boolean;
11
+ readonly searching: boolean;
12
+ readonly modified: boolean;
13
+ readonly override: boolean;
14
+ /** How many values exist only at the breakpoint being edited (the chip shows above 0). */
15
+ readonly overrideCount?: number;
16
+ /** The breakpoint being edited, for the chip's name and icon. */
17
+ readonly layer?: string;
18
+ /** The search text, highlighted in the title. */
19
+ readonly query?: string;
20
+ /** "Reset section": the footer shows while this is given. */
21
+ readonly onReset?: (() => void) | undefined;
22
+ readonly resetDisabled?: boolean;
23
+ readonly children: ReactNode;
24
+ }): import("react").JSX.Element;
25
+ //# sourceMappingURL=section.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"section.d.ts","sourceRoot":"","sources":["../../../../src/panels/inspector/styles/section.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAA0C,MAAM,OAAO,CAAC;AAyB/E;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,0FAA0F;IAC1F,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,iEAAiE;IACjE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B,+BAgEA"}
@@ -0,0 +1,43 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useId, useSyncExternalStore } from 'react';
3
+ import { interpolate, usePlural, useT } from '../../../messages/index.js';
4
+ import { Icon } from '../../../ui/index.js';
5
+ import { Highlight } from './property-label.js';
6
+ import { rememberedSections, setSectionOpen, subscribeSections } from './section-state.js';
7
+ import { useSectionRegistry } from './sections-context.js';
8
+ const sectionIcons = {
9
+ layout: 'layout-grid',
10
+ size: 'stretch-vertical',
11
+ spacing: 'box',
12
+ typography: 'type',
13
+ colors: 'droplet',
14
+ background: 'image',
15
+ border: 'braces',
16
+ effects: 'sigma',
17
+ shadow: 'copy',
18
+ visibility: 'eye',
19
+ motion: 'sparkles',
20
+ };
21
+ const deviceIcon = (layer) => layer === 'mobile' ? 'smartphone' : layer === 'tablet' ? 'tablet' : 'monitor-smartphone';
22
+ /**
23
+ * One collapsible section of the Style tab: lead icon, title, a chip counting the values that
24
+ * exist only at the breakpoint being edited, a dot while the section holds any value, and a chevron
25
+ * on the right. Open/closed is a preference kept outside the document (see `section-state.ts`).
26
+ */
27
+ export function StyleSection(props) {
28
+ const t = useT();
29
+ const plural = usePlural();
30
+ const id = useId();
31
+ const stored = useSyncExternalStore(subscribeSections, rememberedSections, rememberedSections);
32
+ const open = stored[props.name] ?? props.defaultOpen;
33
+ const expanded = props.searching || open;
34
+ const registry = useSectionRegistry();
35
+ useEffect(() => registry.report(props.name, open), [registry, props.name, open]);
36
+ const count = props.overrideCount ?? (props.override ? 1 : 0);
37
+ const layer = props.layer ?? '';
38
+ const device = layer === 'tablet' || layer === 'mobile'
39
+ ? t(`inspector.device.${layer}`)
40
+ : layer;
41
+ const chipLabel = interpolate(plural('inspector.overrides', count), { device });
42
+ return (_jsxs("section", { className: "bd-sec", "data-group": props.name, "data-override": props.override, children: [_jsx("h4", { className: "bd-sec__title", children: _jsxs("button", { type: "button", className: "bd-sec__head", "aria-expanded": expanded, "aria-controls": id, onClick: () => setSectionOpen(props.name, !open), children: [_jsx(Icon, { name: sectionIcons[props.name] ?? 'braces', className: "lead" }), _jsx("span", { children: _jsx(Highlight, { text: props.label, query: props.query }) }), count > 0 ? (_jsxs("span", { className: "bd-ovr", role: "img", "aria-label": chipLabel, children: [_jsx(Icon, { name: deviceIcon(layer) }), count] })) : null, props.modified ? (_jsx("span", { className: "bd-mod-dot", role: "img", "aria-label": t('inspector.tab.changed') })) : null, _jsx(Icon, { name: "chevron-right", className: "chev" })] }) }), _jsx("div", { id: id, className: `bd-sec__body${expanded ? ' is-open' : ''}`, children: _jsx("div", { className: "bd-sec__inner", inert: !expanded, children: _jsxs("div", { className: "bd-sec__content", children: [props.children, props.onReset !== undefined ? (_jsx("div", { className: "bd-sec__foot", children: _jsxs("button", { type: "button", className: "bd-textbtn", disabled: props.resetDisabled === true, onClick: props.onReset, children: [_jsx(Icon, { name: "rotate-ccw" }), t('inspector.resetSection')] }) })) : null] }) }) })] }));
43
+ }
@@ -0,0 +1,13 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type SectionRegistry } from './section-state.ts';
3
+ /**
4
+ * Scopes the registry of mounted style sections to one editor. Wrap it around both the Inspector's
5
+ * `headerActions` (where `SectionsToggle` sits) and the `StyleInspector`, so they share a registry
6
+ * and two editors on a page never see each other's sections.
7
+ */
8
+ export declare function StyleSectionsProvider(props: {
9
+ readonly children: ReactNode;
10
+ }): import("react").JSX.Element;
11
+ /** Without a provider, a section or toggle gets a private registry (a lone toggle stays disabled). */
12
+ export declare function useSectionRegistry(): SectionRegistry;
13
+ //# sourceMappingURL=sections-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections-context.d.ts","sourceRoot":"","sources":["../../../../src/panels/inspector/styles/sections-context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAwB,MAAM,OAAO,CAAC;AAC5E,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAIjF;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAG5E;AAED,sGAAsG;AACtG,wBAAgB,kBAAkB,IAAI,eAAe,CAIpD"}