@phis/ui 0.1.0 → 0.2.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 (2327) hide show
  1. package/README.md +119 -2009
  2. package/cms/plugins.d.ts +1 -2
  3. package/cms/plugins.js +0 -1
  4. package/cms.d.ts +2 -2
  5. package/cms.js +2 -2
  6. package/components/account/avatar-client.js +12 -17
  7. package/components/calendar/gregory-calendar-adapter-client.js +15 -13
  8. package/components/cms/clients/phi-cms-node-visibility-gate.d.ts +19 -0
  9. package/components/cms/clients/phi-cms-node-visibility-gate.js +1 -0
  10. package/components/cms/phi-cms-area-access-guard.d.ts +21 -0
  11. package/components/cms/phi-cms-area-access-guard.js +48 -0
  12. package/components/cms/phi-cms-area-render-scope.d.ts +6 -65
  13. package/components/cms/phi-cms-area-render-scope.js +8 -7
  14. package/components/cms/phi-cms-error-page.d.ts +1 -1
  15. package/components/cms/phi-cms-error-page.js +14 -12
  16. package/components/cms/phi-cms-layout-renderer.d.ts +54 -2
  17. package/components/cms/phi-cms-layout-renderer.js +179 -74
  18. package/components/cms/phi-cms-page-redirect.js +10 -5
  19. package/components/cms/phi-cms-page-renderer.js +2 -1
  20. package/components/cms/phi-cms-render-diagnostic-client.js +3 -3
  21. package/components/cms/phi-cms-root-layout.js +52 -25
  22. package/components/cms/phi-cms-root-page.js +30 -30
  23. package/components/cms/phi-cms-root-slot-page.js +16 -19
  24. package/components/cms/phi-cms-runtime-registry.d.ts +20 -2
  25. package/components/cms/phi-cms-runtime-registry.js +12 -0
  26. package/components/cms/phi-hard-forward.d.ts +21 -0
  27. package/components/cms/phi-hard-forward.js +26 -0
  28. package/components/controls/phi-accordion-control.d.ts +30 -0
  29. package/components/controls/phi-accordion-control.js +17 -0
  30. package/components/controls/phi-alert-control.d.ts +1 -1
  31. package/components/controls/phi-alert-control.js +12 -2
  32. package/components/controls/phi-avatar-control.d.ts +31 -0
  33. package/components/controls/phi-avatar-control.js +26 -0
  34. package/components/controls/phi-background-control.js +15 -9
  35. package/components/controls/phi-border-control.js +3 -2
  36. package/components/controls/phi-brand-control.d.ts +39 -8
  37. package/components/controls/phi-brand-control.js +71 -15
  38. package/components/controls/phi-builder-insert-picker-control-labels.d.ts +2 -0
  39. package/components/controls/phi-builder-insert-picker-control-labels.js +1 -0
  40. package/components/controls/phi-builder-insert-picker-control.js +97 -35
  41. package/components/controls/phi-button-control.d.ts +19 -2
  42. package/components/controls/phi-button-control.js +38 -7
  43. package/components/controls/phi-card-control.d.ts +61 -0
  44. package/components/controls/phi-card-control.js +12 -0
  45. package/components/controls/phi-checkbox-group-control.js +4 -7
  46. package/components/controls/phi-collection-header-control.js +3 -9
  47. package/components/controls/phi-collection-view-control.d.ts +1 -0
  48. package/components/controls/phi-collection-view-control.js +3 -3
  49. package/components/controls/phi-color-control.js +29 -13
  50. package/components/controls/phi-color-field-control.d.ts +38 -0
  51. package/components/controls/phi-color-field-control.js +32 -0
  52. package/components/controls/phi-compact-group-control.d.ts +38 -0
  53. package/components/controls/phi-compact-group-control.js +6 -0
  54. package/components/controls/phi-confirm-control.js +2 -14
  55. package/components/controls/phi-confirm-dialog.d.ts +32 -0
  56. package/components/controls/phi-confirm-dialog.js +79 -0
  57. package/components/controls/phi-control-option-content.d.ts +16 -1
  58. package/components/controls/phi-control-option-content.js +26 -10
  59. package/components/controls/phi-control-options.d.ts +1 -69
  60. package/components/controls/phi-control-options.js +6 -112
  61. package/components/controls/phi-description-list-control.d.ts +43 -0
  62. package/components/controls/phi-description-list-control.js +28 -0
  63. package/components/controls/phi-description-tooltip-icon.d.ts +11 -2
  64. package/components/controls/phi-description-tooltip-icon.js +15 -2
  65. package/components/controls/phi-dialog-control.d.ts +76 -0
  66. package/components/controls/phi-dialog-control.js +15 -0
  67. package/components/controls/phi-dimension-control.js +7 -1
  68. package/components/controls/phi-divider-control.d.ts +14 -0
  69. package/components/controls/phi-divider-control.js +6 -0
  70. package/components/controls/phi-drawer-control-adapter.d.ts +2 -0
  71. package/components/controls/phi-drawer-control-adapter.js +75 -0
  72. package/components/controls/phi-drawer-control.d.ts +9 -2
  73. package/components/controls/phi-drawer-control.js +18 -54
  74. package/components/controls/phi-dropdown-control.js +3 -4
  75. package/components/controls/phi-empty-control.d.ts +28 -0
  76. package/components/controls/phi-empty-control.js +6 -0
  77. package/components/controls/phi-entry-list-control.d.ts +46 -0
  78. package/components/controls/phi-entry-list-control.js +17 -0
  79. package/components/controls/phi-expand-indicator.js +1 -2
  80. package/components/controls/phi-file-drop-control.d.ts +41 -0
  81. package/components/controls/phi-file-drop-control.js +10 -0
  82. package/components/controls/phi-flex-control.d.ts +20 -0
  83. package/components/controls/phi-flex-control.js +6 -0
  84. package/components/controls/phi-form-control.d.ts +5 -0
  85. package/components/controls/phi-form-control.js +120 -31
  86. package/components/controls/phi-geometry-control.js +35 -22
  87. package/components/controls/phi-hover-text.d.ts +12 -0
  88. package/components/controls/phi-hover-text.js +23 -0
  89. package/components/controls/phi-icon-picker-control.d.ts +1 -1
  90. package/components/controls/phi-icon-picker-control.js +17 -5
  91. package/components/controls/phi-inline-text-editor.d.ts +43 -0
  92. package/components/controls/phi-inline-text-editor.js +62 -0
  93. package/components/controls/phi-labeled-control.d.ts +10 -0
  94. package/components/controls/phi-labeled-control.js +14 -4
  95. package/components/controls/phi-length-control.js +11 -3
  96. package/components/controls/phi-mask-picker-control.js +3 -5
  97. package/components/controls/phi-media-asset-tile-control.d.ts +8 -1
  98. package/components/controls/phi-media-asset-tile-control.js +16 -17
  99. package/components/controls/phi-media-picker-control.js +3 -2
  100. package/components/controls/phi-menu-control.d.ts +15 -1
  101. package/components/controls/phi-menu-control.js +4 -1
  102. package/components/controls/phi-modal-control-adapter.d.ts +2 -0
  103. package/components/controls/phi-modal-control-adapter.js +160 -0
  104. package/components/controls/phi-modal-control.d.ts +15 -4
  105. package/components/controls/phi-modal-control.js +22 -128
  106. package/components/controls/phi-multi-select-control.d.ts +3 -1
  107. package/components/controls/phi-multi-select-control.js +2 -2
  108. package/components/controls/phi-name-control.d.ts +33 -0
  109. package/components/controls/phi-name-control.js +6 -0
  110. package/components/controls/phi-number-control.d.ts +3 -1
  111. package/components/controls/phi-number-control.js +8 -2
  112. package/components/controls/phi-overlay-control-contract.d.ts +36 -1
  113. package/components/controls/phi-overlay-control-contract.js +50 -0
  114. package/components/controls/phi-padding-control.js +20 -9
  115. package/components/controls/phi-pagination-control.d.ts +8 -1
  116. package/components/controls/phi-pagination-control.js +2 -2
  117. package/components/controls/phi-picker-control-contract.d.ts +2 -0
  118. package/components/controls/phi-picker-control-contract.js +3 -2
  119. package/components/controls/phi-preset-size-control.js +2 -2
  120. package/components/controls/phi-progress-control.d.ts +15 -0
  121. package/components/controls/phi-progress-control.js +6 -0
  122. package/components/controls/phi-qr-code-control.d.ts +13 -0
  123. package/components/controls/phi-qr-code-control.js +6 -0
  124. package/components/controls/phi-radio-group-control.js +4 -7
  125. package/components/controls/phi-select-control.d.ts +3 -1
  126. package/components/controls/phi-select-control.js +2 -2
  127. package/components/controls/phi-skeleton-control.d.ts +52 -0
  128. package/components/controls/phi-skeleton-control.js +44 -0
  129. package/components/controls/phi-spin-control.d.ts +18 -0
  130. package/components/controls/phi-spin-control.js +6 -0
  131. package/components/controls/phi-statistic-control.d.ts +14 -0
  132. package/components/controls/phi-statistic-control.js +6 -0
  133. package/components/controls/phi-switch-control.d.ts +7 -3
  134. package/components/controls/phi-switch-control.js +2 -2
  135. package/components/controls/phi-table-control.d.ts +7 -1
  136. package/components/controls/phi-table-control.js +90 -33
  137. package/components/controls/phi-tag-control.d.ts +19 -1
  138. package/components/controls/phi-tag-control.js +5 -2
  139. package/components/controls/phi-text-control.d.ts +5 -1
  140. package/components/controls/phi-text-control.js +4 -3
  141. package/components/controls/phi-toolbar-control.js +12 -3
  142. package/components/controls/phi-tree-control.js +10 -7
  143. package/components/controls/phi-tree-select-control.d.ts +56 -0
  144. package/components/controls/phi-tree-select-control.js +69 -0
  145. package/components/controls/phi-typography-control-adapter.d.ts +2 -0
  146. package/components/controls/phi-typography-control-adapter.js +40 -0
  147. package/components/controls/phi-typography-control.d.ts +33 -0
  148. package/components/controls/phi-typography-control.js +56 -0
  149. package/components/controls/phi-video-embed-control.d.ts +50 -0
  150. package/components/controls/phi-video-embed-control.js +87 -0
  151. package/components/forms/auth-admin-settings-labels.d.ts +8 -3
  152. package/components/forms/auth-admin-settings-labels.js +16 -4
  153. package/components/forms/choice-form-field-controls.d.ts +5 -0
  154. package/components/forms/choice-form-field-controls.js +15 -0
  155. package/components/forms/compound-form-controls.js +1 -5
  156. package/components/forms/datetime-form-control.js +2 -1
  157. package/components/forms/extended-form-field-controls.d.ts +2 -0
  158. package/components/forms/extended-form-field-controls.js +19 -1
  159. package/components/forms/form-descriptor-contract.d.ts +65 -320
  160. package/components/forms/form-descriptor-contract.js +82 -435
  161. package/components/forms/form-descriptor-runtime-client.d.ts +1 -1
  162. package/components/forms/form-descriptor-runtime-client.js +175 -90
  163. package/components/forms/form-guard-client.d.ts +3 -3
  164. package/components/forms/form-guard-client.js +7 -5
  165. package/components/forms/form-provider-contract.d.ts +71 -625
  166. package/components/forms/form-provider-contract.js +105 -70
  167. package/components/forms/form-provider-registry.d.ts +7 -2
  168. package/components/forms/form-registry.d.ts +36 -22
  169. package/components/forms/form-registry.js +39 -1
  170. package/components/forms/form-relay-area.d.ts +14 -0
  171. package/components/forms/form-relay-area.js +24 -0
  172. package/components/forms/form-resolution.js +2 -4
  173. package/components/forms/form-widget-config.d.ts +57 -0
  174. package/components/forms/form-widget-config.js +122 -0
  175. package/components/forms/phi-form-widget-frame.d.ts +51 -13
  176. package/components/forms/phi-form-widget-frame.js +90 -16
  177. package/components/forms/phi-form-widget.d.ts +15 -0
  178. package/components/forms/phi-form-widget.js +95 -0
  179. package/components/forms/runtime-form-client.js +4 -6
  180. package/components/forms/runtime-form-controller-definition.d.ts +1 -1
  181. package/components/forms/runtime-form-controller-mount.js +30 -15
  182. package/components/forms/runtime-form-controller-plugin.d.ts +1 -1
  183. package/components/forms/runtime-form-controller-requirement.d.ts +1 -1
  184. package/components/forms/runtime-form-state.js +5 -7
  185. package/components/forms/shared-form-descriptors.d.ts +175 -0
  186. package/components/forms/shared-form-descriptors.js +158 -0
  187. package/components/forms/shared-form-ids.d.ts +18 -0
  188. package/components/forms/shared-form-ids.js +18 -0
  189. package/components/forms/shared-form-loaders.d.ts +20 -0
  190. package/components/forms/shared-form-loaders.js +31 -0
  191. package/components/forms/shared-form-provider-registry.js +134 -117
  192. package/components/forms/site-locales-config.d.ts +18 -0
  193. package/components/forms/site-locales-config.js +35 -0
  194. package/components/forms/storage-size.d.ts +36 -0
  195. package/components/forms/storage-size.js +46 -0
  196. package/components/forms/upload-form-control.d.ts +24 -0
  197. package/components/forms/upload-form-control.js +126 -0
  198. package/components/layouts/clients/phi-base-layout-client.d.ts +3 -12
  199. package/components/layouts/clients/phi-base-layout-client.js +5 -165
  200. package/components/layouts/clients/phi-carousel-layout-client.d.ts +1 -2
  201. package/components/layouts/clients/phi-carousel-layout-client.js +28 -23
  202. package/components/layouts/clients/phi-collapsible-layout-client.d.ts +0 -3
  203. package/components/layouts/clients/phi-collapsible-layout-client.js +125 -49
  204. package/components/layouts/clients/phi-content-layout-client.d.ts +7 -5
  205. package/components/layouts/clients/phi-content-layout-client.js +3 -4
  206. package/components/layouts/clients/phi-flex-layout-client.js +21 -7
  207. package/components/layouts/clients/phi-flex-vertical-layout-client.js +23 -6
  208. package/components/layouts/clients/phi-grid-layout-client.js +112 -115
  209. package/components/layouts/clients/phi-layout-anchored-overlay.d.ts +16 -0
  210. package/components/layouts/clients/phi-layout-anchored-overlay.js +29 -24
  211. package/components/layouts/clients/phi-sequence-slot-editor.d.ts +15 -3
  212. package/components/layouts/clients/phi-sequence-slot-editor.js +7 -20
  213. package/components/layouts/clients/phi-split-card-layout-client.d.ts +1 -1
  214. package/components/layouts/clients/phi-split-card-layout-client.js +25 -13
  215. package/components/layouts/clients/phi-stack-layout-client.d.ts +2 -2
  216. package/components/layouts/clients/phi-stack-layout-client.js +72 -26
  217. package/components/layouts/clients/phi-three-column-layout-client.d.ts +6 -4
  218. package/components/layouts/clients/phi-three-column-layout-client.js +40 -26
  219. package/components/layouts/layout-definitions.d.ts +184 -40
  220. package/components/layouts/layout-definitions.js +148 -28
  221. package/components/layouts/phi-base-layout.d.ts +1 -1
  222. package/components/layouts/phi-base-layout.js +12 -39
  223. package/components/layouts/phi-carousel-layout.js +1 -1
  224. package/components/layouts/phi-carousel-pages.d.ts +28 -0
  225. package/components/layouts/phi-carousel-pages.js +53 -0
  226. package/components/layouts/phi-collapsible-layout.js +1 -1
  227. package/components/layouts/phi-grid-contract.d.ts +83 -1
  228. package/components/layouts/phi-grid-contract.js +138 -10
  229. package/components/layouts/phi-grid-layout.js +1 -1
  230. package/components/layouts/phi-layout-contract.d.ts +156 -18
  231. package/components/layouts/phi-layout-contract.js +305 -51
  232. package/components/layouts/phi-layout-slot-state.d.ts +0 -1
  233. package/components/layouts/phi-layout-slot-state.js +0 -8
  234. package/components/layouts/phi-layout-view-model.d.ts +1 -1
  235. package/components/layouts/phi-layout-view-model.js +2 -1
  236. package/components/layouts/phi-masonry-layout.js +44 -9
  237. package/components/layouts/phi-stack-layout.js +1 -1
  238. package/components/layouts/phi-structure-region-layout.js +4 -3
  239. package/components/layouts/plugins/carousel-layout-plugin.d.ts +0 -1
  240. package/components/layouts/plugins/carousel-layout-plugin.js +3 -4
  241. package/components/layouts/plugins/collapsible-layout-plugin.d.ts +0 -1
  242. package/components/layouts/plugins/collapsible-layout-plugin.js +3 -4
  243. package/components/layouts/plugins/content-layout-plugin.d.ts +0 -1
  244. package/components/layouts/plugins/content-layout-plugin.js +3 -3
  245. package/components/layouts/plugins/flex-layout-plugin.d.ts +0 -1
  246. package/components/layouts/plugins/flex-layout-plugin.js +3 -4
  247. package/components/layouts/plugins/flex-vertical-layout-plugin.d.ts +0 -1
  248. package/components/layouts/plugins/flex-vertical-layout-plugin.js +3 -4
  249. package/components/layouts/plugins/grid-layout-plugin.d.ts +0 -1
  250. package/components/layouts/plugins/grid-layout-plugin.js +2 -4
  251. package/components/layouts/plugins/masonry-layout-plugin.d.ts +0 -1
  252. package/components/layouts/plugins/masonry-layout-plugin.js +1 -3
  253. package/components/layouts/plugins/page-region-layout-plugin.d.ts +0 -1
  254. package/components/layouts/plugins/page-region-layout-plugin.js +0 -2
  255. package/components/layouts/plugins/split-card-layout-plugin.d.ts +0 -1
  256. package/components/layouts/plugins/split-card-layout-plugin.js +2 -4
  257. package/components/layouts/plugins/stack-layout-plugin.d.ts +0 -1
  258. package/components/layouts/plugins/stack-layout-plugin.js +3 -4
  259. package/components/layouts/plugins/structure-region-layout-plugin.d.ts +0 -1
  260. package/components/layouts/plugins/structure-region-layout-plugin.js +0 -2
  261. package/components/layouts/plugins/three-column-layout-plugin.d.ts +0 -1
  262. package/components/layouts/plugins/three-column-layout-plugin.js +2 -4
  263. package/components/layouts/stack-signals.d.ts +0 -1
  264. package/components/layouts/stack-signals.js +0 -1
  265. package/components/layouts/use-phi-slot-sequence.d.ts +31 -3
  266. package/components/layouts/use-phi-slot-sequence.js +32 -12
  267. package/components/media/asset-collection-runtime.d.ts +3 -2
  268. package/components/media/asset-collection-runtime.js +9 -11
  269. package/components/media/background-asset-projection.js +3 -5
  270. package/components/media/label-sets/media.js +2 -0
  271. package/components/media/media-folder-options.d.ts +18 -0
  272. package/components/media/media-folder-options.js +76 -0
  273. package/components/media/media-settings-labels.d.ts +4 -1
  274. package/components/media/media-settings-labels.js +23 -16
  275. package/components/media/media-upload-digest.d.ts +38 -0
  276. package/components/media/media-upload-digest.js +38 -0
  277. package/components/media/media-upload-flow.d.ts +98 -1
  278. package/components/media/media-upload-flow.js +301 -8
  279. package/components/media/media-widget-labels.d.ts +1 -0
  280. package/components/media/media-widget-labels.js +1 -0
  281. package/components/media/phi-area-upload-widget.d.ts +1 -1
  282. package/components/media/phi-area-upload-widget.js +33 -48
  283. package/components/media/phi-asset-focal-rect-widget.d.ts +2 -2
  284. package/components/media/phi-asset-focal-rect-widget.js +14 -3
  285. package/components/media/phi-asset-inspector-section.js +5 -4
  286. package/components/media/phi-image-inspector-widget.d.ts +1 -1
  287. package/components/media/phi-image-inspector-widget.js +1 -1
  288. package/components/media/phi-image-preview-store.d.ts +0 -9
  289. package/components/media/phi-image-preview-store.js +0 -29
  290. package/components/media/phi-media-picker-binding.d.ts +1 -1
  291. package/components/media/phi-media-picker-binding.js +15 -11
  292. package/components/media/phi-media-picker-server.d.ts +1 -1
  293. package/components/media/phi-media-picker-widget.d.ts +1 -1
  294. package/components/media/phi-site-font-assets.js +1 -1
  295. package/components/media/use-authoring-asset-details.js +5 -8
  296. package/components/menus/phi-account-menu.d.ts +14 -11
  297. package/components/menus/phi-account-menu.js +94 -46
  298. package/components/motion/phi-sequence-viewport.js +11 -0
  299. package/components/navigation/phi-link.d.ts +11 -1
  300. package/components/navigation/phi-link.js +2 -2
  301. package/components/overlays/phi-overlay-container-client.d.ts +10 -7
  302. package/components/overlays/phi-overlay-container-client.js +113 -38
  303. package/components/overlays/phi-overlay-zones-loader.d.ts +20 -0
  304. package/components/overlays/phi-overlay-zones-loader.js +26 -0
  305. package/components/regions/clients/cms-region-container-client.d.ts +8 -3
  306. package/components/regions/clients/cms-region-container-client.js +102 -336
  307. package/components/regions/phi-cms-region-container.js +3 -1
  308. package/components/regions/phi-cms-region-shell.d.ts +88 -0
  309. package/components/regions/phi-cms-region-shell.js +300 -0
  310. package/components/regions/phi-cms-region-static.d.ts +8 -4
  311. package/components/regions/phi-cms-region-static.js +19 -211
  312. package/components/regions/presets/navigation-redirect.d.ts +0 -1
  313. package/components/regions/presets/navigation-redirect.js +5 -22
  314. package/components/regions/presets/phi-area-root-redirect-tree.d.ts +1 -3
  315. package/components/regions/presets/phi-area-root-redirect-tree.js +8 -2
  316. package/components/regions/presets/phi-base-page-layout.js +10 -11
  317. package/components/regions/presets/phi-header-top-actions-layout.d.ts +17 -0
  318. package/components/regions/presets/phi-header-top-actions-layout.js +28 -0
  319. package/components/regions/presets/phi-settings-page-shell-tree.d.ts +97 -15
  320. package/components/regions/presets/phi-settings-page-shell-tree.js +242 -44
  321. package/components/root/phi-config-provider.d.ts +9 -2
  322. package/components/root/phi-config-provider.js +10 -2
  323. package/components/root/phi-dayjs-locale.d.ts +9 -2
  324. package/components/root/phi-dayjs-locale.js +20 -4
  325. package/components/root/phi-intl-locale.d.ts +6 -0
  326. package/components/root/phi-intl-locale.js +21 -0
  327. package/components/root/phi-root-background.d.ts +3 -3
  328. package/components/root/phi-root-background.js +3 -3
  329. package/components/root/phi-root-layout.d.ts +2 -1
  330. package/components/root/phi-root-layout.js +12 -3
  331. package/components/root/phi-root-live-theme-provider.d.ts +8 -3
  332. package/components/root/phi-root-live-theme-provider.js +75 -9
  333. package/components/root/phi-root-theme-resolver.d.ts +21 -1
  334. package/components/root/phi-root-theme-resolver.js +20 -3
  335. package/components/runtime/application-feedback-host.d.ts +35 -0
  336. package/components/runtime/application-feedback-host.js +66 -0
  337. package/components/runtime/core-runtime-application-adapter.d.ts +8 -1
  338. package/components/runtime/core-runtime-application-adapter.js +97 -26
  339. package/components/runtime/core-runtime-controller-definition.d.ts +11 -0
  340. package/components/runtime/core-runtime-controller-definition.js +33 -0
  341. package/components/runtime/core-runtime-controller-plugin.d.ts +11 -0
  342. package/components/runtime/phi-password-change-required-modal.d.ts +16 -0
  343. package/components/runtime/phi-password-change-required-modal.js +34 -0
  344. package/components/runtime/phi-password-change-required.d.ts +14 -0
  345. package/components/runtime/phi-password-change-required.js +41 -0
  346. package/components/runtime/phi-state-machine-binding.d.ts +40 -0
  347. package/components/runtime/phi-state-machine-binding.js +119 -0
  348. package/components/runtime/phi-video-consent-store.d.ts +17 -0
  349. package/components/runtime/phi-video-consent-store.js +54 -0
  350. package/components/runtime/renderable-block-runtime.d.ts +0 -8
  351. package/components/runtime/renderable-block-runtime.js +5 -18
  352. package/components/runtime/renderable-widget-runtime.d.ts +10 -0
  353. package/components/runtime/renderable-widget-runtime.js +20 -0
  354. package/components/runtime/runtime-controller-materialization.d.ts +22 -2
  355. package/components/runtime/runtime-controller-materialization.js +48 -10
  356. package/components/runtime/runtime-module-authoring-client-manifest.d.ts +5 -5
  357. package/components/runtime/runtime-module-authoring-client-manifest.js +4 -13
  358. package/components/runtime/runtime-module-authoring-host.d.ts +1 -6
  359. package/components/runtime/runtime-module-authoring-host.js +0 -4
  360. package/components/runtime/runtime-module-calendar-adapter-client-manifest.js +10 -12
  361. package/components/runtime/runtime-module-client-manifest-context.d.ts +25 -0
  362. package/components/runtime/runtime-module-client-manifest-context.js +45 -0
  363. package/components/runtime/runtime-module-context.d.ts +11 -1
  364. package/components/runtime/runtime-module-context.js +12 -2
  365. package/components/runtime/runtime-module-controller-client-manifest.d.ts +5 -5
  366. package/components/runtime/runtime-module-controller-client-manifest.js +4 -13
  367. package/components/runtime/runtime-module-data-provider-client-manifest.d.ts +2 -2
  368. package/components/runtime/runtime-module-data-provider-client-manifest.js +7 -22
  369. package/components/runtime/runtime-module-render-client-manifest.d.ts +11 -2
  370. package/components/runtime/runtime-module-render-client-manifest.js +17 -20
  371. package/components/runtime/runtime-module-ui-provider-client-manifest.d.ts +36 -0
  372. package/components/runtime/runtime-module-ui-provider-client-manifest.js +30 -0
  373. package/components/runtime/runtime-signal-bus.js +76 -2
  374. package/components/runtime/runtime-signal-identity.d.ts +11 -1
  375. package/components/runtime/runtime-signal-identity.js +25 -0
  376. package/components/runtime/runtime-signal-registry.d.ts +0 -3
  377. package/components/runtime/runtime-signal-registry.js +1 -15
  378. package/components/runtime/user-state-client.d.ts +34 -0
  379. package/components/runtime/user-state-client.js +79 -0
  380. package/components/shell/phi-antd-icon.d.ts +73 -0
  381. package/components/shell/phi-antd-icon.js +192 -0
  382. package/components/shell/phi-asset-icon.d.ts +5 -0
  383. package/components/shell/phi-asset-icon.js +18 -0
  384. package/components/shell/phi-avatar.d.ts +1 -15
  385. package/components/shell/phi-avatar.js +4 -26
  386. package/components/shell/phi-builder-icon.d.ts +1 -1
  387. package/components/shell/phi-builder-icon.js +19 -2
  388. package/components/shell/phi-builder-motif-icon.js +1 -0
  389. package/components/shell/phi-icon.js +11 -43
  390. package/components/shell/phi-locale-switch.js +6 -1
  391. package/components/shell/phi-widget-icon.js +2 -1
  392. package/components/shell/shell-types.d.ts +25 -15
  393. package/components/shell/shell-types.js +1 -68
  394. package/components/state/history-store.d.ts +2 -0
  395. package/components/state/history-store.js +13 -0
  396. package/components/state/scoped-state-store.js +12 -5
  397. package/components/tables/client/phi-table-binding.d.ts +3 -2
  398. package/components/tables/phi-plain-table.js +1 -2
  399. package/components/trees/client/phi-tree-binding.js +8 -5
  400. package/components/widgets/accessible-areas.d.ts +42 -0
  401. package/components/widgets/accessible-areas.js +49 -0
  402. package/components/widgets/builder/phi-static-options-picker.js +24 -17
  403. package/components/widgets/builder/stack-tabs.d.ts +1 -2
  404. package/components/widgets/builder/stack-tabs.js +1 -2
  405. package/components/widgets/built-in/widget-preview-client.js +9 -5
  406. package/components/widgets/client/auth-workflow-body.d.ts +19 -3
  407. package/components/widgets/client/auth-workflow-body.js +24 -43
  408. package/components/widgets/client/description-editor-sections.d.ts +28 -0
  409. package/components/widgets/client/description-editor-sections.js +7 -0
  410. package/components/widgets/client/external-document-editor.js +3 -2
  411. package/components/widgets/client/html-editor-image-node.js +51 -17
  412. package/components/widgets/client/search.js +11 -59
  413. package/components/widgets/client/shared/core-options-providers.d.ts +3 -0
  414. package/components/widgets/client/shared/core-options-providers.js +20 -1
  415. package/components/widgets/client/shared/description-items.d.ts +6 -0
  416. package/components/widgets/client/shared/description-items.js +12 -0
  417. package/components/widgets/client/shared/phi-authoring-tools-labels.d.ts +7 -0
  418. package/components/widgets/client/shared/phi-authoring-tools-labels.js +23 -0
  419. package/components/widgets/client/shared/phi-button-icons.js +19 -19
  420. package/components/widgets/client/shared/phi-choice-controller.js +2 -1
  421. package/components/widgets/client/shared/phi-collection-provider.d.ts +22 -17
  422. package/components/widgets/client/shared/phi-collection-provider.js +2 -2
  423. package/components/widgets/client/shared/phi-collection-view-binding.d.ts +5 -19
  424. package/components/widgets/client/shared/phi-collection-view-binding.js +32 -21
  425. package/components/widgets/client/shared/phi-control-signal-routing.d.ts +35 -0
  426. package/components/widgets/client/shared/phi-control-signal-routing.js +35 -0
  427. package/components/widgets/client/shared/phi-control-signals.d.ts +0 -1
  428. package/components/widgets/client/shared/phi-control-signals.js +31 -65
  429. package/components/widgets/client/shared/phi-input-signals.d.ts +0 -3
  430. package/components/widgets/client/shared/phi-page-reference-picker.d.ts +18 -0
  431. package/components/widgets/client/shared/phi-page-reference-picker.js +32 -0
  432. package/components/widgets/client/shared/phi-rendered-value.d.ts +43 -0
  433. package/components/widgets/client/shared/phi-rendered-value.js +75 -0
  434. package/components/widgets/client/shared/phi-search-draft.d.ts +33 -0
  435. package/components/widgets/client/shared/phi-search-draft.js +52 -0
  436. package/components/widgets/client/shared/phi-static-table-provider.d.ts +12 -1
  437. package/components/widgets/client/shared/phi-static-table-provider.js +57 -7
  438. package/components/widgets/client/shared/phi-table-provider-response.d.ts +14 -0
  439. package/components/widgets/client/shared/phi-table-provider-response.js +16 -0
  440. package/components/widgets/client/shared/phi-table-provider.d.ts +3 -5
  441. package/components/widgets/client/shared/phi-table-provider.js +10 -24
  442. package/components/widgets/client/shared/phi-widget-image-tool-button.d.ts +2 -4
  443. package/components/widgets/client/shared/phi-widget-image-tool-button.js +6 -8
  444. package/components/widgets/client/shared/phi-widget-tool-buttons.js +56 -45
  445. package/components/widgets/config/background.d.ts +23 -0
  446. package/components/widgets/config/background.js +128 -41
  447. package/components/widgets/config/button-variant.d.ts +28 -0
  448. package/components/widgets/config/button-variant.js +32 -0
  449. package/components/widgets/config/choice-shared.d.ts +2 -2
  450. package/components/widgets/config/geometry.d.ts +4 -4
  451. package/components/widgets/config/helpers.d.ts +2 -2
  452. package/components/widgets/config/image-source-parser.d.ts +1 -1
  453. package/components/widgets/config/mask.d.ts +4 -2
  454. package/components/widgets/config/mask.js +13 -28
  455. package/components/widgets/config/parser-primitives.d.ts +11 -2
  456. package/components/widgets/config/parser-primitives.js +38 -3
  457. package/components/widgets/config/search-shared.d.ts +1 -80
  458. package/components/widgets/config/search-shared.js +4 -6
  459. package/components/widgets/config/spacing-options.d.ts +0 -1
  460. package/components/widgets/config/spacing-options.js +0 -1
  461. package/components/widgets/config/stack-tabs.d.ts +1 -121
  462. package/components/widgets/config/stack-tabs.js +3 -7
  463. package/components/widgets/config/text-tone.d.ts +22 -0
  464. package/components/widgets/config/text-tone.js +18 -0
  465. package/components/widgets/helpers/font-family.d.ts +13 -2
  466. package/components/widgets/helpers/font-family.js +22 -0
  467. package/components/widgets/helpers/font-size.d.ts +6 -2
  468. package/components/widgets/helpers/font-size.js +14 -0
  469. package/components/widgets/helpers/internal-reference-resolver.server.d.ts +10 -0
  470. package/components/widgets/helpers/internal-reference-resolver.server.js +19 -10
  471. package/components/widgets/inspector-field-row.js +3 -2
  472. package/components/widgets/label-sets/account.d.ts +7 -5
  473. package/components/widgets/label-sets/account.js +18 -8
  474. package/components/widgets/label-sets/auth-workflow.d.ts +4 -0
  475. package/components/widgets/label-sets/auth-workflow.js +63 -0
  476. package/components/widgets/label-sets/authoring-tools.d.ts +6 -0
  477. package/components/widgets/label-sets/authoring-tools.js +122 -0
  478. package/components/widgets/label-sets/border.js +8 -0
  479. package/components/widgets/label-sets/builder-chrome.js +2 -16
  480. package/components/widgets/label-sets/builder-modules.js +2 -0
  481. package/components/widgets/label-sets/draft-status.d.ts +4 -0
  482. package/components/widgets/label-sets/draft-status.js +29 -0
  483. package/components/widgets/label-sets/effects.js +8 -0
  484. package/components/widgets/label-sets/icon-picker.d.ts +6 -0
  485. package/components/widgets/label-sets/icon-picker.js +67 -0
  486. package/components/widgets/label-sets/news.d.ts +9 -0
  487. package/components/widgets/label-sets/news.js +29 -0
  488. package/components/widgets/label-sets/padding.d.ts +4 -0
  489. package/components/widgets/label-sets/padding.js +55 -0
  490. package/components/widgets/label-sets/profile.d.ts +55 -23
  491. package/components/widgets/label-sets/profile.js +80 -47
  492. package/components/widgets/label-sets/record.d.ts +4 -0
  493. package/components/widgets/label-sets/record.js +23 -0
  494. package/components/widgets/label-sets/region.js +4 -0
  495. package/components/widgets/label-sets/revisions.js +16 -0
  496. package/components/widgets/label-sets/security.d.ts +4 -0
  497. package/components/widgets/label-sets/security.js +81 -0
  498. package/components/widgets/label-sets/session.d.ts +6 -0
  499. package/components/widgets/label-sets/session.js +20 -0
  500. package/components/widgets/label-sets/threads.d.ts +96 -0
  501. package/components/widgets/label-sets/threads.js +269 -0
  502. package/components/widgets/label-sets/unsubscribe.d.ts +17 -0
  503. package/components/widgets/label-sets/unsubscribe.js +39 -0
  504. package/components/widgets/label-sets/video.d.ts +11 -0
  505. package/components/widgets/label-sets/video.js +40 -0
  506. package/components/widgets/label-types/auth-workflow.d.ts +38 -0
  507. package/components/widgets/label-types/authoring-tools.d.ts +78 -0
  508. package/components/widgets/label-types/authoring-tools.js +61 -0
  509. package/components/widgets/label-types/border.d.ts +8 -10
  510. package/components/widgets/label-types/border.js +7 -9
  511. package/components/widgets/label-types/builder-chrome.d.ts +0 -10
  512. package/components/widgets/label-types/builder-chrome.js +0 -12
  513. package/components/widgets/label-types/builder-modules.d.ts +2 -0
  514. package/components/widgets/label-types/builder-modules.js +2 -0
  515. package/components/widgets/label-types/common-controls.d.ts +2 -1
  516. package/components/widgets/label-types/common-controls.js +4 -4
  517. package/components/widgets/label-types/draft-status.d.ts +11 -0
  518. package/components/widgets/label-types/draft-status.js +12 -0
  519. package/components/widgets/label-types/effects.d.ts +6 -0
  520. package/components/widgets/label-types/effects.js +5 -0
  521. package/components/widgets/label-types/icon-picker.d.ts +30 -0
  522. package/components/widgets/label-types/icon-picker.js +31 -0
  523. package/components/widgets/label-types/padding.d.ts +3 -0
  524. package/components/widgets/label-types/padding.js +2 -0
  525. package/components/widgets/label-types/record.d.ts +8 -0
  526. package/components/widgets/label-types/record.js +9 -0
  527. package/components/widgets/label-types/region.d.ts +4 -0
  528. package/components/widgets/label-types/region.js +2 -0
  529. package/components/widgets/label-types/revisions.d.ts +11 -0
  530. package/components/widgets/label-types/revisions.js +9 -0
  531. package/components/widgets/label-types/security.d.ts +37 -0
  532. package/components/widgets/label-types/security.js +3 -0
  533. package/components/widgets/label-types/spacing-scale.d.ts +13 -0
  534. package/components/widgets/label-types/spacing-scale.js +11 -0
  535. package/components/widgets/login-redirect.js +3 -7
  536. package/components/widgets/navigation-descriptor-resolver.server.js +16 -5
  537. package/components/widgets/plugins/stack-tabs-widget-plugin.d.ts +1 -2
  538. package/components/widgets/plugins/stack-tabs-widget-plugin.js +1 -2
  539. package/components/widgets/server/builder-chrome.d.ts +0 -1
  540. package/components/widgets/server/builder-chrome.js +0 -4
  541. package/components/widgets/shared/card-body-client.d.ts +86 -0
  542. package/components/widgets/shared/card-body-client.js +102 -0
  543. package/components/widgets/shared/markdown-body-client.d.ts +81 -0
  544. package/components/widgets/shared/markdown-body-client.js +181 -0
  545. package/components/widgets/shared/markdown-code-tokens.d.ts +46 -0
  546. package/components/widgets/shared/markdown-code-tokens.js +330 -0
  547. package/components/widgets/shared/markdown-render.d.ts +40 -0
  548. package/components/widgets/shared/markdown-render.js +506 -0
  549. package/components/widgets/shared/result-body-client.d.ts +5 -2
  550. package/components/widgets/shared/result-body.d.ts +13 -1
  551. package/components/widgets/shared/result-body.js +11 -2
  552. package/components/widgets/signals/control-signal-capabilities.d.ts +0 -72
  553. package/components/widgets/signals/control-signal-capabilities.js +0 -70
  554. package/components/widgets/signals/page-title-signals.d.ts +0 -1
  555. package/components/widgets/signals/page-title-signals.js +2 -5
  556. package/components/widgets/signals/signal-endpoint-list.js +4 -3
  557. package/components/widgets/signals/signal-endpoints.js +2 -4
  558. package/components/workspace/catalog-store.d.ts +0 -1
  559. package/components/workspace/catalog-store.js +0 -3
  560. package/constants/authoring-option-provider-keys.d.ts +20 -0
  561. package/constants/authoring-option-provider-keys.js +21 -0
  562. package/constants/cms-areas.d.ts +22 -7
  563. package/constants/cms-areas.js +25 -37
  564. package/constants/cms-error-pages.d.ts +25 -0
  565. package/constants/cms-error-pages.js +31 -0
  566. package/constants/cms-layout-type-keys.d.ts +21 -0
  567. package/constants/cms-layout-type-keys.js +54 -0
  568. package/constants/cms-layout-types.d.ts +0 -20
  569. package/constants/cms-layout-types.js +2 -48
  570. package/constants/cms-widget-types.d.ts +9 -7
  571. package/constants/cms-widget-types.js +15 -16
  572. package/constants/core-data-provider-keys.d.ts +12 -0
  573. package/constants/core-data-provider-keys.js +13 -0
  574. package/constants/dashboard-card-provider-keys.d.ts +19 -0
  575. package/constants/dashboard-card-provider-keys.js +20 -0
  576. package/constants/http-headers.d.ts +20 -1
  577. package/constants/http-headers.js +20 -1
  578. package/constants/media-library-provider-keys.d.ts +9 -0
  579. package/constants/media-library-provider-keys.js +10 -1
  580. package/constants/phi-base-role-metadata.d.ts +0 -1
  581. package/constants/phi-cms.d.ts +1 -1
  582. package/constants/phi-cms.js +1 -1
  583. package/constants/runtime-data-provider-key.d.ts +8 -0
  584. package/constants/runtime-data-provider-key.js +10 -0
  585. package/constants/runtime-module-ownership.js +41 -0
  586. package/constants/runtime-render-client-types.d.ts +1 -3
  587. package/constants/runtime-render-client-types.js +2 -4
  588. package/constants/support.d.ts +2 -0
  589. package/constants/support.js +6 -0
  590. package/constants/thread-library-provider-keys.d.ts +19 -0
  591. package/constants/thread-library-provider-keys.js +20 -0
  592. package/constants/threads.d.ts +1 -0
  593. package/constants/threads.js +6 -0
  594. package/constants/user-state.d.ts +1 -0
  595. package/constants/user-state.js +6 -0
  596. package/constants.d.ts +8 -6
  597. package/constants.js +8 -6
  598. package/controls.d.ts +12 -7
  599. package/controls.js +20 -3
  600. package/core-widgets.d.ts +3 -0
  601. package/core-widgets.js +7 -0
  602. package/forms-client.d.ts +4 -0
  603. package/forms-client.js +8 -0
  604. package/forms.d.ts +4 -7
  605. package/forms.js +10 -6
  606. package/gateway/area-root-door.d.ts +14 -0
  607. package/gateway/area-root-door.js +65 -0
  608. package/gateway/auth-public-manifest.d.ts +23 -1
  609. package/gateway/auth-public-manifest.js +41 -12
  610. package/gateway/dashboard-cards-route.d.ts +21 -0
  611. package/gateway/dashboard-cards-route.js +269 -0
  612. package/gateway/form-handler-resolution.d.ts +12 -1
  613. package/gateway/form-handler-resolution.js +45 -53
  614. package/gateway/form-registry.js +7 -11
  615. package/gateway/form-submit.js +23 -15
  616. package/gateway/internal-references.js +6 -3
  617. package/gateway/label-set.js +4 -4
  618. package/gateway/module-diagnostics-route.d.ts +36 -0
  619. package/gateway/module-diagnostics-route.js +61 -0
  620. package/gateway/navigation-target-route.d.ts +6 -0
  621. package/gateway/navigation-target-route.js +215 -0
  622. package/gateway/news.d.ts +22 -0
  623. package/gateway/news.js +76 -0
  624. package/gateway/server-capabilities.js +3 -5
  625. package/gateway/site-area-bridges.d.ts +23 -0
  626. package/gateway/site-area-bridges.js +12 -0
  627. package/gateway/site-area.js +6 -11
  628. package/gateway/site-auth-settings.js +3 -5
  629. package/gateway/site-config.d.ts +2 -84
  630. package/gateway/site-config.js +4 -6
  631. package/gateway/site-form-route.d.ts +4 -12
  632. package/gateway/site-form-route.js +61 -43
  633. package/gateway/site-media-settings.js +3 -5
  634. package/gateway/site-nav.js +6 -15
  635. package/gateway/site-page.js +6 -15
  636. package/gateway/site-proxy.d.ts +10 -1
  637. package/gateway/site-proxy.js +89 -6
  638. package/gateway/site-read-cache.d.ts +19 -0
  639. package/gateway/site-read-cache.js +24 -0
  640. package/gateway/site-settings.js +3 -5
  641. package/gateway/site-stats.js +3 -5
  642. package/gateway/site-theme.js +2 -5
  643. package/gateway/thread-inbox-stats.d.ts +25 -0
  644. package/gateway/thread-inbox-stats.js +34 -0
  645. package/gateway/tr.js +48 -85
  646. package/gateway/user-state.d.ts +27 -0
  647. package/gateway/user-state.js +48 -0
  648. package/helpers/access.d.ts +0 -7
  649. package/helpers/access.js +1 -11
  650. package/helpers/border-widget-style.d.ts +35 -0
  651. package/helpers/border-widget-style.js +41 -0
  652. package/helpers/brand-wordmark.d.ts +10 -0
  653. package/helpers/brand-wordmark.js +14 -3
  654. package/helpers/client-json-request.d.ts +48 -0
  655. package/helpers/client-json-request.js +49 -0
  656. package/helpers/cms-access-policy.js +1 -5
  657. package/helpers/cms-area-config.d.ts +22 -2
  658. package/helpers/cms-area-config.js +32 -11
  659. package/helpers/cms-area-root-route.d.ts +8 -7
  660. package/helpers/cms-area-root-route.js +11 -12
  661. package/helpers/cms-config-field-validation.js +9 -0
  662. package/helpers/cms-config-serialization.d.ts +0 -69
  663. package/helpers/cms-config-serialization.js +1 -60
  664. package/helpers/cms-draft-delete.d.ts +8 -0
  665. package/helpers/cms-draft-delete.js +23 -0
  666. package/helpers/cms-layout-defaults.js +16 -25
  667. package/helpers/cms-layout-depth.d.ts +0 -2
  668. package/helpers/cms-layout-depth.js +0 -35
  669. package/helpers/cms-navigation-catalog.d.ts +24 -3
  670. package/helpers/cms-navigation-catalog.js +52 -17
  671. package/helpers/cms-node-factories.d.ts +21 -8
  672. package/helpers/cms-node-factories.js +8 -2
  673. package/helpers/cms-page-catalog.d.ts +0 -3
  674. package/helpers/cms-page-catalog.js +0 -10
  675. package/helpers/cms-paths.d.ts +4 -4
  676. package/helpers/cms-paths.js +6 -15
  677. package/helpers/cms-preset-nodes.d.ts +79 -6
  678. package/helpers/cms-preset-nodes.js +57 -14
  679. package/helpers/cms-region-keys.d.ts +18 -1
  680. package/helpers/cms-region-keys.js +23 -0
  681. package/helpers/cms-routing.d.ts +17 -0
  682. package/helpers/cms-routing.js +37 -0
  683. package/helpers/csrf-token.d.ts +33 -0
  684. package/helpers/csrf-token.js +61 -0
  685. package/helpers/dot-path.d.ts +7 -0
  686. package/helpers/dot-path.js +18 -0
  687. package/helpers/format-date-time.d.ts +2 -2
  688. package/helpers/format-date-time.js +20 -11
  689. package/helpers/is-record.d.ts +1 -0
  690. package/helpers/is-record.js +6 -0
  691. package/helpers/layout-authoring-markers.d.ts +4 -1
  692. package/helpers/layout-authoring-markers.js +5 -2
  693. package/helpers/link-target.d.ts +44 -0
  694. package/helpers/link-target.js +66 -0
  695. package/helpers/locale.d.ts +28 -0
  696. package/helpers/locale.js +82 -27
  697. package/helpers/logout.d.ts +26 -0
  698. package/helpers/logout.js +37 -0
  699. package/helpers/motion.d.ts +8 -0
  700. package/helpers/motion.js +8 -0
  701. package/helpers/nav-selection.js +12 -9
  702. package/helpers/phi-metadata.d.ts +9 -0
  703. package/helpers/phi-metadata.js +2 -0
  704. package/helpers/renderable-block-anchor.d.ts +2 -0
  705. package/helpers/renderable-block-anchor.js +28 -0
  706. package/helpers/renderable-block-effects.js +3 -1
  707. package/helpers/renderable-block-serialization.d.ts +1 -2
  708. package/helpers/renderable-block-serialization.js +13 -35
  709. package/helpers/runtime-module-route-path.d.ts +14 -1
  710. package/helpers/runtime-module-route-path.js +18 -0
  711. package/helpers/shell-region-style.d.ts +5 -3
  712. package/helpers/shell-region-style.js +27 -4
  713. package/helpers/site-api.d.ts +11 -10
  714. package/helpers/site-api.js +13 -18
  715. package/helpers/site-locale-config.js +6 -6
  716. package/helpers/site-runtime.d.ts +0 -2
  717. package/helpers/site-runtime.js +0 -10
  718. package/helpers/state-machine-binding.d.ts +84 -0
  719. package/helpers/state-machine-binding.js +101 -0
  720. package/helpers/state-machine-diagnostics.d.ts +30 -0
  721. package/helpers/state-machine-diagnostics.js +89 -0
  722. package/helpers/table-binding.js +4 -5
  723. package/helpers/text-placeholders.d.ts +50 -0
  724. package/helpers/text-placeholders.js +83 -0
  725. package/helpers/visibility.d.ts +0 -1
  726. package/helpers/visibility.js +0 -5
  727. package/helpers.d.ts +3 -13
  728. package/helpers.js +3 -13
  729. package/media.d.ts +2 -2
  730. package/media.js +1 -1
  731. package/module-client.d.ts +6 -1
  732. package/module-labels.d.ts +18 -0
  733. package/module-labels.js +16 -0
  734. package/module-projection-authoring-client.d.ts +5 -3
  735. package/module-projection-authoring-client.js +8 -5
  736. package/module-projection-client.d.ts +2 -2
  737. package/module-projection-client.js +7 -2
  738. package/module-projection.d.ts +12 -5
  739. package/module-projection.js +31 -8
  740. package/module.d.ts +37 -12
  741. package/module.js +22 -7
  742. package/net/log.d.ts +0 -1
  743. package/net/log.js +0 -1
  744. package/net/phi-next-proxy.d.ts +25 -0
  745. package/net/phi-next-proxy.js +64 -3
  746. package/next/area-route.d.ts +24 -13
  747. package/next/area-route.js +30 -20
  748. package/next/areas/accounting-client.js +3 -2
  749. package/next/areas/admin-client.js +3 -2
  750. package/next/areas/app-client.js +3 -2
  751. package/next/areas/builder-client.js +3 -2
  752. package/next/areas/builder.js +1 -1
  753. package/next/areas/editor-client.js +3 -2
  754. package/next/areas/public-client.js +3 -2
  755. package/next/global-error.d.ts +33 -0
  756. package/next/global-error.js +80 -0
  757. package/next/overlay-zones.d.ts +15 -0
  758. package/next/overlay-zones.js +104 -0
  759. package/next/proxy-runtime.d.ts +16 -0
  760. package/next/proxy-runtime.js +89 -12
  761. package/next/root-route.d.ts +24 -5
  762. package/next/root-route.js +76 -26
  763. package/next/route-handlers.d.ts +23 -0
  764. package/next/route-handlers.js +22 -0
  765. package/next/runtime-module-client-boundary.d.ts +3 -1
  766. package/next/runtime-module-client-boundary.js +3 -2
  767. package/next/seo-routes.js +1 -2
  768. package/next/site-proxy.js +63 -14
  769. package/next/static-asset-path.d.ts +1 -0
  770. package/next/static-asset-path.js +23 -0
  771. package/package.json +50 -62
  772. package/plugins/registries/runtime-controllers.js +3 -5
  773. package/plugins/runtime/phi-effects-ready-trigger.d.ts +13 -0
  774. package/plugins/runtime/phi-effects-ready-trigger.js +48 -0
  775. package/plugins/runtime/phi-slot-child-frame-client.js +6 -6
  776. package/plugins/runtime/phi-slot-child-frame-view.js +19 -29
  777. package/plugins/runtime/slot-size-policy.d.ts +34 -3
  778. package/plugins/runtime/slot-size-policy.js +152 -17
  779. package/plugins/runtime-modules/accounting/definition.d.ts +0 -3
  780. package/plugins/runtime-modules/accounting/definition.js +0 -6
  781. package/plugins/runtime-modules/accounting/module.d.ts +15 -1
  782. package/plugins/runtime-modules/accounting/module.js +8 -3
  783. package/plugins/runtime-modules/accounting/trees/phi-default-accounting-page-tree.d.ts +6 -0
  784. package/plugins/runtime-modules/accounting/trees/phi-default-accounting-page-tree.js +45 -0
  785. package/plugins/runtime-modules/admin/controller/address.d.ts +0 -2
  786. package/plugins/runtime-modules/admin/controller/address.js +1 -5
  787. package/plugins/runtime-modules/admin/forms.js +1 -6
  788. package/plugins/runtime-modules/admin/module.d.ts +1 -45
  789. package/plugins/runtime-modules/admin/module.js +2 -4
  790. package/plugins/runtime-modules/admin/presets.d.ts +1 -5
  791. package/plugins/runtime-modules/admin/presets.js +3 -6
  792. package/plugins/runtime-modules/admin/trees/admin-settings-label-set.d.ts +6 -0
  793. package/plugins/runtime-modules/admin/trees/admin-settings-label-set.js +18 -0
  794. package/plugins/runtime-modules/admin/trees/phi-default-admin-area-preset-tree.d.ts +6 -0
  795. package/plugins/runtime-modules/admin/trees/phi-default-admin-area-preset-tree.js +180 -0
  796. package/plugins/runtime-modules/admin/trees/phi-default-admin-settings-page-tree.d.ts +6 -0
  797. package/plugins/runtime-modules/admin/trees/phi-default-admin-settings-page-tree.js +81 -0
  798. package/plugins/runtime-modules/app/definition.d.ts +59 -3
  799. package/plugins/runtime-modules/app/definition.js +4 -6
  800. package/plugins/runtime-modules/app/forms.d.ts +82 -0
  801. package/plugins/runtime-modules/app/forms.js +341 -0
  802. package/plugins/runtime-modules/app/module.d.ts +74 -1
  803. package/plugins/runtime-modules/app/module.js +8 -3
  804. package/plugins/runtime-modules/app/server.js +2 -0
  805. package/plugins/runtime-modules/app/trees/phi-default-app-area-preset-tree.d.ts +18 -0
  806. package/plugins/runtime-modules/app/trees/phi-default-app-area-preset-tree.js +101 -0
  807. package/plugins/runtime-modules/app/trees/phi-default-app-profile-page-tree.d.ts +22 -0
  808. package/plugins/runtime-modules/app/trees/phi-default-app-profile-page-tree.js +175 -0
  809. package/plugins/runtime-modules/app/trees/profile-label-set.d.ts +11 -0
  810. package/plugins/runtime-modules/app/trees/profile-label-set.js +40 -0
  811. package/plugins/runtime-modules/area-base-presets.d.ts +31 -4
  812. package/plugins/runtime-modules/area-base-presets.js +108 -22
  813. package/plugins/runtime-modules/area-catalogs/accounting.d.ts +1 -6
  814. package/plugins/runtime-modules/area-catalogs/accounting.js +3 -12
  815. package/plugins/runtime-modules/area-catalogs/admin.d.ts +1 -6
  816. package/plugins/runtime-modules/area-catalogs/admin.js +3 -12
  817. package/plugins/runtime-modules/area-catalogs/app.d.ts +1 -6
  818. package/plugins/runtime-modules/area-catalogs/app.js +3 -12
  819. package/plugins/runtime-modules/area-catalogs/area-catalog.d.ts +13 -0
  820. package/plugins/runtime-modules/area-catalogs/area-catalog.js +13 -0
  821. package/plugins/runtime-modules/area-catalogs/editor.d.ts +1 -6
  822. package/plugins/runtime-modules/area-catalogs/editor.js +3 -12
  823. package/plugins/runtime-modules/area-catalogs/public.d.ts +1 -6
  824. package/plugins/runtime-modules/area-catalogs/public.js +3 -12
  825. package/plugins/runtime-modules/area-contributions/app.d.ts +1 -1
  826. package/plugins/runtime-modules/area-contributions/app.js +4 -0
  827. package/plugins/runtime-modules/area-contributions/editor.d.ts +1 -1
  828. package/plugins/runtime-modules/area-contributions/editor.js +2 -0
  829. package/plugins/runtime-modules/area-contributions/public.d.ts +1 -1
  830. package/plugins/runtime-modules/area-contributions/public.js +4 -0
  831. package/plugins/runtime-modules/area-definitions.d.ts +184 -121
  832. package/plugins/runtime-modules/area-definitions.js +183 -43
  833. package/plugins/runtime-modules/area-module-defaults.d.ts +3 -0
  834. package/plugins/runtime-modules/area-module-defaults.js +59 -0
  835. package/plugins/runtime-modules/area-root-route.d.ts +1 -3
  836. package/plugins/runtime-modules/area-root-route.js +2 -4
  837. package/plugins/runtime-modules/asset/client-data-providers.js +2 -2
  838. package/plugins/runtime-modules/asset/client.js +1 -1
  839. package/plugins/runtime-modules/asset/controller/client.d.ts +124 -0
  840. package/plugins/runtime-modules/asset/controller/client.js +10 -0
  841. package/plugins/runtime-modules/asset/controller/definition.js +128 -0
  842. package/plugins/runtime-modules/asset/controller/mount.d.ts +4 -0
  843. package/plugins/runtime-modules/asset/controller/mount.js +6 -0
  844. package/plugins/runtime-modules/asset/controller/runtime.d.ts +1 -0
  845. package/plugins/runtime-modules/asset/controller/runtime.js +327 -0
  846. package/plugins/runtime-modules/asset/data-providers.d.ts +2 -1
  847. package/plugins/runtime-modules/asset/data-providers.js +4 -2
  848. package/plugins/runtime-modules/asset/definition.d.ts +8 -1
  849. package/plugins/runtime-modules/asset/definition.js +13 -5
  850. package/plugins/runtime-modules/asset/form-providers.js +11 -0
  851. package/plugins/runtime-modules/asset/form-ui-provider.js +13 -0
  852. package/plugins/runtime-modules/asset/ids.d.ts +2 -0
  853. package/plugins/runtime-modules/asset/ids.js +3 -1
  854. package/plugins/runtime-modules/asset/media-page-ids.d.ts +6 -0
  855. package/plugins/runtime-modules/asset/media-page-ids.js +36 -0
  856. package/plugins/runtime-modules/asset/metadata-form.d.ts +243 -0
  857. package/plugins/runtime-modules/asset/metadata-form.js +197 -0
  858. package/plugins/runtime-modules/asset/module.d.ts +1 -231
  859. package/plugins/runtime-modules/asset/module.js +3 -5
  860. package/plugins/runtime-modules/asset/presets.d.ts +2 -174
  861. package/plugins/runtime-modules/asset/presets.js +18 -43
  862. package/plugins/runtime-modules/asset/server.js +3 -4
  863. package/plugins/runtime-modules/asset/services/collection.js +162 -0
  864. package/plugins/runtime-modules/asset/services/options.js +69 -0
  865. package/plugins/runtime-modules/asset/settings-forms.d.ts +22 -0
  866. package/plugins/runtime-modules/asset/settings-forms.js +177 -0
  867. package/plugins/runtime-modules/asset/trees/phi-default-admin-media-settings-page-tree.d.ts +6 -0
  868. package/plugins/runtime-modules/asset/trees/phi-default-admin-media-settings-page-tree.js +93 -0
  869. package/plugins/runtime-modules/asset/trees/phi-default-builder-media-page-tree.d.ts +15 -0
  870. package/plugins/runtime-modules/asset/trees/phi-default-builder-media-page-tree.js +735 -0
  871. package/plugins/runtime-modules/asset/widgets/area-upload/authoring.d.ts +2 -3
  872. package/plugins/runtime-modules/asset/widgets/area-upload/authoring.js +4 -4
  873. package/plugins/runtime-modules/asset/widgets/area-upload/config.d.ts +1 -9
  874. package/plugins/runtime-modules/asset/widgets/area-upload/config.js +0 -2
  875. package/plugins/runtime-modules/asset/widgets/area-upload/plugin.d.ts +1 -3
  876. package/plugins/runtime-modules/asset/widgets/area-upload/plugin.js +2 -3
  877. package/plugins/runtime-modules/asset/widgets/area-upload/server.d.ts +7 -0
  878. package/plugins/runtime-modules/asset/widgets/area-upload/server.js +13 -0
  879. package/plugins/runtime-modules/asset/widgets/asset-focal-rect/authoring.d.ts +2 -3
  880. package/plugins/runtime-modules/asset/widgets/asset-focal-rect/authoring.js +2 -4
  881. package/plugins/runtime-modules/asset/widgets/asset-focal-rect/config.d.ts +1 -6
  882. package/plugins/runtime-modules/asset/widgets/asset-focal-rect/config.js +0 -2
  883. package/plugins/runtime-modules/asset/widgets/asset-focal-rect/plugin.d.ts +1 -3
  884. package/plugins/runtime-modules/asset/widgets/asset-focal-rect/plugin.js +2 -3
  885. package/plugins/runtime-modules/asset/widgets/asset-focal-rect/server.d.ts +6 -0
  886. package/plugins/runtime-modules/asset/widgets/asset-focal-rect/server.js +6 -0
  887. package/plugins/runtime-modules/asset/widgets/image-inspector/authoring.d.ts +2 -3
  888. package/plugins/runtime-modules/asset/widgets/image-inspector/authoring.js +4 -4
  889. package/plugins/runtime-modules/asset/widgets/image-inspector/config.d.ts +1 -7
  890. package/plugins/runtime-modules/asset/widgets/image-inspector/config.js +0 -2
  891. package/plugins/runtime-modules/asset/widgets/image-inspector/plugin.d.ts +1 -3
  892. package/plugins/runtime-modules/asset/widgets/image-inspector/plugin.js +2 -3
  893. package/plugins/runtime-modules/asset/widgets/image-inspector/server.d.ts +7 -0
  894. package/plugins/runtime-modules/asset/widgets/image-inspector/server.js +18 -0
  895. package/plugins/runtime-modules/asset/widgets/media-picker/authoring.d.ts +2 -3
  896. package/plugins/runtime-modules/asset/widgets/media-picker/authoring.js +2 -4
  897. package/plugins/runtime-modules/asset/widgets/media-picker/config.d.ts +2 -16
  898. package/plugins/runtime-modules/asset/widgets/media-picker/config.js +1 -2
  899. package/plugins/runtime-modules/asset/widgets/media-picker/plugin.d.ts +1 -3
  900. package/plugins/runtime-modules/asset/widgets/media-picker/plugin.js +1 -2
  901. package/plugins/runtime-modules/auth/admin-settings-forms.d.ts +15 -0
  902. package/plugins/runtime-modules/auth/admin-settings-forms.js +394 -0
  903. package/plugins/runtime-modules/auth/client-data-providers.js +1 -1
  904. package/plugins/runtime-modules/auth/client.js +1 -1
  905. package/plugins/runtime-modules/auth/controller/address.d.ts +14 -0
  906. package/plugins/runtime-modules/auth/controller/address.js +17 -0
  907. package/plugins/runtime-modules/auth/controller/definition.d.ts +86 -0
  908. package/plugins/runtime-modules/auth/controller/definition.js +93 -0
  909. package/plugins/runtime-modules/auth/controller/server-definition.d.ts +83 -0
  910. package/plugins/runtime-modules/auth/controller/server-definition.js +55 -0
  911. package/plugins/runtime-modules/auth/controller-plugin.d.ts +1 -0
  912. package/plugins/runtime-modules/auth/controller-plugin.js +312 -0
  913. package/plugins/runtime-modules/auth/definition.d.ts +47 -16
  914. package/plugins/runtime-modules/auth/definition.js +16 -7
  915. package/plugins/runtime-modules/auth/features.js +2 -2
  916. package/plugins/runtime-modules/auth/form-provider-registry.d.ts +1 -0
  917. package/plugins/runtime-modules/auth/form-provider-registry.js +38 -0
  918. package/plugins/runtime-modules/auth/form-providers.d.ts +232 -0
  919. package/plugins/runtime-modules/auth/form-providers.js +42 -0
  920. package/plugins/runtime-modules/auth/form-ui-provider.js +7 -0
  921. package/plugins/runtime-modules/auth/forms.d.ts +3 -0
  922. package/plugins/runtime-modules/auth/forms.js +140 -0
  923. package/plugins/runtime-modules/auth/machine.d.ts +46 -0
  924. package/plugins/runtime-modules/auth/machine.js +98 -0
  925. package/plugins/runtime-modules/auth/module.js +1 -1
  926. package/plugins/runtime-modules/auth/overlay-ids.d.ts +23 -0
  927. package/plugins/runtime-modules/auth/overlay-ids.js +27 -0
  928. package/plugins/runtime-modules/auth/presets.d.ts +7 -68
  929. package/plugins/runtime-modules/auth/presets.js +66 -61
  930. package/plugins/runtime-modules/auth/server.js +3 -4
  931. package/plugins/runtime-modules/auth/services/installations-table.js +162 -0
  932. package/plugins/runtime-modules/auth/trees/phi-auth-area-overlay-tree.server.d.ts +8 -0
  933. package/plugins/runtime-modules/auth/trees/phi-auth-area-overlay-tree.server.js +105 -0
  934. package/plugins/runtime-modules/auth/trees/phi-auth-runtime-page-tree.d.ts +7 -0
  935. package/plugins/runtime-modules/auth/trees/phi-auth-runtime-page-tree.js +53 -0
  936. package/plugins/runtime-modules/auth/trees/phi-default-admin-auth-settings-page-tree.d.ts +6 -0
  937. package/plugins/runtime-modules/auth/trees/phi-default-admin-auth-settings-page-tree.js +334 -0
  938. package/plugins/runtime-modules/auth/trees/phi-default-app-security-page-tree.d.ts +17 -0
  939. package/plugins/runtime-modules/auth/trees/phi-default-app-security-page-tree.js +90 -0
  940. package/plugins/runtime-modules/auth/trees/phi-default-pub-confirm-page-tree.d.ts +5 -0
  941. package/plugins/runtime-modules/auth/trees/phi-default-pub-confirm-page-tree.js +166 -0
  942. package/plugins/runtime-modules/auth/trees/phi-default-pub-login-page-tree.d.ts +10 -0
  943. package/plugins/runtime-modules/auth/trees/phi-default-pub-login-page-tree.js +126 -0
  944. package/plugins/runtime-modules/auth/trees/phi-default-pub-registration-page-tree.d.ts +10 -0
  945. package/plugins/runtime-modules/auth/trees/phi-default-pub-registration-page-tree.js +118 -0
  946. package/plugins/runtime-modules/auth/trees/phi-default-pub-reset-password-page-tree.d.ts +5 -0
  947. package/plugins/runtime-modules/auth/trees/phi-default-pub-reset-password-page-tree.js +151 -0
  948. package/plugins/runtime-modules/auth/trees/phi-login-form-nodes.d.ts +46 -0
  949. package/plugins/runtime-modules/auth/trees/phi-login-form-nodes.js +216 -0
  950. package/plugins/runtime-modules/auth/trees/security-label-set.d.ts +8 -0
  951. package/plugins/runtime-modules/auth/trees/security-label-set.js +22 -0
  952. package/plugins/runtime-modules/auth/widgets/auth-methods/client.js +33 -24
  953. package/plugins/runtime-modules/auth/widgets/auth-workflow/client.d.ts +3 -1
  954. package/plugins/runtime-modules/auth/widgets/auth-workflow/client.js +48 -22
  955. package/plugins/runtime-modules/auth/widgets/auth-workflow/config.d.ts +8 -1
  956. package/plugins/runtime-modules/auth/widgets/auth-workflow/config.js +36 -5
  957. package/plugins/runtime-modules/auth/widgets/auth-workflow/plugin.js +8 -7
  958. package/plugins/runtime-modules/auth/widgets/auth-workflow/server.d.ts +15 -0
  959. package/plugins/runtime-modules/auth/widgets/auth-workflow/server.js +14 -0
  960. package/plugins/runtime-modules/auth/widgets/logout/client.d.ts +3 -1
  961. package/plugins/runtime-modules/auth/widgets/logout/client.js +9 -26
  962. package/plugins/runtime-modules/auth/widgets/logout/config.d.ts +1 -0
  963. package/plugins/runtime-modules/auth/widgets/logout/config.js +1 -0
  964. package/plugins/runtime-modules/auth/widgets/security/client.d.ts +6 -1
  965. package/plugins/runtime-modules/auth/widgets/security/client.js +60 -56
  966. package/plugins/runtime-modules/auth/widgets/security/config.d.ts +1 -0
  967. package/plugins/runtime-modules/auth/widgets/security/config.js +1 -0
  968. package/plugins/runtime-modules/auth/widgets/security/server.js +18 -1
  969. package/plugins/runtime-modules/avatar/addresses.js +19 -0
  970. package/plugins/runtime-modules/avatar/definition.d.ts +2 -2
  971. package/plugins/runtime-modules/avatar/definition.js +5 -2
  972. package/plugins/runtime-modules/avatar/labels.d.ts +25 -0
  973. package/plugins/runtime-modules/avatar/media-spaces.d.ts +9 -0
  974. package/plugins/runtime-modules/avatar/media-spaces.js +9 -0
  975. package/plugins/runtime-modules/avatar/module.d.ts +2 -2
  976. package/plugins/runtime-modules/avatar/overlay-tree.js +12 -0
  977. package/plugins/runtime-modules/avatar/overlay-tree.server.js +95 -0
  978. package/plugins/runtime-modules/avatar/presets.js +1 -1
  979. package/plugins/runtime-modules/avatar/server.js +1 -2
  980. package/plugins/runtime-modules/avatar/widgets/account-avatar/authoring.d.ts +1 -2
  981. package/plugins/runtime-modules/avatar/widgets/account-avatar/authoring.js +2 -4
  982. package/plugins/runtime-modules/avatar/widgets/account-avatar/client.js +5 -5
  983. package/plugins/runtime-modules/avatar/widgets/account-avatar/config.d.ts +1 -1
  984. package/plugins/runtime-modules/avatar/widgets/account-avatar/config.js +1 -2
  985. package/plugins/runtime-modules/avatar/widgets/account-avatar/server.js +1 -1
  986. package/plugins/runtime-modules/avatar/widgets/account-avatar-picker/authoring.d.ts +1 -2
  987. package/plugins/runtime-modules/avatar/widgets/account-avatar-picker/authoring.js +2 -4
  988. package/plugins/runtime-modules/avatar/widgets/account-avatar-picker/client.js +9 -8
  989. package/plugins/runtime-modules/avatar/widgets/account-avatar-picker/config.d.ts +1 -1
  990. package/plugins/runtime-modules/avatar/widgets/account-avatar-picker/config.js +1 -2
  991. package/plugins/runtime-modules/avatar/widgets/account-avatar-picker/server.js +1 -1
  992. package/plugins/runtime-modules/builder/addresses.d.ts +23 -0
  993. package/plugins/runtime-modules/builder/addresses.js +53 -0
  994. package/plugins/runtime-modules/builder/area-settings-form.d.ts +2 -0
  995. package/plugins/runtime-modules/builder/area-settings-form.js +137 -0
  996. package/plugins/runtime-modules/builder/area-settings-values.d.ts +26 -0
  997. package/plugins/runtime-modules/builder/area-settings-values.js +26 -0
  998. package/plugins/runtime-modules/builder/area-shell-presets.server.d.ts +0 -1
  999. package/plugins/runtime-modules/builder/area-shell-presets.server.js +12 -10
  1000. package/plugins/runtime-modules/builder/authoring-canvas.js +5 -0
  1001. package/plugins/runtime-modules/builder/authoring-widgets.js +2 -3
  1002. package/plugins/runtime-modules/builder/builder-geometry.d.ts +28 -0
  1003. package/plugins/runtime-modules/builder/builder-geometry.js +38 -0
  1004. package/plugins/runtime-modules/builder/client-data-providers.js +8 -0
  1005. package/plugins/runtime-modules/builder/client.d.ts +0 -1
  1006. package/plugins/runtime-modules/builder/client.js +0 -4
  1007. package/plugins/runtime-modules/builder/clients/builder-region-overrides.js +3 -4
  1008. package/plugins/runtime-modules/builder/clients/inspector-config-field.d.ts +7 -1
  1009. package/plugins/runtime-modules/builder/clients/inspector-config-field.js +101 -30
  1010. package/plugins/runtime-modules/builder/clients/inspector-link-target-field.d.ts +30 -0
  1011. package/plugins/runtime-modules/builder/clients/inspector-link-target-field.js +69 -0
  1012. package/plugins/runtime-modules/builder/clients/inspector-section-widget.d.ts +4 -2
  1013. package/plugins/runtime-modules/builder/clients/inspector-section-widget.js +60 -49
  1014. package/plugins/runtime-modules/builder/clients/inspector-signal-section.js +4 -3
  1015. package/plugins/runtime-modules/builder/clients/layout-inspector.d.ts +7 -3
  1016. package/plugins/runtime-modules/builder/clients/layout-inspector.js +34 -6
  1017. package/plugins/runtime-modules/builder/clients/mode-switch.js +2 -2
  1018. package/plugins/runtime-modules/builder/clients/pages-header.d.ts +0 -1
  1019. package/plugins/runtime-modules/builder/clients/pages-header.js +24 -9
  1020. package/plugins/runtime-modules/builder/clients/region-inspector.js +2 -2
  1021. package/plugins/runtime-modules/builder/clients/runtime-module-authoring-boundary.js +14 -2
  1022. package/plugins/runtime-modules/builder/clients/shells-workspace.js +13 -1
  1023. package/plugins/runtime-modules/builder/clients/structure-canvas.js +8 -7
  1024. package/plugins/runtime-modules/builder/clients/widget-effects-editor.d.ts +4 -1
  1025. package/plugins/runtime-modules/builder/clients/widget-effects-editor.js +2 -2
  1026. package/plugins/runtime-modules/builder/clients/widget-inspector.d.ts +7 -1
  1027. package/plugins/runtime-modules/builder/clients/widget-inspector.js +24 -19
  1028. package/plugins/runtime-modules/builder/controller/client.d.ts +6 -0
  1029. package/plugins/runtime-modules/builder/controller/definition.d.ts +6 -0
  1030. package/plugins/runtime-modules/builder/controller/definition.js +7 -0
  1031. package/plugins/runtime-modules/builder/controller/server-definition.d.ts +7 -1
  1032. package/plugins/runtime-modules/builder/data-providers.d.ts +26 -1
  1033. package/plugins/runtime-modules/builder/data-providers.js +23 -0
  1034. package/plugins/runtime-modules/builder/definition.d.ts +26 -1
  1035. package/plugins/runtime-modules/builder/demand-controller-store.d.ts +0 -1
  1036. package/plugins/runtime-modules/builder/demand-controller-store.js +0 -5
  1037. package/plugins/runtime-modules/builder/developer-workspace-store.d.ts +17 -1
  1038. package/plugins/runtime-modules/builder/developer-workspace-store.js +34 -3
  1039. package/plugins/runtime-modules/builder/developer-workspace-types.d.ts +32 -2
  1040. package/plugins/runtime-modules/builder/draft-command-controller.d.ts +6 -4
  1041. package/plugins/runtime-modules/builder/draft-command-controller.js +69 -171
  1042. package/plugins/runtime-modules/builder/draft-status-controller.d.ts +23 -0
  1043. package/plugins/runtime-modules/builder/draft-status-controller.js +173 -0
  1044. package/plugins/runtime-modules/builder/effects-form-values.d.ts +9 -0
  1045. package/plugins/runtime-modules/builder/effects-form-values.js +14 -4
  1046. package/plugins/runtime-modules/builder/history.d.ts +2 -0
  1047. package/plugins/runtime-modules/builder/ids.d.ts +1 -0
  1048. package/plugins/runtime-modules/builder/ids.js +5 -3
  1049. package/plugins/runtime-modules/builder/inspector-actions.d.ts +3 -0
  1050. package/plugins/runtime-modules/builder/inspector-actions.js +6 -5
  1051. package/plugins/runtime-modules/builder/inspector-controller.js +24 -17
  1052. package/plugins/runtime-modules/builder/inspector-overlay-addresses.d.ts +1 -1
  1053. package/plugins/runtime-modules/builder/inspector-section-widget.d.ts +2 -1
  1054. package/plugins/runtime-modules/builder/inspector-section-widget.js +10 -2
  1055. package/plugins/runtime-modules/builder/module-authoring-catalog.d.ts +4 -0
  1056. package/plugins/runtime-modules/builder/module-authoring-catalog.server.js +2 -0
  1057. package/plugins/runtime-modules/builder/module.d.ts +1 -609
  1058. package/plugins/runtime-modules/builder/module.js +2 -4
  1059. package/plugins/runtime-modules/builder/navigation-catalog.server.d.ts +2 -1
  1060. package/plugins/runtime-modules/builder/navigation-folder-address.d.ts +1 -1
  1061. package/plugins/runtime-modules/builder/navigation-folder-address.js +1 -1
  1062. package/plugins/runtime-modules/builder/navigation-path-context.d.ts +1 -1
  1063. package/plugins/runtime-modules/builder/navigation-path-context.js +27 -10
  1064. package/plugins/runtime-modules/builder/navigation-persistence.js +11 -1
  1065. package/plugins/runtime-modules/builder/navigation-store.d.ts +0 -2
  1066. package/plugins/runtime-modules/builder/navigation-store.js +0 -6
  1067. package/plugins/runtime-modules/builder/node-kind-theme.d.ts +0 -4
  1068. package/plugins/runtime-modules/builder/node-kind-theme.js +1 -14
  1069. package/plugins/runtime-modules/builder/offered-page-catalog.d.ts +12 -1
  1070. package/plugins/runtime-modules/builder/offered-page-catalog.js +98 -3
  1071. package/plugins/runtime-modules/builder/options-providers.d.ts +3 -19
  1072. package/plugins/runtime-modules/builder/options-providers.js +116 -50
  1073. package/plugins/runtime-modules/builder/page-controller-helpers.d.ts +0 -1
  1074. package/plugins/runtime-modules/builder/page-controller-helpers.js +0 -8
  1075. package/plugins/runtime-modules/builder/page-controller.d.ts +0 -1
  1076. package/plugins/runtime-modules/builder/page-controller.js +1 -2
  1077. package/plugins/runtime-modules/builder/page-meta-form.js +139 -64
  1078. package/plugins/runtime-modules/builder/page-presets.server.d.ts +0 -1
  1079. package/plugins/runtime-modules/builder/page-presets.server.js +45 -12
  1080. package/plugins/runtime-modules/builder/page-reference-tree.d.ts +18 -0
  1081. package/plugins/runtime-modules/builder/page-reference-tree.js +31 -0
  1082. package/plugins/runtime-modules/builder/page-references-provider.d.ts +5 -0
  1083. package/plugins/runtime-modules/builder/page-references-provider.js +14 -0
  1084. package/plugins/runtime-modules/builder/pages-workspace.d.ts +2 -1
  1085. package/plugins/runtime-modules/builder/pages-workspace.js +5 -4
  1086. package/plugins/runtime-modules/builder/persistence.d.ts +0 -1
  1087. package/plugins/runtime-modules/builder/persistence.js +11 -28
  1088. package/plugins/runtime-modules/builder/plugin-meta-labels.d.ts +16 -0
  1089. package/plugins/runtime-modules/builder/plugin-meta-labels.js +57 -0
  1090. package/plugins/runtime-modules/builder/plugin-meta-labels.server.d.ts +4 -0
  1091. package/plugins/runtime-modules/builder/plugin-meta-labels.server.js +65 -0
  1092. package/plugins/runtime-modules/builder/plugin-meta-store.d.ts +4 -0
  1093. package/plugins/runtime-modules/builder/plugin-meta-store.js +8 -1
  1094. package/plugins/runtime-modules/builder/plugin-metas.d.ts +1 -2
  1095. package/plugins/runtime-modules/builder/plugin-metas.js +3 -14
  1096. package/plugins/runtime-modules/builder/presets.d.ts +4 -2
  1097. package/plugins/runtime-modules/builder/presets.js +3 -4
  1098. package/plugins/runtime-modules/builder/preview-controller.d.ts +1 -2
  1099. package/plugins/runtime-modules/builder/preview-controller.js +2 -70
  1100. package/plugins/runtime-modules/builder/preview-store.d.ts +0 -1
  1101. package/plugins/runtime-modules/builder/preview-store.js +1 -4
  1102. package/plugins/runtime-modules/builder/preview-transport.js +4 -6
  1103. package/plugins/runtime-modules/builder/region-controller.d.ts +0 -1
  1104. package/plugins/runtime-modules/builder/region-controller.js +0 -6
  1105. package/plugins/runtime-modules/builder/region-hydration.d.ts +5 -13
  1106. package/plugins/runtime-modules/builder/region-hydration.js +0 -20
  1107. package/plugins/runtime-modules/builder/render-root-node-preview.server.d.ts +1 -3
  1108. package/plugins/runtime-modules/builder/render-root-node-preview.server.js +8 -56
  1109. package/plugins/runtime-modules/builder/render-root-node-scaffold.d.ts +2 -2
  1110. package/plugins/runtime-modules/builder/render-root-node-scaffold.js +137 -47
  1111. package/plugins/runtime-modules/builder/root-node-normalization.d.ts +6 -1
  1112. package/plugins/runtime-modules/builder/root-node-normalization.js +22 -6
  1113. package/plugins/runtime-modules/builder/runtime-module-sandbox.server.d.ts +1 -1
  1114. package/plugins/runtime-modules/builder/selected-collection-source.d.ts +22 -0
  1115. package/plugins/runtime-modules/builder/selected-collection-source.js +51 -0
  1116. package/plugins/runtime-modules/builder/sequential-slot-helpers.d.ts +7 -0
  1117. package/plugins/runtime-modules/builder/sequential-slot-helpers.js +4 -0
  1118. package/plugins/runtime-modules/builder/server.js +8 -2
  1119. package/plugins/runtime-modules/builder/services/navigation-table.js +11 -3
  1120. package/plugins/runtime-modules/builder/services/page-source-tree.js +8 -2
  1121. package/plugins/runtime-modules/builder/services/runtime-modules-table.d.ts +15 -0
  1122. package/plugins/runtime-modules/builder/services/runtime-modules-table.js +92 -24
  1123. package/plugins/runtime-modules/builder/services/signal-routes-table.js +3 -1
  1124. package/plugins/runtime-modules/builder/shells-workspace.d.ts +2 -1
  1125. package/plugins/runtime-modules/builder/shells-workspace.js +5 -4
  1126. package/plugins/runtime-modules/builder/signal-wiring-controller.js +18 -2
  1127. package/plugins/runtime-modules/builder/signal-wiring-form.js +15 -6
  1128. package/plugins/runtime-modules/builder/signal-wiring-options.js +38 -10
  1129. package/plugins/runtime-modules/builder/structure-region-pick-items.js +14 -2
  1130. package/plugins/runtime-modules/builder/trees/builder-navigation-label-set.d.ts +35 -0
  1131. package/plugins/runtime-modules/builder/trees/builder-navigation-label-set.js +68 -0
  1132. package/plugins/runtime-modules/builder/trees/builder-settings-label-set.d.ts +17 -0
  1133. package/plugins/runtime-modules/builder/trees/builder-settings-label-set.js +34 -0
  1134. package/plugins/runtime-modules/builder/trees/phi-builder-inspector-area-overlay-tree.d.ts +7 -0
  1135. package/plugins/runtime-modules/builder/trees/phi-builder-inspector-area-overlay-tree.js +12 -0
  1136. package/plugins/runtime-modules/builder/trees/phi-builder-inspector-area-overlay-tree.server.d.ts +20 -0
  1137. package/plugins/runtime-modules/builder/trees/phi-builder-inspector-area-overlay-tree.server.js +569 -0
  1138. package/plugins/runtime-modules/builder/trees/phi-default-builder-area-preset-tree.d.ts +132 -0
  1139. package/plugins/runtime-modules/builder/trees/phi-default-builder-area-preset-tree.js +2052 -0
  1140. package/plugins/runtime-modules/builder/trees/phi-default-builder-settings-page-tree.d.ts +12 -0
  1141. package/plugins/runtime-modules/builder/trees/phi-default-builder-settings-page-tree.js +55 -0
  1142. package/plugins/runtime-modules/builder/use-offered-page-catalog.d.ts +16 -0
  1143. package/plugins/runtime-modules/builder/use-offered-page-catalog.js +35 -0
  1144. package/plugins/runtime-modules/builder/widgets/chrome/config.d.ts +0 -1
  1145. package/plugins/runtime-modules/builder/widgets/chrome/config.js +2 -5
  1146. package/plugins/runtime-modules/builder/widgets/hello-world/client.js +2 -10
  1147. package/plugins/runtime-modules/builder/widgets/hello-world/config.d.ts +3 -3
  1148. package/plugins/runtime-modules/builder/widgets/hello-world/config.js +1 -2
  1149. package/plugins/runtime-modules/builder/widgets/hello-world/plugin.d.ts +0 -2
  1150. package/plugins/runtime-modules/builder/widgets/hello-world/plugin.js +0 -2
  1151. package/plugins/runtime-modules/builder/widgets/structure-region/built-in.d.ts +3 -1
  1152. package/plugins/runtime-modules/builder/widgets/structure-region/built-in.js +112 -89
  1153. package/plugins/runtime-modules/builder/widgets/structure-region/config.d.ts +3 -0
  1154. package/plugins/runtime-modules/builder/widgets/structure-region/config.js +3 -0
  1155. package/plugins/runtime-modules/builder/widgets/structure-region/internal-builder.d.ts +22 -0
  1156. package/plugins/runtime-modules/builder/widgets/structure-region/internal-builder.js +8 -0
  1157. package/plugins/runtime-modules/builder/widgets/structure-region/plugin.js +12 -8
  1158. package/plugins/runtime-modules/builder/widgets/test-block/config.d.ts +3 -2
  1159. package/plugins/runtime-modules/builder/widgets/test-block/config.js +1 -0
  1160. package/plugins/runtime-modules/builder/widgets/workspace-headers/config.d.ts +1 -0
  1161. package/plugins/runtime-modules/builder/widgets/workspace-headers/config.js +1 -0
  1162. package/plugins/runtime-modules/builder/widgets.js +1 -8
  1163. package/plugins/runtime-modules/builder/workspace-controller.d.ts +1 -1
  1164. package/plugins/runtime-modules/builder/workspace-controller.js +206 -199
  1165. package/plugins/runtime-modules/client-area-contributions/accounting.d.ts +1 -1
  1166. package/plugins/runtime-modules/client-area-contributions/accounting.js +0 -7
  1167. package/plugins/runtime-modules/client-area-contributions/app.js +4 -4
  1168. package/plugins/runtime-modules/client-area-contributions/public.d.ts +1 -1
  1169. package/plugins/runtime-modules/client-area-contributions/public.js +0 -6
  1170. package/plugins/runtime-modules/client-authoring-providers/app.d.ts +1 -1
  1171. package/plugins/runtime-modules/client-authoring-providers/app.js +12 -0
  1172. package/plugins/runtime-modules/client-authoring-providers/editor.d.ts +1 -1
  1173. package/plugins/runtime-modules/client-authoring-providers/editor.js +6 -0
  1174. package/plugins/runtime-modules/client-authoring-providers/public.d.ts +1 -1
  1175. package/plugins/runtime-modules/client-authoring-providers/public.js +12 -0
  1176. package/plugins/runtime-modules/client-calendar-adapters/core.js +1 -1
  1177. package/plugins/runtime-modules/client-manifests/accounting.d.ts +2 -1
  1178. package/plugins/runtime-modules/client-manifests/accounting.js +5 -1
  1179. package/plugins/runtime-modules/client-manifests/admin.d.ts +1 -0
  1180. package/plugins/runtime-modules/client-manifests/admin.js +4 -9
  1181. package/plugins/runtime-modules/client-manifests/app.d.ts +1 -0
  1182. package/plugins/runtime-modules/client-manifests/app.js +12 -3
  1183. package/plugins/runtime-modules/client-manifests/builder.d.ts +1 -0
  1184. package/plugins/runtime-modules/client-manifests/builder.js +3 -4
  1185. package/plugins/runtime-modules/client-manifests/common.d.ts +7 -0
  1186. package/plugins/runtime-modules/client-manifests/common.js +59 -31
  1187. package/plugins/runtime-modules/client-manifests/editor.d.ts +1 -0
  1188. package/plugins/runtime-modules/client-manifests/editor.js +8 -1
  1189. package/plugins/runtime-modules/client-manifests/news-render-clients.d.ts +2 -0
  1190. package/plugins/runtime-modules/client-manifests/news-render-clients.js +10 -0
  1191. package/plugins/runtime-modules/client-manifests/public.d.ts +1 -0
  1192. package/plugins/runtime-modules/client-manifests/public.js +3 -0
  1193. package/plugins/runtime-modules/contracts.js +89 -27
  1194. package/plugins/runtime-modules/core/authoring-widgets.js +6 -14
  1195. package/plugins/runtime-modules/core/cards.d.ts +3 -0
  1196. package/plugins/runtime-modules/core/cards.js +83 -0
  1197. package/plugins/runtime-modules/core/client-data-providers.js +11 -3
  1198. package/plugins/runtime-modules/core/data-providers.js +10 -1
  1199. package/plugins/runtime-modules/core/definition.d.ts +223 -181
  1200. package/plugins/runtime-modules/core/definition.js +1 -1
  1201. package/plugins/runtime-modules/core/form-providers.d.ts +417 -0
  1202. package/plugins/runtime-modules/core/form-providers.js +13 -0
  1203. package/plugins/runtime-modules/core/ids.d.ts +0 -4
  1204. package/plugins/runtime-modules/core/ids.js +0 -5
  1205. package/plugins/runtime-modules/core/module.d.ts +1 -508
  1206. package/plugins/runtime-modules/core/module.js +2 -4
  1207. package/plugins/runtime-modules/core/server.js +3 -0
  1208. package/plugins/runtime-modules/core/services/table.js +13 -0
  1209. package/plugins/runtime-modules/core/widgets/account/client.d.ts +3 -2
  1210. package/plugins/runtime-modules/core/widgets/account/client.js +62 -38
  1211. package/plugins/runtime-modules/core/widgets/account/config.d.ts +1 -1
  1212. package/plugins/runtime-modules/core/widgets/account/config.js +1 -2
  1213. package/plugins/runtime-modules/core/widgets/account/plugin.d.ts +0 -2
  1214. package/plugins/runtime-modules/core/widgets/account/plugin.js +9 -4
  1215. package/plugins/runtime-modules/core/widgets/account/server.d.ts +9 -5
  1216. package/plugins/runtime-modules/core/widgets/account/server.js +89 -49
  1217. package/plugins/runtime-modules/core/widgets/brand/authoring.js +65 -5
  1218. package/plugins/runtime-modules/core/widgets/brand/client.d.ts +8 -4
  1219. package/plugins/runtime-modules/core/widgets/brand/client.js +35 -8
  1220. package/plugins/runtime-modules/core/widgets/brand/config.d.ts +13 -15
  1221. package/plugins/runtime-modules/core/widgets/brand/config.js +24 -9
  1222. package/plugins/runtime-modules/core/widgets/brand/mode.d.ts +23 -0
  1223. package/plugins/runtime-modules/core/widgets/brand/mode.js +7 -0
  1224. package/plugins/runtime-modules/core/widgets/brand/plugin.js +12 -2
  1225. package/plugins/runtime-modules/core/widgets/brand/server.d.ts +3 -6
  1226. package/plugins/runtime-modules/core/widgets/brand/server.js +2 -6
  1227. package/plugins/runtime-modules/core/widgets/breadcrumb/client.js +3 -2
  1228. package/plugins/runtime-modules/core/widgets/breadcrumb/config.d.ts +1 -0
  1229. package/plugins/runtime-modules/core/widgets/breadcrumb/config.js +1 -0
  1230. package/plugins/runtime-modules/core/widgets/button/client.d.ts +14 -1
  1231. package/plugins/runtime-modules/core/widgets/button/client.js +15 -5
  1232. package/plugins/runtime-modules/core/widgets/button/config.d.ts +61 -7
  1233. package/plugins/runtime-modules/core/widgets/button/config.js +29 -20
  1234. package/plugins/runtime-modules/core/widgets/button/plugin.js +34 -4
  1235. package/plugins/runtime-modules/core/widgets/card/authoring.js +1 -1
  1236. package/plugins/runtime-modules/core/widgets/card/collection-view-binding.d.ts +9 -0
  1237. package/plugins/runtime-modules/core/widgets/card/collection-view-binding.js +104 -0
  1238. package/plugins/runtime-modules/core/widgets/card/config.d.ts +16 -1
  1239. package/plugins/runtime-modules/core/widgets/card/config.js +16 -2
  1240. package/plugins/runtime-modules/core/widgets/card/editor.d.ts +11 -0
  1241. package/plugins/runtime-modules/core/widgets/card/editor.js +48 -0
  1242. package/plugins/runtime-modules/core/widgets/card/plugin.js +3 -1
  1243. package/plugins/runtime-modules/core/widgets/card/server.d.ts +4 -5
  1244. package/plugins/runtime-modules/core/widgets/card/server.js +11 -2
  1245. package/plugins/runtime-modules/core/widgets/cascader/authoring.d.ts +9 -9
  1246. package/plugins/runtime-modules/core/widgets/cascader/config.d.ts +2 -1
  1247. package/plugins/runtime-modules/core/widgets/cascader/config.js +1 -0
  1248. package/plugins/runtime-modules/core/widgets/checkbox/authoring.d.ts +1 -2
  1249. package/plugins/runtime-modules/core/widgets/checkbox/authoring.js +1 -2
  1250. package/plugins/runtime-modules/core/widgets/checkbox/config.d.ts +0 -1
  1251. package/plugins/runtime-modules/core/widgets/checkbox/config.js +0 -2
  1252. package/plugins/runtime-modules/core/widgets/checkbox/plugin.d.ts +1 -2
  1253. package/plugins/runtime-modules/core/widgets/checkbox/plugin.js +1 -2
  1254. package/plugins/runtime-modules/core/widgets/checkbox-group/authoring.d.ts +1 -2
  1255. package/plugins/runtime-modules/core/widgets/checkbox-group/authoring.js +1 -2
  1256. package/plugins/runtime-modules/core/widgets/checkbox-group/config.d.ts +2 -2
  1257. package/plugins/runtime-modules/core/widgets/checkbox-group/config.js +1 -2
  1258. package/plugins/runtime-modules/core/widgets/checkbox-group/plugin.d.ts +1 -2
  1259. package/plugins/runtime-modules/core/widgets/checkbox-group/plugin.js +1 -2
  1260. package/plugins/runtime-modules/core/widgets/collection-view/asset-binding.d.ts +9 -0
  1261. package/plugins/runtime-modules/core/widgets/collection-view/asset-binding.js +253 -0
  1262. package/plugins/runtime-modules/core/widgets/collection-view/authoring.d.ts +1 -1
  1263. package/plugins/runtime-modules/core/widgets/collection-view/authoring.js +1 -1
  1264. package/plugins/runtime-modules/core/widgets/collection-view/client.d.ts +10 -0
  1265. package/plugins/runtime-modules/core/widgets/collection-view/client.js +55 -0
  1266. package/plugins/runtime-modules/core/widgets/collection-view/config.d.ts +94 -88
  1267. package/plugins/runtime-modules/core/widgets/collection-view/config.js +47 -38
  1268. package/plugins/runtime-modules/core/widgets/collection-view/image-preview-grid.d.ts +7 -0
  1269. package/plugins/runtime-modules/core/widgets/collection-view/image-preview-grid.js +16 -0
  1270. package/plugins/runtime-modules/core/widgets/collection-view/plugin.d.ts +1 -1
  1271. package/plugins/runtime-modules/core/widgets/collection-view/server.d.ts +1 -1
  1272. package/plugins/runtime-modules/core/widgets/color/authoring.js +1 -1
  1273. package/plugins/runtime-modules/core/widgets/color/client.d.ts +8 -0
  1274. package/plugins/runtime-modules/core/widgets/color/client.js +18 -0
  1275. package/plugins/runtime-modules/core/widgets/color/config.d.ts +1 -0
  1276. package/plugins/runtime-modules/core/widgets/color/config.js +1 -0
  1277. package/plugins/runtime-modules/core/widgets/command-toolbar/authoring-tools.d.ts +5 -0
  1278. package/plugins/runtime-modules/core/widgets/command-toolbar/authoring-tools.js +45 -0
  1279. package/plugins/runtime-modules/core/widgets/command-toolbar/authoring.js +1 -1
  1280. package/plugins/runtime-modules/core/widgets/command-toolbar/client.js +2 -1
  1281. package/plugins/runtime-modules/core/widgets/command-toolbar/config.d.ts +14 -22
  1282. package/plugins/runtime-modules/core/widgets/command-toolbar/config.js +11 -7
  1283. package/plugins/runtime-modules/core/widgets/date-picker/authoring.d.ts +1 -2
  1284. package/plugins/runtime-modules/core/widgets/date-picker/authoring.js +1 -2
  1285. package/plugins/runtime-modules/core/widgets/date-picker/config.d.ts +0 -1
  1286. package/plugins/runtime-modules/core/widgets/date-picker/config.js +2 -3
  1287. package/plugins/runtime-modules/core/widgets/date-picker/plugin.d.ts +1 -2
  1288. package/plugins/runtime-modules/core/widgets/date-picker/plugin.js +1 -2
  1289. package/plugins/runtime-modules/core/widgets/description/authoring.js +1 -1
  1290. package/plugins/runtime-modules/core/widgets/description/client.d.ts +5 -2
  1291. package/plugins/runtime-modules/core/widgets/description/client.js +10 -9
  1292. package/plugins/runtime-modules/core/widgets/description/config.d.ts +25 -0
  1293. package/plugins/runtime-modules/core/widgets/description/config.js +5 -0
  1294. package/plugins/runtime-modules/core/widgets/description/editor.d.ts +6 -0
  1295. package/plugins/runtime-modules/core/widgets/description/editor.js +129 -0
  1296. package/plugins/runtime-modules/core/widgets/description/plugin.js +4 -2
  1297. package/plugins/runtime-modules/core/widgets/description/server.d.ts +3 -1
  1298. package/plugins/runtime-modules/core/widgets/description/server.js +36 -12
  1299. package/plugins/runtime-modules/core/widgets/dimension/config.d.ts +1 -0
  1300. package/plugins/runtime-modules/core/widgets/dimension/config.js +1 -0
  1301. package/plugins/runtime-modules/core/widgets/draft-status/authoring.d.ts +3 -0
  1302. package/plugins/runtime-modules/core/widgets/draft-status/authoring.js +9 -0
  1303. package/plugins/runtime-modules/core/widgets/draft-status/client.d.ts +21 -0
  1304. package/plugins/runtime-modules/core/widgets/draft-status/client.js +118 -0
  1305. package/plugins/runtime-modules/core/widgets/draft-status/config.d.ts +43 -0
  1306. package/plugins/runtime-modules/core/widgets/draft-status/config.js +37 -0
  1307. package/plugins/runtime-modules/core/widgets/draft-status/plugin.d.ts +3 -0
  1308. package/plugins/runtime-modules/core/widgets/draft-status/plugin.js +23 -0
  1309. package/plugins/runtime-modules/core/widgets/form/authoring.d.ts +1 -1
  1310. package/plugins/runtime-modules/core/widgets/form/config.d.ts +70 -62
  1311. package/plugins/runtime-modules/core/widgets/form/config.js +65 -67
  1312. package/plugins/runtime-modules/core/widgets/form/plugin.d.ts +2 -1
  1313. package/plugins/runtime-modules/core/widgets/form/plugin.js +2 -2
  1314. package/plugins/runtime-modules/core/widgets/form-preview/built-in.d.ts +2 -1
  1315. package/plugins/runtime-modules/core/widgets/form-preview/built-in.js +1 -0
  1316. package/plugins/runtime-modules/core/widgets/form-preview/client.js +12 -9
  1317. package/plugins/runtime-modules/core/widgets/form-preview/config.d.ts +0 -1
  1318. package/plugins/runtime-modules/core/widgets/form-preview/config.js +3 -4
  1319. package/plugins/runtime-modules/core/widgets/form-preview/plugin.d.ts +1 -2
  1320. package/plugins/runtime-modules/core/widgets/form-preview/plugin.js +1 -2
  1321. package/plugins/runtime-modules/core/widgets/gallery/authoring.d.ts +1 -2
  1322. package/plugins/runtime-modules/core/widgets/gallery/authoring.js +1 -2
  1323. package/plugins/runtime-modules/core/widgets/gallery/config.d.ts +13 -1
  1324. package/plugins/runtime-modules/core/widgets/gallery/config.js +10 -7
  1325. package/plugins/runtime-modules/core/widgets/gallery/plugin.d.ts +1 -2
  1326. package/plugins/runtime-modules/core/widgets/gallery/plugin.js +1 -2
  1327. package/plugins/runtime-modules/core/widgets/header-navigation/authoring.js +4 -3
  1328. package/plugins/runtime-modules/core/widgets/header-navigation/client.d.ts +1 -0
  1329. package/plugins/runtime-modules/core/widgets/header-navigation/client.js +2 -5
  1330. package/plugins/runtime-modules/core/widgets/header-navigation/config.js +2 -2
  1331. package/plugins/runtime-modules/core/widgets/header-navigation/plugin.js +3 -2
  1332. package/plugins/runtime-modules/core/widgets/html/config.d.ts +1 -7
  1333. package/plugins/runtime-modules/core/widgets/html/config.js +12 -35
  1334. package/plugins/runtime-modules/core/widgets/html/server.js +16 -20
  1335. package/plugins/runtime-modules/core/widgets/icon/authoring.js +2 -2
  1336. package/plugins/runtime-modules/core/widgets/icon/client.d.ts +9 -2
  1337. package/plugins/runtime-modules/core/widgets/icon/client.js +5 -3
  1338. package/plugins/runtime-modules/core/widgets/icon/config.d.ts +1 -0
  1339. package/plugins/runtime-modules/core/widgets/icon/config.js +1 -0
  1340. package/plugins/runtime-modules/core/widgets/icon/editor.d.ts +10 -0
  1341. package/plugins/runtime-modules/core/widgets/icon/editor.js +12 -0
  1342. package/plugins/runtime-modules/core/widgets/image/authoring.js +2 -2
  1343. package/plugins/runtime-modules/core/widgets/image/client.js +9 -6
  1344. package/plugins/runtime-modules/core/widgets/image/config.d.ts +10 -24
  1345. package/plugins/runtime-modules/core/widgets/image/config.js +13 -15
  1346. package/plugins/runtime-modules/core/widgets/image/editor.d.ts +10 -0
  1347. package/plugins/runtime-modules/core/widgets/image/editor.js +100 -0
  1348. package/plugins/runtime-modules/core/widgets/input/client.js +1 -1
  1349. package/plugins/runtime-modules/core/widgets/input/config.d.ts +1 -0
  1350. package/plugins/runtime-modules/core/widgets/input/config.js +1 -0
  1351. package/plugins/runtime-modules/core/widgets/length/config.d.ts +1 -0
  1352. package/plugins/runtime-modules/core/widgets/length/config.js +1 -0
  1353. package/plugins/runtime-modules/core/widgets/locale/config.d.ts +1 -1
  1354. package/plugins/runtime-modules/core/widgets/locale/config.js +1 -2
  1355. package/plugins/runtime-modules/core/widgets/locale/plugin.d.ts +0 -2
  1356. package/plugins/runtime-modules/core/widgets/locale/plugin.js +1 -2
  1357. package/plugins/runtime-modules/core/widgets/markdown/authoring.js +1 -1
  1358. package/plugins/runtime-modules/core/widgets/markdown/config.d.ts +6 -9
  1359. package/plugins/runtime-modules/core/widgets/markdown/config.js +29 -5
  1360. package/plugins/runtime-modules/core/widgets/markdown/editor.d.ts +9 -0
  1361. package/plugins/runtime-modules/core/widgets/markdown/editor.js +104 -0
  1362. package/plugins/runtime-modules/core/widgets/markdown/plugin.js +1 -0
  1363. package/plugins/runtime-modules/core/widgets/markdown/server.d.ts +1 -19
  1364. package/plugins/runtime-modules/core/widgets/markdown/server.js +1 -486
  1365. package/plugins/runtime-modules/core/widgets/markdown-toc/authoring.d.ts +1 -2
  1366. package/plugins/runtime-modules/core/widgets/markdown-toc/authoring.js +1 -2
  1367. package/plugins/runtime-modules/core/widgets/markdown-toc/client.js +4 -2
  1368. package/plugins/runtime-modules/core/widgets/markdown-toc/config.d.ts +1 -6
  1369. package/plugins/runtime-modules/core/widgets/markdown-toc/config.js +0 -2
  1370. package/plugins/runtime-modules/core/widgets/markdown-toc/plugin.d.ts +1 -2
  1371. package/plugins/runtime-modules/core/widgets/markdown-toc/plugin.js +1 -2
  1372. package/plugins/runtime-modules/core/widgets/markdown-toc/server.d.ts +1 -1
  1373. package/plugins/runtime-modules/core/widgets/markdown-toc/server.js +4 -2
  1374. package/plugins/runtime-modules/core/widgets/multi-select/config.d.ts +2 -1
  1375. package/plugins/runtime-modules/core/widgets/multi-select/config.js +1 -0
  1376. package/plugins/runtime-modules/core/widgets/number-input/authoring.d.ts +1 -2
  1377. package/plugins/runtime-modules/core/widgets/number-input/authoring.js +1 -2
  1378. package/plugins/runtime-modules/core/widgets/number-input/config.d.ts +1 -1
  1379. package/plugins/runtime-modules/core/widgets/number-input/config.js +1 -2
  1380. package/plugins/runtime-modules/core/widgets/number-input/plugin.d.ts +1 -2
  1381. package/plugins/runtime-modules/core/widgets/number-input/plugin.js +1 -2
  1382. package/plugins/runtime-modules/core/widgets/otp/authoring.d.ts +1 -2
  1383. package/plugins/runtime-modules/core/widgets/otp/authoring.js +1 -2
  1384. package/plugins/runtime-modules/core/widgets/otp/client.js +1 -1
  1385. package/plugins/runtime-modules/core/widgets/otp/config.d.ts +0 -1
  1386. package/plugins/runtime-modules/core/widgets/otp/config.js +0 -2
  1387. package/plugins/runtime-modules/core/widgets/otp/plugin.d.ts +1 -2
  1388. package/plugins/runtime-modules/core/widgets/otp/plugin.js +1 -2
  1389. package/plugins/runtime-modules/core/widgets/page-title/authoring.js +2 -2
  1390. package/plugins/runtime-modules/core/widgets/page-title/config.d.ts +1 -0
  1391. package/plugins/runtime-modules/core/widgets/page-title/config.js +1 -0
  1392. package/plugins/runtime-modules/core/widgets/pagination/client.js +3 -2
  1393. package/plugins/runtime-modules/core/widgets/quick-links/authoring.js +3 -3
  1394. package/plugins/runtime-modules/core/widgets/quick-links/client.js +5 -5
  1395. package/plugins/runtime-modules/core/widgets/quick-links/config.js +2 -2
  1396. package/plugins/runtime-modules/core/widgets/quick-links/items.d.ts +5 -0
  1397. package/plugins/runtime-modules/core/widgets/quick-links/items.js +27 -0
  1398. package/plugins/runtime-modules/core/widgets/quick-links/server.js +1 -1
  1399. package/plugins/runtime-modules/core/widgets/rate/authoring.d.ts +1 -2
  1400. package/plugins/runtime-modules/core/widgets/rate/authoring.js +1 -2
  1401. package/plugins/runtime-modules/core/widgets/rate/config.d.ts +0 -1
  1402. package/plugins/runtime-modules/core/widgets/rate/config.js +0 -2
  1403. package/plugins/runtime-modules/core/widgets/rate/plugin.d.ts +1 -2
  1404. package/plugins/runtime-modules/core/widgets/rate/plugin.js +1 -2
  1405. package/plugins/runtime-modules/core/widgets/record/authoring.d.ts +3 -0
  1406. package/plugins/runtime-modules/core/widgets/record/authoring.js +8 -0
  1407. package/plugins/runtime-modules/core/widgets/record/client.d.ts +7 -0
  1408. package/plugins/runtime-modules/core/widgets/record/client.js +136 -0
  1409. package/plugins/runtime-modules/core/widgets/record/config.d.ts +186 -0
  1410. package/plugins/runtime-modules/core/widgets/record/config.js +214 -0
  1411. package/plugins/runtime-modules/core/widgets/record/plugin.d.ts +3 -0
  1412. package/plugins/runtime-modules/core/widgets/record/plugin.js +19 -0
  1413. package/plugins/runtime-modules/core/widgets/record/server.d.ts +7 -0
  1414. package/plugins/runtime-modules/core/widgets/record/server.js +6 -0
  1415. package/plugins/runtime-modules/core/widgets/result/config.d.ts +36 -7
  1416. package/plugins/runtime-modules/core/widgets/result/config.js +1 -5
  1417. package/plugins/runtime-modules/core/widgets/result/plugin.d.ts +1 -2
  1418. package/plugins/runtime-modules/core/widgets/result/plugin.js +5 -4
  1419. package/plugins/runtime-modules/core/widgets/result/server.d.ts +3 -1
  1420. package/plugins/runtime-modules/core/widgets/result/server.js +4 -4
  1421. package/plugins/runtime-modules/core/widgets/segmented/config.d.ts +1 -1
  1422. package/plugins/runtime-modules/core/widgets/select-box/config.d.ts +2 -1
  1423. package/plugins/runtime-modules/core/widgets/select-box/config.js +1 -0
  1424. package/plugins/runtime-modules/core/widgets/sidebar-navigation/authoring.js +2 -2
  1425. package/plugins/runtime-modules/core/widgets/sidebar-navigation/client.d.ts +1 -0
  1426. package/plugins/runtime-modules/core/widgets/sidebar-navigation/client.js +19 -24
  1427. package/plugins/runtime-modules/core/widgets/sidebar-navigation/config.d.ts +1 -0
  1428. package/plugins/runtime-modules/core/widgets/sidebar-navigation/config.js +15 -20
  1429. package/plugins/runtime-modules/core/widgets/simple-text/authoring.js +2 -2
  1430. package/plugins/runtime-modules/core/widgets/simple-text/client.d.ts +4 -6
  1431. package/plugins/runtime-modules/core/widgets/simple-text/client.js +15 -32
  1432. package/plugins/runtime-modules/core/widgets/simple-text/config.d.ts +252 -11
  1433. package/plugins/runtime-modules/core/widgets/simple-text/config.js +28 -68
  1434. package/plugins/runtime-modules/core/widgets/simple-text/editor.d.ts +32 -0
  1435. package/plugins/runtime-modules/core/widgets/simple-text/editor.js +143 -0
  1436. package/plugins/runtime-modules/core/widgets/simple-text/marks.d.ts +4 -0
  1437. package/plugins/runtime-modules/core/widgets/simple-text/marks.js +8 -0
  1438. package/plugins/runtime-modules/core/widgets/simple-text/server.js +13 -3
  1439. package/plugins/runtime-modules/core/widgets/slider/authoring.d.ts +1 -2
  1440. package/plugins/runtime-modules/core/widgets/slider/authoring.js +1 -2
  1441. package/plugins/runtime-modules/core/widgets/slider/client.js +1 -1
  1442. package/plugins/runtime-modules/core/widgets/slider/config.d.ts +0 -2
  1443. package/plugins/runtime-modules/core/widgets/slider/config.js +1 -5
  1444. package/plugins/runtime-modules/core/widgets/slider/plugin.d.ts +1 -2
  1445. package/plugins/runtime-modules/core/widgets/slider/plugin.js +1 -2
  1446. package/plugins/runtime-modules/core/widgets/slider/value.d.ts +1 -0
  1447. package/plugins/runtime-modules/core/widgets/slider/value.js +7 -0
  1448. package/plugins/runtime-modules/core/widgets/slot-upload/client.js +12 -7
  1449. package/plugins/runtime-modules/core/widgets/slot-upload/config.d.ts +1 -0
  1450. package/plugins/runtime-modules/core/widgets/slot-upload/config.js +1 -0
  1451. package/plugins/runtime-modules/core/widgets/spacer/authoring.d.ts +1 -3
  1452. package/plugins/runtime-modules/core/widgets/spacer/authoring.js +1 -2
  1453. package/plugins/runtime-modules/core/widgets/spacer/client.d.ts +2 -2
  1454. package/plugins/runtime-modules/core/widgets/spacer/config.d.ts +4 -3
  1455. package/plugins/runtime-modules/core/widgets/spacer/config.js +2 -4
  1456. package/plugins/runtime-modules/core/widgets/spacer/plugin.d.ts +2 -3
  1457. package/plugins/runtime-modules/core/widgets/spacer/plugin.js +1 -2
  1458. package/plugins/runtime-modules/core/widgets/switch/client.js +1 -1
  1459. package/plugins/runtime-modules/core/widgets/switch/config.d.ts +2 -2
  1460. package/plugins/runtime-modules/core/widgets/switch/config.js +14 -7
  1461. package/plugins/runtime-modules/core/widgets/table/client.js +103 -88
  1462. package/plugins/runtime-modules/core/widgets/table/config.d.ts +120 -12
  1463. package/plugins/runtime-modules/core/widgets/table/config.js +62 -74
  1464. package/plugins/runtime-modules/core/widgets/table/plugin.d.ts +0 -2
  1465. package/plugins/runtime-modules/core/widgets/table/plugin.js +1 -2
  1466. package/plugins/runtime-modules/core/widgets/table/static-resource-editor.d.ts +6 -0
  1467. package/plugins/runtime-modules/core/widgets/table/static-resource-editor.js +10 -0
  1468. package/plugins/runtime-modules/core/widgets/theme-mode-switch/authoring.d.ts +3 -0
  1469. package/plugins/runtime-modules/core/widgets/theme-mode-switch/authoring.js +12 -0
  1470. package/plugins/runtime-modules/core/widgets/theme-mode-switch/client.d.ts +20 -0
  1471. package/plugins/runtime-modules/core/widgets/theme-mode-switch/client.js +37 -0
  1472. package/plugins/runtime-modules/core/widgets/theme-mode-switch/config.d.ts +43 -0
  1473. package/plugins/runtime-modules/core/widgets/theme-mode-switch/config.js +39 -0
  1474. package/plugins/runtime-modules/core/widgets/theme-mode-switch/plugin.d.ts +3 -0
  1475. package/plugins/runtime-modules/core/widgets/theme-mode-switch/plugin.js +18 -0
  1476. package/plugins/runtime-modules/core/widgets/tree/client.js +2 -2
  1477. package/plugins/runtime-modules/core/widgets/tree/config.d.ts +9 -1
  1478. package/plugins/runtime-modules/core/widgets/tree/config.js +24 -28
  1479. package/plugins/runtime-modules/core/widgets/tree/plugin.d.ts +0 -2
  1480. package/plugins/runtime-modules/core/widgets/tree/plugin.js +1 -2
  1481. package/plugins/runtime-modules/core/widgets.js +23 -55
  1482. package/plugins/runtime-modules/dashboard/client-data-providers.d.ts +19 -0
  1483. package/plugins/runtime-modules/dashboard/client-data-providers.js +26 -0
  1484. package/plugins/runtime-modules/dashboard/clients/dashboard-card-view.d.ts +9 -0
  1485. package/plugins/runtime-modules/dashboard/clients/dashboard-card-view.js +128 -0
  1486. package/plugins/runtime-modules/dashboard/controller/address.d.ts +0 -2
  1487. package/plugins/runtime-modules/dashboard/controller/address.js +1 -5
  1488. package/plugins/runtime-modules/dashboard/data-providers.d.ts +30 -0
  1489. package/plugins/runtime-modules/dashboard/data-providers.js +34 -0
  1490. package/plugins/runtime-modules/dashboard/definition.d.ts +24 -0
  1491. package/plugins/runtime-modules/dashboard/definition.js +11 -1
  1492. package/plugins/runtime-modules/dashboard/ids.d.ts +6 -0
  1493. package/plugins/runtime-modules/dashboard/ids.js +6 -0
  1494. package/plugins/runtime-modules/dashboard/module.d.ts +1 -28
  1495. package/plugins/runtime-modules/dashboard/module.js +2 -4
  1496. package/plugins/runtime-modules/dashboard/presets.js +35 -55
  1497. package/plugins/runtime-modules/dashboard/services/collection.d.ts +4 -0
  1498. package/plugins/runtime-modules/dashboard/services/collection.js +76 -0
  1499. package/plugins/runtime-modules/dashboard/trees/admin-dashboard-label-set.d.ts +7 -0
  1500. package/plugins/runtime-modules/dashboard/trees/admin-dashboard-label-set.js +26 -0
  1501. package/plugins/runtime-modules/dashboard/trees/area-dashboard-label-set.d.ts +9 -0
  1502. package/plugins/runtime-modules/dashboard/trees/area-dashboard-label-set.js +38 -0
  1503. package/plugins/runtime-modules/dashboard/trees/phi-default-admin-dashboard-page-tree.d.ts +6 -0
  1504. package/plugins/runtime-modules/dashboard/trees/phi-default-admin-dashboard-page-tree.js +87 -0
  1505. package/plugins/runtime-modules/dashboard/trees/phi-default-area-dashboard-page-tree.d.ts +9 -0
  1506. package/plugins/runtime-modules/dashboard/trees/phi-default-area-dashboard-page-tree.js +87 -0
  1507. package/plugins/runtime-modules/dashboard/trees/phi-default-builder-dashboard-page-tree.d.ts +6 -0
  1508. package/plugins/runtime-modules/dashboard/trees/phi-default-builder-dashboard-page-tree.js +103 -0
  1509. package/plugins/runtime-modules/descriptor-compiler.d.ts +14 -3
  1510. package/plugins/runtime-modules/descriptor-compiler.js +144 -37
  1511. package/plugins/runtime-modules/editor/controller/address.d.ts +0 -2
  1512. package/plugins/runtime-modules/editor/controller/address.js +1 -5
  1513. package/plugins/runtime-modules/editor/module.d.ts +1 -28
  1514. package/plugins/runtime-modules/editor/module.js +2 -4
  1515. package/plugins/runtime-modules/editor/presets.js +2 -12
  1516. package/plugins/runtime-modules/editor/trees/editor-label-set.d.ts +8 -0
  1517. package/plugins/runtime-modules/editor/trees/editor-label-set.js +22 -0
  1518. package/plugins/runtime-modules/editor/trees/phi-default-editor-area-preset-tree.d.ts +6 -0
  1519. package/plugins/runtime-modules/editor/trees/phi-default-editor-area-preset-tree.js +213 -0
  1520. package/plugins/runtime-modules/form-builder/module.d.ts +1 -28
  1521. package/plugins/runtime-modules/form-builder/module.js +2 -4
  1522. package/plugins/runtime-modules/groups/controller/client.d.ts +2 -2
  1523. package/plugins/runtime-modules/groups/controller/client.js +30 -64
  1524. package/plugins/runtime-modules/groups/controller/definition.d.ts +13 -2
  1525. package/plugins/runtime-modules/groups/controller/definition.js +11 -3
  1526. package/plugins/runtime-modules/groups/data-providers.d.ts +2 -0
  1527. package/plugins/runtime-modules/groups/data-providers.js +64 -12
  1528. package/plugins/runtime-modules/groups/definition.d.ts +3 -0
  1529. package/plugins/runtime-modules/groups/definition.js +9 -0
  1530. package/plugins/runtime-modules/groups/forms.d.ts +0 -1
  1531. package/plugins/runtime-modules/groups/forms.js +0 -47
  1532. package/plugins/runtime-modules/groups/labels.d.ts +4 -1
  1533. package/plugins/runtime-modules/groups/labels.js +8 -2
  1534. package/plugins/runtime-modules/groups/module.d.ts +1 -335
  1535. package/plugins/runtime-modules/groups/module.js +2 -4
  1536. package/plugins/runtime-modules/groups/presets.d.ts +2 -56
  1537. package/plugins/runtime-modules/groups/presets.js +17 -35
  1538. package/plugins/runtime-modules/groups/services/options.js +5 -4
  1539. package/plugins/runtime-modules/groups/services/table.js +42 -33
  1540. package/plugins/runtime-modules/groups/trees/phi-default-admin-groups-page-tree.d.ts +13 -0
  1541. package/plugins/runtime-modules/groups/trees/phi-default-admin-groups-page-tree.js +485 -0
  1542. package/plugins/runtime-modules/groups/trees/phi-default-app-groups-page-tree.d.ts +14 -0
  1543. package/plugins/runtime-modules/groups/trees/phi-default-app-groups-page-tree.js +384 -0
  1544. package/plugins/runtime-modules/localization/cards.d.ts +3 -0
  1545. package/plugins/runtime-modules/localization/cards.js +109 -0
  1546. package/plugins/runtime-modules/localization/controller/client.js +4 -3
  1547. package/plugins/runtime-modules/localization/definition.d.ts +0 -5
  1548. package/plugins/runtime-modules/localization/definition.js +0 -2
  1549. package/plugins/runtime-modules/localization/forms.js +2 -15
  1550. package/plugins/runtime-modules/localization/module.d.ts +1 -372
  1551. package/plugins/runtime-modules/localization/module.js +2 -4
  1552. package/plugins/runtime-modules/localization/presets.d.ts +2 -25
  1553. package/plugins/runtime-modules/localization/presets.js +30 -17
  1554. package/plugins/runtime-modules/localization/server.js +4 -0
  1555. package/plugins/runtime-modules/localization/services/table.js +22 -30
  1556. package/plugins/runtime-modules/localization/trees/admin-locales-label-set.d.ts +8 -0
  1557. package/plugins/runtime-modules/localization/trees/admin-locales-label-set.js +22 -0
  1558. package/plugins/runtime-modules/localization/trees/editor-translations-label-set.d.ts +8 -0
  1559. package/plugins/runtime-modules/localization/trees/editor-translations-label-set.js +22 -0
  1560. package/plugins/runtime-modules/localization/trees/editor-translations-shell.js +51 -0
  1561. package/plugins/runtime-modules/localization/trees/editor-translations-widget-label-set.d.ts +56 -0
  1562. package/plugins/runtime-modules/localization/trees/editor-translations-widget-label-set.js +100 -0
  1563. package/plugins/runtime-modules/localization/trees/phi-default-admin-locales-page-tree.d.ts +7 -0
  1564. package/plugins/runtime-modules/localization/trees/phi-default-admin-locales-page-tree.js +251 -0
  1565. package/plugins/runtime-modules/localization/trees/phi-default-editor-translations-page-tree.d.ts +6 -0
  1566. package/plugins/runtime-modules/localization/trees/phi-default-editor-translations-page-tree.js +325 -0
  1567. package/plugins/runtime-modules/news/authoring-widgets.d.ts +2 -0
  1568. package/plugins/runtime-modules/news/authoring-widgets.js +7 -0
  1569. package/plugins/runtime-modules/news/authoring.d.ts +1 -0
  1570. package/plugins/runtime-modules/news/authoring.js +8 -0
  1571. package/plugins/runtime-modules/news/client-data-providers.d.ts +11 -0
  1572. package/plugins/runtime-modules/news/client-data-providers.js +14 -0
  1573. package/plugins/runtime-modules/news/data-providers.d.ts +133 -0
  1574. package/plugins/runtime-modules/news/data-providers.js +112 -0
  1575. package/plugins/runtime-modules/news/definition.d.ts +165 -0
  1576. package/plugins/runtime-modules/news/definition.js +32 -0
  1577. package/plugins/runtime-modules/news/forms.d.ts +39 -0
  1578. package/plugins/runtime-modules/news/forms.js +204 -0
  1579. package/plugins/runtime-modules/news/ids.d.ts +42 -0
  1580. package/plugins/runtime-modules/news/ids.js +125 -0
  1581. package/plugins/runtime-modules/news/module.d.ts +157 -0
  1582. package/plugins/runtime-modules/news/module.js +12 -0
  1583. package/plugins/runtime-modules/news/presets.d.ts +17 -0
  1584. package/plugins/runtime-modules/news/presets.js +64 -0
  1585. package/plugins/runtime-modules/news/server.d.ts +1 -0
  1586. package/plugins/runtime-modules/news/server.js +18 -0
  1587. package/plugins/runtime-modules/news/services/options.d.ts +3 -0
  1588. package/plugins/runtime-modules/news/services/options.js +35 -0
  1589. package/plugins/runtime-modules/news/services/table.d.ts +14 -0
  1590. package/plugins/runtime-modules/news/services/table.js +144 -0
  1591. package/plugins/runtime-modules/news/trees/editor-news-label-set.d.ts +8 -0
  1592. package/plugins/runtime-modules/news/trees/editor-news-label-set.js +29 -0
  1593. package/plugins/runtime-modules/news/trees/editor-news-widget-label-set.d.ts +65 -0
  1594. package/plugins/runtime-modules/news/trees/editor-news-widget-label-set.js +106 -0
  1595. package/plugins/runtime-modules/news/trees/phi-default-editor-news-page-tree.d.ts +17 -0
  1596. package/plugins/runtime-modules/news/trees/phi-default-editor-news-page-tree.js +462 -0
  1597. package/plugins/runtime-modules/news/trees/phi-default-pub-news-page-tree.d.ts +11 -0
  1598. package/plugins/runtime-modules/news/trees/phi-default-pub-news-page-tree.js +86 -0
  1599. package/plugins/runtime-modules/news/widgets/news-list/authoring.d.ts +2 -0
  1600. package/plugins/runtime-modules/news/widgets/news-list/authoring.js +21 -0
  1601. package/plugins/runtime-modules/news/widgets/news-list/client.d.ts +34 -0
  1602. package/plugins/runtime-modules/news/widgets/news-list/client.js +26 -0
  1603. package/plugins/runtime-modules/news/widgets/news-list/config.d.ts +43 -0
  1604. package/plugins/runtime-modules/news/widgets/news-list/config.js +52 -0
  1605. package/plugins/runtime-modules/news/widgets/news-list/plugin.d.ts +3 -0
  1606. package/plugins/runtime-modules/news/widgets/news-list/plugin.js +8 -0
  1607. package/plugins/runtime-modules/news/widgets/news-list/server.d.ts +14 -0
  1608. package/plugins/runtime-modules/news/widgets/news-list/server.js +82 -0
  1609. package/plugins/runtime-modules/news/widgets.d.ts +2 -0
  1610. package/plugins/runtime-modules/news/widgets.js +16 -0
  1611. package/plugins/runtime-modules/observability/authoring-widgets.d.ts +9 -0
  1612. package/plugins/runtime-modules/observability/authoring-widgets.js +11 -6
  1613. package/plugins/runtime-modules/observability/definition.d.ts +0 -5
  1614. package/plugins/runtime-modules/observability/definition.js +0 -2
  1615. package/plugins/runtime-modules/observability/module.d.ts +0 -5
  1616. package/plugins/runtime-modules/observability/presets.d.ts +2 -30
  1617. package/plugins/runtime-modules/observability/presets.js +10 -19
  1618. package/plugins/runtime-modules/observability/server.js +1 -2
  1619. package/plugins/runtime-modules/observability/trees/admin-logs-label-set.d.ts +8 -0
  1620. package/plugins/runtime-modules/observability/trees/admin-logs-label-set.js +22 -0
  1621. package/plugins/runtime-modules/observability/trees/phi-default-admin-logs-page-tree.d.ts +6 -0
  1622. package/plugins/runtime-modules/observability/trees/phi-default-admin-logs-page-tree.js +313 -0
  1623. package/plugins/runtime-modules/phi-default-site-area-preset-tree.d.ts +11 -0
  1624. package/plugins/runtime-modules/phi-default-site-area-preset-tree.js +633 -0
  1625. package/plugins/runtime-modules/pub-area-preset.d.ts +2 -0
  1626. package/plugins/runtime-modules/pub-area-preset.js +130 -0
  1627. package/plugins/runtime-modules/public/definition.d.ts +14 -3
  1628. package/plugins/runtime-modules/public/definition.js +1 -7
  1629. package/plugins/runtime-modules/public/form-providers.d.ts +29 -0
  1630. package/plugins/runtime-modules/public/form-providers.js +11 -0
  1631. package/plugins/runtime-modules/public/forms.d.ts +3 -0
  1632. package/plugins/runtime-modules/public/forms.js +38 -0
  1633. package/plugins/runtime-modules/public/module.d.ts +46 -1
  1634. package/plugins/runtime-modules/public/module.js +8 -3
  1635. package/plugins/runtime-modules/public/server.js +1 -1
  1636. package/plugins/runtime-modules/public/trees/phi-default-pub-contact-page-tree.d.ts +4 -0
  1637. package/plugins/runtime-modules/public/trees/phi-default-pub-contact-page-tree.js +103 -0
  1638. package/plugins/runtime-modules/public/trees/phi-default-pub-error-page-tree.d.ts +6 -0
  1639. package/plugins/runtime-modules/public/trees/phi-default-pub-error-page-tree.js +105 -0
  1640. package/plugins/runtime-modules/public/trees/phi-default-pub-home-page-tree.d.ts +10 -0
  1641. package/plugins/runtime-modules/public/trees/phi-default-pub-home-page-tree.js +79 -0
  1642. package/plugins/runtime-modules/public/trees/phi-default-pub-terms-page-tree.d.ts +4 -0
  1643. package/plugins/runtime-modules/public/trees/phi-default-pub-terms-page-tree.js +82 -0
  1644. package/plugins/runtime-modules/public/trees/phi-default-pub-unsubscribe-page-tree.d.ts +16 -0
  1645. package/plugins/runtime-modules/public/trees/phi-default-pub-unsubscribe-page-tree.js +110 -0
  1646. package/plugins/runtime-modules/public/trees/phi-default-pub-welcome-page-tree.d.ts +15 -0
  1647. package/plugins/runtime-modules/public/trees/phi-default-pub-welcome-page-tree.js +194 -0
  1648. package/plugins/runtime-modules/public-base-page-references.d.ts +32 -0
  1649. package/plugins/runtime-modules/public-base-page-references.js +43 -0
  1650. package/plugins/runtime-modules/resolver.js +35 -60
  1651. package/plugins/runtime-modules/revisions/controller/client.d.ts +6 -0
  1652. package/plugins/runtime-modules/revisions/controller/client.js +92 -10
  1653. package/plugins/runtime-modules/revisions/controller/definition.d.ts +6 -0
  1654. package/plugins/runtime-modules/revisions/controller/definition.js +17 -0
  1655. package/plugins/runtime-modules/revisions/forms.d.ts +4 -0
  1656. package/plugins/runtime-modules/revisions/forms.js +70 -0
  1657. package/plugins/runtime-modules/revisions/module.d.ts +1 -149
  1658. package/plugins/runtime-modules/revisions/module.js +2 -4
  1659. package/plugins/runtime-modules/revisions/page-ids.d.ts +9 -0
  1660. package/plugins/runtime-modules/revisions/page-ids.js +28 -0
  1661. package/plugins/runtime-modules/revisions/presets.d.ts +2 -141
  1662. package/plugins/runtime-modules/revisions/presets.js +11 -24
  1663. package/plugins/runtime-modules/revisions/server.js +2 -0
  1664. package/plugins/runtime-modules/revisions/services/table.js +13 -15
  1665. package/plugins/runtime-modules/revisions/trees/phi-default-builder-revisions-page-tree.d.ts +14 -0
  1666. package/plugins/runtime-modules/revisions/trees/phi-default-builder-revisions-page-tree.js +506 -0
  1667. package/plugins/runtime-modules/runtime-calendar-adapters.js +1 -1
  1668. package/plugins/runtime-modules/settings.d.ts +28 -4
  1669. package/plugins/runtime-modules/settings.js +60 -5
  1670. package/plugins/runtime-modules/shell-tree-composition.d.ts +3 -0
  1671. package/plugins/runtime-modules/sidebar-route.d.ts +55 -0
  1672. package/plugins/runtime-modules/sidebar-route.js +56 -0
  1673. package/plugins/runtime-modules/site-module-client-manifests.d.ts +2 -0
  1674. package/plugins/runtime-modules/site-module-client-manifests.js +2 -0
  1675. package/plugins/runtime-modules/site-module-placements.d.ts +26 -0
  1676. package/plugins/runtime-modules/site-module-placements.js +33 -0
  1677. package/plugins/runtime-modules/site-modules-client.d.ts +2 -0
  1678. package/plugins/runtime-modules/theme/block-descriptors.d.ts +12 -23
  1679. package/plugins/runtime-modules/theme/block-descriptors.js +12 -27
  1680. package/plugins/runtime-modules/theme/controller/client.d.ts +7 -1
  1681. package/plugins/runtime-modules/theme/controller/definition.d.ts +6 -0
  1682. package/plugins/runtime-modules/theme/controller/definition.js +7 -0
  1683. package/plugins/runtime-modules/theme/controller/server-definition.d.ts +7 -1
  1684. package/plugins/runtime-modules/theme/materialize-images.d.ts +11 -5
  1685. package/plugins/runtime-modules/theme/materialize-images.js +16 -8
  1686. package/plugins/runtime-modules/theme/module.d.ts +1 -79
  1687. package/plugins/runtime-modules/theme/module.js +2 -4
  1688. package/plugins/runtime-modules/theme/page-ids.d.ts +3 -0
  1689. package/plugins/runtime-modules/theme/page-ids.js +36 -0
  1690. package/plugins/runtime-modules/theme/presets.d.ts +2 -141
  1691. package/plugins/runtime-modules/theme/presets.js +11 -24
  1692. package/plugins/runtime-modules/theme/trees/phi-default-builder-theme-page-tree.d.ts +17 -0
  1693. package/plugins/runtime-modules/theme/trees/phi-default-builder-theme-page-tree.js +614 -0
  1694. package/plugins/runtime-modules/theme/widgets/brand-controls/authoring.d.ts +25 -25
  1695. package/plugins/runtime-modules/theme/widgets/brand-controls/client.js +311 -117
  1696. package/plugins/runtime-modules/theme/widgets/brand-controls/config.js +2 -2
  1697. package/plugins/runtime-modules/theme-descriptors.d.ts +68 -0
  1698. package/plugins/runtime-modules/theme-descriptors.js +34 -0
  1699. package/plugins/runtime-modules/threads/addresses.d.ts +15 -0
  1700. package/plugins/runtime-modules/threads/addresses.js +32 -0
  1701. package/plugins/runtime-modules/threads/authoring-widgets.d.ts +2 -0
  1702. package/plugins/runtime-modules/threads/authoring-widgets.js +6 -0
  1703. package/plugins/runtime-modules/threads/authoring.d.ts +1 -0
  1704. package/plugins/runtime-modules/threads/authoring.js +8 -0
  1705. package/plugins/runtime-modules/threads/cards.d.ts +3 -0
  1706. package/plugins/runtime-modules/threads/cards.js +87 -0
  1707. package/plugins/runtime-modules/threads/client-data-providers.d.ts +7 -0
  1708. package/plugins/runtime-modules/threads/client-data-providers.js +14 -0
  1709. package/plugins/runtime-modules/threads/client.d.ts +1 -0
  1710. package/plugins/runtime-modules/threads/client.js +7 -0
  1711. package/plugins/runtime-modules/threads/controller/address.d.ts +5 -0
  1712. package/plugins/runtime-modules/threads/controller/address.js +8 -0
  1713. package/plugins/runtime-modules/threads/controller/client.d.ts +85 -0
  1714. package/plugins/runtime-modules/threads/controller/client.js +231 -0
  1715. package/plugins/runtime-modules/threads/controller/definition.d.ts +111 -0
  1716. package/plugins/runtime-modules/threads/controller/definition.js +141 -0
  1717. package/plugins/runtime-modules/threads/data-providers.d.ts +105 -0
  1718. package/plugins/runtime-modules/threads/data-providers.js +116 -0
  1719. package/plugins/runtime-modules/threads/definition.d.ts +150 -0
  1720. package/plugins/runtime-modules/threads/definition.js +54 -0
  1721. package/plugins/runtime-modules/threads/forms.d.ts +38 -0
  1722. package/plugins/runtime-modules/threads/forms.js +267 -0
  1723. package/plugins/runtime-modules/threads/ids.d.ts +10 -0
  1724. package/plugins/runtime-modules/threads/ids.js +15 -0
  1725. package/plugins/runtime-modules/threads/media-spaces.d.ts +14 -0
  1726. package/plugins/runtime-modules/threads/media-spaces.js +22 -0
  1727. package/plugins/runtime-modules/threads/module.d.ts +1 -0
  1728. package/plugins/runtime-modules/threads/module.js +4 -0
  1729. package/plugins/runtime-modules/threads/presets.d.ts +2 -0
  1730. package/plugins/runtime-modules/threads/presets.js +18 -0
  1731. package/plugins/runtime-modules/threads/server.d.ts +1 -0
  1732. package/plugins/runtime-modules/threads/server.js +24 -0
  1733. package/plugins/runtime-modules/threads/services/options.d.ts +3 -0
  1734. package/plugins/runtime-modules/threads/services/options.js +48 -0
  1735. package/plugins/runtime-modules/threads/services/table.d.ts +3 -0
  1736. package/plugins/runtime-modules/threads/services/table.js +130 -0
  1737. package/plugins/runtime-modules/threads/trees/phi-default-app-threads-page-tree.d.ts +23 -0
  1738. package/plugins/runtime-modules/threads/trees/phi-default-app-threads-page-tree.js +775 -0
  1739. package/plugins/runtime-modules/threads/widgets/thread-conversation/authoring.d.ts +3 -0
  1740. package/plugins/runtime-modules/threads/widgets/thread-conversation/authoring.js +9 -0
  1741. package/plugins/runtime-modules/threads/widgets/thread-conversation/client.d.ts +7 -0
  1742. package/plugins/runtime-modules/threads/widgets/thread-conversation/client.js +445 -0
  1743. package/plugins/runtime-modules/threads/widgets/thread-conversation/config.d.ts +46 -0
  1744. package/plugins/runtime-modules/threads/widgets/thread-conversation/config.js +59 -0
  1745. package/plugins/runtime-modules/threads/widgets/thread-conversation/plugin.d.ts +3 -0
  1746. package/plugins/runtime-modules/threads/widgets/thread-conversation/plugin.js +9 -0
  1747. package/plugins/runtime-modules/threads/widgets/thread-conversation/server.d.ts +7 -0
  1748. package/plugins/runtime-modules/threads/widgets/thread-conversation/server.js +24 -0
  1749. package/plugins/runtime-modules/threads/widgets/thread-widget-config.d.ts +42 -0
  1750. package/plugins/runtime-modules/threads/widgets/thread-widget-config.js +51 -0
  1751. package/plugins/runtime-modules/threads/widgets.d.ts +2 -0
  1752. package/plugins/runtime-modules/threads/widgets.js +14 -0
  1753. package/plugins/runtime-modules/user-management/cards.d.ts +3 -0
  1754. package/plugins/runtime-modules/user-management/cards.js +73 -0
  1755. package/plugins/runtime-modules/user-management/controller/client.js +1 -1
  1756. package/plugins/runtime-modules/user-management/definition.d.ts +0 -5
  1757. package/plugins/runtime-modules/user-management/definition.js +0 -2
  1758. package/plugins/runtime-modules/user-management/forms.js +0 -12
  1759. package/plugins/runtime-modules/user-management/module.d.ts +1 -257
  1760. package/plugins/runtime-modules/user-management/module.js +2 -4
  1761. package/plugins/runtime-modules/user-management/presets.d.ts +2 -30
  1762. package/plugins/runtime-modules/user-management/presets.js +10 -19
  1763. package/plugins/runtime-modules/user-management/server.js +4 -0
  1764. package/plugins/runtime-modules/user-management/services/table.js +9 -16
  1765. package/plugins/runtime-modules/user-management/trees/admin-users-label-set.d.ts +8 -0
  1766. package/plugins/runtime-modules/user-management/trees/admin-users-label-set.js +22 -0
  1767. package/plugins/runtime-modules/user-management/trees/phi-default-admin-users-page-tree.d.ts +6 -0
  1768. package/plugins/runtime-modules/user-management/trees/phi-default-admin-users-page-tree.js +558 -0
  1769. package/plugins/runtime-modules/video/authoring-widgets.d.ts +2 -0
  1770. package/plugins/runtime-modules/video/authoring-widgets.js +6 -0
  1771. package/plugins/runtime-modules/video/authoring.d.ts +1 -0
  1772. package/plugins/runtime-modules/video/authoring.js +8 -0
  1773. package/plugins/runtime-modules/video/definition.d.ts +25 -0
  1774. package/plugins/runtime-modules/video/definition.js +28 -0
  1775. package/plugins/runtime-modules/video/ids.d.ts +9 -0
  1776. package/plugins/runtime-modules/video/ids.js +11 -0
  1777. package/plugins/runtime-modules/video/module.d.ts +11 -0
  1778. package/plugins/runtime-modules/video/module.js +4 -0
  1779. package/plugins/runtime-modules/video/providers.d.ts +21 -0
  1780. package/plugins/runtime-modules/video/providers.js +62 -0
  1781. package/plugins/runtime-modules/video/server.d.ts +1 -0
  1782. package/plugins/runtime-modules/video/server.js +15 -0
  1783. package/plugins/runtime-modules/video/widgets/embed/aspect-ratio.d.ts +3 -0
  1784. package/plugins/runtime-modules/video/widgets/embed/aspect-ratio.js +15 -0
  1785. package/plugins/runtime-modules/video/widgets/embed/authoring.d.ts +2 -0
  1786. package/plugins/runtime-modules/video/widgets/embed/authoring.js +51 -0
  1787. package/plugins/runtime-modules/video/widgets/embed/client.d.ts +22 -0
  1788. package/plugins/runtime-modules/video/widgets/embed/client.js +28 -0
  1789. package/plugins/runtime-modules/video/widgets/embed/config.d.ts +101 -0
  1790. package/plugins/runtime-modules/video/widgets/embed/config.js +100 -0
  1791. package/plugins/runtime-modules/video/widgets/embed/plugin.d.ts +3 -0
  1792. package/plugins/runtime-modules/video/widgets/embed/plugin.js +9 -0
  1793. package/plugins/runtime-modules/video/widgets/embed/server.d.ts +14 -0
  1794. package/plugins/runtime-modules/video/widgets/embed/server.js +54 -0
  1795. package/plugins/runtime-modules/video/widgets.d.ts +2 -0
  1796. package/plugins/runtime-modules/video/widgets.js +14 -0
  1797. package/references.d.ts +3 -1
  1798. package/references.js +3 -1
  1799. package/runtime-authoring-client.d.ts +1 -1
  1800. package/runtime-authoring-client.js +1 -1
  1801. package/runtime-controller-client.d.ts +3 -0
  1802. package/runtime-controller-client.js +15 -0
  1803. package/runtime-data-provider-client.d.ts +1 -1
  1804. package/runtime-data-provider-client.js +1 -1
  1805. package/runtime-render-client.d.ts +1 -0
  1806. package/runtime-render-client.js +1 -0
  1807. package/runtime-user-state-client.d.ts +2 -0
  1808. package/runtime-user-state-client.js +2 -0
  1809. package/server-helpers/area-root-door-warmup.d.ts +35 -0
  1810. package/server-helpers/area-root-door-warmup.js +71 -0
  1811. package/server-helpers/area-root-route.js +0 -1
  1812. package/server-helpers/auth-ui-provider.d.ts +2 -0
  1813. package/server-helpers/auth-ui-provider.js +28 -0
  1814. package/server-helpers/cms-link-targets.d.ts +16 -0
  1815. package/server-helpers/cms-link-targets.js +48 -0
  1816. package/server-helpers/cms-request.d.ts +11 -5
  1817. package/server-helpers/cms-request.js +31 -17
  1818. package/server-helpers/cms-review.d.ts +1 -1
  1819. package/server-helpers/cms-root.d.ts +11 -4
  1820. package/server-helpers/cms-root.js +39 -7
  1821. package/server-helpers/cms-route.js +2 -4
  1822. package/server-helpers/public-login-route.d.ts +1 -2
  1823. package/server-helpers/public-login-route.js +18 -6
  1824. package/server-helpers/request-runtime.d.ts +32 -0
  1825. package/server-helpers/request-runtime.js +34 -1
  1826. package/server-helpers/runtime.d.ts +1 -165
  1827. package/server-helpers/runtime.js +42 -22
  1828. package/server-helpers/site-locale.d.ts +8 -0
  1829. package/server-helpers/site-locale.js +18 -32
  1830. package/server-helpers/translate.js +13 -33
  1831. package/server-helpers.d.ts +5 -0
  1832. package/server-helpers.js +11 -0
  1833. package/styles/builder-scaffold.css +1 -1
  1834. package/styles/control-shape.css +77 -3
  1835. package/styles/controls.css +535 -0
  1836. package/styles/layout-authoring-scaffold.css +54 -7
  1837. package/styles/layout.css +87 -17
  1838. package/styles/root.css +27 -2
  1839. package/styles/shell.css +10 -0
  1840. package/theme/antd-css-var-contract.d.ts +2 -3
  1841. package/theme/antd-css-var-contract.js +2 -3
  1842. package/theme/phi-container-breakpoints.d.ts +35 -2
  1843. package/theme/phi-container-breakpoints.js +32 -0
  1844. package/theme/phi-control-shape.d.ts +54 -4
  1845. package/theme/phi-control-shape.js +170 -10
  1846. package/theme/phi-published-root-style.d.ts +1 -1
  1847. package/theme/phi-root-background.server.d.ts +1 -1
  1848. package/theme/phi-server-tokens.d.ts +9 -37
  1849. package/theme/phi-server-tokens.js +7 -1
  1850. package/theme/phi-theme-adoption.d.ts +2 -1
  1851. package/theme/phi-theme-adoption.js +4 -1
  1852. package/theme/phi-theme-blocks.d.ts +19 -0
  1853. package/theme/phi-theme-blocks.js +16 -6
  1854. package/theme/phi-theme-composition.d.ts +3 -3
  1855. package/theme/phi-theme-composition.js +2 -2
  1856. package/theme/phi-theme-ground-image.d.ts +12 -12
  1857. package/theme/phi-theme-ground-image.js +34 -12
  1858. package/theme/phi-theme-mode.d.ts +86 -9
  1859. package/theme/phi-theme-mode.js +128 -19
  1860. package/theme/phi-theme-placeholder-logo.d.ts +19 -0
  1861. package/theme/phi-theme-placeholder-logo.js +31 -0
  1862. package/theme/phi-theme-presets.d.ts +6 -0
  1863. package/theme/phi-theme-presets.js +41 -0
  1864. package/theme/phi-theme-runtime.js +1 -1
  1865. package/theme/phi-theme-tokens.d.ts +79 -0
  1866. package/theme/phi-theme-tokens.js +227 -0
  1867. package/theme/phi-tokens.d.ts +5 -4
  1868. package/theme/phi-tokens.js +41 -4
  1869. package/theme.d.ts +2 -8
  1870. package/theme.js +2 -8
  1871. package/types/auth-manifest.d.ts +7 -1
  1872. package/types/builder.d.ts +5 -2
  1873. package/types/calendar-keys.d.ts +7 -0
  1874. package/types/calendar-keys.js +8 -0
  1875. package/types/calendar.d.ts +16 -1
  1876. package/types/calendar.js +64 -2
  1877. package/types/cms-border-config.d.ts +2 -0
  1878. package/types/cms-border-config.js +44 -0
  1879. package/types/cms-border-source.d.ts +19 -0
  1880. package/types/cms-border-source.js +34 -0
  1881. package/types/cms-config.d.ts +35 -9
  1882. package/types/cms-config.js +48 -58
  1883. package/types/cms-instance-id.d.ts +4 -5
  1884. package/types/cms-instance-id.js +16 -9
  1885. package/types/cms-module-descriptors.d.ts +106 -2
  1886. package/types/cms-mount-policy.d.ts +0 -12
  1887. package/types/cms-mount-policy.js +0 -16
  1888. package/types/cms-overlay-zones.d.ts +36 -0
  1889. package/types/cms-overlay-zones.js +1 -0
  1890. package/types/cms-overlay.d.ts +29 -3
  1891. package/types/cms-overlay.js +20 -6
  1892. package/types/cms-plugins.d.ts +219 -15
  1893. package/types/cms-presets.d.ts +4 -4
  1894. package/types/cms.d.ts +22 -4
  1895. package/types/collection-provider.d.ts +32 -5
  1896. package/types/collection-view-widget.d.ts +67 -0
  1897. package/types/collection-view-widget.js +1 -0
  1898. package/types/core-runtime-controller.js +3 -5
  1899. package/types/core-widget-placements.d.ts +365 -0
  1900. package/types/core-widget-placements.js +3 -0
  1901. package/types/dashboard-cards.d.ts +152 -0
  1902. package/types/dashboard-cards.js +15 -0
  1903. package/types/draft-status.d.ts +23 -0
  1904. package/types/draft-status.js +20 -0
  1905. package/types/form-descriptor.d.ts +2 -140
  1906. package/types/form-descriptor.js +6 -3
  1907. package/types/markdown.d.ts +6 -0
  1908. package/types/markdown.js +1 -0
  1909. package/types/media.d.ts +28 -0
  1910. package/types/news.d.ts +33 -0
  1911. package/types/news.js +1 -0
  1912. package/types/record-widget.d.ts +49 -0
  1913. package/types/record-widget.js +1 -0
  1914. package/types/references.d.ts +18 -30
  1915. package/types/references.js +9 -114
  1916. package/types/renderable-block-geometry.d.ts +85 -0
  1917. package/types/renderable-block-geometry.js +96 -0
  1918. package/types/renderable-block.d.ts +31 -4
  1919. package/types/responsive.d.ts +1 -11
  1920. package/types/responsive.js +5 -8
  1921. package/types/result-widget.d.ts +5 -0
  1922. package/types/result-widget.js +1 -0
  1923. package/types/runtime-condition.d.ts +3 -90
  1924. package/types/runtime-condition.js +7 -164
  1925. package/types/runtime-data-provider.d.ts +13 -2
  1926. package/types/runtime-data-provider.js +25 -5
  1927. package/types/seed.d.ts +32 -0
  1928. package/types/seed.js +15 -0
  1929. package/types/signals.d.ts +53 -5
  1930. package/types/signals.js +52 -38
  1931. package/types/site-config.d.ts +83 -0
  1932. package/types/site-config.js +1 -0
  1933. package/types/site-request-context.d.ts +167 -0
  1934. package/types/site-request-context.js +1 -0
  1935. package/types/site-theme.d.ts +17 -0
  1936. package/types/spacing.d.ts +1 -3
  1937. package/types/spacing.js +5 -14
  1938. package/types/state-machine.d.ts +229 -0
  1939. package/types/state-machine.js +161 -0
  1940. package/types/table-signal-values.d.ts +8 -0
  1941. package/types/table-signal-values.js +71 -0
  1942. package/types/table-widget.d.ts +34 -22
  1943. package/types/table-widget.js +13 -78
  1944. package/types/thread-widget.d.ts +27 -0
  1945. package/types/thread-widget.js +9 -0
  1946. package/types/threads.d.ts +13 -0
  1947. package/types/threads.js +13 -0
  1948. package/types/tree-widget.d.ts +10 -6
  1949. package/types/tree-widget.js +14 -7
  1950. package/types/tree.d.ts +8 -0
  1951. package/types/user-state.d.ts +17 -0
  1952. package/types/user-state.js +17 -0
  1953. package/types/video.d.ts +152 -0
  1954. package/types/video.js +278 -0
  1955. package/types/widget-runtime.d.ts +19 -3
  1956. package/types.d.ts +12 -31
  1957. package/types.js +4 -1
  1958. package/widgets.d.ts +6 -8
  1959. package/widgets.js +3 -4
  1960. package/builder.d.ts +0 -2
  1961. package/builder.js +0 -2
  1962. package/components/controls/phi-dropdown-control.module.css +0 -63
  1963. package/components/controls/phi-expand-indicator.module.css +0 -16
  1964. package/components/controls/phi-icon-picker-labels.d.ts +0 -27
  1965. package/components/controls/phi-icon-picker-labels.js +0 -26
  1966. package/components/controls/phi-table-control.module.css +0 -16
  1967. package/components/controls/phi-tree-control.module.css +0 -22
  1968. package/components/forms/auth-admin-settings-forms.d.ts +0 -15
  1969. package/components/forms/auth-admin-settings-forms.js +0 -349
  1970. package/components/forms/auth-form-provider-registry.d.ts +0 -1
  1971. package/components/forms/auth-form-provider-registry.js +0 -38
  1972. package/components/forms/auth-form-ui-provider.js +0 -7
  1973. package/components/forms/auth-installations-table-service.js +0 -144
  1974. package/components/forms/auth-link-confirmation-contract.d.ts +0 -7
  1975. package/components/forms/auth-link-confirmation-contract.js +0 -8
  1976. package/components/forms/shared-form-plugins.d.ts +0 -4
  1977. package/components/forms/shared-form-plugins.js +0 -171
  1978. package/components/media/asset-collection-service.js +0 -160
  1979. package/components/media/asset-controller-definition.js +0 -128
  1980. package/components/media/asset-controller-mount.d.ts +0 -4
  1981. package/components/media/asset-controller-mount.js +0 -6
  1982. package/components/media/asset-controller-plugin.d.ts +0 -124
  1983. package/components/media/asset-controller-plugin.js +0 -10
  1984. package/components/media/asset-form-field-providers.js +0 -11
  1985. package/components/media/asset-form-ui-provider.js +0 -13
  1986. package/components/media/asset-inspector-addresses.d.ts +0 -4
  1987. package/components/media/asset-inspector-addresses.js +0 -30
  1988. package/components/media/asset-metadata-form.d.ts +0 -243
  1989. package/components/media/asset-metadata-form.js +0 -209
  1990. package/components/media/asset-options-providers.js +0 -69
  1991. package/components/media/media-settings-forms.d.ts +0 -22
  1992. package/components/media/media-settings-forms.js +0 -130
  1993. package/components/media/phi-area-upload-server.d.ts +0 -7
  1994. package/components/media/phi-area-upload-server.js +0 -13
  1995. package/components/media/phi-asset-collection-view-binding.d.ts +0 -9
  1996. package/components/media/phi-asset-collection-view-binding.js +0 -245
  1997. package/components/media/phi-asset-focal-rect-server.d.ts +0 -6
  1998. package/components/media/phi-asset-focal-rect-server.js +0 -6
  1999. package/components/media/phi-image-inspector-server.d.ts +0 -7
  2000. package/components/media/phi-image-inspector-server.js +0 -18
  2001. package/components/media/phi-image-preview-grid-widget.d.ts +0 -7
  2002. package/components/media/phi-image-preview-grid-widget.js +0 -16
  2003. package/components/media/phi-media-scope-controller.d.ts +0 -20
  2004. package/components/media/phi-media-scope-controller.js +0 -398
  2005. package/components/regions/presets/admin-dashboard-label-set.d.ts +0 -22
  2006. package/components/regions/presets/admin-dashboard-label-set.js +0 -50
  2007. package/components/regions/presets/admin-locales-label-set.d.ts +0 -8
  2008. package/components/regions/presets/admin-locales-label-set.js +0 -22
  2009. package/components/regions/presets/admin-logs-label-set.d.ts +0 -8
  2010. package/components/regions/presets/admin-logs-label-set.js +0 -22
  2011. package/components/regions/presets/admin-settings-label-set.d.ts +0 -6
  2012. package/components/regions/presets/admin-settings-label-set.js +0 -18
  2013. package/components/regions/presets/admin-users-label-set.d.ts +0 -8
  2014. package/components/regions/presets/admin-users-label-set.js +0 -22
  2015. package/components/regions/presets/builder-navigation-label-set.d.ts +0 -35
  2016. package/components/regions/presets/builder-navigation-label-set.js +0 -68
  2017. package/components/regions/presets/builder-settings-label-set.d.ts +0 -17
  2018. package/components/regions/presets/builder-settings-label-set.js +0 -34
  2019. package/components/regions/presets/editor-label-set.d.ts +0 -8
  2020. package/components/regions/presets/editor-label-set.js +0 -22
  2021. package/components/regions/presets/editor-shell.js +0 -44
  2022. package/components/regions/presets/editor-translations-label-set.d.ts +0 -8
  2023. package/components/regions/presets/editor-translations-label-set.js +0 -22
  2024. package/components/regions/presets/phi-auth-area-overlay-tree.server.d.ts +0 -8
  2025. package/components/regions/presets/phi-auth-area-overlay-tree.server.js +0 -114
  2026. package/components/regions/presets/phi-auth-runtime-page-tree.d.ts +0 -7
  2027. package/components/regions/presets/phi-auth-runtime-page-tree.js +0 -57
  2028. package/components/regions/presets/phi-avatar-area-overlay-tree.js +0 -12
  2029. package/components/regions/presets/phi-avatar-area-overlay-tree.server.js +0 -104
  2030. package/components/regions/presets/phi-builder-inspector-area-overlay-tree.d.ts +0 -7
  2031. package/components/regions/presets/phi-builder-inspector-area-overlay-tree.js +0 -12
  2032. package/components/regions/presets/phi-builder-inspector-area-overlay-tree.server.d.ts +0 -20
  2033. package/components/regions/presets/phi-builder-inspector-area-overlay-tree.server.js +0 -527
  2034. package/components/regions/presets/phi-default-accounting-page-tree.d.ts +0 -6
  2035. package/components/regions/presets/phi-default-accounting-page-tree.js +0 -50
  2036. package/components/regions/presets/phi-default-admin-area-preset-tree.d.ts +0 -6
  2037. package/components/regions/presets/phi-default-admin-area-preset-tree.js +0 -252
  2038. package/components/regions/presets/phi-default-admin-auth-settings-page-tree.d.ts +0 -6
  2039. package/components/regions/presets/phi-default-admin-auth-settings-page-tree.js +0 -290
  2040. package/components/regions/presets/phi-default-admin-dashboard-page-tree.d.ts +0 -6
  2041. package/components/regions/presets/phi-default-admin-dashboard-page-tree.js +0 -181
  2042. package/components/regions/presets/phi-default-admin-groups-page-tree.d.ts +0 -13
  2043. package/components/regions/presets/phi-default-admin-groups-page-tree.js +0 -409
  2044. package/components/regions/presets/phi-default-admin-locales-page-tree.d.ts +0 -7
  2045. package/components/regions/presets/phi-default-admin-locales-page-tree.js +0 -264
  2046. package/components/regions/presets/phi-default-admin-logs-page-tree.d.ts +0 -6
  2047. package/components/regions/presets/phi-default-admin-logs-page-tree.js +0 -287
  2048. package/components/regions/presets/phi-default-admin-media-settings-page-tree.d.ts +0 -6
  2049. package/components/regions/presets/phi-default-admin-media-settings-page-tree.js +0 -94
  2050. package/components/regions/presets/phi-default-admin-settings-page-tree.d.ts +0 -6
  2051. package/components/regions/presets/phi-default-admin-settings-page-tree.js +0 -82
  2052. package/components/regions/presets/phi-default-admin-users-page-tree.d.ts +0 -6
  2053. package/components/regions/presets/phi-default-admin-users-page-tree.js +0 -568
  2054. package/components/regions/presets/phi-default-app-groups-page-tree.d.ts +0 -14
  2055. package/components/regions/presets/phi-default-app-groups-page-tree.js +0 -315
  2056. package/components/regions/presets/phi-default-app-profile-page-tree.d.ts +0 -6
  2057. package/components/regions/presets/phi-default-app-profile-page-tree.js +0 -29
  2058. package/components/regions/presets/phi-default-area-dashboard-page-tree.d.ts +0 -9
  2059. package/components/regions/presets/phi-default-area-dashboard-page-tree.js +0 -67
  2060. package/components/regions/presets/phi-default-builder-area-preset-tree.d.ts +0 -131
  2061. package/components/regions/presets/phi-default-builder-area-preset-tree.js +0 -3580
  2062. package/components/regions/presets/phi-default-builder-dashboard-page-tree.d.ts +0 -6
  2063. package/components/regions/presets/phi-default-builder-dashboard-page-tree.js +0 -112
  2064. package/components/regions/presets/phi-default-builder-settings-page-tree.d.ts +0 -12
  2065. package/components/regions/presets/phi-default-builder-settings-page-tree.js +0 -55
  2066. package/components/regions/presets/phi-default-editor-area-preset-tree.d.ts +0 -6
  2067. package/components/regions/presets/phi-default-editor-area-preset-tree.js +0 -253
  2068. package/components/regions/presets/phi-default-editor-translations-page-tree.d.ts +0 -6
  2069. package/components/regions/presets/phi-default-editor-translations-page-tree.js +0 -323
  2070. package/components/regions/presets/phi-default-pub-confirm-page-tree.d.ts +0 -5
  2071. package/components/regions/presets/phi-default-pub-confirm-page-tree.js +0 -175
  2072. package/components/regions/presets/phi-default-pub-contact-page-tree.d.ts +0 -4
  2073. package/components/regions/presets/phi-default-pub-contact-page-tree.js +0 -112
  2074. package/components/regions/presets/phi-default-pub-error-page-tree.d.ts +0 -8
  2075. package/components/regions/presets/phi-default-pub-error-page-tree.js +0 -128
  2076. package/components/regions/presets/phi-default-pub-home-page-tree.d.ts +0 -10
  2077. package/components/regions/presets/phi-default-pub-home-page-tree.js +0 -90
  2078. package/components/regions/presets/phi-default-pub-login-page-tree.d.ts +0 -10
  2079. package/components/regions/presets/phi-default-pub-login-page-tree.js +0 -111
  2080. package/components/regions/presets/phi-default-pub-registration-page-tree.d.ts +0 -10
  2081. package/components/regions/presets/phi-default-pub-registration-page-tree.js +0 -127
  2082. package/components/regions/presets/phi-default-pub-reset-password-page-tree.d.ts +0 -5
  2083. package/components/regions/presets/phi-default-pub-reset-password-page-tree.js +0 -159
  2084. package/components/regions/presets/phi-default-pub-terms-page-tree.d.ts +0 -4
  2085. package/components/regions/presets/phi-default-pub-terms-page-tree.js +0 -93
  2086. package/components/regions/presets/phi-default-pub-welcome-page-tree.d.ts +0 -17
  2087. package/components/regions/presets/phi-default-pub-welcome-page-tree.js +0 -110
  2088. package/components/regions/presets/phi-default-site-area-preset-tree.d.ts +0 -11
  2089. package/components/regions/presets/phi-default-site-area-preset-tree.js +0 -640
  2090. package/components/regions/presets/phi-login-form-nodes.d.ts +0 -46
  2091. package/components/regions/presets/phi-login-form-nodes.js +0 -210
  2092. package/components/regions/presets/profile-label-set.d.ts +0 -11
  2093. package/components/regions/presets/profile-label-set.js +0 -28
  2094. package/components/regions/presets/pub.d.ts +0 -2
  2095. package/components/regions/presets/pub.js +0 -130
  2096. package/components/runtime/accounting-base-controller-plugin.d.ts +0 -1
  2097. package/components/runtime/accounting-base-controller-plugin.js +0 -4
  2098. package/components/runtime/app-base-controller-plugin.d.ts +0 -1
  2099. package/components/runtime/app-base-controller-plugin.js +0 -4
  2100. package/components/runtime/area-base-controller-addresses.d.ts +0 -23
  2101. package/components/runtime/area-base-controller-addresses.js +0 -26
  2102. package/components/runtime/area-base-controller-client-factory.d.ts +0 -2
  2103. package/components/runtime/area-base-controller-client-factory.js +0 -8
  2104. package/components/runtime/area-base-controller-definitions.d.ts +0 -106
  2105. package/components/runtime/area-base-controller-definitions.js +0 -75
  2106. package/components/runtime/auth-controller-plugin.d.ts +0 -1
  2107. package/components/runtime/auth-controller-plugin.js +0 -172
  2108. package/components/runtime/auth-controller-server-definition.d.ts +0 -62
  2109. package/components/runtime/auth-controller-server-definition.js +0 -3
  2110. package/components/runtime/auth-overlay-ids.d.ts +0 -23
  2111. package/components/runtime/auth-overlay-ids.js +0 -27
  2112. package/components/runtime/avatar-overlay-ids.js +0 -19
  2113. package/components/runtime/public-base-controller-plugin.d.ts +0 -1
  2114. package/components/runtime/public-base-controller-plugin.js +0 -4
  2115. package/components/shell/phi-management-icon.d.ts +0 -4
  2116. package/components/shell/phi-management-icon.js +0 -59
  2117. package/components/tables/client/phi-static-table-resource-editor.d.ts +0 -6
  2118. package/components/tables/client/phi-static-table-resource-editor.js +0 -10
  2119. package/components/tables/phi-plain-table.module.css +0 -34
  2120. package/components/widgets/area-menu-items.d.ts +0 -16
  2121. package/components/widgets/area-menu-items.js +0 -26
  2122. package/components/widgets/builder/command-toolbar-authoring-tools.d.ts +0 -5
  2123. package/components/widgets/builder/command-toolbar-authoring-tools.js +0 -41
  2124. package/components/widgets/builder/icon-editor.d.ts +0 -10
  2125. package/components/widgets/builder/icon-editor.js +0 -10
  2126. package/components/widgets/builder/internal-builder.d.ts +0 -22
  2127. package/components/widgets/builder/internal-builder.js +0 -8
  2128. package/components/widgets/builder/simple-text-editor.d.ts +0 -39
  2129. package/components/widgets/builder/simple-text-editor.js +0 -121
  2130. package/components/widgets/client/area-menu-preview.d.ts +0 -5
  2131. package/components/widgets/client/area-menu-preview.js +0 -18
  2132. package/components/widgets/client/card-editor.d.ts +0 -11
  2133. package/components/widgets/client/card-editor.js +0 -46
  2134. package/components/widgets/client/collection-view-widget.d.ts +0 -10
  2135. package/components/widgets/client/collection-view-widget.js +0 -44
  2136. package/components/widgets/client/description-editor.d.ts +0 -6
  2137. package/components/widgets/client/description-editor.js +0 -130
  2138. package/components/widgets/client/image-editor.d.ts +0 -10
  2139. package/components/widgets/client/image-editor.js +0 -100
  2140. package/components/widgets/client/markdown-editor.d.ts +0 -9
  2141. package/components/widgets/client/markdown-editor.js +0 -80
  2142. package/components/widgets/client/phi-color-widget.d.ts +0 -34
  2143. package/components/widgets/client/phi-color-widget.js +0 -45
  2144. package/components/widgets/client/shared/core-table-providers.js +0 -13
  2145. package/components/widgets/client/shared/phi-card-collection-view-binding.d.ts +0 -9
  2146. package/components/widgets/client/shared/phi-card-collection-view-binding.js +0 -106
  2147. package/components/widgets/client/use-table-provider-mutation.d.ts +0 -1
  2148. package/components/widgets/client/use-table-provider-mutation.js +0 -2
  2149. package/components/widgets/label-sets/avatar.d.ts +0 -26
  2150. package/components/widgets/label-sets/editor-translations.d.ts +0 -4
  2151. package/components/widgets/label-sets/editor-translations.js +0 -100
  2152. package/components/widgets/label-sets/footer.d.ts +0 -8
  2153. package/components/widgets/label-sets/footer.js +0 -22
  2154. package/components/widgets/label-types/editor-translations.d.ts +0 -53
  2155. package/components/widgets/quick-links-items.d.ts +0 -6
  2156. package/components/widgets/quick-links-items.js +0 -32
  2157. package/gateway/data-source-fetch.d.ts +0 -12
  2158. package/gateway/data-source-fetch.js +0 -46
  2159. package/gateway/media-proxy.d.ts +0 -9
  2160. package/gateway/media-proxy.js +0 -12
  2161. package/gateway/mutation-fetch.d.ts +0 -5
  2162. package/gateway/mutation-fetch.js +0 -71
  2163. package/gateway.d.ts +0 -13
  2164. package/gateway.js +0 -13
  2165. package/helpers/cms-page-addresses.d.ts +0 -32
  2166. package/helpers/cms-page-addresses.js +0 -77
  2167. package/helpers/css-length.d.ts +0 -1
  2168. package/helpers/css-length.js +0 -10
  2169. package/helpers/site-structure.d.ts +0 -13
  2170. package/helpers/site-structure.js +0 -82
  2171. package/next/module-diagnostics-route.d.ts +0 -37
  2172. package/next/module-diagnostics-route.js +0 -64
  2173. package/next/navigation-target-route.d.ts +0 -8
  2174. package/next/navigation-target-route.js +0 -216
  2175. package/plugins/runtime-modules/accounting/client.d.ts +0 -1
  2176. package/plugins/runtime-modules/accounting/client.js +0 -7
  2177. package/plugins/runtime-modules/app/client.d.ts +0 -1
  2178. package/plugins/runtime-modules/app/client.js +0 -7
  2179. package/plugins/runtime-modules/auth/ui-provider.d.ts +0 -2
  2180. package/plugins/runtime-modules/auth/ui-provider.js +0 -29
  2181. package/plugins/runtime-modules/builder/clients/inline-text-editor.d.ts +0 -31
  2182. package/plugins/runtime-modules/builder/clients/inline-text-editor.js +0 -44
  2183. package/plugins/runtime-modules/builder/navigation-signals.d.ts +0 -36
  2184. package/plugins/runtime-modules/builder/navigation-signals.js +0 -88
  2185. package/plugins/runtime-modules/builder/page-reference-picker.d.ts +0 -16
  2186. package/plugins/runtime-modules/builder/page-reference-picker.js +0 -43
  2187. package/plugins/runtime-modules/builder/root-node-css-size.d.ts +0 -1
  2188. package/plugins/runtime-modules/builder/root-node-css-size.js +0 -10
  2189. package/plugins/runtime-modules/builder/runtime-module-defaults.d.ts +0 -3
  2190. package/plugins/runtime-modules/builder/runtime-module-defaults.js +0 -41
  2191. package/plugins/runtime-modules/builder/signal-route-config.d.ts +0 -3
  2192. package/plugins/runtime-modules/builder/signal-route-config.js +0 -37
  2193. package/plugins/runtime-modules/builder/widgets/draft-status/authoring-plugin.d.ts +0 -3
  2194. package/plugins/runtime-modules/builder/widgets/draft-status/authoring-plugin.js +0 -8
  2195. package/plugins/runtime-modules/builder/widgets/draft-status/authoring.d.ts +0 -4
  2196. package/plugins/runtime-modules/builder/widgets/draft-status/authoring.js +0 -228
  2197. package/plugins/runtime-modules/builder/widgets/draft-status/plugin.d.ts +0 -3
  2198. package/plugins/runtime-modules/builder/widgets/draft-status/plugin.js +0 -8
  2199. package/plugins/runtime-modules/builder/workspace-view-model.d.ts +0 -4
  2200. package/plugins/runtime-modules/builder/workspace-view-model.js +0 -24
  2201. package/plugins/runtime-modules/client-state.d.ts +0 -5
  2202. package/plugins/runtime-modules/client-state.js +0 -17
  2203. package/plugins/runtime-modules/core/widgets/account/index.d.ts +0 -2
  2204. package/plugins/runtime-modules/core/widgets/account/index.js +0 -2
  2205. package/plugins/runtime-modules/core/widgets/area-menu/authoring.d.ts +0 -2
  2206. package/plugins/runtime-modules/core/widgets/area-menu/authoring.js +0 -8
  2207. package/plugins/runtime-modules/core/widgets/area-menu/client.d.ts +0 -11
  2208. package/plugins/runtime-modules/core/widgets/area-menu/client.js +0 -61
  2209. package/plugins/runtime-modules/core/widgets/area-menu/config.d.ts +0 -12
  2210. package/plugins/runtime-modules/core/widgets/area-menu/config.js +0 -14
  2211. package/plugins/runtime-modules/core/widgets/area-menu/index.d.ts +0 -2
  2212. package/plugins/runtime-modules/core/widgets/area-menu/index.js +0 -2
  2213. package/plugins/runtime-modules/core/widgets/area-menu/plugin.d.ts +0 -4
  2214. package/plugins/runtime-modules/core/widgets/area-menu/plugin.js +0 -11
  2215. package/plugins/runtime-modules/core/widgets/area-menu/server.d.ts +0 -5
  2216. package/plugins/runtime-modules/core/widgets/area-menu/server.js +0 -14
  2217. package/plugins/runtime-modules/core/widgets/card/client.d.ts +0 -37
  2218. package/plugins/runtime-modules/core/widgets/card/client.js +0 -64
  2219. package/plugins/runtime-modules/core/widgets/footer/authoring.d.ts +0 -3
  2220. package/plugins/runtime-modules/core/widgets/footer/authoring.js +0 -22
  2221. package/plugins/runtime-modules/core/widgets/footer/client.d.ts +0 -21
  2222. package/plugins/runtime-modules/core/widgets/footer/client.js +0 -30
  2223. package/plugins/runtime-modules/core/widgets/footer/config.d.ts +0 -31
  2224. package/plugins/runtime-modules/core/widgets/footer/config.js +0 -34
  2225. package/plugins/runtime-modules/core/widgets/footer/index.d.ts +0 -1
  2226. package/plugins/runtime-modules/core/widgets/footer/index.js +0 -1
  2227. package/plugins/runtime-modules/core/widgets/footer/plugin.d.ts +0 -4
  2228. package/plugins/runtime-modules/core/widgets/footer/plugin.js +0 -9
  2229. package/plugins/runtime-modules/core/widgets/footer/server.d.ts +0 -12
  2230. package/plugins/runtime-modules/core/widgets/footer/server.js +0 -46
  2231. package/plugins/runtime-modules/core/widgets/form/built-in.d.ts +0 -15
  2232. package/plugins/runtime-modules/core/widgets/form/built-in.js +0 -74
  2233. package/plugins/runtime-modules/core/widgets/html/index.d.ts +0 -1
  2234. package/plugins/runtime-modules/core/widgets/html/index.js +0 -1
  2235. package/plugins/runtime-modules/core/widgets/icon/index.d.ts +0 -1
  2236. package/plugins/runtime-modules/core/widgets/icon/index.js +0 -1
  2237. package/plugins/runtime-modules/core/widgets/markdown/client.d.ts +0 -72
  2238. package/plugins/runtime-modules/core/widgets/markdown/client.js +0 -141
  2239. package/plugins/runtime-modules/core/widgets/profile-email/authoring.d.ts +0 -3
  2240. package/plugins/runtime-modules/core/widgets/profile-email/authoring.js +0 -8
  2241. package/plugins/runtime-modules/core/widgets/profile-email/client.d.ts +0 -28
  2242. package/plugins/runtime-modules/core/widgets/profile-email/client.js +0 -96
  2243. package/plugins/runtime-modules/core/widgets/profile-email/config.d.ts +0 -12
  2244. package/plugins/runtime-modules/core/widgets/profile-email/config.js +0 -14
  2245. package/plugins/runtime-modules/core/widgets/profile-email/plugin.d.ts +0 -5
  2246. package/plugins/runtime-modules/core/widgets/profile-email/plugin.js +0 -10
  2247. package/plugins/runtime-modules/core/widgets/profile-email/server.d.ts +0 -8
  2248. package/plugins/runtime-modules/core/widgets/profile-email/server.js +0 -16
  2249. package/plugins/runtime-modules/core/widgets/profile-locale/authoring.d.ts +0 -3
  2250. package/plugins/runtime-modules/core/widgets/profile-locale/authoring.js +0 -8
  2251. package/plugins/runtime-modules/core/widgets/profile-locale/client.d.ts +0 -20
  2252. package/plugins/runtime-modules/core/widgets/profile-locale/client.js +0 -107
  2253. package/plugins/runtime-modules/core/widgets/profile-locale/config.d.ts +0 -12
  2254. package/plugins/runtime-modules/core/widgets/profile-locale/config.js +0 -14
  2255. package/plugins/runtime-modules/core/widgets/profile-locale/plugin.d.ts +0 -5
  2256. package/plugins/runtime-modules/core/widgets/profile-locale/plugin.js +0 -10
  2257. package/plugins/runtime-modules/core/widgets/profile-locale/server.d.ts +0 -8
  2258. package/plugins/runtime-modules/core/widgets/profile-locale/server.js +0 -16
  2259. package/plugins/runtime-modules/core/widgets/profile-name/authoring.d.ts +0 -3
  2260. package/plugins/runtime-modules/core/widgets/profile-name/authoring.js +0 -8
  2261. package/plugins/runtime-modules/core/widgets/profile-name/client.d.ts +0 -23
  2262. package/plugins/runtime-modules/core/widgets/profile-name/client.js +0 -96
  2263. package/plugins/runtime-modules/core/widgets/profile-name/config.d.ts +0 -12
  2264. package/plugins/runtime-modules/core/widgets/profile-name/config.js +0 -14
  2265. package/plugins/runtime-modules/core/widgets/profile-name/plugin.d.ts +0 -5
  2266. package/plugins/runtime-modules/core/widgets/profile-name/plugin.js +0 -10
  2267. package/plugins/runtime-modules/core/widgets/profile-name/server.d.ts +0 -8
  2268. package/plugins/runtime-modules/core/widgets/profile-name/server.js +0 -16
  2269. package/plugins/runtime-modules/core/widgets/profile-overview/authoring.d.ts +0 -2
  2270. package/plugins/runtime-modules/core/widgets/profile-overview/authoring.js +0 -8
  2271. package/plugins/runtime-modules/core/widgets/profile-overview/client.d.ts +0 -19
  2272. package/plugins/runtime-modules/core/widgets/profile-overview/client.js +0 -73
  2273. package/plugins/runtime-modules/core/widgets/profile-overview/config.d.ts +0 -12
  2274. package/plugins/runtime-modules/core/widgets/profile-overview/config.js +0 -14
  2275. package/plugins/runtime-modules/core/widgets/profile-overview/plugin.d.ts +0 -4
  2276. package/plugins/runtime-modules/core/widgets/profile-overview/plugin.js +0 -10
  2277. package/plugins/runtime-modules/core/widgets/profile-overview/server.d.ts +0 -5
  2278. package/plugins/runtime-modules/core/widgets/profile-overview/server.js +0 -16
  2279. package/plugins/runtime-modules/core/widgets/profile-password/authoring.d.ts +0 -3
  2280. package/plugins/runtime-modules/core/widgets/profile-password/authoring.js +0 -8
  2281. package/plugins/runtime-modules/core/widgets/profile-password/client.d.ts +0 -27
  2282. package/plugins/runtime-modules/core/widgets/profile-password/client.js +0 -91
  2283. package/plugins/runtime-modules/core/widgets/profile-password/config.d.ts +0 -12
  2284. package/plugins/runtime-modules/core/widgets/profile-password/config.js +0 -14
  2285. package/plugins/runtime-modules/core/widgets/profile-password/plugin.d.ts +0 -5
  2286. package/plugins/runtime-modules/core/widgets/profile-password/plugin.js +0 -10
  2287. package/plugins/runtime-modules/core/widgets/profile-password/server.d.ts +0 -8
  2288. package/plugins/runtime-modules/core/widgets/profile-password/server.js +0 -16
  2289. package/plugins/runtime-modules/core/widgets/quick-links/index.d.ts +0 -1
  2290. package/plugins/runtime-modules/core/widgets/quick-links/index.js +0 -1
  2291. package/plugins/runtime-modules/observability/widgets/log-detail/authoring.d.ts +0 -3
  2292. package/plugins/runtime-modules/observability/widgets/log-detail/authoring.js +0 -8
  2293. package/plugins/runtime-modules/observability/widgets/log-detail/client.d.ts +0 -56
  2294. package/plugins/runtime-modules/observability/widgets/log-detail/client.js +0 -125
  2295. package/plugins/runtime-modules/observability/widgets/log-detail/config.d.ts +0 -58
  2296. package/plugins/runtime-modules/observability/widgets/log-detail/config.js +0 -71
  2297. package/plugins/runtime-modules/observability/widgets/log-detail/plugin.d.ts +0 -3
  2298. package/plugins/runtime-modules/observability/widgets/log-detail/plugin.js +0 -8
  2299. package/plugins/runtime-modules/observability/widgets/log-detail/server.d.ts +0 -7
  2300. package/plugins/runtime-modules/observability/widgets/log-detail/server.js +0 -13
  2301. package/plugins/runtime-modules/observability/widgets.d.ts +0 -2
  2302. package/plugins/runtime-modules/observability/widgets.js +0 -16
  2303. package/plugins/runtime-modules/public/client.d.ts +0 -1
  2304. package/plugins/runtime-modules/public/client.js +0 -7
  2305. package/plugins/runtime-modules/theme/blocks/alpine-ground-image.d.ts +0 -17
  2306. package/plugins/runtime-modules/theme/blocks/alpine-ground-image.js +0 -17
  2307. package/plugins/runtime-modules/theme/blocks/alpine-ground.jpg +0 -0
  2308. package/plugins/runtime-modules/theme/blocks/alpine.d.ts +0 -19
  2309. package/plugins/runtime-modules/theme/blocks/alpine.js +0 -76
  2310. package/plugins/runtime-modules/theme/theme-descriptors.d.ts +0 -80
  2311. package/plugins/runtime-modules/theme/theme-descriptors.js +0 -34
  2312. package/theme/phi-theme-brand-logo.d.ts +0 -12
  2313. package/theme/phi-theme-brand-logo.js +0 -12
  2314. /package/components/widgets/label-types/{editor-translations.js → auth-workflow.js} +0 -0
  2315. /package/{components/media/asset-controller-definition.d.ts → plugins/runtime-modules/asset/controller/definition.d.ts} +0 -0
  2316. /package/{components/media/asset-form-field-providers.d.ts → plugins/runtime-modules/asset/form-providers.d.ts} +0 -0
  2317. /package/{components/media/asset-form-ui-provider.d.ts → plugins/runtime-modules/asset/form-ui-provider.d.ts} +0 -0
  2318. /package/{components/media/asset-collection-service.d.ts → plugins/runtime-modules/asset/services/collection.d.ts} +0 -0
  2319. /package/{components/media/asset-options-providers.d.ts → plugins/runtime-modules/asset/services/options.d.ts} +0 -0
  2320. /package/{components/forms/auth-form-ui-provider.d.ts → plugins/runtime-modules/auth/form-ui-provider.d.ts} +0 -0
  2321. /package/{components/forms/auth-installations-table-service.d.ts → plugins/runtime-modules/auth/services/installations-table.d.ts} +0 -0
  2322. /package/{components/runtime/avatar-overlay-ids.d.ts → plugins/runtime-modules/avatar/addresses.d.ts} +0 -0
  2323. /package/{components/widgets/label-sets/avatar.js → plugins/runtime-modules/avatar/labels.js} +0 -0
  2324. /package/{components/regions/presets/phi-avatar-area-overlay-tree.d.ts → plugins/runtime-modules/avatar/overlay-tree.d.ts} +0 -0
  2325. /package/{components/regions/presets/phi-avatar-area-overlay-tree.server.d.ts → plugins/runtime-modules/avatar/overlay-tree.server.d.ts} +0 -0
  2326. /package/{components/widgets/client/shared/core-table-providers.d.ts → plugins/runtime-modules/core/services/table.d.ts} +0 -0
  2327. /package/{components/regions/presets/editor-shell.d.ts → plugins/runtime-modules/localization/trees/editor-translations-shell.d.ts} +0 -0
package/README.md CHANGED
@@ -1,2011 +1,121 @@
1
1
  # @phis/ui
2
2
 
3
- The normative translation-client contract for explicit source locales and structured external documents
4
- lives in [TRANSLATIONS.md](./TRANSLATIONS.md).
5
-
6
- ## Purpose
7
-
8
- `@phis/ui` provides reusable frontend building blocks for the Phi workspace. It owns shared shells, regions, widgets, forms, navigation, theme helpers, runtime constants, and selected server-only helpers. It does not own Next.js route registration, site branding, backend security state, or site-specific content.
9
-
10
- Third-party authors should start with [THIRD_PARTY_MODULES.md](./THIRD_PARTY_MODULES.md). It provides
11
- the end-to-end package guide for Modules, Controllers, Widgets, Theme presets, Preset Forms, manifests,
12
- Site composition, and verification.
13
-
14
- The normative target v1 viewer-access, provider-role, and responsive-visibility ABI lives in
15
- [ACCESS.md](./ACCESS.md).
16
- The normative target v1 Auth Module, Auth UI provider, Account Widget, and Admin settings ABI lives in
17
- [AUTHENTICATION.md](./AUTHENTICATION.md).
18
- The normative target v1 Runtime Module structure and contribution ABI lives in
19
- [MODULES.md](./MODULES.md).
20
- The normative target v1 Table, Table Provider, static resource, tree-table, and Table signaling ABI
21
- lives in [TABLES.md](./TABLES.md).
22
- The normative target v1 Tree, Tree Provider, binding, editing, action, and DnD ABI lives in
23
- [TREES.md](./TREES.md).
24
- The normative target v1 visual Collection View, Collection Provider, self-contained tools, pagination,
25
- and integrated tool-panel ABI lives in [COLLECTIONS.md](./COLLECTIONS.md).
26
- The normative target v1 Area-/Page-owned Modal and Drawer Overlay ABI lives in
27
- [OVERLAYS.md](./OVERLAYS.md).
28
- The normative target v1 guided Tour, visual-anchor resolution, signaling, and user-progress ABI lives in
29
- [TOURS.md](./TOURS.md).
30
- The normative target v1 mutable Page path and structured Page/Asset reference ABI lives in
31
- [REFERENCES.md](./REFERENCES.md).
32
- The normative target v1 Settings container, Settings page shell, and Module configuration ABI lives in
33
- [SETTINGS.md](./SETTINGS.md).
34
- General Site groups, Media Spaces, folders, quotas, Storage Profiles, and protected Asset delivery are
35
- server-owned by `phis-server/GROUPS_AND_STORAGE.md`; this package consumes that contract only through the
36
- shared access snapshot and registered Asset Providers.
37
- Provider-neutral user/group administration and future LDAP, Active Directory, SCIM, or Entra bindings
38
- are server-owned by `phis-server/DIRECTORY_PROVIDERS.md`. The optional feature UI is the separate P2
39
- package `@phis/groups`, not a `@phis/ui` Runtime Module.
40
- The normative Next.js Site/Skeleton ownership and static entrypoint contract lives in
41
- [NEXT_INTEGRATION.md](./NEXT_INTEGRATION.md).
42
-
43
- The package is intended as the reusable business-logic and UI composition layer for the workspace:
44
-
45
- - check existing helpers, contracts, presets, and wrappers before adding new behavior
46
- - prefer extending reusable shared contracts over introducing site-specific special cases
47
- - do not add one-off logic unless it is explicitly requested and clearly reusable across consuming sites
48
-
49
- ### Contract governance
50
-
51
- Changing, extending, replacing, reinterpreting, or widening any normative contract referenced or defined
52
- in this document requires explicit prior operator approval after the exact gap and affected ABI have been
53
- presented. No implementation task, adjacent approval, local type, Module path, Provider path, fallback,
54
- compatibility branch, or other parallel contract may bypass that gate. If the active contracts cannot
55
- express a requirement, implementation stops and asks the operator first.
56
-
57
- ## Development tooling
58
-
59
- ### Ant Design CLI
60
-
61
- `@ant-design/cli` is pinned as a development dependency for Ant Design research. Agents should use it before guessing Ant Design APIs, migration behavior, best practices, or do-and-don't guidance.
62
-
63
- Preferred commands:
64
-
65
- - `pnpm exec antd info <Component> --format json` for props, defaults, version metadata, and deprecations
66
- - `pnpm exec antd doc <Component>` for component documentation
67
- - `pnpm exec antd demo <Component> [name]` for official demo source
68
- - `pnpm exec antd token [Component]` for theme token research
69
- - `pnpm exec antd semantic <Component>` for `classNames` / `styles` structure
70
- - `pnpm exec antd lint <target>` and `pnpm exec antd doctor` for project-level checks
71
-
72
- Use CLI findings as the local source of truth for Ant Design implementation decisions in this package, especially when reviewing API questions, deprecated props, SSR behavior, accessibility notes, or migration constraints.
73
-
74
- ## Architectural model
75
-
76
- ### Routing and composition
77
-
78
- - Physical Next.js App Router registration stays in each consuming Site repository; reusable route,
79
- bridge, proxy, metadata, and per-Area Client-boundary behavior lives under the separate
80
- `@phis/ui/next/*` entrypoints.
81
- - Consuming site repositories should stay thin wrappers for:
82
- - `app/[root]/layout.tsx`
83
- - `app/[root]/[[...path]]/page.tsx`
84
- - site-local proxy `route.ts` entrypoints when a thin bridge is unavoidable
85
- - Site repositories should not host business logic that can already live in `@phis/ui`; wrappers and proxies should delegate, not re-implement.
86
- - Those proxy entrypoints should delegate to shared gateway helpers rather than hardcode upstream target logic in the site repo.
87
- - The preferred long-lived site bridge surface is a small fixed set of explicit route entrypoints, not a catch-all `api/v1/*` browser proxy.
88
- - Admin log ingestion, parsing, and filtering should be served by `@phis/server`; shared UI should only render and consume the resulting `/api/site/admin/logs` feed through the existing catch-all route surface.
89
- - All CMS logic must live in `@phis/ui`.
90
- - CMS resolution
91
- - area and page fallback resolution
92
- - form registry resolution
93
- - submit dispatch resolution
94
- - shared CMS plugin contracts
95
- - shared fallback tree synthesis
96
- - shared runtime normalization
97
- - shared access-boundary logic
98
- - shared renderable-block plugin chrome fields such as `maxSize` and `shadow` are centralized and reused across layout and widget plugins; family plugins add only specialized fields
99
- - simple widget editor dimensions may reuse `PHI_WIDGET_DIMENSION_PLUGIN_FIELDS` for `width` and `height`, but runtime geometry should still normalize to `size`
100
- - Site repositories should not reimplement CMS-specific branching or fallback behavior once the wrapper entrypoints have been wired up.
101
- - Site repositories should not hardcode proxy target selection once the thin bridge entrypoint has been wired up.
102
- - For standard CMS pages, the preferred site-owned entrypoint is a single root resolver:
103
- - `app/[root]/layout.tsx`
104
- - `app/[root]/[[...path]]/page.tsx`
105
- - For page-owned shell slots that must stay navigation-reactive under a stable `[root]` layout, the preferred site-owned shape is explicit parallel-route wrappers:
106
- - `app/[root]/@headerBottom/[[...path]]/page.tsx`
107
- - `app/[root]/@hero/[[...path]]/page.tsx`
108
- - `app/[root]/@siderRight/[[...path]]/page.tsx`
109
- - `app/[root]/@footerTop/[[...path]]/page.tsx`
110
- - these wrappers stay transport-only and delegate to shared CMS slot rendering
111
- - `root` should resolve to either:
112
- - a public locale such as `en`, `de`, `fr`, `es`
113
- - or a controlled special-area key such as `app`, `admin`, `builder`, `editor`, or `accounting`
114
- - Special-area resolution should follow a stable contract:
115
- - `app` for authenticated non-staff users
116
- - `admin`, `builder`, `editor`, and `accounting` only for matching site-role users
117
- - Canonical CMS Areas are exactly `public`, `app`, `admin`, `builder`, `editor`, and `accounting`.
118
- - Authentication, commerce, and site-specific behavior are Modules rather than fixed Core Areas. The
119
- first-party Auth Module is eligible for `public`, `admin`, and `app`: authenticated Areas consume the
120
- Core-owned Site session without Auth, while the optional App projection owns account security and
121
- in-place reauthentication.
122
- - Non-staff CMS areas `public` and `app` should fall back in this order:
123
- - own DB-backed shell instance
124
- - public DB-backed shell instance
125
- - area-appropriate code-owned shell preset
126
- - If an area has no dedicated code-owned shell preset in `phis-ui`, it should fall back to the public shell preset on read.
127
- - That fallback does not change persistence ownership: saving in an area must still create or update that area's own revision-backed shell state.
128
- - Staff role to area mapping must follow this contract:
129
- - `Admin -> /admin`
130
- - `Developer -> /admin`
131
- - `Builder -> /builder`
132
- - `Author -> /editor`
133
- - `Publisher -> /editor`
134
- - `Supporter -> /app`
135
- - `Accountant -> /accounting`
136
- - `builder` is the structural and design-authoring area.
137
- - `editor` is the content and publishing area.
138
- - `admin` is the shared control-plane host; contribution policies distinguish Admin-only surfaces
139
- from Developer tooling.
140
- - Staff Areas remain role-selected; authenticated non-staff users resolve to `app`.
141
- - Missing CMS pages should resolve to a normal `404`, not to a fallback shell guess.
142
- - `app/[root]/layout.tsx` should stay a thin site-owned wrapper that calls shared CMS root rendering.
143
- - `app/[root]/[[...path]]/page.tsx` should stay a thin site-owned wrapper that calls shared page rendering.
144
- - `PhiCmsRootLayout` owns root resolution, locale/special-area normalization, request runtime resolution, the stable area shell, access boundary, and stable shell slot placement.
145
- - `PhiCmsRootPage` should primarily resolve and supply page payload for the shell's page-capable slots and reuse the already-resolved root/runtime scope.
146
- - `PhiCmsRootSlotPage` owns shared rendering for one page-owned shell slot and is the intended target for thin site-owned parallel-route wrappers.
147
- - Shell slot placement and page payload are separate concerns:
148
- - the outer shell owns placement, sticky behavior, offset handling, z-index, and shell-relative sizing
149
- - the page owns the payload tree and region config for page-capable slots
150
- - The stable shell must expose placeholder slots for:
151
- - `header_bottom`
152
- - `hero`
153
- - `sider_right`
154
- - `footer_top`
155
- - `content`
156
- - In the target contract, `content` is the only truly page-internal region; the other page-capable regions are shell-mounted placeholders that receive page-owned payload.
157
- - Under a stable `[root]` layout, those page-owned shell slots should be delivered through dedicated App Router parallel routes rather than by resolving page payload directly inside the stable layout render, so client navigation refreshes the slot payload correctly without a client fetch workaround.
158
- - Shared CMS resolution must keep two explicit runtime classes:
159
- - fast published-live path for normal live requests
160
- - authoring/preview path for builder and `revision=<id>` requests
161
- - Normal published-live requests must not pay draft-preview or builder overhead.
162
- - `/public` and `/app` are the primary live-performance paths and should stay published-only unless an explicit preview request is active.
163
- - Authoring and preview requests may pay extra cost for cookies, role checks, draft reads, and additional request metadata.
164
- - Layout and page resolution must consume one shared normalized request context for the active request.
165
- - The consuming site may transport normalized request metadata into shared code through thin wrappers or proxies, but it must not re-implement CMS area/page resolution, redirect rules, or preview semantics.
166
- - If a header bridge is unavoidable, it must stay one small fixed request-context transport surface, not multiple competing transport channels for the same fact.
167
- - Public routes should look like `/{locale}/...`.
168
- - Special-area routes should look like `/app/...`, `/admin/...`, `/builder/...`, `/editor/...`, and `/accounting/...`.
169
- - These root classes are mutually exclusive: a Special Area must never be prefixed by a locale. Its
170
- effective locale comes from the resolved request/profile/cookie fallback rather than its URL path.
171
- - Shared shells in `@phis/ui` place resolved region slots into one neutral CMS shell surface.
172
- - Shared server helpers should bind to a request-scoped runtime contract rather than reading environment variables implicitly.
173
- - v1 favors explicit contract changes over compatibility shims. Do not preserve old and new shapes in parallel when a contract can be updated directly.
174
- - `@phis/ui` must not define real App Router entries such as site-owned `page.tsx`, `layout.tsx`, `route.ts`, `loading.tsx`, or `error.tsx`.
175
-
176
- ### Layering
177
-
178
- - `shells`: high-level shell orchestration.
179
- - `regions`: CMS area and page regions such as `header_top`, `header_main`, `header_bottom`, `hero`, `content`, `sider_left`, `sider_right`, `footer_top`, `footer_main`, `footer_bottom`, and `drawer_right`, rendered through one shared CMS shell and generic region containers.
180
- - `layouts`: internal structural composition components and CMS layout plugin implementations. Raw implementation files live under `components/layouts/*`; interactive client inners live under `components/layouts/clients/*`.
181
- - `plugins/runtime`: shared renderer-owned runtime helpers such as slot-size policy resolution and slot-child framing. These are infrastructure, not layout or widget implementations.
182
- - Layouts own both topology and optional visible-container config. `layoutKind` identifies the structural topology (`flex`, `stack`, `grid`, `split`, `threecol`, `masonry`, `content`, `form`).
183
- - `widgets`: internal high-level widget implementations and CMS widget plugin implementations.
184
- - normal CMS-backed widgets are split across `components/widgets/config/*`, `components/widgets/server/*`, `components/widgets/client/*`, and `components/widgets/builder/*`
185
- - widget-owned canonical content persistence metadata such as `contentBinding` belongs in `components/widgets/config/*`
186
- - lower-level interactive client inners may still live under `components/widgets/client/*`, including shared helpers under `components/widgets/client/shared/*`
187
- - special non-standard runtime helpers live under `components/widgets/built-in/*`
188
- - rich-text widgets should keep their editor foundation on MIT-safe OSS dependencies only
189
- - do not introduce shared runtime dependencies on plan-gated or Pro editor UI packages when the same behavior can be built on top of OSS editor cores
190
- - `modals`: self-contained modal containers.
191
- - `forms`: low-level presentational form building blocks.
192
- - `navigation`: shared navigation components and link primitives.
193
- - `state`: transient scoped UI/runtime state helpers shared across widgets, builder surfaces, and other client-side integrations.
194
-
195
- ## Drag And Drop Contract
196
-
197
- - Drag and drop must reuse the existing shared contracts:
198
- - `RenderableBlock.capabilities.draggable`
199
- - `RenderableBlock.capabilities.droppable`
200
- - `runtimeSignals`
201
- - the shared runtime signal bus
202
- - Do not introduce a second isolated widget-local drag/drop contract when the shared block and signal contracts already cover the same ownership.
203
- - Low-level pointer orchestration may use `dnd-kit`, native browser DnD, or another local interaction engine.
204
- - That engine is an implementation detail.
205
- - It must not become the public shared DnD contract.
206
- - In the builder, `dnd-kit` is the preferred default for new DnD interactions unless a stronger reason requires a different engine.
207
- - That preference still does not change the public contract; plugins and backend-facing contracts must stay engine-agnostic.
208
- - The shared contract is semantic:
209
- - `capabilities` answers whether a block or subpart participates at all
210
- - `runtimeSignals.dragDrop` declares what payload types a plugin exposes or accepts
211
- - runtime signals transport semantic drag/drop state and committed outcomes, not pixel-level pointer movement
212
- - New widgets and layouts that participate in DnD must follow this split:
213
- - interaction engine locally
214
- - semantic contract in shared types
215
- - semantic lifecycle on the signal bus
216
- - Shared payload types should be stable and namespaced strings such as:
217
- - `navigation:item`
218
- - `navigation:page`
219
- - `cms:widget`
220
- - `cms:layout`
221
- - `cms:slot`
222
- - `media:asset`
223
- - Shared drop modes should use the stable set:
224
- - `before`
225
- - `after`
226
- - `child`
227
- - `replace`
228
- - `append`
229
- - `channel: "drag"` is the shared renderable-block drag channel.
230
- - Drag start uses `action: "start"` and semantic JSON metadata.
231
- - Drag updates use `action: "change"` and semantic JSON metadata.
232
- - Drag end/cancel uses `action: "stop"`.
233
- - `channel: "drop"` is the shared committed drop channel.
234
- - Drop commits use `action: "drop"` and semantic JSON metadata.
235
- - Drop-target hover or acceptance state may use `action: "change"` on `drop` when needed.
236
- - Drag/drop values may carry payload type, sender key, receiver key, drop mode, and acceptance state.
237
- - Drag/drop signals must not be used as a high-frequency pointer transport stream.
238
- - New widget or layout code must not invent ad hoc `onWidgetDrop`, `dragPayload`, `dropKind`, or similar parallel contracts when the existing shared contract can express the same intent.
239
- - A shared widget editor scaffold may expose a drag handle when the widget declares `capabilities.draggable`.
240
- - the handle and pointer sensors belong to the builder interaction layer, not to each widget implementation
241
- - moving a widget between slots remains a builder draft mutation governed by the parent slot contract
242
- - semantic drag lifecycle and committed drop outcomes still use the shared DnD capabilities and signal protocols above
243
- - pointer coordinates and engine-local collision state never become persisted CMS or runtime signal data
244
-
245
- ## Root Theme And CSS Contract
246
-
247
- - `PhiRootLayout` is the global provider host only.
248
- - It wires Ant Design, locale, fonts, CSS variables, and runtime theme resolution.
249
- - It must not become the owner of shell topology.
250
- - `site.theme` is the dynamic visual contract loaded per request.
251
- - It may contain site-owned fonts, Ant Design token overrides, shell defaults, and other explicit theme values.
252
- - A later active-theme selector may be added without breaking the current contract.
253
- - `site.themeRevision` carries the resolved default Theme scope pointers separately from the visual Theme payload.
254
- - Builder preset selection uses only `publishedRevisionId` and `workingDraftRevisionId` to distinguish a Site-owned Theme from immutable preset choices; it never infers ownership from Theme contents or the stored preset key.
255
- - If either pointer exists, the internal selection is `site:<siteKey>` and its visible label is the Site name. If neither pointer exists, the initial selection is the `phis` preset, the one Theme core ships.
256
- - The `/builder/theme` page-local Light/Dark switch selects the preview and color-authoring mode only.
257
- - It resolves mode-specific preset seeds, derived Ant Design colors, and the matching custom-color palette without changing the global Area Theme mode.
258
- - Shared seeds in `site.theme.palette.seed` and structural `site.theme.style.token` values apply in both modes; the base seeds, explicit colour tokens and custom colours live per mode under `site.theme.palette.modes`.
259
- - The published custom colours, resolved per mode from `site.theme.palette.modes[mode].customColors` over the followed palette block, are the canonical custom-color source for live rendering, Builder canvases, inspectors, and normal CMS widgets.
260
- - `PhiColorWidget` consumes that palette through `usePhiConfig().customColors`; consumers must not reconstruct it from CSS variables or substitute semantic Ant Design tokens.
261
- - The `/theme` authoring workspace is the only path that supplies its current draft palette explicitly, because it must preview colors before they are published.
262
- - `site.runtime` may later carry the active theme selection, but the current live rendering path should keep reading the resolved `site.theme` contract.
263
- - `site.theme.palette` and `site.theme.style.token` are the Site's source of truth for Ant Design design tokens, resolved over the Theme blocks it follows.
264
- - If the root provider enables Ant Design `cssVar`, the runtime CSS variables are derived from that same token source.
265
- - `px2remTransformer` remains a separate bridge for rem conversion and should not be treated as a token source.
266
- - `site.theme.rem` contains only `rootValue`; typography is not persisted under `rem`.
267
- - The shared Ant Design `fontSize` seed is `12`. Ant Design's token algorithm derives `fontSizeSM`, `fontSizeLG`, headings, and line heights; any of those derived aliases may still be overridden explicitly in `site.theme.style.token`.
268
- - Theme authors may override size tokens as canonical numeric values such as `padding = 21`, `paddingMD = 34`, or `paddingXL = 89`.
269
- - Ant Design consumes the numeric token value directly and emits both CSS-in-JS rules and SSR-extracted `--ant-*` variables.
270
- - Phi may additionally project a value only when it represents a distinct Phi-owned shell or layout contract, for example a sidebar width expressed in `rem`.
271
- - Do not mirror Ant Design colors, spacing, radii, typography, shadows, control sizes, or motion values into `--phi-*`.
272
- - The root theme has one server projection and one client projection, both resolved from the same published Theme input.
273
- - `AntdRegistry` extracts Ant Design styles during SSR, including the configured `--ant-*` token variables used by Server Component markup and plain CSS.
274
- - `resolvePhiPublishedRootTheme(...)` emits only SSR-safe Phi-owned structural variables that have no Ant Design token.
275
- - `PhiConfigProvider` is the single Client Component boundary for Ant Design locale/theme configuration and the Phi-only `fonts`, `layout`, `customColors`, `mode`, and `presets` values.
276
- - The Server Root passes only serializable locale, Theme, font, preset, and custom-color data across that boundary. Client theme modules must not import server resolvers, server barrels, request helpers, or `server-only` modules.
277
- - Server theme projection modules remain protected with `server-only`; the package module-graph audit must report no Client-to-server-only reachability.
278
- - Client Components consume Ant Design semantics from `usePhiConfig().token` (or `theme.useToken()` inside a nested Ant Design provider).
279
- - Plain CSS consumes the corresponding Ant Design-owned `--ant-*` variables.
280
- - Client code must not resolve Ant Design semantics from `--phi-*` or maintain a parallel Phi token map.
281
- - `--phi-*` is reserved for true Phi-only structural or technical CSS contracts. Custom theme colors are data in `usePhiConfig().customColors`, not global CSS variables.
282
- - CSS-in-JS remains enabled while live Theme mode changes are projected through Ant Design runtime tokens. Ant Design `zeroRuntime` is a separate packaging decision, not part of this contract.
283
- - The shell stays a region-level live rendering concern.
284
- - The current live shell contract remains unchanged.
285
- - New editor and preview layout systems should be parallel, not destructive.
286
- - `root.css` should stay minimal.
287
- - Ant Design reset CSS should be imported directly in `PhiRootLayout`, not via `@import` in `root.css`.
288
- - It should hold the global reset, base `html` / `body` rules, live effect rules, and small utilities only.
289
- - It should not encode shell topology.
290
- - `shell.css` defines the shared shell topology.
291
- - It should hold reusable region-grid templates such as `header_*`, `footer_*`, and `sider_*`.
292
- - It also owns the structural page-content viewport and the stable placeholder slots for page-capable regions.
293
- - It should not own region chrome such as background, border, or shadow.
294
- - See `SHELL.md` for the canonical shell contract.
295
- - `LAYOUTING.md` defines the canonical layouting contract.
296
- - `layout.css` defines reusable live/preview layout primitives and runtime geometry such as slot flow, anchors, fill behavior, slot-child frames, widget fallbacks, CMS region shells, and the variant contract for built-in layouts.
297
- - `layout-authoring-scaffold.css` contains Builder-only debug and editor chrome such as slot frames, empty-slot state, edit drawers, selection frames, and the shared `--phi-debug-layer-*` palette.
298
- - `layout-affordances.css` defines Builder-only insert/delete affordance styling.
299
- - Builder scaffold and affordance styles are imported only by the Builder Authoring module, never by the global Root or a Public runtime entry.
300
- - Sequential flow layouts compact their `slotIndex` order after delete; sparse slot layouts keep their positions stable.
301
- - Typography remains configurable through `site.theme.style.token`, the active font selection in `site.theme`, and the rem bridge in `site.theme.rem`.
302
- - Root rem scaling and Phi-only structural variables are resolved and emitted by `PhiRootLayout` on the server.
303
- - Client Ant Design token updates remain inside `PhiConfigProvider`; generated `--ant-*` variables are Ant Design's
304
- canonical CSS projection, while mirrored `--phi-color-*` output is forbidden.
305
-
306
- ## Metadata Contract
307
-
308
- - Page metadata is owned by the CMS page record.
309
- - The concrete page title and description should come from the page record, for example through `titleMsgId` and `descriptionMsgId`.
310
- - Page metadata has the highest priority and should override all area and site defaults.
311
- - Code-owned route presets return resolved title and description through `pageMeta`. When a preset has no title label or explicit metadata, its descriptor title is resolved through the normal Site-scoped translation path before becoming the runtime title.
312
- - A Page Title Widget reads `runtime.page.title` automatically and receives stable-shell navigation updates through the Core Page-context projection without persisted signal routes.
313
- - Indexing is answered on the page record, not in `pageMeta`.
314
- - `pageMeta` is the translation projection of `titleMsgId` and `descriptionMsgId`; a boolean has no place in it. Whether a page may be indexed is the `PhiCmsFlags.NoIndex` bit on the page row, and the Builder's page-meta dialog is where it is set.
315
- - A route preset states only what a page of it *starts out* as, through `defaultPageFlags`. The value is seeded onto the page when the route is instantiated and copied into the draft on install; from then on the record answers. The sign-in pages ship `NoIndex` this way, and a Site that wants its `/register` found can switch it on without the Module agreeing.
316
- - Area metadata is the contextual fallback layer.
317
- - Public, App, Admin, Developer, and Editor Areas may define their own fallback title and description behavior.
318
- - Internal areas may also choose stronger defaults such as `noindex`.
319
- - The two rungs only ever add up: the Area decides first, every authenticated Area is `noindex` whatever a page says, and inside Public a page may withdraw itself but can never reopen an Area that was switched off.
320
- - Addresses are stated only for an indexable Public page.
321
- - Such a page gets `alternates.canonical`, its own absolute URL in its own locale, and `alternates.languages`, one entry per Site locale with the same locale-neutral path plus `x-default` for the default locale. A language version is never canonical to another one.
322
- - Both are built by `helpers/phi-seo.ts` from the Site's public base (`site.publicUrl`, else `config/site-runtime.json`). A Site without an absolute public base states no canonical, no alternates and has no sitemap.
323
- - `/sitemap.xml` and `/robots.txt` are route handlers from `@phis/ui/next/seo-routes`, answered from the Public bridge only.
324
- - The sitemap exists when the Site has a public base and the Public Area has both `index` and `sitemap` switched on; otherwise it answers 404. Its candidates are the Area root, the exact Module routes and the published Public pages, which the Public Area read adds on `include=publishedPages`; each candidate is resolved as an anonymous page view and listed only when that view is not a redirect, not refused and not `noindex`. Every page appears once per locale with the full hreflang set.
325
- - The finished sitemap is kept until the next publish. Every request reads the Public Area with its published pages once and fingerprints the answer -- live revision ids, Area preset, active Modules, locales, public base; only a changed fingerprint resolves the candidates again. The Core never notifies a Site, so the cache is pulled, not pushed, and a new Site process starts empty.
326
- - `robots.txt` allows everything and names the sitemap when there is one. It lists no staff Area on purpose: those stay out of the index through `noindex`, and a `Disallow` list would publish where they are. It answers even when the Site cannot be read, because a failing robots.txt stops crawling of the whole host.
327
- - Site metadata is the global fallback layer.
328
- - `site.name` and `site.theme.brand` are the most natural site-level fallback sources.
329
- - Site metadata should not replace a concrete page title when the page provides one.
330
- - The root layout composes metadata only.
331
- - It should set the shared app-level defaults such as `metadataBase`, `title.template`, and `applicationName`.
332
- - It should not own concrete page copy.
333
- - Recommended priority:
334
- 1. Page metadata
335
- 2. Area metadata
336
- 3. Site metadata
337
- 4. Generic product fallback
338
- - `site.theme` remains a visual contract, not the primary page-metadata owner.
339
- - If a future theme-level title or description default is ever needed, it should be treated as a fallback only.
340
- - Shared spacing scale:
341
- - `xxs = 3`
342
- - `xs = 8`
343
- - `sm = 13`
344
- - `base = 21`
345
- - `md = 34`
346
- - `lg = 55`
347
- - `xl = 89`
348
- - `xxl = 155`
349
- - `theme`: shared theme/token helpers.
350
- - `constants`: public runtime constants, enums, and flag definitions.
351
- - `helpers`: public runtime helper functions.
352
- - `helpers/site-runtime`: server-only site runtime loader for repo-local `config/site-runtime.json`.
353
- - `server-helpers`: public server-only helpers.
354
- - `net`: public network/proxy helpers.
355
- - `gateway`: internal-only Phi-server adapter layer for site config, navigation, generic label-set infrastructure, form guards, form registry resolution, translation requests, and the shared data-source contract.
356
-
357
- Practical meaning of the main rendering layers:
358
-
359
- - `widget`
360
- - one editorial or functional unit such as brand, locale switch, quick links, markdown, account
361
- - `layout`
362
- - structural slot composition only
363
- - no implicit padding, no shell ownership
364
- - edit mode renders structural slots plus drop zones and insert affordances
365
- - `edit` render order
366
- - outer shell or region first
367
- - then layout scaffold
368
- - then occupied child content
369
- - then the widget content inside each occupied slot
370
- - then the widget selection/interaction layer
371
- - then optional widget-owned authoring chrome
372
- - then shared editor tools
373
- - `edit` renderer contract
374
- - plugins provide slot topology and occupancy
375
- - shared scaffolds provide the common edit chrome
376
- - the minimal shape should describe `kind`, `variant`, `slots`, `occupied`, and `insertPoints`
377
- - `flex` uses sequential slots with one open append slot after the last occupied slot
378
- - named layouts use one fixed zone per semantic slot key
379
- - `stack` exposes one zone per section slot and only the active section renders live content
380
- - `grid` derives zones from visible cells or spans
381
- - a minimal render call can be thought of as `renderEdit({ kind, slots, occupied, insertPoints, runtime })`
382
- - widget content remains visually live-like but is inert by default; editor mode must not be simulated by setting every control to its runtime-disabled state
383
- - the widget interaction layer owns selection, hover, and a future shared DnD handle, while widget-owned authoring chrome stays above that layer
384
- - layout scaffolds must not cover their full descendant content because their slots and nested child scaffolds remain independently interactive
385
- - builder selection terms
386
- - `selectedRegionKey` names the active region shell
387
- - `selectedRootRegionKey` names the region that currently hosts the selected layout root
388
- - `selectedStructureNodeKey` names the selected layout or widget node inside the structure tree
389
- - builder inspector contract
390
- - inspector sections are persisted globally per selected structure node key so reopening the same node restores the previous collapse state
391
- - layout roots expose `rootNodeBackground` and `rootNodeBorder` as separate draft fields; they are sibling chrome controls, not a nested `nodeBackground` object
392
- - the layout Inspector exposes background, border, shadow, effect, and padding on the same level
393
- - editor draft state and preview snapshot stay separate, but both normalize through the shared builder root-node helper before rendering; the snapshot is not the editor data source
394
- - root layouts keep their `rootNodeConfig` blob in the draft so editor, preview, and Inspector see the same default shape until an explicit override is stored
395
- - the shared padding Inspector exposes `top`, `left`, `right`, `bottom`, and `gap`
396
- - `area preset`
397
- - the default CMS tree for a whole Area such as `public` or `app`
398
- - `shell`
399
- - the stable root-level frame that mounts header, sider, footer regions across a `[root]`
400
- - it also owns the structural page-content viewport
401
- - that viewport is not the same thing as the page-owned CMS region named `content`
402
-
403
- Server/client boundary for those layers:
404
-
405
- - `shell`
406
- - framework-facing infrastructure
407
- - should stay server-safe and must not depend on Ant Design layout/context internals in the RSC path
408
- - `layout`
409
- - slot structure contract first
410
- - may be implemented without Ant Design when the slot contract is sufficient
411
- - `widget`
412
- - primary UI integration layer
413
- - first-party Phi Widgets compose canonical Phi Controls for interactive primitives; direct Ant Design
414
- interaction imports remain inside the corresponding Phi Control adapter
415
-
416
- ### Shared component rules
417
-
418
- - General naming rule:
419
- - public API components, public API helpers, and public API libraries use the `Phi` prefix
420
- - internal implementation files, helpers, and structural primitives that are not public exports must not use the `Phi` prefix
421
- - Public `Phi*Layout` and `Phi*Widget` components should be self-contained within their documented
422
- ownership boundary. A domain Widget must not privately mount a structural Modal or Drawer.
423
- - Persisted Modal/Drawer workflows are Area-/Page-owned CMS Overlays. `PhiModalControl` and
424
- `PhiDrawerControl` are provider-free presentation adapters used by the CMS Overlay renderer and by the
425
- explicitly permitted transient prompt/editor boundary. Immediate Pickers use only their canonical
426
- `Phi*Control`; that Control privately adapts a native UI-library primitive or composes
427
- `PhiPopoverControl`. Pickers never use Modal or Drawer presentation.
428
- - Guided learning follows [TOURS.md](./TOURS.md). `PhiTourControl` is the provider-free presentation
429
- adapter; the owning Tour Controller uses ordinary Phi signaling and resolves existing visual signal
430
- addresses through the active Runtime partition. Tours do not occupy hidden CMS slots, expose Ant Design
431
- target refs, or resolve targets through global DOM selectors.
432
- - Public `Phi*Layout` components should usually be server components.
433
- - Naming contract:
434
- - `*Layout` means structural composition plus optional configured visual treatment
435
- - React/Next boundary contract:
436
- - Server Components are the default.
437
- - Client Components are used only for browser interaction or client-only React features.
438
- - Shared shell/region infrastructure in the RSC path must not import Ant Design modules that rely on client-only context or css-in-js runtime internals.
439
- - Ant Design remains a private implementation detail of canonical Phi Controls and root/theme adapters;
440
- first-party feature Widgets and Forms do not create parallel primitive paths.
441
- - Browser interaction belongs in internal `clients/*` implementations.
442
- - Site code should pass control, context, explicit override, and composition props only.
443
- - If a site has to preload shared labels, shared navigation trees, or shared config only to satisfy a shared widget/modal, the shared boundary is too low-level and should be raised.
444
- - `*Form` components remain low-level and presentational. They should not own site-aware translation loading, endpoint selection, legal-link construction, or widget-level orchestration.
445
- - Public form building blocks may be consumed by shared widgets, site widgets, and third-party widgets as long as they stay on the low-level form contract.
446
- - Shared layouts and widgets should follow a server-wrapper/client-inner split when they need both runtime data and browser interaction.
447
- - The server wrapper is responsible for loading site/theme/runtime config and filtering it down to a small widget-specific config slice.
448
- - Server wrappers may work with a normalized runtime context that includes site, locale, area, and viewer state.
449
- - That normalized runtime context is primarily a server-side contract.
450
- - When shared CMS root rendering resolves runtime once for a root, shared helpers and special pages under the same root should reuse that scope instead of rebuilding it.
451
- - Shared transient state should use the scoped store helper under `components/state/scoped-state-store.ts`.
452
- - the store is scoped by `storeId` and `scopeKey`
453
- - it is intended for runtime-only UI state, not persistence
454
- - the public store contract should stay small:
455
- - `useStore(scopeKey)`
456
- - `getSnapshot(scopeKey)`
457
- - `patch(scopeKey, updater)`
458
- - `replace(scopeKey, nextState)`
459
- - `reset(scopeKey)`
460
- - `deleteScope(scopeKey)`
461
- - builder-specific workspace state may use the shared scoped store basis, but builder orchestration and signal handling stay in the builder wrapper
462
- - widgets and plugins may use the same store basis for local or shared runtime slices when they need stable in-memory state across instances
463
- - Viewer authorization uses the provider-scoped role claims and single access-policy evaluator defined
464
- in `ACCESS.md`; do not add direct Base/Custom flag branches or feature-permission arrays.
465
- - Role-dependent capability inside an authorized surface is a controller permission projection bound to
466
- `disabledWhen` conditions, never a role branch in a widget; see `ACCESS.md` section 6.
467
- - Client implementations should receive only the runtime slice they actually need, not the whole request/runtime object by default.
468
- - Client implementations should receive only the widget-relevant config they need; do not pass raw site/theme JSON into client components.
469
- - Renderable blocks are the shared data contract for Layouts, Widgets, and Regions. Regions
470
- use concrete `region:<region-key>` runtime addresses and inherit the same standard receiver channels;
471
- their signal scope is derived from canonical shell/page ownership.
472
- - `renderMode` defaults to `live`.
473
- - `renderMode` is a transient renderer hint owned by `render()`, `renderPreview()`, and `renderEditor()` wrappers. It is not persisted and must not be controlled through runtime signals.
474
- - `visibility` defaults to `visible`.
475
- - `enabled` defaults to `true`.
476
- - `size` is the canonical public preferred geometry form; `minSize`, `maxSize`, and `collapsedSizeHint` are the semantic geometry constraints.
477
- - Renderers normalize geometry, spacing, and padding to longhand DOM properties only.
478
- - Do not mix shorthand and longhand for the same CSS value on the same rendered element.
479
- - `capabilities` describe what the block can do, such as `selectable`, `draggable`, `hoverable`, `activatable`, `focusable`, and `droppable`.
480
- - `runtime` describes the host runtime context and interaction state for the current session, such as `siteKey`, `publicUrl`, `defaultLang`, `area`, `pageKey`, `selected`, `hovered`, `dragging`, `focused`, and `active`.
481
- - `zIndex` may be part of the common render contract when a block needs stacking control; renderers should normalize an unset `zIndex` to `0`.
482
- - `className` is the supported external styling hook when a consumer needs CSS-level extension.
483
- - `style` is not part of the public block contract; inline styling stays inside the concrete renderer implementation.
484
- - CMS renderers should pass each block's full `config` object to `PhiSlotChildFrame`, which reads only the common renderable block slice it needs.
485
- - `enabled: false` means the block remains present but should not accept interaction.
486
- - `hidden` means no layout participation.
487
- - `collapsed` means reduced participation with a collapsed size hint.
488
- - `visible` means the normal layout state.
489
- - Block control commands use `action: "change"` on channels such as `visibility`, `enabled`, and `size`, and should address concrete renderable receivers.
490
- - Public v1 wiring routes every Widget and Layout to `receiver: "cms:<instanceId>"`; subcontrols append `:<subcontrolKey>`.
491
- - The receiver's mounted Page/Area context derives route scope. Node family is registry metadata, not an address or scope discriminator.
492
- - `receiver: null` or an omitted receiver means not wired and must not emit a runtime signal.
493
- - `receiver: "broadcast"` is the only public v1 broadcast form inside the selected `scope`, `channel`, and runtime context.
494
- - Any `scope: "block"` or `receiver: "block:<id>"` usage is a v1 contract violation.
495
- - `visibility` commands use canonical `value` values `visible`, `collapsed`, or `hidden`.
496
- - UI helper verbs such as show, hide, expand, collapse, and toggle must emit those canonical states instead of inventing separate widget-local commands.
497
- - CMS widgets inherit this receiver through the shared slot child frame; individual widgets must not implement duplicate hide/show/collapse receivers.
498
- - Shared styling uses Ant Design tokens for every semantic Ant Design models and Phi layout classes for structure.
499
- - `PHI_*` constants define seed/default content only; they are not an active runtime theme source.
500
- - Reusable Client widgets, layouts, and Region containers consume `usePhiConfig().token`. Component CSS consumes Ant Design-owned `--ant-*` variables.
501
- - A component-scoped CSS custom property may bridge a live token into a selector or pseudo-element, but it is an implementation detail rather than a second global theme API.
502
- - `--phi-*` may represent only a distinct Phi-owned structural or technical value, for example shell geometry, Builder scaffold geometry, or runtime effects.
503
- - Use inline styles mainly for geometry and per-instance layout values such as width, height, spacing, transforms, and positioning.
504
- - Reusable server-side components may read `runtime.site.theme` only for explicit site-owned contracts that Ant Design does not model, for example shell, brand, or other site-specific behavior.
505
- - Reusable Server Components and plain CSS use the SSR-extracted Ant Design `--ant-*` variables for generic UI semantics.
506
- - Server-side theme resolution contract:
507
- - Server Components must not depend on Ant Design runtime context such as `ConfigProvider` or other client-side theme hooks.
508
- - They use `var(--ant-...)` in styles or classes when a generic theme value is required.
509
- - Server resolvers may project only Phi-specific values that Ant Design does not model.
510
- - Stable area/region/shell dimensions are not Ant Design theme concerns. Values such as header height, sidebar width, footer height, sticky offsets, and similar shell sizing should come from the DB-backed site shell contract, typically `runtime.site.theme.shell`, with `PHI_*` only as shared defaults.
511
- - Shared default CMS trees may intentionally use stable `PHI_*` fallback values. Those tree defaults act as conservative starter values and remain valid even if a site developer later overrides the corresponding DB-backed CMS structure or shell sizing.
512
- - Shell implementation rule:
513
- - Ant Design `Layout/Header/Sider/Content/Footer` are valid UI primitives, but they are not a required contract for shared shell infrastructure.
514
- - If a shell/region path must stay RSC-safe under Next App Router, prefer plain React/HTML structure over pulling Ant Design layout internals into that path.
515
- - This does not prohibit Ant Design inside widgets, forms, or interactive client inners.
516
- - Hardcoded colors, radii, typography values, or bespoke visual tuning are exceptions and should be introduced only on explicit request or when the required result cannot be expressed cleanly through Ant Design tokens/components.
517
- - For CMS-driven pages, `@phis/ui` should resolve shared/internal namespaced widget type keys into shared widget implementations.
518
- - Site-custom CMS widget type keys must go through a fixed site bridge component instead of leaking site-specific registry logic into the backend.
519
- - Layout nodes must be implemented under `components/layouts/*`.
520
- - Content and flow widgets must be implemented under `components/widgets/*`.
521
- - Slot-based structure and runtime collections are different contracts.
522
- - Layouts under `components/layouts/*` arrange persisted CMS child nodes through `slots[]`.
523
- - Runtime-derived collections such as asset grids, product listings, galleries, and search results should be modeled as registered widgets under `components/widgets/*`.
524
- - Those collection widgets may expose view modes such as `grid`, `masonry`, or `stack`, but they do not become layout kinds just because they reuse those visual patterns.
525
- - Collection widgets should consume a shared collection scope, typically keyed by `scopeKey`, and render items through an explicit item-renderer contract.
526
- - Client-only implementations belong only in sibling `clients/*` directories.
527
- - CMS-facing widgets and layouts must have exactly one canonical truth.
528
- - A public `Phi*` widget or layout may itself be the portable plugin implementation.
529
- - A CMS widget or layout must not expose one set of defaults via a public `Phi*` component and a different set of defaults via its plugin definition.
530
- - Public CMS/shared components use the `Phi*` prefix.
531
- - Internal implementation helpers must not use the `Phi` prefix.
532
- - If shared shell or region rendering needs non-editorial structural helpers, those may live directly under `components/layouts/*`, but they should be internal-only helpers rather than CMS plugins.
533
- - Such internal shell/region helpers should not use the `Phi` CMS component naming convention.
534
- - Shells orchestrate slots; they must not pass widget-specific site-theme modes as bespoke props when those modes belong to the shared site-config contract.
535
- - Widgets that need no site/theme data should not load it.
536
- - Widgets may define stable internal defaults when a config field is absent, but they must not start hidden replacement fetches for site/theme/runtime config.
537
- - Shared config persistence must stay sparse: if a field is absent, empty, or equal to the canonical default, it should not be written to JSON. Readers normalize sparse data back to the full runtime shape.
538
- - Complex widgets may fetch their own domain data, for example table rows, detail records, news entries, or product lists. They must not fetch site/theme/runtime config on their own.
539
- - Generic option controls use `optionsProvider` for dynamic choices.
540
- - widget config stores a strict namespaced `providerKey`; provider descriptors are owned by the active runtime module
541
- - the selected option is still emitted as the canonical signal `value`
542
- - provider implementations live in a React-scoped active-module boundary; global registries and registration import side effects are forbidden
543
- - live runtime loads the active module's executable provider Client; Canvas receives descriptors for configuration but executes only providers explicitly declared as static authoring data
544
- - DB-, API-, controller-store-, and subscription-backed providers are live-only and never expose their records in Canvas
545
- - built-in keys use the `@phis/ui/options/*` namespace
546
- - Shared remote data loading should use a normalized data-source descriptor with:
547
- - `kind: api | serverAction | inline`
548
- - `cache.mode: no-store | force-cache | revalidate`
549
- - `cache.revalidateSeconds`
550
- - `cache.tags`
551
- - request/query mapping fields when the source is API-backed
552
- - `cache.tags` are part of the contract and are intended to pair with Next.js tag invalidation.
553
- - The same data-source contract should later be reused by tables, list views, and form bootstrap reads instead of introducing per-widget fetch abstractions.
554
-
555
- ### CMS rendering contract
556
-
557
- - Shared rendering assumes a deterministic CMS tree:
558
- - area preset
559
- - region
560
- - root layout node
561
- - nested layout/content widgets
562
- - Area presets own the default region set for an area.
563
- - Regions without any occupied layout/widget slots must render `null`.
564
- - Empty regions must not leave behind wrappers, placeholders, spacers, or reserved layout space.
565
- - Do not add structural wrapper elements only to carry a React `key`, class, or trivial layout prop when the existing top-level rendered element can own that responsibility directly.
566
- - Generic structural layouts should default to `margin: 0`.
567
- - `*Layout` types own structure and optional visual treatment in one contract:
568
- - named slots or sequential `slots[]`
569
- - `gap`
570
- - alignment
571
- - distribution
572
- - width/height/min/max box constraints
573
- - optional outer layout spacing when that spacing is part of page composition rather than slot content treatment
574
- - `*Layout` types are visually neutral by default:
575
- - transparent
576
- - no background
577
- - no border
578
- - no shadow
579
- - no glass/blur treatment
580
- - no implicit inner padding
581
- - `*Layout` types must not add implicit inner slot padding for arbitrary child content.
582
- - Configure padding and other visual fields directly on the Layout when a Region needs padded inner composition.
583
- - Public layout component contracts should not use free-form `children` as the primary slot API.
584
- - Named layouts should use explicit slot props only for genuinely semantic sides such as `left`, `middle`, or `right`.
585
- - Single-slot layouts should use positional slots, for example `slots[0]`, not a named alias such as `defaultSlot`.
586
- - Sequential layouts should use `slots: ReactNode[]`.
587
- - Layout config may own:
588
- - inner padding
589
- - background
590
- - shadow
591
- - a semantic effect
592
- - border
593
- - borderRadius
594
- - Reusable layouts expose visible treatment through config/props rather than hardcoded values.
595
- - If a layout has multiple semantic sides or slots, side-specific treatment such as left/right background or padding is explicit in the family contract.
596
- - Regions have a split contract:
597
- - `Region Core`
598
- - placement, visibility, ordering, root node binding, and allowed injections
599
- - examples: `regionType`, `rootLayoutInstanceId`, `sortOrder`, `visibilityMask`
600
- - `Region Shell`
601
- - outer region behavior and chrome such as sticky placement, viewport offset, width, height, collapse, padding, background, border, shadow, effect, and full-height behavior
602
- - examples: `sticky`, `offsetTop`, `zIndex`, `width`, `height`, `maxWidth`, `border`, `shadow`, `effect`
603
- - for sidebars, `height: "100%"` means the available shell space between the fixed outer header/footer bounds, while `fullHeight: true` is reserved for browser-height spanning shell behavior
604
- - builder-only preview adapters such as `PhiStructureRegionLayout` remain Region-shell adapters
605
- - `Layout`
606
- - inner structure and slot composition
607
- - examples: `gap`, named slots, sequential slots, alignment, distribution
608
- - Regions may own shell behavior such as sticky placement, viewport offset, width, height, collapse, padding, background, border, shadow, a semantic effect, and full-height behavior.
609
- - Static and client-enhanced Region renderers resolve that chrome through the same Region-shell resolver. Presets and Builder drafts persist only the closed effect ids `glass`, `haze`, `blur`, or `dim`, and only the closed shadow ids `none`, `soft`, or `strong`. Their CSS definitions are global Phi policy and must never be copied into a preset, module, renderer, or Area-specific path. A custom shadow is the sole exception and persists as `{ kind: "custom", value: "<box-shadow>" }`; arbitrary effect parameters and arbitrary strings in the standard shadow field are invalid v1 ABI.
610
- - Widgets should own only their own content rendering and should not need to know the surrounding layout box.
611
- - Regions must never contain content widgets directly.
612
- - Every active region must point to exactly one root layout node.
613
- - Layout nodes may contain further layout nodes and content widgets.
614
- - Content widgets are leaf nodes.
615
- - A layout defines slots.
616
- - Each slot may contain at most one direct child node.
617
- - That direct child node may be either one layout node or one content widget.
618
- - Layout-specific flexibility comes from how many slots a layout exposes, not from multiple direct children in the same slot.
619
- - Generic layout types such as `vertical`, `flex`, and `stack` should expose sequential `slots[]`.
620
- - Specialized layout types such as `three-column` expose a fixed semantic slot set, but those semantic names should resolve from stable slot indexes such as `0`, `1`, `2`.
621
- - Generic sequential layouts should use `slot_index` rather than numbered global slot enums or multiple direct children in one `default` slot.
622
- - Regions always start with a root layout node; they do not need an additional allowed-kind contract.
623
- - Page-level CMS records currently provide payload for `hero`, `header_bottom`, `sider_right`, `footer_top`, `drawer_right`, and `content`.
624
- - `hero_root_layout_node_id = NULL` means the page currently has no hero tree; that is a valid state.
625
- - `header_bottom_root_layout_node_id = NULL` means the page currently has no page-owned header bottom tree; that is a valid state.
626
- - `sider_right_root_layout_node_id = NULL` means the page currently has no page-owned right sidebar tree; that is a valid state.
627
- - `footer_top_root_layout_node_id = NULL` means the page currently has no page-owned footer top tree; that is a valid state.
628
- - `content_root_layout_node_id = NULL` means the page currently has no content tree; that is a valid empty-page state.
629
- - `hero`, `header_bottom`, `sider_right`, `footer_top`, `drawer_right`, and `content` are page-owned payload channels, but their placement belongs to stable shell slots.
630
- - `content` is the only truly page-internal region in the target contract.
631
- - In `/builder/pages`, any workspace-level header chrome above the canvas is not the selected page's `header_bottom` region.
632
- - The selected page's `header_bottom` remains a normal page-owned CMS region with its own root layout tree inside the canvas.
633
- - `drawer_right` remains a page-owned payload channel for page content that intentionally uses that Region. Builder Inspectors are not page content: their three Area-owned Drawer Overlays mount through the resolved Builder Area `overlays[]` collection independently of Region occupancy.
634
- - Builder chrome and controllers have stable responsibilities:
635
- - the Builder workspace controller is a headless controller owned and mounted by the active Builder module; it must not be placed as a visible CMS widget in a layout slot.
636
- - a regular `select-box` Widget in stable Builder chrome selects the target Area through a declarative route to the Builder Controller, currently in `header_main` left.
637
- - `builder-mode-switch` is a visible builder mode control widget; pages may place it where the active workspace needs that control.
638
- - the Region, Layout, and Widget Inspector section Widgets render only their declared section inside the matching Area-owned Drawer Overlay; there is no Inspector-host Widget or hidden Drawer Region.
639
- - `builder-chrome-controls` controls builder chrome visibility/state through signals; it is not a header-main host.
640
- - Builder command and Inspector Overlay orchestration belongs to the Builder workspace controller or page/workspace controllers. Inspector section Widgets own only their declared section presentation and controller routes.
641
- - `page.layoutConfig.disabledRegionTypes: number[]` may explicitly suppress inherited fallback regions by `regionType`.
642
- - Page-level payload must not redefine shell topology; it only fills the shell's page-capable placeholders.
643
- - Controlled page-level slot injections into area-owned regions are a planned contract when the area contract explicitly exposes those slots, for example `header_main.actions`.
644
- - Slot injections target layout-owned slots; the injected node itself may be either a layout node or a content widget.
645
- - `allowedPageSlotInjections` is currently contract metadata only; the merge/injection runtime is not implemented yet.
646
- - Widget instance config belongs to CMS widget nodes in revision `tree_json`, not to `site.theme.widgets.*`.
647
- - If a widget persists canonical CMS content through `content_id`, its shared definition must declare that contract explicitly through `contentBinding`.
648
- - Builder CMS write payloads must forward `contentBinding` as declarative metadata.
649
- - `@phis/server` persists namespaced widget types in revision nodes, but it must not branch on concrete widget `typeKey`s for content persistence when the payload already declares `contentBinding`.
650
- - `site.theme` remains reserved for global design defaults such as fonts, colors, shell defaults, and Ant Design deltas.
651
- - Region and preset data should be normalized into stable shared interfaces before rendering.
652
- - `PhiCmsLayoutRenderer` is the generic region/layout tree renderer for area-owned regions.
653
- - `PhiCmsPageRenderer` should stay a thin content-focused wrapper over `PhiCmsLayoutRenderer`.
654
- - Shared fallback presets should not introduce bespoke layout wrappers; they should synthesize a CMS tree and go through the same renderer path as DB-backed presets.
655
- - Every layout, widget, overlay, and resolved Navigation item instance has exactly one canonical `PhiCmsInstanceId`: an opaque 96-bit value serialized as exactly 16 Base64URL characters. The same id is used in Draft, preview, published runtime, persistence, history, structural references, and signaling where applicable; UUIDs, numeric CMS node ids, and parallel runtime identity fields are not part of v1.
656
- - Codec v1 uses one version/origin header byte and one explicit domain byte. The closed domains are `area`, `page`, and `navigation`. Draft-origin ids then encode a safe 48-bit owning Draft revision id and one 32-bit Draft-local sequence. The complete id is text/bytes, never one JavaScript number. Each owning Draft persists one monotonic `nextNodeSequence`, and deleted values are never reused.
657
- - CMS node identities do not encode Draft or Published state. Publish validates the selected revision and updates revision state/pointers atomically without remapping node identities.
658
- - Layout-parent and Page/Region root-layout references use `PhiCmsInstanceId`. Signal addresses use `cms:<instanceId>` and `cms:<instanceId>:<subcontrolKey>`; widget/layout kind remains registry metadata.
659
- - The central CMS instance creator/codec is the only identity authority. Third-party packages provide definitions and authoring requests, never caller-generated ids or assembled concrete CMS nodes. Inserting or duplicating consumes the owning Draft sequence; moving, editing, saving, reviewing, and publishing preserve the id.
660
-
661
- ### Module descriptor identity and instantiation
662
-
663
- Area-shell, route, and theme presets are separate descriptor families. The generic preset-kind registry,
664
- multi-target contributions, and arbitrary route plugins are not v1 extension surfaces. Every descriptor
665
- has one stable `(ownerModuleId, presetKey)` identity and a positive integer version. A route preset belongs
666
- to exactly one Area and one effective normalized path. The Builder addresses it by
667
- `createPhiPresetCmsPageId(ownerModuleId, presetKey)`: a hash of the pair the server already stores for a
668
- Module Page, so it is recomputable rather than allocated, unique across Modules, and unmoved when a path is
669
- reassigned. A Site Page is addressed by its path, which is what `site_page_scopes` keeps for it.
670
-
671
- Outside Public, the descriptor compiler serves a route under its owner's package: `@acme/status/modules/auth`
672
- declaring `/providers` answers at `/acme/status/providers`. Two packages therefore cannot contest an address.
673
- Public carries no namespace, because it is the Site's own address space, and `/` is an application for the
674
- Area root slot rather than a route of the Module's own.
675
-
676
- An Area may explicitly export a route mount such as `settings`. The mount binds a stable `mountKey` to an
677
- exported href-less navigation container, and a route that opts in has its navigation entry placed there. A
678
- mount composes navigation, never paths.
679
-
680
- Route paths are exact or contain at most one whole-segment parameter such as `/news/:id`. Catch-alls,
681
- optional segments, regexes, arbitrary matcher callbacks, and multiple dynamic segments are rejected.
682
- The metadata-only descriptor compiler validates route-mount exports, shell and route versions, module
683
- ownership, route syntax, theme identity, and Area-shell composition before any tree loader runs. Its active
684
- route table resolves requests by effective `path` and Builder targets independently by Page id; callers must
685
- use the matching resolver instead of treating either value as the other. Building that table is a read and
686
- never refuses: where two active routes want one address, the first claim answers and the second is absent,
687
- which hides its navigation entry.
688
-
689
- Preset templates contain no numeric CMS node IDs. Their structure and wiring use stable local node keys.
690
- The central codec derives one canonical 96-bit `instanceId` from
691
- `(contractVersion, domain, ownerModuleId, presetKey, nodeKey)`. Preset version, Site, concrete Area key,
692
- request path, node type, and catalog order never participate. The domain prevents independent Area,
693
- Page, and Navigation revision sequences from sharing an identity namespace. Preset authors never generate ids, retry
694
- collisions, or construct concrete CMS instances.
695
-
696
- Navigation descriptor `itemKey` values remain package-owned compile and injection anchors only. After
697
- descriptor resolution, every Navigation item is addressed by its deterministic Navigation-domain
698
- `PhiCmsInstanceId`; Site-authored items use Navigation Draft-origin ids from the central allocator.
699
-
700
- Preset instantiation is in-memory and requires neither a DB row nor a Draft. Once an Area or route tree is
701
- saved, its Draft/Published snapshot is independent of later descriptor versions. Untouched Live routes use
702
- the currently installed descriptor; existing snapshots retain their source identity and version until the
703
- operator explicitly replaces them.
704
-
705
- Every Theme descriptor declares a required `themeKey` and `title` plus an optional `description`. Theme
706
- selection consumes only active module descriptor bindings. Global mutable registries, registration side
707
- effects, and parallel first-party discovery arrays are invalid.
708
-
709
- The Builder Theme selector also exposes the concrete Site-owned Theme as `site:<siteKey>`, labelled with
710
- the Site key. Preset choices are immutable bases and reusable apply actions. The Site entry is
711
- selected exactly when the Theme scope has a Working Draft or Published revision pointer; clients never
712
- infer that state by comparing Theme payloads. The applied preset remains provenance while the concrete
713
- result is saved and published through the Site Theme Draft lifecycle. Selecting the Site entry restores
714
- the current Site-owned snapshot.
715
-
716
- Concrete persistence ownership remains target-specific: an Area target belongs to `(site, area)`, a
717
- Page target belongs to `(site, area, canonical page scope)`, and other preset kinds use their own typed
718
- target identity. Drafting, publishing, and resetting one target never mutates another target of the same
719
- preset.
720
-
721
- ### Backup, restore, and portable import
722
-
723
- Exact backup/restore reproduces the same installation state and preserves CMS instance ids, Draft and
724
- Published revisions, pointers, and the relevant database sequences. It performs no identity remapping.
725
-
726
- Portable CMS export/import is a content-transfer operation. Import creates a target Draft, re-derives
727
- deterministic preset ids from their recorded `(ownerModuleId, presetKey, nodeKey)` provenance,
728
- allocates new target-Draft ids for authored nodes, and atomically remaps structural references, signal
729
- routes, controller/form bindings, and other declared node references. Module-owned domain data such as
730
- Media, News, or Tickets participates only through declared module export/import hooks. Third-party code
731
- never performs identity remapping itself.
732
-
733
- - Area/page resolution must obey this visibility contract:
734
- - every area resolves only its own DB-backed pages or explicit area-owned fallback pages
735
- - no area may resolve pages from another non-public area
736
- - public pages and public shell roots do not auto-supply other areas
737
- - explicit area-owned fallbacks such as admin dashboard or admin users/logs stay local to that area
738
- - Shared types should define the canonical region/preset contract, for example:
739
- - `PhiCmsRegionKey`
740
- - `PhiCmsRegionConfig`
741
- - `PhiCmsResolvedRegion`
742
- - `PhiCmsAreaPreset`
743
- - Preview and live Region containers are visually neutral when `border` is missing or `null`. A Region border must come from explicit Region config; implicit header, footer, or Sider separators are not part of runtime rendering. Canvas and Editor outlines belong only to Builder scaffold chrome.
744
- - A Layout `borderRadius` shorthand is normalized into the Border control's four corner-radius values for Inspector display. Explicit per-corner values override that common radius.
745
- - Widgets, layouts, and route resolvers should move toward explicit plugin definitions with:
746
- - `kind`
747
- - `pluginKey`
748
- - `typeKey`
749
- - plugin-specific contract fields
750
- - Synthetic CMS trees should be assembled through small factory helpers rather than by hardcoding built-in enum values inside presets:
751
- - `buildPhiCmsLayoutNode(...)`
752
- - `buildPhiCmsWidgetNode(...)`
753
- - `buildPhiCmsLayoutNamespacedTypeKey(pluginKey, typeKey)`
754
- - `buildPhiCmsWidgetTypeKey(...)`
755
- - the factories take `pluginKey` and `typeKey` and emit the namespaced CMS node type used by the registry
756
- - built-in `PhiCmsLayoutType.*` and `PhiCmsWidgetType.*` constants remain convenience shortcuts for shared built-ins, not the only valid CMS contract
757
- - concrete layout/widget instances use only canonical 96-bit `PhiCmsInstanceId` values created by the central CMS instance service
758
- - preset templates use local `nodeKey` references and never numeric CMS node IDs
759
- - third-party type resolution continues through plugin-key/type-key, while deterministic preset instance identity derives only from contract version plus module-key/preset-kind/preset-key/node-key
760
- - Plugins may additionally expose inert future-facing monetization metadata such as:
761
- - `commercial.vendor`
762
- - `commercial.website`
763
- - `commercial.plan`
764
- - `commercial.licenseRequired`
765
- - Widget and layout plugins should additionally expose:
766
- - `category`
767
- - `tags`
768
- - `icon`
769
- - `defaultConfig`
770
- - `fields`
771
- - `parseConfig`
772
- - `render`
773
- - A CMS widget should usually consist of:
774
- - a public `Phi*Widget` implementation component
775
- - and a `PhiCmsWidgetPlugin` definition that adapts it into the CMS/plugin registry
776
- - A CMS layout may likewise consist of:
777
- - a public `Phi*Layout` implementation component
778
- - and a layout plugin definition that adapts it into the CMS/plugin registry
779
- - For CMS rendering, widget and layout plugins are the only supported public integration surface.
780
- - Shared sites, editors, presets, and future plugin providers should target the canonical plugin contract.
781
- - When a public `Phi*Widget` or `Phi*Layout` component is the plugin implementation, it must remain self-contained and idempotent.
782
- - Layout plugins should additionally declare their slot contract for editor and validation use.
783
- - Builder/editor metadata should come from the plugin definition itself:
784
- - `title`
785
- - `description`
786
- - `category`
787
- - `tags`
788
- - `icon`
789
- - `defaultConfig`
790
- - `fields`
791
- - and for layouts also `slots`
792
- - Built-in shared layouts and widgets may seed `defaultConfig` from a common shared defaults file, but runtime callers should still read defaults through the plugin contract rather than a second caller-local fallback.
793
- - For layout plugins, `defaultConfig` remains the public neutral default entrypoint. Optional creation presets materialize normal config before persistence.
794
- - Third-party plugins own their own `defaultConfig` and parser defaults and must not be forced onto the shared built-in defaults file.
795
- - Draft consumers in the Builder merge the plugin `defaultConfig` with the current draft through the shared helper before reading derived values.
796
- - Plugin `render` is server-first; client inners remain an internal implementation detail of the plugin.
797
- - Widget and layout execution contexts may later receive an optional `license` object.
798
- - CMS page contracts may also use a dedicated `redirect` page type for non-content pages.
799
- - Redirect pages should carry a target contract in page config with `area + path` and an optional status code.
800
- - CMS page delete is modeled as a normal page revision with `status = Deleted` and a deleted revision flag; publishing that revision makes the live route resolve as not found while retaining revision history for restore.
801
- - Route presets provide CMS trees inside the Area base shell. They never replace the outer shell or return
802
- arbitrary React nodes.
803
- - The shared catch-all route is only the site-owned transport into the central exact/dynamic route resolver.
804
- - `public` should continue to prefer CMS/DB-driven shell regions and navigation by default.
805
- - Navigation translation scope is part of the `navKey` contract:
806
- - `builder:*` is reserved for Phi-owned builder chrome navigation and must resolve from shared presets with global shared UI translations.
807
- - all other navigation keys remain site-owned navigation content and must use site-scoped navigation lookup and site-scoped translations.
808
- - do not move user/site navigation labels into global label sets to fix Builder UI wording.
809
- - `app` uses its own CMS/DB-driven shell baseline; optional modules contribute its routes and navigation.
810
- - Area base modules declare navigation surfaces and exported anchors. Optional modules may inject only
811
- into those surfaces through declarative navigation descriptors; they cannot create navKeys.
812
- - Route mounts bind routing to one exported Area-owned navigation container, but navigation overlays remain
813
- presentation-only: reordering or reparenting a contribution never changes its effective route path.
814
- - An overlay may tombstone an Area-owned container. Runtime navigation then hides the container and its
815
- remaining subtree, while Builder navigation authoring continues to show those source items disabled.
816
- A child explicitly reparented outside that tombstoned subtree remains visible.
817
- - Installed Module packages extend the immutable runtime-module catalog through `phis-cli`-generated
818
- external build state; renderers accept only request-resolved active registries.
819
- - `@phis/ui/cms` remains the explicit aggregate CMS API. Route entry modules must use the
820
- narrow `cms/root-layout`, `cms/root-page`, `cms/root-slot-page`, `cms/error-page`, and `cms/request`
821
- subpaths so importing one App Router boundary does not load unrelated presets and registries.
822
- - `@phis/ui/cms/plugins` exports the site-bridge and plugin integration surface.
823
- - The preferred site integration surface is a `PhiCmsSiteBridge` object.
824
- - The stable generic Area host owns the bridge instance and consumes the generated build-time Module
825
- projection; Site/Skeleton source must not reconstruct that catalog or import optional package names.
826
- - Catch-all admin/builder/editor paths rendered from shared UI receive that generic bridge instead of
827
- importing site-local plugin or Module files.
828
- - Backend payloads, shared fallback presets, renderer input, and future editor output should all converge on that same normalized contract.
829
- - Layout and widget type IDs must come from central shared registry constants, not from local component-level hardcodes.
830
- - Keep separate registry constants for layout types and content/widget types.
831
- - A duplicate-ID validation check in CI or test tooling is recommended and should fail on collisions.
832
- - The future stable CMS type identity is the pair `(plugin_key, type_key)`.
833
- - Shared core entries should use:
834
- - `@phis/ui/widgets + <type-key>` for widgets
835
- - `@phis/ui/layouts + <type-key>` for layouts
836
- - Registries should expose both:
837
- - the current technical runtime id
838
- - and canonical `pluginKey` / `typeKey` metadata for future DB/plugin resolution
839
- - A consuming site should keep its CMS catch-all `layout.tsx` and `page.tsx` thin and deterministic; layout and content resolution should flow from the site wrapper to `@phis/ui` to `@phis/server`.
840
-
841
- Example site bridge:
842
-
843
- ```ts
844
- import {
845
- PHI_FIRST_PARTY_RUNTIME_MODULE_CATALOG,
846
- type PhiCmsSiteBridge,
847
- } from "@phis/ui/cms/plugins";
848
- export const SITE_CMS_BRIDGE: PhiCmsSiteBridge = {
849
- runtimeModuleCatalog: PHI_FIRST_PARTY_RUNTIME_MODULE_CATALOG,
850
- };
851
- ```
852
-
853
- Then pass that bridge into the thin shared root entrypoint:
854
-
855
- ```tsx
856
- <PhiCmsRootLayout root={root} cmsBridge={SITE_CMS_BRIDGE}>
857
- {children}
858
- </PhiCmsRootLayout>
859
- ```
860
-
861
- ### Client Runtime Signal Contract
862
-
863
- Client-only cross-component coordination uses the consolidated `PhiSignal` contract from `types/signals`.
864
-
865
- - `PhiSignal` is the only public signal shape; do not introduce feature-local message contracts.
866
- - The v1 ABI target is a flat signal shape: `{ scope, channel, action, valueType, value, valueSchema?, sender?, receiver, correlationId, timestamp, meta? }`.
867
- - `scope`, `action`, and `valueType` are closed contracts. `channel` is the configured channel that connects emitters and listeners.
868
- - Public JSON signals require a named schema.
869
- - `valueType: "json"` capabilities and routes must declare `valueSchema`.
870
- - `valueSchema` uses the namespaced form `<npm-package>/<schema-key>`.
871
- - Core schemas must use `PHI_SIGNAL_VALUE_SCHEMAS`; new core schema ids are created with `createPhiSharedSignalValueSchema(...)`, not by repeating the package-name prefix at call sites.
872
- - JSON wiring matches only when `scope`, `channel`, `action`, `valueType`, and `valueSchema` are compatible.
873
- - Non-JSON signals must not use `valueSchema`.
874
- - `scope` is the signal routing level. `scopeKey` is not a routing scope and must not be used as a fallback for signal delivery; it may name a concrete transient store, provider, collection, or data-source namespace.
875
- - A receiver is registered in exactly one scope, and that registration decides.
876
- - A block registers in the scope of the tree it is drawn from: a Page tree gives `page`, an Area preset gives `area`, a Region gives `region`.
877
- - Delivery to a concrete address takes the scope from that registration; what a route or a dispatch declared is not consulted. A declared scope that disagrees is inert, not fatal.
878
- - `broadcast` is the exception: there is no receiver to ask, so the scope is the address and has to be named.
879
- - A signal to an address that is not registered yet is held and delivered when it registers. One that cannot be delivered at all -- nothing at that address, or a broadcast in a scope that forbids it -- is dropped, and says so once on the console as `[phi-signals] Dropped ...`. `pending` is normal; `undeliverable` is a fault.
880
- - `sender` is `PhiSignalAddress | null`; it identifies the concrete sending instance or controller and must never be `broadcast`.
881
- - `receiver` is `PhiSignalAddress | "broadcast" | null`.
882
- - `null` means not wired and no runtime signal should be emitted.
883
- - `"broadcast"` means explicit broadcast within the selected `scope` and current runtime context.
884
- - a concrete address means targeted delivery.
885
- - Public v1 scopes are exactly `widget`, `layout`, `region`, `page`, `area`, and `site`.
886
- - `runtime` identifies an execution environment or Registry partition, not a signal routing scope.
887
- - Live Area, active Page, and Builder Canvas runtimes remain isolated through their Registry context.
888
- - Public v1 address families are exactly:
889
- - `cms:<instanceId>[:<subcontrolKey>]` for Widget and Layout instances
890
- - `region:<regionKey>` for a concrete Region inside the route's active context
891
- - `controller:<npm-package>/<controller-key>:<instance-key>` for Controller instances
892
- - Widget/Layout kind is Registry metadata and must not create separate `widget:` or `layout:` address families.
893
- - `object:`, `runtime:`, `site:`, `area:`, `page:`, `slot:`, and `block:` are not public v1 address
894
- families.
895
- - Controller receivers are first-class `PhiSignalAddress` values, not a second signal system.
896
- - The only valid controller address form is `controller:<npm-package>/<controller-key>:<instance-key>`.
897
- - Singleton controllers use `default` as their instance key, for example `controller:@phis/ui/asset:default` or `controller:@phis/ui/builder:default`.
898
- - Non-namespaced controller addresses such as `controller:asset:default` and short addresses such as `controller:<controller-key>` are not valid v1 ABI.
899
- - The `<npm-package>/<controller-key>` segment matches the existing widget/layout `pluginKey/typeKey` registry style; third-party controllers must use their npm package name as `pluginKey`.
900
- - Controller settings may restrict a controller to the single `default` instance or allow additional named instances, but the serialized address form stays the same.
901
- - `scopeKey` may name the controller's internal store, provider, collection, or data-source namespace; it must not replace the controller instance key in signal routing.
902
- - Plugin metadata has four separate declaration surfaces:
903
- - `fields` declares inspector-editable config and persistence shape.
904
- - renderable-block `capabilities` declares only binary interaction participation, such as selectable, draggable, focusable, or droppable.
905
- - `runtimeSignals.emits/listens` declares semantic signal capabilities.
906
- - `runtimeSignals.dragDrop` declares semantic drag/drop payload types and drop modes.
907
- - Concrete instance signal routes are serialized with the CMS widget/layout/object instance config, not in `runtimeSignals`.
908
- - `runtimeSignals` declares what the plugin can emit or listen to.
909
- - `signalRoutes` declare how one concrete instance is connected.
910
- - Each `runtimeSignals.emits/listens` capability must have a stable `id`.
911
- - Each `signalRoutes.emits/listens` route must have a stable `routeKey`, unique across the owning instance's complete route set.
912
- - Each route has a required `capabilityId`. In `signalRoutes.emits`, it references one declared sender capability from `runtimeSignals.emits`; in `signalRoutes.listens`, it references one declared receiver capability from `runtimeSignals.listens`.
913
- - Route CRUD and table identity use `routeKey`; capability dispatch uses `capabilityId` and may resolve several explicit routes.
914
- - Presets use explicit stable route keys. Builder-created routes use the central `createPhiSignalRouteKey()` helper. Route keys are never derived from array indexes, route contents, receiver addresses, or timestamps and remain stable through edit, publish, and receiver remapping.
915
- - Do not persist or parse legacy `sourceKey` route fields.
916
- - The runtime sender is derived from the current instance address; persisted routes should store only a stable subcontrol/source key when needed.
917
- - The inspector must not infer settings from signal capabilities, and signaling must not infer wiring from inspector fields.
918
- - Stable actions are exactly `activate`, `change`, `toggle`, `start`, `stop`, `clear`, `open`, `close`, `reload`, `flush`, `filter`, and `drop`.
919
- - A channel has one canonical `valueType` per receiver capability. If one concept needs multiple value families, use distinct channels.
920
- - Naming convention:
921
- - entity `id` means numeric persisted/runtime identity
922
- - capability metadata `id` is the stable string identifier of that declared capability
923
- - route `capabilityId` references capability metadata `id`
924
- - route `routeKey` is the stable string identity of one concrete persisted route
925
- - `key` means stable string key.
926
- - `index` means positional number.
927
- - Command names such as `save`, `publish`, `preview`, `undo`, `redo`, `reset`, `createPage`, and `deleteSelected` are channels with `action: "activate"`, not signal actions.
928
- - Generic lifecycle actions keep their domain in the channel:
929
- - reload data: domain channel plus `action: "reload"`
930
- - focus state: `channel: "focused"`, `action: "change"`, `valueType: "boolean"`
931
- - effects: `channel: "effects"`, `action: "start" | "stop" | "clear"`
932
- - drag: `channel: "drag"`, `action: "start" | "change" | "stop"`
933
- - drop: `channel: "drop"`, `action: "drop"`
934
- - Runtime receivers register while their instance is mounted and unregister on unmount. The bus must treat a receiver as active only while it is inside the current runtime context, such as the current page, area, or region. A mounted container or lazy fallback does not prove that its concrete signal consumer is ready: orchestration that sends an initial payload after lazy mounting must wait until both the receiver instance and at least one concrete listener for that address are registered.
935
- - Runtime delivery state is provider-owned, never module-global. The Root owns the Site partition, each
936
- mounted Area owns one Area partition, and each Builder Canvas owns an isolated Canvas partition.
937
- Subscriptions and mounted-instance registries are destroyed with their provider; browser tabs do not
938
- exchange runtime signals and v1 does not use `BroadcastChannel`.
939
- - Page-owned endpoints register their concrete Page/Region context inside their current Area partition and
940
- unregister on unmount. This keeps shell-to-current-page routes possible without a second global current-page
941
- singleton or a parallel signal bus.
942
- - `correlationId` is required on delivered runtime signals. The signal bus/controller creates it centrally when no existing correlation is supplied. Feedback or state-change signals produced by handling a command must keep the initiating correlation id.
943
- - Because a missing correlation id is replaced by a fresh one rather than rejected, an answer that leaves the field out is indistinguishable from one that started a new exchange. Pass `signal.correlationId` explicitly when replying -- through any helper the listener calls, and across an `await` -- and write `createPhiSignalCorrelationId()` where a new exchange really begins. A correlation id is never a literal of one's own: every occurrence of such a string is the same id, so concurrent exchanges become indistinguishable. `pnpm runtime-modules:check` fails on both mistakes.
944
- - A listener reading signals addressed to an address declares that address (third argument to `usePhiSignalListener`, or `receiver` in its filter). Delivery is gated on the listeners registered per address, so a listener that only compares `signal.receiver` in its body has told the bus nothing and its signals are held forever without a warning. Listening in on an address another listener owns is fine -- registration is per address, not per listener. `pnpm runtime-modules:check` enforces this.
945
- - `condition/reload` is answered by `usePhiRuntimeConditionStateResponder`, which replies to the asker under the asked correlation id. It accepts a getter for state that is not held in React state.
946
- - Listen routes are read-only with respect to the signal graph: they may update local UI/control state, but must not implicitly emit another runtime signal. If relay/automation is needed later, it requires an explicitly approved contract extension.
947
- - Controllers must suppress no-op state changes instead of emitting redundant feedback.
948
- - Context matching is part of routing:
949
- - `page` routes only to instances in the current page composition.
950
- - `area` routes only inside the current site area.
951
- - `region` routes only inside the current region context.
952
- - `site` routes only to the concrete required Core Runtime Controller endpoint `controller:@phis/ui/core:default`; they never target CMS/Region instances or broadcast.
953
- - `cms:<instanceId>[:<subcontrolKey>]` addresses a concrete mounted CMS receiver; the registry resolves widget/layout kind.
954
- - `controller:<npm-package>/<controller-key>:<instance-key>` addresses mounted runtime controller instances in the current context.
955
- - Area module settings persist only optional eligible module ids; the locked base module comes from the Area definition and must not be persisted.
956
- - Concrete multi-instance controller mount descriptors are materialized from the CMS structures that require them, not manually duplicated in an area module selector.
957
- - Shell/area-owned widgets, layouts, and objects materialize controller instances with `mountScope: "area"`.
958
- - Page-owned widgets, layouts, and objects materialize controller instances with `mountScope: "page"` only when the controller's owner module is active for the owning area.
959
- - Runtime plugins may declare required controller instances, but must not mount controller plugins directly; the generic runtime controller host is the only controller mount path.
960
- - A missing or null `receiver` is not connected and must not be treated as broadcast.
961
- - Broadcast must use `receiver: "broadcast"`.
962
- - `slot` is not a public v1 signal scope or receiver family; slot state routes through the owning layout receiver.
963
- - `block:<id>` is not a public v1 wiring address; cached or hidden instances outside the current context must not receive active-context signals.
964
- - Area registries remain isolated: no signal travels laterally from one Area to another. Explicit Area/Page-to-Site-Core routes and Site-Core outputs to concrete receivers in the currently active Area/Page context are the only v1 boundary crossing. Builder Canvas Registry partitions must never reach the live Site endpoint.
965
- - Slot switching and slot-local state must target the owning layout receiver with channels such as `activeSlotIndex` or `activeSlotKey`; do not use `scope: "slot"` or `receiver: "slot:<key>"`.
966
- - Standard renderable-block signal channels are:
967
- - `visibility/change` with canonical values `visible`, `collapsed`, or `hidden`
968
- - `enabled/change` with `valueType: "boolean"`
969
- - `size/change`, `minSize/change`, and `maxSize/change` with `valueType: "size"`
970
- - `background/change` with `valueType: "json"`, `valueSchema: PHI_SIGNAL_VALUE_SCHEMAS.backgroundConfig`, and the shared background config shape
971
- - `border/change` with `valueType: "json"`, `valueSchema: PHI_SIGNAL_VALUE_SCHEMAS.borderConfig`, and the shared border config shape
972
- - `shadow/change` with `valueType: "string"` and one of the semantic shadow ids `none`, `soft`, or `strong`; custom CSS shadows are persisted configuration and are not transported through this string signal
973
- - `zIndex/change` with `valueType: "number"`
974
- - `opacity/change` with `valueType: "number"` and a CSS opacity value from `0` through `1`, defaulting to `1`
975
- - `effects/start`, `effects/stop`, and `effects/clear` for renderer-supported effect state
976
- - `opacity: 0` keeps layout participation; use `visibility` when the block should become hidden or collapsed.
977
- - Top-level block `opacity` and `effects.opacity` are separate settings. `opacity/change` updates the block's base opacity; effect opacity remains part of the effect/animation configuration.
978
- - Widgets emit their native control values. A switch emits booleans, a select emits selected values, and activation controls emit activation without embedding domain-specific values in the control value.
979
- - Plugin capabilities are declared with `runtimeSignals.emits` and `runtimeSignals.listens`; old binding maps are legacy and should not be extended.
980
- - Provider-backed structured tables follow [TABLES.md](./TABLES.md). `PhiTableWidget` owns persisted
981
- presentation, source binding, CMS identity, and standard signal routing. The reusable Core
982
- `PhiTableBinding` owns Provider resolution, normalized query/request state, mutations, and edit
983
- reconciliation; the provider-free `PhiTableControl` renders the resulting controlled view model. A
984
- module-owned Table Provider resource owns row identity, typed field schema, validation, authorization,
985
- queries, and domain mutations. Editable static rows are versioned Provider resources, not a
986
- Widget-specific config or Core identity branch.
987
- - Provider-backed pure hierarchies follow [TREES.md](./TREES.md). `PhiTreeWidget` owns persisted
988
- presentation and source binding, `PhiTreeBinding` owns Provider lifecycle and reconciliation, and the
989
- provider-free `PhiTreeControl` renders the controlled hierarchy. Domain Tree wrappers are forbidden.
990
- - Provider-backed visual collections follow [COLLECTIONS.md](./COLLECTIONS.md). The generic Widget and
991
- Binding own the shared view lifecycle while the selected module Provider supplies domain item and panel
992
- adapters; self-contained filters, toolbar, integrated panels, and pagination are never loose preset
993
- Widgets.
994
- - Layouts and Widgets share the same signal bus, `cms:` receiver family, and renderable-block controls.
995
- - Full widget-level rules live in `components/widgets/README.md`.
996
-
997
- ### Site Core Runtime Controller
998
-
999
- The mandatory Core module mounts exactly one site-owned Core Runtime Controller in the shared application
1000
- Root Layout above all Area layouts at `controller:@phis/ui/core:default`. It has
1001
- `mountScope: "site"`, is not an optional Area selection, and remains mounted during client navigation
1002
- between Areas that share that Root Layout. A deployment with multiple Next.js Root Layouts mounts one
1003
- Core instance per Root Layout lifetime; crossing those roots performs a full page load and starts a new
1004
- client runtime.
1005
-
1006
- The controller is the adapter between already-resolved CMS/Site state and browser-wide runtime effects;
1007
- it is not the source of Theme, Page metadata, Locale, or persistence state. Area layouts remain responsible
1008
- for Area modules, controllers, Shells, Regions, and active Page context. Child Area/Page contexts explicitly
1009
- publish their resolved snapshot to the Core instance when they mount or become active.
1010
-
1011
- Its closed state inputs and mount/context-activation snapshot outputs are:
1012
-
1013
- - `pageTitle/change` with `valueType: "string"`
1014
- - `pageDescription/change` with `valueType: "string"`
1015
- - `openGraphImage/change` with `valueType: "image"`
1016
- - `canonicalUrl/change` with `valueType: "string"`
1017
- - `theme/change` with `valueType: "json"` and a namespaced runtime-theme `valueSchema`
1018
- - `themeMode/change` with `valueType: "boolean"`; `true` selects the live dark projection and `false` the live light projection without persisting Site Theme configuration
1019
- - `locale/change` with `valueType: "string"`, validated against the resolved Site locale set
1020
-
1021
- Optional `pageDescription`, `openGraphImage`, and `canonicalUrl` state additionally declares
1022
- `action: "clear"` with `valueType: "none"`; absence is never encoded as an invalid string/image value.
1023
-
1024
- The controller receives resolved persisted values, applies the effective browser/runtime state, and
1025
- emits the current snapshot when the Site or active Area/Page context mounts. A `PhiPageTitleWidget` or
1026
- another explicit current-context receiver can therefore initialize from the controller without making
1027
- the controller the persistence source. Inputs are idempotent and must not be echoed automatically;
1028
- mount snapshots start a new correlation, while a deliberately correlated apply flow preserves its
1029
- existing correlation id.
1030
-
1031
- The receive-only transient application-service inputs are:
1032
-
1033
- - `notification/activate` with `valueType: "json"` and a closed namespaced notification schema
1034
- - `message/activate` with `valueType: "json"` and a closed namespaced message schema
1035
-
1036
- Both inputs use the same closed `level` vocabulary: `success`, `info`, `warning`, or `error`.
1037
- Their exact values are deliberately small and serializable:
1038
-
1039
- ```ts
1040
- type PhiCoreRuntimeNotificationValue = {
1041
- level: "success" | "info" | "warning" | "error";
1042
- title: string;
1043
- description?: string | null;
1044
- durationSeconds?: number | null;
1045
- placement?: "top" | "topLeft" | "topRight" | "bottom" | "bottomLeft" | "bottomRight" | null;
1046
- showTimeoutProgress?: boolean | null;
1047
- };
1048
-
1049
- type PhiCoreRuntimeMessageValue = {
1050
- level: "success" | "info" | "warning" | "error";
1051
- content: string;
1052
- durationSeconds?: number | null;
1053
- };
1054
- ```
1055
-
1056
- `title` and `content` must be non-empty trimmed text. `description`, when supplied, must also be
1057
- non-empty trimmed text; `durationSeconds` is a finite number greater than or equal to zero. Notification
1058
- `placement` uses only the six application-level viewport positions above, and `showTimeoutProgress`
1059
- controls the visible timeout progress. Unknown fields invalidate the payload. There are no arbitrary
1060
- Ant Design props, React nodes, keys, actions, callbacks, persistence, or state rebroadcasts in this
1061
- contract. Hover pause, stacking, maximum counts, offsets, icons, containers, and RTL are application
1062
- defaults, not per-signal fields. Notification accessibility roles are derived from `level`.
1063
-
1064
- The Root boots one Core-owned application-service adapter directly below the `App` context. It remains
1065
- outside lazy Runtime-Controller projections so application-context updates cannot invalidate controller,
1066
- Provider, or Table lifecycles. Feature code emits these values through `usePhiApplicationFeedback`; it
1067
- never calls Ant Design Message or Notification APIs directly. Builder Canvas partitions cannot address the live Site Core instance;
1068
- Canvas-only diagnostics therefore remain inline Phi Controls or cross the established Builder callback
1069
- boundary.
1070
-
1071
- The explicit Page-context snapshot is `pageMeta/change:json` with the existing namespaced `page-meta`
1072
- schema. It contains `area`, `pageKey`, `pageTitle`, `pageDescription`, `pagePath`, and `pageType`, each
1073
- as a concrete value or `null`. It is emitted only as a Page-scope broadcast from the Core controller into
1074
- the currently active Page partition. It is a projection for current-context receivers, not a persisted
1075
- route, and uses a new correlation id on mount/context activation. Site-state inputs remain targeted,
1076
- idempotent Core inputs; an intentional correlated apply flow retains its correlation id without causing
1077
- an automatic feedback loop.
1078
-
1079
- Those inputs invoke the shared application Notification/Message service and are never persisted or
1080
- emitted as state. Their schemas expose Phi-owned semantic fields only, never arbitrary Ant Design props.
1081
- SSR/Next metadata remains server-resolved for initial HTML and crawlers; runtime metadata signals only
1082
- apply the already-resolved or explicitly changed current browser state. Theme editing/persistence stays
1083
- with the Theme controller, Page metadata persistence stays with the Page/Builder controller, and Locale
1084
- configuration stays with its owning server/Admin flow.
1085
- `locale/change` applies the validated effective runtime locale; it does not modify the Site's available
1086
- or default locale configuration.
1087
-
1088
- `scope: "site"` therefore means one explicit route to the globally mounted site-owned Core Runtime
1089
- Controller, not a general global receiver Registry, Area relay, or Site broadcast. The Core instance may
1090
- persist across Area transitions, but it must not retain or address receivers from an inactive Area/Page.
1091
- Its outputs route only to explicit concrete receivers in the current active Registry context. Builder
1092
- Canvas sandboxes have separate Registry partitions and cannot target the live Site endpoint. Different
1093
- Areas may safely reuse deterministic preset instance ids.
1094
-
1095
- Typical use cases:
1096
-
1097
- - a header action icon refreshes a table widget in the content area
1098
- - a toolbar button toggles a panel or form section
1099
- - a shell control activates a specific stack slot
1100
- - a filter control updates a local widget value and triggers a refetch
1101
-
1102
- This is the target v1 contract. The declarative CMS tree remains the source of truth. The global Core
1103
- mount does not authorize global broadcast, cross-Area relay, module-private buses, or imperative wiring.
1104
-
1105
- ### Runtime modules and area activation
1106
-
1107
- The complete normative Module structure, first-party owner-folder convention, generalization gate, and
1108
- Server/live/Authoring projection contract lives in [MODULES.md](./MODULES.md). The rules below describe
1109
- activation and ownership details within that contract.
1110
-
1111
- The terminology is strict across the Site/server boundary:
1112
-
1113
- - a **Module** is a Site/client extension compiled into a Site application
1114
- - an **Add-on** is a server extension compiled into `@phis/server`
1115
- - **Core** is the built-in `@phis/server` capability provider
1116
-
1117
- Every Module declares exactly one server binding: either Core or exactly one logical Add-on id. A
1118
- Module must not bind to several Add-ons, install or enable an Add-on, or derive server availability
1119
- from client state. One Add-on may serve several Modules only when they intentionally share one
1120
- integration owner and deployment lifecycle. The normative server-side installation, capability,
1121
- routing, Site-enablement, migration, and load-balancing contract lives in
1122
- `phis-server/SERVER_ADDONS.md`.
1123
-
1124
- Module and Add-on entrypoints are physically separate module graphs, whether or not they ship in the
1125
- same package. `@phis/server` never imports a Site/React entrypoint, Site applications never import an
1126
- `addon/` entrypoint, and both sides may share only a neutral, React-free wire-contract package. Missing or incompatible server capabilities are resolved server-side
1127
- and produce a scoped diagnostic plus a deduplicated structured log entry; Module activation never
1128
- installs or auto-enables server code.
1129
-
1130
- When a Module has a direct `@phis/server` counterpart, both halves ship as one package: `@scope/name` is
1131
- the Module, `@scope/name/addon/…` is the Add-on, and the Add-on's logical provider id is `@scope/name`.
1132
- The entrypoint prefix identifies the half, not a different provider.
1133
-
1134
- `PhiRuntimeModuleDefinition.serverBinding` is mandatory metadata:
1135
-
1136
- ```ts
1137
- type PhiRuntimeModuleServerBinding = {
1138
- providerId: `@${string}/${string}`;
1139
- requiredCapabilities: readonly `@${string}/${string}:v${number}`[];
1140
- };
1141
- ```
1142
-
1143
- Capability ids are exact, versioned ABI requirements. During server resolution the Site fetches the
1144
- site-specific capability snapshot from `@phis/server`. A selected Module activates only when its provider
1145
- is available and every required capability is present. An unavailable dependent Module is omitted from
1146
- route, controller, widget, layout, and provider activation while its persisted selection remains intact
1147
- for diagnostics and later recovery. Modules with no server requirements bind explicitly to Core with an
1148
- empty requirement list.
1149
-
1150
- The runtime Module is the Site-side installation, ownership, activation, and lazy-loading boundary. A
1151
- Module is a namespaced, NPM-owned plugin unit identified by `<npm-package>/<module-key>`. It owns at most
1152
- one controller definition plus coordinated Widgets, Layouts, form definitions and handlers,
1153
- data providers, option providers, Calendar adapters, authoring extensions, routes, and other provider
1154
- types explicitly supported by the module contract. A controllerless module must contribute a meaningful
1155
- artifact and omits all Controller fields and loaders. When present, the controller coordinates the
1156
- module's runtime state, data, and signals; it is not itself the selectable module and must not activate one.
1157
-
1158
- Area module settings are the declarative activation surface for optional runtime modules and are
1159
- persisted as `runtimeModules`. Runtime modules must not be selected through hard-coded area-name
1160
- switches. Selecting an optional module id makes that module eligible in the area; it does not eagerly
1161
- load every implementation contributed by the module.
1162
-
1163
- The v1 persisted activation shape is a unique string array of namespaced module ids:
1164
-
1165
- ```ts
1166
- type PhiRuntimeModuleId = `${string}/${string}`;
1167
- type PhiAreaRuntimeModules = readonly PhiRuntimeModuleId[];
1168
- ```
1169
-
1170
- The array is selection only. Controller types, controller instance keys, controller addresses, and
1171
- controller config do not belong in it. The `core` Module and the locked Area base module are omitted.
1172
- Module-specific persisted config is not part of this v1 activation shape and requires a separately
1173
- approved contract if needed.
1174
-
1175
- `moduleId` and controller type are explicit, separate manifest fields even when a first-party module
1176
- currently gives them the same namespaced string. The resolver must not derive either identifier from
1177
- the other: module ids are persistence and activation ABI, while controller types are instance and
1178
- signal-address ABI.
1179
-
1180
- The `core` Module contains the minimal shared CMS runtime and generic Form primitives needed to resolve and
1181
- render content. It is represented by the catalog's single `kind: "platform"` contribution and is never
1182
- selectable or persisted in `runtimeModules`; concrete form-controller instances are created only when a
1183
- resolved CMS tree requires them. Every other contribution is `kind: "module"`: the Area contract locks
1184
- exactly one base module, while optional first-party and third-party modules are activated by their
1185
- namespaced module id.
1186
-
1187
- An installed NPM package may register any number of logical modules, but every module owns exactly one
1188
- controller type. Every contributed Widget, Layout, controller, form/provider definition, data
1189
- provider, option provider, and authoring extension has exactly one `ownerModuleId`.
1190
- The module owner controls availability, definition/loader identity, versioning, and migration
1191
- responsibility. A generic contribution reused by several domains belongs to Core or to its own module;
1192
- it must never have several owners. A controller that needs independent activation, ownership, or
1193
- lifecycle defines another module rather than becoming a second controller inside the first module.
1194
-
1195
- Ownership is separate from dependencies and signaling:
1196
-
1197
- - one widget/layout may declare several required controller types
1198
- - an Area base module is always active; optional eligible modules must be enabled explicitly by the Area policy
1199
- - controller requirements and module dependencies never auto-enable another module
1200
- - one instance may wire signals to any compatible controller, widget, layout, or region without
1201
- changing ownership
1202
- - a module may expose named data providers to generic Core widgets; those providers retain their module
1203
- ownership and are available only while their `ownerModuleId` is active
1204
- - provider metadata and execution are separate: the module definition and Server registry carry only
1205
- serializable descriptors; executable provider Client loaders live only in immutable Area-local Client
1206
- manifests, and the Server host passes demanded provider keys across the Flight boundary
1207
- - Provider execution mode (`static | live`) is independent from Authoring mode (`none | read | edit`);
1208
- `authoringPolicy` is not part of the v1 descriptor ABI
1209
- - provider descriptors declare `kind: "options" | "table" | "collection"`; generic controls filter descriptors by
1210
- kind and executable Clients register only in the corresponding scoped provider context
1211
- - first-party provider-key constants are owner-scoped so importing a Core provider key cannot retain
1212
- Builder or optional-module key catalogs in the Public Client graph
1213
-
1214
- Module activation and controller instance materialization are separate:
1215
-
1216
- - activation happens once for the `core` Module and once per Area-base or selected optional module id
1217
- - one active module exposes at most one controller type and may later materialize zero, one, or many
1218
- concrete instances of that type when present
1219
- - additional instances must not reload the module provider
1220
- - controller instances orchestrate domain state and signals; they must not imperatively import widget,
1221
- layout, form, provider, authoring, or controller registries and must never activate their module
1222
- - area configuration selects module ids, never controller types; each controller-bearing module declares
1223
- whether its controller has the required Site mount, receives a default Area mount, or is materialized
1224
- on demand by CMS-instance requirements
1225
-
1226
- The contribution manifest owns that controller mount policy. `site` is reserved for the `core` Module
1227
- controller mounted once by the shared Root Layout; `area` mounts the module controller's `default`
1228
- instance inside the active Area; `demand` exposes the controller definition but creates instances only
1229
- from CMS requirements. Form uses demand materialization. A second independently mounted controller
1230
- requires a second module rather than another controller entry in the same manifest.
1231
-
1232
- A runtime module contains exactly one lightweight controller definition and may additionally contribute:
1233
-
1234
- - lightweight Widget, Layout, form/provider, and authoring definitions
1235
- - lazy live-runtime widget and layout loaders
1236
- - one module-owned controller Client boundary referenced by that module manifest
1237
- - lazy form renderers, field types, validators, and submit/confirm/preview handlers
1238
- - serializable `formProviders` metadata for namespaced field types, validation rules, and handlers;
1239
- executable providers are composed explicitly and are never registered through import side effects
1240
- - serializable module-owned provider descriptors plus matching live Provider Client loaders
1241
- - a serializable controller descriptor including `runtimeSignals`; Builder may catalog endpoint
1242
- capabilities from it without importing or mounting the controller implementation
1243
- - concrete demand-controller settings remain the result of the owning widget plugin's executable
1244
- `requiredRuntimeControllers` resolver. Canvas evaluates that resolver only inside the active module's
1245
- authoring Client boundary, exposes only the resulting serializable settings to Wiring, and never
1246
- reconstructs a controller instance from a persisted route receiver
1247
- - optional static authoring Provider Client loaders; DB/API/store/subscription-backed providers remain live-only
1248
- - one optional lazy module UI provider for package-owned theme, context, CSS, and portal integration
1249
- - lazy preview/editor/tool loaders for authoring modes
1250
- - optional route or other package-owned runtime contributions when their existing registry contracts
1251
- allow them
1252
-
1253
- Widget and layout descriptors carry their complete lightweight definition directly. The Builder derives
1254
- serializable metadata from those definitions. For layouts, the definition itself is serializable and is
1255
- the single source for variants, fields, slots, signals, anchors, and layout defaults; lazy
1256
- implementation plugins reuse it and add only parsers, serializers, and renderers. Builder Picker and
1257
- Inspector metadata is built from the exact resolved Canvas module set and never from a global
1258
- first-party widget/layout implementation registry.
1259
-
1260
- Every installed catalog entry directly declares its complete lightweight widget/layout definitions and
1261
- their lazy Server loaders. The catalog derives namespaced ownership from these entries and validates it
1262
- globally without invoking executable module loaders. There is no parallel ownership list or duplicate
1263
- widget/layout array in the executable module object; inactive catalog entries remain diagnostic metadata
1264
- and do not become renderable.
1265
-
1266
- #### Module UI provider boundary
1267
-
1268
- A module may use Ant Design, Material UI, Radix, another component library, or package-owned controls
1269
- internally. The component library is not part of the cross-module ABI. All public module controls still
1270
- implement the standard Phi config, render-mode, control, capability, value-type, route, renderable-block,
1271
- and authoring-scaffold contracts, and communicate with their module controller and other instances only
1272
- through the standard Phi signal bus.
1273
-
1274
- When a UI library needs React context, theme state, a CSS cache, locale setup, or a popup/portal root,
1275
- the module may declare one lazy client UI provider. The runtime host mounts that provider only around
1276
- the active module's owned render subtree; the Builder mounts the same boundary inside the target-area
1277
- Canvas sandbox for preview and authoring output. Loading the provider does not activate the module and
1278
- must not eagerly load module implementations that are not demanded by the current tree and render mode.
1279
-
1280
- The provider boundary is isolated:
1281
-
1282
- - it must not wrap the application root or another module's subtree
1283
- - it must not install another signal bus, controller registry, renderer, or fallback path
1284
- - module-private React context is not a cross-module communication contract
1285
- - CSS resets, generated styles, variables, and theme tokens must be scoped to the module root
1286
- - popup, menu, tooltip, dialog, and other portal containers must stay inside the module root or Canvas
1287
- sandbox rather than escaping to an unowned global container
1288
- - provider and portal state is disposed when the module subtree or sandbox unmounts
1289
-
1290
- Different UI-library modules may coexist in one area. Their interoperability comes from Phi signals
1291
- and shared value contracts, never from importing each other's contexts or component-library state.
1292
-
1293
- The initial first-party ownership modules are:
1294
-
1295
- - `@phis/ui/runtime` for the transitional generic widget/layout catalog while signal/runtime
1296
- infrastructure and generic Form orchestration move to the `core` Module
1297
- - `@phis/ui/public` for the Public Area baseline and Contact form domain
1298
- - `@phis/ui/auth` for the optional Login/Registration/Confirmation/Reset domain in Public and the
1299
- Site Auth settings contribution in Admin
1300
- - `@phis/ui/builder` for Canvas, Workspace, Inspector, Fields, Wiring, and other
1301
- Builder-owned widgets
1302
- - `@phis/ui/dashboard` for Area-specific Dashboard routes and projection orchestration
1303
- - `@phis/ui/localization` for locale and translation administration
1304
- - `@phis/ui/observability` for site-runtime log administration
1305
- - `@phis/ui/user-management` for user, invite, role, and permission administration
1306
- - `@phis/ui/revisions` for revision history, restore/delete management, and Revisions widgets
1307
- - `@phis/ui/theme` for Theme and Brand behavior
1308
- - `@phis/ui/asset` for Media, Upload, Picker, and asset data
1309
- - `@phis/ui/admin` for the locked Admin shell, navigation surface, root route, and Admin settings
1310
- - `@phis/ui/editor` for content/translation editor functionality
1311
- - `@phis/support/core` for the separately packaged Support Inbox domain; it is an optional Site Module,
1312
- not a fixed Area, and binds to the Core `threads:v1`, `resource-links:v1`, and `support:v1`
1313
- capabilities
1314
-
1315
- Future domains such as News use their own module rather than joining Admin or Core.
1316
-
1317
- Definitions and loader descriptors must not import their implementation modules. Installed NPM
1318
- packages register their loader descriptors at build time; a package name read from the DB must never be
1319
- passed directly to an unrestricted dynamic `import()`.
1320
-
1321
- Resolution uses two mandatory gates:
1322
-
1323
- 1. Catalog metadata marks the module required, the centralized area policy locks the optional module
1324
- for that area, or the owning area enables the optional module id, making that module eligible.
1325
- 2. The resolved shell/page tree and current runtime mode require a concrete type from that provider.
1326
-
1327
- Area-locked module policy is resolved identically on the server and client. The Builder module is
1328
- locked for the Builder area: it is always active, selected, persisted on the next save, and disabled in
1329
- the module selector there, while it remains optional for every other area. Canvas resolution applies
1330
- the policy of the edited target area, not the outer Builder area.
1331
-
1332
- Only after both gates pass may the host load the implementation. The host collects distinct required
1333
- types first, loads them in parallel, and caches loader promises by provider/type/mode. Supported runtime
1334
- modes are conceptually separate even when one route uses several of them:
1335
-
1336
- - `runtime` for normal live rendering
1337
- - `preview` for non-authoring previews
1338
- - `authoring` for widget/layout editor renderers and inline tools
1339
- - `workspace` for Canvas, Inspector, and other authoring infrastructure
1340
-
1341
- `runtime` means normal mounted rendering in any area; it is not synonymous with Pub. A Builder Canvas
1342
- widget rendered normally in Editor still uses `runtime` when Editor explicitly enables the Builder
1343
- module. `preview` and `authoring` describe how that widget is represented inside an
1344
- authoring host.
1345
-
1346
- Every placeable widget and layout must declare an explicit policy for `runtime`, `preview`, and
1347
- `authoring`:
1348
-
1349
- - `runtime: custom` uses its normal implementation loader
1350
- - `preview` is exactly one of `custom`, `runtimeReadOnly`, `visualSkeleton`, or `visualPlaceholder`
1351
- - `authoring` is exactly one of `custom` or `usePreview`
1352
-
1353
- Unsupported/missing behavior is not an implicit fallback. Headless non-placeable components may omit
1354
- visual policies; placeable components may not. A generic visual placeholder or `authoring: usePreview`
1355
- is valid only when declared by the definition.
1356
-
1357
- Canvas, selection, hover, DnD, Wiring, Effects, Inspector launch, and common toolbar chrome belong to
1358
- the shared Authoring/Builder scaffold. Widget/layout modules may contribute specialized editor bodies,
1359
- inline authoring, editor tools, or declared overlay layers, but they must not ship another scaffold.
1360
- Widget-specific editor tools request config patches through the Builder-owned authoring context; they
1361
- never mount or communicate through the target Area controller. The Canvas applies those patches and
1362
- owns history plus signal-route lifecycle. Dynamic subcontrols are described declaratively by their
1363
- widget definition so endpoint resolution remains plugin-generic.
1364
- The Canvas Runtime-emission boundary stays disabled even while an inline authoring body is active.
1365
- Editable bodies persist each config change through `authoring.updateConfig()` and must not introduce a
1366
- signal-to-draft bridge or a broadcast flush protocol. Structural insert, delete, and move operations
1367
- remain central scaffold mutations rather than widget Runtime signals.
1368
- Demand-driven controller endpoint discovery follows the same boundary: the loaded authoring widget
1369
- plugin evaluates the concrete CMS instance against the current Canvas tree, while the Builder catalogs
1370
- the result only for its active page/area ownership context. This discovery does not mount the target
1371
- controller or enable its module.
1372
-
1373
- Workspace widgets are a special visual policy, not an exception. For example, a Builder Shell Canvas
1374
- widget uses its real interactive Canvas in `runtime`, a read-only region/layout skeleton in `preview`,
1375
- and explicitly reuses that skeleton inside the shared scaffold in `authoring`. The skeleton respects
1376
- the configured widget size and structure but must not mount controllers, emit signals, mutate drafts,
1377
- start DnD, fetch workspace data, or recursively render another interactive Canvas.
1378
-
1379
- #### Builder Canvas module sandbox
1380
-
1381
- Builder Pages and Shells canvases are isolated module sandboxes. The outer Builder area resolves and
1382
- mounts its own modules and controllers. Each Canvas independently resolves the exact module set of the
1383
- currently edited target area:
1384
-
1385
- - the `core` Module plus the target Area's locked base module
1386
- - centralized modules locked for the target Area
1387
- - optional module ids selected by the target Area's `runtimeModules`
1388
- - only the widget, layout, controller, form/provider, and authoring implementations demanded by the
1389
- target tree and current Canvas render mode
1390
-
1391
- The Canvas must not inherit, union, or progressively accumulate the outer Builder area's active module
1392
- registry. Switching the target area replaces the sandbox's active registry and unmounts its isolated
1393
- runtime context. Loader promises and downloaded chunks may remain cached, but cached code is not active
1394
- unless it belongs to the new target module set.
1395
-
1396
- The Builder controller owns target-area selection and may trigger the server refresh that rebuilds the
1397
- sandbox. It must not import modules or widen registries itself. Module resolution remains server-owned,
1398
- catalog-driven, and scoped to the Canvas. Target-area controllers are never mounted in the authoring
1399
- Canvas: target modules provide definitions, capabilities, and lazy authoring implementations, while
1400
- live controller/data/signaling behavior starts only in live runtime.
1401
-
1402
- An unavailable type, inactive owner module, missing renderer, failed loader, or failed node renderer is
1403
- a visible node-local Canvas contract error. The affected widget/layout renders the shared
1404
- `not renderable` diagnostic block and writes a structured diagnostic warning. `missing-module` does not
1405
- raise an additional notification; other renderer failures may raise one deduplicated notification.
1406
- The diagnostic block must not crash the complete Canvas. This diagnostic is not a substitute renderer:
1407
- the sandbox must
1408
- not borrow the corresponding implementation from the Builder registry and must not retain a module
1409
- from the previously edited area. Invalid module manifests, duplicate ownership, and invalid area module
1410
- selection remain hard ABI errors before node rendering begins.
1411
-
1412
- Area eligibility is a server-enforced activation policy, separate from module ownership. Builder,
1413
- Theme, Admin, and Editor are area-exclusive first-party modules: each may be selected only in its
1414
- matching Area, and Builder is locked there. Cross-area domain modules such as Ticket, News, Asset,
1415
- and future site modules remain optional per eligible Area unless an explicit site policy restricts
1416
- them. This keeps internal workspace widgets out of Public while preserving per-Area domain composition.
1417
-
1418
- `PhiCmsSiteBridge` exposes the build-time catalog of installed, statically analyzable provider loaders;
1419
- it cannot contain request-resolved registries because area policy and tree demand are not known when the
1420
- site bridge is created. Every filesystem Area host supplies an immutable server-safe catalog containing
1421
- exactly the modules eligible for that route Area. Builder contains the target-Area union required by
1422
- Canvas, but that union does not activate Admin, Editor, or other target modules in the outer Builder
1423
- runtime. The catalog does not encode an Area's current selection. For every Area, the request resolves
1424
- exactly the Area's locked base module and that Area's persisted optional
1425
- `runtimeModules` after applying area eligibility.
1426
- The request/runtime host resolves the selected providers and concrete
1427
- implementations, and the renderer receives those completely resolved active registries. It must not
1428
- import a global default/internal registry, silently widen the eligible provider set, or use a fallback
1429
- renderer to hide a missing provider. A tree that references a type outside the activated providers
1430
- remains visible through the shared node-local diagnostic instead of terminating the complete tree.
1431
-
1432
- Lazy-loader boundaries must follow the framework execution graph:
1433
-
1434
- - server module/widget/layout implementations use native, statically analyzable `import()` loader
1435
- functions and are collected before being awaited in parallel
1436
- - server module manifests contain no Client component reference. The Server host passes only active module
1437
- ids plus serializable controller setting, runtime context, and preload data to the generic Client-owned
1438
- module host
1439
- - the `phis-cli`-generated external build projection injects one immutable Controller Client loader
1440
- manifest per route Area. The generic
1441
- live host resolves only active ids through that Area manifest and performs Client-side `React.lazy`
1442
- imports. Every live Area manifest contains exactly its own locked base loader and the loaders eligible for that
1443
- Area; it contains no other Area's base loader or Authoring edge. Inactive module implementation trees remain
1444
- unreachable from the request
1445
- - Canvas receives a separate immutable Authoring Client manifest. Only the Builder provider imports it,
1446
- and its entries form the complete target-Area module union so the isolated sandbox can manifest Public,
1447
- Admin, Editor, Theme, and Builder modules without widening any live Area graph
1448
- - every eligible Module package exports paired immutable Server and Controller Client Area projections
1449
- sharing one `moduleId`; `phis-cli` validates and composes them without patching Skeleton source. The
1450
- Server projection contains the catalog entry; the
1451
- Controller Client projection contains only its `Controller`, made with `next/dynamic`. They validate as a 1:1
1452
- Area pair. Builder additionally declares the complete Authoring Client projection with one
1453
- `loadAuthoring` edge per installed target-Area module. Missing, extra, or duplicate projections are hard
1454
- build-time contract errors; no route may silently widen its graph
1455
- - each live Area boundary also injects one immutable Data Provider Client manifest containing only provider
1456
- loaders owned by modules eligible for that Area. Server renderers pass only demanded provider keys; the
1457
- Client host resolves those keys through `React.lazy`, so inactive provider implementation chunks are not
1458
- part of the initial route payload. Missing or duplicate provider loaders are hard contract errors
1459
- - the Builder Data Provider Client manifest additionally contains the `loadAuthoring` edges for every
1460
- provider whose `authoringMode` permits `read` or `edit`. Canvas passes only demanded keys;
1461
- live-only provider implementations remain unavailable in authoring
1462
- - third-party packages export their Server catalog entry, Controller Client Area contribution, and
1463
- Authoring Client contribution, while `phis-cli` composes installed eligible Areas and the Builder
1464
- sandbox union in immutable external build state. A package cannot enable itself for an Area, request a
1465
- package name from persisted data,
1466
- or mutate a global registry. Third-party modules build their authoring boundary through
1467
- `@phis/ui/runtime/authoring-client`; no first-party module switch or parallel authoring registry
1468
- participates in Canvas resolution
1469
- - client preview/editor/tool implementations use top-level `next/dynamic` or `React.lazy` declarations
1470
- inside Client Component boundaries, with explicit Suspense/loading presentation where needed
1471
- - a Server Component must not dynamically import a Client Component under the assumption that this
1472
- automatically creates a client split
1473
- - loader promises are cached by module/type/mode, and lazy declarations must never be created during a
1474
- component render
1475
- - broad barrels and `optimizePackageImports` are not substitutes for the provider boundary; static
1476
- arrays that eagerly import every implementation remain broad even when named imports are optimized
1477
-
1478
- The intended resolution sequence is:
1479
-
1480
- 1. Resolve the installed module catalog and the area's optional `runtimeModules` policy.
1481
- 2. Activate the `core` Module, the Area's locked base module, and the selected optional module ids.
1482
- 3. Resolve shell/page structures and materialize the required controller-instance descriptors.
1483
- 4. Collect the distinct widget, layout, controller, and authoring types needed for the current runtime
1484
- modes.
1485
- 5. Load the corresponding implementations in parallel.
1486
- 6. Mount controller instances through the generic runtime controller host and render through the
1487
- resolved registries.
1488
-
1489
- This contract keeps optional code modular without coupling cross-area domain modules to `/builder`,
1490
- `/admin`, or another fixed route. Package-owned Area contributions and the generated build projection
1491
- define build-time eligibility, persisted `runtimeModules` select within that eligible catalog, and actual
1492
- implementation loading follows the active module set and tree demand. A Module that must become
1493
- selectable in another Area publishes the matching Area contribution and requires a regenerated build
1494
- projection; it never patches a Skeleton route. Request data must never widen the build graph implicitly.
1495
-
1496
- ### Form registry contract
1497
-
1498
- Shared forms are a separate domain from widgets and layouts.
1499
-
1500
- - `WidgetRegistry` owns chrome, flow, and interactive wrapper behavior.
1501
- - `LayoutRegistry` owns slot and structure behavior.
1502
- - `FormRegistry` owns versioned descriptors, submit semantics, and versioning.
1503
-
1504
- Preset Forms are explicit `forms` entries on their owner Runtime Module's Server Area contribution.
1505
- The active target-Area module set is the only preset catalog; there is no global registry, mutable
1506
- registration, or import-side-effect discovery. Code presets are the package-published baseline and the
1507
- DB-backed registry may store a Site-scoped Published override for the same active namespaced `formId`.
1508
- Form work is split into three independent contracts:
1509
-
1510
- - `submit`
1511
- - where the form writes
1512
- - selects a server-resolved active module-owned handler Provider
1513
- - `read`
1514
- - where the form loads preview, guard, or lookup data
1515
- - uses the shared data-source contract
1516
- - `mutation`
1517
- - where state changes happen outside form submit
1518
- - uses a separate write descriptor contract
1519
- - does not use read cache settings because Next.js only caches GET reads
1520
- - `translation`
1521
- - where labels and free text are resolved
1522
- - uses `tr` / `trBulk` plus label-set helpers
1523
-
1524
- The resolver order is:
1525
-
1526
- - try the site DB form first
1527
- - fall back to the active module-owned package preset if no DB override exists
1528
- - if both exist, the DB form wins as the site-specific override layer
1529
-
1530
- Form plugins follow a server-wrapper/client-inner split:
1531
-
1532
- - the server wrapper loads runtime data and collects translation keys
1533
- - the wrapper uses `trBulk` with a plugin-defined `sourceLocale`
1534
- - the client inner renders the actual form UI
1535
- - forms with a token-driven bootstrap step, such as confirm flows, may expose an additional preview/bootstrap phase before the submit phase; that preview state still belongs to the form contract, not to the widget shell
1536
- - the form plugin itself must expose a clear implementation contract for 3rd-party authors
1537
-
1538
- Module-owned preset definition:
1539
-
1540
- - `ownerModuleId`
1541
- - `formId` in the `<npm-package>/forms/<form-key>` shape
1542
- - `version`, `flags`, `title`, optional `description`, `category`, and `tags`
1543
- - one atomic versioned `descriptor` whose `key` equals `formId`
1544
- - `submitHandlerKey`
1545
- - `confirmHandlerKey` optional
1546
- - `previewHandlerKey` optional
1547
- - `previewUpstreamPath` optional
1548
- - `defaultConfig` optional
1549
- - `variant` and runtime `config` optional
1550
- - optional server `render` callback for domain orchestration around the same descriptor
1551
- - optional server `loadLabels` callback for a namespaced label set
1552
-
1553
- Definitions are created with `definePhiRuntimeModuleForm(...)` and contributed through
1554
- `catalogEntry.forms`. The package namespace in `formId` must match the owner module package. Bare ids,
1555
- numeric preset ids, and `pluginKey/typeKey` Form identity are not part of the v1 ABI. The complete
1556
- third-party guide is
1557
- [`components/forms/PRESET_FORMS_HOWTO.md`](./components/forms/PRESET_FORMS_HOWTO.md).
1558
-
1559
- Resolver primitive:
1560
-
1561
- - `resolvePhiFormDefinition({ presetDefinition, overrideDefinition })`
1562
- - returns the effective definition, the resolved source, and a render target key
1563
- - when both preset and override exist, the override wins
1564
- - config objects are merged, not replaced wholesale, so site overrides can tweak preset forms without cloning them
1565
-
1566
- Form controller split:
1567
-
1568
- - Runtime forms, form authoring, and Builder inspector forms are separate controller domains.
1569
- - Runtime form execution uses the generic multi-instance form controller:
1570
- - `controller:@phis/ui/form:<instance-key>`
1571
- - It owns runtime form values, field changes, validation state, touched state, dirty state, submitting state, submit, confirm, reset, clear, result, and error signaling.
1572
- - It executes a resolved form definition through the submit/preview/guard descriptor contracts.
1573
- - It may be reused by third-party forms when their lifecycle follows the standard runtime form lifecycle.
1574
- - Generic Form primitives and orchestration belong to the `core` Module and are not selected through
1575
- `runtimeModules`. Concrete form-controller instances are materialized only from forms used in the CMS tree.
1576
- - A shell-owned form widget materializes an area-scoped form controller instance.
1577
- - A page-owned form widget materializes a page-scoped form controller instance.
1578
- - The form widget sends to the materialized controller address, but it must not mount the controller itself.
1579
- - `form:default` may exist as a convenience instance, but it is not the fundamental model and must not replace per-form instances when independent state is required.
1580
- - The runtime form controller address must not include a handler key.
1581
- - Handler selection belongs to the resolved Form definition through `submitHandlerKey`,
1582
- `confirmHandlerKey`, or `previewHandlerKey`. Transport, target, CSRF, and credential metadata belong
1583
- to the selected immutable server-side handler Provider, never Form instance config.
1584
- - Changing the handler must not change the stable signal address or break existing wiring.
1585
- - Form authoring uses a separate Form Builder module with one form-builder controller:
1586
- - `controller:@phis/ui/form-builder:default`
1587
- - It owns editing form definitions, adding/removing/reordering fields, selecting registered field types, selecting handlers, configuring validation rules, previewing definitions, and saving form definition changes.
1588
- - It operates on form definitions, not on public runtime form submissions.
1589
- - The module is optional, client-only, Area-mounted, and deferred to P2. Until its canvas and request
1590
- contract are implemented, its headless controller declares no save/publish capabilities.
1591
- - Builder inspector forms belong to the Builder module and its single controller:
1592
- - `controller:@phis/ui/builder:default`
1593
- - It owns Layout, Widget, Region, and object setting forms, Inspector field changes, and
1594
- signal-route table sessions.
1595
- - Inspector section Widgets and services are internal Builder contributions, not a separately
1596
- selectable module or a second controller lifecycle.
1597
- - It must not reuse the public runtime form controller for CMS node configuration.
1598
- - Media inspector and media toolbar flows remain Asset controller responsibilities, not form controller responsibilities.
1599
- - Third-party form support is registry-driven:
1600
- - third-party packages provide Form definitions through explicit module catalog entries and expose field,
1601
- validation, and submit/preview/confirm handler descriptors through their module definition
1602
- - the generic runtime form controller can execute those forms when they use the standard lifecycle
1603
- - third-party packages add a custom module with its own controller only for a genuinely different lifecycle such as checkout, payment, document signing, a server-state wizard, or a complex configurator
1604
- - Form provider metadata is part of the module manifest:
1605
- - field type, validation, and handler keys are namespaced `<npm-package>/<provider-key>` values
1606
- - every provider declares exactly one `ownerModuleId`; catalog construction rejects duplicates and owner mismatches
1607
- - the active module resolver exposes only the active modules' provider descriptors
1608
- - executable field and validation providers are explicitly composed registries; global mutable or import-side-effect provider registration is forbidden
1609
- - The form picker and Builder UI must read available forms and handlers from registries, not from hardcoded first-party lists.
1610
-
1611
- Site-side registry resolution:
1612
-
1613
- - `fetchFormRegistry({ apiBaseUrl, internalToken, siteKey })`
1614
- - `getResolvedFormDefinition({ ..., formId, presetDefinitions })`
1615
- - `listResolvedFormDefinitions({ ..., presetDefinitions })`
1616
- - callers pass the active Area's module-owned preset definitions explicitly
1617
- - runtime resolution reads only Published DB overrides and falls back to an active package preset
1618
- - site-side consumers should use the resolved registry helper instead of talking to the raw DB registry directly
1619
-
1620
- Database form record shape:
1621
-
1622
- - `site_id`
1623
- - `owner_module_id`
1624
- - `form_id`
1625
- - `version`
1626
- - `status` (`0` Working Draft, `1` Published, `2` archived Published)
1627
- - `flags`
1628
- - `descriptor`
1629
- - `submit_handler_key`
1630
- - `confirm_handler_key` optional
1631
- - `default_config`
1632
- - `config`
1633
-
1634
- Form-specific rendering contract:
1635
-
1636
- - The normative serializable descriptor shape, responsive 24-unit grid, logical RTL placement,
1637
- label-set references, provider boundary, authoring controls, and signal ownership are defined in
1638
- [`components/forms/README.md`](./components/forms/README.md#descriptor-and-provider-contract).
1639
- - `PhiFormWidget` is the generic CMS/runtime host and delegates controlled presentation and validation to
1640
- `PhiFormControl`.
1641
- - It should receive `formId` plus optional visual `version` and `variant` selection. Submit target, method,
1642
- CSRF, and credential policy are never Widget or frame overrides.
1643
- - The widget should resolve the form through the registry and render the appropriate client/server split for that definition.
1644
- - Module-owned package presets have no synthetic DB id and remain the code fallback.
1645
- - Forms that need token preview or bootstrap data, such as confirm flows, should resolve that preview state through the Form Control contract instead of branching in the widget shell.
1646
- - Every Form uses `PhiFormControl`. Optional code wrappers may orchestrate guard, bootstrap, success,
1647
- error, and domain-specific flow around that descriptor, but cannot define another field tree. Form field
1648
- providers compose only Phi Controls and never Widgets, Layouts, or direct Ant Design primitives.
1649
- - Visible submit/reset/cancel actions are ordinary Phi Button Widgets outside the Form. They reach the
1650
- concrete Form through the owning Controller's declared routes; the Form descriptor has no action row.
1651
- - `formKind`, rendered fallbacks, and hybrid modes are not part of the v1 ABI.
1652
-
1653
- Submit dispatch contract:
1654
-
1655
- - `submitHandlerKey`
1656
- - stable logical handler name such as `auth.login`, `account.email.change`, `forms.contact`, or `site.form.submit`
1657
- - `previewHandlerKey`
1658
- - stable logical preview/bootstrap handler name such as `auth.confirm.preview`
1659
- - `category`
1660
- - coarse dispatch scope such as `auth`, `account`, `forms`, or `site`
1661
- - `route target`
1662
- - the actual execution endpoint selected from the active module-owned handler Provider by the Site gateway
1663
- - examples:
1664
- - `phis-server:/api/auth/route.ts`
1665
- - `phis-server:/api/account/route.ts`
1666
- - `phis-server:/api/forms/route.ts`
1667
- - `site:/api/site/forms/route.ts`
1668
-
1669
- The Site gateway resolves the Published Form from the active target-Area module catalog, resolves its
1670
- handler key to the immutable active module-owned handler Provider, and only then maps the Provider's
1671
- category to the concrete target. A Form revision or Client request never chooses the target.
1672
-
1673
- Submit dispatcher contract:
1674
-
1675
- - the browser must never call `@phis/server` directly
1676
- - the browser talks only to a site-local dispatcher or server action
1677
- - the Browser sends only `formId`, the closed phase (`submit` or `confirm`), and validated values to a thin
1678
- Site route such as `/api/site/forms`
1679
- - the dispatcher resolves the Published Form and handler Provider on the Server and constructs all
1680
- execution metadata from that immutable Provider
1681
- - `phis-ui` may help resolve the descriptor, but it does not execute the submit itself
1682
- - the site dispatcher may be implemented as:
1683
- - a route handler
1684
- - a server action
1685
- - a small relay wrapper that forwards to a category-specific target
1686
- - the handler Provider owns `handlerKey`, phase, category, transport, method, canonical `upstreamPath` or
1687
- `endpointKey`, CSRF metadata, and the mandatory closed `credentialPolicy`
1688
- - `credentialPolicy` is exactly `none`, `site-session`, or Core-only `auth-link`; a future mode requires
1689
- operator-approved contract work
1690
- - `none` is for anonymous Site-scoped handlers and forwards no Browser cookie, while preserving trusted
1691
- Site/internal gateway identity and endpoint validation; `site-session` forwards only `phis_session`, and
1692
- the endpoint still decides whether the session and a particular role are required
1693
- - Client payload, Form config, Site override, Widget config, and signals cannot select execution metadata,
1694
- name a cookie, or grant authorization
1695
- - Translation payloads stay out of the data-source contract and the submit contract.
1696
- - the dispatcher then chooses one of the category targets:
1697
- - `phis-server:/api/auth/route.ts`
1698
- - `phis-server:/api/account/route.ts`
1699
- - `phis-server:/api/forms/route.ts`
1700
- - `site:/api/site/forms/route.ts`
1701
- - no single global submit route should own every form flow
1702
- - Persisted forms should be site-scoped and plugin-scoped, with positive IDs and flags for stateful control.
1703
- - Shared preset Forms select registered handler keys. Immutable handler Providers keep upstream targets,
1704
- CSRF, and credential policy declarative without placing security metadata in editable Form config.
1705
-
1706
- Recommended initial shared form IDs:
1707
-
1708
- - `login`
1709
- - `registration`
1710
- - `contact`
1711
- - `confirm`
1712
- - `reset-password`
1713
-
1714
- Planned later form IDs:
1715
-
1716
- - `profile`
1717
- - `email-change`
1718
- - `password-change`
1719
- - `address`
1720
-
1721
- This contract keeps the form domain editor-friendly and plugin-friendly without turning widgets or layouts into a special-case form system.
1722
-
1723
- ### Shell and region rules
1724
-
1725
- - Shared shells orchestrate regions and own placement for all stable shell slots.
1726
- - Stable outer regions should belong to the area layout contract, not to each page by default.
1727
- - Page-owned payload for `hero`, `header_bottom`, `sider_right`, `footer_top`, and `content` should resolve into explicit shell placeholders instead of creating a second inner shell topology inside the page stack.
1728
- - Regions define stable named areas such as `brand`, `navigation`, and `actions`.
1729
- - Page content flows from site `page.tsx` into the explicit shell-mounted `content` slot of the shared CMS shell.
1730
- - Pages may contribute additional widgets into explicitly allowed slots of area-owned regions, but they should not own or replace those regions.
1731
- - Initial route/region loading strategy should usually be handled above widgets and modals with `loading.tsx` and `Suspense` boundaries at shell/region/page level.
1732
- - Widget and modal loading states should focus on user-triggered interaction such as submit, pending, success, and error states.
1733
-
1734
- ## Public package surface
1735
-
1736
- The preferred public import style is grouped by namespace:
1737
-
1738
- ```ts
1739
- import { PhiCmsShell, PhiRootLayout } from "@phis/ui/shells";
1740
- import { PhiCmsRootLayout } from "@phis/ui/cms/root-layout";
1741
- import { PhiCmsRootPage } from "@phis/ui/cms/root-page";
1742
- import { PHI_FIRST_PARTY_RUNTIME_MODULE_CATALOG } from "@phis/ui/cms/plugins";
1743
- import { PhiLink } from "@phis/ui/navigation";
1744
- import { ContactForm } from "@phis/ui/forms";
1745
- import { PhiBaseRole } from "@phis/ui/constants";
1746
- import { hasPhiFlag, buildApiUrl } from "@phis/ui/helpers";
1747
- import { phiRuntime, tr } from "@phis/ui/server-helpers";
1748
- import { buildPhiAuthProxyHandlers } from "@phis/ui/gateway";
1749
- ```
1750
-
1751
- For CMS-driven sites, use the narrow `@phis/ui/cms/*` entry matching the App Router boundary.
1752
- Use the aggregate `@phis/ui/cms` entry only when a module intentionally needs the complete CMS
1753
- API. Internal package source must always import leaf modules directly rather than importing a package
1754
- barrel.
1755
-
1756
- Current public namespaces:
1757
-
1758
- - `@phis/ui/widgets`
1759
- - `@phis/ui/forms`
1760
- - `@phis/ui/shells`
1761
- - `@phis/ui/layouts`
1762
- - `@phis/ui/navigation`
1763
- - `@phis/ui/theme`
1764
- - `@phis/ui/constants`
1765
- - `@phis/ui/helpers`
1766
- - `@phis/ui/server-helpers`
1767
- - `@phis/ui/net`
1768
- - `@phis/ui/gateway`
1769
- - `@phis/ui/modals`
1770
-
1771
- The root package export is not the preferred integration surface.
1772
-
1773
- For CMS-driven rendering specifically:
1774
-
1775
- - prefer plugin registries and `PhiCmsSiteBridge`
1776
- - do not treat raw `Phi*Widget` or `Phi*Layout` components as the stable CMS API
1777
- - internal shell/region helpers may exist outside the plugin system, but they are implementation details and must use non-`Phi` internal names
1778
-
1779
- ## Translation contract
1780
-
1781
- Use the shared public server-only translation helpers directly:
1782
-
1783
- - `tr(msg, params?, ctx?)`
1784
- - `tr(msg, params?, ctx?, format?)`
1785
- - `trBulk(msgs, ctx?, format?)`
1786
- - `trForLocale(locale, msg, params?, ctx?, format?)`
1787
- - `trGlobal(msg, params?, ctx?, format?)`
1788
- - `trGlobalBulk(msgs, ctx?, format?)`
1789
- - `trGlobalForLocale(locale, msg, params?, ctx?, format?)`
1790
- - `trBulkForLocale(locale, msgs, ctx?, format?)`
1791
- - `trGlobalBulkForLocale(locale, msgs, ctx?, format?)`
1792
-
1793
- Use `phiRuntime()` only when you need runtime metadata itself, for example:
1794
-
1795
- - `const rt = phiRuntime()`
1796
- - `rt.siteKey`
1797
- - `rt.locale`
1798
- - `rt.apiBaseUrl`
1799
- - `rt.internalToken`
1800
- - `await rt.fetchSiteLocaleConfig()`
1801
-
1802
- Rules:
1803
-
1804
- - free translation helpers read from the request-scoped runtime set by shared CMS root rendering
1805
- - `phiRuntime()` without arguments reads that same request-scoped runtime
1806
- - `ctx` is empty by default for normal free text.
1807
- - Set `ctx` only when semantic conflicts require it.
1808
- - `format` defaults to `text`.
1809
- - Use `format = "html"` only when the source string is intentional translatable HTML markup.
1810
- - Site-scoped `tr`/`trBulk` calls do not carry Site source-language policy through widget runtime. `@phis/server` derives the immutable Site `sourceLocale` from the Site context.
1811
- - Global Phi Core/package/preset source text is `en` and never inherits a Site locale. The Site `defaultLocale` must never be substituted for it.
1812
- - `defaultLocale` is only the final request-locale fallback and is not part of the general widget runtime contract. Locale settings obtain it from their dedicated Admin endpoint.
1813
- - Dynamic values must not be part of the string sent to `tr`, `trGlobal`, `trBulk`, or label-set translation. This includes first names, last names, usernames, email addresses, company names, customer numbers, site names, URLs, and similar profile/business data.
1814
- - If a translated sentence needs dynamic values, the source text must use positional placeholders and apply the values after translation. The canonical placeholder format is `%1`, `%2`, ...; for example `Login history for %1`.
1815
- - Label sets are static UI copy only. They may expose placeholder templates such as `Edit user %1`, but must never be built from resolved user/profile/company/email data.
1816
- - Client components must format already-translated placeholder templates locally instead of concatenating translated labels with dynamic values.
1817
- - Shared widgets and layouts should load their own dedicated label-set loaders from `components/widgets/label-sets/*` or `components/layouts/label-sets/*`.
1818
- - Shared UI label sets should use an internal shared UI translation context by default.
1819
- - Use `labels` for Phi-owned UI/control copy and `defaultLabels` for localized default content that is rendered only when CMS/config content is absent.
1820
- - Do not pass dummy `labels={{}}`; copy-free renderable blocks should use the explicit `PhiNoLabels` contract.
1821
- - Explicit CMS/config text such as `config.label`, `config.title`, or `config.tooltip` wins over `defaultLabels` and common action labels.
1822
- - Ant Design locale remains responsible for AntD-internal copy. Do not put Ant Design locale strings or Dayjs/date formatting into Phi label sets.
1823
- - Ant Design locale and the shared Dayjs locale bridge already cover pagination, empty state, picker text, validation templates, and date/time UI formatting.
1824
- - Phi semantic commands such as save, publish, review, restore, reset, reload, and upload are not Ant Design locale strings; they belong to the shared Common Controls label/icon contract.
1825
- - Only use a different `ctx` when the same visible text must intentionally translate differently in another semantic context.
1826
- - Widget/layout label-set definitions should use semantic keys mapped to default texts; do not use free-text lookups as the working contract.
1827
- - Batch translation transport may be positional internally, but public widget/layout label access should stay semantic and named.
1828
- - Free-text page/site copy should usually prefer `trBulk(...)` over many single `tr(...)` calls.
1829
- - Translation remains separate from the shared data-source contract and separate from submit dispatch.
1830
- - Public translation helpers live under `server-helpers/*`, not under the internal `gateway/*` namespace.
1831
- - Repo-local runtime config loading lives under `helpers/site-runtime`; do not re-export it through the public `helpers` barrel because it is server-only and depends on `next/headers`.
1832
-
1833
- ## Runtime and server boundaries
1834
-
1835
- - `react`, `react-dom`, `next`, `antd`, and `@ant-design/icons` stay in `peerDependencies`.
1836
- - Consuming sites must use `transpilePackages: ["@phis/ui"]`.
1837
- - Ant Design SSR/style injection belongs to the consuming site's root layout through `@ant-design/nextjs-registry`, `ConfigProvider`, and `App`.
1838
- - Backend-owned state such as session persistence, auth storage, CSRF state, and form-guard verification stays in `@phis/server`.
1839
- - Internal Phi-server adapter functions in `gateway/*` are not public package API.
1840
- - Public server-only helpers must use dedicated namespaces such as `server-helpers/*`.
1841
- - `gateway/site-config.ts` is the typed server-side fetch/read layer for site config JSON from `@phis/server`; it is not the site-config source of truth and not a widget-specific fallback path for client code.
1842
- - A normalized shared widget runtime should distinguish at least:
1843
- - `site`
1844
- - `locale`
1845
- - `area`
1846
- - `viewer`
1847
- - `area` is render context, not authorization.
1848
- - `viewer.roleClaims` carries one compact flag matrix per provider. Core and third-party role bits never
1849
- share an unqualified numeric namespace.
1850
- - `viewer.access` and role claims are runtime/session state. Server resolution and APIs remain the
1851
- authorization authority; Client evaluation is presentation only.
1852
-
1853
- ## Locale Capability Contract
1854
-
1855
- - Locale support is resolved centrally by `@phis/server` and consumed by `phis-ui`.
1856
- - `@phis/server` owns the maximum locale capability superset and each site's validated subset.
1857
- - The server capability superset must cover at least every target language supported by the configured DeepL target-language snapshot.
1858
- - Site locales should use BCP-47-style identifiers where applicable, for example `de-DE`, `de-CH`, `en-US`, `en-GB`, `ja-JP`, `zh-Hans`, `zh-Hant`, `pt-BR`, and `pt-PT`.
1859
- - Shared UI must not validate platform locale support and must not assume that site locales map 1:1 to Ant Design or DeepL identifiers.
1860
- - A resolved runtime locale must provide:
1861
- - the effective site locale
1862
- - language, script, and region when available
1863
- - text direction
1864
- - Intl locale
1865
- - Ant Design locale key
1866
- - DeepL target language
1867
- - Phi label fallback chain
1868
- - Examples:
1869
- - `de-CH -> antd de_DE, deepl DE, fallbacks [de-CH, de, en]`
1870
- - `en-GB -> antd en_GB, deepl EN-GB, fallbacks [en-GB, en]`
1871
- - `zh-Hans -> antd zh_CN, deepl ZH-HANS, fallbacks [zh-Hans, zh, en]`
1872
- - `zh-Hant -> antd zh_TW, deepl ZH-HANT, fallbacks [zh-Hant, zh, en]`
1873
- - Ant Design localization must be applied once at the root `ConfigProvider` through the resolved Ant Design locale object.
1874
- - Ant Design locale modules should be loaded through an explicit whitelist of dynamic import loader functions, not through a free path expression such as `import("antd/locale/" + locale)`.
1875
- - Phi widget and preset labels remain owned by Phi label sets. Ant Design locale and the shared Dayjs locale bridge cover their own UI strings and date/time formatting, including pagination, empty state, modal buttons, picker text, validation templates, and date controls.
1876
- - Do not reimplement DeepL target mapping, Ant Design locale mapping, text direction, or fallback chains inside shared UI, widgets, presets, or site apps.
1877
- - `x-locale` carries only an explicit locale from a locale-prefixed public route. A Proxy must never
1878
- promote a cookie, browser preference, profile value, or already-resolved locale into `x-locale`.
1879
- - Root, CMS, metadata, translation, and redirect consumers use the same request-scoped
1880
- `GET /api/v1/site/locale` result rather than applying their own locale priority.
1881
- - Site configuration fetches can stay cacheable by site key. Resolved runtime locale fetches must remain request-scoped because they can depend on user session, cookies, explicit locale, and browser `Accept-Language`.
1882
-
1883
- ## Theme and design-system rules
1884
-
1885
- - Shared layout/math primitives stay brand-neutral.
1886
- - The base `phi` spacing scale is global across Phi sites.
1887
- - Site themes override from that base; they should not replace it with unrelated spacing systems.
1888
- - A Widget and a Layout are shells around Ant Design. Inside one, Ant Design is free: a Control wraps an Ant Design component, and a Widget that offers several Controls may arrange them with `Flex`, `Space`, `Row` or `Col` like any other internal detail.
1889
- - Composition of several Widgets belongs to the Layouts and their slots, and to nothing else. Neither an Ant Design layout primitive nor hand-written CSS may take that job, because Ant Design has to stay replaceable and cannot be if the placement of Widgets depends on it. The boundary is not Ant Design against CSS -- it is one shell against more than one Widget.
1890
- - A Widget must not contain another Widget. A Widget that needs a second one beside it is a slot in a Layout, not an import.
1891
- - Prefer Ant Design theme/component token configuration before CSS overrides.
1892
- - Prefer Ant Design token colors, typography tokens, spacing tokens, and component variants before introducing custom visual values in shared code.
1893
- - Special colors or styling settings should be treated as opt-in work and added only after an explicit operator request.
1894
- - Shared theme resolution uses three layers:
1895
- - shared root CSS baseline
1896
- - shared default Ant Design theme derived from the `phi` scale
1897
- - site-specific overrides from `site.theme`
1898
- - Root layout should compose providers only; visual defaults must come through shared theme helpers and remain overridable by site theme data.
1899
- - Shared root typography exposes stable theme slots:
1900
- - `body`
1901
- - `mono`
1902
- - `serif`
1903
- - `accent`
1904
- - `display`
1905
- - Shared root typography also exposes `--phi-font-family-system` for widgets that should explicitly use the browser/OS system stack without loading an extra brand font.
1906
- - Shared typography sizes use Ant Design-owned variables such as `--ant-font-size-sm`, `--ant-font-size`, `--ant-font-size-lg`, and `--ant-font-size-xl`; no parallel `--phi-font-size-*` contract exists.
1907
- - Shell Regions inherit the Ant Design base typography unless explicitly configured. Editorial Widgets default to `fontSizeLG`; an explicit `inherit` remains true CSS/component inheritance.
1908
- - Reusable widget typography pickers should target the shared font contracts:
1909
- - `fontFamily = inherit | system | body | mono | serif | accent | display`
1910
- - `fontSize = inherit | xs | sm | base | lg | xl`
1911
- - The current `next/font` baseline is intentionally small:
1912
- - `body = Fira Sans`
1913
- - `mono = Fira Mono`
1914
- - `serif = Lora`
1915
- - `accent` and `display` remain open site-theme slots for now:
1916
- - `accent` falls back to `body`
1917
- - `display` falls back to `serif`
1918
- - Widgets and site themes should reference the shared `--phi-font-family-*` variables instead of hardcoding root font-family strings.
1919
-
1920
- ## Current internal structure
1921
-
1922
- ```text
1923
- phis-ui/
1924
- AGENTS.md
1925
- README.md
1926
- package.json
1927
- index.js
1928
- index.d.ts
1929
- widgets.ts
1930
- forms.ts
1931
- regions.ts
1932
- shells.ts
1933
- layouts.ts
1934
- navigation.ts
1935
- theme.ts
1936
- constants.ts
1937
- helpers.ts
1938
- server-helpers.ts
1939
- net.ts
1940
-
1941
- components/
1942
- forms/
1943
- navigation/
1944
- regions/
1945
- layouts/
1946
- clients/
1947
- shell/
1948
- internal/
1949
- widgets/
1950
- clients/
1951
-
1952
- constants/
1953
- helpers/
1954
- gateway/
1955
- server-helpers/
1956
- net/
1957
- ```
1958
-
1959
- ## Out of scope
1960
-
1961
- - site-specific logos and brand identity
1962
- - site-specific content and page copy ownership
1963
- - backend-owned auth/session/guard verification logic
1964
- - App Router route registration inside the shared package
1965
- - ad-hoc per-site replacement of the shared base spacing system
1966
-
1967
- ## Recommended verification flow
1968
-
1969
- Use the quiet verification runner:
1970
-
1971
- - `pnpm verify` selects the smallest relevant check set from the current Git changes.
1972
- - `pnpm verify docs` checks whitespace only.
1973
- - `pnpm verify code` runs TypeScript and ESLint.
1974
- - `pnpm verify runtime` adds Runtime module contract validation.
1975
- - `pnpm verify antd` adds Ant Design doctor.
1976
- - `pnpm verify package` validates the compiled distribution.
1977
- - `pnpm verify all` is reserved for changes that cross all of those boundaries.
1978
-
1979
- Successful underlying tools remain silent. If a check fails, the runner prints the failed command and its captured
1980
- output. Do not use a broader profile than the affected contract requires. Run a full build only when packaging,
1981
- bundling, SSR output, or production behavior must be verified explicitly.
1982
-
1983
- ### Distribution package
1984
-
1985
- Local workspace consumers continue to use the typed source exports together with
1986
- `transpilePackages`, so shared UI edits do not require a manual rebuild. The reproducible
1987
- distribution artifact is separate:
1988
-
1989
- - `pnpm build` emits unbundled ESM, declarations, CSS, and a validated package manifest into `dist/`
1990
- - the generated manifest preserves every explicit public export key, exposes only ESM runtime targets,
1991
- and keeps CSS in the package side-effect allowlist
1992
- - `pnpm package:pack` builds and packs the `dist/` package instead of publishing the workspace source tree
1993
-
1994
- The distribution build must preserve Client and Server directives, lazy imports, and Area-specific
1995
- runtime manifests. It must not bundle React, Next.js, Ant Design, or the package's other runtime
1996
- dependencies into one library file.
1997
-
1998
- ### Production bundler policy
1999
-
2000
- Use the default Turbopack pipeline for both development and production builds of
2001
- consuming Next.js sites:
2002
-
2003
- - development: `next dev` (Turbopack)
2004
- - production: `next build` (Turbopack)
2005
-
2006
- The temporary Webpack production override was removed after a Next.js 16.2.11
2007
- production browser check confirmed that inactive Builder implementations are absent
2008
- from the Public Turbopack payload. Continue to verify the downloaded resources and the
2009
- interactive route in a real browser rather than comparing build duration or `.next`
2010
- size. Use Next's integrated `experimental-analyze` report for module/import-chain
2011
- attribution and the reusable `browser-test` Public payload script for transferred bytes.
3
+ `@phis/ui` is the shared UI, CMS renderer, and Runtime Module host for Phi Sites: Next.js App Router
4
+ applications built on Ant Design and served by a `phis` server. It renders the Areas, Pages, Regions,
5
+ Layouts, Widgets, Overlays, and Forms a Site stores in `phis`, hosts the Runtime Modules installed into
6
+ the Site, and provides the Builder that edits them.
7
+
8
+ The package is pre-v1. Contracts change without compatibility layers; see [Stability](#stability).
9
+
10
+ ## What it owns and does not own
11
+
12
+ `@phis/ui` owns:
13
+
14
+ - CMS resolution and rendering: Areas, shells, Regions, Layouts, Widgets, Overlays, and Page metadata;
15
+ - the Runtime Module host: catalogs, activation, lazy loading, and per-Area Client manifests;
16
+ - the first-party Modules (Core, the six Area base Modules, Auth, Assets, Theme, Builder tooling, and
17
+ others -- [MODULES.md](./MODULES.md#first-party-modules));
18
+ - the signal bus and Controllers, Forms and their gateway relay, Tables, Trees, and Collections;
19
+ - the Phi Controls around Ant Design, Theme resolution, and translation helpers;
20
+ - the `@phis/ui/next/*` factories a Site's route files delegate to.
21
+
22
+ It does not own:
23
+
24
+ - App Router route registration: route files live in the Site;
25
+ - Site branding, content, and copy: those are stored in `phis`;
26
+ - backend state: sessions, authentication, CSRF and Form guards, storage, and authorization belong to
27
+ `@phis/server`;
28
+ - server extensions: those are `phis` Add-ons.
29
+
30
+ ## Requirements
31
+
32
+ - A Next.js 16 App Router Site. Start from `phis init` (the `phis-site-skeleton`).
33
+ - A running `@phis/server` (`phis`) that serves the Site.
34
+ - Peer dependencies:
35
+
36
+ | Package | Range |
37
+ | --- | --- |
38
+ | `next` | `^16.2.11` |
39
+ | `react`, `react-dom` | `^19.2.8` |
40
+ | `antd` | `^6.5.1` |
41
+ | `@ant-design/icons` | `^6.3.2` |
42
+ | `@ant-design/nextjs-registry` | `^1.3.0` |
43
+
44
+ ## For Site operators
45
+
46
+ - Create a Site with `phis init <site key>`. The generated Site is the Skeleton: route files, deployment
47
+ config, and a generated Module projection.
48
+ - The Site's `next.config` sets `transpilePackages: ["@phis/ui"]`.
49
+ - Route files are thin wrappers over `@phis/ui/next/*` factories (`createPhiNextStaticAreaBoundary`,
50
+ `createPhiNextStaticAreaLayout`, and the Area bridges in `@phis/ui/next/areas/<area>`). They hold no CMS,
51
+ locale, or access logic. Behavior fixes arrive by updating the package, not by editing the Site.
52
+ - Install Module packages with `phis module add --site <site key> --package <name>`, rebuild, and enable
53
+ the Module per Area in the Builder.
54
+ - The Site boundary, the route graph, fonts, and metadata are [NEXT_INTEGRATION.md](./NEXT_INTEGRATION.md).
55
+
56
+ ## For Module authors
57
+
58
+ - Start with [THIRD_PARTY_MODULES.md](./THIRD_PARTY_MODULES.md): package layout, fixed exports, building,
59
+ and installing.
60
+ - The Module contract is [MODULES.md](./MODULES.md); signals are [SIGNALS.md](./SIGNALS.md).
61
+ - Read [STATIC_RENDERING.md](./STATIC_RENDERING.md) before building anything for the Public Area: Public
62
+ pages are rendered once for every anonymous visitor.
63
+
64
+ ## Entry points
65
+
66
+ The root export (`@phis/ui`) is not an integration surface; import from the grouped subpaths below
67
+ (`package.json#exports`).
68
+
69
+ | Group | Entry points |
70
+ | --- | --- |
71
+ | Next.js Site | `next/area-route`, `next/areas/<area>`, `next/areas/<area>-client`, `next/root-route`, `next/site-bridge`, `next/site-proxy`, `next/proxy-runtime`, `next/route-handlers`, `next/seo-routes`, `next/cache-handler`, `next/runtime-module-client-boundary` |
72
+ | CMS rendering | `cms`, `cms/root-layout`, `cms/root-page`, `cms/root-slot-page`, `cms/error-page`, `cms/request`, `cms/plugins`, `cms/plugins/<area>` |
73
+ | Module packages | `module`, `module/client`, `module/authoring-client`, `module/projection`, `module/projection/client`, `module/projection/authoring-client`, `module/site-modules`, `module/site-modules-client` |
74
+ | Runtime Clients | `runtime`, `runtime/controller-client`, `runtime/render-client`, `runtime/signal-client`, `runtime/data-provider-client`, `runtime/authoring-client`, `runtime/authoring-manifest-client`, `runtime/calendar-adapter-client`, `runtime/client-manifests/<area>` |
75
+ | UI | `widgets`, `widget-config`, `controls`, `controls/config`, `controls/date-time`, `layouts`, `shells`, `root`, `navigation`, `forms`, `media`, `references`, `state`, `theme` |
76
+ | Builder | `builder`, `builder-api-route` |
77
+ | Contracts and helpers | `types`, `constants`, `helpers`, `helpers/site-runtime`, `server-helpers`, `net` |
78
+ | Plugin helpers | `plugins/factories/widget-builder-plugin`, `plugins/registries/runtime-controller-core`, `plugins/registries/runtime-controllers` |
79
+
80
+ `<area>` is `public`, `app`, `admin`, `builder`, `editor`, or `accounting` (`cms/plugins/<area>` exists
81
+ for all but `builder`). Import only the Area entry points a route needs; each Area is a separate module
82
+ graph.
83
+
84
+ ## Contract documents
85
+
86
+ | Topic | Document |
87
+ | --- | --- |
88
+ | Areas, CMS tree, renderable blocks, node identity | [CMS.md](./CMS.md) |
89
+ | Runtime Modules | [MODULES.md](./MODULES.md) |
90
+ | Building a Module package | [THIRD_PARTY_MODULES.md](./THIRD_PARTY_MODULES.md) |
91
+ | Signals and the Core Runtime Controller | [SIGNALS.md](./SIGNALS.md) |
92
+ | Next.js Site integration | [NEXT_INTEGRATION.md](./NEXT_INTEGRATION.md) |
93
+ | Static rendering of Public pages | [STATIC_RENDERING.md](./STATIC_RENDERING.md) |
94
+ | Shell | [SHELL.md](./SHELL.md) |
95
+ | Layouts and Regions | [LAYOUTING.md](./LAYOUTING.md) |
96
+ | Theme | [THEME.md](./THEME.md) |
97
+ | Widgets and Controls | [components/widgets/README.md](./components/widgets/README.md) |
98
+ | Forms | [FORMS.md](./FORMS.md) |
99
+ | Tables, Trees, Collections | [TABLES.md](./TABLES.md), [TREES.md](./TREES.md), [COLLECTIONS.md](./COLLECTIONS.md) |
100
+ | Overlays | [OVERLAYS.md](./OVERLAYS.md) |
101
+ | Conversation surfaces | [THREADS.md](./THREADS.md) |
102
+ | Builder | [BUILDER.md](./BUILDER.md) |
103
+ | Settings | [SETTINGS.md](./SETTINGS.md) |
104
+ | Access and visibility | [ACCESS.md](./ACCESS.md) |
105
+ | Authentication | [AUTHENTICATION.md](./AUTHENTICATION.md) |
106
+ | References and Page paths | [REFERENCES.md](./REFERENCES.md) |
107
+ | Translations | [TRANSLATIONS.md](./TRANSLATIONS.md) |
108
+ | Gateway caches | [gateway/CACHES.md](./gateway/CACHES.md) |
109
+ | Designs (not contracts) | [design/](./design/README.md) |
110
+ | Open work | [TODOS.md](./TODOS.md) |
111
+ | Rules for contributors and agents | [AGENTS.md](./AGENTS.md) |
112
+
113
+ ## Stability
114
+
115
+ `@phis/ui` is pre-v1 (`0.x`). Any release may change a contract, an export, or a stored shape without a
116
+ compatibility layer or migration path; callers and stored data are updated together with the package.
117
+ Pin an exact version and upgrade `@phis/ui`, `phis`, and installed Module packages together.
118
+
119
+ ## License
120
+
121
+ Apache-2.0. See [LICENSE](./LICENSE) and [NOTICE](./NOTICE).