@phis/ui 0.4.2 → 0.4.4

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 (335) hide show
  1. package/components/cms/phi-cms-layout-renderer.js +4 -3
  2. package/components/cms/phi-cms-page-render-scope.d.ts +4 -5
  3. package/components/cms/phi-cms-page-render-scope.js +43 -22
  4. package/components/cms/phi-cms-render-diagnostic-client.js +7 -3
  5. package/components/cms/phi-cms-render-error-boundary.js +2 -1
  6. package/components/controls/phi-anchor-nav-control.js +4 -1
  7. package/components/controls/phi-background-control.js +21 -6
  8. package/components/controls/phi-bullet-list-control.d.ts +7 -2
  9. package/components/controls/phi-bullet-list-control.js +35 -5
  10. package/components/controls/phi-color-control.js +4 -2
  11. package/components/controls/phi-drawer-control-adapter.js +3 -2
  12. package/components/controls/phi-inline-text-editor.js +7 -1
  13. package/components/controls/phi-length-control.js +1 -1
  14. package/components/controls/phi-ribbon-control.d.ts +38 -0
  15. package/components/controls/phi-ribbon-control.js +57 -0
  16. package/components/controls/phi-ribbon-wrap-control.d.ts +26 -0
  17. package/components/controls/phi-ribbon-wrap-control.js +25 -0
  18. package/components/controls/phi-select-control.js +5 -2
  19. package/components/controls/phi-series-chart-control.d.ts +48 -0
  20. package/components/controls/phi-series-chart-control.js +82 -0
  21. package/components/controls/phi-table-control.d.ts +3 -0
  22. package/components/controls/phi-table-control.js +13 -1
  23. package/components/controls/phi-text-control.js +57 -3
  24. package/components/controls/phi-tree-control.js +4 -4
  25. package/components/controls/phi-truncated-hover-text.d.ts +15 -0
  26. package/components/controls/phi-truncated-hover-text.js +25 -0
  27. package/components/forms/link-target-form-control.d.ts +1 -1
  28. package/components/forms/link-target-form-control.js +2 -45
  29. package/components/forms/phi-form-widget-frame.js +4 -2
  30. package/components/forms/shared-form-provider-registry.js +1 -4
  31. package/components/layouts/clients/phi-three-column-layout-client.js +10 -1
  32. package/components/media/asset-collection-runtime.js +6 -16
  33. package/components/media/media-font-metrics.d.ts +3 -0
  34. package/components/media/media-font-metrics.js +43 -0
  35. package/components/media/phi-area-upload-widget.js +53 -97
  36. package/components/media/phi-image-preview-data.d.ts +13 -0
  37. package/components/media/phi-image-preview-data.js +184 -9
  38. package/components/media/phi-media-picker-binding.js +16 -13
  39. package/components/media/phi-media-upload.d.ts +15 -8
  40. package/components/media/phi-media-upload.js +18 -9
  41. package/components/media/phi-site-font-assets.js +7 -8
  42. package/components/navigation/phi-link.js +6 -1
  43. package/components/overlays/phi-overlay-container-client.js +16 -1
  44. package/components/regions/clients/cms-region-container-client.js +6 -1
  45. package/components/regions/phi-cms-region-container.js +3 -0
  46. package/components/regions/phi-cms-region-shell.d.ts +12 -1
  47. package/components/regions/phi-cms-region-shell.js +81 -19
  48. package/components/regions/presets/phi-settings-page-shell-tree.js +48 -1
  49. package/components/root/phi-config-provider.d.ts +13 -0
  50. package/components/root/phi-config-provider.js +12 -1
  51. package/components/root/phi-root-background.d.ts +7 -0
  52. package/components/root/phi-root-background.js +20 -1
  53. package/components/root/phi-root-theme-resolver.js +3 -0
  54. package/components/root/phi-shell-chrome-overlay.d.ts +12 -1
  55. package/components/root/phi-shell-chrome-overlay.js +19 -3
  56. package/components/runtime/runtime-controller-materialization.js +12 -1
  57. package/components/shell/phi-antd-icon.d.ts +1 -0
  58. package/components/shell/phi-antd-icon.js +3 -0
  59. package/components/shell/use-phi-shell-sticky-top.js +61 -16
  60. package/components/state/scoped-state-store.js +20 -3
  61. package/components/surface/phi-surface-tone.d.ts +13 -0
  62. package/components/surface/phi-surface-tone.js +21 -0
  63. package/components/tables/client/phi-table-binding.d.ts +2 -1
  64. package/components/tables/client/phi-table-binding.js +45 -21
  65. package/components/trees/client/phi-tree-binding.js +19 -11
  66. package/components/widgets/client/bullet-list-entries-editor.d.ts +26 -0
  67. package/components/widgets/client/bullet-list-entries-editor.js +109 -0
  68. package/components/widgets/client/html-editor.js +1 -1
  69. package/components/widgets/client/shared/use-page-reference-options.d.ts +17 -0
  70. package/components/widgets/client/shared/use-page-reference-options.js +57 -0
  71. package/components/widgets/config/background.d.ts +32 -1
  72. package/components/widgets/config/background.js +41 -2
  73. package/components/widgets/config/choice-shared.js +12 -13
  74. package/components/widgets/config/command-buttons.d.ts +5 -1
  75. package/components/widgets/config/command-buttons.js +38 -81
  76. package/components/widgets/config/control-signal-config.d.ts +3 -1
  77. package/components/widgets/config/control-signal-config.js +19 -17
  78. package/components/widgets/config/image-source-parser.d.ts +1 -0
  79. package/components/widgets/config/image-source-parser.js +7 -8
  80. package/components/widgets/config/mask.d.ts +6 -1
  81. package/components/widgets/config/mask.js +24 -1
  82. package/components/widgets/config/parser-primitives.js +72 -0
  83. package/components/widgets/config/stack-tabs.d.ts +1 -1
  84. package/components/widgets/config/stack-tabs.js +2 -3
  85. package/components/widgets/config/strict-config-reader.d.ts +40 -0
  86. package/components/widgets/config/strict-config-reader.js +174 -0
  87. package/components/widgets/label-sets/background.js +2 -0
  88. package/components/widgets/label-sets/effects.js +2 -0
  89. package/components/widgets/label-types/background.d.ts +1 -0
  90. package/components/widgets/label-types/background.js +1 -0
  91. package/components/widgets/label-types/effects.d.ts +1 -0
  92. package/components/widgets/label-types/effects.js +1 -0
  93. package/components/widgets/navigation-descriptor-resolver.server.js +20 -8
  94. package/components/widgets/shared/bullet-list-vocabulary.d.ts +27 -1
  95. package/components/widgets/shared/bullet-list-vocabulary.js +24 -4
  96. package/components/widgets/shared/card-body-client.d.ts +18 -4
  97. package/components/widgets/shared/card-body-client.js +126 -26
  98. package/components/widgets/shared/card-vocabulary.d.ts +31 -4
  99. package/components/widgets/shared/card-vocabulary.js +35 -2
  100. package/components/widgets/shared/markdown-body-client.js +39 -10
  101. package/components/widgets/signals/control-signal-capabilities.d.ts +0 -18
  102. package/components/widgets/signals/control-signal-capabilities.js +10 -22
  103. package/components/workspace/catalog-store.d.ts +4 -3
  104. package/components/workspace/catalog-store.js +6 -5
  105. package/gateway/dashboard-cards-route.js +1 -0
  106. package/gateway/internal-references.d.ts +6 -1
  107. package/gateway/internal-references.js +48 -23
  108. package/gateway/site-cms-write-validation.d.ts +9 -0
  109. package/gateway/site-cms-write-validation.js +78 -0
  110. package/gateway/site-proxy.js +19 -3
  111. package/helpers/cms-container-chrome.js +6 -1
  112. package/helpers/locale.d.ts +8 -0
  113. package/helpers/locale.js +18 -0
  114. package/helpers/renderable-block-serialization.js +1 -1
  115. package/helpers/shell-region-style.js +2 -1
  116. package/helpers/surface-style.d.ts +12 -1
  117. package/helpers/surface-style.js +28 -2
  118. package/module-dashboard-cards.d.ts +1 -1
  119. package/module-dashboard-cards.js +1 -1
  120. package/next/config.d.mts +3 -0
  121. package/next/config.mjs +28 -1
  122. package/package.json +2 -2
  123. package/plugins/runtime/phi-slot-child-viewport-effects-observer.js +5 -1
  124. package/plugins/runtime-modules/accounting/presets.d.ts +9 -0
  125. package/plugins/runtime-modules/accounting/presets.js +37 -0
  126. package/plugins/runtime-modules/accounting/server.d.ts +1 -4
  127. package/plugins/runtime-modules/accounting/server.js +4 -7
  128. package/plugins/runtime-modules/app/presets.d.ts +18 -0
  129. package/plugins/runtime-modules/app/presets.js +67 -0
  130. package/plugins/runtime-modules/app/server.d.ts +1 -4
  131. package/plugins/runtime-modules/app/server.js +4 -7
  132. package/plugins/runtime-modules/area-definitions.d.ts +0 -42
  133. package/plugins/runtime-modules/area-definitions.js +3 -8
  134. package/plugins/runtime-modules/asset/controller/runtime.js +2 -2
  135. package/plugins/runtime-modules/asset/services/collection.js +9 -1
  136. package/plugins/runtime-modules/asset/services/options.js +2 -2
  137. package/plugins/runtime-modules/builder/area-settings-answer.js +2 -1
  138. package/plugins/runtime-modules/builder/authoring-canvas.js +6 -6
  139. package/plugins/runtime-modules/builder/cards.js +3 -5
  140. package/plugins/runtime-modules/builder/clients/builder-region-overrides.js +3 -3
  141. package/plugins/runtime-modules/builder/clients/canvas-widget.js +15 -54
  142. package/plugins/runtime-modules/builder/clients/inspector-config-field.d.ts +4 -1
  143. package/plugins/runtime-modules/builder/clients/inspector-config-field.js +25 -35
  144. package/plugins/runtime-modules/builder/clients/inspector-link-target-field.js +1 -1
  145. package/plugins/runtime-modules/builder/clients/inspector-section-widget.js +8 -8
  146. package/plugins/runtime-modules/builder/clients/inspector-title.js +6 -6
  147. package/plugins/runtime-modules/builder/clients/layout-inspector.d.ts +1 -1
  148. package/plugins/runtime-modules/builder/clients/layout-inspector.js +11 -25
  149. package/plugins/runtime-modules/builder/clients/layout-scaffold-overlays.js +10 -5
  150. package/plugins/runtime-modules/builder/clients/mode-switch.js +1 -1
  151. package/plugins/runtime-modules/builder/clients/pages-header.js +11 -11
  152. package/plugins/runtime-modules/builder/clients/pages-workspace.js +1 -1
  153. package/plugins/runtime-modules/builder/clients/region-visibility-fields.js +1 -1
  154. package/plugins/runtime-modules/builder/clients/runtime-module-authoring-boundary.js +1 -1
  155. package/plugins/runtime-modules/builder/clients/shells-workspace.js +15 -31
  156. package/plugins/runtime-modules/builder/clients/structure-canvas.js +1 -1
  157. package/plugins/runtime-modules/builder/clients/use-region-draft-hydration.d.ts +26 -0
  158. package/plugins/runtime-modules/builder/clients/use-region-draft-hydration.js +36 -0
  159. package/plugins/runtime-modules/builder/clients/widget-effects-editor.js +1 -1
  160. package/plugins/runtime-modules/builder/clients/widget-inspector.js +1 -0
  161. package/plugins/runtime-modules/builder/clients/workspace-scope-boundary.js +2 -2
  162. package/plugins/runtime-modules/builder/cms-instance-allocator.js +8 -28
  163. package/plugins/runtime-modules/builder/controller/client.d.ts +0 -15
  164. package/plugins/runtime-modules/builder/controller/definition.d.ts +0 -15
  165. package/plugins/runtime-modules/builder/controller/definition.js +0 -8
  166. package/plugins/runtime-modules/builder/controller/draft-command-controller.d.ts +1 -2
  167. package/plugins/runtime-modules/builder/controller/draft-command-controller.js +11 -30
  168. package/plugins/runtime-modules/builder/controller/draft-status-controller.js +15 -2
  169. package/plugins/runtime-modules/builder/controller/inspector-controller.d.ts +1 -2
  170. package/plugins/runtime-modules/builder/controller/inspector-controller.js +4 -7
  171. package/plugins/runtime-modules/builder/controller/page-controller.d.ts +1 -2
  172. package/plugins/runtime-modules/builder/controller/page-controller.js +16 -68
  173. package/plugins/runtime-modules/builder/controller/server-definition.d.ts +0 -15
  174. package/plugins/runtime-modules/builder/controller/signal-wiring-controller.d.ts +2 -5
  175. package/plugins/runtime-modules/builder/controller/signal-wiring-controller.js +6 -50
  176. package/plugins/runtime-modules/builder/controller/workspace-controller.d.ts +2 -3
  177. package/plugins/runtime-modules/builder/controller/workspace-controller.js +89 -153
  178. package/plugins/runtime-modules/builder/data-providers.d.ts +1 -0
  179. package/plugins/runtime-modules/builder/data-providers.js +1 -0
  180. package/plugins/runtime-modules/builder/definition.d.ts +1 -0
  181. package/plugins/runtime-modules/builder/developer-workspace-store.d.ts +64 -30
  182. package/plugins/runtime-modules/builder/developer-workspace-store.js +255 -61
  183. package/plugins/runtime-modules/builder/edit-scaffold-drawer.js +4 -3
  184. package/plugins/runtime-modules/builder/history.d.ts +3 -1
  185. package/plugins/runtime-modules/builder/options-providers.js +3 -2
  186. package/plugins/runtime-modules/builder/page-catalog-client.js +19 -7
  187. package/plugins/runtime-modules/builder/page-meta-form.js +1 -0
  188. package/plugins/runtime-modules/builder/page-references-provider.js +1 -1
  189. package/plugins/runtime-modules/builder/persistence.js +33 -69
  190. package/plugins/runtime-modules/builder/public-route-collisions.d.ts +2 -2
  191. package/plugins/runtime-modules/builder/public-route-collisions.js +6 -19
  192. package/plugins/runtime-modules/builder/render-root-node-preview.server.js +20 -3
  193. package/plugins/runtime-modules/builder/render-root-node-scaffold.js +28 -18
  194. package/plugins/runtime-modules/builder/runtime-module-selection.d.ts +2 -12
  195. package/plugins/runtime-modules/builder/runtime-module-selection.js +16 -42
  196. package/plugins/runtime-modules/builder/services/navigation-table.js +9 -15
  197. package/plugins/runtime-modules/builder/services/page-source-tree.js +8 -8
  198. package/plugins/runtime-modules/builder/services/runtime-modules-table.js +10 -10
  199. package/plugins/runtime-modules/builder/services/signal-routes-table.js +3 -3
  200. package/plugins/runtime-modules/builder/signal-route-selection.d.ts +1 -2
  201. package/plugins/runtime-modules/builder/signal-route-selection.js +2 -2
  202. package/plugins/runtime-modules/builder/signal-wiring-options.js +3 -2
  203. package/plugins/runtime-modules/builder/structure-dnd.js +8 -61
  204. package/plugins/runtime-modules/builder/trees/phi-default-builder-area-preset-tree.js +17 -10
  205. package/plugins/runtime-modules/builder/widgets/structure-region/built-in.js +27 -22
  206. package/plugins/runtime-modules/builder/workspace-catalog-actions.d.ts +55 -0
  207. package/plugins/runtime-modules/builder/workspace-catalog-actions.js +142 -0
  208. package/plugins/runtime-modules/client-authoring-module.d.ts +8 -1
  209. package/plugins/runtime-modules/client-authoring-module.js +13 -3
  210. package/plugins/runtime-modules/client-manifests/common.js +1 -1
  211. package/plugins/runtime-modules/{runtime-calendar-adapters.js → core/calendar-adapters.js} +2 -2
  212. package/plugins/runtime-modules/{client-calendar-adapters/core.js → core/client-calendar-adapters.js} +1 -1
  213. package/plugins/runtime-modules/core/content-entries/table.js +1 -1
  214. package/plugins/runtime-modules/core/data-providers.d.ts +3 -0
  215. package/plugins/runtime-modules/core/data-providers.js +2 -1
  216. package/plugins/runtime-modules/core/definition.d.ts +3 -0
  217. package/plugins/runtime-modules/core/definition.js +1 -1
  218. package/plugins/runtime-modules/core/messaging/data-providers.d.ts +1 -0
  219. package/plugins/runtime-modules/core/messaging/data-providers.js +1 -0
  220. package/plugins/runtime-modules/core/messaging/thread-inbox-table.js +1 -1
  221. package/plugins/runtime-modules/core/server.js +1 -1
  222. package/plugins/runtime-modules/core/themes.d.ts +44 -0
  223. package/plugins/runtime-modules/core/themes.js +12 -0
  224. package/plugins/runtime-modules/core/widgets/brand/client.d.ts +12 -3
  225. package/plugins/runtime-modules/core/widgets/brand/client.js +3 -11
  226. package/plugins/runtime-modules/core/widgets/brand/home.d.ts +15 -0
  227. package/plugins/runtime-modules/core/widgets/brand/home.js +18 -0
  228. package/plugins/runtime-modules/core/widgets/brand/plugin.js +3 -2
  229. package/plugins/runtime-modules/core/widgets/brand/server.d.ts +2 -2
  230. package/plugins/runtime-modules/core/widgets/brand/server.js +2 -2
  231. package/plugins/runtime-modules/core/widgets/card/collection-view-binding.js +25 -9
  232. package/plugins/runtime-modules/core/widgets/card/config.d.ts +301 -254
  233. package/plugins/runtime-modules/core/widgets/card/config.js +68 -3
  234. package/plugins/runtime-modules/core/widgets/card/editor.js +41 -4
  235. package/plugins/runtime-modules/core/widgets/card/server.d.ts +3 -0
  236. package/plugins/runtime-modules/core/widgets/card/server.js +32 -3
  237. package/plugins/runtime-modules/core/widgets/collection-view/asset-binding.js +7 -6
  238. package/plugins/runtime-modules/core/widgets/collection-view/config.js +9 -2
  239. package/plugins/runtime-modules/core/widgets/description/client.js +3 -3
  240. package/plugins/runtime-modules/core/widgets/description/config.d.ts +2 -25
  241. package/plugins/runtime-modules/core/widgets/description/editor.js +7 -63
  242. package/plugins/runtime-modules/core/widgets/description/server.js +3 -2
  243. package/plugins/runtime-modules/core/widgets/entry-list/config.d.ts +2 -25
  244. package/plugins/runtime-modules/core/widgets/gallery/config.d.ts +2 -25
  245. package/plugins/runtime-modules/core/widgets/header-navigation/client.js +2 -2
  246. package/plugins/runtime-modules/core/widgets/html/client.js +1 -1
  247. package/plugins/runtime-modules/core/widgets/image/config.js +2 -2
  248. package/plugins/runtime-modules/core/widgets/markdown/config.d.ts +320 -2
  249. package/plugins/runtime-modules/core/widgets/markdown/config.js +18 -4
  250. package/plugins/runtime-modules/core/widgets/markdown/editor.js +11 -4
  251. package/plugins/runtime-modules/core/widgets/markdown-toc/client.js +6 -1
  252. package/plugins/runtime-modules/core/widgets/markdown-toc/config.d.ts +14 -0
  253. package/plugins/runtime-modules/core/widgets/markdown-toc/config.js +14 -2
  254. package/plugins/runtime-modules/core/widgets/quick-links/authoring.js +7 -2
  255. package/plugins/runtime-modules/core/widgets/quick-links/client.js +2 -2
  256. package/plugins/runtime-modules/core/widgets/quick-links/items.d.ts +0 -2
  257. package/plugins/runtime-modules/core/widgets/quick-links/items.js +0 -15
  258. package/plugins/runtime-modules/core/widgets/result/config.d.ts +5 -25
  259. package/plugins/runtime-modules/core/widgets/result/config.js +2 -0
  260. package/plugins/runtime-modules/core/widgets/result/server.js +25 -19
  261. package/plugins/runtime-modules/core/widgets/sidebar-navigation/authoring.js +1 -1
  262. package/plugins/runtime-modules/core/widgets/sidebar-navigation/client.js +1 -1
  263. package/plugins/runtime-modules/core/widgets/simple-text/client.js +8 -3
  264. package/plugins/runtime-modules/core/widgets/simple-text/config.d.ts +2 -25
  265. package/plugins/runtime-modules/core/widgets/simple-text/editor.js +2 -2
  266. package/plugins/runtime-modules/core/widgets/slot-upload/client.js +11 -2
  267. package/plugins/runtime-modules/core/widgets/table/client.js +8 -4
  268. package/plugins/runtime-modules/core/widgets/table/config.d.ts +6 -83
  269. package/plugins/runtime-modules/core/widgets/table/config.js +302 -452
  270. package/plugins/runtime-modules/core/widgets/tree/config.js +5 -2
  271. package/plugins/runtime-modules/dashboard/card-rows.d.ts +7 -0
  272. package/plugins/runtime-modules/dashboard/card-rows.js +87 -0
  273. package/plugins/runtime-modules/dashboard/clients/dashboard-card-view.js +32 -12
  274. package/plugins/runtime-modules/dashboard/services/collection.js +17 -7
  275. package/plugins/runtime-modules/dashboard/trees/phi-default-builder-dashboard-page-tree.js +5 -40
  276. package/plugins/runtime-modules/groups/data-providers.d.ts +2 -0
  277. package/plugins/runtime-modules/groups/data-providers.js +3 -3
  278. package/plugins/runtime-modules/groups/definition.d.ts +2 -0
  279. package/plugins/runtime-modules/localization/data-providers.d.ts +3 -0
  280. package/plugins/runtime-modules/localization/data-providers.js +2 -0
  281. package/plugins/runtime-modules/localization/definition.d.ts +3 -0
  282. package/plugins/runtime-modules/localization/services/table.js +3 -7
  283. package/plugins/runtime-modules/observability/data-providers.d.ts +1 -0
  284. package/plugins/runtime-modules/observability/data-providers.js +1 -0
  285. package/plugins/runtime-modules/observability/definition.d.ts +1 -0
  286. package/plugins/runtime-modules/observability/module.d.ts +1 -0
  287. package/plugins/runtime-modules/observability/services/table.js +1 -1
  288. package/plugins/runtime-modules/phi-default-site-area-preset-tree.js +2 -105
  289. package/plugins/runtime-modules/public/presets.d.ts +115 -0
  290. package/plugins/runtime-modules/{area-base-presets.js → public/presets.js} +19 -119
  291. package/plugins/runtime-modules/public/server.d.ts +1 -4
  292. package/plugins/runtime-modules/public/server.js +4 -7
  293. package/plugins/runtime-modules/public/trees/phi-default-pub-error-page-tree.js +7 -8
  294. package/plugins/runtime-modules/public-base-page-references.d.ts +1 -1
  295. package/plugins/runtime-modules/public-base-page-references.js +1 -1
  296. package/plugins/runtime-modules/revisions/controller/client.js +11 -11
  297. package/plugins/runtime-modules/revisions/services/table.js +3 -3
  298. package/plugins/runtime-modules/theme/trees/phi-default-builder-theme-page-tree.js +22 -0
  299. package/plugins/runtime-modules/theme/widgets/brand-controls/client.d.ts +2 -1
  300. package/plugins/runtime-modules/theme/widgets/brand-controls/client.js +111 -72
  301. package/plugins/runtime-modules/theme/widgets/brand-controls/config.d.ts +2 -1
  302. package/plugins/runtime-modules/theme/widgets/brand-controls/config.js +28 -31
  303. package/plugins/runtime-modules/theme/widgets/brand-controls/plugin.js +1 -1
  304. package/plugins/runtime-modules/theme-descriptors.js +1 -1
  305. package/plugins/runtime-modules/user-management/data-providers.d.ts +2 -0
  306. package/plugins/runtime-modules/user-management/data-providers.js +1 -0
  307. package/plugins/runtime-modules/user-management/definition.d.ts +2 -0
  308. package/server-helpers/cms-link-targets.js +6 -0
  309. package/styles/control-shape.css +11 -11
  310. package/styles/controls.css +67 -5
  311. package/styles/layout.css +61 -9
  312. package/styles/shell.css +73 -0
  313. package/theme/phi-antd-token-resolver.js +20 -1
  314. package/theme/phi-theme-tokens.d.ts +1 -1
  315. package/theme/phi-theme-tokens.js +1 -0
  316. package/theme/phi-theme.d.ts +5 -0
  317. package/theme/phi-theme.js +21 -0
  318. package/theme/phi-tokens.d.ts +16 -15
  319. package/theme/phi-tokens.js +16 -15
  320. package/types/cms-config.js +142 -185
  321. package/types/cms-plugins.d.ts +6 -11
  322. package/types/core-widget-placements.d.ts +14 -3
  323. package/types/dashboard-cards.d.ts +48 -4
  324. package/types/dashboard-cards.js +6 -0
  325. package/types/media.d.ts +0 -3
  326. package/types/renderable-block.d.ts +6 -1
  327. package/types/site-theme.d.ts +10 -2
  328. package/types/table-widget.d.ts +9 -0
  329. package/types/table-widget.js +20 -0
  330. package/types.d.ts +1 -1
  331. package/widget-config.d.ts +2 -0
  332. package/widget-config.js +6 -0
  333. package/plugins/runtime-modules/area-base-presets.d.ts +0 -139
  334. /package/plugins/runtime-modules/{runtime-calendar-adapters.d.ts → core/calendar-adapters.d.ts} +0 -0
  335. /package/plugins/runtime-modules/{client-calendar-adapters/core.d.ts → core/client-calendar-adapters.d.ts} +0 -0
@@ -101,7 +101,6 @@ export type PhiCmsConfigFieldChoiceMode = "single" | "multiple";
101
101
  export type PhiCmsConfigFieldChoiceValueType = "string" | "string[]" | "number";
102
102
  export type PhiCmsConfigFieldChoiceCreateBehavior = "none" | "accept-custom" | "create-record";
103
103
  export type PhiCmsConfigFieldColorMode = "single" | "gradient" | "both";
104
- export type PhiCmsConfigFieldValueStorage = "field" | "self";
105
104
  export type PhiCmsConfigFieldChoiceFilter = {
106
105
  widgetType?: string;
107
106
  group?: string;
@@ -115,6 +114,8 @@ export type PhiCmsConfigField = (PhiCmsConfigFieldBase & {
115
114
  * Button that is only its icon.
116
115
  */
117
116
  emptyValue?: "";
117
+ /** What an empty box shows: what an unset value means, such as `Auto`. Not stored. */
118
+ placeholder?: string;
118
119
  }) | (PhiCmsConfigFieldBase & {
119
120
  /**
120
121
  * One link, chosen rather than typed.
@@ -290,14 +291,6 @@ export type PhiCmsConfigField = (PhiCmsConfigFieldBase & {
290
291
  presentation?: PhiCmsConfigFieldCollectionPresentation;
291
292
  /** What the button that opens the Overlay says. */
292
293
  editLabel?: string;
293
- }) | (PhiCmsConfigFieldBase & {
294
- type: "background";
295
- section?: string;
296
- storage?: PhiCmsConfigFieldValueStorage;
297
- }) | (PhiCmsConfigFieldBase & {
298
- type: "border";
299
- section?: string;
300
- storage?: PhiCmsConfigFieldValueStorage;
301
294
  }) | (PhiCmsConfigFieldBase & {
302
295
  /**
303
296
  * A Surface (`types/surface.ts`) of something the Widget draws inside itself -- each entry of a
@@ -308,7 +301,7 @@ export type PhiCmsConfigField = (PhiCmsConfigFieldBase & {
308
301
  /** Whether the mode is offered; left out, it is. */
309
302
  tone?: false;
310
303
  }) | (PhiCmsConfigFieldBase & {
311
- type: "shadow" | "grid-placement" | "column-count";
304
+ type: "grid-placement" | "column-count";
312
305
  section?: string;
313
306
  });
314
307
  export type PhiCmsLayoutSlotDefinition = {
@@ -575,7 +568,9 @@ export type PhiCmsRuntimeRenderRegistry = {
575
568
  dataProviderDescriptorsByKey: ReadonlyMap<PhiRuntimeDataProviderKey, PhiRuntimeModuleDataProviderDescriptor>;
576
569
  formDefinitionsById: ReadonlyMap<string, PhiRuntimeModuleFormDefinition>;
577
570
  };
578
- export type PhiCmsRenderIssueCode = "missing-module" | "missing-renderer" | "renderer-load-failed" | "render-failed" | "invalid-render-output"
571
+ export type PhiCmsRenderIssueCode = "missing-module" | "missing-renderer" | "renderer-load-failed" | "render-failed"
572
+ /** The stored config holds a value the block cannot read (`PhiConfigError`); the detail names the field. */
573
+ | "invalid-config" | "invalid-render-output"
579
574
  /** A node whose `visibleWhen` reads a feature namespace whose Module could not be asked this render. */
580
575
  | "feature-unavailable"
581
576
  /** A Region or Overlay zone names a root layout node the tree does not contain. */
@@ -18,7 +18,7 @@ import type { PhiTextTone } from "../components/widgets/config/text-tone";
18
18
  import type { PhiCommonControlActionKey } from "../components/widgets/label-types/common-controls";
19
19
  import type { PhiMaskConfig } from "../components/widgets/config/mask";
20
20
  import type { PhiSpacingScaleKey } from "../components/widgets/config/spacing-options";
21
- import type { PhiCardVariant } from "../components/widgets/shared/card-vocabulary";
21
+ import type { PhiCardBillingPeriod, PhiCardVariant } from "../components/widgets/shared/card-vocabulary";
22
22
  import type { PhiControlBadgeConfig, PhiControlConfig } from "../components/widgets/config/control-signal-config";
23
23
  /**
24
24
  * The part of a placement every Widget shares, whatever it is.
@@ -285,10 +285,21 @@ export type PhiCmsCollectionCardPresentation = {
285
285
  actionLabel?: string;
286
286
  actionHref?: string;
287
287
  variant?: PhiCardVariant;
288
- /** Every card in the View draws this body; `stat` needs `value`. */
289
- body?: "text" | "stat";
288
+ /** Every card in the View draws this body; `stat` needs `value`, `plan` a `price`. */
289
+ body?: "text" | "stat" | "plan";
290
290
  /** A field whose truth marks the card as highlighted. */
291
291
  highlight?: string;
292
+ /** The words on the card's band. */
293
+ badge?: string;
294
+ /** A `plan`'s prices and their periods, as a provider answers them -- per country, if it knows one. */
295
+ price?: string;
296
+ pricePeriod?: string;
297
+ priceYearly?: string;
298
+ pricePeriodYearly?: string;
299
+ /** A field holding the plan's features, each `{ text, state? }` (`PhiBulletListEntry`). */
300
+ features?: string;
301
+ /** Which price every plan card of the View shows. Not a path: the View's own choice. */
302
+ billingPeriod?: PhiCardBillingPeriod;
292
303
  };
293
304
  export type PhiCollectionViewWidgetPlacement = PhiWidgetPlacementBase & {
294
305
  presentation?: {
@@ -1,3 +1,4 @@
1
+ import type { PhiRuntimeModuleCatalog } from "./cms-plugins";
1
2
  import type { PhiCmsAreaKey } from "../constants/cms-areas";
2
3
  import type { PhiTimelineEntry } from "@phis/contracts/timeline";
3
4
  import type { PhiAccessViewer, PhiViewerAccessPolicy } from "./access";
@@ -30,15 +31,48 @@ export declare function createPhiDashboardCardId(moduleId: string, leaf: string)
30
31
  * `stat` is a figure, what it is, and where to go for more. `list` is a handful of entries -- what
31
32
  * changed, what is waiting -- each a line with an optional time and tone; the Builder's Dashboard is the
32
33
  * case that asked for it, because what a structure author looks for first is what is open rather than
33
- * how many. The form names a renderer and the payload fills it, and a form Core offers is a promise it
34
- * then keeps: a series card stays open until somebody has a series (DASHBOARD.md section 9).
34
+ * how many. `series` is a figure over time -- a day's views, clones or downloads for the last month --
35
+ * drawn as a line per series under its headline; the project-stats Add-on is the case that asked for it
36
+ * (DASHBOARD.md section 9). The form names a renderer and the payload fills it, and a form Core offers
37
+ * is a promise it then keeps.
35
38
  */
36
- export type PhiDashboardCardForm = "stat" | "list";
39
+ export type PhiDashboardCardForm = "stat" | "list" | "series";
37
40
  /**
38
41
  * How many entries a `list` card draws. A card shows little and leads out (DASHBOARD.md section 2); a
39
42
  * provider that has more says so in `meta` and lets the card's target show the rest.
40
43
  */
41
44
  export declare const PHI_DASHBOARD_CARD_LIST_LIMIT = 5;
45
+ /**
46
+ * How many series a `series` card draws. Two or three lines on a card's width still read as a comparison
47
+ * -- views and unique visitors -- and a fourth is a chart that wants a page of its own; a provider that has
48
+ * more puts them on separate cards or on the card's target.
49
+ */
50
+ export declare const PHI_DASHBOARD_CARD_SERIES_LIMIT = 3;
51
+ /**
52
+ * A `series` card's figures over time.
53
+ *
54
+ * Point by point, oldest first, because that is how a provider counts: one row per day, each with a value
55
+ * for every series. `labels` names the series in the order each point's `values` states them, so a point
56
+ * carries exactly one number per label -- a day nothing was counted on is a `0`, not a missing value,
57
+ * because a gap a line would have to bridge or break is a decision the card should not be making.
58
+ *
59
+ * `at` is when the point stands: an ISO date (`2026-11-05`) for a day, or an instant. The card formats it
60
+ * in the page's locale, a date as the calendar day it names. `unit` is a word for what is counted,
61
+ * already translated ("views", "downloads"), drawn after the figure in the chart's spoken label.
62
+ *
63
+ * The headline is the payload's `value`, as on a `stat` card: a figure the provider states -- a total
64
+ * over the period, which the points cannot add up to when the provider counts uniques. Absent, the card
65
+ * shows the latest point of the first series.
66
+ */
67
+ export type PhiDashboardCardSeries = {
68
+ labels: string[];
69
+ points: PhiDashboardCardSeriesPoint[];
70
+ unit?: string;
71
+ };
72
+ export type PhiDashboardCardSeriesPoint = {
73
+ at: string;
74
+ values: number[];
75
+ };
42
76
  export type PhiDashboardCardDescriptor = {
43
77
  cardId: PhiDashboardCardId;
44
78
  form: PhiDashboardCardForm;
@@ -95,7 +129,7 @@ export type PhiDashboardCardDescriptor = {
95
129
  */
96
130
  export type PhiDashboardCardPayload = {
97
131
  cardId: PhiDashboardCardId;
98
- /** A `stat` card's figure, drawn under the descriptor's title. */
132
+ /** A `stat` card's figure, drawn under the descriptor's title, and a `series` card's headline. */
99
133
  value?: string;
100
134
  /**
101
135
  * A `list` card's entries, newest or most pressing first, at most `PHI_DASHBOARD_CARD_LIST_LIMIT` of
@@ -103,6 +137,8 @@ export type PhiDashboardCardPayload = {
103
137
  * card formats in the page's locale, or in words where words are what the provider has.
104
138
  */
105
139
  entries?: PhiTimelineEntry[];
140
+ /** A `series` card's points, drawn under the headline `value`. */
141
+ series?: PhiDashboardCardSeries;
106
142
  description?: string;
107
143
  meta?: string;
108
144
  error?: string | null;
@@ -133,6 +169,14 @@ export type PhiDashboardCardContext = {
133
169
  locale: string;
134
170
  area: PhiCmsAreaKey;
135
171
  viewer: PhiAccessViewer;
172
+ /**
173
+ * The Module catalog of the Area the Dashboard stands in.
174
+ *
175
+ * A card about structure -- which Area has an open draft -- has to know the Area shells, and the
176
+ * only catalog it may know is the one it is running in. Importing the first-party catalog instead
177
+ * would compile every Module into the provider (MODULES.md, "The dependency rule").
178
+ */
179
+ runtimeModuleCatalog: PhiRuntimeModuleCatalog;
136
180
  };
137
181
  /**
138
182
  * One Module's answer, loaded on the server and never reached from the browser.
@@ -18,3 +18,9 @@ export function createPhiDashboardCardId(moduleId, leaf) {
18
18
  * provider that has more says so in `meta` and lets the card's target show the rest.
19
19
  */
20
20
  export const PHI_DASHBOARD_CARD_LIST_LIMIT = 5;
21
+ /**
22
+ * How many series a `series` card draws. Two or three lines on a card's width still read as a comparison
23
+ * -- views and unique visitors -- and a fourth is a chart that wants a page of its own; a provider that has
24
+ * more puts them on separate cards or on the card's target.
25
+ */
26
+ export const PHI_DASHBOARD_CARD_SERIES_LIMIT = 3;
package/types/media.d.ts CHANGED
@@ -69,7 +69,6 @@ export type PhiMediaAssetVariant = {
69
69
  deliveryUrl: string;
70
70
  contentType: string;
71
71
  bytes: number | null;
72
- checksumSha256: string | null;
73
72
  width: number;
74
73
  height: number;
75
74
  blurDataUrl: string | null;
@@ -90,7 +89,6 @@ export type PhiMediaAsset = {
90
89
  contentType: string;
91
90
  kind: PhiMediaKindValue;
92
91
  bytes: number | null;
93
- checksumSha256: string | null;
94
92
  width: number | null;
95
93
  height: number | null;
96
94
  blurDataUrl: string | null;
@@ -127,7 +125,6 @@ export type PhiMediaAssetTile = {
127
125
  width: number | null;
128
126
  height: number | null;
129
127
  bytes: number | null;
130
- checksumSha256: string | null;
131
128
  lifecycleStatus: number;
132
129
  deliveryPolicy: number;
133
130
  deliveryRevision: number;
@@ -48,7 +48,12 @@ export type PhiRenderableBlockTransitionEasing = PhiMotionEasing;
48
48
  export type PhiRenderableBlockTransitionAxis = "x" | "y" | "z";
49
49
  export type PhiRenderableBlockTransitionOrigin = "top left" | "top center" | "top right" | "center left" | "center" | "center right" | "bottom left" | "bottom center" | "bottom right";
50
50
  export type PhiRenderableBlockTransitionTrigger = "on_mount" | "on_ready" | "on_visible" | "on_hover" | "on_focus" | "manual";
51
- export type PhiRenderableBlockViewportEffectAxis = "x" | "y";
51
+ /**
52
+ * Along which axis a viewport effect moves, or about which one it turns. `z` turns flat in the page plane
53
+ * and only means something for `rotate`; a translate along `z` is refused when the config is read. Progress
54
+ * is measured along `x` for `x`, and along the page's own scroll direction for `y` and `z`.
55
+ */
56
+ export type PhiRenderableBlockViewportEffectAxis = "x" | "y" | "z";
52
57
  export type PhiRenderableBlockViewportEffectProperty = "translate" | "opacity" | "rotate" | "scale";
53
58
  export type PhiRenderableBlockViewportEffectRangePoint = "enter" | "center" | "exit";
54
59
  export type PhiRenderableBlockViewportEffectUnit = "px" | "%" | "deg" | "";
@@ -1,4 +1,5 @@
1
1
  import type { PhiShadow } from "./layout-style";
2
+ import type { PhiLinkTarget } from "./references";
2
3
  import type { PhiCmsBackgroundWidgetConfig } from "../components/widgets/config/background";
3
4
  /**
4
5
  * The Theme Root Background (SHELL.md "Root Background and Shell Backdrop Layers"): painted once at
@@ -113,8 +114,15 @@ export type PhiSiteThemeBrandLine = {
113
114
  * decides is whether and how the Brand Widget appears; what it shows is decided here.
114
115
  */
115
116
  export type PhiSiteThemeBrand = {
116
- /** Where the Brand Widget leads when it is clicked. The Site root where nothing says otherwise. */
117
- homeHref?: string | null;
117
+ /**
118
+ * Where the Brand Widget leads when it is clicked. The Site root where nothing says otherwise.
119
+ *
120
+ * A link target like every other destination an author picks (`REFERENCES.md`): a Page by reference,
121
+ * resolved to its address per render, so a Page that is renamed or moved keeps the Brand leading to
122
+ * it. A Page that no longer resolves leads to the Site root rather than to a 404. The key ends in
123
+ * `LinkTarget`, which is what the reference collectors go by.
124
+ */
125
+ homeLinkTarget?: PhiLinkTarget | null;
118
126
  /** The small line above the Wordmark, for Sites whose name needs a word of context. */
119
127
  eyebrow?: string | null;
120
128
  /** The Logo, one picture per mode. A mode the record says nothing about wears the Theme Set's. */
@@ -426,6 +426,15 @@ export type PhiTableProviderQueryCapabilities = {
426
426
  filterFields?: readonly string[];
427
427
  sorting?: "none" | "single" | "multiple";
428
428
  pagination?: "none" | "offset" | "cursor";
429
+ /**
430
+ * Whether a query of this resource answers `total`, the rows the whole query has.
431
+ *
432
+ * Counting is a query of its own on a large table, so a paging resource answers it only where it
433
+ * says so here. A Table that shows a count -- `totalRows` or `pageCount` in its footer or summary --
434
+ * needs a resource that counts or does not page; one that pages without a count is paged back and
435
+ * forward. A resource that does not page answers every row at once, and its rows are its count.
436
+ */
437
+ total?: boolean;
429
438
  facets?: readonly string[];
430
439
  expansion?: boolean;
431
440
  };
@@ -260,6 +260,26 @@ export function validatePhiTableProviderFieldValue(field, value, row) {
260
260
  }
261
261
  export function validatePhiTableWidgetBinding(config, resource) {
262
262
  const errors = [];
263
+ /*
264
+ * A count shown needs a count given. The rows of one page are not the query's, so a Table that says
265
+ * how many there are, or how many pages, is bound to a resource that counts -- or one that does not
266
+ * page and so answers every row at once (`query.total`).
267
+ */
268
+ const resourceCounts = resource.query.total === true ||
269
+ (resource.query.pagination !== "offset" && resource.query.pagination !== "cursor");
270
+ if (!resourceCounts) {
271
+ const footer = config.presentation.footer;
272
+ const shownSources = [
273
+ ...(footer?.values ?? []).map((item) => item.value),
274
+ ...(footer?.variants ?? []).flatMap((variant) => [variant.when.value, ...(variant.values ?? []).map((item) => item.value)]),
275
+ ...(config.presentation.summary?.rows ?? []).flatMap((row) => row.cells.map((cell) => cell.item.value)),
276
+ ];
277
+ const counted = shownSources.find((source) => source.source === "core" && (source.fieldKey === "totalRows" || source.fieldKey === "pageCount"));
278
+ if (counted) {
279
+ errors.push(`Table shows "${counted.fieldKey}", but resource "${resource.resourceKey}" pages without a count ` +
280
+ "(declare query.total on a resource that answers total).");
281
+ }
282
+ }
263
283
  const fields = new Set(resource.fields.map((field) => field.key));
264
284
  const fieldsByKey = new Map(resource.fields.map((field) => [field.key, field]));
265
285
  const columns = config.presentation.columns;
package/types.d.ts CHANGED
@@ -18,7 +18,7 @@ export * from "./types/spacing";
18
18
  export * from "./types/runtime-condition";
19
19
  export * from "./types/state-machine";
20
20
  export * from "./types/access";
21
- export type { PhiAuthoringRenderPolicy, PhiCmsBuilderWidgetEditorInteraction, PhiCmsBuilderWidgetPlugin, PhiCmsBuilderWidgetRenderArgs, PhiCmsConfigField, PhiCmsConfigFieldChoiceCreateBehavior, PhiCmsConfigFieldChoiceFilter, PhiCmsConfigFieldChoiceMode, PhiCmsConfigFieldChoicePresentation, PhiCmsConfigFieldChoiceValueType, PhiCmsConfigFieldCollectionPresentation, PhiCmsConfigFieldColorMode, PhiCmsConfigFieldValueStorage, PhiCmsConfigFieldVisibilityRule, PhiCmsLayoutPlugin, PhiCmsLayoutPluginDefinition, PhiCmsLayoutPluginRenderArgs, PhiCmsLayoutSlotDefinition, PhiCmsPluginCommercialMeta, PhiCmsPluginCommercialPlan, PhiCmsPluginLicenseState, PhiCmsPreviewWidgetPlugin, PhiCmsResolvedRequestLoaderArgs, PhiCmsRuntimeWidgetPlugin, PhiCmsServerWidgetPlugin, PhiCmsSiteBridge, PhiCmsSiteRuntime, PhiCmsWidgetAuthoringCanvas, PhiCmsWidgetAuthoringContext, PhiCmsWidgetContentBinding, PhiCmsWidgetPlugin, PhiCmsWidgetPluginDefinition, PhiCmsWidgetPluginRenderArgs, PhiCmsWidgetRuntimeControllerRequirementArgs, PhiCmsWidgetRuntimeControllerRequirementResolver, PhiCmsWidgetSignalSubcontrolCollection, PhiPreviewRenderPolicy, PhiResolvedCmsRequest, PhiRuntimeControllerDefinition, PhiRuntimeControllerFlag, PhiRuntimeControllerMountScope, PhiRuntimeControllerPlugin, PhiRuntimeControllerPreloadMap, PhiRuntimeControllerRenderArgs, PhiRuntimeControllerRequirement, PhiRuntimeControllerServerPreloadArgs, PhiRuntimeControllerSetting, PhiRuntimeModule, PhiRuntimeModuleAuthoringClientProps, PhiRuntimeModuleCalendarAdapterClientDefinition, PhiRuntimeModuleCatalog, PhiRuntimeModuleCatalogEntry, PhiRuntimeModuleClientWidgetDefinition, PhiRuntimeModuleControllerClientProps, PhiRuntimeModuleControllerDescriptor, PhiRuntimeModuleControllerMountPolicy, PhiRuntimeModuleDataProviderClientDefinition, PhiRuntimeModuleDataProviderClientProps, PhiRuntimeModuleDataProviderDescriptor, PhiRuntimeModuleDefinition, PhiRuntimeModuleFeatureContext, PhiRuntimeModuleFeatureResolver, PhiRuntimeModuleFormDefinition, PhiRuntimeModuleLayoutDefinition, PhiRuntimeModuleLoader, PhiRuntimeModuleRenderPolicies, PhiRuntimeModuleUiProvider, PhiRuntimeModuleWidgetDefinition, PhiRuntimeRenderPolicy, } from "./types/cms-plugins";
21
+ export type { PhiAuthoringRenderPolicy, PhiCmsBuilderWidgetEditorInteraction, PhiCmsBuilderWidgetPlugin, PhiCmsBuilderWidgetRenderArgs, PhiCmsConfigField, PhiCmsConfigFieldChoiceCreateBehavior, PhiCmsConfigFieldChoiceFilter, PhiCmsConfigFieldChoiceMode, PhiCmsConfigFieldChoicePresentation, PhiCmsConfigFieldChoiceValueType, PhiCmsConfigFieldCollectionPresentation, PhiCmsConfigFieldColorMode, PhiCmsConfigFieldVisibilityRule, PhiCmsLayoutPlugin, PhiCmsLayoutPluginDefinition, PhiCmsLayoutPluginRenderArgs, PhiCmsLayoutSlotDefinition, PhiCmsPluginCommercialMeta, PhiCmsPluginCommercialPlan, PhiCmsPluginLicenseState, PhiCmsPreviewWidgetPlugin, PhiCmsResolvedRequestLoaderArgs, PhiCmsRuntimeWidgetPlugin, PhiCmsServerWidgetPlugin, PhiCmsSiteBridge, PhiCmsSiteRuntime, PhiCmsWidgetAuthoringCanvas, PhiCmsWidgetAuthoringContext, PhiCmsWidgetContentBinding, PhiCmsWidgetPlugin, PhiCmsWidgetPluginDefinition, PhiCmsWidgetPluginRenderArgs, PhiCmsWidgetRuntimeControllerRequirementArgs, PhiCmsWidgetRuntimeControllerRequirementResolver, PhiCmsWidgetSignalSubcontrolCollection, PhiPreviewRenderPolicy, PhiResolvedCmsRequest, PhiRuntimeControllerDefinition, PhiRuntimeControllerFlag, PhiRuntimeControllerMountScope, PhiRuntimeControllerPlugin, PhiRuntimeControllerPreloadMap, PhiRuntimeControllerRenderArgs, PhiRuntimeControllerRequirement, PhiRuntimeControllerServerPreloadArgs, PhiRuntimeControllerSetting, PhiRuntimeModule, PhiRuntimeModuleAuthoringClientProps, PhiRuntimeModuleCalendarAdapterClientDefinition, PhiRuntimeModuleCatalog, PhiRuntimeModuleCatalogEntry, PhiRuntimeModuleClientWidgetDefinition, PhiRuntimeModuleControllerClientProps, PhiRuntimeModuleControllerDescriptor, PhiRuntimeModuleControllerMountPolicy, PhiRuntimeModuleDataProviderClientDefinition, PhiRuntimeModuleDataProviderClientProps, PhiRuntimeModuleDataProviderDescriptor, PhiRuntimeModuleDefinition, PhiRuntimeModuleFeatureContext, PhiRuntimeModuleFeatureResolver, PhiRuntimeModuleFormDefinition, PhiRuntimeModuleLayoutDefinition, PhiRuntimeModuleLoader, PhiRuntimeModuleRenderPolicies, PhiRuntimeModuleUiProvider, PhiRuntimeModuleWidgetDefinition, PhiRuntimeRenderPolicy, } from "./types/cms-plugins";
22
22
  export type * from "./types/cms-presets";
23
23
  export type * from "./types/slot-size-policy";
24
24
  export type * from "./types/runtime-data-provider";
@@ -7,4 +7,6 @@
7
7
  */
8
8
  export { readBoolean, readCssSize, readInteger, readNavItems, readNumber, readRenderableBlockConfig, readString, } from "./components/widgets/config/parser-primitives";
9
9
  export type { PhiCmsWidgetConfigBase } from "./components/widgets/config/parser-primitives";
10
+ export { PhiConfigError, createPhiConfigReader, isPhiConfigError, } from "./components/widgets/config/strict-config-reader";
11
+ export type { PhiConfigReader } from "./components/widgets/config/strict-config-reader";
10
12
  export { normalizePhiRenderableBlockResponsiveSize, normalizePhiRenderableBlockSize, readPhiResponsiveLength, } from "./helpers/renderable-block-normalizers";
package/widget-config.js CHANGED
@@ -6,5 +6,11 @@
6
6
  * logic into every package that ships a Widget.
7
7
  */
8
8
  export { readBoolean, readCssSize, readInteger, readNavItems, readNumber, readRenderableBlockConfig, readString, } from "./components/widgets/config/parser-primitives";
9
+ /*
10
+ * Strict reading (THIRD_PARTY_MODULES.md, "Reading a config"). A `parseConfig` built on it throws for a
11
+ * value that is present and wrong, naming the field; the Site then refuses to store it and a live page
12
+ * leaves the Widget out. The lenient readers above stay for what has not moved yet.
13
+ */
14
+ export { PhiConfigError, createPhiConfigReader, isPhiConfigError, } from "./components/widgets/config/strict-config-reader";
9
15
  /* A block's size and lengths are read where every other reader of a block reads them (D1). */
10
16
  export { normalizePhiRenderableBlockResponsiveSize, normalizePhiRenderableBlockSize, readPhiResponsiveLength, } from "./helpers/renderable-block-normalizers";
@@ -1,139 +0,0 @@
1
- import type { PhiCmsDescriptorBuildContext, PhiCmsRoutePresetDescriptor } from "../../types/cms-module-descriptors";
2
- export declare const PHI_AREA_BASE_RUNTIME_MODULE_AREA_SHELLS: ({
3
- ownerModuleId: "@phis/ui/modules/accounting";
4
- presetKey: string;
5
- shellPresetVersion: number;
6
- area: "accounting";
7
- loadTree: ({ page, runtime }: PhiCmsDescriptorBuildContext) => Promise<import("../../types").PhiResolvedCmsPageTree>;
8
- } | {
9
- ownerModuleId: "@phis/ui/modules/public";
10
- presetKey: string;
11
- shellPresetVersion: number;
12
- area: "public";
13
- exportedNodeKeys: readonly ["widgetBrand", "widgetNav", "widgetLocale"];
14
- loadTree: ({ page, runtime }: PhiCmsDescriptorBuildContext) => Promise<import("../../types").PhiResolvedCmsPageTree>;
15
- } | {
16
- ownerModuleId: "@phis/ui/modules/app";
17
- presetKey: string;
18
- shellPresetVersion: number;
19
- area: "app";
20
- loadTree: ({ page, runtime }: PhiCmsDescriptorBuildContext) => Promise<{
21
- pageMeta: import("../../types").PhiCmsResolvedPageMeta | null | undefined;
22
- runtimeModuleIds: `${string}/${string}`[] | null | undefined;
23
- regions: import("../../types").PhiCmsRegionNode[];
24
- overlays: import("../../types").PhiCmsOverlayNode[];
25
- layoutNodes: import("../../types").PhiCmsLayoutNode[];
26
- contentWidgets: import("../../types").PhiCmsContentWidgetNode[];
27
- controllerSettings: import("../../types/cms").PhiCmsTreeControllerSettings;
28
- page: import("../../types").PhiCmsPageNode;
29
- }>;
30
- exportedNodeKeys?: undefined;
31
- })[];
32
- export declare const PHI_AREA_BASE_RUNTIME_MODULE_ROUTES: (PhiCmsRoutePresetDescriptor | {
33
- ownerModuleId: "@phis/ui/modules/public";
34
- presetKey: string;
35
- presetVersion: number;
36
- area: "public";
37
- title: string;
38
- path: string;
39
- defaultPageFlags: number;
40
- loadTree: ({ page }: PhiCmsDescriptorBuildContext) => Promise<import("../../types").PhiResolvedCmsPageTree>;
41
- })[];
42
- export declare const PHI_CORE_RUNTIME_MODULE_THEMES: {
43
- loadPreset: () => {
44
- readonly key: "phis";
45
- readonly version: 1;
46
- readonly title: "Phis";
47
- readonly description: "Warm orange brand color with a deep blue text base.";
48
- readonly palette: {
49
- readonly seed: {
50
- readonly colorPrimary: "#E05A2A";
51
- readonly colorInfo: "#7088BA";
52
- readonly colorSuccess: "#4D8F6B";
53
- readonly colorWarning: "#D99A2B";
54
- readonly colorError: "#C94A3A";
55
- readonly colorLink: "#7088BA";
56
- };
57
- readonly modes: {
58
- readonly light: {
59
- readonly seed: {
60
- readonly colorTextBase: "#223A61";
61
- readonly colorBgBase: "#ffffff";
62
- };
63
- readonly overrides: {
64
- readonly colorFillQuaternary: "rgba(34, 58, 97, 0.03)";
65
- };
66
- };
67
- readonly dark: {
68
- readonly seed: {
69
- readonly colorTextBase: "#DCE7F8";
70
- readonly colorBgBase: "#050914";
71
- };
72
- readonly overrides: {
73
- readonly colorFillQuaternary: "rgba(220, 231, 248, 0.06)";
74
- };
75
- };
76
- };
77
- };
78
- };
79
- description?: "Warm orange brand color with a deep blue text base." | undefined;
80
- ownerModuleId: "@phis/ui/modules/core";
81
- presetKey: string;
82
- presetVersion: number;
83
- themeKey: "phis";
84
- title: "Phis";
85
- }[];
86
- /**
87
- * The Public form pages, in their own list because they appear only where Forms are allowed. The
88
- * contact page is Core's like the terms: every Site starts with a way to be reached, and neither is
89
- * a landing -- the front door is the Site package's business.
90
- */
91
- export declare const PHI_PUBLIC_FORM_RUNTIME_MODULE_ROUTES: ({
92
- ownerModuleId: "@phis/ui/modules/public";
93
- presetKey: "public-contact-page";
94
- presetVersion: number;
95
- area: "public";
96
- title: string;
97
- path: string;
98
- navigation: ({
99
- navKey: "public:header";
100
- parentItemKey: null;
101
- after: string;
102
- item: {
103
- itemKey: string;
104
- label: {
105
- defaultMessage: string;
106
- };
107
- icon: string;
108
- routePresetKey: string;
109
- };
110
- } | {
111
- navKey: "public:footer";
112
- parentItemKey: null;
113
- after: string;
114
- item: {
115
- itemKey: string;
116
- label: {
117
- defaultMessage: string;
118
- };
119
- routePresetKey: string;
120
- icon?: undefined;
121
- };
122
- })[];
123
- loadTree: ({ page }: PhiCmsDescriptorBuildContext & {
124
- activeModuleIds: ReadonlySet<import("./contracts").PhiRuntimeModuleId>;
125
- params: Readonly<Record<string, string>>;
126
- }) => Promise<import("../../types").PhiResolvedCmsPageTree>;
127
- } | {
128
- ownerModuleId: "@phis/ui/modules/public";
129
- presetKey: "public-unsubscribe-page";
130
- presetVersion: number;
131
- area: "public";
132
- title: string;
133
- path: string;
134
- navigation: never[];
135
- loadTree: ({ page }: PhiCmsDescriptorBuildContext & {
136
- activeModuleIds: ReadonlySet<import("./contracts").PhiRuntimeModuleId>;
137
- params: Readonly<Record<string, string>>;
138
- }) => Promise<import("../../types").PhiResolvedCmsPageTree>;
139
- })[];