@jxsuite/studio 10.5.0 → 10.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/data/locales/en/elements.json +434 -0
  2. package/data/webdata.json +116 -139
  3. package/dist/chunks/{2020-7sx2vexa.js → 2020-rqm7qrje.js} +3 -3
  4. package/dist/chunks/adapter-cyy8vbcx.js +4 -0
  5. package/dist/chunks/add-new-flow-8cgtejv2.js +4 -0
  6. package/dist/chunks/{cf-account-picker-ajh60k54.js → cf-account-picker-v3qd2dhw.js} +3 -3
  7. package/dist/chunks/cf-settings-1fnw874z.js +4 -0
  8. package/dist/chunks/{color-area-gbcftzh3.js → color-area-frd9y9q6.js} +2 -2
  9. package/dist/chunks/{color-field-85136598.js → color-field-rebpbe33.js} +3 -3
  10. package/dist/chunks/{color-slider-w1s3ndd8.js → color-slider-6bzmk3s7.js} +2 -2
  11. package/dist/chunks/color-t2bnnj8y.js +4 -0
  12. package/dist/chunks/{combobox-dk98wc5x.js → combobox-c49x7gf1.js} +2 -2
  13. package/dist/chunks/components-y8yhdd7d.js +4 -0
  14. package/dist/chunks/content-source-9e7qvmsf.js +4 -0
  15. package/dist/chunks/convert-to-repeater-pd2w4z21.js +4 -0
  16. package/dist/chunks/editor-mb9jzdrw.js +4 -0
  17. package/dist/chunks/entry-commands-at0wnx3f.js +4 -0
  18. package/dist/chunks/extension-sections-4z9qq0gh.js +4 -0
  19. package/dist/chunks/file-ops-dtdvjmza.js +4 -0
  20. package/dist/chunks/files-8pf70854.js +4 -0
  21. package/dist/chunks/format-host-fd3m2y2a.js +4 -0
  22. package/dist/chunks/fs-events-hrk29vcv.js +4 -0
  23. package/dist/chunks/grid-open-bh74v82z.js +4 -0
  24. package/dist/chunks/{grid-view-0v4hjspb.js → grid-view-a51mgzmq.js} +10 -10
  25. package/dist/chunks/{icons-j9eksgew.js → icons-qp8fn1k8.js} +2 -2
  26. package/dist/chunks/{iframe-entry-4zqtn3ry.js → iframe-entry-mpwe5pwk.js} +4 -4
  27. package/dist/chunks/{iframe-entry-2x9bn5ng.js → iframe-entry-msd43x9h.js} +4 -4
  28. package/dist/chunks/iframe-entry-rt8jz5t8.js +5 -0
  29. package/dist/chunks/{iframe-entry-54kwwhmg.js → iframe-entry-v40cr813.js} +2 -2
  30. package/dist/chunks/iframe-host-q0s0wwy3.js +4 -0
  31. package/dist/chunks/{image-bake-m8gzaan9.js → image-bake-q9ajdjsj.js} +3 -3
  32. package/dist/chunks/{image-editor-0afyws7c.js → image-editor-ke9std9b.js} +2 -2
  33. package/dist/chunks/index-57ang7ma.js +4 -0
  34. package/dist/chunks/index-eytr7av4.js +17 -0
  35. package/dist/chunks/{index-2q88g57p.js → index-x495reff.js} +3 -3
  36. package/dist/chunks/{javascript-5sxtr1g7.js → javascript-qe34bvaz.js} +3 -3
  37. package/dist/chunks/{jsonMode-m6sf47hq.js → jsonMode-m8rseh31.js} +8 -8
  38. package/dist/chunks/jx-validate-bbd1mary.js +4 -0
  39. package/dist/chunks/layers-panel-wcjtdqsa.js +4 -0
  40. package/dist/chunks/layers-yscpys6q.js +4 -0
  41. package/dist/chunks/{listbox-k5p41049.js → listbox-tktzq5xj.js} +2 -2
  42. package/dist/chunks/lit-html-qm5wbhqz.js +4 -0
  43. package/dist/chunks/media-library-2hfff88g.js +4 -0
  44. package/dist/chunks/media-open-4pb05cne.js +4 -0
  45. package/dist/chunks/media-picker-bzktmmwr.js +4 -0
  46. package/dist/chunks/{menu-26nez152.js → menu-xc3cbgsd.js} +2 -2
  47. package/dist/chunks/{monaco-binding-1s2b8snq.js → monaco-binding-7t38arh9.js} +3 -3
  48. package/dist/chunks/monaco-buffer-3vz94c9f.js +4 -0
  49. package/dist/chunks/monaco-setup-fstdew02.js +4 -0
  50. package/dist/chunks/notify-gbdcckrh.js +4 -0
  51. package/dist/chunks/parse-fpdzgk4c.js +4 -0
  52. package/dist/chunks/platform-9g72gdqr.js +4 -0
  53. package/dist/chunks/{popover-fhdnt4be.js → popover-cnmsav6b.js} +2 -2
  54. package/dist/chunks/publish-panel-91x1cb5d.js +4 -0
  55. package/dist/chunks/publish-quick-e2dmf7eg.js +4 -0
  56. package/dist/chunks/publish-workspace-1x8mnzrj.js +4 -0
  57. package/dist/chunks/quick-search-2m4y6p1x.js +4 -0
  58. package/dist/chunks/references-yg1g9rwx.js +4 -0
  59. package/dist/chunks/right-panel-7mfyhzrk.js +4 -0
  60. package/dist/chunks/source-control-rrc4jgp5.js +4 -0
  61. package/dist/chunks/{split-qh21j2b0.js → split-d15yencd.js} +2 -2
  62. package/dist/chunks/{studio-r5g7fx7q.js → studio-0jhhznxy.js} +6 -6
  63. package/dist/chunks/studio-0nb57pjg.js +7 -0
  64. package/dist/chunks/{studio-bpzwhn88.js → studio-0wa4wv4s.js} +4 -4
  65. package/dist/chunks/studio-0z8kp4xk.js +5 -0
  66. package/dist/chunks/{studio-jqvke4ac.js → studio-18gc5t3v.js} +4 -4
  67. package/dist/chunks/{studio-xh6rf05g.js → studio-1b79rpcb.js} +4 -4
  68. package/dist/chunks/studio-211q5j7m.js +4 -0
  69. package/dist/chunks/studio-213pyfxh.js +16 -0
  70. package/dist/chunks/studio-2b1smjvp.js +5 -0
  71. package/dist/chunks/{studio-dst8y8vh.js → studio-2v6tc9jp.js} +4 -4
  72. package/dist/chunks/studio-30j0wz99.js +5 -0
  73. package/dist/chunks/studio-3kmqhwtt.js +5 -0
  74. package/dist/chunks/studio-44drsmhw.js +5 -0
  75. package/dist/chunks/{studio-d5f7sskn.js → studio-495b6f2r.js} +4 -4
  76. package/dist/chunks/{studio-g65t6svn.js → studio-4gthb2fd.js} +4 -4
  77. package/dist/chunks/{studio-bmwgj8ez.js → studio-4xadhxj1.js} +4 -4
  78. package/dist/chunks/{studio-zav9hgb3.js → studio-52mzbxqm.js} +4 -4
  79. package/dist/chunks/{studio-thgexj3w.js → studio-56mmnsw8.js} +7 -7
  80. package/dist/chunks/studio-59hz8f4r.js +5 -0
  81. package/dist/chunks/{studio-bk0anq3b.js → studio-5k9mfafh.js} +3 -3
  82. package/dist/chunks/{studio-qarg1xf9.js → studio-5qez462c.js} +5 -5
  83. package/dist/chunks/studio-6tnpg0vx.js +5 -0
  84. package/dist/chunks/studio-6w8mt734.js +6 -0
  85. package/dist/chunks/studio-7hm04x5z.js +5 -0
  86. package/dist/chunks/studio-8atmfjjm.js +7 -0
  87. package/dist/chunks/{studio-69g6a0jn.js → studio-8n99z71s.js} +4 -4
  88. package/dist/chunks/{studio-ep1384t9.js → studio-8vmad6x2.js} +4 -4
  89. package/dist/chunks/{studio-6sxnqqw8.js → studio-93p5k4r4.js} +4 -4
  90. package/dist/chunks/{studio-hy936516.js → studio-9gb0m81w.js} +4 -4
  91. package/dist/chunks/{studio-ek4fb4eb.js → studio-a4ymg4vd.js} +4 -4
  92. package/dist/chunks/studio-anc8067x.js +5 -0
  93. package/dist/chunks/{studio-ketrgtph.js → studio-dbdt67kr.js} +5 -5
  94. package/dist/chunks/studio-dbex091t.js +5 -0
  95. package/dist/chunks/{studio-nngc45ct.js → studio-dj8ctxey.js} +4 -4
  96. package/dist/chunks/{studio-pgze9p34.js → studio-ed9bz68j.js} +5 -5
  97. package/dist/chunks/{studio-4ncxzw5m.js → studio-fe2d1fp5.js} +4 -4
  98. package/dist/chunks/{studio-m8hesdrw.js → studio-fgp4cyy3.js} +4 -4
  99. package/dist/chunks/{studio-151kgn69.js → studio-ft706q02.js} +4 -4
  100. package/dist/chunks/{studio-pv1ts08p.js → studio-g79s1dyg.js} +5 -5
  101. package/dist/chunks/{studio-zkkt13qd.js → studio-gahswxp4.js} +4 -4
  102. package/dist/chunks/{studio-x5ffyssw.js → studio-gbqc12bk.js} +4 -4
  103. package/dist/chunks/{studio-4jy967rj.js → studio-gxphbetb.js} +5 -5
  104. package/dist/chunks/studio-hdf01j7q.js +7 -0
  105. package/dist/chunks/studio-hf259xzd.js +48 -0
  106. package/dist/chunks/studio-jbva4wxw.js +5 -0
  107. package/dist/chunks/{studio-td3h1644.js → studio-jj9gf1qc.js} +4 -4
  108. package/dist/chunks/studio-jsjg3mjv.js +5 -0
  109. package/dist/chunks/studio-jtvb8hd7.js +5 -0
  110. package/dist/chunks/{studio-c72v1kwc.js → studio-kp4vzrct.js} +4 -4
  111. package/dist/chunks/{studio-s4k1v7dt.js → studio-kpx02gaa.js} +6 -6
  112. package/dist/chunks/{studio-3yr1zdp9.js → studio-kv1728ex.js} +8 -8
  113. package/dist/chunks/studio-m25ry0mf.js +5 -0
  114. package/dist/chunks/studio-mcbwmkyh.js +5 -0
  115. package/dist/chunks/studio-meajkr51.js +5 -0
  116. package/dist/chunks/studio-mkjrjpr2.js +6 -0
  117. package/dist/chunks/{studio-nv5eq0f7.js → studio-mr084886.js} +181 -181
  118. package/dist/chunks/{studio-43pynnhz.js → studio-mrb10hv3.js} +4 -4
  119. package/dist/chunks/{studio-7qqb7hb8.js → studio-nhpg405j.js} +4 -4
  120. package/dist/chunks/{studio-n271vdsg.js → studio-nsec0hxm.js} +41 -41
  121. package/dist/chunks/{studio-ztzf8mce.js → studio-nv0mh0p5.js} +4 -4
  122. package/dist/chunks/studio-pafmb06w.js +5 -0
  123. package/dist/chunks/{studio-4s5bka8t.js → studio-pgftd79b.js} +4 -4
  124. package/dist/chunks/{studio-wn2cmf9q.js → studio-pk961xgz.js} +4 -4
  125. package/dist/chunks/studio-pzbr7g05.js +5 -0
  126. package/dist/chunks/{studio-15mfah02.js → studio-qcc5hsw2.js} +6 -6
  127. package/dist/chunks/studio-qfq58c8n.js +5 -0
  128. package/dist/chunks/{studio-j3bq30yz.js → studio-qvb2jr83.js} +4 -4
  129. package/dist/chunks/studio-r85zw6ay.js +5 -0
  130. package/dist/chunks/{studio-f69wcajk.js → studio-s0kwce5w.js} +5 -5
  131. package/dist/chunks/studio-s6ymkf3q.js +14 -0
  132. package/dist/chunks/{studio-8ncm9zwx.js → studio-s7p5ccxa.js} +4 -4
  133. package/dist/chunks/{studio-zzgp5yka.js → studio-s9jjap3x.js} +4 -4
  134. package/dist/chunks/{studio-ber1dgte.js → studio-t5hde1ws.js} +4 -4
  135. package/dist/chunks/studio-vj9yv897.js +5 -0
  136. package/dist/chunks/{studio-ajfq4fmr.js → studio-wmak8xjw.js} +4 -4
  137. package/dist/chunks/{studio-k05g7efh.js → studio-wqsmvtqj.js} +4 -4
  138. package/dist/chunks/studio-x3z3rhej.js +5 -0
  139. package/dist/chunks/{studio-7qr8k0v2.js → studio-xb55kpmy.js} +4 -4
  140. package/dist/chunks/{studio-f3awr5nc.js → studio-xxtdajmv.js} +7 -7
  141. package/dist/chunks/{studio-1a7zshnv.js → studio-xxttcym1.js} +4 -4
  142. package/dist/chunks/{studio-czpmzs9r.js → studio-y2zsnzye.js} +7 -7
  143. package/dist/chunks/{studio-9f5vcb4w.js → studio-y3tjh2xb.js} +3 -3
  144. package/dist/chunks/studio-y4f1rdsj.js +5 -0
  145. package/dist/chunks/studio-ybkd5w8k.js +5 -0
  146. package/dist/chunks/{studio-cv6gnjqd.js → studio-yetr4gg1.js} +4 -4
  147. package/dist/chunks/{studio-ehj3csbm.js → studio-z295anhs.js} +5 -5
  148. package/dist/chunks/{studio-pte5w7rf.js → studio-z89e6wpg.js} +8 -8
  149. package/dist/chunks/{studio-4z0cdh16.js → studio-zbwr6prc.js} +3 -3
  150. package/dist/chunks/{studio-w3aafbpk.js → studio-zdbsv5q2.js} +3 -3
  151. package/dist/chunks/{studio-eq5vqn1q.js → studio-zvthj8hg.js} +4 -4
  152. package/dist/chunks/toast-2kn2vrn4.js +4 -0
  153. package/dist/chunks/{toast-host-g3r2s0kn.js → toast-host-3rxeyj3d.js} +3 -3
  154. package/dist/chunks/{tooltip-gtx40bjg.js → tooltip-ghkxkasp.js} +2 -2
  155. package/dist/chunks/{tree-a19s1c05.js → tree-vw4nc63s.js} +2 -2
  156. package/dist/chunks/{tsMode-3f116hth.js → tsMode-7gngmamr.js} +7 -7
  157. package/dist/chunks/workspace-gv0hxgsm.js +4 -0
  158. package/dist/chunks/workspace-home-j7e0mjy5.js +4 -0
  159. package/dist/chunks/{ws-client-cb49m87s.js → ws-client-vs11sxc5.js} +3 -3
  160. package/dist/iframe-entry.js +14 -14
  161. package/dist/manifest.json +84 -83
  162. package/dist/studio.js +80 -80
  163. package/package.json +12 -12
  164. package/src/browse/preview-style.ts +2 -1
  165. package/src/canvas/canvas-render.ts +6 -1
  166. package/src/canvas/iframe-drop.ts +84 -1
  167. package/src/canvas/iframe-entry.ts +9 -6
  168. package/src/canvas/iframe-render.ts +13 -0
  169. package/src/collab/collab-session.ts +2 -2
  170. package/src/commands/levels.ts +1 -1
  171. package/src/create/add-new-flow.ts +2 -1
  172. package/src/editor/convert-targets.ts +2 -23
  173. package/src/editor/slash-menu.ts +35 -17
  174. package/src/files/files.ts +18 -0
  175. package/src/format/format-choices.ts +5 -5
  176. package/src/format/format-host.ts +35 -3
  177. package/src/grid/redirects-grid.ts +4 -4
  178. package/src/locale/element-names.ts +131 -0
  179. package/src/panels/dnd.ts +3 -1
  180. package/src/panels/elements-panel.ts +93 -36
  181. package/src/panels/imports-panel.ts +3 -2
  182. package/src/panels/navigator-panels.ts +10 -10
  183. package/src/panels/panel-registry.ts +3 -3
  184. package/src/panels/site-panel.ts +2 -1
  185. package/src/panels/style-panel.ts +2 -1
  186. package/src/panels/styles-panel.ts +2 -2
  187. package/src/platforms/cloud.ts +5 -2
  188. package/src/services/ai-command-tools.ts +2 -1
  189. package/src/services/ai-project-tools.ts +18 -5
  190. package/src/services/jxn-language.ts +110 -0
  191. package/src/services/model-uri.ts +3 -0
  192. package/src/services/monaco-setup.ts +6 -2
  193. package/src/settings/contributed-section.ts +2 -1
  194. package/src/settings/extension-commands.ts +2 -1
  195. package/src/settings/general-settings.ts +2 -2
  196. package/src/settings/settings-document.ts +5 -5
  197. package/src/shell.ts +1 -1
  198. package/src/studio.ts +28 -11
  199. package/src/style/variables-view.ts +2 -2
  200. package/src/surfaces/panel-elements.json +466 -206
  201. package/src/surfaces/panel-elements.ts +61 -25
  202. package/src/tabs/project-config.ts +13 -13
  203. package/src/tabs/tab.ts +7 -2
  204. package/src/types.ts +11 -2
  205. package/src/view.ts +9 -2
  206. package/src/workspace/tab-workspace.ts +2 -2
  207. package/src/workspace/workspace-back.ts +2 -2
  208. package/dist/chunks/adapter-12dxr3z7.js +0 -4
  209. package/dist/chunks/add-new-flow-any4pw2q.js +0 -4
  210. package/dist/chunks/cf-settings-hbj16kh3.js +0 -4
  211. package/dist/chunks/color-thzpppyc.js +0 -4
  212. package/dist/chunks/components-a98hzqw9.js +0 -4
  213. package/dist/chunks/content-source-jq3fjs3w.js +0 -4
  214. package/dist/chunks/convert-to-repeater-g66r6qp1.js +0 -4
  215. package/dist/chunks/editor-rth1rzj8.js +0 -4
  216. package/dist/chunks/entry-commands-02j0s19w.js +0 -4
  217. package/dist/chunks/extension-sections-rqrs7dr0.js +0 -4
  218. package/dist/chunks/file-ops-6a49er4c.js +0 -4
  219. package/dist/chunks/files-b2p9y0yz.js +0 -4
  220. package/dist/chunks/format-host-7xe57k1s.js +0 -4
  221. package/dist/chunks/fs-events-0xsy168g.js +0 -4
  222. package/dist/chunks/grid-open-h3q4fjy5.js +0 -4
  223. package/dist/chunks/iframe-entry-m24fza30.js +0 -5
  224. package/dist/chunks/iframe-host-8jcmaktg.js +0 -4
  225. package/dist/chunks/index-7nj2375a.js +0 -4
  226. package/dist/chunks/jx-validate-808zgbgy.js +0 -4
  227. package/dist/chunks/layers-0ffdtqjn.js +0 -4
  228. package/dist/chunks/layers-panel-rw62wtvf.js +0 -4
  229. package/dist/chunks/lit-html-9bz9rcfv.js +0 -4
  230. package/dist/chunks/media-library-2a5hdbek.js +0 -4
  231. package/dist/chunks/media-open-069kzhj4.js +0 -4
  232. package/dist/chunks/media-picker-4p4pd28y.js +0 -4
  233. package/dist/chunks/monaco-buffer-m9fd2dka.js +0 -4
  234. package/dist/chunks/monaco-setup-e0crh3v6.js +0 -4
  235. package/dist/chunks/notify-re3js157.js +0 -4
  236. package/dist/chunks/parse-hee7ne9b.js +0 -4
  237. package/dist/chunks/platform-rywy3tkg.js +0 -4
  238. package/dist/chunks/publish-panel-czkpg8m4.js +0 -4
  239. package/dist/chunks/publish-quick-b9wbhqj6.js +0 -4
  240. package/dist/chunks/publish-workspace-yy6d23b7.js +0 -4
  241. package/dist/chunks/quick-search-tp7pjnmv.js +0 -4
  242. package/dist/chunks/references-wd2yj8s1.js +0 -4
  243. package/dist/chunks/right-panel-x971k0zc.js +0 -4
  244. package/dist/chunks/source-control-k4p00hpe.js +0 -4
  245. package/dist/chunks/studio-1d8m5s38.js +0 -16
  246. package/dist/chunks/studio-35pmfjtx.js +0 -5
  247. package/dist/chunks/studio-44xqe0b7.js +0 -4
  248. package/dist/chunks/studio-48yzqzqr.js +0 -5
  249. package/dist/chunks/studio-5rq3e4q5.js +0 -5
  250. package/dist/chunks/studio-6hcfm9q3.js +0 -5
  251. package/dist/chunks/studio-6mf31e16.js +0 -5
  252. package/dist/chunks/studio-8w5pa88p.js +0 -7
  253. package/dist/chunks/studio-9c6cbq2c.js +0 -4
  254. package/dist/chunks/studio-aaw7wxv8.js +0 -5
  255. package/dist/chunks/studio-afx9brsc.js +0 -5
  256. package/dist/chunks/studio-dmgh2rrj.js +0 -5
  257. package/dist/chunks/studio-erjccagy.js +0 -5
  258. package/dist/chunks/studio-ex1644g2.js +0 -5
  259. package/dist/chunks/studio-gw83z798.js +0 -7
  260. package/dist/chunks/studio-j52ks8q7.js +0 -5
  261. package/dist/chunks/studio-kefs4sz4.js +0 -5
  262. package/dist/chunks/studio-m3jrjfhy.js +0 -14
  263. package/dist/chunks/studio-n4pnf0sw.js +0 -5
  264. package/dist/chunks/studio-ncwx602y.js +0 -5
  265. package/dist/chunks/studio-nzp0sqjg.js +0 -5
  266. package/dist/chunks/studio-ph17an19.js +0 -5
  267. package/dist/chunks/studio-q509sqt8.js +0 -5
  268. package/dist/chunks/studio-s49y6m5b.js +0 -5
  269. package/dist/chunks/studio-t46rt6gx.js +0 -5
  270. package/dist/chunks/studio-veh91hjv.js +0 -5
  271. package/dist/chunks/studio-vswmz40d.js +0 -6
  272. package/dist/chunks/studio-w4mfaaam.js +0 -5
  273. package/dist/chunks/studio-x5py815g.js +0 -5
  274. package/dist/chunks/studio-z6s56dzz.js +0 -5
  275. package/dist/chunks/studio-ze1sm147.js +0 -7
  276. package/dist/chunks/studio-zn7ysyzb.js +0 -5
  277. package/dist/chunks/toast-w11qpkyz.js +0 -4
  278. package/dist/chunks/workspace-home-61n1jz3q.js +0 -4
  279. package/dist/chunks/workspace-sheek6zw.js +0 -4
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://jxsuite.com/schema/v1",
3
3
  "$id": "StudioPanelElements",
4
- "$description": "The Insert panel: the palette a page is built out of. One filter, then one accordion — the project's own components first, then the HTML elements by category — and a card per thing that can be inserted. The adapter (`surfaces/panel-elements.ts`) is handed sections whose cards are already filtered, already open or closed, and already carry the tag they insert, so nothing here asks what an element is, which npm components the document has enabled, or what the filter means. A card is inserted by CLICK from this document and by DRAG from `panels/dnd.ts`, which registers against the painted card — that seam is why three class names survive the conversion, and the style block says why.",
4
+ "$description": "The Insert panel: the palette a page is built out of. Two tabs, Elements and Components, then one filter for whichever is showing, then that tab's cards: the HTML elements in an accordion of categories, or the project's components. The adapter (`surfaces/panel-elements.ts`) is handed cards that are already filtered, already named in the reader's language and already sorted into sections that know whether they are open, so nothing here asks what an element is called, which npm components the document has enabled, or what the filter means. A card is inserted by CLICK from this document and by DRAG from `panels/dnd.ts`, which registers against the painted card — that seam is why three class names survive the conversion, and the style block says why.",
5
5
  "tagName": "div",
6
6
  "attributes": {
7
7
  "part": "palette"
@@ -38,9 +38,98 @@
38
38
  "color": "var(--fg-dim)",
39
39
  "fontSize": "var(--jx-text-sm)",
40
40
  "fontStyle": "italic"
41
+ },
42
+ "& [part=\"tabs\"]": {
43
+ "$description": "Two words in the Navigator's column. Each tab takes half the strip rather than the kit tab's own width, so the pair reads as a switch between two halves of one palette, not as two documents.",
44
+ "flex": "0 0 auto",
45
+ "gap": "0",
46
+ "fontSize": "var(--jx-text-sm)"
47
+ },
48
+ "& [part=\"tab\"]": {
49
+ "flex": "1 1 0",
50
+ "justifyContent": "center",
51
+ "minWidth": "0",
52
+ "maxWidth": "none",
53
+ "padding": "var(--jx-space-1) var(--jx-space-2)"
54
+ },
55
+ "& [part=\"panel\"]": {
56
+ "$description": "The kit's tab panel pads itself for a dialog; here the filter above it already sets the inset, and the accordion runs edge to edge as it did before the tabs.",
57
+ "padding": "0",
58
+ "minHeight": "0"
59
+ },
60
+ "& [part=\"components-section\"]": {
61
+ "$description": "The component cards sit in one column with the inset an accordion item gives its body, since this tab has no accordion around them.",
62
+ "padding": "0 var(--jx-space-2) var(--jx-space-2)"
63
+ },
64
+ "& [part=\"element-name\"]": {
65
+ "$description": "A card's caption leads with the element's name in the reader's language, in the chrome's own type. `.element-card-label` (styles/panels.css) is monospace for the tag it used to hold alone; the name is prose, so it takes the sans face back.",
66
+ "fontFamily": "var(--jx-font-sans)",
67
+ "fontSize": "var(--jx-text-sm)",
68
+ "color": "var(--fg)"
69
+ },
70
+ "& [part=\"element-tag\"]": {
71
+ "$description": "The tag rides beside the name, dimmer, for the author who knows HTML and for the filter, which matches it too.",
72
+ "marginInlineStart": "var(--jx-space-1)",
73
+ "color": "var(--fg-dim)"
74
+ },
75
+ "& [part=\"empty-actions\"]": {
76
+ "display": "flex",
77
+ "flexWrap": "wrap",
78
+ "justifyContent": "center",
79
+ "gap": "var(--jx-space-2)"
41
80
  }
42
81
  },
43
82
  "children": [
83
+ {
84
+ "tagName": "jx-tabs",
85
+ "attributes": {
86
+ "part": "tabs",
87
+ "selected": "${state.tab}"
88
+ },
89
+ "$props": {
90
+ "label": "Insert"
91
+ },
92
+ "onchange": {
93
+ "$prototype": "Function",
94
+ "body": [
95
+ {
96
+ "operator": "call",
97
+ "target": {
98
+ "$ref": "#/state/selectTab"
99
+ },
100
+ "value": [
101
+ {
102
+ "$ref": "event#/detail"
103
+ }
104
+ ]
105
+ }
106
+ ]
107
+ },
108
+ "children": [
109
+ {
110
+ "tagName": "jx-tab",
111
+ "attributes": {
112
+ "part": "tab",
113
+ "id": "insert-tab-elements",
114
+ "data-tab": "elements",
115
+ "value": "elements",
116
+ "label": "Elements",
117
+ "panel": "insert-panel-elements"
118
+ }
119
+ },
120
+ {
121
+ "tagName": "jx-tab",
122
+ "attributes": {
123
+ "part": "tab",
124
+ "id": "insert-tab-components",
125
+ "data-tab": "components",
126
+ "value": "components",
127
+ "label": "Components",
128
+ "panel": "insert-panel-components"
129
+ }
130
+ }
131
+ ]
132
+ },
44
133
  {
45
134
  "tagName": "jx-textfield",
46
135
  "attributes": {
@@ -50,8 +139,8 @@
50
139
  "size": "sm",
51
140
  "type": "search",
52
141
  "clearable": true,
53
- "label": "Filter elements",
54
- "placeholder": "Filter elements…",
142
+ "label": "${state.filterLabel}",
143
+ "placeholder": "${state.filterLabel}…",
55
144
  "value": {
56
145
  "$ref": "#/state/filter"
57
146
  }
@@ -74,292 +163,463 @@
74
163
  }
75
164
  },
76
165
  {
77
- "tagName": "div",
166
+ "tagName": "jx-tab-panel",
78
167
  "attributes": {
79
- "part": "empty-slot",
80
- "role": "none"
168
+ "part": "panel",
169
+ "id": "insert-panel-elements",
170
+ "data-tab": "elements"
81
171
  },
82
- "style": {
83
- "display": "contents"
84
- },
85
- "$switch": {
86
- "$ref": "#/state/emptyState"
172
+ "$props": {
173
+ "active": {
174
+ "$ref": "#/state/elementsShowing"
175
+ },
176
+ "labelledby": "insert-tab-elements"
87
177
  },
88
- "cases": {
89
- "filtered": {
178
+ "children": [
179
+ {
90
180
  "tagName": "div",
91
181
  "attributes": {
92
- "part": "empty"
182
+ "part": "empty-slot",
183
+ "role": "none"
93
184
  },
94
- "children": [
95
- {
96
- "tagName": "p",
97
- "attributes": {
98
- "part": "empty-message"
99
- },
100
- "textContent": "Nothing here matches “${state.filter}”."
101
- },
102
- {
185
+ "style": {
186
+ "display": "contents"
187
+ },
188
+ "$switch": {
189
+ "$ref": "#/state/elementsEmpty"
190
+ },
191
+ "cases": {
192
+ "filtered": {
103
193
  "tagName": "div",
104
194
  "attributes": {
105
- "part": "empty-actions"
195
+ "part": "empty"
106
196
  },
107
197
  "children": [
108
198
  {
109
- "tagName": "jx-button",
110
- "$props": {
111
- "size": "sm"
112
- },
199
+ "tagName": "p",
113
200
  "attributes": {
114
- "part": "clear-filter"
201
+ "part": "empty-message"
115
202
  },
116
- "onclick": {
117
- "$prototype": "Function",
118
- "body": [
119
- {
120
- "operator": "call",
121
- "target": {
122
- "$ref": "#/state/clearFilter"
123
- }
124
- }
125
- ]
203
+ "textContent": "Nothing here matches “${state.filter}”."
204
+ },
205
+ {
206
+ "tagName": "div",
207
+ "attributes": {
208
+ "part": "empty-actions"
126
209
  },
127
210
  "children": [
128
211
  {
129
- "tagName": "span",
130
- "textContent": "Clear the filter"
212
+ "tagName": "jx-button",
213
+ "$props": {
214
+ "size": "sm"
215
+ },
216
+ "attributes": {
217
+ "part": "clear-filter"
218
+ },
219
+ "onclick": {
220
+ "$prototype": "Function",
221
+ "body": [
222
+ {
223
+ "operator": "call",
224
+ "target": {
225
+ "$ref": "#/state/clearFilter"
226
+ }
227
+ }
228
+ ]
229
+ },
230
+ "children": [
231
+ {
232
+ "tagName": "span",
233
+ "textContent": "Clear the filter"
234
+ }
235
+ ]
236
+ },
237
+ {
238
+ "tagName": "div",
239
+ "attributes": {
240
+ "part": "other-tab-slot",
241
+ "role": "none"
242
+ },
243
+ "style": {
244
+ "display": "contents"
245
+ },
246
+ "$switch": {
247
+ "$ref": "#/state/hasOtherMatches"
248
+ },
249
+ "cases": {
250
+ "true": {
251
+ "tagName": "jx-button",
252
+ "$props": {
253
+ "size": "sm"
254
+ },
255
+ "attributes": {
256
+ "part": "show-other-tab"
257
+ },
258
+ "onclick": {
259
+ "$prototype": "Function",
260
+ "body": [
261
+ {
262
+ "operator": "call",
263
+ "target": {
264
+ "$ref": "#/state/showOtherTab"
265
+ }
266
+ }
267
+ ]
268
+ },
269
+ "children": [
270
+ {
271
+ "tagName": "span",
272
+ "textContent": "${state.otherMatches}"
273
+ }
274
+ ]
275
+ }
276
+ }
131
277
  }
132
278
  ]
133
279
  }
134
280
  ]
281
+ },
282
+ "empty": {
283
+ "tagName": "div",
284
+ "attributes": {
285
+ "part": "empty"
286
+ },
287
+ "children": [
288
+ {
289
+ "tagName": "p",
290
+ "attributes": {
291
+ "part": "empty-message"
292
+ },
293
+ "textContent": "Elements you can drop onto the page live here: headings, text, images, layout containers and more."
294
+ }
295
+ ]
135
296
  }
136
- ]
297
+ }
137
298
  },
138
- "empty": {
139
- "tagName": "div",
299
+ {
300
+ "tagName": "jx-accordion",
140
301
  "attributes": {
141
- "part": "empty"
302
+ "part": "list"
142
303
  },
143
304
  "children": [
144
305
  {
145
- "tagName": "p",
146
- "attributes": {
147
- "part": "empty-message"
306
+ "$prototype": "Array",
307
+ "items": {
308
+ "$ref": "#/state/categories"
309
+ },
310
+ "key": {
311
+ "$ref": "$map/item/name"
148
312
  },
149
- "textContent": "Elements you can drop onto the page live here — text, images, layout containers and your own components."
313
+ "map": {
314
+ "tagName": "jx-accordion-item",
315
+ "$props": {
316
+ "label": {
317
+ "$ref": "$map/item/name"
318
+ },
319
+ "open": {
320
+ "$ref": "$map/item/open"
321
+ }
322
+ },
323
+ "attributes": {
324
+ "data-section": "${$map.item.key}"
325
+ },
326
+ "ontoggle": {
327
+ "$prototype": "Function",
328
+ "body": [
329
+ {
330
+ "operator": "call",
331
+ "target": {
332
+ "$ref": "#/state/setSectionOpen"
333
+ },
334
+ "value": [
335
+ {
336
+ "$ref": "$map/item/key"
337
+ },
338
+ {
339
+ "$ref": "event#/detail"
340
+ }
341
+ ]
342
+ }
343
+ ]
344
+ },
345
+ "children": [
346
+ {
347
+ "$prototype": "Array",
348
+ "items": {
349
+ "$ref": "$map/item/elements"
350
+ },
351
+ "key": {
352
+ "$ref": "$map/item/tag"
353
+ },
354
+ "map": {
355
+ "tagName": "div",
356
+ "attributes": {
357
+ "class": "element-card",
358
+ "data-block-tag": "${$map.item.tag}",
359
+ "title": "${$map.item.description}"
360
+ },
361
+ "onclick": {
362
+ "$prototype": "Function",
363
+ "body": [
364
+ {
365
+ "operator": "call",
366
+ "target": {
367
+ "$ref": "#/state/insertElement"
368
+ },
369
+ "value": [
370
+ {
371
+ "$ref": "$map/item/tag"
372
+ }
373
+ ]
374
+ }
375
+ ]
376
+ },
377
+ "children": [
378
+ {
379
+ "tagName": "div",
380
+ "attributes": {
381
+ "class": "element-card-preview"
382
+ }
383
+ },
384
+ {
385
+ "tagName": "div",
386
+ "attributes": {
387
+ "class": "element-card-label"
388
+ },
389
+ "children": [
390
+ {
391
+ "tagName": "span",
392
+ "attributes": {
393
+ "part": "element-name"
394
+ },
395
+ "textContent": "${$map.item.name}"
396
+ },
397
+ {
398
+ "tagName": "span",
399
+ "attributes": {
400
+ "part": "element-tag"
401
+ },
402
+ "textContent": "<${$map.item.tag}>"
403
+ }
404
+ ]
405
+ }
406
+ ]
407
+ }
408
+ }
409
+ ]
410
+ }
150
411
  }
151
412
  ]
152
413
  }
153
- }
414
+ ]
154
415
  },
155
416
  {
156
- "tagName": "jx-accordion",
417
+ "tagName": "jx-tab-panel",
157
418
  "attributes": {
158
- "part": "list"
419
+ "part": "panel",
420
+ "id": "insert-panel-components",
421
+ "data-tab": "components"
422
+ },
423
+ "$props": {
424
+ "active": {
425
+ "$ref": "#/state/componentsShowing"
426
+ },
427
+ "labelledby": "insert-tab-components"
159
428
  },
160
429
  "children": [
161
430
  {
162
431
  "tagName": "div",
163
432
  "attributes": {
164
- "part": "components-slot",
165
- "role": "none",
166
- "hidden": "${state.hasComponents ? null : ''}"
433
+ "part": "empty-slot",
434
+ "role": "none"
167
435
  },
168
436
  "style": {
169
- "$description": "The section stands or falls as a whole, so the slot is `display: contents` — the accordion item inside it has to be the accordion's own layout child. `hidden` is what keeps the separator honest: `jx-accordion` gives a top border to every child that FOLLOWS a visible one, so an empty slot left visible would draw a line above the first category with nothing above it.",
170
437
  "display": "contents"
171
438
  },
172
439
  "$switch": {
173
- "$ref": "#/state/hasComponents"
440
+ "$ref": "#/state/componentsEmpty"
174
441
  },
175
442
  "cases": {
176
- "true": {
177
- "tagName": "jx-accordion-item",
178
- "$props": {
179
- "label": "Components",
180
- "open": {
181
- "$ref": "#/state/componentsOpen"
182
- }
183
- },
443
+ "filtered": {
444
+ "tagName": "div",
184
445
  "attributes": {
185
- "data-section": "components"
186
- },
187
- "ontoggle": {
188
- "$prototype": "Function",
189
- "body": [
190
- {
191
- "operator": "call",
192
- "target": {
193
- "$ref": "#/state/setComponentsOpen"
194
- },
195
- "value": [
196
- {
197
- "$ref": "event#/detail"
198
- }
199
- ]
200
- }
201
- ]
446
+ "part": "empty"
202
447
  },
203
448
  "children": [
449
+ {
450
+ "tagName": "p",
451
+ "attributes": {
452
+ "part": "empty-message"
453
+ },
454
+ "textContent": "Nothing here matches “${state.filter}”."
455
+ },
204
456
  {
205
457
  "tagName": "div",
206
458
  "attributes": {
207
- "class": "components-section"
459
+ "part": "empty-actions"
208
460
  },
209
461
  "children": [
210
462
  {
211
- "$prototype": "Array",
212
- "items": {
213
- "$ref": "#/state/components"
463
+ "tagName": "jx-button",
464
+ "$props": {
465
+ "size": "sm"
214
466
  },
215
- "key": {
216
- "$ref": "$map/item/tagName"
467
+ "attributes": {
468
+ "part": "clear-filter"
217
469
  },
218
- "map": {
219
- "tagName": "div",
220
- "attributes": {
221
- "class": "element-card",
222
- "data-component-tag": "${$map.item.tagName}",
223
- "title": "${$map.item.title}"
224
- },
225
- "onclick": {
226
- "$prototype": "Function",
227
- "body": [
228
- {
229
- "operator": "call",
230
- "target": {
231
- "$ref": "#/state/insertComponent"
232
- },
233
- "value": [
234
- {
235
- "$ref": "$map/item/tagName"
236
- }
237
- ]
238
- }
239
- ]
240
- },
241
- "children": [
470
+ "onclick": {
471
+ "$prototype": "Function",
472
+ "body": [
242
473
  {
243
- "tagName": "div",
244
- "attributes": {
245
- "class": "element-card-preview"
246
- },
247
- "children": [
474
+ "operator": "call",
475
+ "target": {
476
+ "$ref": "#/state/clearFilter"
477
+ }
478
+ }
479
+ ]
480
+ },
481
+ "children": [
482
+ {
483
+ "tagName": "span",
484
+ "textContent": "Clear the filter"
485
+ }
486
+ ]
487
+ },
488
+ {
489
+ "tagName": "div",
490
+ "attributes": {
491
+ "part": "other-tab-slot",
492
+ "role": "none"
493
+ },
494
+ "style": {
495
+ "display": "contents"
496
+ },
497
+ "$switch": {
498
+ "$ref": "#/state/hasOtherMatches"
499
+ },
500
+ "cases": {
501
+ "true": {
502
+ "tagName": "jx-button",
503
+ "$props": {
504
+ "size": "sm"
505
+ },
506
+ "attributes": {
507
+ "part": "show-other-tab"
508
+ },
509
+ "onclick": {
510
+ "$prototype": "Function",
511
+ "body": [
248
512
  {
249
- "tagName": "span",
250
- "attributes": {
251
- "part": "component-tag"
252
- },
253
- "textContent": "<${$map.item.tagName}>"
513
+ "operator": "call",
514
+ "target": {
515
+ "$ref": "#/state/showOtherTab"
516
+ }
254
517
  }
255
518
  ]
256
519
  },
257
- {
258
- "tagName": "div",
259
- "attributes": {
260
- "class": "element-card-label"
261
- },
262
- "textContent": "${$map.item.tagName}"
263
- }
264
- ]
520
+ "children": [
521
+ {
522
+ "tagName": "span",
523
+ "textContent": "${state.otherMatches}"
524
+ }
525
+ ]
526
+ }
265
527
  }
266
528
  }
267
529
  ]
268
530
  }
269
531
  ]
532
+ },
533
+ "empty": {
534
+ "tagName": "div",
535
+ "attributes": {
536
+ "part": "empty"
537
+ },
538
+ "children": [
539
+ {
540
+ "tagName": "p",
541
+ "attributes": {
542
+ "part": "empty-message"
543
+ },
544
+ "textContent": "Components you make live here. Right-click a block and choose Convert to Component, or create one with Add new."
545
+ }
546
+ ]
270
547
  }
271
548
  }
272
549
  },
273
550
  {
274
- "$prototype": "Array",
275
- "items": {
276
- "$ref": "#/state/categories"
277
- },
278
- "key": {
279
- "$ref": "$map/item/name"
551
+ "tagName": "div",
552
+ "attributes": {
553
+ "class": "components-section",
554
+ "part": "components-section"
280
555
  },
281
- "map": {
282
- "tagName": "jx-accordion-item",
283
- "$props": {
284
- "label": {
285
- "$ref": "$map/item/name"
556
+ "children": [
557
+ {
558
+ "$prototype": "Array",
559
+ "items": {
560
+ "$ref": "#/state/components"
286
561
  },
287
- "open": {
288
- "$ref": "$map/item/open"
289
- }
290
- },
291
- "attributes": {
292
- "data-section": "${$map.item.name}"
293
- },
294
- "ontoggle": {
295
- "$prototype": "Function",
296
- "body": [
297
- {
298
- "operator": "call",
299
- "target": {
300
- "$ref": "#/state/setSectionOpen"
301
- },
302
- "value": [
303
- {
304
- "$ref": "$map/item/name"
305
- },
562
+ "key": {
563
+ "$ref": "$map/item/tagName"
564
+ },
565
+ "map": {
566
+ "tagName": "div",
567
+ "attributes": {
568
+ "class": "element-card",
569
+ "data-component-tag": "${$map.item.tagName}",
570
+ "title": "${$map.item.title}"
571
+ },
572
+ "onclick": {
573
+ "$prototype": "Function",
574
+ "body": [
306
575
  {
307
- "$ref": "event#/detail"
576
+ "operator": "call",
577
+ "target": {
578
+ "$ref": "#/state/insertComponent"
579
+ },
580
+ "value": [
581
+ {
582
+ "$ref": "$map/item/tagName"
583
+ }
584
+ ]
308
585
  }
309
586
  ]
310
- }
311
- ]
312
- },
313
- "children": [
314
- {
315
- "$prototype": "Array",
316
- "items": {
317
- "$ref": "$map/item/elements"
318
- },
319
- "key": {
320
- "$ref": "$map/item/tag"
321
587
  },
322
- "map": {
323
- "tagName": "div",
324
- "attributes": {
325
- "class": "element-card",
326
- "data-block-tag": "${$map.item.tag}"
327
- },
328
- "onclick": {
329
- "$prototype": "Function",
330
- "body": [
588
+ "children": [
589
+ {
590
+ "tagName": "div",
591
+ "attributes": {
592
+ "class": "element-card-preview"
593
+ },
594
+ "children": [
331
595
  {
332
- "operator": "call",
333
- "target": {
334
- "$ref": "#/state/insertElement"
596
+ "tagName": "span",
597
+ "attributes": {
598
+ "part": "component-tag"
335
599
  },
336
- "value": [
337
- {
338
- "$ref": "$map/item/tag"
339
- }
340
- ]
600
+ "textContent": "<${$map.item.tagName}>"
341
601
  }
342
602
  ]
343
603
  },
344
- "children": [
345
- {
346
- "tagName": "div",
347
- "attributes": {
348
- "class": "element-card-preview"
349
- }
604
+ {
605
+ "tagName": "div",
606
+ "attributes": {
607
+ "class": "element-card-label"
350
608
  },
351
- {
352
- "tagName": "div",
353
- "attributes": {
354
- "class": "element-card-label"
355
- },
356
- "textContent": "<${$map.item.tag}>"
357
- }
358
- ]
359
- }
609
+ "children": [
610
+ {
611
+ "tagName": "span",
612
+ "attributes": {
613
+ "part": "element-name"
614
+ },
615
+ "textContent": "${$map.item.tagName}"
616
+ }
617
+ ]
618
+ }
619
+ ]
360
620
  }
361
- ]
362
- }
621
+ }
622
+ ]
363
623
  }
364
624
  ]
365
625
  }