@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
@@ -635,6 +635,7 @@ var schema_default = {
635
635
  "resolvePaths",
636
636
  "lower",
637
637
  "emit",
638
+ "head",
638
639
  "assets",
639
640
  "mount",
640
641
  "dialect",
@@ -958,11 +959,24 @@ var schema_default = {
958
959
  domain: {
959
960
  type: "string"
960
961
  },
961
- expires: {
962
- type: "string"
963
- },
964
962
  filter: {
965
- $ref: "#/$defs/RefObject"
963
+ anyOf: [
964
+ {
965
+ $ref: "#/$defs/RefObject"
966
+ },
967
+ {
968
+ description: "A single filter object, e.g. an equality shorthand.",
969
+ type: "object"
970
+ },
971
+ {
972
+ description: 'Ordered filter rules, e.g. [{ field: "Slug", op: "not empty" }].',
973
+ items: {
974
+ type: "object"
975
+ },
976
+ type: "array"
977
+ }
978
+ ],
979
+ description: "Filter configuration: a reactive $ref binding, a single filter object, or an ordered array of rules."
966
980
  },
967
981
  headers: {
968
982
  additionalProperties: {
@@ -1543,7 +1557,7 @@ var schema_default = {
1543
1557
  title: "Pure method — genuine prototype methods; receiver in target, args in value"
1544
1558
  },
1545
1559
  {
1546
- description: "Invoke a callable, pure in formula position: target is the callee pointer — a named formula entry (#/state/…) or a blessed pure global via window#/ (Math.*, JSON.*, Object.keys/values/entries, and the Intl helpers Intl/formatNumber, Intl/formatDate, Intl/formatRelativeTime) — and value is the positional argument list (the splice args-in-value precedent). Argument order follows the callee's declared parameters.",
1560
+ description: "Invoke a callable, pure in formula position: target is the callee pointer — a named formula entry (#/state/…) or a blessed pure global via window#/ (Math.*, JSON.*, Object.keys/values/entries, and the Intl helpers Intl/formatNumber, Intl/formatDate, Intl/formatRelativeTime, Intl/formatList, Intl/plural, Intl/compare, Intl/displayName, Intl/segment) — and value is the positional argument list (the splice args-in-value precedent). Argument order follows the callee's declared parameters.",
1547
1561
  not: {
1548
1562
  required: [
1549
1563
  "initial"
@@ -1824,7 +1838,7 @@ var schema_default = {
1824
1838
  $ref: "#/$defs/NumberOrRef"
1825
1839
  },
1826
1840
  tagName: {
1827
- $ref: "#/$defs/TagName"
1841
+ $ref: "#/$defs/ElementTagName"
1828
1842
  },
1829
1843
  textContent: {
1830
1844
  $ref: "#/$defs/StringOrRef"
@@ -6021,10 +6035,13 @@ var schema_default = {
6021
6035
  oneOf: [
6022
6036
  {
6023
6037
  items: {
6024
- oneOf: [
6038
+ anyOf: [
6025
6039
  {
6026
6040
  $ref: "#/$defs/ElementDef"
6027
6041
  },
6042
+ {
6043
+ $ref: "#/$defs/SwitchNode"
6044
+ },
6028
6045
  {
6029
6046
  $ref: "#/$defs/ArrayNamespace"
6030
6047
  },
@@ -7720,6 +7737,26 @@ var schema_default = {
7720
7737
  }
7721
7738
  ]
7722
7739
  },
7740
+ "animation-delay-end": {
7741
+ oneOf: [
7742
+ {
7743
+ type: "string"
7744
+ },
7745
+ {
7746
+ type: "number"
7747
+ }
7748
+ ]
7749
+ },
7750
+ "animation-delay-start": {
7751
+ oneOf: [
7752
+ {
7753
+ type: "string"
7754
+ },
7755
+ {
7756
+ type: "number"
7757
+ }
7758
+ ]
7759
+ },
7723
7760
  "animation-direction": {
7724
7761
  oneOf: [
7725
7762
  {
@@ -7870,6 +7907,26 @@ var schema_default = {
7870
7907
  }
7871
7908
  ]
7872
7909
  },
7910
+ animationDelayEnd: {
7911
+ oneOf: [
7912
+ {
7913
+ type: "string"
7914
+ },
7915
+ {
7916
+ type: "number"
7917
+ }
7918
+ ]
7919
+ },
7920
+ animationDelayStart: {
7921
+ oneOf: [
7922
+ {
7923
+ type: "string"
7924
+ },
7925
+ {
7926
+ type: "number"
7927
+ }
7928
+ ]
7929
+ },
7873
7930
  animationDirection: {
7874
7931
  oneOf: [
7875
7932
  {
@@ -18210,6 +18267,16 @@ var schema_default = {
18210
18267
  }
18211
18268
  ]
18212
18269
  },
18270
+ "scroll-axis-lock": {
18271
+ oneOf: [
18272
+ {
18273
+ type: "string"
18274
+ },
18275
+ {
18276
+ type: "number"
18277
+ }
18278
+ ]
18279
+ },
18213
18280
  "scroll-behavior": {
18214
18281
  oneOf: [
18215
18282
  {
@@ -18530,6 +18597,16 @@ var schema_default = {
18530
18597
  }
18531
18598
  ]
18532
18599
  },
18600
+ scrollAxisLock: {
18601
+ oneOf: [
18602
+ {
18603
+ type: "string"
18604
+ },
18605
+ {
18606
+ type: "number"
18607
+ }
18608
+ ]
18609
+ },
18533
18610
  scrollBehavior: {
18534
18611
  oneOf: [
18535
18612
  {
@@ -22675,8 +22752,9 @@ var schema_default = {
22675
22752
  type: "object"
22676
22753
  },
22677
22754
  TagName: {
22678
- description: "HTML element tag name or custom element name (must contain a hyphen per Web Components spec).",
22755
+ description: "HTML element tag name or custom element name (must contain a hyphen per Web Components spec). A NAME, never an expression: no `${…}` position in the pipeline evaluates a tagName. Use `$switch`/`cases` to vary the element.",
22679
22756
  minLength: 1,
22757
+ pattern: "^[a-zA-Z][a-zA-Z0-9._-]*$",
22680
22758
  type: "string",
22681
22759
  examples: [
22682
22760
  "a",
@@ -22892,6 +22970,85 @@ var schema_default = {
22892
22970
  "user-card"
22893
22971
  ]
22894
22972
  },
22973
+ TagExpression: {
22974
+ anyOf: [
22975
+ {
22976
+ additionalProperties: false,
22977
+ description: "Two-way: `target` is the test, `value` the tag when it is truthy, `initial` the tag when it is not.",
22978
+ properties: {
22979
+ initial: {
22980
+ $ref: "#/$defs/TagName"
22981
+ },
22982
+ operator: {
22983
+ const: "?:",
22984
+ type: "string"
22985
+ },
22986
+ target: {
22987
+ $ref: "#/$defs/ExpressionOperand"
22988
+ },
22989
+ value: {
22990
+ $ref: "#/$defs/TagName"
22991
+ }
22992
+ },
22993
+ required: [
22994
+ "operator",
22995
+ "target",
22996
+ "value",
22997
+ "initial"
22998
+ ],
22999
+ title: "?: — the tag when the test holds, and the tag when it does not"
23000
+ },
23001
+ {
23002
+ additionalProperties: false,
23003
+ description: "Multiway: `target` is the discriminant, matched against case keys by its string form. `default` is required — an element with no tag cannot exist.",
23004
+ properties: {
23005
+ cases: {
23006
+ additionalProperties: {
23007
+ $ref: "#/$defs/TagName"
23008
+ },
23009
+ type: "object"
23010
+ },
23011
+ default: {
23012
+ $ref: "#/$defs/TagName"
23013
+ },
23014
+ operator: {
23015
+ const: "switch",
23016
+ type: "string"
23017
+ },
23018
+ target: {
23019
+ $ref: "#/$defs/ExpressionOperand"
23020
+ }
23021
+ },
23022
+ required: [
23023
+ "operator",
23024
+ "target",
23025
+ "cases",
23026
+ "default"
23027
+ ],
23028
+ title: "switch — one tag per discriminant value, with a required fallback"
23029
+ }
23030
+ ],
23031
+ description: "A tag name chosen at element creation. Every branch resolves to a `TagName`, so the candidate set is enumerable without evaluating anything."
23032
+ },
23033
+ ElementTagName: {
23034
+ anyOf: [
23035
+ {
23036
+ $ref: "#/$defs/TagName"
23037
+ },
23038
+ {
23039
+ additionalProperties: false,
23040
+ properties: {
23041
+ $expression: {
23042
+ $ref: "#/$defs/TagExpression"
23043
+ }
23044
+ },
23045
+ required: [
23046
+ "$expression"
23047
+ ],
23048
+ type: "object"
23049
+ }
23050
+ ]
23051
+ },
22895
23052
  JsonSchemaType: {
22896
23053
  enum: [
22897
23054
  "string",
@@ -22931,7 +23088,15 @@ var schema_default = {
22931
23088
  type: "string"
22932
23089
  },
22933
23090
  textContent: {
22934
- type: "string"
23091
+ description: 'Element content. An object is serialized to JSON inside the tag — that is how a JSON-LD block (`<script type="application/ld+json">`) is authored.',
23092
+ oneOf: [
23093
+ {
23094
+ type: "string"
23095
+ },
23096
+ {
23097
+ type: "object"
23098
+ }
23099
+ ]
22935
23100
  }
22936
23101
  },
22937
23102
  required: [
@@ -22954,6 +23119,10 @@ var schema_default = {
22954
23119
  optimize: {
22955
23120
  type: "boolean"
22956
23121
  },
23122
+ picture: {
23123
+ description: "Wrap a multi-format image in a <picture> with one <source> per format (default true). With it off the <img> carries a srcset in the preferred format alone, which browsers that cannot decode that format will still select from.",
23124
+ type: "boolean"
23125
+ },
22957
23126
  quality: {
22958
23127
  properties: {
22959
23128
  avif: {
@@ -23096,9 +23265,9 @@ var schema_default = {
23096
23265
  type: "array"
23097
23266
  },
23098
23267
  $head: {
23099
- description: "Page-level <head> entries. Array of element definitions for meta tags, link tags, script tags, etc. Merged with layout and site-level $head entries.",
23268
+ description: "Page-level <head> entries. Array of head entries for meta tags, link tags, script tags, etc. Merged with layout and site-level $head entries.",
23100
23269
  items: {
23101
- $ref: "#/$defs/ElementDef"
23270
+ $ref: "#/$defs/HeadEntry"
23102
23271
  },
23103
23272
  type: "array"
23104
23273
  },
@@ -23111,6 +23280,32 @@ var schema_default = {
23111
23280
  ],
23112
23281
  type: "string"
23113
23282
  },
23283
+ $dir: {
23284
+ description: "Base direction for this page's <html> element, overriding `defaults.dir`. Right-to-left content renders left-to-right without it.",
23285
+ enum: [
23286
+ "ltr",
23287
+ "rtl",
23288
+ "auto"
23289
+ ],
23290
+ type: "string"
23291
+ },
23292
+ $lang: {
23293
+ description: "Language tag for this page's <html> element, overriding `defaults.lang` (site-architecture.md §8.4).",
23294
+ examples: [
23295
+ "en",
23296
+ "fr",
23297
+ "ar-EG"
23298
+ ],
23299
+ type: "string"
23300
+ },
23301
+ $translationKey: {
23302
+ description: "This page's identity across languages, overriding the one its path implies (site-architecture.md §13.5). Two routes are translations when their keys match; the default key is the path with the locale prefix removed, which is right whenever the paths are parallel and wrong for a localized slug — /fr-ca/a-propos/ shares nothing with /about/ until one of them says so.",
23303
+ examples: [
23304
+ "about",
23305
+ "blog/hello-world"
23306
+ ],
23307
+ type: "string"
23308
+ },
23114
23309
  $layout: {
23115
23310
  description: "Layout reference for pages. String path to a layout JSON file, or false to opt out of the default layout.",
23116
23311
  examples: [
@@ -23126,6 +23321,26 @@ var schema_default = {
23126
23321
  }
23127
23322
  ]
23128
23323
  },
23324
+ $shadow: {
23325
+ description: "Render this component into a shadow root instead of the light DOM (spec.md §16.6). Off unless set: a shadow root isolates the component's styles from the page and replaces the <slot> emulation with real slot distribution, so it changes how the component composes. Overrides `defaults.shadow` in both directions — `false` opts one component out of a project that opted in.",
23326
+ oneOf: [
23327
+ {
23328
+ enum: [
23329
+ "open",
23330
+ "closed"
23331
+ ],
23332
+ type: "string"
23333
+ },
23334
+ {
23335
+ const: false,
23336
+ type: "boolean"
23337
+ }
23338
+ ]
23339
+ },
23340
+ $sitemap: {
23341
+ description: "Set false to exclude this page from sitemap.xml (site-architecture.md §8.4.1). Every other page with a URL is included.",
23342
+ type: "boolean"
23343
+ },
23129
23344
  $media: {
23130
23345
  additionalProperties: {
23131
23346
  type: "string"
@@ -23221,6 +23436,10 @@ var project_schema_default = {
23221
23436
  optimize: {
23222
23437
  type: "boolean"
23223
23438
  },
23439
+ picture: {
23440
+ description: "Wrap a multi-format image in a <picture> with one <source> per format (default true). With it off the <img> carries a srcset in the preferred format alone, which browsers that cannot decode that format will still select from.",
23441
+ type: "boolean"
23442
+ },
23224
23443
  quality: {
23225
23444
  properties: {
23226
23445
  avif: {
@@ -23430,6 +23649,167 @@ var project_schema_default = {
23430
23649
  description: "Output directory for compiled site.",
23431
23650
  type: "string"
23432
23651
  },
23652
+ headers: {
23653
+ additionalProperties: false,
23654
+ description: "Emit dist/_headers — the response headers only the build can know. Honored by Cloudflare Pages/Workers assets and Netlify; on the node/bun adapters the file documents what a reverse proxy in front of them must send.",
23655
+ properties: {
23656
+ cache: {
23657
+ default: "auto",
23658
+ description: '"auto" marks the content-addressed image variants immutable (RFC 8246) and revalidates everything else (RFC 9111). "off" emits no Cache-Control at all.',
23659
+ enum: [
23660
+ "auto",
23661
+ "off"
23662
+ ],
23663
+ type: "string"
23664
+ },
23665
+ enabled: {
23666
+ default: true,
23667
+ type: "boolean"
23668
+ },
23669
+ rules: {
23670
+ additionalProperties: {
23671
+ additionalProperties: {
23672
+ type: "string"
23673
+ },
23674
+ type: "object"
23675
+ },
23676
+ description: "Verbatim rules, merged after the generated block.",
23677
+ propertyNames: {
23678
+ pattern: "^/"
23679
+ },
23680
+ type: "object"
23681
+ },
23682
+ security: {
23683
+ additionalProperties: false,
23684
+ properties: {
23685
+ contentTypeOptions: {
23686
+ default: true,
23687
+ type: "boolean"
23688
+ },
23689
+ csp: {
23690
+ default: false,
23691
+ description: "CSP Level 3. Off by default: unlike the other security headers this one governs code the build cannot see — a third-party script that loads a second script, a widget that opens a frame — so turning it on is a change to verify in the browser console, not a safe default. `script-src` is derived from the inline scripts and external origins the build emitted; `style-src` keeps 'unsafe-inline', because per-page <style> blocks and per-element style attributes have no site-wide hash.",
23692
+ oneOf: [
23693
+ {
23694
+ type: "boolean"
23695
+ },
23696
+ {
23697
+ const: "report-only"
23698
+ },
23699
+ {
23700
+ additionalProperties: false,
23701
+ properties: {
23702
+ directives: {
23703
+ additionalProperties: {
23704
+ oneOf: [
23705
+ {
23706
+ type: "string"
23707
+ },
23708
+ {
23709
+ const: false
23710
+ }
23711
+ ]
23712
+ },
23713
+ description: "Replace (string) or remove (false) a computed directive. A replacement is wholesale, so an addition restates the defaults.",
23714
+ type: "object"
23715
+ },
23716
+ mode: {
23717
+ default: "enforce",
23718
+ enum: [
23719
+ "enforce",
23720
+ "report-only"
23721
+ ]
23722
+ },
23723
+ reportUri: {
23724
+ format: "uri-reference",
23725
+ type: "string"
23726
+ }
23727
+ },
23728
+ type: "object"
23729
+ }
23730
+ ]
23731
+ },
23732
+ frameOptions: {
23733
+ default: "SAMEORIGIN",
23734
+ oneOf: [
23735
+ {
23736
+ enum: [
23737
+ "DENY",
23738
+ "SAMEORIGIN"
23739
+ ],
23740
+ type: "string"
23741
+ },
23742
+ {
23743
+ const: false
23744
+ }
23745
+ ]
23746
+ },
23747
+ hsts: {
23748
+ default: false,
23749
+ description: "RFC 6797. Off by default: a wrong max-age locks the apex domain to HTTPS for that long, and the mistake is invisible until a certificate lapses. `preload` requires `includeSubDomains` and is a build error without it.",
23750
+ oneOf: [
23751
+ {
23752
+ type: "boolean"
23753
+ },
23754
+ {
23755
+ additionalProperties: false,
23756
+ properties: {
23757
+ includeSubDomains: {
23758
+ default: true,
23759
+ type: "boolean"
23760
+ },
23761
+ maxAge: {
23762
+ default: 31536000,
23763
+ minimum: 0,
23764
+ type: "integer"
23765
+ },
23766
+ preload: {
23767
+ default: false,
23768
+ type: "boolean"
23769
+ }
23770
+ },
23771
+ type: "object"
23772
+ }
23773
+ ]
23774
+ },
23775
+ permissionsPolicy: {
23776
+ default: "camera=(), microphone=(), geolocation=()",
23777
+ oneOf: [
23778
+ {
23779
+ type: "string"
23780
+ },
23781
+ {
23782
+ const: false
23783
+ }
23784
+ ]
23785
+ },
23786
+ referrerPolicy: {
23787
+ default: "strict-origin-when-cross-origin",
23788
+ oneOf: [
23789
+ {
23790
+ enum: [
23791
+ "no-referrer",
23792
+ "no-referrer-when-downgrade",
23793
+ "origin",
23794
+ "origin-when-cross-origin",
23795
+ "same-origin",
23796
+ "strict-origin",
23797
+ "strict-origin-when-cross-origin",
23798
+ "unsafe-url"
23799
+ ],
23800
+ type: "string"
23801
+ },
23802
+ {
23803
+ const: false
23804
+ }
23805
+ ]
23806
+ }
23807
+ },
23808
+ type: "object"
23809
+ }
23810
+ },
23811
+ type: "object"
23812
+ },
23433
23813
  sitemap: {
23434
23814
  default: true,
23435
23815
  description: "Generate sitemap.xml from the route table (requires `url`). Set false to disable.",
@@ -23463,9 +23843,18 @@ var project_schema_default = {
23463
23843
  description: "Default charset for the page.",
23464
23844
  type: "string"
23465
23845
  },
23846
+ dir: {
23847
+ description: "Base direction for the <html> element. Omitted when unset — a page's `$dir` overrides it. Right-to-left content renders left-to-right without this.",
23848
+ enum: [
23849
+ "ltr",
23850
+ "rtl",
23851
+ "auto"
23852
+ ],
23853
+ type: "string"
23854
+ },
23466
23855
  lang: {
23467
23856
  default: "en",
23468
- description: "Default lang attribute for the <html> element.",
23857
+ description: "Default lang attribute for the <html> element. A page's `$lang` overrides it.",
23469
23858
  type: "string"
23470
23859
  },
23471
23860
  layout: {
@@ -23482,6 +23871,23 @@ var project_schema_default = {
23482
23871
  type: "null"
23483
23872
  }
23484
23873
  ]
23874
+ },
23875
+ shadow: {
23876
+ default: false,
23877
+ description: "Default shadow-DOM mode for every component (spec.md §16.6). Off unless set: a shadow root isolates component styles from the page and replaces the <slot> emulation with real slot distribution. A component's own `$shadow` overrides this in both directions.",
23878
+ oneOf: [
23879
+ {
23880
+ enum: [
23881
+ "open",
23882
+ "closed"
23883
+ ],
23884
+ type: "string"
23885
+ },
23886
+ {
23887
+ const: false,
23888
+ type: "boolean"
23889
+ }
23890
+ ]
23485
23891
  }
23486
23892
  },
23487
23893
  type: "object"
@@ -23498,18 +23904,203 @@ var project_schema_default = {
23498
23904
  },
23499
23905
  type: "array"
23500
23906
  },
23907
+ manifest: {
23908
+ additionalProperties: false,
23909
+ description: 'W3C Web App Manifest, emitted as manifest.webmanifest with a <link rel="manifest"> on every page. Absent means no manifest: it is a claim that a site is meant to be installed, and most are not.',
23910
+ properties: {
23911
+ backgroundColor: {
23912
+ type: "string"
23913
+ },
23914
+ categories: {
23915
+ items: {
23916
+ type: "string"
23917
+ },
23918
+ type: "array"
23919
+ },
23920
+ description: {
23921
+ type: "string"
23922
+ },
23923
+ dir: {
23924
+ enum: [
23925
+ "ltr",
23926
+ "rtl",
23927
+ "auto"
23928
+ ],
23929
+ type: "string"
23930
+ },
23931
+ display: {
23932
+ default: "standalone",
23933
+ enum: [
23934
+ "fullscreen",
23935
+ "standalone",
23936
+ "minimal-ui",
23937
+ "browser"
23938
+ ],
23939
+ type: "string"
23940
+ },
23941
+ enabled: {
23942
+ default: true,
23943
+ type: "boolean"
23944
+ },
23945
+ icons: {
23946
+ description: "Icons at 192px and 512px are what browsers require before offering to install the site; the build warns when either is missing.",
23947
+ items: {
23948
+ additionalProperties: false,
23949
+ properties: {
23950
+ purpose: {
23951
+ type: "string"
23952
+ },
23953
+ sizes: {
23954
+ examples: [
23955
+ "192x192"
23956
+ ],
23957
+ type: "string"
23958
+ },
23959
+ src: {
23960
+ type: "string"
23961
+ },
23962
+ type: {
23963
+ type: "string"
23964
+ }
23965
+ },
23966
+ required: [
23967
+ "src"
23968
+ ],
23969
+ type: "object"
23970
+ },
23971
+ type: "array"
23972
+ },
23973
+ lang: {
23974
+ type: "string"
23975
+ },
23976
+ name: {
23977
+ description: "Defaults to the project name.",
23978
+ type: "string"
23979
+ },
23980
+ orientation: {
23981
+ type: "string"
23982
+ },
23983
+ scope: {
23984
+ type: "string"
23985
+ },
23986
+ shortName: {
23987
+ type: "string"
23988
+ },
23989
+ startUrl: {
23990
+ default: "/",
23991
+ type: "string"
23992
+ },
23993
+ themeColor: {
23994
+ type: "string"
23995
+ }
23996
+ },
23997
+ type: "object"
23998
+ },
23999
+ serviceWorker: {
24000
+ default: false,
24001
+ description: "W3C Service Worker, emitted as sw.js. Off unless declared — a worker is sticky, so it is the one output that can keep breaking visitors after a deploy tries to fix them. **Turning it off means `false`, not deleting the key**: `false` emits a tombstone at the same URL that unregisters the old worker and clears its caches, and a 404 there is not an instruction to stop. HTML is always network-first; only the content-addressed /images/_optimized/* is served cache-first.",
24002
+ oneOf: [
24003
+ {
24004
+ type: "boolean"
24005
+ },
24006
+ {
24007
+ additionalProperties: false,
24008
+ properties: {
24009
+ enabled: {
24010
+ default: true,
24011
+ type: "boolean"
24012
+ },
24013
+ offlineFallback: {
24014
+ description: "Page served for a failed navigation. Added to `precache` if not already there.",
24015
+ type: "string"
24016
+ },
24017
+ precache: {
24018
+ description: "Site-absolute URLs fetched at install time. Each must be a file this build produces; one that is not fails the build, because a single unreachable entry stops the worker installing at all.",
24019
+ items: {
24020
+ pattern: "^/",
24021
+ type: "string"
24022
+ },
24023
+ type: "array"
24024
+ },
24025
+ scope: {
24026
+ default: "/",
24027
+ type: "string"
24028
+ }
24029
+ },
24030
+ type: "object"
24031
+ }
24032
+ ]
24033
+ },
24034
+ securityTxt: {
24035
+ additionalProperties: false,
24036
+ description: "RFC 9116 security.txt, emitted at .well-known/security.txt. `expires` is required by §2.5.5 and an absent or past value is a build error — an expired file advertises a reporting channel while telling the reporter not to trust it. A hand-placed public/.well-known/security.txt shadows this, which is how a clearsigned file ships.",
24037
+ properties: {
24038
+ acknowledgments: {
24039
+ items: {
24040
+ type: "string"
24041
+ },
24042
+ type: "array"
24043
+ },
24044
+ canonical: {
24045
+ type: "string"
24046
+ },
24047
+ contact: {
24048
+ description: "At least one mailto:, https: or tel: URI (§2.5.3).",
24049
+ items: {
24050
+ type: "string"
24051
+ },
24052
+ type: "array"
24053
+ },
24054
+ enabled: {
24055
+ default: true,
24056
+ type: "boolean"
24057
+ },
24058
+ encryption: {
24059
+ items: {
24060
+ type: "string"
24061
+ },
24062
+ type: "array"
24063
+ },
24064
+ expires: {
24065
+ format: "date-time",
24066
+ type: "string"
24067
+ },
24068
+ hiring: {
24069
+ items: {
24070
+ type: "string"
24071
+ },
24072
+ type: "array"
24073
+ },
24074
+ policy: {
24075
+ items: {
24076
+ type: "string"
24077
+ },
24078
+ type: "array"
24079
+ },
24080
+ preferredLanguages: {
24081
+ description: "BCP 47 tags, validated and canonicalized like i18n.locales.",
24082
+ items: {
24083
+ pattern: "^[A-Za-z]{2,8}(-[A-Za-z0-9]{1,8})*$",
24084
+ type: "string"
24085
+ },
24086
+ type: "array"
24087
+ }
24088
+ },
24089
+ type: "object"
24090
+ },
23501
24091
  i18n: {
23502
24092
  description: "Internationalization configuration.",
23503
24093
  properties: {
23504
24094
  defaultLocale: {
23505
- description: "Default locale code.",
24095
+ description: "Default locale, as a BCP 47 language tag. The pattern catches shape errors (`en_US`, `en--US`); the build is the authority on well-formedness.",
23506
24096
  examples: [
23507
24097
  "en"
23508
24098
  ],
24099
+ pattern: "^[A-Za-z]{2,8}(-[A-Za-z0-9]{1,8})*$",
23509
24100
  type: "string"
23510
24101
  },
23511
24102
  locales: {
23512
- description: "Available locale codes.",
24103
+ description: "Available locales, as BCP 47 language tags.",
23513
24104
  examples: [
23514
24105
  [
23515
24106
  "en",
@@ -23518,6 +24109,7 @@ var project_schema_default = {
23518
24109
  ]
23519
24110
  ],
23520
24111
  items: {
24112
+ pattern: "^[A-Za-z]{2,8}(-[A-Za-z0-9]{1,8})*$",
23521
24113
  type: "string"
23522
24114
  },
23523
24115
  type: "array"
@@ -23560,14 +24152,73 @@ var project_schema_default = {
23560
24152
  },
23561
24153
  redirects: {
23562
24154
  additionalProperties: {
23563
- type: "string"
24155
+ oneOf: [
24156
+ {
24157
+ description: "Destination path or URL; implies a 301.",
24158
+ type: "string"
24159
+ },
24160
+ {
24161
+ additionalProperties: false,
24162
+ description: "A redirect with an explicit RFC 9110 §15.4 status.",
24163
+ properties: {
24164
+ destination: {
24165
+ type: "string"
24166
+ },
24167
+ status: {
24168
+ default: 301,
24169
+ description: "RFC 9110 §15.4 redirection status. 307 and 308 preserve the request method; 301 and 302 historically do not.",
24170
+ enum: [
24171
+ 301,
24172
+ 302,
24173
+ 303,
24174
+ 307,
24175
+ 308
24176
+ ],
24177
+ type: "integer"
24178
+ }
24179
+ },
24180
+ required: [
24181
+ "destination"
24182
+ ],
24183
+ type: "object"
24184
+ },
24185
+ {
24186
+ additionalProperties: false,
24187
+ description: "A rewrite (proxy): the destination's content is served AT the source URL, with no redirect. Emitted as status 200 in `_redirects`, which is the host convention — not an HTTP redirection status.",
24188
+ properties: {
24189
+ destination: {
24190
+ type: "string"
24191
+ },
24192
+ rewrite: {
24193
+ const: true,
24194
+ type: "boolean"
24195
+ }
24196
+ },
24197
+ required: [
24198
+ "destination",
24199
+ "rewrite"
24200
+ ],
24201
+ type: "object"
24202
+ }
24203
+ ]
23564
24204
  },
23565
- description: "Static redirect rules. Maps source paths to destination paths.",
24205
+ description: "Static redirect and rewrite rules. Keys are source paths in URLPattern pathname syntax.",
23566
24206
  examples: [
23567
24207
  {
24208
+ "/api/*": {
24209
+ destination: "https://api.example.com/*",
24210
+ rewrite: true
24211
+ },
24212
+ "/legacy/*": {
24213
+ destination: "/archive/*",
24214
+ status: 308
24215
+ },
23568
24216
  "/old-about": "/about"
23569
24217
  }
23570
24218
  ],
24219
+ propertyNames: {
24220
+ pattern: "^/"
24221
+ },
23571
24222
  type: "object"
23572
24223
  },
23573
24224
  state: {
@@ -23606,5 +24257,5 @@ var project_schema_default = {
23606
24257
 
23607
24258
  export { schema_default, project_schema_default };
23608
24259
 
23609
- //# debugId=D1F5C195B795406564756E2164756E21
23610
- //# sourceMappingURL=studio-qkvt37c0.js.map
24260
+ //# debugId=54E7850A0697E18F64756E2164756E21
24261
+ //# sourceMappingURL=studio-tr20m8g8.js.map