@jxsuite/studio 8.0.1 → 9.0.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 (282) hide show
  1. package/dist/chunks/{2020-5wtzce5g.js → 2020-89fz3pfy.js} +3 -3
  2. package/dist/chunks/adapter-ay13gema.js +4 -0
  3. package/dist/chunks/add-new-flow-nmkqpjym.js +4 -0
  4. package/dist/chunks/cf-account-picker-2e06qxey.js +4 -0
  5. package/dist/chunks/cf-settings-5y04810c.js +4 -0
  6. package/dist/chunks/color-04361ttk.js +4 -0
  7. package/dist/chunks/{color-area-6rbra5dy.js → color-area-h8dbasp1.js} +2 -2
  8. package/dist/chunks/{color-field-gy56c94g.js → color-field-qv5r2b16.js} +3 -3
  9. package/dist/chunks/{color-slider-sqqdyf6c.js → color-slider-nz2mrzky.js} +2 -2
  10. package/dist/chunks/{combobox-72h32ejk.js → combobox-6hs00996.js} +2 -2
  11. package/dist/chunks/components-3vf75n83.js +4 -0
  12. package/dist/chunks/content-source-4f2raf4a.js +4 -0
  13. package/dist/chunks/{convert-to-repeater-he70fc2b.js → convert-to-repeater-j9hfcj4f.js} +3 -3
  14. package/dist/chunks/editor-645krvtz.js +4 -0
  15. package/dist/chunks/entry-commands-3qmv8wkr.js +4 -0
  16. package/dist/chunks/{extension-sections-0egb88dm.js → extension-sections-thfke054.js} +3 -3
  17. package/dist/chunks/file-ops-kkhp9ma7.js +4 -0
  18. package/dist/chunks/files-yswdhxrf.js +4 -0
  19. package/dist/chunks/format-host-4g8ex6bz.js +4 -0
  20. package/dist/chunks/fs-events-z9gpvc6t.js +4 -0
  21. package/dist/chunks/grid-open-fm4j183c.js +4 -0
  22. package/dist/chunks/{grid-view-qg1b5eqx.js → grid-view-7d2nx83y.js} +16 -15
  23. package/dist/chunks/{icons-63bjtbs7.js → icons-853n6qt3.js} +2 -2
  24. package/dist/chunks/{iframe-entry-pkgmcgp0.js → iframe-entry-2x9bn5ng.js} +4 -4
  25. package/dist/chunks/{iframe-entry-99nr5zfb.js → iframe-entry-42hpmwz5.js} +4 -4
  26. package/dist/chunks/{iframe-entry-76j8vwwx.js → iframe-entry-b5qgggyp.js} +2 -2
  27. package/dist/chunks/{iframe-entry-2zggzajv.js → iframe-entry-btck0e9s.js} +4 -4
  28. package/dist/chunks/iframe-host-q7fedsmr.js +4 -0
  29. package/dist/chunks/{index-32eqzv1k.js → index-jxmt7vh8.js} +3 -3
  30. package/dist/chunks/index-pt4wh98x.js +4 -0
  31. package/dist/chunks/{javascript-pjp734q4.js → javascript-vmqp56ke.js} +2 -2
  32. package/dist/chunks/{jsonMode-njkvsa02.js → jsonMode-n3wmpant.js} +5 -5
  33. package/dist/chunks/jx-validate-19y62knt.js +4 -0
  34. package/dist/chunks/layers-panel-1qvc83y9.js +4 -0
  35. package/dist/chunks/layers-qf0bc7ze.js +4 -0
  36. package/dist/chunks/{listbox-c421cf8c.js → listbox-7gka1h86.js} +2 -2
  37. package/dist/chunks/lit-html-wyqw04y2.js +4 -0
  38. package/dist/chunks/media-library-f9d5qcjb.js +4 -0
  39. package/dist/chunks/media-picker-rsb1fmk2.js +4 -0
  40. package/dist/chunks/{menu-bdpzbfvs.js → menu-d2jxpgma.js} +2 -2
  41. package/dist/chunks/{monaco-binding-vq1hgnn0.js → monaco-binding-wfhmz89d.js} +3 -3
  42. package/dist/chunks/monaco-buffer-ak0raadw.js +4 -0
  43. package/dist/chunks/{monaco-setup-xrd2cbkp.js → monaco-setup-fty7a8vg.js} +3 -3
  44. package/dist/chunks/notify-4qj70q0x.js +4 -0
  45. package/dist/chunks/parse-n8dfxnqf.js +4 -0
  46. package/dist/chunks/platform-ehg6t9vd.js +4 -0
  47. package/dist/chunks/{popover-b89sfej7.js → popover-9tf4cjrk.js} +2 -2
  48. package/dist/chunks/publish-panel-yhmda3cd.js +4 -0
  49. package/dist/chunks/{publish-quick-qx2455cj.js → publish-quick-12hh8926.js} +3 -3
  50. package/dist/chunks/publish-workspace-hx8qdv9p.js +4 -0
  51. package/dist/chunks/quick-search-r955m3q1.js +4 -0
  52. package/dist/chunks/references-8gxv0x7t.js +4 -0
  53. package/dist/chunks/right-panel-jarwqjpy.js +4 -0
  54. package/dist/chunks/source-control-84qt25m9.js +4 -0
  55. package/dist/chunks/{split-c9zfdgxf.js → split-m5rwn31z.js} +2 -2
  56. package/dist/chunks/studio-0nefxhar.js +7 -0
  57. package/dist/chunks/studio-0rg30pvs.js +5 -0
  58. package/dist/chunks/{studio-s32578pn.js → studio-14hh60j8.js} +4 -4
  59. package/dist/chunks/studio-1cfyd1ys.js +5 -0
  60. package/dist/chunks/studio-2bq7hheq.js +5 -0
  61. package/dist/chunks/{studio-zz9qe3rw.js → studio-32d8wyxq.js} +37 -37
  62. package/dist/chunks/studio-3hpcawh8.js +4 -0
  63. package/dist/chunks/{studio-svb7yyve.js → studio-4j35hgsw.js} +4 -4
  64. package/dist/chunks/{studio-x1x167jh.js → studio-4qg61g9j.js} +4 -4
  65. package/dist/chunks/studio-4rgem12q.js +5 -0
  66. package/dist/chunks/studio-6k9djnxw.js +5 -0
  67. package/dist/chunks/studio-6rbaedw2.js +9 -0
  68. package/dist/chunks/studio-732mw0g8.js +5 -0
  69. package/dist/chunks/studio-79r8msnr.js +7 -0
  70. package/dist/chunks/studio-7q6jdd4h.js +5 -0
  71. package/dist/chunks/{studio-r5qy30vx.js → studio-8hf8qcm1.js} +4 -4
  72. package/dist/chunks/{studio-8tr6cfrc.js → studio-8pne0rx4.js} +4 -4
  73. package/dist/chunks/{studio-y0n7yxea.js → studio-9179bsm7.js} +7 -7
  74. package/dist/chunks/{studio-pbxa5fpc.js → studio-9ff0vqff.js} +3 -3
  75. package/dist/chunks/studio-9gzvypw4.js +5 -0
  76. package/dist/chunks/studio-9ndgd55w.js +5 -0
  77. package/dist/chunks/studio-9ra9e7m4.js +5 -0
  78. package/dist/chunks/studio-a6e5fzve.js +5 -0
  79. package/dist/chunks/studio-a9k86nq6.js +5 -0
  80. package/dist/chunks/studio-ae7a69jc.js +6 -0
  81. package/dist/chunks/studio-aghsg0ds.js +7 -0
  82. package/dist/chunks/{studio-k3xxbagr.js → studio-ajw4k8hp.js} +3 -3
  83. package/dist/chunks/{studio-qmn1xc24.js → studio-apapy17g.js} +4 -4
  84. package/dist/chunks/{studio-8m0y2qe7.js → studio-by8x0jvc.js} +4 -4
  85. package/dist/chunks/{studio-wbcjbhy1.js → studio-c88gq88j.js} +5 -5
  86. package/dist/chunks/{studio-n0c5h6mf.js → studio-cg54vtet.js} +4 -4
  87. package/dist/chunks/studio-dvhxxxbd.js +5 -0
  88. package/dist/chunks/{studio-3q40e3rj.js → studio-e4rq6x0q.js} +4 -4
  89. package/dist/chunks/{studio-fbhxxc5f.js → studio-ekzbgnjp.js} +4 -4
  90. package/dist/chunks/studio-fg4fj9ec.js +10 -0
  91. package/dist/chunks/studio-fj6jzgxw.js +5 -0
  92. package/dist/chunks/{studio-nh6d342n.js → studio-g45r5vm8.js} +7 -7
  93. package/dist/chunks/{studio-a2bvaptz.js → studio-gczve8zf.js} +4 -4
  94. package/dist/chunks/studio-ge08zwpv.js +5 -0
  95. package/dist/chunks/studio-gk9yk8dj.js +12 -0
  96. package/dist/chunks/{studio-bbe4c90a.js → studio-gskkgfe3.js} +4 -4
  97. package/dist/chunks/{studio-83mk4bgg.js → studio-h4jbgne2.js} +8 -8
  98. package/dist/chunks/{studio-b7y5mr30.js → studio-hcy9zeac.js} +4 -4
  99. package/dist/chunks/studio-ht81xjkr.js +5 -0
  100. package/dist/chunks/{studio-jaaz8ce9.js → studio-jr30g4ae.js} +4 -4
  101. package/dist/chunks/{studio-qgh13jtz.js → studio-k5n4es74.js} +4 -4
  102. package/dist/chunks/{studio-ccv2svc6.js → studio-k6hbx2fc.js} +4 -4
  103. package/dist/chunks/{studio-9tmebf0s.js → studio-kqh7fxn6.js} +4 -4
  104. package/dist/chunks/{studio-q0mvbaq6.js → studio-kyw47pet.js} +4 -4
  105. package/dist/chunks/studio-mkw17ngg.js +5 -0
  106. package/dist/chunks/{studio-x9hsze61.js → studio-myb4mf0h.js} +4 -4
  107. package/dist/chunks/studio-n4qq1n57.js +5 -0
  108. package/dist/chunks/studio-nfmpmkqb.js +5 -0
  109. package/dist/chunks/studio-nfwacw31.js +5 -0
  110. package/dist/chunks/{studio-rthyg42z.js → studio-nm86874b.js} +172 -172
  111. package/dist/chunks/studio-nqexty8x.js +16 -0
  112. package/dist/chunks/studio-nr0kcqc6.js +5 -0
  113. package/dist/chunks/{studio-jsgf2q5k.js → studio-nvfa137z.js} +5 -5
  114. package/dist/chunks/studio-psh8mwnw.js +4 -0
  115. package/dist/chunks/studio-qd0cycm4.js +9 -0
  116. package/dist/chunks/{studio-tfkznv39.js → studio-qevf5z9d.js} +4 -4
  117. package/dist/chunks/studio-qs5fmhtj.js +14 -0
  118. package/dist/chunks/studio-ry4789ng.js +7 -0
  119. package/dist/chunks/studio-s4fq9jht.js +5 -0
  120. package/dist/chunks/studio-sc35ttdk.js +5 -0
  121. package/dist/chunks/studio-sm2f0sc6.js +6 -0
  122. package/dist/chunks/{studio-3qeh9t0h.js → studio-spza69tb.js} +5 -5
  123. package/dist/chunks/studio-t6dqnnft.js +5 -0
  124. package/dist/chunks/{studio-43sd2mam.js → studio-tfmhnwyr.js} +3 -3
  125. package/dist/chunks/studio-tn7v8gey.js +6 -0
  126. package/dist/chunks/{studio-tft6r105.js → studio-trcfer2b.js} +4 -4
  127. package/dist/chunks/studio-tyw7tk0x.js +5 -0
  128. package/dist/chunks/{studio-jcnsdaep.js → studio-tyzgte21.js} +4 -4
  129. package/dist/chunks/studio-vtey9w98.js +5 -0
  130. package/dist/chunks/studio-ws2r1d7e.js +5 -0
  131. package/dist/chunks/studio-x2trkhk5.js +5 -0
  132. package/dist/chunks/{studio-mn0476ag.js → studio-xzgp0cp7.js} +4 -4
  133. package/dist/chunks/studio-y47090vq.js +5 -0
  134. package/dist/chunks/{studio-5g0rprdt.js → studio-yjh9gddd.js} +5 -5
  135. package/dist/chunks/studio-ywf9y1e2.js +5 -0
  136. package/dist/chunks/{studio-k7evxqh4.js → studio-z1p91z5a.js} +4 -4
  137. package/dist/chunks/studio-ztppbam0.js +5 -0
  138. package/dist/chunks/{toast-host-1yg5ar8d.js → toast-host-g3r2s0kn.js} +2 -2
  139. package/dist/chunks/toast-w11qpkyz.js +4 -0
  140. package/dist/chunks/{tooltip-yypz28gq.js → tooltip-dj1pvgz7.js} +2 -2
  141. package/dist/chunks/{tree-9xa4hm7n.js → tree-j0ebwr5s.js} +2 -2
  142. package/dist/chunks/{tsMode-epyfz1hv.js → tsMode-byje4a01.js} +5 -5
  143. package/dist/chunks/workspace-7q4arnt3.js +4 -0
  144. package/dist/chunks/workspace-home-ge027kr6.js +4 -0
  145. package/dist/chunks/{ws-client-bv552sfx.js → ws-client-h09h6sqg.js} +3 -3
  146. package/dist/iframe-entry.js +14 -14
  147. package/dist/manifest.json +76 -76
  148. package/dist/studio.js +88 -88
  149. package/package.json +15 -16
  150. package/src/browse/component-examples.ts +15 -224
  151. package/src/browse/library-preview.ts +6 -13
  152. package/src/browse/preview-root.ts +7 -4
  153. package/src/canvas/canvas-utils.ts +18 -4
  154. package/src/canvas/iframe-editable-root.ts +13 -4
  155. package/src/canvas/iframe-entry.ts +3 -1
  156. package/src/canvas/iframe-interaction.ts +11 -2
  157. package/src/canvas/iframe-render.ts +25 -3
  158. package/src/canvas/preview-placeholder.ts +120 -0
  159. package/src/collab/collab-session.ts +6 -2
  160. package/src/commands/context.ts +4 -0
  161. package/src/commands/defaults.ts +2 -0
  162. package/src/commands/live-context.ts +2 -0
  163. package/src/editor/shortcuts.ts +3 -0
  164. package/src/files/files.ts +6 -3
  165. package/src/new-project/new-project-modal.ts +1 -4
  166. package/src/panels/ai-panel.ts +27 -34
  167. package/src/panels/component-preview.ts +5 -0
  168. package/src/panels/pane-context.ts +43 -18
  169. package/src/panels/site-model.ts +7 -19
  170. package/src/panels/site-panel.ts +2 -25
  171. package/src/panels/stylebook-doc.ts +2 -53
  172. package/src/platform.ts +20 -0
  173. package/src/platforms/devserver.ts +2 -120
  174. package/src/services/ai-ask.ts +29 -171
  175. package/src/services/ai-command-tools.ts +40 -50
  176. package/src/services/ai-import-tools.ts +4 -5
  177. package/src/services/ai-project-tools.ts +13 -3
  178. package/src/services/ai-tools.ts +26 -564
  179. package/src/services/ai-writes.ts +84 -2
  180. package/src/services/document-assistant.ts +29 -58
  181. package/src/services/harness/assistant-tools.ts +68 -0
  182. package/src/services/harness/interaction-store.ts +118 -0
  183. package/src/services/harness/studio-documents.ts +105 -0
  184. package/src/services/harness/turn-hooks.ts +1 -6
  185. package/src/services/project-adoption.ts +8 -16
  186. package/src/services/references.ts +0 -0
  187. package/src/services/tool-executor.ts +25 -22
  188. package/src/state.ts +3 -13
  189. package/src/style/stylebook-specimens.ts +11 -15
  190. package/src/surfaces/files-panel.json +12 -0
  191. package/src/surfaces/files-panel.ts +5 -2
  192. package/src/surfaces/pane-context.json +286 -265
  193. package/src/surfaces/pane-context.ts +17 -8
  194. package/src/surfaces/welcome.ts +4 -1
  195. package/src/tabs/selection.ts +14 -109
  196. package/src/tabs/tab.ts +15 -7
  197. package/src/tabs/transact.ts +316 -124
  198. package/src/types.ts +13 -8
  199. package/src/utils/geometry.ts +49 -2
  200. package/dist/chunks/adapter-5tphg7xe.js +0 -4
  201. package/dist/chunks/add-new-flow-psym14sn.js +0 -4
  202. package/dist/chunks/cf-account-picker-haqazq5r.js +0 -4
  203. package/dist/chunks/cf-settings-h2wrh6hq.js +0 -4
  204. package/dist/chunks/color-m7r1vk54.js +0 -4
  205. package/dist/chunks/components-r22xca09.js +0 -4
  206. package/dist/chunks/content-source-mmppmcyg.js +0 -4
  207. package/dist/chunks/editor-ccd9jwsa.js +0 -4
  208. package/dist/chunks/entry-commands-6qxz9e8p.js +0 -4
  209. package/dist/chunks/file-ops-qnab36ek.js +0 -4
  210. package/dist/chunks/files-rcn56qvm.js +0 -4
  211. package/dist/chunks/format-host-yxz0kjjs.js +0 -4
  212. package/dist/chunks/fs-events-d1qxq4z4.js +0 -4
  213. package/dist/chunks/grid-open-4z1g062t.js +0 -4
  214. package/dist/chunks/iframe-host-ssv7kyj0.js +0 -4
  215. package/dist/chunks/index-f0jn7nnp.js +0 -4
  216. package/dist/chunks/jx-validate-ttasrbh7.js +0 -4
  217. package/dist/chunks/layers-bgyr11tr.js +0 -4
  218. package/dist/chunks/layers-panel-7ez66zeq.js +0 -4
  219. package/dist/chunks/lit-html-v9gh687x.js +0 -4
  220. package/dist/chunks/media-library-sq468wts.js +0 -4
  221. package/dist/chunks/media-picker-shfe59pt.js +0 -4
  222. package/dist/chunks/monaco-buffer-3afgwvbp.js +0 -4
  223. package/dist/chunks/notify-kzrjr3fv.js +0 -4
  224. package/dist/chunks/parse-v77xtwv7.js +0 -4
  225. package/dist/chunks/platform-7v4rtd7m.js +0 -4
  226. package/dist/chunks/publish-panel-2z9gw8ee.js +0 -4
  227. package/dist/chunks/publish-workspace-wrc1dgwx.js +0 -4
  228. package/dist/chunks/quick-search-n0t0eqxb.js +0 -4
  229. package/dist/chunks/references-9547rg5s.js +0 -4
  230. package/dist/chunks/right-panel-wsgnr9pn.js +0 -4
  231. package/dist/chunks/source-control-kwktr9y6.js +0 -4
  232. package/dist/chunks/studio-03ct6yfv.js +0 -9
  233. package/dist/chunks/studio-07rcfje3.js +0 -5
  234. package/dist/chunks/studio-3e54qh39.js +0 -7
  235. package/dist/chunks/studio-3exxhz5g.js +0 -5
  236. package/dist/chunks/studio-3qqjeep5.js +0 -6
  237. package/dist/chunks/studio-4hp8pkyt.js +0 -5
  238. package/dist/chunks/studio-58xg6j2q.js +0 -9
  239. package/dist/chunks/studio-6m380wp7.js +0 -5
  240. package/dist/chunks/studio-80jyh1xh.js +0 -4
  241. package/dist/chunks/studio-8vcvfs7r.js +0 -6
  242. package/dist/chunks/studio-bavb31r0.js +0 -5
  243. package/dist/chunks/studio-c05wdnt3.js +0 -5
  244. package/dist/chunks/studio-d5grtb9e.js +0 -16
  245. package/dist/chunks/studio-df0baea9.js +0 -5
  246. package/dist/chunks/studio-dgk4dqtx.js +0 -7
  247. package/dist/chunks/studio-e1g64q43.js +0 -5
  248. package/dist/chunks/studio-ed1hp6zf.js +0 -6
  249. package/dist/chunks/studio-ed3xx40h.js +0 -7
  250. package/dist/chunks/studio-f14e1zdj.js +0 -5
  251. package/dist/chunks/studio-fyh0jc96.js +0 -5
  252. package/dist/chunks/studio-gcxk20n7.js +0 -5
  253. package/dist/chunks/studio-kt3pjkwd.js +0 -5
  254. package/dist/chunks/studio-m8g16bgz.js +0 -5
  255. package/dist/chunks/studio-mx1smyq0.js +0 -5
  256. package/dist/chunks/studio-nqxqf8p2.js +0 -4
  257. package/dist/chunks/studio-p4nrkvqr.js +0 -5
  258. package/dist/chunks/studio-pgmvdv7z.js +0 -7
  259. package/dist/chunks/studio-ph84avkf.js +0 -5
  260. package/dist/chunks/studio-q0tccd43.js +0 -5
  261. package/dist/chunks/studio-q7rtx6zq.js +0 -14
  262. package/dist/chunks/studio-qwdqwkj0.js +0 -5
  263. package/dist/chunks/studio-rj9eamf8.js +0 -5
  264. package/dist/chunks/studio-rptgsk96.js +0 -5
  265. package/dist/chunks/studio-s19tp1xr.js +0 -5
  266. package/dist/chunks/studio-syreb644.js +0 -5
  267. package/dist/chunks/studio-tf9jryb1.js +0 -10
  268. package/dist/chunks/studio-txf2kysx.js +0 -5
  269. package/dist/chunks/studio-v8867ddv.js +0 -12
  270. package/dist/chunks/studio-vxq7fcvv.js +0 -5
  271. package/dist/chunks/studio-w4rz9hdk.js +0 -5
  272. package/dist/chunks/studio-wc649wss.js +0 -5
  273. package/dist/chunks/studio-wys23mxz.js +0 -5
  274. package/dist/chunks/studio-y3ahhdpx.js +0 -5
  275. package/dist/chunks/studio-z97c48fk.js +0 -5
  276. package/dist/chunks/studio-zat62m0c.js +0 -5
  277. package/dist/chunks/studio-zcd2e7yz.js +0 -5
  278. package/dist/chunks/toast-1gv0h53h.js +0 -4
  279. package/dist/chunks/workspace-dz7nxfhv.js +0 -4
  280. package/dist/chunks/workspace-home-xsd7hkjw.js +0 -4
  281. package/src/services/directory-picker.ts +0 -187
  282. package/src/services/gated-registry.ts +0 -77
@@ -26,15 +26,14 @@
26
26
  "overflow": "hidden"
27
27
  },
28
28
  "& [part=\"spacer\"]": {
29
- "$description": "What pushes the three axes right, and where §18.4's preset trigger goes. It stays in a lens, which draws no trigger: dropping it would move the one control a lens does draw.",
29
+ "$description": "What pushes the other axes right, and where Back, the Editor axis and §18.4's preset trigger go. It stays in a lens, which draws no trigger: dropping it would move the one control a lens does draw. It grows but never shrinks below what it holds: at `min-width: 0` a narrow pane squeezed it under its own Editor segments, which then painted over the View and Context axes; now the bar's `overflow: hidden` clips at the trailing end instead.",
30
30
  "display": "flex",
31
- "flex": "1",
31
+ "flex": "1 0 auto",
32
32
  "alignItems": "center",
33
- "minWidth": "0"
33
+ "gap": "var(--jx-space-2)"
34
34
  },
35
35
  "& [part=\"back\"]": {
36
- "flexShrink": "0",
37
- "marginInlineEnd": "var(--jx-space-2)"
36
+ "flexShrink": "0"
38
37
  },
39
38
  "& [part=\"axis\"]": {
40
39
  "display": "flex",
@@ -56,8 +55,8 @@
56
55
  "whiteSpace": "nowrap"
57
56
  },
58
57
  "& [part=\"editor-kind\"]": {
59
- "$description": "Capped so a long document name cannot push an axis off the end of a 28px band.",
60
- "maxWidth": "140px"
58
+ "$description": "A segmented strip that holds its width: the spacer it sits in is what gives way.",
59
+ "flexShrink": "0"
61
60
  },
62
61
  "& [part=\"views\"]": {
63
62
  "flexShrink": "0"
@@ -78,9 +77,6 @@
78
77
  "fontVariantNumeric": "tabular-nums",
79
78
  "flexShrink": "0"
80
79
  },
81
- "& [part=\"context-trigger-caret\"]": {
82
- "--jx-icon-size": "12px"
83
- },
84
80
  "& [part=\"resolving-trigger-caret\"]": {
85
81
  "--jx-icon-size": "12px"
86
82
  },
@@ -155,12 +151,12 @@
155
151
  "letterSpacing": "0.04em",
156
152
  "color": "var(--fg-dim)"
157
153
  },
158
- "& [part=\"sizes\"], & [part=\"features\"]": {
159
- "$description": "The two groups that WRAP, and the reason neither is a segmented control. A breakpoint or feature list is as long as the project makes it and this popover is a 240–340px column, so both fold onto a second line in any project with more than a few; a compact group cannot draw that — its seam is written in tree order, no selector can find the ends of a flex line, and it therefore refuses to wrap and would overflow the column instead (ui.md §5.4). Chips instead: each member draws its own rounded frame (`quiet: false`, since the group no longer frames it) and the chosen one takes the accent edge below. The gap is --jx-space-2 rather than the group's own 2px, which puts every small chip's hit area at the 24px floor on both axes instead of the 22px two overlapping extensions leave (§4.3).",
154
+ "& [part=\"features\"]": {
155
+ "$description": "The group that WRAPS, and the reason it is not a segmented control. A feature list is as long as the project makes it and this popover is a 240–340px column, so it folds onto a second line in any project with more than a few; a compact group cannot draw that — its seam is written in tree order, no selector can find the ends of a flex line, and it therefore refuses to wrap and would overflow the column instead (ui.md §5.4). Chips instead: each member draws its own rounded frame (`quiet: false`, since the group no longer frames it) and the chosen one takes the accent edge below. The gap is --jx-space-2 rather than the group's own 2px, which puts every small chip's hit area at the 24px floor on both axes instead of the 22px two overlapping extensions leave (§4.3). The size list used to wrap here beside it; it is a segmented group on the bar now, which clips at its trailing end rather than wrapping.",
160
156
  "flexWrap": "wrap",
161
157
  "gap": "var(--jx-space-2)"
162
158
  },
163
- "& [part=\"sizes-item\"][data-selected] > [part=\"control\"], & [part=\"features-item\"][data-selected] > [part=\"control\"]": {
159
+ "& [part=\"features-item\"][data-selected] > [part=\"control\"]": {
164
160
  "$description": "A chosen chip reads the way a chosen segment does: the accent tint with an accent EDGE. A member's own selected state is a 15% tint over its neutral border, which among framed neighbours reads as a faint wash rather than as the one that is on — the measurement that gave the compact group its selected rule, restated here at the one place the group does not draw it. (0,4,0) over the member's own (0,3,0).",
165
161
  "borderColor": "var(--jx-accent)",
166
162
  "background": "var(--jx-accent-20)"
@@ -196,6 +192,10 @@
196
192
  },
197
193
  "& [part=\"manage\"]:hover": {
198
194
  "textDecoration": "underline"
195
+ },
196
+ "& [part=\"sizes\"], & [part=\"schemes\"]": {
197
+ "$description": "Segmented strips that hold their width; the bar clips at its trailing end rather than squeezing a segment.",
198
+ "flexShrink": "0"
199
199
  }
200
200
  },
201
201
  "children": [
@@ -266,6 +266,121 @@
266
266
  }
267
267
  }
268
268
  },
269
+ {
270
+ "tagName": "div",
271
+ "attributes": {
272
+ "part": "editor-axis-slot",
273
+ "role": "none"
274
+ },
275
+ "style": {
276
+ "display": "contents"
277
+ },
278
+ "$switch": {
279
+ "$ref": "#/state/editorState"
280
+ },
281
+ "cases": {
282
+ "shown": {
283
+ "tagName": "div",
284
+ "attributes": {
285
+ "part": "axis",
286
+ "data-axis": "editor"
287
+ },
288
+ "children": [
289
+ {
290
+ "tagName": "span",
291
+ "attributes": {
292
+ "part": "axis-label"
293
+ },
294
+ "textContent": "Editor"
295
+ },
296
+ {
297
+ "tagName": "div",
298
+ "attributes": {
299
+ "part": "editor-slot",
300
+ "role": "none"
301
+ },
302
+ "style": {
303
+ "display": "contents"
304
+ },
305
+ "$switch": {
306
+ "$ref": "#/state/editorMode"
307
+ },
308
+ "cases": {
309
+ "static": {
310
+ "tagName": "span",
311
+ "attributes": {
312
+ "part": "static",
313
+ "data-static": "editor"
314
+ },
315
+ "textContent": "${state.editorLabel}"
316
+ },
317
+ "picker": {
318
+ "tagName": "jx-action-group",
319
+ "attributes": {
320
+ "part": "editor-kind"
321
+ },
322
+ "$props": {
323
+ "selects": "single",
324
+ "compact": true,
325
+ "label": "Editor"
326
+ },
327
+ "children": [
328
+ {
329
+ "$prototype": "Array",
330
+ "items": {
331
+ "$ref": "#/state/editors"
332
+ },
333
+ "key": {
334
+ "$ref": "$map/item/key"
335
+ },
336
+ "map": {
337
+ "tagName": "jx-action-button",
338
+ "attributes": {
339
+ "part": "editor-kind-item",
340
+ "data-value": "${$map.item.value}"
341
+ },
342
+ "$props": {
343
+ "size": "sm",
344
+ "checked": {
345
+ "$ref": "$map/item/checked"
346
+ },
347
+ "hint": {
348
+ "$ref": "$map/item/hint"
349
+ }
350
+ },
351
+ "onclick": {
352
+ "$prototype": "Function",
353
+ "body": [
354
+ {
355
+ "operator": "call",
356
+ "target": {
357
+ "$ref": "#/state/chooseEditor"
358
+ },
359
+ "value": [
360
+ {
361
+ "$ref": "$map/item/value"
362
+ }
363
+ ]
364
+ }
365
+ ]
366
+ },
367
+ "children": [
368
+ {
369
+ "tagName": "span",
370
+ "textContent": "${$map.item.label}"
371
+ }
372
+ ]
373
+ }
374
+ }
375
+ ]
376
+ }
377
+ },
378
+ "$description": "The Editor axis leads the bar, beside Back: which editor the document is open in is the first thing the pane says about it, and the axes to its right describe that editor. Drawn only in the full bar (`hidden` in a lens, whose tab is the pane beside it). Several declared kinds are a segmented `jx-action-group`, like the View axis: they are few, and every one of them stays on screen rather than behind a dropdown."
379
+ }
380
+ ]
381
+ }
382
+ }
383
+ },
269
384
  {
270
385
  "tagName": "div",
271
386
  "attributes": {
@@ -360,77 +475,6 @@
360
475
  "display": "contents"
361
476
  },
362
477
  "children": [
363
- {
364
- "tagName": "div",
365
- "attributes": {
366
- "part": "axis",
367
- "data-axis": "editor"
368
- },
369
- "children": [
370
- {
371
- "tagName": "span",
372
- "attributes": {
373
- "part": "axis-label"
374
- },
375
- "textContent": "Editor"
376
- },
377
- {
378
- "tagName": "div",
379
- "attributes": {
380
- "part": "editor-slot",
381
- "role": "none"
382
- },
383
- "style": {
384
- "display": "contents"
385
- },
386
- "$switch": {
387
- "$ref": "#/state/editorMode"
388
- },
389
- "cases": {
390
- "static": {
391
- "tagName": "span",
392
- "attributes": {
393
- "part": "static",
394
- "data-static": "editor"
395
- },
396
- "textContent": "${state.editorLabel}"
397
- },
398
- "picker": {
399
- "tagName": "jx-select",
400
- "attributes": {
401
- "part": "editor-kind"
402
- },
403
- "$props": {
404
- "label": "Editor",
405
- "size": "sm",
406
- "options": {
407
- "$ref": "#/state/editorOptions"
408
- },
409
- "value": {
410
- "$ref": "#/state/editorValue"
411
- }
412
- },
413
- "onchange": {
414
- "$prototype": "Function",
415
- "body": [
416
- {
417
- "operator": "call",
418
- "target": {
419
- "$ref": "#/state/chooseEditor"
420
- },
421
- "value": [
422
- {
423
- "$ref": "event#/target/value"
424
- }
425
- ]
426
- }
427
- ]
428
- }
429
- }
430
- }
431
- }
432
- ]
433
- },
434
478
  {
435
479
  "tagName": "div",
436
480
  "attributes": {
@@ -601,6 +645,156 @@
601
645
  },
602
646
  "textContent": "Context"
603
647
  },
648
+ {
649
+ "tagName": "div",
650
+ "attributes": {
651
+ "part": "sizes-slot",
652
+ "role": "none"
653
+ },
654
+ "style": {
655
+ "display": "contents"
656
+ },
657
+ "$switch": {
658
+ "$ref": "#/state/sizesState"
659
+ },
660
+ "cases": {
661
+ "shown": {
662
+ "tagName": "jx-action-group",
663
+ "attributes": {
664
+ "part": "sizes"
665
+ },
666
+ "$props": {
667
+ "selects": "single",
668
+ "compact": true,
669
+ "label": "Size"
670
+ },
671
+ "children": [
672
+ {
673
+ "$prototype": "Array",
674
+ "items": {
675
+ "$ref": "#/state/sizes"
676
+ },
677
+ "key": {
678
+ "$ref": "$map/item/key"
679
+ },
680
+ "map": {
681
+ "tagName": "jx-action-button",
682
+ "attributes": {
683
+ "part": "sizes-item",
684
+ "data-value": "${$map.item.value}"
685
+ },
686
+ "$props": {
687
+ "size": "sm",
688
+ "checked": {
689
+ "$ref": "$map/item/checked"
690
+ },
691
+ "hint": {
692
+ "$ref": "$map/item/hint"
693
+ }
694
+ },
695
+ "onclick": {
696
+ "$prototype": "Function",
697
+ "body": [
698
+ {
699
+ "operator": "call",
700
+ "target": {
701
+ "$ref": "#/state/setBreakpoint"
702
+ },
703
+ "value": [
704
+ {
705
+ "$ref": "$map/item/value"
706
+ }
707
+ ]
708
+ }
709
+ ]
710
+ },
711
+ "children": [
712
+ {
713
+ "tagName": "span",
714
+ "textContent": "${$map.item.label}"
715
+ }
716
+ ]
717
+ }
718
+ }
719
+ ]
720
+ }
721
+ }
722
+ },
723
+ {
724
+ "tagName": "div",
725
+ "attributes": {
726
+ "part": "scheme-slot",
727
+ "role": "none"
728
+ },
729
+ "style": {
730
+ "display": "contents"
731
+ },
732
+ "$switch": {
733
+ "$ref": "#/state/schemeState"
734
+ },
735
+ "cases": {
736
+ "shown": {
737
+ "tagName": "jx-action-group",
738
+ "attributes": {
739
+ "part": "schemes"
740
+ },
741
+ "$props": {
742
+ "selects": "single",
743
+ "compact": true,
744
+ "label": "Color scheme"
745
+ },
746
+ "children": [
747
+ {
748
+ "$prototype": "Array",
749
+ "items": {
750
+ "$ref": "#/state/schemes"
751
+ },
752
+ "key": {
753
+ "$ref": "$map/item/key"
754
+ },
755
+ "map": {
756
+ "tagName": "jx-action-button",
757
+ "attributes": {
758
+ "part": "schemes-item",
759
+ "data-value": "${$map.item.value}"
760
+ },
761
+ "$props": {
762
+ "size": "sm",
763
+ "checked": {
764
+ "$ref": "$map/item/checked"
765
+ },
766
+ "hint": {
767
+ "$ref": "$map/item/hint"
768
+ }
769
+ },
770
+ "onclick": {
771
+ "$prototype": "Function",
772
+ "body": [
773
+ {
774
+ "operator": "call",
775
+ "target": {
776
+ "$ref": "#/state/setScheme"
777
+ },
778
+ "value": [
779
+ {
780
+ "$ref": "$map/item/value"
781
+ }
782
+ ]
783
+ }
784
+ ]
785
+ },
786
+ "children": [
787
+ {
788
+ "tagName": "span",
789
+ "textContent": "${$map.item.label}"
790
+ }
791
+ ]
792
+ }
793
+ }
794
+ ]
795
+ }
796
+ }
797
+ },
604
798
  {
605
799
  "tagName": "div",
606
800
  "attributes": {
@@ -670,11 +864,13 @@
670
864
  "$props": {
671
865
  "size": "sm",
672
866
  "quiet": true,
867
+ "icon": "sliders-horizontal",
868
+ "label": "More rendering context",
673
869
  "haspopup": "dialog",
674
870
  "expanded": {
675
871
  "$ref": "#/state/contextOpen"
676
872
  },
677
- "hint": "What this document is being rendered with"
873
+ "hint": "Language, feature queries, layout, and Manage contexts"
678
874
  },
679
875
  "onclick": {
680
876
  "$prototype": "Function",
@@ -696,19 +892,11 @@
696
892
  {
697
893
  "tagName": "span",
698
894
  "textContent": "${state.contextSummary}"
699
- },
700
- {
701
- "tagName": "jx-icon",
702
- "attributes": {
703
- "part": "context-trigger-caret"
704
- },
705
- "$props": {
706
- "name": "caret-down"
707
- }
708
895
  }
709
896
  ]
710
897
  }
711
- ]
898
+ ],
899
+ "$description": "The rendering context, on the bar: the size and the color scheme are segmented groups the reader picks from directly, because they are what a canvas is switched between all day; the resolving-with values and the rarer choices (language, feature queries, layout, Manage contexts) stay behind their popovers."
712
900
  }
713
901
  }
714
902
  },
@@ -955,7 +1143,7 @@
955
1143
  "id": "${state.contextPopoverId}"
956
1144
  },
957
1145
  "$props": {
958
- "label": "Rendering context",
1146
+ "label": "More rendering context",
959
1147
  "placement": "block-end span-inline-start",
960
1148
  "x": {
961
1149
  "$ref": "#/state/contextX"
@@ -971,174 +1159,6 @@
971
1159
  "part": "ctx"
972
1160
  },
973
1161
  "children": [
974
- {
975
- "tagName": "div",
976
- "attributes": {
977
- "part": "ctx-group",
978
- "data-group": "size"
979
- },
980
- "children": [
981
- {
982
- "tagName": "span",
983
- "attributes": {
984
- "part": "ctx-group-label"
985
- },
986
- "textContent": "Size"
987
- },
988
- {
989
- "tagName": "jx-action-group",
990
- "attributes": {
991
- "part": "sizes"
992
- },
993
- "$props": {
994
- "selects": "single",
995
- "compact": false,
996
- "label": "Size"
997
- },
998
- "children": [
999
- {
1000
- "$prototype": "Array",
1001
- "items": {
1002
- "$ref": "#/state/sizes"
1003
- },
1004
- "key": {
1005
- "$ref": "$map/item/key"
1006
- },
1007
- "map": {
1008
- "tagName": "jx-action-button",
1009
- "attributes": {
1010
- "part": "sizes-item",
1011
- "data-value": "${$map.item.value}"
1012
- },
1013
- "$props": {
1014
- "size": "sm",
1015
- "quiet": false,
1016
- "checked": {
1017
- "$ref": "$map/item/checked"
1018
- },
1019
- "hint": {
1020
- "$ref": "$map/item/hint"
1021
- }
1022
- },
1023
- "onclick": {
1024
- "$prototype": "Function",
1025
- "body": [
1026
- {
1027
- "operator": "call",
1028
- "target": {
1029
- "$ref": "#/state/setBreakpoint"
1030
- },
1031
- "value": [
1032
- {
1033
- "$ref": "$map/item/value"
1034
- }
1035
- ]
1036
- }
1037
- ]
1038
- },
1039
- "children": [
1040
- {
1041
- "tagName": "span",
1042
- "textContent": "${$map.item.label}"
1043
- }
1044
- ]
1045
- }
1046
- }
1047
- ]
1048
- }
1049
- ]
1050
- },
1051
- {
1052
- "tagName": "div",
1053
- "attributes": {
1054
- "part": "scheme-slot",
1055
- "role": "none"
1056
- },
1057
- "style": {
1058
- "display": "contents"
1059
- },
1060
- "$switch": {
1061
- "$ref": "#/state/schemeState"
1062
- },
1063
- "cases": {
1064
- "shown": {
1065
- "tagName": "div",
1066
- "attributes": {
1067
- "part": "ctx-group",
1068
- "data-group": "scheme"
1069
- },
1070
- "children": [
1071
- {
1072
- "tagName": "span",
1073
- "attributes": {
1074
- "part": "ctx-group-label"
1075
- },
1076
- "textContent": "Color scheme"
1077
- },
1078
- {
1079
- "tagName": "jx-action-group",
1080
- "attributes": {
1081
- "part": "schemes"
1082
- },
1083
- "$props": {
1084
- "selects": "single",
1085
- "compact": true,
1086
- "label": "Color scheme"
1087
- },
1088
- "children": [
1089
- {
1090
- "$prototype": "Array",
1091
- "items": {
1092
- "$ref": "#/state/schemes"
1093
- },
1094
- "key": {
1095
- "$ref": "$map/item/key"
1096
- },
1097
- "map": {
1098
- "tagName": "jx-action-button",
1099
- "attributes": {
1100
- "part": "schemes-item",
1101
- "data-value": "${$map.item.value}"
1102
- },
1103
- "$props": {
1104
- "size": "sm",
1105
- "checked": {
1106
- "$ref": "$map/item/checked"
1107
- },
1108
- "hint": {
1109
- "$ref": "$map/item/hint"
1110
- }
1111
- },
1112
- "onclick": {
1113
- "$prototype": "Function",
1114
- "body": [
1115
- {
1116
- "operator": "call",
1117
- "target": {
1118
- "$ref": "#/state/setScheme"
1119
- },
1120
- "value": [
1121
- {
1122
- "$ref": "$map/item/value"
1123
- }
1124
- ]
1125
- }
1126
- ]
1127
- },
1128
- "children": [
1129
- {
1130
- "tagName": "span",
1131
- "textContent": "${$map.item.label}"
1132
- }
1133
- ]
1134
- }
1135
- }
1136
- ]
1137
- }
1138
- ]
1139
- }
1140
- }
1141
- },
1142
1162
  {
1143
1163
  "tagName": "div",
1144
1164
  "attributes": {
@@ -1400,7 +1420,8 @@
1400
1420
  }
1401
1421
  ]
1402
1422
  }
1403
- ]
1423
+ ],
1424
+ "$description": "What is left of the rendering context once Size and Color scheme moved onto the bar: the language, the feature queries, the layout switch, and Manage contexts. They are chosen rarely, and Manage contexts is always here, so the trigger always is too."
1404
1425
  },
1405
1426
  {
1406
1427
  "tagName": "jx-popover",