@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
@@ -76,8 +76,8 @@ export function PhiQuickLinksWidgetClient({ labels, config, }) {
76
76
  width: "100%",
77
77
  minWidth: 0,
78
78
  color: "inherit",
79
- fontSize: token.fontSizeLG,
80
- lineHeight: token.lineHeightLG,
79
+ fontSize: token.fontSize,
80
+ lineHeight: token.lineHeight,
81
81
  }, children: labels.title })) : null, _jsx("div", { style: {
82
82
  display: "grid",
83
83
  gridTemplateColumns: `repeat(${groupedItems.length}, minmax(0, 1fr))`,
@@ -1,5 +1,3 @@
1
- import { type PhiBuilderNavigationItem } from "../../../../../helpers/cms-navigation-catalog";
2
1
  import type { PhiNavItem } from "../../../../../components/shell/shell-types";
3
2
  import type { PhiQuickLinksWidgetItem } from "./client";
4
3
  export declare function mapPhiNavItemsToQuickLinksItems(items: PhiNavItem[], locale: string, area: string, interactive?: boolean): PhiQuickLinksWidgetItem[];
5
- export declare function mapPhiBuilderNavigationItemsToQuickLinksItems(items: PhiBuilderNavigationItem[], locale: string, area: string): PhiQuickLinksWidgetItem[];
@@ -1,5 +1,4 @@
1
1
  import { resolvePhiNavHref } from "../../../../../helpers/locale";
2
- import {} from "../../../../../helpers/cms-navigation-catalog";
3
2
  export function mapPhiNavItemsToQuickLinksItems(items, locale, area, interactive = true) {
4
3
  return items
5
4
  .filter((item) => !item.separator && Boolean(item.href))
@@ -11,17 +10,3 @@ export function mapPhiNavItemsToQuickLinksItems(items, locale, area, interactive
11
10
  newTab: interactive ? item.newTab : false,
12
11
  }));
13
12
  }
14
- function flattenPhiBuilderNavigationItems(items) {
15
- return items.flatMap((item) => [item, ...(Array.isArray(item.children) ? flattenPhiBuilderNavigationItems(item.children) : [])]);
16
- }
17
- export function mapPhiBuilderNavigationItemsToQuickLinksItems(items, locale, area) {
18
- return flattenPhiBuilderNavigationItems(items)
19
- .filter((item) => item.href !== null)
20
- .map((item) => ({
21
- label: item.label,
22
- href: resolvePhiNavHref(locale, area, item.href),
23
- icon: item.icon ?? undefined,
24
- external: false,
25
- newTab: false,
26
- }));
27
- }
@@ -1,3 +1,4 @@
1
+ import { type PhiTextSource } from "../../../../../helpers/text-source";
1
2
  import { type PhiCmsWidgetConfigBase } from "../../../../../components/widgets/config/parser-primitives";
2
3
  import type { PhiResultWidgetVisualStatus } from "../../../../../types/result-widget";
3
4
  export type PhiCmsResultWidgetConfig = PhiCmsWidgetConfigBase & {
@@ -7,6 +8,8 @@ export type PhiCmsResultWidgetConfig = PhiCmsWidgetConfigBase & {
7
8
  subTitle?: string;
8
9
  homeLink?: boolean;
9
10
  homeLinkLabel?: string;
11
+ /** Whose words `title`, `subTitle` and `homeLinkLabel` are (`helpers/text-source.ts`). */
12
+ textSource?: PhiTextSource;
10
13
  };
11
14
  /**
12
15
  * The way out of a result that ended a journey.
@@ -42,6 +45,7 @@ export declare const PHI_RESULT_WIDGET_DEFINITION: {
42
45
  } & {
43
46
  type: "string" | "url" | "icon";
44
47
  emptyValue?: "";
48
+ placeholder?: string;
45
49
  }) | ({
46
50
  key: string;
47
51
  label: string;
@@ -315,30 +319,6 @@ export declare const PHI_RESULT_WIDGET_DEFINITION: {
315
319
  editorPlacement?: "inspector" | "geometry" | "toolbar";
316
320
  visibleWhen?: import("../../../../../types").PhiCmsConfigFieldVisibilityRule | readonly import("../../../../../types").PhiCmsConfigFieldVisibilityRule[];
317
321
  heading?: string;
318
- } & {
319
- type: "background";
320
- section?: string;
321
- storage?: import("../../../../../types").PhiCmsConfigFieldValueStorage;
322
- }) | ({
323
- key: string;
324
- label: string;
325
- description?: string;
326
- required?: boolean;
327
- editorPlacement?: "inspector" | "geometry" | "toolbar";
328
- visibleWhen?: import("../../../../../types").PhiCmsConfigFieldVisibilityRule | readonly import("../../../../../types").PhiCmsConfigFieldVisibilityRule[];
329
- heading?: string;
330
- } & {
331
- type: "border";
332
- section?: string;
333
- storage?: import("../../../../../types").PhiCmsConfigFieldValueStorage;
334
- }) | ({
335
- key: string;
336
- label: string;
337
- description?: string;
338
- required?: boolean;
339
- editorPlacement?: "inspector" | "geometry" | "toolbar";
340
- visibleWhen?: import("../../../../../types").PhiCmsConfigFieldVisibilityRule | readonly import("../../../../../types").PhiCmsConfigFieldVisibilityRule[];
341
- heading?: string;
342
322
  } & {
343
323
  type: "surface";
344
324
  tone?: false;
@@ -351,7 +331,7 @@ export declare const PHI_RESULT_WIDGET_DEFINITION: {
351
331
  visibleWhen?: import("../../../../../types").PhiCmsConfigFieldVisibilityRule | readonly import("../../../../../types").PhiCmsConfigFieldVisibilityRule[];
352
332
  heading?: string;
353
333
  } & {
354
- type: "shadow" | "grid-placement" | "column-count";
334
+ type: "grid-placement" | "column-count";
355
335
  section?: string;
356
336
  }) | {
357
337
  key: string;
@@ -1,5 +1,6 @@
1
1
  import { resolvePhiCmsWidgetPluginKey } from "../../../../../constants/cms-widget-types";
2
2
  import { PHI_RENDERABLE_BLOCK_GEOMETRY_FIELDS } from "../../../../../helpers/renderable-block-plugin-fields";
3
+ import { readPhiTextSource } from "../../../../../helpers/text-source";
3
4
  import { readBoolean, readRenderableBlockConfig, readString, } from "../../../../../components/widgets/config/parser-primitives";
4
5
  /**
5
6
  * The way out of a result that ended a journey.
@@ -36,6 +37,7 @@ function parsePhiCmsResultWidgetConfig(config) {
36
37
  subTitle: readString(config.subTitle),
37
38
  homeLink: readBoolean(config.homeLink) ?? true,
38
39
  homeLinkLabel: readString(config.homeLinkLabel),
40
+ textSource: readPhiTextSource(config.textSource),
39
41
  };
40
42
  }
41
43
  export const PHI_RESULT_WIDGET_DEFINITION = {
@@ -1,37 +1,43 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { PHI_TR_CTX_WEB_UI_LABEL, createSiteTranslator } from "../../../../../gateway/tr";
2
+ import { trWidgetText } from "../../../../../server-helpers/translate";
3
+ import { PHI_TEXT_SOURCE_PRESET } from "../../../../../helpers/text-source";
3
4
  import { PHI_RESULT_HOME_LINK_SOURCE_LABEL } from "./config";
4
5
  import { localizeAreaPath } from "../../../../../helpers/locale";
5
6
  import { PhiResultWidgetBody } from "../../../../../components/widgets/shared/result-body";
6
- import { readPhiServerApiCredentials } from "../../../../../helpers/phis-server-credentials";
7
+ /**
8
+ * The Result's words, each from the store of whoever wrote it (`helpers/text-source.ts`).
9
+ *
10
+ * A Preset's title and subtitle -- the error pages' "Not found" -- are the platform's and come from the
11
+ * global store; an author's are the Site's. The home link's default label is the Widget's own sentence,
12
+ * so it is the platform's whoever placed the Widget.
13
+ */
7
14
  async function resolveResultText({ config, runtime, translate }) {
8
15
  const code = config?.code?.trim();
9
16
  const title = config?.title?.trim();
10
17
  const subTitle = config?.subTitle?.trim();
11
- const homeLinkLabel = config?.homeLinkLabel?.trim() || PHI_RESULT_HOME_LINK_SOURCE_LABEL;
18
+ const authoredHomeLinkLabel = config?.homeLinkLabel?.trim();
19
+ const homeLinkLabel = authoredHomeLinkLabel || PHI_RESULT_HOME_LINK_SOURCE_LABEL;
12
20
  const shouldTranslate = translate &&
13
21
  config?.renderMode !== "preview" &&
14
- config?.renderMode !== "editor" &&
15
- Boolean(readPhiServerApiCredentials().apiBaseUrl.trim()) &&
16
- Boolean(readPhiServerApiCredentials().internalToken.trim()) &&
17
- Boolean(runtime.site.key.trim()) &&
18
- Boolean(runtime.locale.current.trim());
22
+ config?.renderMode !== "editor";
19
23
  if (!shouldTranslate) {
20
24
  return { code, title, subTitle, homeLinkLabel };
21
25
  }
22
- const translator = createSiteTranslator({
23
- apiBaseUrl: readPhiServerApiCredentials().apiBaseUrl,
24
- internalToken: readPhiServerApiCredentials().internalToken,
25
- siteKey: runtime.site.key,
26
- locale: runtime.locale.current,
27
- });
28
- const sourceTexts = [title ?? "", subTitle ?? "", homeLinkLabel];
29
- const translated = await translator.trBulk(sourceTexts, PHI_TR_CTX_WEB_UI_LABEL);
26
+ const locale = runtime.locale.current;
27
+ const textSource = config?.textSource;
28
+ const translateText = async (value) => value ? (await trWidgetText(locale, value, textSource)).trim() || value : value;
29
+ const [translatedTitle, translatedSubTitle, translatedHomeLinkLabel] = await Promise.all([
30
+ translateText(title),
31
+ translateText(subTitle),
32
+ authoredHomeLinkLabel
33
+ ? translateText(authoredHomeLinkLabel)
34
+ : trWidgetText(locale, PHI_RESULT_HOME_LINK_SOURCE_LABEL, PHI_TEXT_SOURCE_PRESET),
35
+ ]);
30
36
  return {
31
37
  code,
32
- title: translated[0]?.trim() || title,
33
- subTitle: translated[1]?.trim() || subTitle,
34
- homeLinkLabel: translated[2]?.trim() || homeLinkLabel,
38
+ title: translatedTitle,
39
+ subTitle: translatedSubTitle,
40
+ homeLinkLabel: translatedHomeLinkLabel?.trim() || homeLinkLabel,
35
41
  };
36
42
  }
37
43
  export async function PhiResultWidget({ config, runtime, translate }) {
@@ -21,7 +21,7 @@ function PhiSidebarNavigationWidgetEditor({ runtime, config, canvas, }) {
21
21
  export const PHI_SIDEBAR_NAVIGATION_WIDGET_BUILDER_PLUGIN = {
22
22
  ...PHI_SIDEBAR_NAVIGATION_WIDGET_DEFINITION,
23
23
  renderEditor: ({ runtime, config, authoring }) => authoring ? (_jsx(PhiSidebarNavigationWidgetEditor, { runtime: runtime, config: config, canvas: authoring.canvas })) : null,
24
- renderEditorTools: ({ config, authoring }) => authoring?.updateConfig ? (_jsx(PhiWidgetTypographyToolButton, { fontFamily: config.fontFamily, fontSize: config.fontSize, defaultFontSize: "lg", ariaLabel: "Sidebar navigation typography", onChange: ({ fontFamily, fontSize }) => authoring.updateConfig?.({
24
+ renderEditorTools: ({ config, authoring }) => authoring?.updateConfig ? (_jsx(PhiWidgetTypographyToolButton, { fontFamily: config.fontFamily, fontSize: config.fontSize, defaultFontSize: "base", ariaLabel: "Sidebar navigation typography", onChange: ({ fontFamily, fontSize }) => authoring.updateConfig?.({
25
25
  ...(fontFamily !== undefined ? { fontFamily: fontFamily ?? undefined } : {}),
26
26
  ...(fontSize !== undefined ? { fontSize: fontSize ?? undefined } : {}),
27
27
  }) })) : null,
@@ -33,7 +33,7 @@ function usePhiSidebarMenuPresentation(config) {
33
33
  const sider = usePhiSiderContext();
34
34
  return {
35
35
  fontFamily: resolvePhiWidgetFontFamily(config?.fontFamily, fonts, token),
36
- fontSize: resolvePhiWidgetFontSize(config?.fontSize, token, "lg"),
36
+ fontSize: resolvePhiWidgetFontSize(config?.fontSize, token, "base"),
37
37
  collapsed: sider?.collapsed ?? false,
38
38
  collapsedWidth: sider?.collapsedWidth ?? 40,
39
39
  };
@@ -50,7 +50,7 @@ export function PhiSimpleTextWidgetClient({ blockId, labels, config, }) {
50
50
  const resolvedFontFamily = styleValue.code
51
51
  ? token.fontFamilyCode
52
52
  : resolvePhiWidgetFontFamily(fontFamilyValue, fonts, token);
53
- const resolvedFontSize = resolvePhiWidgetFontSize(fontSizeValue, token, "lg");
53
+ const resolvedFontSize = resolvePhiWidgetFontSize(fontSizeValue, token, "base");
54
54
  const receiver = createPhiRenderableBlockReceiver("widget", blockId);
55
55
  usePhiRenderableBlockSignalListener(receiver, (signal) => {
56
56
  if (signal.channel === "text") {
@@ -105,16 +105,21 @@ export function PhiSimpleTextWidgetClient({ blockId, labels, config, }) {
105
105
  code: typeof stylePayload.code === "boolean" ? stylePayload.code : current.code,
106
106
  }));
107
107
  });
108
+ /*
109
+ * A linked text's colour is the link's (`PhiLink`), which answers the pointer; the words inside inherit
110
+ * it. Stated on them as well, the colour stood over the link's and the hover never showed.
111
+ */
112
+ const contentColor = hasHref ? undefined : textColor;
108
113
  const contentNode = (_jsxs(PhiFlexControl, { align: "center", gap: 8, style: {
109
114
  width: "fit-content",
110
115
  maxWidth: "100%",
111
116
  minWidth: 0,
112
117
  fontSize: resolvedFontSize ?? "inherit",
113
118
  lineHeight: resolvedFontSize ? PHI_LINE_HEIGHT_LG : "inherit",
114
- color: textColor ?? undefined,
119
+ color: contentColor ?? undefined,
115
120
  fontFamily: resolvedFontFamily,
116
121
  }, children: [iconValue ? _jsx(PhiIcon, { name: iconValue, size: "1.25em" }) : null, _jsx(PhiTypographyControl, { type: config?.tone, strong: styleValue.strong, italic: styleValue.italic, underline: styleValue.underline, delete: styleValue.delete, disabled: styleValue.disabled, code: styleValue.code, style: {
117
- color: textColor ?? "inherit",
122
+ color: contentColor ?? "inherit",
118
123
  fontSize: resolvedFontSize ?? "inherit",
119
124
  lineHeight: resolvedFontSize ? PHI_LINE_HEIGHT_LG : "inherit",
120
125
  ...(resolvedFontFamily ? { fontFamily: resolvedFontFamily } : {}),
@@ -50,6 +50,7 @@ export declare const PHI_SIMPLE_TEXT_WIDGET_DEFINITION: {
50
50
  } & {
51
51
  type: "string" | "url" | "icon";
52
52
  emptyValue?: "";
53
+ placeholder?: string;
53
54
  }) | ({
54
55
  key: string;
55
56
  label: string;
@@ -323,30 +324,6 @@ export declare const PHI_SIMPLE_TEXT_WIDGET_DEFINITION: {
323
324
  editorPlacement?: "inspector" | "geometry" | "toolbar";
324
325
  visibleWhen?: import("../../../../../types").PhiCmsConfigFieldVisibilityRule | readonly import("../../../../../types").PhiCmsConfigFieldVisibilityRule[];
325
326
  heading?: string;
326
- } & {
327
- type: "background";
328
- section?: string;
329
- storage?: import("../../../../../types").PhiCmsConfigFieldValueStorage;
330
- }) | ({
331
- key: string;
332
- label: string;
333
- description?: string;
334
- required?: boolean;
335
- editorPlacement?: "inspector" | "geometry" | "toolbar";
336
- visibleWhen?: import("../../../../../types").PhiCmsConfigFieldVisibilityRule | readonly import("../../../../../types").PhiCmsConfigFieldVisibilityRule[];
337
- heading?: string;
338
- } & {
339
- type: "border";
340
- section?: string;
341
- storage?: import("../../../../../types").PhiCmsConfigFieldValueStorage;
342
- }) | ({
343
- key: string;
344
- label: string;
345
- description?: string;
346
- required?: boolean;
347
- editorPlacement?: "inspector" | "geometry" | "toolbar";
348
- visibleWhen?: import("../../../../../types").PhiCmsConfigFieldVisibilityRule | readonly import("../../../../../types").PhiCmsConfigFieldVisibilityRule[];
349
- heading?: string;
350
327
  } & {
351
328
  type: "surface";
352
329
  tone?: false;
@@ -359,7 +336,7 @@ export declare const PHI_SIMPLE_TEXT_WIDGET_DEFINITION: {
359
336
  visibleWhen?: import("../../../../../types").PhiCmsConfigFieldVisibilityRule | readonly import("../../../../../types").PhiCmsConfigFieldVisibilityRule[];
360
337
  heading?: string;
361
338
  } & {
362
- type: "shadow" | "grid-placement" | "column-count";
339
+ type: "grid-placement" | "column-count";
363
340
  section?: string;
364
341
  }) | {
365
342
  key: string;
@@ -43,7 +43,7 @@ export function PhiSimpleTextWidgetColorButton({ config, onChange, }) {
43
43
  }
44
44
  export function PhiSimpleTextWidgetTypographyButton({ config, onChange, }) {
45
45
  const labels = usePhiAuthoringToolsLabels();
46
- return (_jsx(PhiWidgetTypographyToolButton, { fontFamily: config?.fontFamily, fontSize: config?.fontSize, defaultFontSize: "lg", ariaLabel: labels.text.typography, onChange: ({ fontFamily, fontSize }) => onChange({
46
+ return (_jsx(PhiWidgetTypographyToolButton, { fontFamily: config?.fontFamily, fontSize: config?.fontSize, defaultFontSize: "base", ariaLabel: labels.text.typography, onChange: ({ fontFamily, fontSize }) => onChange({
47
47
  ...(fontFamily !== undefined ? { fontFamily: fontFamily ?? undefined } : {}),
48
48
  ...(fontSize !== undefined ? { fontSize: fontSize ?? undefined } : {}),
49
49
  }) }));
@@ -71,7 +71,7 @@ export function PhiSimpleTextWidgetEditor({ text, config, onChangeText, }) {
71
71
  const resolvedFontFamily = hasPhiSimpleTextMark(config, "code")
72
72
  ? token.fontFamilyCode
73
73
  : resolvePhiWidgetFontFamily(config?.fontFamily, fonts, token);
74
- const resolvedFontSize = resolvePhiWidgetFontSize(config?.fontSize, token, "lg");
74
+ const resolvedFontSize = resolvePhiWidgetFontSize(config?.fontSize, token, "base");
75
75
  return (_jsxs(PhiFlexControl, { align: "center", gap: 8, style: {
76
76
  width: "fit-content",
77
77
  maxWidth: "100%",
@@ -8,7 +8,7 @@ import { usePhiMediaUpload } from "../../../../../components/media/phi-media-upl
8
8
  import { runPhiAddonAssetUpload, } from "../../../../../components/media/media-upload-flow";
9
9
  import { PHI_MEDIA_UPLOAD_DEFAULT_LABELS } from "../../../../../components/media/phi-media-upload";
10
10
  import { usePhiSignalListener } from "../../../../../components/runtime/runtime-signal-bus";
11
- import { usePhiSignalIdentity } from "../../../../../components/runtime/runtime-signal-identity";
11
+ import { emitPhiSignalCapability, usePhiSignalEmitter, usePhiSignalIdentity, } from "../../../../../components/runtime/runtime-signal-identity";
12
12
  import { readPhiTableBindingParamsSignalValue } from "../../../../../types/table-signal-values";
13
13
  import { findPhiSignalListenRoute } from "../../../../../helpers/signal-listen-routes";
14
14
  import { PhiFlexControl } from "../../../../../components/controls/phi-flex-control";
@@ -21,6 +21,13 @@ export function PhiSlotUploadWidgetClient({ config }) {
21
21
  const ownerParam = config?.ownerParam?.trim() || "id";
22
22
  const signalIdentity = usePhiSignalIdentity();
23
23
  const listenRoutes = useMemo(() => config?.signalRoutes?.listens ?? [], [config?.signalRoutes?.listens]);
24
+ const emitRoutes = useMemo(() => config?.signalRoutes?.emits ?? [], [config?.signalRoutes?.emits]);
25
+ const emitSignal = usePhiSignalEmitter();
26
+ /*
27
+ * The row's files changed -- a file arrived or went -- so whatever shows the row can read it again.
28
+ * Sent only once the change is through, never for an upload that was refused or a removal that failed.
29
+ */
30
+ const announceChanged = useCallback(() => emitPhiSignalCapability(emitSignal, emitRoutes, "changed", null), [emitRoutes, emitSignal]);
24
31
  const [ownerId, setOwnerId] = useState(null);
25
32
  const [slot, setSlot] = useState(null);
26
33
  /*
@@ -176,6 +183,7 @@ export function PhiSlotUploadWidgetClient({ config }) {
176
183
  runSession,
177
184
  onUploaded: async () => {
178
185
  setFailure(null);
186
+ announceChanged();
179
187
  await reload();
180
188
  },
181
189
  onRejected: (message) => setFailure(message),
@@ -196,8 +204,9 @@ export function PhiSlotUploadWidgetClient({ config }) {
196
204
  setFailure("That file stayed.");
197
205
  return;
198
206
  }
207
+ announceChanged();
199
208
  await reload();
200
- }, [base, ownerId, read, reload]);
209
+ }, [announceChanged, base, ownerId, read, reload]);
201
210
  if (!base || !slotName) {
202
211
  return _jsx(PhiTypographyControl, { type: "secondary", children: "This field names no Add-on, table or slot." });
203
212
  }
@@ -306,7 +306,7 @@ export function PhiTableWidgetClient({ config: inputConfig, externalSearch, exte
306
306
  },
307
307
  validateResource,
308
308
  });
309
- const { resource, bindingError, contractError, rows, total, summary, loading, error, query, resolvedQuery, setQuery, selectedRowIdentities, setSelectedRowIdentities, expandedRowIdentities, setExpandedRowIdentities, reload, executeAction, commitField, commitRow, isFieldMutationPending, moveRow, drop, } = binding;
309
+ const { resource, bindingError, contractError, rows, total, hasMore, summary, loading, error, query, resolvedQuery, setQuery, selectedRowIdentities, setSelectedRowIdentities, expandedRowIdentities, setExpandedRowIdentities, reload, executeAction, commitField, commitRow, isFieldMutationPending, moveRow, drop, } = binding;
310
310
  const toolbarActions = useMemo(() => resolveTableActions(features.actions?.toolbar, resource?.actions), [features.actions?.toolbar, resource?.actions]);
311
311
  const rowActions = useMemo(() => resolveTableActions(features.actions?.row, resource?.actions), [features.actions?.row, resource?.actions]);
312
312
  const bulkActions = useMemo(() => resolveTableActions(features.actions?.bulk, resource?.actions), [features.actions?.bulk, resource?.actions]);
@@ -564,7 +564,7 @@ export function PhiTableWidgetClient({ config: inputConfig, externalSearch, exte
564
564
  }, [emitCapability, resolvedQuery]);
565
565
  useEffect(() => {
566
566
  const state = {
567
- total,
567
+ total: total ?? undefined,
568
568
  page: resolvedQuery.page,
569
569
  pageSize: resolvedQuery.pageSize,
570
570
  loading: effectiveLoading,
@@ -667,14 +667,17 @@ export function PhiTableWidgetClient({ config: inputConfig, externalSearch, exte
667
667
  const resolveSummaryValue = useCallback((item) => {
668
668
  if (item.value.source === "provider")
669
669
  return summary[item.value.fieldKey];
670
+ // Without a count the Provider gives, there is none to show: the rows of this page are not it.
670
671
  if (item.value.fieldKey === "totalRows")
671
- return total;
672
+ return total ?? undefined;
672
673
  if (item.value.fieldKey === "pageRows")
673
674
  return rows.length;
674
675
  if (item.value.fieldKey === "selectedRows")
675
676
  return selectedRowIdentities.length;
676
677
  if (item.value.fieldKey === "page")
677
678
  return resolvedQuery.page ?? 1;
679
+ if (total == null)
680
+ return undefined;
678
681
  const pageSize = resolvedQuery.pageSize ?? rows.length;
679
682
  return pageSize > 0 ? Math.ceil(total / pageSize) : 0;
680
683
  }, [resolvedQuery.page, resolvedQuery.pageSize, rows.length, selectedRowIdentities.length, summary, total]);
@@ -824,7 +827,8 @@ export function PhiTableWidgetClient({ config: inputConfig, externalSearch, exte
824
827
  } : undefined, pagination: features.pagination?.enabled === false ? false : {
825
828
  page: resolvedQuery.page ?? 1,
826
829
  pageSize: resolvedQuery.pageSize ?? 20,
827
- total,
830
+ total: total ?? undefined,
831
+ hasMore,
828
832
  pageSizeOptions: features.pagination?.pageSizes,
829
833
  showSizeChanger: (features.pagination?.pageSizes?.length ?? 0) > 0,
830
834
  onChange: (page, pageSize) => setQuery((current) => ({ ...current, page, pageSize, cursor: null })),
@@ -73,6 +73,7 @@ export declare const PHI_TABLE_WIDGET_DEFINITION: {
73
73
  } & {
74
74
  type: "string" | "url" | "icon";
75
75
  emptyValue?: "";
76
+ placeholder?: string;
76
77
  }) | ({
77
78
  key: string;
78
79
  label: string;
@@ -346,30 +347,6 @@ export declare const PHI_TABLE_WIDGET_DEFINITION: {
346
347
  editorPlacement?: "inspector" | "geometry" | "toolbar";
347
348
  visibleWhen?: import("../../../../../types").PhiCmsConfigFieldVisibilityRule | readonly import("../../../../../types").PhiCmsConfigFieldVisibilityRule[];
348
349
  heading?: string;
349
- } & {
350
- type: "background";
351
- section?: string;
352
- storage?: import("../../../../../types").PhiCmsConfigFieldValueStorage;
353
- }) | ({
354
- key: string;
355
- label: string;
356
- description?: string;
357
- required?: boolean;
358
- editorPlacement?: "inspector" | "geometry" | "toolbar";
359
- visibleWhen?: import("../../../../../types").PhiCmsConfigFieldVisibilityRule | readonly import("../../../../../types").PhiCmsConfigFieldVisibilityRule[];
360
- heading?: string;
361
- } & {
362
- type: "border";
363
- section?: string;
364
- storage?: import("../../../../../types").PhiCmsConfigFieldValueStorage;
365
- }) | ({
366
- key: string;
367
- label: string;
368
- description?: string;
369
- required?: boolean;
370
- editorPlacement?: "inspector" | "geometry" | "toolbar";
371
- visibleWhen?: import("../../../../../types").PhiCmsConfigFieldVisibilityRule | readonly import("../../../../../types").PhiCmsConfigFieldVisibilityRule[];
372
- heading?: string;
373
350
  } & {
374
351
  type: "surface";
375
352
  tone?: false;
@@ -382,7 +359,7 @@ export declare const PHI_TABLE_WIDGET_DEFINITION: {
382
359
  visibleWhen?: import("../../../../../types").PhiCmsConfigFieldVisibilityRule | readonly import("../../../../../types").PhiCmsConfigFieldVisibilityRule[];
383
360
  heading?: string;
384
361
  } & {
385
- type: "shadow" | "grid-placement" | "column-count";
362
+ type: "grid-placement" | "column-count";
386
363
  section?: string;
387
364
  }) | {
388
365
  visibleWhen: {
@@ -397,6 +374,7 @@ export declare const PHI_TABLE_WIDGET_DEFINITION: {
397
374
  heading?: string;
398
375
  type: "string" | "url" | "icon";
399
376
  emptyValue?: "";
377
+ placeholder?: string;
400
378
  } | {
401
379
  visibleWhen: {
402
380
  field: string;
@@ -700,34 +678,6 @@ export declare const PHI_TABLE_WIDGET_DEFINITION: {
700
678
  reorderable?: boolean;
701
679
  presentation?: import("../../../../../types").PhiCmsConfigFieldCollectionPresentation;
702
680
  editLabel?: string;
703
- } | {
704
- visibleWhen: {
705
- field: string;
706
- notEquals: string;
707
- };
708
- key: string;
709
- label: string;
710
- description?: string;
711
- required?: boolean;
712
- editorPlacement?: "inspector" | "geometry" | "toolbar";
713
- heading?: string;
714
- type: "background";
715
- section?: string;
716
- storage?: import("../../../../../types").PhiCmsConfigFieldValueStorage;
717
- } | {
718
- visibleWhen: {
719
- field: string;
720
- notEquals: string;
721
- };
722
- key: string;
723
- label: string;
724
- description?: string;
725
- required?: boolean;
726
- editorPlacement?: "inspector" | "geometry" | "toolbar";
727
- heading?: string;
728
- type: "border";
729
- section?: string;
730
- storage?: import("../../../../../types").PhiCmsConfigFieldValueStorage;
731
681
  } | {
732
682
  visibleWhen: {
733
683
  field: string;
@@ -752,7 +702,7 @@ export declare const PHI_TABLE_WIDGET_DEFINITION: {
752
702
  required?: boolean;
753
703
  editorPlacement?: "inspector" | "geometry" | "toolbar";
754
704
  heading?: string;
755
- type: "shadow" | "grid-placement" | "column-count";
705
+ type: "grid-placement" | "column-count";
756
706
  section?: string;
757
707
  } | {
758
708
  key: string;
@@ -790,6 +740,7 @@ export declare const PHI_TABLE_WIDGET_DEFINITION: {
790
740
  heading?: string;
791
741
  type: "string" | "url" | "icon";
792
742
  emptyValue?: "";
743
+ placeholder?: string;
793
744
  } | {
794
745
  visibleWhen: {
795
746
  field: string;
@@ -1093,34 +1044,6 @@ export declare const PHI_TABLE_WIDGET_DEFINITION: {
1093
1044
  reorderable?: boolean;
1094
1045
  presentation?: import("../../../../../types").PhiCmsConfigFieldCollectionPresentation;
1095
1046
  editLabel?: string;
1096
- } | {
1097
- visibleWhen: {
1098
- field: string;
1099
- equals: boolean;
1100
- };
1101
- key: string;
1102
- label: string;
1103
- description?: string;
1104
- required?: boolean;
1105
- editorPlacement?: "inspector" | "geometry" | "toolbar";
1106
- heading?: string;
1107
- type: "background";
1108
- section?: string;
1109
- storage?: import("../../../../../types").PhiCmsConfigFieldValueStorage;
1110
- } | {
1111
- visibleWhen: {
1112
- field: string;
1113
- equals: boolean;
1114
- };
1115
- key: string;
1116
- label: string;
1117
- description?: string;
1118
- required?: boolean;
1119
- editorPlacement?: "inspector" | "geometry" | "toolbar";
1120
- heading?: string;
1121
- type: "border";
1122
- section?: string;
1123
- storage?: import("../../../../../types").PhiCmsConfigFieldValueStorage;
1124
1047
  } | {
1125
1048
  visibleWhen: {
1126
1049
  field: string;
@@ -1145,7 +1068,7 @@ export declare const PHI_TABLE_WIDGET_DEFINITION: {
1145
1068
  required?: boolean;
1146
1069
  editorPlacement?: "inspector" | "geometry" | "toolbar";
1147
1070
  heading?: string;
1148
- type: "shadow" | "grid-placement" | "column-count";
1071
+ type: "grid-placement" | "column-count";
1149
1072
  section?: string;
1150
1073
  } | {
1151
1074
  key: string;