efficient-easel 20.2.1 → 21.1.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 (266) hide show
  1. package/README.md +30 -9
  2. package/dist/{CanvasDragLayer-ARfaivCu.d.ts → CanvasDragLayer-CFUcBbgc.d.ts} +2 -2
  3. package/dist/{ScreenDocumentContext-CFJeqqKk.d.ts → ScreenDocumentContext-1RgtGKWR.d.ts} +4 -0
  4. package/dist/blocks/index.d.ts +5 -3
  5. package/dist/{buckets-Tj-nkBpg.d.ts → buckets-Sw94ll9I.d.ts} +1 -1
  6. package/dist/canvas/index.d.ts +8 -6
  7. package/dist/canvas/index.js +1 -1
  8. package/dist/chunk-2C7W64S5.js +8 -0
  9. package/dist/chunk-2L6KWUBC.js +1 -0
  10. package/dist/chunk-467WWV4I.js +1 -0
  11. package/dist/chunk-4FD7TAOE.js +1 -0
  12. package/dist/chunk-67HCYOW4.js +1 -0
  13. package/dist/chunk-A2VVB4RH.js +0 -0
  14. package/dist/{chunk-2GVCAIPX.js → chunk-BDSLF5BR.js} +1 -1
  15. package/dist/{chunk-U66YKDAR.js → chunk-BIK3AO2V.js} +1 -1
  16. package/dist/chunk-BTDI7JAA.js +2 -0
  17. package/dist/chunk-DDH2DYQP.js +1 -0
  18. package/dist/{chunk-I7BROL77.js → chunk-DNQ7AF6K.js} +1 -1
  19. package/dist/{chunk-HK6I3NVO.js → chunk-E52W3M5I.js} +1 -1
  20. package/dist/chunk-EB6NI2VK.js +1 -0
  21. package/dist/chunk-FM6JO4WF.js +2 -0
  22. package/dist/{chunk-JQXD3TDE.js → chunk-GWYNMSIP.js} +1 -1
  23. package/dist/{chunk-7YVEYQDE.js → chunk-I67UW5UG.js} +3 -3
  24. package/dist/chunk-JACEEVVF.js +1 -0
  25. package/dist/{chunk-QAJAEWCZ.js → chunk-KFWNGPW3.js} +5 -5
  26. package/dist/{chunk-FGYJ5DJY.js → chunk-KWLHKKZO.js} +1 -1
  27. package/dist/chunk-MLQKNED6.js +1 -0
  28. package/dist/chunk-MZ5GSSZ3.js +7 -0
  29. package/dist/{chunk-43AEUUNQ.js → chunk-N3MJOHAG.js} +1 -1
  30. package/dist/{chunk-BVN33R76.js → chunk-N7E6264U.js} +1 -1
  31. package/dist/chunk-OHZHYROJ.js +5 -0
  32. package/dist/chunk-PFFH7ASD.js +21 -0
  33. package/dist/chunk-PRHBWA5V.js +0 -0
  34. package/dist/chunk-S3DUFDQ6.js +6 -0
  35. package/dist/chunk-SNF5764Q.js +1 -0
  36. package/dist/chunk-SSRYU3YG.js +1 -0
  37. package/dist/chunk-SWBADIQT.js +1 -0
  38. package/dist/{chunk-GOTN2KY4.js → chunk-TIAWIOGD.js} +1 -1
  39. package/dist/chunk-TQ5Y6S2X.js +1 -0
  40. package/dist/chunk-TUXLORVR.js +15 -0
  41. package/dist/{chunk-FGNR22NY.js → chunk-U5DNBT63.js} +1 -1
  42. package/dist/chunk-U7TFWHST.js +5 -0
  43. package/dist/chunk-WHS6Y55E.js +10 -0
  44. package/dist/chunk-WJJ7H42G.js +18 -0
  45. package/dist/{chunk-ZOBSIXRD.js → chunk-Y2T3JX7K.js} +1 -1
  46. package/dist/chunk-YIUE4US7.js +0 -0
  47. package/dist/{chunk-O7Q4DDJT.js → chunk-YM4UEGBV.js} +1 -1
  48. package/dist/chunk-YVFYWAYU.js +65 -0
  49. package/dist/{chunk-UJ46J7QW.js → chunk-ZOSEBPAI.js} +1 -1
  50. package/dist/copy/index.d.ts +2 -2
  51. package/dist/copy/index.js +13 -13
  52. package/dist/drag/drag.css +3 -9
  53. package/dist/drag/index.d.ts +3 -3
  54. package/dist/drag/index.js +1 -1
  55. package/dist/draw/client.d.ts +1 -1
  56. package/dist/draw/client.js +1 -1
  57. package/dist/draw/index.d.ts +9 -9
  58. package/dist/draw/index.js +1 -1
  59. package/dist/easel/easel.css +3 -1
  60. package/dist/easel/index.d.ts +2 -2
  61. package/dist/easel/index.js +1 -1
  62. package/dist/fields/fields.css +2 -2
  63. package/dist/fields/index.d.ts +5 -5
  64. package/dist/fields/index.js +1 -1
  65. package/dist/panel/index.d.ts +39 -140
  66. package/dist/panel/index.js +15 -15
  67. package/dist/panel/panel.css +53 -347
  68. package/dist/render/index.d.ts +2 -2
  69. package/dist/render/index.js +5 -5
  70. package/dist/{repeat-Czi-6zPX.d.ts → repeat-BNgSq2Nw.d.ts} +1 -1
  71. package/dist/screen/components/AddBlockRow.d.ts +1 -1
  72. package/dist/screen/components/AddBlockRow.js +1 -1
  73. package/dist/screen/components/AddSidePanel.d.ts +2 -2
  74. package/dist/screen/components/AddSidePanel.js +1 -1
  75. package/dist/screen/components/NodeContextMenu.d.ts +15 -15
  76. package/dist/screen/components/NodeContextMenu.js +1 -1
  77. package/dist/screen/components/PageEditGuardNotices.js +1 -1
  78. package/dist/screen/components/PreviewPartsContext.d.ts +2 -2
  79. package/dist/screen/components/PreviewPartsContext.js +1 -1
  80. package/dist/screen/components/SaveControls.d.ts +9 -9
  81. package/dist/screen/components/ScreenChrome.js +1 -1
  82. package/dist/screen/components/ScreenDocumentContext.d.ts +2 -2
  83. package/dist/screen/components/ScreenDocumentContext.js +1 -1
  84. package/dist/screen/components/ScreenMount.d.ts +9 -9
  85. package/dist/screen/components/ScreenMount.js +1 -1
  86. package/dist/screen/components/ScreenStoreProvider.d.ts +9 -9
  87. package/dist/screen/components/ScreenStoreProvider.js +1 -1
  88. package/dist/screen/components/SectionScreenShell.js +17 -17
  89. package/dist/screen/components/SlotChildActionsContext.d.ts +1 -1
  90. package/dist/screen/components/usePartBridge.d.ts +9 -9
  91. package/dist/screen/components/usePartBridge.js +1 -1
  92. package/dist/screen/index.d.ts +10 -10
  93. package/dist/screen/index.js +1 -1
  94. package/dist/screen/lib/admin-bridge.d.ts +1 -1
  95. package/dist/screen/lib/admin-bridge.js +1 -1
  96. package/dist/screen/lib/content/view-tiers.d.ts +15 -3
  97. package/dist/screen/lib/content/view-tiers.js +1 -1
  98. package/dist/screen/lib/document/add-target-types.d.ts +55 -0
  99. package/dist/screen/lib/document/add-target-types.js +1 -0
  100. package/dist/screen/lib/document/block-choice.d.ts +64 -0
  101. package/dist/screen/lib/document/block-choice.js +1 -0
  102. package/dist/screen/lib/document/block-types-in.d.ts +39 -0
  103. package/dist/screen/lib/document/block-types-in.js +1 -0
  104. package/dist/screen/lib/document/content-tree.d.ts +222 -0
  105. package/dist/screen/lib/document/content-tree.js +1 -0
  106. package/dist/screen/lib/document/device-fields.d.ts +128 -0
  107. package/dist/screen/lib/document/device-fields.js +1 -0
  108. package/dist/screen/lib/document/field-buckets.d.ts +36 -0
  109. package/dist/screen/lib/document/field-buckets.js +1 -0
  110. package/dist/screen/lib/document/field-markers.d.ts +205 -0
  111. package/dist/screen/lib/document/field-markers.js +1 -0
  112. package/dist/screen/lib/document/hidable.d.ts +44 -0
  113. package/dist/screen/lib/document/hidable.js +1 -0
  114. package/dist/screen/lib/document/palette-sections.d.ts +103 -0
  115. package/dist/screen/lib/document/palette-sections.js +1 -0
  116. package/dist/screen/lib/document/panel-fields.d.ts +47 -0
  117. package/dist/screen/lib/document/panel-fields.js +1 -0
  118. package/dist/screen/lib/document/panel-no-control-mark.d.ts +74 -0
  119. package/dist/screen/lib/document/panel-no-control-mark.js +1 -0
  120. package/dist/screen/lib/document/part-id.d.ts +23 -0
  121. package/dist/screen/lib/document/part-id.js +1 -0
  122. package/dist/screen/lib/document/preview-click.d.ts +49 -0
  123. package/dist/screen/lib/document/preview-click.js +1 -0
  124. package/dist/screen/lib/document/preview-dom.d.ts +8 -0
  125. package/dist/screen/lib/document/preview-dom.js +1 -0
  126. package/dist/screen/lib/document/preview-events.d.ts +25 -0
  127. package/dist/screen/lib/document/preview-events.js +1 -0
  128. package/dist/screen/lib/document/preview-selection-context.d.ts +72 -0
  129. package/dist/screen/lib/document/preview-selection-context.js +1 -0
  130. package/dist/screen/lib/document/section-doc.d.ts +24 -0
  131. package/dist/screen/lib/document/section-doc.js +1 -0
  132. package/dist/screen/lib/document/slot-child-name.d.ts +225 -0
  133. package/dist/screen/lib/document/slot-child-name.js +1 -0
  134. package/dist/screen/lib/document/slot-heal.d.ts +5 -0
  135. package/dist/screen/lib/document/slot-heal.js +1 -0
  136. package/dist/screen/lib/document/slot-section-spec.d.ts +96 -0
  137. package/dist/screen/lib/document/slot-section-spec.js +1 -0
  138. package/dist/screen/lib/document/style-clipboard.d.ts +144 -0
  139. package/dist/screen/lib/document/style-clipboard.js +1 -0
  140. package/dist/screen/lib/document/text-control-kinds.d.ts +71 -0
  141. package/dist/screen/lib/document/text-control-kinds.js +1 -0
  142. package/dist/screen/lib/document/tree-reveal.d.ts +62 -0
  143. package/dist/screen/lib/document/tree-reveal.js +1 -0
  144. package/dist/screen/lib/document/use-section-ops.d.ts +110 -0
  145. package/dist/screen/lib/document/use-section-ops.js +1 -0
  146. package/dist/screen/lib/document-addressing.d.ts +2 -2
  147. package/dist/screen/lib/document-switch.d.ts +1 -1
  148. package/dist/screen/lib/host.d.ts +2 -2
  149. package/dist/screen/lib/key-scope.d.ts +1 -1
  150. package/dist/screen/lib/key-scope.js +1 -1
  151. package/dist/screen/lib/media-panel.d.ts +2 -2
  152. package/dist/screen/lib/media-picker.d.ts +2 -2
  153. package/dist/screen/lib/page-lock.d.ts +1 -1
  154. package/dist/screen/lib/puck/add-target-types.d.ts +3 -55
  155. package/dist/screen/lib/puck/add-target-types.js +1 -0
  156. package/dist/screen/lib/puck/block-choice.d.ts +1 -64
  157. package/dist/screen/lib/puck/block-choice.js +1 -1
  158. package/dist/screen/lib/puck/block-types-in.d.ts +1 -39
  159. package/dist/screen/lib/puck/block-types-in.js +1 -1
  160. package/dist/screen/lib/puck/content-tree.d.ts +1 -222
  161. package/dist/screen/lib/puck/content-tree.js +1 -1
  162. package/dist/screen/lib/puck/device-fields.d.ts +3 -127
  163. package/dist/screen/lib/puck/device-fields.js +1 -1
  164. package/dist/screen/lib/puck/field-buckets.d.ts +2 -36
  165. package/dist/screen/lib/puck/field-buckets.js +1 -1
  166. package/dist/screen/lib/puck/field-markers.d.ts +2 -205
  167. package/dist/screen/lib/puck/field-markers.js +1 -1
  168. package/dist/screen/lib/puck/hidable.d.ts +1 -44
  169. package/dist/screen/lib/puck/hidable.js +1 -1
  170. package/dist/screen/lib/puck/palette-sections.d.ts +2 -97
  171. package/dist/screen/lib/puck/palette-sections.js +1 -1
  172. package/dist/screen/lib/puck/panel-fields.d.ts +1 -47
  173. package/dist/screen/lib/puck/panel-fields.js +1 -1
  174. package/dist/screen/lib/puck/panel-no-control-mark.d.ts +2 -74
  175. package/dist/screen/lib/puck/panel-no-control-mark.js +1 -1
  176. package/dist/screen/lib/puck/part-id.d.ts +1 -23
  177. package/dist/screen/lib/puck/part-id.js +1 -1
  178. package/dist/screen/lib/puck/preview-click.d.ts +1 -49
  179. package/dist/screen/lib/puck/preview-click.js +1 -1
  180. package/dist/screen/lib/puck/preview-dom.d.ts +1 -8
  181. package/dist/screen/lib/puck/preview-dom.js +1 -1
  182. package/dist/screen/lib/puck/preview-events.d.ts +1 -25
  183. package/dist/screen/lib/puck/preview-events.js +1 -1
  184. package/dist/screen/lib/puck/preview-selection-context.d.ts +2 -72
  185. package/dist/screen/lib/puck/preview-selection-context.js +1 -1
  186. package/dist/screen/lib/puck/section-doc.d.ts +3 -18
  187. package/dist/screen/lib/puck/section-doc.js +1 -1
  188. package/dist/screen/lib/puck/slot-child-name.d.ts +1 -225
  189. package/dist/screen/lib/puck/slot-child-name.js +1 -1
  190. package/dist/screen/lib/puck/slot-heal.d.ts +2 -5
  191. package/dist/screen/lib/puck/slot-heal.js +1 -1
  192. package/dist/screen/lib/puck/slot-section-spec.d.ts +1 -96
  193. package/dist/screen/lib/puck/slot-section-spec.js +1 -0
  194. package/dist/screen/lib/puck/style-clipboard.d.ts +14 -116
  195. package/dist/screen/lib/puck/style-clipboard.js +1 -1
  196. package/dist/screen/lib/puck/text-control-kinds.d.ts +1 -71
  197. package/dist/screen/lib/puck/text-control-kinds.js +1 -1
  198. package/dist/screen/lib/puck/tree-reveal.d.ts +1 -62
  199. package/dist/screen/lib/puck/tree-reveal.js +1 -1
  200. package/dist/screen/lib/puck/use-section-ops.d.ts +4 -105
  201. package/dist/screen/lib/puck/use-section-ops.js +1 -1
  202. package/dist/screen/lib/screen-parts.d.ts +27 -20
  203. package/dist/screen/lib/screen-parts.js +1 -1
  204. package/dist/screen/lib/section-template-types.d.ts +1 -1
  205. package/dist/screen/lib/section-templates.d.ts +1 -1
  206. package/dist/screen/lib/section-templates.js +1 -1
  207. package/dist/screen/lib/session-context.d.ts +1 -1
  208. package/dist/screen/lib/session-context.js +1 -1
  209. package/dist/screen/lib/session.d.ts +3 -3
  210. package/dist/screen/lib/session.js +1 -1
  211. package/dist/screen/lib/shared-section-types.d.ts +1 -1
  212. package/dist/screen/lib/shared-sections.d.ts +1 -1
  213. package/dist/screen/lib/shared-sections.js +1 -1
  214. package/dist/screen/screen.css +5 -9
  215. package/dist/screen/words.d.ts +4 -0
  216. package/dist/screen/words.js +1 -1
  217. package/dist/strings/index.d.ts +4 -4
  218. package/dist/strings/index.js +2 -2
  219. package/dist/text-styles/index.js +33 -33
  220. package/dist/tree/index.d.ts +5 -5
  221. package/dist/tree/index.js +1 -1
  222. package/dist/{types-CDX6vd6A.d.ts → types-B8NwXKlE.d.ts} +1 -1
  223. package/dist/{types-Bqq6ya0y.d.ts → types-DBy3L69b.d.ts} +11 -4
  224. package/dist/{watch-BTYOJpQU.d.ts → watch-D8xZow3y.d.ts} +2 -2
  225. package/dist/{words-vhnV8sM7.d.ts → words-CFkb8XtN.d.ts} +5 -0
  226. package/dist/{words-BeX5eGq7.d.ts → words-CmEnDoOe.d.ts} +1 -1
  227. package/dist/{words-CvwYvkJm.d.ts → words-SD4neL0n.d.ts} +6 -0
  228. package/package.json +156 -12
  229. package/dist/chunk-23DYNW6S.js +0 -1
  230. package/dist/chunk-23VM4PMV.js +0 -7
  231. package/dist/chunk-276MBG5P.js +0 -2
  232. package/dist/chunk-6FWAE2RN.js +0 -1
  233. package/dist/chunk-7LYKFL3Q.js +0 -21
  234. package/dist/chunk-A6Z4SD3I.js +0 -10
  235. package/dist/chunk-BHRC3ASL.js +0 -1
  236. package/dist/chunk-EFHV56BO.js +0 -15
  237. package/dist/chunk-I54UCYOU.js +0 -1
  238. package/dist/chunk-JBOSEHIX.js +0 -1
  239. package/dist/chunk-KAML3KQH.js +0 -1
  240. package/dist/chunk-L2Y3PF2R.js +0 -4
  241. package/dist/chunk-LQV5FZTQ.js +0 -18
  242. package/dist/chunk-MEHLY5Q4.js +0 -1
  243. package/dist/chunk-PAOZMXEI.js +0 -5
  244. package/dist/chunk-QIDRJH3S.js +0 -1
  245. package/dist/chunk-R5KEFI55.js +0 -8
  246. package/dist/chunk-RC25EGHD.js +0 -5
  247. package/dist/chunk-RSCMJIWS.js +0 -1
  248. package/dist/chunk-TNGOL65V.js +0 -1
  249. package/dist/chunk-VANKQVOW.js +0 -8
  250. package/dist/chunk-WEIE2FBC.js +0 -1
  251. package/dist/chunk-WRFD4EXD.js +0 -1
  252. package/dist/chunk-XJ2WXGFJ.js +0 -65
  253. /package/dist/{chunk-MQNBD6AB.js → chunk-3QB2ZQXK.js} +0 -0
  254. /package/dist/{chunk-LER7RKTO.js → chunk-5XL2RXFU.js} +0 -0
  255. /package/dist/{chunk-6W7WLPZH.js → chunk-6UAEFOJ4.js} +0 -0
  256. /package/dist/{chunk-26OOWIJJ.js → chunk-7OCEPOEJ.js} +0 -0
  257. /package/dist/{chunk-IQ5TA7AM.js → chunk-AJ2SUSET.js} +0 -0
  258. /package/dist/{chunk-DUVRZ456.js → chunk-ANPOR6EY.js} +0 -0
  259. /package/dist/{chunk-5ZBY24K7.js → chunk-CPL43ZLJ.js} +0 -0
  260. /package/dist/{chunk-PIND6KE7.js → chunk-I6SK6ZDT.js} +0 -0
  261. /package/dist/{chunk-7F52SZOI.js → chunk-INRERJU4.js} +0 -0
  262. /package/dist/{chunk-R5L2E7JX.js → chunk-MGVI67QV.js} +0 -0
  263. /package/dist/{chunk-IYT6NN2J.js → chunk-R4AUZVA3.js} +0 -0
  264. /package/dist/{chunk-M2Z775ZC.js → chunk-RUQOIQWI.js} +0 -0
  265. /package/dist/{chunk-PLVEGYK6.js → chunk-TCAAOYQY.js} +0 -0
  266. /package/dist/{chunk-PA3PNTVV.js → chunk-VKPOH6MK.js} +0 -0
@@ -1,15 +1,15 @@
1
- export{DESIGN_GROUPS,SETTINGS_BUCKETS,SettingsGroup}from"../chunk-RC25EGHD.js";import{DEFAULT_PANEL_WORDS as e}from"../chunk-KFV7N2DJ.js";export{SettingsSwitch}from"../chunk-OECWLNKJ.js";import{SettingsField as l,SettingsSegmented as n}from"../chunk-VANKQVOW.js";export{SettingsField,SettingsSegmented}from"../chunk-VANKQVOW.js";import{withTip as t}from"../chunk-P2VEMZH5.js";import{jsx as a,jsxs as i,Fragment as s}from"react/jsx-runtime";import{RevertIcon as o,BackgroundIcon as d,WidthIcon as r}from"efficient-shell/icons/efficient";import{Tooltip as c}from"efficient-shell/ui";export{BorderInput as SettingsBorder,CornersInput as SettingsCorners,AlignmentGrid as SettingsPlacement,SidesInput as SettingsSides,SidesEachToggle as SettingsSidesEach,borderSides,borderStartEach,sidesStartEach}from"efficient-shell/ui";function u({title:e,level:l=3,id:n,className:t}){/* @__PURE__ */
2
- return a(`h${l}`,{id:n,className:t?`es-group-head ${t}`:"es-group-head",children:e})}function h({title:e,level:l=4,id:n,className:t}){/* @__PURE__ */
3
- return a(`h${l}`,{id:n,className:t?`es-group-sub ${t}`:"es-group-sub",children:e})}function b({label:l,changed:n,onReset:i,detail:s,disabled:d,defaultAction:r,words:c,className:u}){const h={...e,...c},b=["es-default-reset"];if(n&&b.push("is-changed"),u&&b.push(u),!n&&r)return b.push("is-pressable"),t(r.title,/* @__PURE__ */a("button",{type:"button",className:b.join(" "),"aria-label":r.title,disabled:d,onClick:r.onPress,children:r.icon}));if(!n)/* @__PURE__ */
4
- return a("span",{className:b.join(" "),"aria-hidden":"true"});const g=h.resetName({label:l});return t(s?h.resetTitle({label:l,detail:s}):g,/* @__PURE__ */a("button",{type:"button",className:b.join(" "),"aria-label":g,"aria-description":s||void 0,disabled:d,onClick:e=>{i(),function(e){const l=e.currentTarget,n=l.closest(".es-field");let t=n?.querySelector(m(".es-field-ctl"))??n?.querySelector(m(".es-field-head"))??null,a=n?null:l.parentElement;for(let e=0;!t&&a&&e<f;e+=1,a=a.parentElement)t=[...a.querySelectorAll(p)].find(e=>e!==l)??null;t?.focus()}(e)},children:/* @__PURE__ */a(o,{size:15})}))}var p=['input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])","button:not([disabled]):not(.es-default-reset)",'[tabindex]:not([tabindex="-1"])'].join(", "),m=e=>p.split(", ").map(l=>`${e} ${l}`).join(", "),f=4;function g({name:e,preview:l,offPage:n,status:t,onOpen:o,id:d,className:r}){const u=null!=l;/* @__PURE__ */
5
- return i("button",{type:"button",id:d,className:r?`es-drill ${r}`:"es-drill",onClick:o,children:[
6
- /* @__PURE__ */i(c,{content:u?/* @__PURE__ */i(s,{children:[e,
7
- /* @__PURE__ */a("br",{}),l]}):e,describe:!1,className:"es-drill-text",children:[
8
- /* @__PURE__ */a("span",{className:"es-drill-name",children:e}),u?/* @__PURE__ */a("span",{className:n?"es-drill-preview is-offpage":"es-drill-preview",children:l}):null]}),t?/* @__PURE__ */a("span",{className:"es-drill-status",children:t}):null,
9
- /* @__PURE__ */a("span",{className:"es-drill-chev","aria-hidden":"true"})]})}function N({label:e,onPress:l,disabled:n,note:t,done:s,doneLabel:o,icon:d,id:r,className:c}){const u=void 0===o?e:o,h=s?u:e,b=null!=t,p=b&&r?`${r}-note`:void 0;/* @__PURE__ */
10
- return i("div",{className:c?`es-action-wrap ${c}`:"es-action-wrap",children:[
11
- /* @__PURE__ */i("button",{type:"button",id:r,className:s?"es-action is-done":"es-action",disabled:n,"aria-describedby":p,onClick:l,children:[d?/* @__PURE__ */a("span",{className:"es-action-icon","aria-hidden":"true",children:d}):null,
12
- /* @__PURE__ */a("span",{className:"es-action-label",children:h})]}),b?/* @__PURE__ */a("p",{id:p,className:"es-action-note",children:t}):null,
13
- /* @__PURE__ */a("span",{className:"es-action-live",role:"status","aria-live":"polite",children:s?u:null})]})}var S=["full","content"],v={label:"Background",full:"Full width",content:"Content width"};function w({value:e,changed:t,detail:i,onChange:s,onReset:o,disabled:r=!1,hint:c,labelId:u,words:h,resetWords:p}){const m={...v,...h};/* @__PURE__ */
14
- return a(l,{label:m.label,labelId:u,icon:/* @__PURE__ */a(d,{}),changed:t,hint:c,action:/* @__PURE__ */a(b,{words:p,label:m.label,changed:t,detail:i,onReset:o}),children:/* @__PURE__ */a(n,{options:S.map(e=>({id:e,label:"full"===e?m.full:m.content})),value:e,onChange:s,ariaLabel:m.label,disabled:r})})}var C={label:"Content",full:"Full width",content:"Content width"};function j({mode:e,onMode:t,number:s,changed:o,detail:d,onReset:c,fullClosed:u=!1,disabled:h=!1,hint:p,labelId:m,words:f,resetWords:g}){const N={...C,...f},v=void 0!==e&&t?/* @__PURE__ */a(n,{options:S.map(e=>({id:e,label:"full"===e?N.full:N.content,disabled:"full"===e&&u})),value:e,onChange:t,ariaLabel:N.label,disabled:h}):null;/* @__PURE__ */
15
- return a(l,{label:N.label,labelId:m,icon:/* @__PURE__ */a(r,{}),changed:o,hint:p,action:/* @__PURE__ */a(b,{words:g,label:N.label,changed:o,detail:d,onReset:c}),children:v&&s?/* @__PURE__ */i("div",{className:"es-width-stack",children:[v,s]}):v??s??null})}export{S as BACKGROUND_WIDTHS,v as DEFAULT_BACKGROUND_WIDTH_WORDS,C as DEFAULT_CONTENT_WIDTH_WORDS,N as SettingsAction,w as SettingsBackgroundWidth,j as SettingsContentWidth,b as SettingsDefaultReset,g as SettingsDrill,u as SettingsGroupHead,h as SettingsGroupSub};
1
+ export{DESIGN_GROUPS,SETTINGS_BUCKETS,SettingsGroup}from"../chunk-FM6JO4WF.js";import{DEFAULT_PANEL_WORDS as e}from"../chunk-KFV7N2DJ.js";export{SettingsSwitch}from"../chunk-OECWLNKJ.js";import{SettingsField as l,SettingsSegmented as n}from"../chunk-S3DUFDQ6.js";export{SettingsField,SettingsSegmented}from"../chunk-S3DUFDQ6.js";import{AccordionHeading as a,SettingReset as t,Tooltip as i}from"efficient-shell/ui";export{BorderInput as SettingsBorder,CornersInput as SettingsCorners,AlignmentGrid as SettingsPlacement,SidesInput as SettingsSides,SidesEachToggle as SettingsSidesEach,borderSides,borderStartEach,sidesStartEach}from"efficient-shell/ui";import{jsx as s,jsxs as d,Fragment as o}from"react/jsx-runtime";import{BackgroundIcon as r,WidthIcon as c}from"efficient-shell/icons/efficient";function u({title:e,level:l=3,id:n,className:t}){/* @__PURE__ */
2
+ return s(a,{title:e,level:l,id:n,className:t?`es-panel-band ${t}`:"es-panel-band"})}function h({title:e,level:l=4,id:n,className:t}){/* @__PURE__ */
3
+ return s(a,{tier:"row",title:e,level:l,id:n,className:t})}function b({label:l,changed:n,onReset:a,detail:i,disabled:d,defaultAction:o,words:r,className:c}){const u={...e,...r},h=u.resetName({label:l});/* @__PURE__ */
4
+ return s(t,{label:l,changed:n,onReset:a,detail:i,disabled:d,defaultAction:o,name:h,tip:i?u.resetTitle({label:l,detail:i}):h,className:c})}function m({name:e,preview:l,offPage:n,status:a,onOpen:t,id:r,className:c}){const u=null!=l;/* @__PURE__ */
5
+ return d("button",{type:"button",id:r,className:c?`es-drill ${c}`:"es-drill",onClick:t,children:[
6
+ /* @__PURE__ */d(i,{content:u?/* @__PURE__ */d(o,{children:[e,
7
+ /* @__PURE__ */s("br",{}),l]}):e,describe:!1,className:"es-drill-text",children:[
8
+ /* @__PURE__ */s("span",{className:"es-drill-name",children:e}),u?/* @__PURE__ */s("span",{className:n?"es-drill-preview is-offpage":"es-drill-preview",children:l}):null]}),a?/* @__PURE__ */s("span",{className:"es-drill-status",children:a}):null,
9
+ /* @__PURE__ */s("span",{className:"es-drill-chev","aria-hidden":"true"})]})}function f({label:e,onPress:l,disabled:n,note:a,done:t,doneLabel:i,icon:o,id:r,className:c}){const u=void 0===i?e:i,h=t?u:e,b=null!=a,m=b&&r?`${r}-note`:void 0;/* @__PURE__ */
10
+ return d("div",{className:c?`es-action-wrap ${c}`:"es-action-wrap",children:[
11
+ /* @__PURE__ */d("button",{type:"button",id:r,className:t?"es-action is-done":"es-action",disabled:n,"aria-describedby":m,onClick:l,children:[o?/* @__PURE__ */s("span",{className:"es-action-icon","aria-hidden":"true",children:o}):null,
12
+ /* @__PURE__ */s("span",{className:"es-action-label",children:h})]}),b?/* @__PURE__ */s("p",{id:m,className:"es-action-note",children:a}):null,
13
+ /* @__PURE__ */s("span",{className:"es-action-live",role:"status","aria-live":"polite",children:t?u:null})]})}var p=["full","content"],g={label:"Background",full:"Full width",content:"Content width"};function N({value:e,changed:a,detail:t,onChange:i,onReset:d,disabled:o=!1,hint:c,labelId:u,words:h,resetWords:m}){const f={...g,...h};/* @__PURE__ */
14
+ return s(l,{label:f.label,labelId:u,icon:/* @__PURE__ */s(r,{}),changed:a,hint:c,action:/* @__PURE__ */s(b,{words:m,label:f.label,changed:a,detail:t,onReset:d}),children:/* @__PURE__ */s(n,{options:p.map(e=>({id:e,label:"full"===e?f.full:f.content})),value:e,onChange:i,ariaLabel:f.label,disabled:o})})}var S={label:"Content",full:"Full width",content:"Content width"};function v({mode:e,onMode:a,number:t,changed:i,detail:o,onReset:r,fullClosed:u=!1,disabled:h=!1,hint:m,labelId:f,words:g,resetWords:N}){const v={...S,...g},w=void 0!==e&&a?/* @__PURE__ */s(n,{options:p.map(e=>({id:e,label:"full"===e?v.full:v.content,disabled:"full"===e&&u})),value:e,onChange:a,ariaLabel:v.label,disabled:h}):null;/* @__PURE__ */
15
+ return s(l,{label:v.label,labelId:f,icon:/* @__PURE__ */s(c,{}),changed:i,hint:m,action:/* @__PURE__ */s(b,{words:N,label:v.label,changed:i,detail:o,onReset:r}),children:w&&t?/* @__PURE__ */d("div",{className:"es-width-stack",children:[w,t]}):w??t??null})}export{p as BACKGROUND_WIDTHS,g as DEFAULT_BACKGROUND_WIDTH_WORDS,S as DEFAULT_CONTENT_WIDTH_WORDS,f as SettingsAction,N as SettingsBackgroundWidth,v as SettingsContentWidth,b as SettingsDefaultReset,m as SettingsDrill,u as SettingsGroupHead,h as SettingsGroupSub};
@@ -459,265 +459,56 @@
459
459
  control out of force says so on its fit box, for the pointer. */
460
460
  .es-segs-fit[data-disabled] { cursor: not-allowed; }
461
461
 
462
- /* ── a group: the soft pill row that folds ─────────────────────────────────── */
463
-
464
- /* WAS 6px, AND THE 6 NEVER APPLIED (card 66203). `.es-group` is a plain div, so
465
- this margin is adjoining `.es-group-head`'s own 36px below and the two
466
- COLLAPSE to the larger — measured in Chromium against these stylesheets, two
467
- stacked groups sit 36.00px apart, not 6. The rule was dead as written.
468
-
469
- It is kept, at the floor, because it is a landmine rather than a non-issue: a
470
- host that gives `.es-group` a border or padding through `className` stops the
471
- collapsing, and then the 6 is real and is the tightest gap in the panel. At
472
- `var(--es-row-gap)` the worst case is the floor instead. */
473
- .es-group + .es-group { margin-top: var(--es-row-gap); }
474
-
475
- /* THE HEADING ROUND A GROUP'S BUTTON (7.2.0, WAI-ARIA APG accordion pattern).
476
- It is there for the outline a screen reader walks, not for the eye, so it
477
- draws nothing: no margin, no padding, the font of the group around it (a
478
- host's `h3 { … }` or a browser's bold 1.17em never reaches the pill). The
479
- pill's own margin collapses through it, as it did through nothing before. */
480
- .es-group-title {
481
- display: block;
482
- margin: 0;
483
- padding: 0;
484
- border: 0;
485
- font: inherit;
486
- letter-spacing: inherit;
487
- text-transform: inherit;
488
- color: inherit;
489
- }
490
-
491
- /* ONE pill, two elements. `SettingsGroup` renders a <button> that folds;
492
- `SettingsGroupHead` renders a heading that folds nothing, because Puck's
493
- inspector is a flat sibling list and a heading there cannot wrap the rows it
494
- heads. Everything a merchant SEES is shared here; the press — the pointer
495
- and the hover tint — is scoped to the button below, so the heading never
496
- offers a press it cannot honour.
497
-
498
- `box-sizing` for the same reason the switch sets it: this file assumes no
499
- reset of the host's, and `width: 100%` plus 22px of padding would otherwise
500
- run the pill past the panel. */
501
- .es-group-head {
502
- box-sizing: border-box;
503
- width: 100%;
504
- display: flex;
505
- align-items: center;
506
- gap: 8px;
507
- border: 0;
508
- text-align: left;
509
- font: inherit;
510
- font-size: var(--text-xs, 12px);
511
- font-weight: 600;
512
- color: var(--es-text);
513
- background: var(--es-hover);
514
- /* SQUARE (Lewis 2026-10-14, again 2026-10-23): a band, not a pill.
515
- `tests/panel-group-band-full-bleed.test.ts` fails on any radius here. */
516
- border-radius: 0;
517
- /* 32 TALL, ONE STEP UNDER THE 36 MENU ROW (Lewis 2026-10-23: the full-bleed
518
- band was too tall). The shell's medium control height. The 4 above and
519
- below keeps the words and a 16px icon inside 32, so the padding never
520
- makes the band taller; the words and the − / + stay centred
521
- (`align-items`). `tests/panel-group-band-full-bleed.test.ts` (d). */
522
- min-height: var(--control-height-md, 32px);
523
- /* Its words start where a tree row's do: the shell's `TreeRow` pads `px-2`,
524
- two of the shell's `--spacing` steps, and so does this (the Layers panel
525
- drew a heading at 12px over rows at 8px: two text columns). */
526
- padding: 4px calc(2 * var(--spacing));
527
- /* A heading needs more air above it than the settings it heads have between
528
- them (38px), or it reads as one more row. Floored on `--es-row-gap` so it
529
- rises with the rest of the panel (card 66203). */
462
+ /* ── a group, a heading, one setting, Default / Reset: the SHELL'S ──────────
463
+ B2 plan C (Lewis 2026-10-26: "keep the easel look; put it in the shell").
464
+ `SettingsGroup`, `SettingsGroupHead`, `SettingsGroupSub`, `SettingsField`
465
+ and `SettingsDefaultReset` are the shell's `Accordion`, `AccordionHeading`,
466
+ compact `SettingRow` and `SettingReset`, and their look is the shell's
467
+ `ui.css` (the `es-group…`, `es-field…` and `es-default-reset` rules moved
468
+ there whole). What stays here is the EDITOR'S LAYOUT round them. */
469
+
470
+ /* `es-panel-band` marks a band this package's parts draw (`SettingsGroup`,
471
+ `SettingsGroupHead`). The air above it: more than the settings it heads
472
+ have between them, or it reads as one more row. Its words start where a
473
+ tree row's do (the shell's `TreeRow` pads two `--spacing` steps), and its
474
+ body takes no side inset of its own: the panel's body already has one.
475
+ `:where()` keeps each at the shell rule's own weight, so this sheet (loaded
476
+ after the shell's) wins over it and the settings body's full bleed, below,
477
+ wins over this. */
478
+ .es-group-head:where(.es-panel-band, .es-panel-band > .es-group-title > *) {
530
479
  margin: max(var(--es-row-gap), var(--es-rhythm-group)) 0 0;
480
+ padding-inline: calc(2 * var(--spacing));
531
481
  }
482
+ /* And no air of its own below: in a panel, whatever follows a band — the next
483
+ band, a row, the hints button — already brings its own 32px above it, and
484
+ the rows column is a flex item, so a bottom margin here would not fold into
485
+ that and would add 32px after the last band. */
486
+ :where(.es-panel-band) > .es-group-body { padding-inline: 0; margin-bottom: 0; }
532
487
 
533
- /* FULL BLEED IN THE SETTINGS BODY (Lewis 2026-10-14, again 2026-10-23): the
534
- band's ground reaches both edges of the panel, with no inset round it. It
535
- cancels the body's side inset and pads the same amount back inside, so its
536
- words start on the rows' left edge and its − / + ends on their right edge.
537
- The start side is the panel's one inset (`--es-insp-pad-x`, chrome.css). The
538
- end side is `--es-insp-pad-end` where a host keeps a scrollbar lane out of
539
- the inset (the website editor's body pads its end by the inset less the
540
- lane), else the same inset: a band that bled the full inset there would run
541
- the lane's width past the body and give it a sideways scroll.
542
- ONLY IN `.es-insp-body`: that is the one place the inset is known. A host
543
- that draws a band anywhere else gets the square band in its own box. */
544
- .es-insp-body .es-group-head {
545
- width: calc(100% + var(--es-insp-pad-x) + var(--es-insp-pad-end, var(--es-insp-pad-x)));
546
- margin-inline: calc(-1 * var(--es-insp-pad-x)) calc(-1 * var(--es-insp-pad-end, var(--es-insp-pad-x)));
547
- padding-inline: var(--es-insp-pad-x) var(--es-insp-pad-end, var(--es-insp-pad-x));
548
- }
488
+ /* THE PANEL'S RHYTHM between its rows, on the named tokens above (cards
489
+ 66203, 66228, 66301; one spacing scale, 2026-10-02). The rows are the
490
+ shell's; how far apart this panel lays them is this sheet's.
549
491
 
550
- /* THE QUIET TIER (card 66300) — a heading one rung under the pill.
551
- NO GROUND AND NO RULE, which is the whole point of it. The pill separates
552
- itself from the settings around it with a fill; this separates itself with
553
- case and colour, so the two can sit in one panel without competing. And a
554
- heading takes no hairline under it: a rule there separates a heading from the
555
- rows it heads, which is the opposite of what a heading is for. The storefront
556
- ruled BOTH its tiers that way and the owner's words on 2026-08-31 were
557
- "these lines, I still find them annoying to look at".
558
-
559
- THE TYPE IS NOT INVENTED HERE. It is `.sf-field-group` and `.sf-group-label`
560
- from `efficient-storefront`, which are the same look to the decimal, hand-rolled in
561
- two panels of one editor. Owning it here is what stops a third copy.
562
-
563
- FLUSH, not inset. `.es-field` has no horizontal padding, so a heading that
564
- started 11px in would sit to the RIGHT of the rows it heads and read as those
565
- rows being outdented from it. The pill's text is inset only because a pill has
566
- padding; this has no such excuse.
567
-
568
- ONE NOTCH UNDER THE PILL IN AIR AS WELL AS IN TYPE. `--es-rhythm-between`
569
- rather than the pill's `--es-rhythm-group`, so the tiers stay in order when a
570
- reader is skimming rather than reading. Written as NAMES: every one of these
571
- tokens grew between 0.20.0 and 0.23.0 (group 36->48, between 28->38,
572
- group-first 14->24) and the ladder survived untouched because it reads names.
573
- Pinned numbers would have crossed. */
492
+ A heading one rung under the band takes one notch less air than the band
493
+ (`--es-rhythm-between`, not `--es-rhythm-group`), so the tiers stay in order
494
+ when a reader skims; directly under a band it belongs TO that band. */
574
495
  .es-group-sub {
575
- box-sizing: border-box;
576
- font-size: var(--text-2xs, 11px);
577
- font-weight: 600;
578
- letter-spacing: 0.07em;
579
- text-transform: uppercase;
580
- color: var(--es-muted);
581
496
  margin: max(var(--es-row-gap), var(--es-rhythm-between)) 0
582
497
  max(var(--es-row-gap), var(--es-rhythm-group-first));
583
498
  }
584
-
585
- /* Directly under a pill it belongs TO that pill, so it does not take a second
586
- helping of the air the pill already put above itself. */
587
499
  .es-group-head + .es-group-sub { margin-top: max(var(--es-row-gap), var(--es-rhythm-group-first)); }
588
500
 
589
- button.es-group-head {
590
- cursor: pointer;
591
- transition: background 0.12s;
592
- }
593
-
594
- button.es-group-head:hover { background: var(--es-chip-bg); }
595
-
596
- .es-group-count {
597
- min-width: 16px;
598
- height: 16px;
599
- padding: 0 4px;
600
- border-radius: 999px;
601
- background: var(--es-accent);
602
- color: var(--es-on-accent);
603
- font-size: var(--text-2xs, 11px);
604
- font-weight: 700;
605
- display: inline-flex;
606
- align-items: center;
607
- justify-content: center;
608
- }
609
-
610
- /* The sign is drawn from aria-expanded so the open state has ONE home. */
611
- .es-group-sign {
612
- margin-left: auto;
613
- width: 16px;
614
- text-align: center;
615
- color: var(--es-muted);
616
- font-size: var(--text-sm, 14px);
617
- line-height: 1;
618
- flex: none;
619
- }
620
-
621
- .es-group-head[aria-expanded='true'] .es-group-sign::before { content: '−'; }
622
- .es-group-head[aria-expanded='false'] .es-group-sign::before { content: '+'; }
623
-
624
- /* `hidden` on the body is the fold; this only stops a flex/grid parent from
625
- overriding the attribute's own display:none. */
626
- .es-group-body[hidden] { display: none; }
627
- /* The first setting under a head sits CLOSER than the settings below it do to
628
- each other — it belongs to that head, and 38px would cut it loose.
629
-
630
- AND IT IS LIVE FOR THE FIRST TIME (card 66301). It declared 14 against a 16px
631
- floor, so it has never once been 14 on screen — the floor answered every
632
- time, and card 66206 measured that very move (14 → 16) and wrote it down as
633
- the floor working, which it was. At 24 over a 20px floor the declared number
634
- is finally the visible one, so this seam grows 16 → 24 rather than the 14 →
635
- 24 the file appears to say. `tests/panel-layout.test.ts` (h) is what turns a
636
- floored rhythm into a failure instead of a footnote. */
637
- .es-group-body > .es-field:first-child { margin-top: max(var(--es-row-gap), var(--es-rhythm-group-first)); }
638
-
639
- /* ── one setting ───────────────────────────────────────────────────────────── */
640
-
641
- /* 38 IS NOT A THIRD OPINION ABOUT THE FLOOR. A setting is TWO lines — a label
642
- row and its control — held together by the 11px between them, and that 11px
643
- is the only thing saying which label owns which control. The gap between
644
- settings has to be plainly larger than the gap inside one or the panel stops
645
- being a list of settings and becomes a list of loose parts. The pair was
646
- measured at 28 and 7 and approved from mockups (card 8802.d) — 20 was tried
647
- there and was too tight — and re-scaled together to 38 and 11 (card 66301),
648
- which is the same rule with more air, not a new one.
649
-
650
- Floored, not replaced, and not `calc()`: 38 was measured and then re-scaled,
651
- it is not "20 plus 18", so arithmetic off the token would claim a
652
- relationship nobody decided. */
501
+ /* 32 between two settings; 12 between a name and its OWN control — the gap
502
+ inside a setting stays plainly smaller than the gap between settings,
503
+ because it is the only thing saying which name owns which control. Floored
504
+ on `--es-row-gap`, not replaced, and not `calc()`. */
653
505
  .es-field { margin-top: max(var(--es-row-gap), var(--es-rhythm-between)); }
506
+ .es-field-head { margin-bottom: var(--es-rhythm-within); }
654
507
 
655
- .es-field-head {
656
- display: flex;
657
- align-items: center;
658
- gap: 8px;
659
- /* THE ONE THAT SAYS WHICH LABEL OWNS WHICH CONTROL. Named so a consumer can
660
- read it (card 66228) — it is half of the rule, and the half that is easiest
661
- to lose when someone re-scales the other half. */
662
- margin-bottom: var(--es-rhythm-within);
663
- min-height: 16px;
664
- }
665
-
666
- .es-field-name {
667
- display: inline-flex;
668
- align-items: center;
669
- gap: 8px;
670
- min-width: 0;
671
- }
672
-
673
- .es-field-icon {
674
- width: 16px;
675
- height: 16px;
676
- flex: none;
677
- color: var(--es-icon);
678
- display: inline-flex;
679
- align-items: center;
680
- justify-content: center;
681
- }
682
-
683
- .es-field-icon svg { width: 16px; height: 16px; }
684
-
685
- .es-field-label {
686
- font-size: var(--text-2xs, 11px);
687
- font-weight: 500;
688
- color: var(--es-muted);
689
- }
690
-
691
- .es-field.is-changed .es-field-label { color: var(--es-accent-text); }
692
-
693
- /* The same cue, read off the row itself: a row whose Default / Reset part says
694
- Reset is changed, whether or not its host passed `changed`. A host that draws
695
- the part inside a component of its own (it reads a live value through a
696
- hook) is invisible to SettingsField, and without this its label stayed grey
697
- beside a Reset — measured on the website's section Width row. */
698
- .es-field:has(> .es-field-head > .es-default-reset.is-changed) > .es-field-head .es-field-label,
699
- .es-field:has(> .es-field-head > span > .es-default-reset.is-changed) > .es-field-head .es-field-label {
700
- color: var(--es-accent-text);
701
- }
702
-
703
- .es-field-value {
704
- margin-left: auto;
705
- font-size: var(--text-xs, 12px);
706
- /* The part's own 16px, and the head's min-height: so a row is one height
707
- whether its value is drawn or not. Left to the host's line-height (18px in
708
- the website editor) a press on Reset, which empties the value, moved every
709
- row below it by 1.5px. */
710
- line-height: 16px;
711
- color: var(--es-text);
712
- font-variant-numeric: tabular-nums;
713
- }
714
-
715
- .es-field-ctl {
716
- display: flex;
717
- align-items: center;
718
- gap: 8px;
719
- min-width: 0;
720
- }
508
+ /* A one-line row (a switch on the name line) has no control line, so no gap
509
+ to one. */
510
+ .es-field.is-inline { margin-top: max(var(--es-row-gap), var(--es-rhythm-between-tight)); }
511
+ .es-field.is-inline .es-field-head { margin-bottom: 0; }
721
512
 
722
513
  /* A LIST OF DRILL ROWS IN THE CONTROL SLOT STACKS (Lewis, 2026-10-14). The slot
723
514
  is a row because a slider and its number box share it; a drill row is a
@@ -731,108 +522,23 @@ button.es-group-head:hover { background: var(--es-chip-bg); }
731
522
  gap: 0;
732
523
  }
733
524
 
734
- /* The hint sits FLUSH LEFT, on the same edge as the row's icon and control —
735
- not indented under the label's words (owner ruling, 2026-10-06; it was
736
- 24px, glyph + gap, until then). `tests/panel-hint-flush-left` holds it. */
737
- .es-field-hint {
738
- margin: 8px 0 0;
739
- font-size: var(--text-2xs, 11px);
740
- line-height: 1.45;
741
- color: var(--es-muted);
742
- }
743
-
744
- /* ── Default / Reset: the end of a label line ─────────────────────────────────
745
- Owner 2026-10-06: ONE part puts a changed setting back. Option E, final
746
- 2026-10-07: a ↺ icon button while the setting is changed, NOTHING while it is
747
- not (the row's grey value already says it is the default).
748
-
749
- ONE FIXED 22px SLOT IN BOTH STATES. The unchanged state is an empty span of
750
- the same box, so every row's end lines up whether it can be reset or not.
751
- It replaced PR 154's two hidden words, which sized the box to the wider of
752
- "Default" and "Reset": there is no word to size for now.
753
-
754
- Straight after the label the slot pushes itself to the row's end. After a
755
- value it sits 4px from it (the head's 8px gap less 4, option E). After
756
- anything else on the line — a colour row's readout — that thing has already
757
- been pushed right; pick.css sets the gap there. A second `auto` would split
758
- the free space and strand the slot mid-row (PR 163: 295px apart). */
759
- .es-default-reset {
760
- appearance: none;
761
- -webkit-appearance: none;
762
- box-sizing: border-box;
763
- flex: none;
764
- display: inline-flex;
765
- align-items: center;
766
- justify-content: center;
767
- width: 22px;
768
- height: 22px;
769
- margin: 0;
770
- padding: 0;
771
- border: 0;
772
- border-radius: var(--radius-md);
773
- background: transparent;
774
- color: var(--es-muted);
775
- }
776
-
777
- .es-default-reset svg {
778
- display: block;
779
- width: 15px;
780
- height: 15px;
781
- }
782
-
783
- .es-default-reset.is-changed {
784
- color: var(--es-accent-text);
785
- cursor: pointer;
786
- }
787
-
788
- .es-default-reset.is-changed:hover { background: var(--es-hover); }
789
-
790
- .es-default-reset.is-changed:disabled {
791
- color: var(--es-disabled);
792
- background: transparent;
793
- cursor: default;
794
- }
795
-
796
- .es-default-reset.is-pressable { cursor: pointer; }
797
- .es-default-reset.is-pressable:hover { background: var(--es-hover); color: var(--es-text-secondary); }
798
- .es-default-reset.is-pressable:disabled { color: var(--es-disabled); background: transparent; cursor: default; }
799
-
800
- .es-default-reset:focus-visible {
801
- outline: 2px solid var(--es-accent-ring);
802
- outline-offset: 1px;
525
+ /* FULL BLEED IN THE SETTINGS BODY (Lewis 2026-10-14, again 2026-10-23): the
526
+ band's ground reaches both edges of the panel, with no inset round it. It
527
+ cancels the body's side inset and pads the same amount back inside, so its
528
+ words start on the rows' left edge and its − / + ends on their right edge.
529
+ The start side is the panel's one inset (`--es-insp-pad-x`, chrome.css). The
530
+ end side is `--es-insp-pad-end` where a host keeps a scrollbar lane out of
531
+ the inset (the website editor's body pads its end by the inset less the
532
+ lane), else the same inset: a band that bled the full inset there would run
533
+ the lane's width past the body and give it a sideways scroll.
534
+ ONLY IN `.es-insp-body`: that is the one place the inset is known. A host
535
+ that draws a band anywhere else gets the square band in its own box. */
536
+ .es-insp-body .es-group-head {
537
+ width: calc(100% + var(--es-insp-pad-x) + var(--es-insp-pad-end, var(--es-insp-pad-x)));
538
+ margin-inline: calc(-1 * var(--es-insp-pad-x)) calc(-1 * var(--es-insp-pad-end, var(--es-insp-pad-x)));
539
+ padding-inline: var(--es-insp-pad-x) var(--es-insp-pad-end, var(--es-insp-pad-x));
803
540
  }
804
541
 
805
- /* WHATEVER A HOST PUTS IN `action` SITS AT THE ROW'S RIGHT END: the Default /
806
- Reset part (or the shell Tooltip wrapper round it), a switch, the `Each side`
807
- toggle of the Padding and Border rows. ONE rule for all of them (plan E-P,
808
- 2026-10-16), where the Default / Reset part had two of its own. A value, when
809
- drawn, already takes the free space (`.es-field-value`), and the action
810
- follows it. */
811
- .es-field-name + :not(.es-field-value) { margin-left: auto; }
812
-
813
- /* THE GREY VALUE IS THE "DEFAULT" WORD NOW (option E): a row whose slot is
814
- empty draws its value grey, and the value takes the text colour once the
815
- setting is changed. Scoped to rows that carry the part, so a value on a row
816
- with nothing to reset keeps its colour. */
817
- .es-field:has(> .es-field-head > span.es-default-reset) .es-field-value { color: var(--es-muted); }
818
- .es-field-value + .es-default-reset,
819
- .es-field-value + span:has(> .es-default-reset) { margin-left: -4px; }
820
-
821
- /* A boolean row is ONE line (card 8801, Option A). The switch rides the label
822
- line in the `action` slot, so there is no control row under it — and with no
823
- control row, the label line's 7px bottom margin would be a gap to nothing.
824
-
825
- A one-line row is one line tall, so it needs less air above it than a
826
- two-line setting does — 26, not 38 — and it is floored on the token for the
827
- same reason everything else here is (card 66203).
828
-
829
- IT TIED WITH THE FLOOR UNTIL NOW (card 66301). At 16 against a 16px floor
830
- nothing was wrong on screen, but the sheet could not tell you which of the
831
- two numbers you were reading, and moving either one alone would have moved
832
- nothing. 26 over 20 puts it plainly on its own number. */
833
- .es-field.is-inline { margin-top: max(var(--es-row-gap), var(--es-rhythm-between-tight)); }
834
- .es-field.is-inline .es-field-head { margin-bottom: 0; }
835
-
836
542
  /* ── the switch: one yes-or-no shape, both editors ─────────────────────────
837
543
  The shell's `Switch` since efficient-easel issue 199 step 4 (harness UI-24): its
838
544
  track, knob, on colour, focus ring and locked look are the kit's. `.es-switch`
@@ -6,7 +6,7 @@ import { B as BlockShape, D as Data } from '../types-41704JE4.js';
6
6
  *
7
7
  * Step 1.2 of the engine that replaces Puck (blueprint "Puck From The Ground
8
8
  * Up For Efficient Editor", 2026-09-29). The published storefront draws every
9
- * page through Puck's `<Render>` today (efficient-storefront `lib/puck/render-client.tsx`
9
+ * page through Puck's `<Render>` today (efficient-storefront `lib/document/render-client.tsx`
10
10
  * and `components/PublishedFooter.tsx`); this is the drop-in for it: the same
11
11
  * config, the same document, THE SAME HTML — `tests/render-puck-parity.test.tsx`
12
12
  * renders both and compares the markup byte for byte.
@@ -77,7 +77,7 @@ type SlotComponent = ((props?: SlotProps) => ReactElement) & {
77
77
  interface DropZoneProps extends SlotProps {
78
78
  zone: string;
79
79
  }
80
- /** The `puck` prop. Which keys are present depends on the level (see above). */
80
+ /** The `editor` prop (and `puck`, its deprecated twin). Which keys are present depends on the level (see above). */
81
81
  interface RenderContext {
82
82
  renderDropZone?: (props: DropZoneProps) => ReactElement;
83
83
  isEditing?: boolean;
@@ -1,5 +1,5 @@
1
- import{isRecord as n,fieldsFrom as t,slotLocations as e,setIn as o,drawnBlockCount as r,isNode as a}from"../chunk-L55YIXDC.js";import{jsx as c}from"react/jsx-runtime";function s({config:e,data:o,metadata:r={},className:a}){const s=Array.isArray(o?.content)?o.content:[],u=n(o?.root)?o.root:{},p="props"in u?u.props:u,m={config:e,content:s,zones:n(o?.zones)?o.zones:{},metadata:r},f={...p,puck:{renderDropZone:l(m,"root"),isEditing:!1,dragRef:null,metadata:r},title:p?.title||"",editMode:!1,id:"puck-root"},y=i(m,t(e.root),f),g=s.map(n=>d(m,n)),k=/* @__PURE__ */c("div",a?{className:a,children:g}:{children:g}),h=e.root?.render;return h?/* @__PURE__ */c(h,{...y,children:k}):k}function i(n,t,r){let a=r;for(const c of e(r,t))a=o(a,c.segments,u(n,c.content));return a}function u(n,e){return Object.assign(function(o={}){/* @__PURE__ */
2
- return c("div",{className:o.className,style:o.style,children:e.map(e=>function(n,e){if(!a(e))return null;const o=n.config.components[e.type];if(!o)return null;const r=i(n,t(o),e.props),s=o.render,u={...r.puck,metadata:n.metadata||{}};/* @__PURE__ */
3
- return c(s,{...r,puck:u},r.id)}(n,e))})},{blockCount:r(e,n.config.components)})}function d(n,e){if(!a(e))return null;const o=n.config.components[e.type];if(!o)return null;const r=i(n,t(o),e.props),s=o.render,u={...r.puck,renderDropZone:l(n,r.id),metadata:{...n.metadata,...o.metadata}};/* @__PURE__ */
4
- return c(s,{...r,puck:u},r.id)}function l(n,t){return function({zone:e,className:o,style:r}){const a=`${t}:${e}`,s="root:default-zone"===a?n.content:n.zones[a],i=Array.isArray(s)?s:[];/* @__PURE__ */
5
- return c("div",{className:o,style:r,children:i.map(t=>d(n,t))})}}export{s as Render};
1
+ import{isRecord as t,fieldsFrom as n,slotLocations as e,setIn as o,drawnBlockCount as r,isNode as a}from"../chunk-L55YIXDC.js";import{jsx as c}from"react/jsx-runtime";function i({config:e,data:o,metadata:r={},className:a}){const i=Array.isArray(o?.content)?o.content:[],u=t(o?.root)?o.root:{},p="props"in u?u.props:u,m={config:e,content:i,zones:t(o?.zones)?o.zones:{},metadata:r},f={renderDropZone:l(m,"root"),isEditing:!1,dragRef:null,metadata:r},y={...p,editor:f,puck:f,title:p?.title||"",editMode:!1,id:"puck-root"},g=s(m,n(e.root),y),k=i.map(t=>d(m,t)),h=/* @__PURE__ */c("div",a?{className:a,children:k}:{children:k}),z=e.root?.render;return z?/* @__PURE__ */c(z,{...g,children:h}):h}function s(t,n,r){let a=r;for(const c of e(r,n))a=o(a,c.segments,u(t,c.content));return a}function u(t,e){return Object.assign(function(o={}){/* @__PURE__ */
2
+ return c("div",{className:o.className,style:o.style,children:e.map(e=>function(t,e){if(!a(e))return null;const o=t.config.components[e.type];if(!o)return null;const r=s(t,n(o),e.props),i=o.render,u={...r.puck,metadata:t.metadata||{}};/* @__PURE__ */
3
+ return c(i,{...r,editor:u,puck:u},r.id)}(t,e))})},{blockCount:r(e,t.config.components)})}function d(t,e){if(!a(e))return null;const o=t.config.components[e.type];if(!o)return null;const r=s(t,n(o),e.props),i=o.render,u={...r.puck,renderDropZone:l(t,r.id),metadata:{...t.metadata,...o.metadata}};/* @__PURE__ */
4
+ return c(i,{...r,editor:u,puck:u},r.id)}function l(t,n){return function({zone:e,className:o,style:r}){const a=`${n}:${e}`,i="root:default-zone"===a?t.content:t.zones[a],s=Array.isArray(i)?i:[];/* @__PURE__ */
5
+ return c("div",{className:o,style:r,children:s.map(n=>d(t,n))})}}export{i as Render};
@@ -8,7 +8,7 @@
8
8
  * <div data-sf-repeat="<ownerId>:template" data-sf-repeat-index={i}>
9
9
  *
10
10
  * Index 0 is the MAIN copy. The blocks inside keep their real
11
- * `data-puck-component` / `data-puck-dnd` ids in every copy, so a click on any
11
+ * `data-puck-component` / `data-easel-dnd` ids in every copy, so a click on any
12
12
  * copy selects the template block. What the canvas does with the copies:
13
13
  * - the hover and the selected outline are drawn on every copy;
14
14
  * - only the main copy's lists are drop targets (the others are pictures);
@@ -1,5 +1,5 @@
1
1
  import * as react from 'react';
2
- import { BlockChoice } from '../lib/puck/block-choice.js';
2
+ import { BlockChoice } from '../lib/document/block-choice.js';
3
3
 
4
4
  declare function AddBlockRow({ choices, onPick, }: {
5
5
  /** The block types this slot accepts, from `canAddTo(parentType)?.choices`. */
@@ -1 +1 @@
1
- export{AddBlockRow as default}from"../../chunk-L2Y3PF2R.js";import"../../chunk-M2Z775ZC.js";import"../../chunk-PAOZMXEI.js";import"../../chunk-FHCKFOCD.js";import"../../chunk-MQA7OFRA.js";import"../../chunk-23DYNW6S.js";import"../../chunk-EFHV56BO.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-7LYKFL3Q.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-A6Z4SD3I.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-IWCKVZHS.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-RC25EGHD.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-BSHIQIZC.js";import"../../chunk-23VM4PMV.js";import"../../chunk-KRL3IUV3.js";import"../../chunk-ZOBSIXRD.js";import"../../chunk-QAJAEWCZ.js";import"../../chunk-WRFD4EXD.js";import"../../chunk-VANKQVOW.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-3S5N4HLJ.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-K7BTCBWD.js";import"../../chunk-L55YIXDC.js";import"../../chunk-QIDRJH3S.js";import"../../chunk-PLVEGYK6.js";import"../../chunk-LF3FUSCQ.js";
1
+ export{AddBlockRow as default}from"../../chunk-U7TFWHST.js";import"../../chunk-RUQOIQWI.js";import"../../chunk-OHZHYROJ.js";import"../../chunk-PRHBWA5V.js";import"../../chunk-FHCKFOCD.js";import"../../chunk-MQA7OFRA.js";import"../../chunk-EB6NI2VK.js";import"../../chunk-TCAAOYQY.js";import"../../chunk-TUXLORVR.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-PFFH7ASD.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-FM6JO4WF.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-WHS6Y55E.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-IWCKVZHS.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-BSHIQIZC.js";import"../../chunk-MZ5GSSZ3.js";import"../../chunk-KRL3IUV3.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-S3DUFDQ6.js";import"../../chunk-JACEEVVF.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-3S5N4HLJ.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-4FD7TAOE.js";import"../../chunk-LF3FUSCQ.js";import"../../chunk-K7BTCBWD.js";import"../../chunk-L55YIXDC.js";
@@ -3,9 +3,9 @@ import { ReactNode } from 'react';
3
3
  import { D as DragSession } from '../../session-DSQFmIvx.js';
4
4
  import { SectionTemplate } from '../lib/section-template-types.js';
5
5
  import { SharedSection } from '../lib/shared-section-types.js';
6
- import { BlockChoice } from '../lib/puck/block-choice.js';
6
+ import { BlockChoice } from '../lib/document/block-choice.js';
7
7
  import '../../types-41704JE4.js';
8
- import '../lib/puck/content-tree.js';
8
+ import '../lib/document/content-tree.js';
9
9
 
10
10
  /** What a tile adds, parsed back out of its key. */
11
11
  type AddKey = {
@@ -1 +1 @@
1
- export{blockKey,AddSidePanel as default,sectionKey,sharedKey,templateKey}from"../../chunk-R5KEFI55.js";import"../../chunk-PA3PNTVV.js";import"../../chunk-5ZBY24K7.js";import"../../chunk-BVN33R76.js";import"../../chunk-43AEUUNQ.js";import"../../chunk-SINAM2IT.js";import"../../chunk-UMDQ6CLQ.js";import"../../chunk-M2Z775ZC.js";import"../../chunk-PAOZMXEI.js";import"../../chunk-KCOBHPN6.js";import"../../chunk-FHCKFOCD.js";import"../../chunk-O7Q4DDJT.js";import"../../chunk-RSCMJIWS.js";import"../../chunk-MQA7OFRA.js";import"../../chunk-23DYNW6S.js";import"../../chunk-EFHV56BO.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-7LYKFL3Q.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-A6Z4SD3I.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-IWCKVZHS.js";import"../../chunk-ZKY45F5G.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-RC25EGHD.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-BSHIQIZC.js";import"../../chunk-23VM4PMV.js";import"../../chunk-KRL3IUV3.js";import"../../chunk-ZOBSIXRD.js";import"../../chunk-QAJAEWCZ.js";import"../../chunk-WRFD4EXD.js";import"../../chunk-VANKQVOW.js";import"../../chunk-ZG6PVMC3.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-AJSDWWJW.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-LQV5FZTQ.js";import"../../chunk-KAML3KQH.js";import"../../chunk-3S5N4HLJ.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-K7BTCBWD.js";import"../../chunk-L55YIXDC.js";import"../../chunk-QIDRJH3S.js";import"../../chunk-PLVEGYK6.js";import"../../chunk-LF3FUSCQ.js";
1
+ export{blockKey,AddSidePanel as default,sectionKey,sharedKey,templateKey}from"../../chunk-2C7W64S5.js";import"../../chunk-VKPOH6MK.js";import"../../chunk-CPL43ZLJ.js";import"../../chunk-N7E6264U.js";import"../../chunk-N3MJOHAG.js";import"../../chunk-SINAM2IT.js";import"../../chunk-UMDQ6CLQ.js";import"../../chunk-RUQOIQWI.js";import"../../chunk-OHZHYROJ.js";import"../../chunk-PRHBWA5V.js";import"../../chunk-KCOBHPN6.js";import"../../chunk-FHCKFOCD.js";import"../../chunk-YM4UEGBV.js";import"../../chunk-SNF5764Q.js";import"../../chunk-MQA7OFRA.js";import"../../chunk-EB6NI2VK.js";import"../../chunk-TCAAOYQY.js";import"../../chunk-TUXLORVR.js";import"../../chunk-TBY3DFKS.js";import"../../chunk-PFFH7ASD.js";import"../../chunk-BPXEFVSQ.js";import"../../chunk-ZEH6QLBH.js";import"../../chunk-FM6JO4WF.js";import"../../chunk-KFV7N2DJ.js";import"../../chunk-WHS6Y55E.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-IWCKVZHS.js";import"../../chunk-ZKY45F5G.js";import"../../chunk-FIVU2COQ.js";import"../../chunk-BSHIQIZC.js";import"../../chunk-ZG6PVMC3.js";import"../../chunk-MJM6SFD3.js";import"../../chunk-AJSDWWJW.js";import"../../chunk-2OAZYSWJ.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";import"../../chunk-MZ5GSSZ3.js";import"../../chunk-KRL3IUV3.js";import"../../chunk-Y2T3JX7K.js";import"../../chunk-KFWNGPW3.js";import"../../chunk-S3DUFDQ6.js";import"../../chunk-JACEEVVF.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-WJJ7H42G.js";import"../../chunk-TQ5Y6S2X.js";import"../../chunk-3S5N4HLJ.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-4FD7TAOE.js";import"../../chunk-LF3FUSCQ.js";import"../../chunk-K7BTCBWD.js";import"../../chunk-L55YIXDC.js";