@phis/ui 0.4.1 → 0.4.3

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 (246) 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-bullet-list-control.js +31 -2
  7. package/components/controls/phi-ribbon-control.d.ts +29 -0
  8. package/components/controls/phi-ribbon-control.js +53 -0
  9. package/components/controls/phi-table-control.d.ts +3 -0
  10. package/components/controls/phi-table-control.js +13 -1
  11. package/components/controls/phi-tree-control.js +3 -3
  12. package/components/forms/shared-form-provider-registry.js +1 -4
  13. package/components/media/asset-collection-runtime.js +6 -16
  14. package/components/media/media-font-metrics.d.ts +3 -0
  15. package/components/media/media-font-metrics.js +43 -0
  16. package/components/media/phi-area-upload-widget.js +53 -97
  17. package/components/media/phi-image-preview-data.d.ts +13 -0
  18. package/components/media/phi-image-preview-data.js +184 -9
  19. package/components/media/phi-media-picker-binding.js +16 -13
  20. package/components/media/phi-media-upload.d.ts +15 -8
  21. package/components/media/phi-media-upload.js +18 -9
  22. package/components/media/phi-site-font-assets.js +7 -8
  23. package/components/overlays/phi-overlay-container-client.js +16 -1
  24. package/components/regions/presets/phi-settings-page-shell-tree.js +48 -1
  25. package/components/runtime/runtime-controller-materialization.js +12 -1
  26. package/components/state/scoped-state-store.js +20 -3
  27. package/components/tables/client/phi-table-binding.d.ts +2 -1
  28. package/components/tables/client/phi-table-binding.js +45 -21
  29. package/components/trees/client/phi-tree-binding.js +19 -11
  30. package/components/widgets/client/bullet-list-entries-editor.d.ts +26 -0
  31. package/components/widgets/client/bullet-list-entries-editor.js +103 -0
  32. package/components/widgets/config/choice-shared.js +12 -13
  33. package/components/widgets/config/command-buttons.d.ts +5 -1
  34. package/components/widgets/config/command-buttons.js +38 -81
  35. package/components/widgets/config/control-signal-config.d.ts +3 -1
  36. package/components/widgets/config/control-signal-config.js +19 -17
  37. package/components/widgets/config/image-source-parser.d.ts +1 -0
  38. package/components/widgets/config/image-source-parser.js +7 -8
  39. package/components/widgets/config/mask.d.ts +6 -1
  40. package/components/widgets/config/mask.js +24 -1
  41. package/components/widgets/config/parser-primitives.js +72 -0
  42. package/components/widgets/config/stack-tabs.d.ts +1 -1
  43. package/components/widgets/config/stack-tabs.js +2 -3
  44. package/components/widgets/config/strict-config-reader.d.ts +40 -0
  45. package/components/widgets/config/strict-config-reader.js +174 -0
  46. package/components/widgets/label-sets/effects.js +2 -0
  47. package/components/widgets/label-types/effects.d.ts +1 -0
  48. package/components/widgets/label-types/effects.js +1 -0
  49. package/components/widgets/navigation-descriptor-resolver.server.js +20 -8
  50. package/components/widgets/shared/bullet-list-vocabulary.d.ts +17 -1
  51. package/components/widgets/shared/bullet-list-vocabulary.js +19 -2
  52. package/components/widgets/shared/card-body-client.d.ts +16 -4
  53. package/components/widgets/shared/card-body-client.js +81 -24
  54. package/components/widgets/shared/card-vocabulary.d.ts +21 -4
  55. package/components/widgets/shared/card-vocabulary.js +28 -2
  56. package/components/widgets/shared/markdown-body-client.d.ts +2 -1
  57. package/components/widgets/shared/markdown-body-client.js +3 -1
  58. package/components/widgets/shared/markdown-render.js +8 -1
  59. package/components/widgets/signals/control-signal-capabilities.d.ts +0 -18
  60. package/components/widgets/signals/control-signal-capabilities.js +10 -22
  61. package/components/workspace/catalog-store.d.ts +4 -3
  62. package/components/workspace/catalog-store.js +6 -5
  63. package/gateway/dashboard-cards-route.js +1 -0
  64. package/gateway/internal-references.d.ts +6 -1
  65. package/gateway/internal-references.js +48 -23
  66. package/gateway/site-cms-write-validation.d.ts +9 -0
  67. package/gateway/site-cms-write-validation.js +78 -0
  68. package/gateway/site-proxy.js +19 -3
  69. package/helpers/renderable-block-serialization.js +1 -1
  70. package/next/config.d.mts +3 -0
  71. package/next/config.mjs +28 -1
  72. package/package.json +2 -2
  73. package/plugins/runtime/phi-slot-child-viewport-effects-observer.js +5 -1
  74. package/plugins/runtime-modules/accounting/presets.d.ts +9 -0
  75. package/plugins/runtime-modules/accounting/presets.js +37 -0
  76. package/plugins/runtime-modules/accounting/server.d.ts +1 -4
  77. package/plugins/runtime-modules/accounting/server.js +4 -7
  78. package/plugins/runtime-modules/app/presets.d.ts +18 -0
  79. package/plugins/runtime-modules/app/presets.js +67 -0
  80. package/plugins/runtime-modules/app/server.d.ts +1 -4
  81. package/plugins/runtime-modules/app/server.js +4 -7
  82. package/plugins/runtime-modules/asset/controller/runtime.js +2 -2
  83. package/plugins/runtime-modules/asset/services/collection.js +9 -1
  84. package/plugins/runtime-modules/asset/services/options.js +2 -2
  85. package/plugins/runtime-modules/builder/area-settings-answer.js +2 -1
  86. package/plugins/runtime-modules/builder/authoring-canvas.js +6 -6
  87. package/plugins/runtime-modules/builder/cards.js +3 -5
  88. package/plugins/runtime-modules/builder/clients/builder-region-overrides.js +3 -3
  89. package/plugins/runtime-modules/builder/clients/canvas-widget.js +15 -54
  90. package/plugins/runtime-modules/builder/clients/inspector-config-field.d.ts +4 -1
  91. package/plugins/runtime-modules/builder/clients/inspector-config-field.js +5 -34
  92. package/plugins/runtime-modules/builder/clients/inspector-link-target-field.js +1 -1
  93. package/plugins/runtime-modules/builder/clients/inspector-section-widget.js +8 -8
  94. package/plugins/runtime-modules/builder/clients/inspector-title.js +6 -6
  95. package/plugins/runtime-modules/builder/clients/layout-inspector.d.ts +1 -1
  96. package/plugins/runtime-modules/builder/clients/layout-inspector.js +11 -25
  97. package/plugins/runtime-modules/builder/clients/mode-switch.js +1 -1
  98. package/plugins/runtime-modules/builder/clients/pages-header.js +11 -11
  99. package/plugins/runtime-modules/builder/clients/pages-workspace.js +1 -1
  100. package/plugins/runtime-modules/builder/clients/region-visibility-fields.js +1 -1
  101. package/plugins/runtime-modules/builder/clients/runtime-module-authoring-boundary.js +1 -1
  102. package/plugins/runtime-modules/builder/clients/shells-workspace.js +15 -31
  103. package/plugins/runtime-modules/builder/clients/structure-canvas.js +1 -1
  104. package/plugins/runtime-modules/builder/clients/use-region-draft-hydration.d.ts +26 -0
  105. package/plugins/runtime-modules/builder/clients/use-region-draft-hydration.js +36 -0
  106. package/plugins/runtime-modules/builder/clients/widget-effects-editor.js +1 -1
  107. package/plugins/runtime-modules/builder/clients/widget-inspector.js +1 -0
  108. package/plugins/runtime-modules/builder/clients/workspace-scope-boundary.js +2 -2
  109. package/plugins/runtime-modules/builder/cms-instance-allocator.js +8 -28
  110. package/plugins/runtime-modules/builder/controller/client.d.ts +0 -15
  111. package/plugins/runtime-modules/builder/controller/definition.d.ts +0 -15
  112. package/plugins/runtime-modules/builder/controller/definition.js +0 -8
  113. package/plugins/runtime-modules/builder/controller/draft-command-controller.d.ts +1 -2
  114. package/plugins/runtime-modules/builder/controller/draft-command-controller.js +11 -30
  115. package/plugins/runtime-modules/builder/controller/draft-status-controller.js +15 -2
  116. package/plugins/runtime-modules/builder/controller/inspector-controller.d.ts +1 -2
  117. package/plugins/runtime-modules/builder/controller/inspector-controller.js +4 -7
  118. package/plugins/runtime-modules/builder/controller/page-controller.d.ts +1 -2
  119. package/plugins/runtime-modules/builder/controller/page-controller.js +16 -68
  120. package/plugins/runtime-modules/builder/controller/server-definition.d.ts +0 -15
  121. package/plugins/runtime-modules/builder/controller/signal-wiring-controller.d.ts +2 -5
  122. package/plugins/runtime-modules/builder/controller/signal-wiring-controller.js +6 -50
  123. package/plugins/runtime-modules/builder/controller/workspace-controller.d.ts +2 -3
  124. package/plugins/runtime-modules/builder/controller/workspace-controller.js +89 -153
  125. package/plugins/runtime-modules/builder/data-providers.d.ts +1 -0
  126. package/plugins/runtime-modules/builder/data-providers.js +1 -0
  127. package/plugins/runtime-modules/builder/definition.d.ts +1 -0
  128. package/plugins/runtime-modules/builder/developer-workspace-store.d.ts +64 -30
  129. package/plugins/runtime-modules/builder/developer-workspace-store.js +255 -61
  130. package/plugins/runtime-modules/builder/edit-scaffold-drawer.js +1 -1
  131. package/plugins/runtime-modules/builder/history.d.ts +3 -1
  132. package/plugins/runtime-modules/builder/options-providers.js +3 -2
  133. package/plugins/runtime-modules/builder/page-catalog-client.js +19 -7
  134. package/plugins/runtime-modules/builder/page-meta-form.js +1 -0
  135. package/plugins/runtime-modules/builder/page-references-provider.js +1 -1
  136. package/plugins/runtime-modules/builder/persistence.js +33 -69
  137. package/plugins/runtime-modules/builder/public-route-collisions.d.ts +2 -2
  138. package/plugins/runtime-modules/builder/public-route-collisions.js +6 -19
  139. package/plugins/runtime-modules/builder/render-root-node-preview.server.js +20 -3
  140. package/plugins/runtime-modules/builder/render-root-node-scaffold.js +3 -3
  141. package/plugins/runtime-modules/builder/runtime-module-selection.d.ts +2 -12
  142. package/plugins/runtime-modules/builder/runtime-module-selection.js +16 -42
  143. package/plugins/runtime-modules/builder/services/navigation-table.js +9 -15
  144. package/plugins/runtime-modules/builder/services/page-source-tree.js +8 -8
  145. package/plugins/runtime-modules/builder/services/runtime-modules-table.js +10 -10
  146. package/plugins/runtime-modules/builder/services/signal-routes-table.js +3 -3
  147. package/plugins/runtime-modules/builder/signal-route-selection.d.ts +1 -2
  148. package/plugins/runtime-modules/builder/signal-route-selection.js +2 -2
  149. package/plugins/runtime-modules/builder/signal-wiring-options.js +3 -2
  150. package/plugins/runtime-modules/builder/structure-dnd.js +8 -61
  151. package/plugins/runtime-modules/builder/trees/phi-default-builder-area-preset-tree.js +13 -10
  152. package/plugins/runtime-modules/builder/widgets/structure-region/built-in.js +12 -18
  153. package/plugins/runtime-modules/builder/workspace-catalog-actions.d.ts +55 -0
  154. package/plugins/runtime-modules/builder/workspace-catalog-actions.js +142 -0
  155. package/plugins/runtime-modules/client-manifests/common.js +1 -1
  156. package/plugins/runtime-modules/{runtime-calendar-adapters.js → core/calendar-adapters.js} +2 -2
  157. package/plugins/runtime-modules/{client-calendar-adapters/core.js → core/client-calendar-adapters.js} +1 -1
  158. package/plugins/runtime-modules/core/content-entries/table.js +1 -1
  159. package/plugins/runtime-modules/core/data-providers.d.ts +3 -0
  160. package/plugins/runtime-modules/core/data-providers.js +2 -1
  161. package/plugins/runtime-modules/core/definition.d.ts +3 -0
  162. package/plugins/runtime-modules/core/definition.js +1 -1
  163. package/plugins/runtime-modules/core/messaging/data-providers.d.ts +1 -0
  164. package/plugins/runtime-modules/core/messaging/data-providers.js +1 -0
  165. package/plugins/runtime-modules/core/messaging/thread-inbox-table.js +1 -1
  166. package/plugins/runtime-modules/core/server.js +1 -1
  167. package/plugins/runtime-modules/core/themes.d.ts +44 -0
  168. package/plugins/runtime-modules/core/themes.js +12 -0
  169. package/plugins/runtime-modules/core/widgets/card/collection-view-binding.js +25 -9
  170. package/plugins/runtime-modules/core/widgets/card/config.d.ts +296 -254
  171. package/plugins/runtime-modules/core/widgets/card/config.js +52 -3
  172. package/plugins/runtime-modules/core/widgets/card/editor.js +30 -3
  173. package/plugins/runtime-modules/core/widgets/card/server.d.ts +3 -0
  174. package/plugins/runtime-modules/core/widgets/card/server.js +31 -3
  175. package/plugins/runtime-modules/core/widgets/collection-view/asset-binding.js +7 -6
  176. package/plugins/runtime-modules/core/widgets/collection-view/config.js +9 -2
  177. package/plugins/runtime-modules/core/widgets/description/config.d.ts +1 -25
  178. package/plugins/runtime-modules/core/widgets/description/editor.js +4 -61
  179. package/plugins/runtime-modules/core/widgets/entry-list/config.d.ts +1 -25
  180. package/plugins/runtime-modules/core/widgets/gallery/config.d.ts +1 -25
  181. package/plugins/runtime-modules/core/widgets/image/config.js +2 -2
  182. package/plugins/runtime-modules/core/widgets/markdown/config.d.ts +3 -1
  183. package/plugins/runtime-modules/core/widgets/markdown/config.js +14 -0
  184. package/plugins/runtime-modules/core/widgets/markdown/editor.js +2 -3
  185. package/plugins/runtime-modules/core/widgets/result/config.d.ts +4 -25
  186. package/plugins/runtime-modules/core/widgets/result/config.js +2 -0
  187. package/plugins/runtime-modules/core/widgets/result/server.js +25 -19
  188. package/plugins/runtime-modules/core/widgets/simple-text/config.d.ts +1 -25
  189. package/plugins/runtime-modules/core/widgets/slot-upload/client.js +11 -2
  190. package/plugins/runtime-modules/core/widgets/table/client.js +8 -4
  191. package/plugins/runtime-modules/core/widgets/table/config.d.ts +3 -83
  192. package/plugins/runtime-modules/core/widgets/table/config.js +302 -452
  193. package/plugins/runtime-modules/core/widgets/tree/config.js +5 -2
  194. package/plugins/runtime-modules/dashboard/card-rows.d.ts +5 -0
  195. package/plugins/runtime-modules/dashboard/card-rows.js +59 -0
  196. package/plugins/runtime-modules/dashboard/clients/dashboard-card-view.js +4 -6
  197. package/plugins/runtime-modules/dashboard/services/collection.js +17 -7
  198. package/plugins/runtime-modules/groups/data-providers.d.ts +2 -0
  199. package/plugins/runtime-modules/groups/data-providers.js +3 -3
  200. package/plugins/runtime-modules/groups/definition.d.ts +2 -0
  201. package/plugins/runtime-modules/localization/data-providers.d.ts +3 -0
  202. package/plugins/runtime-modules/localization/data-providers.js +2 -0
  203. package/plugins/runtime-modules/localization/definition.d.ts +3 -0
  204. package/plugins/runtime-modules/localization/services/table.js +3 -7
  205. package/plugins/runtime-modules/observability/data-providers.d.ts +1 -0
  206. package/plugins/runtime-modules/observability/data-providers.js +1 -0
  207. package/plugins/runtime-modules/observability/definition.d.ts +1 -0
  208. package/plugins/runtime-modules/observability/module.d.ts +1 -0
  209. package/plugins/runtime-modules/observability/services/table.js +1 -1
  210. package/plugins/runtime-modules/phi-default-site-area-preset-tree.js +2 -105
  211. package/plugins/runtime-modules/public/presets.d.ts +115 -0
  212. package/plugins/runtime-modules/{area-base-presets.js → public/presets.js} +19 -119
  213. package/plugins/runtime-modules/public/server.d.ts +1 -4
  214. package/plugins/runtime-modules/public/server.js +4 -7
  215. package/plugins/runtime-modules/public/trees/phi-default-pub-error-page-tree.js +7 -8
  216. package/plugins/runtime-modules/public-base-page-references.d.ts +1 -1
  217. package/plugins/runtime-modules/public-base-page-references.js +1 -1
  218. package/plugins/runtime-modules/revisions/controller/client.js +11 -11
  219. package/plugins/runtime-modules/revisions/services/table.js +3 -3
  220. package/plugins/runtime-modules/theme/trees/phi-default-builder-theme-page-tree.js +22 -0
  221. package/plugins/runtime-modules/theme/widgets/brand-controls/client.d.ts +2 -1
  222. package/plugins/runtime-modules/theme/widgets/brand-controls/client.js +93 -58
  223. package/plugins/runtime-modules/theme/widgets/brand-controls/config.d.ts +2 -1
  224. package/plugins/runtime-modules/theme/widgets/brand-controls/config.js +23 -22
  225. package/plugins/runtime-modules/theme/widgets/brand-controls/plugin.js +1 -1
  226. package/plugins/runtime-modules/theme-descriptors.js +1 -1
  227. package/plugins/runtime-modules/user-management/data-providers.d.ts +2 -0
  228. package/plugins/runtime-modules/user-management/data-providers.js +1 -0
  229. package/plugins/runtime-modules/user-management/definition.d.ts +2 -0
  230. package/styles/control-shape.css +11 -11
  231. package/styles/controls.css +29 -3
  232. package/styles/layout.css +16 -7
  233. package/types/cms-config.js +142 -185
  234. package/types/cms-plugins.d.ts +4 -11
  235. package/types/core-widget-placements.d.ts +17 -3
  236. package/types/dashboard-cards.d.ts +9 -0
  237. package/types/media.d.ts +0 -3
  238. package/types/renderable-block.d.ts +6 -1
  239. package/types/table-widget.d.ts +9 -0
  240. package/types/table-widget.js +20 -0
  241. package/types.d.ts +1 -1
  242. package/widget-config.d.ts +2 -0
  243. package/widget-config.js +6 -0
  244. package/plugins/runtime-modules/area-base-presets.d.ts +0 -139
  245. /package/plugins/runtime-modules/{runtime-calendar-adapters.d.ts → core/calendar-adapters.d.ts} +0 -0
  246. /package/plugins/runtime-modules/{client-calendar-adapters/core.d.ts → core/client-calendar-adapters.d.ts} +0 -0
@@ -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" | "";
@@ -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
- })[];