@jxsuite/studio 2.0.0 → 2.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 (419) hide show
  1. package/canvas.html +21 -0
  2. package/dist/chunks/Overlay.dev-qfjzkms8.js +23 -0
  3. package/dist/chunks/{Overlay.dev-cszx7yn5.js.map → Overlay.dev-qfjzkms8.js.map} +1 -1
  4. package/dist/chunks/{adapter-z8fkmbmv.js → adapter-qfnesn5v.js} +2 -2
  5. package/dist/chunks/{cf-settings-mmyv436d.js → cf-settings-73sh5z4p.js} +3 -3
  6. package/dist/chunks/{components-0hzentwq.js → components-2bpqp4mq.js} +5 -7
  7. package/dist/chunks/{components-0hzentwq.js.map → components-2bpqp4mq.js.map} +1 -1
  8. package/dist/chunks/content-source-34gnkbnn.js +38 -0
  9. package/dist/chunks/content-source-34gnkbnn.js.map +9 -0
  10. package/dist/chunks/convert-to-repeater-t8kxre5s.js +258 -0
  11. package/dist/chunks/convert-to-repeater-t8kxre5s.js.map +10 -0
  12. package/dist/chunks/extension-sections-6mqydz35.js +301 -0
  13. package/dist/chunks/extension-sections-6mqydz35.js.map +11 -0
  14. package/dist/chunks/files-8kn321h1.js +70 -0
  15. package/dist/chunks/files-8kn321h1.js.map +9 -0
  16. package/dist/chunks/{format-host-2c188n41.js → format-host-mkwsmt8d.js} +3 -3
  17. package/dist/chunks/git-panel-tjbr191d.js +51 -0
  18. package/dist/chunks/git-panel-tjbr191d.js.map +9 -0
  19. package/dist/chunks/{index-baeg2x3y.js → index-7pxchcce.js} +4 -3
  20. package/dist/chunks/{index-baeg2x3y.js.map → index-7pxchcce.js.map} +3 -3
  21. package/dist/chunks/{jx-validate-qx8degj7.js → jx-validate-v6qgknrs.js} +3 -3
  22. package/dist/chunks/layers-panel-87pb25km.js +58 -0
  23. package/dist/chunks/layers-panel-87pb25km.js.map +9 -0
  24. package/dist/chunks/{monaco-setup-zjdp9zdw.js → monaco-setup-e0yh25j4.js} +4 -75
  25. package/dist/chunks/{monaco-setup-zjdp9zdw.js.map → monaco-setup-e0yh25j4.js.map} +3 -4
  26. package/dist/chunks/publish-panel-m0fcgdrt.js +21 -0
  27. package/dist/chunks/publish-panel-m0fcgdrt.js.map +9 -0
  28. package/dist/chunks/quick-search-rhs6cbsb.js +53 -0
  29. package/dist/chunks/quick-search-rhs6cbsb.js.map +9 -0
  30. package/dist/chunks/right-panel-zpdxd98t.js +37 -0
  31. package/dist/chunks/right-panel-zpdxd98t.js.map +9 -0
  32. package/dist/chunks/section-registry-zmckaxf4.js +30 -0
  33. package/dist/chunks/section-registry-zmckaxf4.js.map +9 -0
  34. package/dist/chunks/sp-overlay.dev-9ran0sfq.js +18 -0
  35. package/dist/chunks/sp-overlay.dev-9ran0sfq.js.map +9 -0
  36. package/dist/chunks/sp-popover.dev-rebmdncr.js +9 -0
  37. package/dist/chunks/sp-popover.dev-rebmdncr.js.map +9 -0
  38. package/dist/chunks/sp-progress-circle.dev-5vkppfkt.js +15 -0
  39. package/dist/chunks/sp-progress-circle.dev-5vkppfkt.js.map +9 -0
  40. package/dist/chunks/sp-tooltip.dev-ykqrg8h5.js +15 -0
  41. package/dist/chunks/sp-tooltip.dev-ykqrg8h5.js.map +9 -0
  42. package/dist/chunks/{sp-tray.dev-pb2fsd65.js → sp-tray.dev-ey59vfh7.js} +10 -8
  43. package/dist/chunks/{sp-tray.dev-pb2fsd65.js.map → sp-tray.dev-ey59vfh7.js.map} +2 -2
  44. package/dist/chunks/{studio-9qr6fq7p.js → studio-0rqqhrdy.js} +10 -378
  45. package/dist/chunks/{studio-9qr6fq7p.js.map → studio-0rqqhrdy.js.map} +4 -14
  46. package/dist/chunks/{studio-5x6tqqec.js → studio-2sj1jj3v.js} +10 -8
  47. package/dist/chunks/{studio-5x6tqqec.js.map → studio-2sj1jj3v.js.map} +2 -2
  48. package/dist/chunks/{studio-h3fw0wn8.js → studio-3fk1ac9z.js} +6 -4
  49. package/dist/chunks/{studio-h3fw0wn8.js.map → studio-3fk1ac9z.js.map} +2 -2
  50. package/dist/chunks/studio-41exgzhq.js +6690 -0
  51. package/dist/chunks/studio-41exgzhq.js.map +38 -0
  52. package/dist/chunks/{studio-7v2bpweq.js → studio-4mqb9a0j.js} +6 -4
  53. package/dist/chunks/{studio-7v2bpweq.js.map → studio-4mqb9a0j.js.map} +2 -2
  54. package/dist/chunks/studio-50k77cca.js +1787 -0
  55. package/dist/chunks/studio-50k77cca.js.map +18 -0
  56. package/dist/chunks/{studio-56v3zwk6.js → studio-6a0h7sne.js} +10 -8
  57. package/dist/chunks/{studio-56v3zwk6.js.map → studio-6a0h7sne.js.map} +2 -2
  58. package/dist/chunks/studio-6f0am8f2.js +53 -0
  59. package/dist/chunks/studio-6f0am8f2.js.map +10 -0
  60. package/dist/chunks/studio-6nmjc5qk.js +7002 -0
  61. package/dist/chunks/studio-6nmjc5qk.js.map +32 -0
  62. package/dist/chunks/studio-7afd21nw.js +67 -0
  63. package/dist/chunks/studio-7afd21nw.js.map +10 -0
  64. package/dist/chunks/{studio-xze4zrs1.js → studio-7bmdvzne.js} +2 -2
  65. package/dist/chunks/studio-7bmdvzne.js.map +10 -0
  66. package/dist/chunks/studio-8jpzqk5s.js +128 -0
  67. package/dist/chunks/studio-8jpzqk5s.js.map +10 -0
  68. package/dist/chunks/studio-94m77tgk.js +1482 -0
  69. package/dist/chunks/studio-94m77tgk.js.map +13 -0
  70. package/dist/chunks/studio-9je6w5sq.js +1000 -0
  71. package/dist/chunks/studio-9je6w5sq.js.map +16 -0
  72. package/dist/chunks/{studio-w7c6kvk7.js → studio-a7pzveq1.js} +2 -2
  73. package/dist/chunks/{studio-97qcgvdn.js → studio-adn0z1k3.js} +14 -8
  74. package/dist/chunks/{studio-97qcgvdn.js.map → studio-adn0z1k3.js.map} +3 -3
  75. package/dist/chunks/{studio-kr88ryr7.js → studio-bsxxx3x2.js} +17 -15
  76. package/dist/chunks/{studio-kr88ryr7.js.map → studio-bsxxx3x2.js.map} +7 -6
  77. package/dist/chunks/studio-bw5dz6km.js +608 -0
  78. package/dist/chunks/studio-bw5dz6km.js.map +21 -0
  79. package/dist/chunks/studio-c6s5getc.js +4232 -0
  80. package/dist/chunks/studio-c6s5getc.js.map +39 -0
  81. package/dist/chunks/studio-cjm7fdjf.js +451 -0
  82. package/dist/chunks/studio-cjm7fdjf.js.map +14 -0
  83. package/dist/chunks/{studio-cx91mnh8.js → studio-ckwz4d3x.js} +53 -53
  84. package/dist/chunks/{studio-cx91mnh8.js.map → studio-ckwz4d3x.js.map} +5 -5
  85. package/dist/chunks/studio-dg7zyt5x.js +28 -0
  86. package/dist/chunks/studio-dg7zyt5x.js.map +10 -0
  87. package/dist/chunks/studio-dzcyvvvz.js +166 -0
  88. package/dist/chunks/studio-dzcyvvvz.js.map +10 -0
  89. package/dist/chunks/{studio-7kqe41sa.js → studio-evkr5d3b.js} +15 -7
  90. package/dist/chunks/{studio-7kqe41sa.js.map → studio-evkr5d3b.js.map} +5 -4
  91. package/dist/chunks/studio-f12h6177.js +411 -0
  92. package/dist/chunks/studio-f12h6177.js.map +13 -0
  93. package/dist/chunks/studio-hbp1s8m9.js +1817 -0
  94. package/dist/chunks/studio-hbp1s8m9.js.map +14 -0
  95. package/dist/chunks/studio-k2sxjph5.js +15295 -0
  96. package/dist/chunks/studio-k2sxjph5.js.map +235 -0
  97. package/dist/chunks/studio-myje51t3.js +385 -0
  98. package/dist/chunks/studio-myje51t3.js.map +12 -0
  99. package/dist/chunks/studio-na6rwzhw.js +353 -0
  100. package/dist/chunks/studio-na6rwzhw.js.map +11 -0
  101. package/dist/chunks/{studio-4k0m4fmp.js → studio-p471gg5n.js} +126 -3
  102. package/dist/chunks/studio-p471gg5n.js.map +14 -0
  103. package/dist/chunks/{studio-9bjwf0d4.js → studio-rgwcpast.js} +5 -46
  104. package/dist/chunks/{studio-9bjwf0d4.js.map → studio-rgwcpast.js.map} +4 -5
  105. package/dist/chunks/{studio-hhj92gcr.js → studio-s519zc99.js} +3 -3
  106. package/dist/chunks/studio-sas7mt3k.js +75 -0
  107. package/dist/chunks/studio-sas7mt3k.js.map +10 -0
  108. package/dist/chunks/studio-t5wqwzdh.js +74 -0
  109. package/dist/chunks/studio-t5wqwzdh.js.map +10 -0
  110. package/dist/chunks/{studio-9qpspwfn.js → studio-temv5bw4.js} +5 -5
  111. package/dist/chunks/{studio-9qpspwfn.js.map → studio-temv5bw4.js.map} +1 -1
  112. package/dist/chunks/{studio-qkvt37c0.js → studio-tr20m8g8.js} +669 -18
  113. package/dist/chunks/studio-tr20m8g8.js.map +9 -0
  114. package/dist/chunks/{studio-ygzav7z5.js → studio-v96qfnww.js} +5514 -4291
  115. package/dist/chunks/studio-v96qfnww.js.map +54 -0
  116. package/dist/chunks/studio-vcetc91k.js +659 -0
  117. package/dist/chunks/studio-vcetc91k.js.map +10 -0
  118. package/dist/chunks/{studio-n9zmpxjg.js → studio-vmymjefp.js} +2972 -4937
  119. package/dist/chunks/studio-vmymjefp.js.map +98 -0
  120. package/dist/chunks/{studio-bghqfmea.js → studio-wwseqyw0.js} +2 -2
  121. package/dist/chunks/studio-x9hmy5kr.js +390 -0
  122. package/dist/chunks/studio-x9hmy5kr.js.map +10 -0
  123. package/dist/chunks/studio-xa0ce0n7.js +335 -0
  124. package/dist/chunks/studio-xa0ce0n7.js.map +10 -0
  125. package/dist/chunks/studio-xm3dbxvn.js +378 -0
  126. package/dist/chunks/studio-xm3dbxvn.js.map +19 -0
  127. package/dist/chunks/{studio-nqw433kv.js → studio-xmvbhg31.js} +2 -2
  128. package/dist/chunks/studio-zv37yrfa.js +1054 -0
  129. package/dist/chunks/studio-zv37yrfa.js.map +13 -0
  130. package/dist/chunks/{ws-client-q7hkz3j9.js → ws-client-654ts66j.js} +6 -4
  131. package/dist/chunks/ws-client-654ts66j.js.map +11 -0
  132. package/dist/iframe-entry.js +668 -230
  133. package/dist/studio.js +23711 -35185
  134. package/index.html +35 -4685
  135. package/package.json +17 -15
  136. package/src/about/about-modal.ts +42 -11
  137. package/src/browse/library-commands.ts +240 -0
  138. package/src/browse/library-layouts.ts +369 -0
  139. package/src/browse/library-model.ts +396 -0
  140. package/src/browse/library-pane.ts +1049 -0
  141. package/src/browse/library-preview.ts +252 -0
  142. package/src/browse/library-source.ts +150 -0
  143. package/src/canvas/canvas-helpers.ts +33 -9
  144. package/src/canvas/canvas-live-render.ts +45 -29
  145. package/src/canvas/canvas-patcher.ts +151 -31
  146. package/src/canvas/canvas-perf.ts +46 -7
  147. package/src/canvas/canvas-render.ts +1092 -220
  148. package/src/canvas/canvas-surface.ts +240 -0
  149. package/src/canvas/canvas-utils.ts +1166 -124
  150. package/src/canvas/iframe-drop.ts +2 -1
  151. package/src/canvas/iframe-entry.ts +241 -4
  152. package/src/canvas/iframe-host.ts +1226 -143
  153. package/src/canvas/iframe-inline-edit.ts +31 -0
  154. package/src/canvas/iframe-interaction.ts +76 -16
  155. package/src/canvas/iframe-keys.ts +107 -45
  156. package/src/canvas/iframe-overlay.ts +38 -1
  157. package/src/canvas/iframe-protocol.ts +137 -2
  158. package/src/canvas/iframe-render.ts +70 -2
  159. package/src/canvas/iframe-slash.ts +6 -0
  160. package/src/canvas/path-mapping.ts +56 -6
  161. package/src/canvas/surface-registry.ts +292 -0
  162. package/src/collab/collab-commands.ts +244 -0
  163. package/src/collab/collab-session.ts +198 -32
  164. package/src/collab/collab-state.ts +28 -2
  165. package/src/collab/presence-chips.ts +100 -9
  166. package/src/commands/active-registry.ts +42 -0
  167. package/src/commands/app-commands.ts +176 -0
  168. package/src/commands/budget.ts +158 -0
  169. package/src/commands/command-args.ts +253 -0
  170. package/src/commands/context.ts +387 -0
  171. package/src/commands/defaults.ts +580 -0
  172. package/src/commands/keymap.ts +571 -0
  173. package/src/commands/levels.ts +345 -0
  174. package/src/commands/live-context.ts +193 -0
  175. package/src/commands/reference.ts +227 -0
  176. package/src/commands/registry.ts +293 -0
  177. package/src/component-props.ts +3 -2
  178. package/src/content/draft-state.ts +106 -0
  179. package/src/content/entry-commands.ts +282 -0
  180. package/src/content/entry-editor.ts +327 -0
  181. package/src/content/entry-fields.ts +116 -0
  182. package/src/content/entry-model.ts +175 -0
  183. package/src/editor/canvas-context-menu.ts +17 -11
  184. package/src/editor/canvas-slash-bridge.ts +11 -4
  185. package/src/editor/context-menu.ts +804 -204
  186. package/src/editor/convert-to-component.ts +31 -10
  187. package/src/editor/convert-to-repeater.ts +3 -2
  188. package/src/editor/inline-edit-apply.ts +5 -5
  189. package/src/editor/inline-edit.ts +86 -50
  190. package/src/editor/insert-zone-action.ts +1 -1
  191. package/src/editor/shortcuts.ts +1043 -329
  192. package/src/editor/slash-menu.ts +1 -0
  193. package/src/files/elements.ts +166 -0
  194. package/src/files/file-ops.ts +178 -31
  195. package/src/files/files.ts +898 -268
  196. package/src/files/fs-events.ts +21 -0
  197. package/src/files/media-meta.ts +203 -0
  198. package/src/files/media-paths.ts +141 -0
  199. package/src/files/media-upload.ts +7 -3
  200. package/src/files/media-usage.ts +189 -0
  201. package/src/github/github-auth.ts +235 -33
  202. package/src/github/github-publish.ts +80 -21
  203. package/src/grid/grid-controller.ts +152 -12
  204. package/src/grid/grid-layout.ts +225 -20
  205. package/src/grid/grid-open.ts +120 -0
  206. package/src/grid/grid-panel.ts +554 -39
  207. package/src/grid/grid-source.ts +27 -1
  208. package/src/grid/redirects-grid.ts +599 -0
  209. package/src/grid/redirects.ts +398 -0
  210. package/src/grid/sources/content-source.ts +108 -2
  211. package/src/i18n/i18n-commands.ts +322 -0
  212. package/src/new-project/add-repo-modal.ts +8 -10
  213. package/src/new-project/import-tab.ts +34 -9
  214. package/src/new-project/location-fields.ts +9 -1
  215. package/src/new-project/new-project-modal.ts +270 -262
  216. package/src/packages/jxsuite-update.ts +97 -48
  217. package/src/packages/pull-package-sync.ts +18 -9
  218. package/src/page-params.ts +2 -1
  219. package/src/panels/activity-bar.ts +152 -91
  220. package/src/panels/activity-panel.ts +481 -0
  221. package/src/panels/ai-chat/chat-markdown.ts +8 -3
  222. package/src/panels/ai-chat/chat-view.ts +245 -18
  223. package/src/panels/ai-chat/composer.ts +31 -5
  224. package/src/panels/ai-chat/sessions-view.ts +17 -10
  225. package/src/panels/ai-panel.ts +279 -120
  226. package/src/panels/block-action-bar.ts +1115 -224
  227. package/src/panels/bottom-dock.ts +337 -0
  228. package/src/panels/canvas-dnd-bridge.ts +37 -8
  229. package/src/panels/chat-panel.ts +29 -12
  230. package/src/panels/data-explorer.ts +254 -112
  231. package/src/panels/data-grid.ts +10 -4
  232. package/src/panels/dnd.ts +28 -51
  233. package/src/panels/editors.ts +434 -107
  234. package/src/panels/elements-panel.ts +66 -2
  235. package/src/panels/empty-state.ts +112 -0
  236. package/src/panels/events-panel.ts +596 -82
  237. package/src/panels/formula-workspace.ts +408 -218
  238. package/src/panels/frontmatter-fields.ts +51 -10
  239. package/src/panels/frontmatter-panel.ts +357 -79
  240. package/src/panels/git-panel.ts +375 -164
  241. package/src/panels/head-panel.ts +791 -85
  242. package/src/panels/i18n-panel.ts +592 -0
  243. package/src/panels/imports-panel.ts +95 -85
  244. package/src/panels/jump-bar.ts +584 -0
  245. package/src/panels/layers-panel.ts +1106 -328
  246. package/src/panels/left-panel.ts +109 -204
  247. package/src/panels/navigator-panels.ts +131 -0
  248. package/src/panels/overlays.ts +7 -2
  249. package/src/panels/pane-context.ts +1477 -0
  250. package/src/panels/pane-grid.ts +406 -0
  251. package/src/panels/panel-registry.ts +340 -0
  252. package/src/panels/panel-scheduler.ts +75 -0
  253. package/src/panels/problems-panel.ts +234 -0
  254. package/src/panels/properties-panel.ts +946 -1139
  255. package/src/panels/provenance.ts +258 -0
  256. package/src/panels/quick-search.ts +791 -122
  257. package/src/panels/right-panel.ts +228 -102
  258. package/src/panels/seo-modal.ts +395 -0
  259. package/src/panels/settings-pane.ts +203 -0
  260. package/src/panels/signals-panel.ts +354 -137
  261. package/src/panels/statement-editor.ts +41 -25
  262. package/src/panels/statusbar.ts +342 -106
  263. package/src/panels/style-panel.ts +974 -463
  264. package/src/panels/style-utils.ts +3 -3
  265. package/src/panels/stylebook-doc.ts +4 -2
  266. package/src/panels/stylebook-layers-panel.ts +3 -2
  267. package/src/panels/stylebook-panel.ts +51 -26
  268. package/src/panels/tab-strip.ts +1058 -78
  269. package/src/panels/target-line.ts +274 -0
  270. package/src/panels/toolbar.ts +631 -484
  271. package/src/panels/welcome-screen.ts +301 -198
  272. package/src/platform-errors.ts +26 -3
  273. package/src/platform.ts +96 -2
  274. package/src/platforms/cloud.ts +71 -8
  275. package/src/platforms/devserver.ts +92 -29
  276. package/src/publish/deploy-checklist.ts +383 -0
  277. package/src/publish/pages-service.ts +10 -1
  278. package/src/publish/publish-commands.ts +218 -0
  279. package/src/publish/publish-panel.ts +110 -16
  280. package/src/recent-projects.ts +3 -2
  281. package/src/services/a11y-report.ts +505 -0
  282. package/src/services/ai-models.ts +75 -2
  283. package/src/services/ai-project-tools.ts +29 -10
  284. package/src/services/ai-system-prompt.ts +53 -14
  285. package/src/services/ai-tools.ts +39 -3
  286. package/src/services/ai-writes.ts +154 -0
  287. package/src/services/announce.ts +97 -0
  288. package/src/services/automation.ts +424 -175
  289. package/src/services/cem-export.ts +9 -4
  290. package/src/services/clock.ts +61 -0
  291. package/src/services/document-assistant.ts +36 -8
  292. package/src/services/idle.ts +179 -0
  293. package/src/services/import-client.ts +26 -0
  294. package/src/services/monaco-buffer.ts +627 -0
  295. package/src/services/monaco-lazy.ts +36 -0
  296. package/src/services/notify.ts +271 -0
  297. package/src/services/profile.ts +155 -0
  298. package/src/services/references.ts +0 -0
  299. package/src/services/token-lint.ts +3 -2
  300. package/src/services/tool-executor.ts +53 -7
  301. package/src/services/trusted-types.ts +123 -0
  302. package/src/settings/contexts-section.ts +427 -0
  303. package/src/settings/contributed-section.ts +149 -11
  304. package/src/settings/css-vars-editor.ts +306 -349
  305. package/src/settings/defs-editor.ts +93 -34
  306. package/src/settings/dependencies-editor.ts +7 -7
  307. package/src/settings/extension-sections.ts +37 -5
  308. package/src/settings/general-settings.ts +204 -121
  309. package/src/settings/locales-section.ts +347 -0
  310. package/src/settings/preferences-accounts.ts +140 -0
  311. package/src/settings/preferences-dialog.ts +620 -0
  312. package/src/settings/preferences-keymap.ts +270 -0
  313. package/src/settings/project-sections.ts +260 -0
  314. package/src/settings/section-registry.ts +169 -0
  315. package/src/settings/settings-document.ts +385 -0
  316. package/src/shell.ts +1549 -0
  317. package/src/site-context.ts +45 -20
  318. package/src/state.ts +14 -275
  319. package/src/store.ts +88 -43
  320. package/src/studio.ts +790 -346
  321. package/src/style/live-preview.ts +36 -0
  322. package/src/style/project-styles.ts +349 -0
  323. package/src/style/token-ref.ts +123 -0
  324. package/src/tabs/patch-ops.ts +16 -4
  325. package/src/tabs/project-config.ts +416 -0
  326. package/src/tabs/selection.ts +323 -0
  327. package/src/tabs/tab.ts +182 -47
  328. package/src/tabs/transact.ts +209 -28
  329. package/src/types.ts +68 -13
  330. package/src/ui/ai-credentials-form.ts +39 -35
  331. package/src/ui/ai-managed-connect.ts +113 -0
  332. package/src/ui/dynamic-slot.ts +224 -81
  333. package/src/ui/expression-editor.ts +71 -63
  334. package/src/ui/field-input.ts +4 -6
  335. package/src/ui/field-row.ts +215 -38
  336. package/src/ui/form-controls.ts +194 -7
  337. package/src/ui/layers.ts +492 -69
  338. package/src/ui/media-picker.ts +115 -25
  339. package/src/ui/panel-resize.ts +109 -91
  340. package/src/ui/progress-modal.ts +131 -50
  341. package/src/ui/regions.ts +462 -0
  342. package/src/ui/schema-form.ts +229 -45
  343. package/src/ui/spectrum.ts +24 -8
  344. package/src/ui/timing.ts +49 -0
  345. package/src/ui/value-selector.ts +20 -0
  346. package/src/ui/value-source.ts +348 -0
  347. package/src/ui/virtual-window.ts +400 -0
  348. package/src/utils/edit-display.ts +3 -2
  349. package/src/utils/inherited-style.ts +67 -37
  350. package/src/view.ts +64 -78
  351. package/src/workspace/pane-derive.ts +1258 -0
  352. package/src/workspace/session.ts +317 -0
  353. package/src/workspace/workspace.ts +1345 -23
  354. package/styles/canvas.css +653 -0
  355. package/styles/forced-colors.css +106 -0
  356. package/styles/inspector.css +1454 -0
  357. package/styles/overlays.css +2704 -0
  358. package/styles/panels.css +1701 -0
  359. package/styles/shell.css +1423 -0
  360. package/styles/tokens.css +151 -0
  361. package/dist/chunks/Overlay.dev-cszx7yn5.js +0 -22
  362. package/dist/chunks/extension-sections-qct0gt8f.js +0 -531
  363. package/dist/chunks/extension-sections-qct0gt8f.js.map +0 -12
  364. package/dist/chunks/files-02zn5y24.js +0 -50
  365. package/dist/chunks/files-02zn5y24.js.map +0 -9
  366. package/dist/chunks/git-panel-mbb0y0hz.js +0 -28
  367. package/dist/chunks/git-panel-mbb0y0hz.js.map +0 -9
  368. package/dist/chunks/layers-panel-9qekmqk1.js +0 -26
  369. package/dist/chunks/layers-panel-9qekmqk1.js.map +0 -9
  370. package/dist/chunks/settings-modal-gj0hrah4.js +0 -29
  371. package/dist/chunks/settings-modal-gj0hrah4.js.map +0 -9
  372. package/dist/chunks/sp-overlay.dev-earn5as8.js +0 -17
  373. package/dist/chunks/sp-overlay.dev-earn5as8.js.map +0 -9
  374. package/dist/chunks/sp-popover.dev-frxtfejn.js +0 -8
  375. package/dist/chunks/sp-popover.dev-frxtfejn.js.map +0 -9
  376. package/dist/chunks/sp-progress-circle.dev-7tvw34h8.js +0 -14
  377. package/dist/chunks/sp-progress-circle.dev-7tvw34h8.js.map +0 -9
  378. package/dist/chunks/sp-tooltip.dev-a9fywesm.js +0 -21
  379. package/dist/chunks/sp-tooltip.dev-a9fywesm.js.map +0 -10
  380. package/dist/chunks/studio-4k0m4fmp.js.map +0 -13
  381. package/dist/chunks/studio-568nx4t5.js +0 -469
  382. package/dist/chunks/studio-568nx4t5.js.map +0 -14
  383. package/dist/chunks/studio-9smfzqhc.js +0 -19
  384. package/dist/chunks/studio-9smfzqhc.js.map +0 -10
  385. package/dist/chunks/studio-asvf0j9e.js +0 -429
  386. package/dist/chunks/studio-asvf0j9e.js.map +0 -13
  387. package/dist/chunks/studio-d77qm3pk.js +0 -3427
  388. package/dist/chunks/studio-d77qm3pk.js.map +0 -26
  389. package/dist/chunks/studio-j6gqyjf4.js +0 -1854
  390. package/dist/chunks/studio-j6gqyjf4.js.map +0 -18
  391. package/dist/chunks/studio-n9zmpxjg.js.map +0 -115
  392. package/dist/chunks/studio-qkvt37c0.js.map +0 -9
  393. package/dist/chunks/studio-rq0vxb19.js +0 -3744
  394. package/dist/chunks/studio-rq0vxb19.js.map +0 -22
  395. package/dist/chunks/studio-wd6ewdvd.js +0 -853
  396. package/dist/chunks/studio-wd6ewdvd.js.map +0 -12
  397. package/dist/chunks/studio-xq0t7n5t.js +0 -140
  398. package/dist/chunks/studio-xq0t7n5t.js.map +0 -10
  399. package/dist/chunks/studio-xze4zrs1.js.map +0 -10
  400. package/dist/chunks/studio-ygzav7z5.js.map +0 -46
  401. package/dist/chunks/studio-zmy7241e.js +0 -399
  402. package/dist/chunks/studio-zmy7241e.js.map +0 -12
  403. package/dist/chunks/ws-client-q7hkz3j9.js.map +0 -11
  404. package/src/browse/browse-modal.ts +0 -69
  405. package/src/browse/browse.ts +0 -904
  406. package/src/canvas/canvas-diff.ts +0 -216
  407. package/src/canvas/nested-site-style.ts +0 -58
  408. package/src/new-project/design-fields.ts +0 -264
  409. package/src/new-project/templates.ts +0 -61
  410. package/src/panels/tab-bar.ts +0 -548
  411. package/src/settings/settings-modal.ts +0 -203
  412. /package/dist/chunks/{adapter-z8fkmbmv.js.map → adapter-qfnesn5v.js.map} +0 -0
  413. /package/dist/chunks/{cf-settings-mmyv436d.js.map → cf-settings-73sh5z4p.js.map} +0 -0
  414. /package/dist/chunks/{format-host-2c188n41.js.map → format-host-mkwsmt8d.js.map} +0 -0
  415. /package/dist/chunks/{jx-validate-qx8degj7.js.map → jx-validate-v6qgknrs.js.map} +0 -0
  416. /package/dist/chunks/{studio-w7c6kvk7.js.map → studio-a7pzveq1.js.map} +0 -0
  417. /package/dist/chunks/{studio-hhj92gcr.js.map → studio-s519zc99.js.map} +0 -0
  418. /package/dist/chunks/{studio-bghqfmea.js.map → studio-wwseqyw0.js.map} +0 -0
  419. /package/dist/chunks/{studio-nqw433kv.js.map → studio-xmvbhg31.js.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jxsuite/studio",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "Jx Studio — visual builder for Jx documents",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -18,6 +18,7 @@
18
18
  "dist/workers",
19
19
  "index.html",
20
20
  "canvas.html",
21
+ "styles",
21
22
  "fonts"
22
23
  ],
23
24
  "type": "module",
@@ -28,6 +29,7 @@
28
29
  "./base64": "./src/utils/base64.ts",
29
30
  "./directory-picker": "./src/services/directory-picker.ts",
30
31
  "./import-client": "./src/services/import-client.ts",
32
+ "./github-auth": "./src/github/github-auth.ts",
31
33
  "./platforms/cloud": "./src/platforms/cloud.ts",
32
34
  "./preview-navigate": "./src/canvas/preview-navigate.ts"
33
35
  },
@@ -46,16 +48,16 @@
46
48
  "upgrade": "bunx npm-check-updates -u && bun install"
47
49
  },
48
50
  "dependencies": {
49
- "@atlaskit/pragmatic-drag-and-drop": "^2.0.1",
50
- "@atlaskit/pragmatic-drag-and-drop-hitbox": "^2.0.0",
51
- "@jxsuite/ai": "^0.34.0",
52
- "@jxsuite/collab": "^0.6.0",
53
- "@jxsuite/create": "^1.2.2",
54
- "@jxsuite/formulas": "^0.0.6",
55
- "@jxsuite/markup": "^0.4.2",
56
- "@jxsuite/protocol": "^1.0.0",
57
- "@jxsuite/runtime": "^1.3.2",
58
- "@jxsuite/schema": "^1.5.0",
51
+ "@atlaskit/pragmatic-drag-and-drop": "^3.0.0",
52
+ "@atlaskit/pragmatic-drag-and-drop-hitbox": "^2.1.0",
53
+ "@jxsuite/ai": "^0.35.0",
54
+ "@jxsuite/collab": "^0.7.0",
55
+ "@jxsuite/create": "^1.3.0",
56
+ "@jxsuite/formulas": "^0.0.7",
57
+ "@jxsuite/markup": "^0.4.3",
58
+ "@jxsuite/protocol": "^1.1.0",
59
+ "@jxsuite/runtime": "^2.0.0",
60
+ "@jxsuite/schema": "^1.6.0",
59
61
  "@spectrum-web-components/accordion": "^1.12.2",
60
62
  "@spectrum-web-components/action-bar": "1.12.2",
61
63
  "@spectrum-web-components/action-button": "^1.12.2",
@@ -92,7 +94,7 @@
92
94
  "@spectrum-web-components/toast": "^1.12.2",
93
95
  "@spectrum-web-components/tooltip": "^1.12.2",
94
96
  "@spectrum-web-components/underlay": "^1.12.2",
95
- "@vue/reactivity": "3.5.40",
97
+ "@vue/reactivity": "3.5.41",
96
98
  "ajv": "^8.20.0",
97
99
  "ajv-formats": "^3.0.1",
98
100
  "lit": "^3.3.3",
@@ -103,11 +105,11 @@
103
105
  "yaml": "^2.9.0"
104
106
  },
105
107
  "devDependencies": {
106
- "@happy-dom/global-registrator": "^20.11.1",
108
+ "@happy-dom/global-registrator": "^20.11.2",
107
109
  "@types/mdast": "^4.0.4",
108
- "@webref/css": "^8.7.1",
110
+ "@webref/css": "^8.7.2",
109
111
  "@webref/elements": "^2.7.1",
110
- "@webref/idl": "^3.82.1"
112
+ "@webref/idl": "^3.82.2"
111
113
  },
112
114
  "//vue-reactivity": "Exact pin required — must match @jxsuite/runtime to avoid cross-boundary proxy bugs"
113
115
  }
@@ -14,6 +14,7 @@ import { openModal } from "../ui/layers";
14
14
  import { getPlatform } from "../platform";
15
15
  import { APP_NAME, BUILD_DATE, GIT_COMMIT, LINKS, VERSION } from "../version";
16
16
  import type { AppInfo, PackageInfo } from "../types";
17
+ import type { Command, CommandRegistry } from "../commands/registry";
17
18
 
18
19
  let _handle: ReturnType<typeof openModal> | null = null;
19
20
 
@@ -106,16 +107,7 @@ function renderPackages(): TemplateResult {
106
107
  function renderModal() {
107
108
  const tpl = html`
108
109
  <sp-underlay open @close=${closeAboutModal}></sp-underlay>
109
- <div
110
- class="about-modal"
111
- role="dialog"
112
- aria-label="About ${APP_NAME}"
113
- @keydown=${(e: KeyboardEvent) => {
114
- if (e.key === "Escape") {
115
- closeAboutModal();
116
- }
117
- }}
118
- >
110
+ <div class="about-modal">
119
111
  <div class="settings-modal-header">
120
112
  <h2 class="settings-modal-title">About ${APP_NAME}</h2>
121
113
  <sp-action-button quiet size="s" @click=${closeAboutModal} title="Close">
@@ -151,6 +143,45 @@ function renderModal() {
151
143
  if (_handle) {
152
144
  _handle.update(tpl);
153
145
  } else {
154
- _handle = openModal(tpl);
146
+ _handle = openModal(tpl, { label: `About ${APP_NAME}`, onDismiss: closeAboutModal });
155
147
  }
156
148
  }
149
+
150
+ /**
151
+ * `Help: About` — the record the rail footer's hand-authored button used to be.
152
+ *
153
+ * The rail foot carries **Preferences** and nothing else (plan §3.2 ②). About is not a view you
154
+ * switch to and it is opened roughly once in an app's lifetime, so it costs a rail slot it cannot
155
+ * repay; as a record it stays reachable by name from the palette, which is where a thing you look
156
+ * for by name belongs.
157
+ */
158
+ export function aboutCommands(): Command[] {
159
+ return [
160
+ {
161
+ id: "help.about",
162
+ title: `About ${APP_NAME}`,
163
+ category: "Help",
164
+ level: "application",
165
+ menus: ["palette"],
166
+ group: "9_help",
167
+ run: () => {
168
+ openAboutModal();
169
+ },
170
+ },
171
+ ];
172
+ }
173
+
174
+ /**
175
+ * Register the About verb on the app registry.
176
+ *
177
+ * `appCommandSet()` is the projection CI counts and `docs/studio/interface/commands.md` is
178
+ * generated from — it is NOT what the running app registers. P4 composed `help.about` into that set
179
+ * only, and deleted the rail's About button in the same change, so About became unreachable in the
180
+ * app while every check reported it present. The two roots have to agree.
181
+ *
182
+ * @param {CommandRegistry} registry
183
+ * @returns {void}
184
+ */
185
+ export function registerAboutCommands(registry: CommandRegistry): void {
186
+ registry.registerAll(aboutCommands());
187
+ }
@@ -0,0 +1,240 @@
1
+ /**
2
+ * The Library's verbs.
3
+ *
4
+ * Every piece of Library state a person can reach is reachable here, which is the difference
5
+ * between this and the Manage view it replaces. That view's category filter, its search box and its
6
+ * grid/table switch existed ONLY as buttons inside a modal, so `scripts/screenshots/automation.ts`
7
+ * carried a hand-maintained `BROWSE_CATEGORY_LABELS` table and pressed the buttons through an XPath
8
+ * matched on their rendered text — plan §13's exact complaint. `library.setCategory` is the same
9
+ * action the button runs, and the button is now a rendering of the record.
10
+ *
11
+ * Every setter is idempotent and names the STATE it reaches, never a delta: there is no
12
+ * `library.toggleLayout`, because a toggle against unstated state is what silently inverted
13
+ * eighteen manifest steps when a default flipped.
14
+ */
15
+
16
+ import {
17
+ argsSchema,
18
+ enumArg,
19
+ enumProperty,
20
+ optionalStringArg,
21
+ stringProperty,
22
+ } from "../commands/command-args";
23
+ import { openLibraryTab } from "../grid/grid-open";
24
+ import {
25
+ LIBRARY_CATEGORY_KEYS,
26
+ LIBRARY_LAYOUTS,
27
+ LIBRARY_LAYOUT_LABELS,
28
+ projectLocales,
29
+ } from "./library-model";
30
+ import {
31
+ createLibraryEntry,
32
+ libraryNewEntries,
33
+ refreshLibrary,
34
+ setLibraryCategory,
35
+ setLibraryLayout,
36
+ setLibraryLocale,
37
+ setLibrarySearch,
38
+ } from "./library-pane";
39
+ import type { LibraryLayout } from "./library-model";
40
+ import type { AnyCommand, CommandRegistry } from "../commands/registry";
41
+
42
+ /** Every value `library.setLocale` accepts: the project's own locales, plus "all" for none of them. */
43
+ function localeChoices(): string[] {
44
+ return ["all", ...projectLocales()];
45
+ }
46
+
47
+ /** The Library's command records. */
48
+ export function libraryCommands(): AnyCommand[] {
49
+ return [
50
+ {
51
+ category: "Project",
52
+ id: "library.open",
53
+ // ⌘⇧E — §9.1's "File: Browse Library (⌘⇧E)". The Library is the content surface for a site
54
+ // With a collection, and it was reachable only by palette search and one overflow menu item.
55
+ keybinding: "mod+shift+e",
56
+ level: "project",
57
+ menus: ["commandbar/overflow", "palette", "context/file"],
58
+ group: "1_file",
59
+ requires: "an open project",
60
+ when: (ctx) => ctx.project.open,
61
+ aiTool: {
62
+ description:
63
+ "Open the Library — every page, layout, component, content entry and media file in " +
64
+ "the project, as a browsable tab.",
65
+ name: "open_library",
66
+ },
67
+ run: () => {
68
+ openLibraryTab();
69
+ },
70
+ title: "Open Library",
71
+ },
72
+ {
73
+ args: argsSchema({
74
+ category: enumProperty(
75
+ LIBRARY_CATEGORY_KEYS,
76
+ 'Which category the Library lists. "all" clears the category filter.',
77
+ ),
78
+ }),
79
+ category: "Project",
80
+ id: "library.setCategory",
81
+ level: "project",
82
+ menus: ["palette"],
83
+ group: "1_file",
84
+ requires: "an open project",
85
+ when: (ctx) => ctx.project.open,
86
+ aiTool: {
87
+ description: "Filter the Library to one category of project file.",
88
+ name: "set_library_category",
89
+ },
90
+ run: (_ctx, args) => {
91
+ const key = enumArg("library.setCategory", args, "category", LIBRARY_CATEGORY_KEYS);
92
+ setLibraryCategory(key);
93
+ },
94
+ title: "Library: Show Category",
95
+ },
96
+ {
97
+ args: argsSchema({
98
+ layout: enumProperty(
99
+ LIBRARY_LAYOUTS,
100
+ `How the Library arranges its items — ${LIBRARY_LAYOUTS.map(
101
+ (layout) => LIBRARY_LAYOUT_LABELS[layout],
102
+ ).join(", ")}.`,
103
+ ),
104
+ }),
105
+ category: "Project",
106
+ id: "library.setLayout",
107
+ level: "project",
108
+ menus: ["palette"],
109
+ group: "1_file",
110
+ requires: "an open project",
111
+ when: (ctx) => ctx.project.open,
112
+ aiTool: {
113
+ description: "Choose the Library's layout: table, cards, media, calendar or board.",
114
+ name: "set_library_layout",
115
+ },
116
+ run: (_ctx, args) => {
117
+ const layout = enumArg<LibraryLayout>("library.setLayout", args, "layout", LIBRARY_LAYOUTS);
118
+ setLibraryLayout(layout);
119
+ },
120
+ title: "Library: Set Layout",
121
+ },
122
+ {
123
+ args: {
124
+ additionalProperties: false,
125
+ properties: {
126
+ query: stringProperty("Text matched against each file's name and path. Empty clears it."),
127
+ },
128
+ type: "object",
129
+ },
130
+ category: "Project",
131
+ id: "library.setSearch",
132
+ level: "project",
133
+ menus: ["palette"],
134
+ group: "1_file",
135
+ requires: "an open project",
136
+ when: (ctx) => ctx.project.open,
137
+ aiTool: {
138
+ description: "Filter the Library's items by a text query over name and path.",
139
+ name: "set_library_search",
140
+ },
141
+ run: (_ctx, args) => {
142
+ setLibrarySearch(optionalStringArg("library.setSearch", args, "query") ?? "");
143
+ },
144
+ title: "Library: Filter Files",
145
+ },
146
+ {
147
+ args: argsSchema({
148
+ locale: {
149
+ /*
150
+ * A getter, for the reason `content/entry-commands.ts` gives at length: this record is
151
+ * built at module scope, before any project is open, so `enum: localeChoices()` would
152
+ * freeze at `["all"]` and the palette would offer that forever. The getter is read when
153
+ * the prompt opens and when the AI tool list is serialised.
154
+ */
155
+ get enum() {
156
+ return localeChoices();
157
+ },
158
+ description:
159
+ 'Which language the Library lists, as a BCP 47 tag the project declares. "all" ' +
160
+ "clears the language filter.",
161
+ type: "string",
162
+ },
163
+ }),
164
+ category: "Project",
165
+ id: "library.setLocale",
166
+ level: "project",
167
+ menus: ["palette"],
168
+ group: "1_file",
169
+ requires: "a project with more than one locale",
170
+ // A monolingual project has no facet to set: the Library draws no picker, and offering the
171
+ // Verb would name a value space with one member in it.
172
+ when: (ctx) => ctx.project.open && ctx.project.isMultilingual,
173
+ aiTool: {
174
+ description:
175
+ "Filter the Library to the files under one language's directory. Files outside a " +
176
+ "locale directory — which under prefix-except-default includes the default language's " +
177
+ "own pages — are not in any language's list.",
178
+ name: "set_library_locale",
179
+ },
180
+ run: (_ctx, args) => {
181
+ const choice = enumArg("library.setLocale", args, "locale", localeChoices());
182
+ setLibraryLocale(choice === "all" ? "" : choice);
183
+ },
184
+ title: "Library: Show Language",
185
+ },
186
+ {
187
+ category: "Project",
188
+ id: "library.refresh",
189
+ level: "project",
190
+ menus: ["palette"],
191
+ group: "1_file",
192
+ requires: "an open project",
193
+ when: (ctx) => ctx.project.open,
194
+ aiTool: {
195
+ description: "Re-scan the project's files and rebuild the Library's listing.",
196
+ name: "refresh_library",
197
+ },
198
+ run: () => refreshLibrary(),
199
+ title: "Library: Rescan Files",
200
+ },
201
+ {
202
+ args: {
203
+ additionalProperties: false,
204
+ properties: {
205
+ type: stringProperty(
206
+ 'What to create: "page", "layout", "component", or "collection:<name>" for a ' +
207
+ "content collection this project declares.",
208
+ ),
209
+ },
210
+ required: ["type"],
211
+ type: "object",
212
+ },
213
+ category: "Project",
214
+ id: "library.newEntry",
215
+ level: "project",
216
+ menus: ["palette"],
217
+ group: "1_file",
218
+ requires: "an open project",
219
+ when: (ctx) => ctx.project.open,
220
+ undo: "project",
221
+ aiTool: {
222
+ description:
223
+ "Create a page, layout, component or content entry in the directory its kind belongs " +
224
+ "to, then open it.",
225
+ name: "new_library_entry",
226
+ },
227
+ run: async (_ctx, args) => {
228
+ const declared = libraryNewEntries().map((entry) => entry.key);
229
+ const key = enumArg("library.newEntry", args, "type", declared);
230
+ await createLibraryEntry(key);
231
+ },
232
+ title: "Library: New Entry",
233
+ },
234
+ ];
235
+ }
236
+
237
+ /** Register the Library's verbs. */
238
+ export function registerLibraryCommands(registry: CommandRegistry): void {
239
+ registry.registerAll(libraryCommands());
240
+ }