@wildo-ai/saas-frontend-lib 1.1.5 → 1.1.6

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 (777) hide show
  1. package/dist/esm/components/actions/action-bar.d.ts +15 -0
  2. package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
  3. package/dist/esm/components/actions/action-bar.js +15 -0
  4. package/dist/esm/components/actions/action-bar.js.map +1 -1
  5. package/dist/esm/components/ai-elements/decision/approval.d.ts +97 -7
  6. package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
  7. package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
  8. package/dist/esm/components/app/AppLayout_AuthenticatedRoute.d.ts.map +1 -1
  9. package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js +8 -3
  10. package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js.map +1 -1
  11. package/dist/esm/components/auth/Auth_EnrollmentRequired.d.ts.map +1 -1
  12. package/dist/esm/components/auth/Auth_EnrollmentRequired.js +5 -1
  13. package/dist/esm/components/auth/Auth_EnrollmentRequired.js.map +1 -1
  14. package/dist/esm/components/auth/Auth_Main.d.ts.map +1 -1
  15. package/dist/esm/components/auth/Auth_Main.js +1 -4
  16. package/dist/esm/components/auth/Auth_Main.js.map +1 -1
  17. package/dist/esm/components/auth/Auth_Register.d.ts.map +1 -1
  18. package/dist/esm/components/auth/Auth_Register.js +1 -3
  19. package/dist/esm/components/auth/Auth_Register.js.map +1 -1
  20. package/dist/esm/components/auth/StepUpAuthDialog.d.ts +7 -0
  21. package/dist/esm/components/auth/StepUpAuthDialog.d.ts.map +1 -1
  22. package/dist/esm/components/auth/StepUpAuthDialog.js +13 -7
  23. package/dist/esm/components/auth/StepUpAuthDialog.js.map +1 -1
  24. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.d.ts.map +1 -1
  25. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js +32 -33
  26. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js.map +1 -1
  27. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.d.ts.map +1 -1
  28. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js +18 -20
  29. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js.map +1 -1
  30. package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.d.ts.map +1 -1
  31. package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js +2 -3
  32. package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js.map +1 -1
  33. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.d.ts +13 -16
  34. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.d.ts.map +1 -1
  35. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.js +18 -15
  36. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.js.map +1 -1
  37. package/dist/esm/components/billing/billing-invoice-history.js +2 -2
  38. package/dist/esm/components/billing/billing-invoice-history.js.map +1 -1
  39. package/dist/esm/components/billing/billing-portal-link.js +2 -2
  40. package/dist/esm/components/billing/billing-portal-link.js.map +1 -1
  41. package/dist/esm/components/billing/billing-pricing-table.d.ts +33 -1
  42. package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
  43. package/dist/esm/components/billing/billing-pricing-table.js +34 -5
  44. package/dist/esm/components/billing/billing-pricing-table.js.map +1 -1
  45. package/dist/esm/components/billing/billing-subscription-status.js +2 -2
  46. package/dist/esm/components/billing/billing-subscription-status.js.map +1 -1
  47. package/dist/esm/components/billing/billing-usage-dashboard.d.ts +2 -0
  48. package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
  49. package/dist/esm/components/billing/billing-usage-dashboard.js +1 -0
  50. package/dist/esm/components/billing/billing-usage-dashboard.js.map +1 -1
  51. package/dist/esm/components/data-display/DisplayField.d.ts.map +1 -1
  52. package/dist/esm/components/data-display/DisplayField.js +15 -1
  53. package/dist/esm/components/data-display/DisplayField.js.map +1 -1
  54. package/dist/esm/components/data-display/DisplayFieldArray.d.ts.map +1 -1
  55. package/dist/esm/components/data-display/DisplayFieldArray.js +11 -0
  56. package/dist/esm/components/data-display/DisplayFieldArray.js.map +1 -1
  57. package/dist/esm/components/data-display/DisplayFieldEditable.d.ts.map +1 -1
  58. package/dist/esm/components/data-display/DisplayFieldEditable.js +2 -2
  59. package/dist/esm/components/data-display/DisplayFieldEditable.js.map +1 -1
  60. package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts +12 -2
  61. package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts.map +1 -1
  62. package/dist/esm/components/data-display/DisplayFieldEditableArray.js +3 -2
  63. package/dist/esm/components/data-display/DisplayFieldEditableArray.js.map +1 -1
  64. package/dist/esm/components/data-display/DisplayFieldReadOnly.d.ts.map +1 -1
  65. package/dist/esm/components/data-display/DisplayFieldReadOnly.js +2 -2
  66. package/dist/esm/components/data-display/DisplayFieldReadOnly.js.map +1 -1
  67. package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.d.ts.map +1 -1
  68. package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js +8 -2
  69. package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js.map +1 -1
  70. package/dist/esm/components/data-display/DisplayValueDispatcher.d.ts.map +1 -1
  71. package/dist/esm/components/data-display/DisplayValueDispatcher.js +18 -4
  72. package/dist/esm/components/data-display/DisplayValueDispatcher.js.map +1 -1
  73. package/dist/esm/components/data-display/ResourceAutomaticDisplayer.d.ts.map +1 -1
  74. package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js +61 -3
  75. package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js.map +1 -1
  76. package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts +7 -5
  77. package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts.map +1 -1
  78. package/dist/esm/components/data-display/ResourceSummaryDisplayer.js.map +1 -1
  79. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts +11 -1
  80. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts.map +1 -1
  81. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js +36 -11
  82. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js.map +1 -1
  83. package/dist/esm/components/data-display/display-field-resolved-props.d.ts +6 -0
  84. package/dist/esm/components/data-display/display-field-resolved-props.d.ts.map +1 -1
  85. package/dist/esm/components/data-display/display-field-resolved-props.js.map +1 -1
  86. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts +23 -0
  87. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts.map +1 -0
  88. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js +35 -0
  89. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js.map +1 -0
  90. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts +47 -0
  91. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts.map +1 -0
  92. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js +124 -0
  93. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js.map +1 -0
  94. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.d.ts +8 -0
  95. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.d.ts.map +1 -0
  96. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js +46 -0
  97. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js.map +1 -0
  98. package/dist/esm/components/feedback/resource-empty-state.d.ts +21 -8
  99. package/dist/esm/components/feedback/resource-empty-state.d.ts.map +1 -1
  100. package/dist/esm/components/feedback/resource-empty-state.js +56 -26
  101. package/dist/esm/components/feedback/resource-empty-state.js.map +1 -1
  102. package/dist/esm/components/flows-actors/approval.d.ts +29 -7
  103. package/dist/esm/components/flows-actors/approval.d.ts.map +1 -1
  104. package/dist/esm/components/flows-actors/approval.js +231 -101
  105. package/dist/esm/components/flows-actors/approval.js.map +1 -1
  106. package/dist/esm/components/flows-actors/approval.labels.d.ts.map +1 -1
  107. package/dist/esm/components/flows-actors/approval.labels.js +57 -0
  108. package/dist/esm/components/flows-actors/approval.labels.js.map +1 -1
  109. package/dist/esm/components/flows-actors/system-catalog.d.ts.map +1 -1
  110. package/dist/esm/components/flows-actors/system-catalog.js +4 -4
  111. package/dist/esm/components/flows-actors/system-catalog.js.map +1 -1
  112. package/dist/esm/components/flows-actors/system-catalog.labels.d.ts.map +1 -1
  113. package/dist/esm/components/flows-actors/system-catalog.labels.js +0 -5
  114. package/dist/esm/components/flows-actors/system-catalog.labels.js.map +1 -1
  115. package/dist/esm/components/form/Form.d.ts +2 -2
  116. package/dist/esm/components/form/Form.js +2 -2
  117. package/dist/esm/components/form/Form.js.map +1 -1
  118. package/dist/esm/components/form/automated/AutomatedArrayField.d.ts +28 -3
  119. package/dist/esm/components/form/automated/AutomatedArrayField.d.ts.map +1 -1
  120. package/dist/esm/components/form/automated/AutomatedArrayField.js +43 -14
  121. package/dist/esm/components/form/automated/AutomatedArrayField.js.map +1 -1
  122. package/dist/esm/components/form/automated/FormField.d.ts +3 -0
  123. package/dist/esm/components/form/automated/FormField.d.ts.map +1 -1
  124. package/dist/esm/components/form/automated/FormField.js +60 -21
  125. package/dist/esm/components/form/automated/FormField.js.map +1 -1
  126. package/dist/esm/components/form/automated/FormFieldArray.d.ts +6 -3
  127. package/dist/esm/components/form/automated/FormFieldArray.d.ts.map +1 -1
  128. package/dist/esm/components/form/automated/FormFieldArray.js +3 -2
  129. package/dist/esm/components/form/automated/FormFieldArray.js.map +1 -1
  130. package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts +5 -4
  131. package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts.map +1 -1
  132. package/dist/esm/components/form/automated/ResourceAutomatedForm.js +148 -55
  133. package/dist/esm/components/form/automated/ResourceAutomatedForm.js.map +1 -1
  134. package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts +30 -0
  135. package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts.map +1 -1
  136. package/dist/esm/components/form/automated/ResourceFormActionsContext.js +30 -1
  137. package/dist/esm/components/form/automated/ResourceFormActionsContext.js.map +1 -1
  138. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.d.ts +79 -0
  139. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.d.ts.map +1 -0
  140. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.js +203 -0
  141. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.js.map +1 -0
  142. package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts +12 -0
  143. package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts.map +1 -1
  144. package/dist/esm/components/form/automated/automated-form-submit.utils.js +11 -0
  145. package/dist/esm/components/form/automated/automated-form-submit.utils.js.map +1 -1
  146. package/dist/esm/components/form/chromes/FormFieldChrome.d.ts.map +1 -1
  147. package/dist/esm/components/form/chromes/FormFieldChrome.js +2 -2
  148. package/dist/esm/components/form/chromes/FormFieldChrome.js.map +1 -1
  149. package/dist/esm/components/form/combobox.d.ts +7 -0
  150. package/dist/esm/components/form/combobox.d.ts.map +1 -1
  151. package/dist/esm/components/form/combobox.js.map +1 -1
  152. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +1 -1
  153. package/dist/esm/components/form/controls/form-field-checkbox-group.js +13 -0
  154. package/dist/esm/components/form/controls/form-field-checkbox-group.js.map +1 -1
  155. package/dist/esm/components/form/fields/form-field-address.d.ts +58 -0
  156. package/dist/esm/components/form/fields/form-field-address.d.ts.map +1 -1
  157. package/dist/esm/components/form/fields/form-field-address.js +34 -6
  158. package/dist/esm/components/form/fields/form-field-address.js.map +1 -1
  159. package/dist/esm/components/form/fields/form-field-address.labels.d.ts.map +1 -1
  160. package/dist/esm/components/form/fields/form-field-address.labels.js +60 -1
  161. package/dist/esm/components/form/fields/form-field-address.labels.js.map +1 -1
  162. package/dist/esm/components/form/fields/form-field-file.d.ts +0 -12
  163. package/dist/esm/components/form/fields/form-field-file.d.ts.map +1 -1
  164. package/dist/esm/components/form/fields/form-field-file.js +34 -13
  165. package/dist/esm/components/form/fields/form-field-file.js.map +1 -1
  166. package/dist/esm/components/form/fields/form-field-file.labels.d.ts.map +1 -1
  167. package/dist/esm/components/form/fields/form-field-file.labels.js +46 -0
  168. package/dist/esm/components/form/fields/form-field-file.labels.js.map +1 -1
  169. package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts +73 -0
  170. package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts.map +1 -0
  171. package/dist/esm/components/form/fields/form-field-string-organization-role.js +64 -0
  172. package/dist/esm/components/form/fields/form-field-string-organization-role.js.map +1 -0
  173. package/dist/esm/components/form/fields/form-field-string.d.ts.map +1 -1
  174. package/dist/esm/components/form/fields/form-field-string.js +8 -1
  175. package/dist/esm/components/form/fields/form-field-string.js.map +1 -1
  176. package/dist/esm/components/form/fields/form-field-string.labels.d.ts.map +1 -1
  177. package/dist/esm/components/form/fields/form-field-string.labels.js +4 -0
  178. package/dist/esm/components/form/fields/form-field-string.labels.js.map +1 -1
  179. package/dist/esm/components/form/validation-errors/FormErrorSummary.js +1 -1
  180. package/dist/esm/components/form/validation-errors/FormErrorSummary.js.map +1 -1
  181. package/dist/esm/components/form/validation-errors/resolver-error-nesting.d.ts +31 -0
  182. package/dist/esm/components/form/validation-errors/resolver-error-nesting.d.ts.map +1 -0
  183. package/dist/esm/components/form/validation-errors/resolver-error-nesting.js +81 -0
  184. package/dist/esm/components/form/validation-errors/resolver-error-nesting.js.map +1 -0
  185. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.d.ts +14 -1
  186. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.d.ts.map +1 -1
  187. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.js +14 -0
  188. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.js.map +1 -1
  189. package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts +22 -0
  190. package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts.map +1 -1
  191. package/dist/esm/components/form/validation-errors/zod-issue-resolver.js +1 -22
  192. package/dist/esm/components/form/validation-errors/zod-issue-resolver.js.map +1 -1
  193. package/dist/esm/components/layout/resizable.d.ts +11 -0
  194. package/dist/esm/components/layout/resizable.d.ts.map +1 -1
  195. package/dist/esm/components/layout/resizable.js.map +1 -1
  196. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.d.ts +11 -1
  197. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.d.ts.map +1 -1
  198. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.js +15 -3
  199. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.js.map +1 -1
  200. package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.d.ts +2 -2
  201. package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.d.ts.map +1 -1
  202. package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.js.map +1 -1
  203. package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.d.ts +2 -2
  204. package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js +2 -2
  205. package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js.map +1 -1
  206. package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js +18 -20
  207. package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js.map +1 -1
  208. package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.d.ts.map +1 -1
  209. package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js +7 -1
  210. package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js.map +1 -1
  211. package/dist/esm/components/navigation/app-level/useMenuBarBehavior.d.ts.map +1 -1
  212. package/dist/esm/components/navigation/app-level/useMenuBarBehavior.js +4 -1
  213. package/dist/esm/components/navigation/app-level/useMenuBarBehavior.js.map +1 -1
  214. package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.d.ts.map +1 -1
  215. package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js +18 -2
  216. package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js.map +1 -1
  217. package/dist/esm/components/navigation/app-level/useSidebarBehavior.d.ts.map +1 -1
  218. package/dist/esm/components/navigation/app-level/useSidebarBehavior.js +82 -10
  219. package/dist/esm/components/navigation/app-level/useSidebarBehavior.js.map +1 -1
  220. package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts +2 -2
  221. package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts.map +1 -1
  222. package/dist/esm/components/navigation/app-level/useStatusBarBehavior.js.map +1 -1
  223. package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.d.ts.map +1 -1
  224. package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js +8 -1
  225. package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js.map +1 -1
  226. package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts +8 -2
  227. package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts.map +1 -1
  228. package/dist/esm/components/resources/ResourceCollectionToolbar.js +6 -2
  229. package/dist/esm/components/resources/ResourceCollectionToolbar.js.map +1 -1
  230. package/dist/esm/components/resources/ResourceLayout_Breadcrumb.d.ts.map +1 -1
  231. package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js +31 -16
  232. package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js.map +1 -1
  233. package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.d.ts.map +1 -1
  234. package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js +23 -8
  235. package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js.map +1 -1
  236. package/dist/esm/components/resources/ResourceLayout_ContainerNested.js +2 -2
  237. package/dist/esm/components/resources/ResourceLayout_ContainerNested.js.map +1 -1
  238. package/dist/esm/components/resources/ResourceLayout_Header.d.ts +13 -0
  239. package/dist/esm/components/resources/ResourceLayout_Header.d.ts.map +1 -1
  240. package/dist/esm/components/resources/ResourceLayout_Header.js +55 -28
  241. package/dist/esm/components/resources/ResourceLayout_Header.js.map +1 -1
  242. package/dist/esm/components/resources/ResourceLayout_List.d.ts.map +1 -1
  243. package/dist/esm/components/resources/ResourceLayout_List.js +41 -20
  244. package/dist/esm/components/resources/ResourceLayout_List.js.map +1 -1
  245. package/dist/esm/components/resources/ResourceLayout_List.labels.d.ts.map +1 -1
  246. package/dist/esm/components/resources/ResourceLayout_List.labels.js +1 -2
  247. package/dist/esm/components/resources/ResourceLayout_List.labels.js.map +1 -1
  248. package/dist/esm/components/resources/ResourceLayout_Read.d.ts +9 -4
  249. package/dist/esm/components/resources/ResourceLayout_Read.d.ts.map +1 -1
  250. package/dist/esm/components/resources/ResourceLayout_Read.js +30 -11
  251. package/dist/esm/components/resources/ResourceLayout_Read.js.map +1 -1
  252. package/dist/esm/components/resources/ResourceLayout_ReadSummary.d.ts.map +1 -1
  253. package/dist/esm/components/resources/ResourceLayout_ReadSummary.js +4 -2
  254. package/dist/esm/components/resources/ResourceLayout_ReadSummary.js.map +1 -1
  255. package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.d.ts.map +1 -1
  256. package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js +6 -2
  257. package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js.map +1 -1
  258. package/dist/esm/components/resources/ResourceLayout_Search.d.ts.map +1 -1
  259. package/dist/esm/components/resources/ResourceLayout_Search.js +30 -14
  260. package/dist/esm/components/resources/ResourceLayout_Search.js.map +1 -1
  261. package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.d.ts.map +1 -1
  262. package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js +14 -198
  263. package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js.map +1 -1
  264. package/dist/esm/components/resources/ResourceLayout_Update.d.ts +2 -2
  265. package/dist/esm/components/resources/ResourceLayout_Update.js +2 -2
  266. package/dist/esm/components/resources/ResourceLayout_Update.js.map +1 -1
  267. package/dist/esm/components/resources/ResourceListItemRenderer.d.ts.map +1 -1
  268. package/dist/esm/components/resources/ResourceListItemRenderer.js +69 -39
  269. package/dist/esm/components/resources/ResourceListItemRenderer.js.map +1 -1
  270. package/dist/esm/components/resources/ResourceOperationActionDropdown.d.ts +32 -0
  271. package/dist/esm/components/resources/ResourceOperationActionDropdown.d.ts.map +1 -0
  272. package/dist/esm/components/resources/ResourceOperationActionDropdown.js +130 -0
  273. package/dist/esm/components/resources/ResourceOperationActionDropdown.js.map +1 -0
  274. package/dist/esm/components/resources/collection-create-placement.utils.d.ts +32 -0
  275. package/dist/esm/components/resources/collection-create-placement.utils.d.ts.map +1 -0
  276. package/dist/esm/components/resources/collection-create-placement.utils.js +37 -0
  277. package/dist/esm/components/resources/collection-create-placement.utils.js.map +1 -0
  278. package/dist/esm/components/resources/embeds/RelatedResourcePreview.d.ts.map +1 -1
  279. package/dist/esm/components/resources/embeds/RelatedResourcePreview.js +5 -1
  280. package/dist/esm/components/resources/embeds/RelatedResourcePreview.js.map +1 -1
  281. package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts +8 -1
  282. package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts.map +1 -1
  283. package/dist/esm/components/resources/embeds/RelatedResourceSections.js +49 -2
  284. package/dist/esm/components/resources/embeds/RelatedResourceSections.js.map +1 -1
  285. package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts +22 -0
  286. package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts.map +1 -1
  287. package/dist/esm/components/resources/embeds/ResourceEmbeds.js +85 -2
  288. package/dist/esm/components/resources/embeds/ResourceEmbeds.js.map +1 -1
  289. package/dist/esm/components/resources/resourceLayout.utils.d.ts +14 -0
  290. package/dist/esm/components/resources/resourceLayout.utils.d.ts.map +1 -1
  291. package/dist/esm/components/resources/resourceLayout.utils.js +22 -0
  292. package/dist/esm/components/resources/resourceLayout.utils.js.map +1 -1
  293. package/dist/esm/components/resources/skeleton/ArrayField.d.ts.map +1 -1
  294. package/dist/esm/components/resources/skeleton/ArrayField.js +3 -0
  295. package/dist/esm/components/resources/skeleton/ArrayField.js.map +1 -1
  296. package/dist/esm/components/resources/skeleton/FormLayout.d.ts.map +1 -1
  297. package/dist/esm/components/resources/skeleton/FormLayout.js +33 -1
  298. package/dist/esm/components/resources/skeleton/FormLayout.js.map +1 -1
  299. package/dist/esm/components/resources/skeleton/ObjectScope.d.ts.map +1 -1
  300. package/dist/esm/components/resources/skeleton/ObjectScope.js +3 -0
  301. package/dist/esm/components/resources/skeleton/ObjectScope.js.map +1 -1
  302. package/dist/esm/components/resources/skeleton/Section.d.ts +12 -0
  303. package/dist/esm/components/resources/skeleton/Section.d.ts.map +1 -1
  304. package/dist/esm/components/resources/skeleton/Section.js +28 -2
  305. package/dist/esm/components/resources/skeleton/Section.js.map +1 -1
  306. package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts +70 -0
  307. package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts.map +1 -1
  308. package/dist/esm/components/resources/skeleton/SectionFieldsContext.js +157 -1
  309. package/dist/esm/components/resources/skeleton/SectionFieldsContext.js.map +1 -1
  310. package/dist/esm/components/resources/skeleton/WizardLayout.d.ts +6 -0
  311. package/dist/esm/components/resources/skeleton/WizardLayout.d.ts.map +1 -1
  312. package/dist/esm/components/resources/skeleton/WizardLayout.js +13 -2
  313. package/dist/esm/components/resources/skeleton/WizardLayout.js.map +1 -1
  314. package/dist/esm/components/resources/skeleton/WizardStep.d.ts.map +1 -1
  315. package/dist/esm/components/resources/skeleton/WizardStep.js +2 -1
  316. package/dist/esm/components/resources/skeleton/WizardStep.js.map +1 -1
  317. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.d.ts.map +1 -1
  318. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js +61 -15
  319. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js.map +1 -1
  320. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts +24 -2
  321. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts.map +1 -1
  322. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js +69 -1
  323. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js.map +1 -1
  324. package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.d.ts.map +1 -1
  325. package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js +18 -19
  326. package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js.map +1 -1
  327. package/dist/esm/components/sections/ContentSectionContainer.d.ts.map +1 -1
  328. package/dist/esm/components/sections/ContentSectionContainer.js +5 -4
  329. package/dist/esm/components/sections/ContentSectionContainer.js.map +1 -1
  330. package/dist/esm/components/sections/stepper.d.ts +5 -0
  331. package/dist/esm/components/sections/stepper.d.ts.map +1 -1
  332. package/dist/esm/components/sections/stepper.js.map +1 -1
  333. package/dist/esm/components/sections/surface.d.ts.map +1 -1
  334. package/dist/esm/components/sections/surface.js +12 -3
  335. package/dist/esm/components/sections/surface.js.map +1 -1
  336. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts +43 -0
  337. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts.map +1 -0
  338. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js +129 -0
  339. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js.map +1 -0
  340. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.d.ts +3 -0
  341. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.d.ts.map +1 -0
  342. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js +34 -0
  343. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js.map +1 -0
  344. package/dist/esm/components/settings/AppPage_AppearanceSettings.d.ts.map +1 -1
  345. package/dist/esm/components/settings/AppPage_AppearanceSettings.js +9 -11
  346. package/dist/esm/components/settings/AppPage_AppearanceSettings.js.map +1 -1
  347. package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.d.ts.map +1 -1
  348. package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.js +3 -2
  349. package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.js.map +1 -1
  350. package/dist/esm/components/settings/AppPage_BillingSettings.d.ts +4 -2
  351. package/dist/esm/components/settings/AppPage_BillingSettings.d.ts.map +1 -1
  352. package/dist/esm/components/settings/AppPage_BillingSettings.js +21 -3
  353. package/dist/esm/components/settings/AppPage_BillingSettings.js.map +1 -1
  354. package/dist/esm/components/settings/AppPage_BillingSettings.labels.d.ts.map +1 -1
  355. package/dist/esm/components/settings/AppPage_BillingSettings.labels.js +5 -10
  356. package/dist/esm/components/settings/AppPage_BillingSettings.labels.js.map +1 -1
  357. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts +58 -0
  358. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts.map +1 -1
  359. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js +243 -40
  360. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js.map +1 -1
  361. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.d.ts.map +1 -1
  362. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js +67 -6
  363. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js.map +1 -1
  364. package/dist/esm/components/settings/AppPage_InvitationsSettings.d.ts.map +1 -1
  365. package/dist/esm/components/settings/AppPage_InvitationsSettings.js +19 -11
  366. package/dist/esm/components/settings/AppPage_InvitationsSettings.js.map +1 -1
  367. package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.d.ts.map +1 -1
  368. package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js +4 -2
  369. package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js.map +1 -1
  370. package/dist/esm/components/settings/SettingsHub.d.ts.map +1 -1
  371. package/dist/esm/components/settings/SettingsHub.js +3 -0
  372. package/dist/esm/components/settings/SettingsHub.js.map +1 -1
  373. package/dist/esm/components/settings/SettingsResourceOperationPanel.d.ts.map +1 -1
  374. package/dist/esm/components/settings/SettingsResourceOperationPanel.js +16 -1
  375. package/dist/esm/components/settings/SettingsResourceOperationPanel.js.map +1 -1
  376. package/dist/esm/components/settings/useOwnerProviderConnections.d.ts +59 -0
  377. package/dist/esm/components/settings/useOwnerProviderConnections.d.ts.map +1 -0
  378. package/dist/esm/components/settings/useOwnerProviderConnections.js +136 -0
  379. package/dist/esm/components/settings/useOwnerProviderConnections.js.map +1 -0
  380. package/dist/esm/components/views/chart-view/chart-view.utils.d.ts +5 -0
  381. package/dist/esm/components/views/chart-view/chart-view.utils.d.ts.map +1 -1
  382. package/dist/esm/components/views/chart-view/chart-view.utils.js +5 -0
  383. package/dist/esm/components/views/chart-view/chart-view.utils.js.map +1 -1
  384. package/dist/esm/components/views/chart-view/useResourceChartData.d.ts +50 -0
  385. package/dist/esm/components/views/chart-view/useResourceChartData.d.ts.map +1 -0
  386. package/dist/esm/components/views/chart-view/useResourceChartData.js +72 -0
  387. package/dist/esm/components/views/chart-view/useResourceChartData.js.map +1 -0
  388. package/dist/esm/components/views/composite-view/CompositeLayout.d.ts.map +1 -1
  389. package/dist/esm/components/views/composite-view/CompositeLayout.js +2 -1
  390. package/dist/esm/components/views/composite-view/CompositeLayout.js.map +1 -1
  391. package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts +86 -0
  392. package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts.map +1 -0
  393. package/dist/esm/core/app-shell/AppShellBuildingBlocks.js +187 -0
  394. package/dist/esm/core/app-shell/AppShellBuildingBlocks.js.map +1 -0
  395. package/dist/esm/core/app-shell/PortalContainerContext.d.ts +5 -2
  396. package/dist/esm/core/app-shell/PortalContainerContext.d.ts.map +1 -1
  397. package/dist/esm/core/app-shell/PortalContainerContext.js +5 -2
  398. package/dist/esm/core/app-shell/PortalContainerContext.js.map +1 -1
  399. package/dist/esm/core/app-shell/app-shell.schemas.d.ts +18 -9
  400. package/dist/esm/core/app-shell/app-shell.schemas.d.ts.map +1 -1
  401. package/dist/esm/core/app-shell/app-shell.schemas.js +1 -0
  402. package/dist/esm/core/app-shell/app-shell.schemas.js.map +1 -1
  403. package/dist/esm/core/app-shell/useAppShellLayout.d.ts +10 -0
  404. package/dist/esm/core/app-shell/useAppShellLayout.d.ts.map +1 -1
  405. package/dist/esm/core/app-shell/useAppShellLayout.js +28 -5
  406. package/dist/esm/core/app-shell/useAppShellLayout.js.map +1 -1
  407. package/dist/esm/core/app-shell/usePublicShellLayout.d.ts.map +1 -1
  408. package/dist/esm/core/app-shell/usePublicShellLayout.js +38 -0
  409. package/dist/esm/core/app-shell/usePublicShellLayout.js.map +1 -1
  410. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts +15 -1
  411. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts.map +1 -1
  412. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js +47 -13
  413. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js.map +1 -1
  414. package/dist/esm/core/billing/BillingContext.d.ts +25 -2
  415. package/dist/esm/core/billing/BillingContext.d.ts.map +1 -1
  416. package/dist/esm/core/billing/BillingContext.js +16 -25
  417. package/dist/esm/core/billing/BillingContext.js.map +1 -1
  418. package/dist/esm/core/billing/billing-provider-display.frontend.utils.d.ts +11 -3
  419. package/dist/esm/core/billing/billing-provider-display.frontend.utils.d.ts.map +1 -1
  420. package/dist/esm/core/billing/billing-provider-display.frontend.utils.js +14 -8
  421. package/dist/esm/core/billing/billing-provider-display.frontend.utils.js.map +1 -1
  422. package/dist/esm/core/billing/useBillingPlanChange.d.ts.map +1 -1
  423. package/dist/esm/core/billing/useBillingPlanChange.js +2 -0
  424. package/dist/esm/core/billing/useBillingPlanChange.js.map +1 -1
  425. package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.d.ts.map +1 -1
  426. package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js +1 -0
  427. package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js.map +1 -1
  428. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts +29 -229
  429. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts.map +1 -1
  430. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js +29 -327
  431. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js.map +1 -1
  432. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts +17 -27
  433. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts.map +1 -1
  434. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js +28 -48
  435. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js.map +1 -1
  436. package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts +21 -11
  437. package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts.map +1 -1
  438. package/dist/esm/core/config/app-configuration-frontend.schemas.js +4 -4
  439. package/dist/esm/core/config/app-configuration-frontend.schemas.js.map +1 -1
  440. package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts +17 -0
  441. package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts.map +1 -1
  442. package/dist/esm/core/config/app-level-components.frontend.schemas.js +17 -0
  443. package/dist/esm/core/config/app-level-components.frontend.schemas.js.map +1 -1
  444. package/dist/esm/core/config/chart-view.frontend.schemas.d.ts +10 -10
  445. package/dist/esm/core/config/engine-settings-destinations.d.ts.map +1 -1
  446. package/dist/esm/core/config/engine-settings-destinations.js +221 -6
  447. package/dist/esm/core/config/engine-settings-destinations.js.map +1 -1
  448. package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts +8 -0
  449. package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts.map +1 -1
  450. package/dist/esm/core/config/launcher-items.frontend.schemas.js +1 -0
  451. package/dist/esm/core/config/launcher-items.frontend.schemas.js.map +1 -1
  452. package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts +10 -1
  453. package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts.map +1 -1
  454. package/dist/esm/core/config/settings-hub.frontend.schemas.js +9 -0
  455. package/dist/esm/core/config/settings-hub.frontend.schemas.js.map +1 -1
  456. package/dist/esm/core/config/verify-launcher-content.d.ts.map +1 -1
  457. package/dist/esm/core/config/verify-launcher-content.js +30 -19
  458. package/dist/esm/core/config/verify-launcher-content.js.map +1 -1
  459. package/dist/esm/core/errors/ErrorContext.d.ts.map +1 -1
  460. package/dist/esm/core/errors/ErrorContext.js +9 -1
  461. package/dist/esm/core/errors/ErrorContext.js.map +1 -1
  462. package/dist/esm/core/errors/GlobalErrorHandler.d.ts.map +1 -1
  463. package/dist/esm/core/errors/GlobalErrorHandler.js +5 -4
  464. package/dist/esm/core/errors/GlobalErrorHandler.js.map +1 -1
  465. package/dist/esm/core/errors/RouterErrorBoundary.js +1 -1
  466. package/dist/esm/core/errors/RouterErrorBoundary.js.map +1 -1
  467. package/dist/esm/core/errors/errors-builder.frontend.services.d.ts +2 -2
  468. package/dist/esm/core/errors/errors-builder.frontend.services.d.ts.map +1 -1
  469. package/dist/esm/core/errors/errors-builder.frontend.services.js +4 -4
  470. package/dist/esm/core/errors/errors-builder.frontend.services.js.map +1 -1
  471. package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js +1 -1
  472. package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js.map +1 -1
  473. package/dist/esm/core/events/NotificationContext.d.ts.map +1 -1
  474. package/dist/esm/core/events/NotificationContext.js +23 -5
  475. package/dist/esm/core/events/NotificationContext.js.map +1 -1
  476. package/dist/esm/core/events/events.frontend.schemas.d.ts +110 -43
  477. package/dist/esm/core/events/events.frontend.schemas.d.ts.map +1 -1
  478. package/dist/esm/core/events/events.frontend.schemas.js +89 -15
  479. package/dist/esm/core/events/events.frontend.schemas.js.map +1 -1
  480. package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts +2 -0
  481. package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts.map +1 -1
  482. package/dist/esm/core/execution/useExecutionParticipationRMM.js +2 -1
  483. package/dist/esm/core/execution/useExecutionParticipationRMM.js.map +1 -1
  484. package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts +1 -1
  485. package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts.map +1 -1
  486. package/dist/esm/core/execution/useExecutionResourceOperationSurface.js +5 -2
  487. package/dist/esm/core/execution/useExecutionResourceOperationSurface.js.map +1 -1
  488. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.d.ts +63 -0
  489. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.d.ts.map +1 -0
  490. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.js +131 -0
  491. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.js.map +1 -0
  492. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.d.ts +61 -0
  493. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.d.ts.map +1 -0
  494. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.js +178 -0
  495. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.js.map +1 -0
  496. package/dist/esm/core/external-providers/ProviderAddressLookupHost.d.ts +52 -0
  497. package/dist/esm/core/external-providers/ProviderAddressLookupHost.d.ts.map +1 -0
  498. package/dist/esm/core/external-providers/ProviderAddressLookupHost.js +144 -0
  499. package/dist/esm/core/external-providers/ProviderAddressLookupHost.js.map +1 -0
  500. package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts +22 -1
  501. package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts.map +1 -1
  502. package/dist/esm/core/external-providers/ProviderFilePickerHost.js +23 -3
  503. package/dist/esm/core/external-providers/ProviderFilePickerHost.js.map +1 -1
  504. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.d.ts +55 -0
  505. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.d.ts.map +1 -0
  506. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.js +65 -0
  507. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.js.map +1 -0
  508. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts +63 -0
  509. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts.map +1 -0
  510. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js +100 -0
  511. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js.map +1 -0
  512. package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts +45 -7
  513. package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts.map +1 -1
  514. package/dist/esm/core/flows-actors/FlowsActorsContext.js +112 -28
  515. package/dist/esm/core/flows-actors/FlowsActorsContext.js.map +1 -1
  516. package/dist/esm/core/flows-actors/usePendingDecisions.d.ts +32 -0
  517. package/dist/esm/core/flows-actors/usePendingDecisions.d.ts.map +1 -0
  518. package/dist/esm/core/flows-actors/usePendingDecisions.js +91 -0
  519. package/dist/esm/core/flows-actors/usePendingDecisions.js.map +1 -0
  520. package/dist/esm/core/guidance/GuidanceRenderer.d.ts.map +1 -1
  521. package/dist/esm/core/guidance/GuidanceRenderer.js +3 -2
  522. package/dist/esm/core/guidance/GuidanceRenderer.js.map +1 -1
  523. package/dist/esm/core/i18n/I18nContext.d.ts +22 -8
  524. package/dist/esm/core/i18n/I18nContext.d.ts.map +1 -1
  525. package/dist/esm/core/i18n/I18nContext.js +21 -9
  526. package/dist/esm/core/i18n/I18nContext.js.map +1 -1
  527. package/dist/esm/core/i18n/component-label-resolution.utils.d.ts +5 -3
  528. package/dist/esm/core/i18n/component-label-resolution.utils.d.ts.map +1 -1
  529. package/dist/esm/core/i18n/component-label-resolution.utils.js +5 -3
  530. package/dist/esm/core/i18n/component-label-resolution.utils.js.map +1 -1
  531. package/dist/esm/core/i18n/useI18n.d.ts +2 -1
  532. package/dist/esm/core/i18n/useI18n.d.ts.map +1 -1
  533. package/dist/esm/core/i18n/useI18n.js +2 -1
  534. package/dist/esm/core/i18n/useI18n.js.map +1 -1
  535. package/dist/esm/core/loading/LoadingContext.d.ts.map +1 -1
  536. package/dist/esm/core/loading/LoadingContext.js +7 -1
  537. package/dist/esm/core/loading/LoadingContext.js.map +1 -1
  538. package/dist/esm/core/loading/LoadingGate.d.ts.map +1 -1
  539. package/dist/esm/core/loading/LoadingGate.js +19 -1
  540. package/dist/esm/core/loading/LoadingGate.js.map +1 -1
  541. package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts +15 -2
  542. package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts.map +1 -1
  543. package/dist/esm/core/monitoring/analytics/AnalyticsContext.js +183 -20
  544. package/dist/esm/core/monitoring/analytics/AnalyticsContext.js.map +1 -1
  545. package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js +2 -2
  546. package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js.map +1 -1
  547. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.d.ts +7 -15
  548. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.d.ts.map +1 -1
  549. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.js +8 -26
  550. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.js.map +1 -1
  551. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.d.ts +12 -3
  552. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.d.ts.map +1 -1
  553. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.js +3 -2
  554. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.js.map +1 -1
  555. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.d.ts +42 -0
  556. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.d.ts.map +1 -1
  557. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js +89 -5
  558. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js.map +1 -1
  559. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.d.ts +2 -0
  560. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.d.ts.map +1 -1
  561. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.js +2 -0
  562. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.js.map +1 -1
  563. package/dist/esm/core/navigation/NavigationContentAreas.d.ts +78 -0
  564. package/dist/esm/core/navigation/NavigationContentAreas.d.ts.map +1 -1
  565. package/dist/esm/core/navigation/NavigationContentAreas.js +264 -16
  566. package/dist/esm/core/navigation/NavigationContentAreas.js.map +1 -1
  567. package/dist/esm/core/navigation/NavigationContext.d.ts +8 -0
  568. package/dist/esm/core/navigation/NavigationContext.d.ts.map +1 -1
  569. package/dist/esm/core/navigation/NavigationContext.js +137 -30
  570. package/dist/esm/core/navigation/NavigationContext.js.map +1 -1
  571. package/dist/esm/core/navigation/launcher-resolution.d.ts +2 -0
  572. package/dist/esm/core/navigation/launcher-resolution.d.ts.map +1 -1
  573. package/dist/esm/core/navigation/launcher-resolution.js +1 -0
  574. package/dist/esm/core/navigation/launcher-resolution.js.map +1 -1
  575. package/dist/esm/core/navigation/navigation-cascade.d.ts +46 -0
  576. package/dist/esm/core/navigation/navigation-cascade.d.ts.map +1 -0
  577. package/dist/esm/core/navigation/navigation-cascade.js +222 -0
  578. package/dist/esm/core/navigation/navigation-cascade.js.map +1 -0
  579. package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.d.ts.map +1 -1
  580. package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.js +21 -2
  581. package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.js.map +1 -1
  582. package/dist/esm/core/navigation/navigation-controller-internals.d.ts +71 -0
  583. package/dist/esm/core/navigation/navigation-controller-internals.d.ts.map +1 -0
  584. package/dist/esm/core/navigation/navigation-controller-internals.js +84 -0
  585. package/dist/esm/core/navigation/navigation-controller-internals.js.map +1 -0
  586. package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts +86 -2
  587. package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts.map +1 -1
  588. package/dist/esm/core/navigation/navigation-policy-resolver.service.js +242 -124
  589. package/dist/esm/core/navigation/navigation-policy-resolver.service.js.map +1 -1
  590. package/dist/esm/core/navigation/navigation.schemas.d.ts +170 -8
  591. package/dist/esm/core/navigation/navigation.schemas.d.ts.map +1 -1
  592. package/dist/esm/core/navigation/navigation.schemas.js +121 -2
  593. package/dist/esm/core/navigation/navigation.schemas.js.map +1 -1
  594. package/dist/esm/core/navigation/navigation.utils.d.ts +102 -6
  595. package/dist/esm/core/navigation/navigation.utils.d.ts.map +1 -1
  596. package/dist/esm/core/navigation/navigation.utils.js +283 -34
  597. package/dist/esm/core/navigation/navigation.utils.js.map +1 -1
  598. package/dist/esm/core/navigation/useIsStackEntryActive.d.ts +0 -10
  599. package/dist/esm/core/navigation/useIsStackEntryActive.d.ts.map +0 -1
  600. package/dist/esm/core/navigation/useIsStackEntryActive.js.map +0 -1
  601. package/dist/esm/core/navigation/useNavigationController.d.ts +28 -157
  602. package/dist/esm/core/navigation/useNavigationController.d.ts.map +1 -1
  603. package/dist/esm/core/navigation/useNavigationController.js +211 -1189
  604. package/dist/esm/core/navigation/useNavigationController.js.map +1 -1
  605. package/dist/esm/core/navigation/useNavigationRouterSync.d.ts +174 -0
  606. package/dist/esm/core/navigation/useNavigationRouterSync.d.ts.map +1 -0
  607. package/dist/esm/core/navigation/useNavigationRouterSync.js +977 -0
  608. package/dist/esm/core/navigation/useNavigationRouterSync.js.map +1 -0
  609. package/dist/esm/core/navigation/useOverlayTitle.d.ts +13 -1
  610. package/dist/esm/core/navigation/useOverlayTitle.d.ts.map +1 -1
  611. package/dist/esm/core/navigation/useOverlayTitle.js +15 -10
  612. package/dist/esm/core/navigation/useOverlayTitle.js.map +1 -1
  613. package/dist/esm/core/navigation/useResponsiveZoneMigration.d.ts +43 -0
  614. package/dist/esm/core/navigation/useResponsiveZoneMigration.d.ts.map +1 -0
  615. package/dist/esm/core/navigation/useResponsiveZoneMigration.js +44 -0
  616. package/dist/esm/core/navigation/useResponsiveZoneMigration.js.map +1 -0
  617. package/dist/esm/core/navigation/zone-collapse-migration.d.ts +83 -0
  618. package/dist/esm/core/navigation/zone-collapse-migration.d.ts.map +1 -0
  619. package/dist/esm/core/navigation/zone-collapse-migration.js +116 -0
  620. package/dist/esm/core/navigation/zone-collapse-migration.js.map +1 -0
  621. package/dist/esm/core/navigation/zone-collapse.d.ts +51 -0
  622. package/dist/esm/core/navigation/zone-collapse.d.ts.map +1 -0
  623. package/dist/esm/core/navigation/zone-collapse.js +59 -0
  624. package/dist/esm/core/navigation/zone-collapse.js.map +1 -0
  625. package/dist/esm/core/navigation/zone-emphasis.d.ts +3 -0
  626. package/dist/esm/core/navigation/zone-emphasis.d.ts.map +1 -1
  627. package/dist/esm/core/navigation/zone-emphasis.js +26 -4
  628. package/dist/esm/core/navigation/zone-emphasis.js.map +1 -1
  629. package/dist/esm/core/navigation/zone-visible-entry.d.ts +22 -0
  630. package/dist/esm/core/navigation/zone-visible-entry.d.ts.map +1 -1
  631. package/dist/esm/core/navigation/zone-visible-entry.js +25 -0
  632. package/dist/esm/core/navigation/zone-visible-entry.js.map +1 -1
  633. package/dist/esm/core/requests/websockets/WebSocketContext.d.ts.map +1 -1
  634. package/dist/esm/core/requests/websockets/WebSocketContext.js +53 -18
  635. package/dist/esm/core/requests/websockets/WebSocketContext.js.map +1 -1
  636. package/dist/esm/core/requests/websockets/WebSocketEventBridge.d.ts.map +1 -1
  637. package/dist/esm/core/requests/websockets/WebSocketEventBridge.js +3 -1
  638. package/dist/esm/core/requests/websockets/WebSocketEventBridge.js.map +1 -1
  639. package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts +22 -0
  640. package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts.map +1 -1
  641. package/dist/esm/core/requests/websockets/useNotificationBadges.js +72 -3
  642. package/dist/esm/core/requests/websockets/useNotificationBadges.js.map +1 -1
  643. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.d.ts +28 -0
  644. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.d.ts.map +1 -0
  645. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.js +86 -0
  646. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.js.map +1 -0
  647. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts +38 -3
  648. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts.map +1 -1
  649. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js +57 -2
  650. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js.map +1 -1
  651. package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.d.ts.map +1 -1
  652. package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js +4 -2
  653. package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js.map +1 -1
  654. package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts +30 -1
  655. package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts.map +1 -1
  656. package/dist/esm/core/requests/wildo-http-client.frontend.service.js +47 -4
  657. package/dist/esm/core/requests/wildo-http-client.frontend.service.js.map +1 -1
  658. package/dist/esm/core/resources/ResourceRegistryContext.d.ts.map +1 -1
  659. package/dist/esm/core/resources/ResourceRegistryContext.js +22 -1
  660. package/dist/esm/core/resources/ResourceRegistryContext.js.map +1 -1
  661. package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js +1 -1
  662. package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js.map +1 -1
  663. package/dist/esm/core/resources/frontend-resource.utils.d.ts +22 -1
  664. package/dist/esm/core/resources/frontend-resource.utils.d.ts.map +1 -1
  665. package/dist/esm/core/resources/frontend-resource.utils.js +25 -2
  666. package/dist/esm/core/resources/frontend-resource.utils.js.map +1 -1
  667. package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts +113 -13
  668. package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts.map +1 -1
  669. package/dist/esm/core/resources/operation-semantics.frontend.utils.js +173 -20
  670. package/dist/esm/core/resources/operation-semantics.frontend.utils.js.map +1 -1
  671. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.d.ts +11 -0
  672. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.d.ts.map +1 -1
  673. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.js +7 -0
  674. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.js.map +1 -1
  675. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.d.ts +3 -2
  676. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.d.ts.map +1 -1
  677. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.js +13 -5
  678. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.js.map +1 -1
  679. package/dist/esm/core/resources/resources-repository.frontend.service.d.ts +6 -0
  680. package/dist/esm/core/resources/resources-repository.frontend.service.d.ts.map +1 -1
  681. package/dist/esm/core/resources/resources-repository.frontend.service.js +90 -1
  682. package/dist/esm/core/resources/resources-repository.frontend.service.js.map +1 -1
  683. package/dist/esm/core/resources/resources.frontend.schemas.d.ts +139 -16
  684. package/dist/esm/core/resources/resources.frontend.schemas.d.ts.map +1 -1
  685. package/dist/esm/core/resources/resources.frontend.schemas.js +110 -11
  686. package/dist/esm/core/resources/resources.frontend.schemas.js.map +1 -1
  687. package/dist/esm/core/resources/rmm/ResourceMutationManager.d.ts.map +1 -1
  688. package/dist/esm/core/resources/rmm/ResourceMutationManager.js +3 -1
  689. package/dist/esm/core/resources/rmm/ResourceMutationManager.js.map +1 -1
  690. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts +10 -0
  691. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts.map +1 -1
  692. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js +8 -0
  693. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js.map +1 -1
  694. package/dist/esm/core/resources/rmm/useResourceRMM.d.ts +7 -0
  695. package/dist/esm/core/resources/rmm/useResourceRMM.d.ts.map +1 -1
  696. package/dist/esm/core/resources/rmm/useResourceRMM.js +9 -2
  697. package/dist/esm/core/resources/rmm/useResourceRMM.js.map +1 -1
  698. package/dist/esm/core/resources/useOperationDirectExecution.d.ts +59 -0
  699. package/dist/esm/core/resources/useOperationDirectExecution.d.ts.map +1 -0
  700. package/dist/esm/core/resources/useOperationDirectExecution.js +278 -0
  701. package/dist/esm/core/resources/useOperationDirectExecution.js.map +1 -0
  702. package/dist/esm/core/resources/useResourceOperationActions.d.ts +1 -1
  703. package/dist/esm/core/resources/useResourceOperationActions.d.ts.map +1 -1
  704. package/dist/esm/core/resources/useResourceOperationActions.js +69 -22
  705. package/dist/esm/core/resources/useResourceOperationActions.js.map +1 -1
  706. package/dist/esm/core/resources/useResourceOperationSurface.d.ts +8 -6
  707. package/dist/esm/core/resources/useResourceOperationSurface.d.ts.map +1 -1
  708. package/dist/esm/core/resources/useResourceOperationSurface.js +3 -2
  709. package/dist/esm/core/resources/useResourceOperationSurface.js.map +1 -1
  710. package/dist/esm/core/runtime/AppRouter.d.ts.map +1 -1
  711. package/dist/esm/core/runtime/AppRouter.js +23 -2
  712. package/dist/esm/core/runtime/AppRouter.js.map +1 -1
  713. package/dist/esm/core/runtime/ApplicationContext.shared.d.ts +4 -2
  714. package/dist/esm/core/runtime/ApplicationContext.shared.d.ts.map +1 -1
  715. package/dist/esm/core/runtime/ApplicationContext.shared.js.map +1 -1
  716. package/dist/esm/core/runtime/ApplicationMainContext.d.ts +12 -2
  717. package/dist/esm/core/runtime/ApplicationMainContext.d.ts.map +1 -1
  718. package/dist/esm/core/runtime/ApplicationMainContext.js +5 -2
  719. package/dist/esm/core/runtime/ApplicationMainContext.js.map +1 -1
  720. package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts +25 -1
  721. package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts.map +1 -1
  722. package/dist/esm/core/runtime/domain-module.frontend.definitions.js +37 -1
  723. package/dist/esm/core/runtime/domain-module.frontend.definitions.js.map +1 -1
  724. package/dist/esm/core/runtime/start-application.frontend.service.d.ts +21 -2
  725. package/dist/esm/core/runtime/start-application.frontend.service.d.ts.map +1 -1
  726. package/dist/esm/core/runtime/start-application.frontend.service.js +51 -4
  727. package/dist/esm/core/runtime/start-application.frontend.service.js.map +1 -1
  728. package/dist/esm/core/security/AuthSessionContext.d.ts +11 -0
  729. package/dist/esm/core/security/AuthSessionContext.d.ts.map +1 -1
  730. package/dist/esm/core/security/AuthSessionContext.js +70 -22
  731. package/dist/esm/core/security/AuthSessionContext.js.map +1 -1
  732. package/dist/esm/core/security/StepUpAuthContext.d.ts.map +1 -1
  733. package/dist/esm/core/security/StepUpAuthContext.js +10 -2
  734. package/dist/esm/core/security/StepUpAuthContext.js.map +1 -1
  735. package/dist/esm/core/security/UserOrgsContext.d.ts.map +1 -1
  736. package/dist/esm/core/security/UserOrgsContext.js +72 -8
  737. package/dist/esm/core/security/UserOrgsContext.js.map +1 -1
  738. package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts +7 -0
  739. package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts.map +1 -1
  740. package/dist/esm/core/security/route-organization-access.frontend.utils.js +8 -2
  741. package/dist/esm/core/security/route-organization-access.frontend.utils.js.map +1 -1
  742. package/dist/esm/core/security/useGrantedConsentPurposes.d.ts +30 -0
  743. package/dist/esm/core/security/useGrantedConsentPurposes.d.ts.map +1 -0
  744. package/dist/esm/core/security/useGrantedConsentPurposes.js +38 -0
  745. package/dist/esm/core/security/useGrantedConsentPurposes.js.map +1 -0
  746. package/dist/esm/core/ui/UIContext.d.ts.map +1 -1
  747. package/dist/esm/core/ui/UIContext.js +10 -6
  748. package/dist/esm/core/ui/UIContext.js.map +1 -1
  749. package/dist/esm/core/ui/color-conversion.utils.d.ts +20 -0
  750. package/dist/esm/core/ui/color-conversion.utils.d.ts.map +1 -1
  751. package/dist/esm/core/ui/color-conversion.utils.js +39 -5
  752. package/dist/esm/core/ui/color-conversion.utils.js.map +1 -1
  753. package/dist/esm/core/ui/themes/default.theme.d.ts.map +1 -1
  754. package/dist/esm/core/ui/themes/default.theme.js +22 -2
  755. package/dist/esm/core/ui/themes/default.theme.js.map +1 -1
  756. package/dist/esm/core/ui/ui.frontend.schemas.d.ts +6 -6
  757. package/dist/esm/core/ui/ui.frontend.schemas.d.ts.map +1 -1
  758. package/dist/esm/core/ui/ui.frontend.schemas.js +3 -3
  759. package/dist/esm/core/ui/ui.frontend.schemas.js.map +1 -1
  760. package/dist/esm/index.d.ts +10 -1
  761. package/dist/esm/index.d.ts.map +1 -1
  762. package/dist/esm/index.js +19 -1
  763. package/dist/esm/index.js.map +1 -1
  764. package/dist/esm/testing/app-shell-placement-coverage.d.ts +43 -0
  765. package/dist/esm/testing/app-shell-placement-coverage.d.ts.map +1 -0
  766. package/dist/esm/testing/app-shell-placement-coverage.js +114 -0
  767. package/dist/esm/testing/app-shell-placement-coverage.js.map +1 -0
  768. package/dist/esm/testing/mock-builders.d.ts.map +1 -1
  769. package/dist/esm/testing/mock-builders.js +5 -0
  770. package/dist/esm/testing/mock-builders.js.map +1 -1
  771. package/dist/esm/testing.d.ts +1 -0
  772. package/dist/esm/testing.d.ts.map +1 -1
  773. package/dist/esm/testing.js +1 -0
  774. package/dist/esm/testing.js.map +1 -1
  775. package/package.json +9 -7
  776. package/dist/esm/core/navigation/useIsStackEntryActive.js +0 -15
  777. package/dist/tsconfig.build.tsbuildinfo +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CompositeLayout.js","sourceRoot":"","sources":["../../../../../../src/components/views/composite-view/CompositeLayout.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport type { IndicatorVariant } from '@wildo-ai/presets-components-models';\nimport React, { useMemo, type ReactNode } from 'react';\nimport type { ExpandTrigger, SectionConfig } from '@wildo-ai/presets-components-models';\nimport { LabellingTypes } from '@wildo-ai/presets-components-models';\n\nimport {\n ContentSectionContainer,\n type ContentSectionDescriptor,\n} from '~wildo-frontend-lib/components/sections/ContentSectionContainer';\n\nimport {\n buildSectionConfigFromGroup,\n groupSectionsByAppearance,\n type SectionGroup,\n} from '~wildo-frontend-lib/components/resources/skeleton/section-consolidation.utils';\nimport { GroupedSectionBody, type SectionProps } from '~wildo-frontend-lib/components/resources/skeleton/Section';\nimport { GroupedSectionHostKind } from '~wildo-frontend-lib/components/resources/skeleton/Section.shared';\nimport {\n SectionPresentationProvider,\n type SectionPresentationEntry,\n} from '~wildo-frontend-lib/components/resources/skeleton/SectionPresentationContext';\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { useOptionalCompositeViewContext } from './CompositeViewContext';\n\nexport interface CompositeLayoutProps {\n className?: string;\n children?: ReactNode;\n containerConfig?: CompositeLayoutContainerConfigOverrides;\n sectionMetadata?: Record<string, {\n icon?: React.ReactNode;\n /** How many things wait in the section, shown on its tab (#1325). */\n count?: number;\n countTone?: IndicatorVariant;\n containerConfig?: CompositeLayoutContainerConfigOverrides;\n }>;\n /**\n * Forwarded to every section-group container (creation-board plan, Phase 4). Pairs with the\n * `activeSection` override to complete the CONTROLLED contract: an owner that passes\n * `activeSection` receives every change request here and applies it (typically to the URL);\n * ignoring the callback while controlling the value freezes the tabs.\n */\n onSectionChange?: (sectionId: string | string[]) => void;\n}\n\nexport interface CompositeLayoutContainerConfigOverrides {\n animated?: boolean;\n persistState?: boolean;\n storageKey?: string;\n hideWhenEmpty?: boolean;\n showSingleSectionNav?: boolean;\n fallbackMode?: SectionConfig['mode'];\n emptyStateMessage?: string;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n triggerLabel?: { open: string; closed: string };\n allowNone?: boolean;\n expandTrigger?: ExpandTrigger;\n showMoreLabel?: string;\n showLessLabel?: string;\n completedIcon?: React.ReactNode;\n nextLabel?: string;\n previousLabel?: string;\n completeLabel?: string;\n /**\n * CONTROLLED active section for the navigation modes (TABS / VERTICAL_TABS / PILLS) — see the\n * seam's contract on the section configs (`frontend-forms.shared.schemas.ts`). Rides the same\n * override merge every other container knob uses, so a composite OWNER can drive the active tab\n * (deep links, cross-pane navigation) without a bespoke channel.\n */\n activeSection?: string;\n}\n\nexport function CompositeLayout({\n className,\n children,\n containerConfig,\n sectionMetadata,\n onSectionChange,\n}: CompositeLayoutProps): ReactNode {\n const compositeViewContext = useOptionalCompositeViewContext();\n const compositeTranslationRef = compositeViewContext?.viewDefinition.translationRef;\n const compositeLabelKeys = useMemo(\n () => (\n compositeTranslationRef\n ? [`${LabellingTypes.COMPOSITE_VIEWS}.${compositeTranslationRef}`]\n : []\n ),\n [compositeTranslationRef],\n );\n const { tCompositeViewSection } = useI18n({ keys: compositeLabelKeys });\n const sectionPresentation = useMemo<Record<string, SectionPresentationEntry> | undefined>(() => {\n const sectionRefs = new Set<string>([\n ...Object.keys(sectionMetadata ?? {}),\n ...(compositeViewContext?.viewDefinition.sectionRefs ?? []),\n ]);\n if (sectionRefs.size === 0) {\n return undefined;\n }\n\n /*\n * Words are resolved only for DECLARED section refs. The labelling pipeline plans\n * `composite_views.<ref>.sections.<section>.*` from `viewDefinition.sectionRefs` and from nothing\n * else, so a name that reaches this map through `sectionMetadata` alone has no label anyone could\n * generate — and since #1450 a missing title is its key path, it would show one forever. Such a\n * section keeps its icon and count and stays untitled, as it always was.\n */\n const declaredSectionRefs = new Set<string>(compositeViewContext?.viewDefinition.sectionRefs ?? []);\n return Object.fromEntries(\n Array.from(sectionRefs).map((sectionName) => [\n sectionName,\n {\n title: compositeTranslationRef && declaredSectionRefs.has(sectionName)\n ? tCompositeViewSection(compositeTranslationRef, sectionName, 'title')\n : undefined,\n description: compositeTranslationRef && declaredSectionRefs.has(sectionName)\n ? tCompositeViewSection(compositeTranslationRef, sectionName, 'description')\n : undefined,\n icon: sectionMetadata?.[sectionName]?.icon,\n count: sectionMetadata?.[sectionName]?.count,\n countTone: sectionMetadata?.[sectionName]?.countTone,\n },\n ]),\n );\n }, [\n compositeTranslationRef,\n compositeViewContext?.viewDefinition.sectionRefs,\n sectionMetadata,\n tCompositeViewSection,\n ]);\n const renderedChildren = useMemo(\n () => renderGroupedChildren(children, containerConfig, sectionPresentation, sectionMetadata, onSectionChange),\n [children, containerConfig, sectionPresentation, sectionMetadata, onSectionChange],\n );\n\n return (\n <SectionPresentationProvider value={{ sectionEntries: sectionPresentation }}>\n <div className={className} data-composite-layout>\n {renderedChildren}\n </div>\n </SectionPresentationProvider>\n );\n}\n\nfunction renderGroupedChildren(\n children: ReactNode,\n containerConfig?: CompositeLayoutProps['containerConfig'],\n sectionPresentation?: Record<string, SectionPresentationEntry>,\n sectionMetadata?: CompositeLayoutProps['sectionMetadata'],\n onSectionChange?: CompositeLayoutProps['onSectionChange'],\n): ReactNode {\n const grouped = groupSectionsByAppearance(children);\n\n return (\n <>\n {grouped.items.map((item, idx) => {\n if (item.type === 'node') {\n return <React.Fragment key={idx}>{item.node}</React.Fragment>;\n }\n\n const { group } = item;\n const groupedSections = splitCompositeSectionGroupByMetadata(group.sections, sectionMetadata);\n\n return groupedSections.map((sectionGroup, groupIndex) => {\n const config = mergeCompositeLayoutContainerConfig(\n buildSectionConfigFromGroup({\n ...group,\n sections: sectionGroup,\n } as SectionGroup),\n resolveCompositeLayoutContainerConfig(sectionGroup, containerConfig, sectionMetadata),\n );\n\n const sections: ContentSectionDescriptor[] = sectionGroup.map((section) => (\n buildContentSectionFromLayoutSection(section, sectionPresentation)\n ));\n\n return (\n <ContentSectionContainer\n key={`composite-group-${group.mode}-${idx}-${groupIndex}`}\n sections={sections}\n config={config}\n onSectionChange={onSectionChange}\n />\n );\n });\n })}\n </>\n );\n}\n\nfunction buildContentSectionFromLayoutSection(\n section: React.ReactElement<SectionProps>,\n sectionPresentation?: Record<string, SectionPresentationEntry>,\n): ContentSectionDescriptor {\n const metadata = sectionPresentation?.[section.props.name];\n\n return {\n id: section.props.name,\n title: metadata?.title,\n description: metadata?.description,\n icon: metadata?.icon,\n count: metadata?.count,\n countTone: metadata?.countTone,\n disabled: section.props.disabled,\n content: (\n <GroupedSectionBody\n hostKind={GroupedSectionHostKind.COMPOSITE}\n sectionProps={section.props}\n providesHeading={!!metadata?.title}\n />\n ),\n };\n}\n\nfunction resolveCompositeLayoutContainerConfig(\n sections: React.ReactElement<SectionProps>[],\n containerConfig?: CompositeLayoutProps['containerConfig'],\n sectionMetadata?: CompositeLayoutProps['sectionMetadata'],\n): CompositeLayoutContainerConfigOverrides | undefined {\n const anchoredOverrides = sections\n .map((section) => sectionMetadata?.[section.props.name]?.containerConfig)\n .find((value) => value !== undefined);\n\n if (!containerConfig && !anchoredOverrides) {\n return undefined;\n }\n\n return {\n ...containerConfig,\n ...anchoredOverrides,\n };\n}\n\nfunction mergeCompositeLayoutContainerConfig(\n config: SectionConfig,\n overrides?: CompositeLayoutContainerConfigOverrides,\n): SectionConfig {\n if (!overrides) {\n return config;\n }\n\n return {\n ...config,\n ...overrides,\n } as SectionConfig;\n}\n\nfunction splitCompositeSectionGroupByMetadata(\n sections: React.ReactElement<SectionProps>[],\n sectionMetadata?: CompositeLayoutProps['sectionMetadata'],\n): React.ReactElement<SectionProps>[][] {\n const groups: React.ReactElement<SectionProps>[][] = [];\n\n for (const section of sections) {\n const metadataOverrideKey = JSON.stringify(\n sectionMetadata?.[section.props.name]?.containerConfig ?? null,\n );\n const previousGroup = groups[groups.length - 1];\n if (!previousGroup) {\n groups.push([section]);\n continue;\n }\n\n const previousSection = previousGroup[previousGroup.length - 1];\n const previousOverrideKey = JSON.stringify(\n sectionMetadata?.[previousSection.props.name]?.containerConfig ?? null,\n );\n\n if (previousOverrideKey === metadataOverrideKey) {\n previousGroup.push(section);\n continue;\n }\n\n groups.push([section]);\n }\n\n return groups;\n}\n"]}
1
+ {"version":3,"file":"CompositeLayout.js","sourceRoot":"","sources":["../../../../../../src/components/views/composite-view/CompositeLayout.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport type { IndicatorVariant } from '@wildo-ai/presets-components-models';\nimport React, { useMemo, type ReactNode } from 'react';\nimport type { ExpandTrigger, SectionConfig } from '@wildo-ai/presets-components-models';\nimport { LabellingTypes } from '@wildo-ai/presets-components-models';\nimport { cn } from '~wildo-frontend-lib/core/ui/cn';\n\nimport {\n ContentSectionContainer,\n type ContentSectionDescriptor,\n} from '~wildo-frontend-lib/components/sections/ContentSectionContainer';\n\nimport {\n buildSectionConfigFromGroup,\n groupSectionsByAppearance,\n type SectionGroup,\n} from '~wildo-frontend-lib/components/resources/skeleton/section-consolidation.utils';\nimport { GroupedSectionBody, type SectionProps } from '~wildo-frontend-lib/components/resources/skeleton/Section';\nimport { GroupedSectionHostKind } from '~wildo-frontend-lib/components/resources/skeleton/Section.shared';\nimport {\n SectionPresentationProvider,\n type SectionPresentationEntry,\n} from '~wildo-frontend-lib/components/resources/skeleton/SectionPresentationContext';\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { useOptionalCompositeViewContext } from './CompositeViewContext';\n\nexport interface CompositeLayoutProps {\n className?: string;\n children?: ReactNode;\n containerConfig?: CompositeLayoutContainerConfigOverrides;\n sectionMetadata?: Record<string, {\n icon?: React.ReactNode;\n /** How many things wait in the section, shown on its tab (#1325). */\n count?: number;\n countTone?: IndicatorVariant;\n containerConfig?: CompositeLayoutContainerConfigOverrides;\n }>;\n /**\n * Forwarded to every section-group container (creation-board plan, Phase 4). Pairs with the\n * `activeSection` override to complete the CONTROLLED contract: an owner that passes\n * `activeSection` receives every change request here and applies it (typically to the URL);\n * ignoring the callback while controlling the value freezes the tabs.\n */\n onSectionChange?: (sectionId: string | string[]) => void;\n}\n\nexport interface CompositeLayoutContainerConfigOverrides {\n animated?: boolean;\n persistState?: boolean;\n storageKey?: string;\n hideWhenEmpty?: boolean;\n showSingleSectionNav?: boolean;\n fallbackMode?: SectionConfig['mode'];\n emptyStateMessage?: string;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n triggerLabel?: { open: string; closed: string };\n allowNone?: boolean;\n expandTrigger?: ExpandTrigger;\n showMoreLabel?: string;\n showLessLabel?: string;\n completedIcon?: React.ReactNode;\n nextLabel?: string;\n previousLabel?: string;\n completeLabel?: string;\n /**\n * CONTROLLED active section for the navigation modes (TABS / VERTICAL_TABS / PILLS) — see the\n * seam's contract on the section configs (`frontend-forms.shared.schemas.ts`). Rides the same\n * override merge every other container knob uses, so a composite OWNER can drive the active tab\n * (deep links, cross-pane navigation) without a bespoke channel.\n */\n activeSection?: string;\n}\n\nexport function CompositeLayout({\n className,\n children,\n containerConfig,\n sectionMetadata,\n onSectionChange,\n}: CompositeLayoutProps): ReactNode {\n const compositeViewContext = useOptionalCompositeViewContext();\n const compositeTranslationRef = compositeViewContext?.viewDefinition.translationRef;\n const compositeLabelKeys = useMemo(\n () => (\n compositeTranslationRef\n ? [`${LabellingTypes.COMPOSITE_VIEWS}.${compositeTranslationRef}`]\n : []\n ),\n [compositeTranslationRef],\n );\n const { tCompositeViewSection } = useI18n({ keys: compositeLabelKeys });\n const sectionPresentation = useMemo<Record<string, SectionPresentationEntry> | undefined>(() => {\n const sectionRefs = new Set<string>([\n ...Object.keys(sectionMetadata ?? {}),\n ...(compositeViewContext?.viewDefinition.sectionRefs ?? []),\n ]);\n if (sectionRefs.size === 0) {\n return undefined;\n }\n\n /*\n * Words are resolved only for DECLARED section refs. The labelling pipeline plans\n * `composite_views.<ref>.sections.<section>.*` from `viewDefinition.sectionRefs` and from nothing\n * else, so a name that reaches this map through `sectionMetadata` alone has no label anyone could\n * generate — and since #1450 a missing title is its key path, it would show one forever. Such a\n * section keeps its icon and count and stays untitled, as it always was.\n */\n const declaredSectionRefs = new Set<string>(compositeViewContext?.viewDefinition.sectionRefs ?? []);\n return Object.fromEntries(\n Array.from(sectionRefs).map((sectionName) => [\n sectionName,\n {\n title: compositeTranslationRef && declaredSectionRefs.has(sectionName)\n ? tCompositeViewSection(compositeTranslationRef, sectionName, 'title')\n : undefined,\n description: compositeTranslationRef && declaredSectionRefs.has(sectionName)\n ? tCompositeViewSection(compositeTranslationRef, sectionName, 'description')\n : undefined,\n icon: sectionMetadata?.[sectionName]?.icon,\n count: sectionMetadata?.[sectionName]?.count,\n countTone: sectionMetadata?.[sectionName]?.countTone,\n },\n ]),\n );\n }, [\n compositeTranslationRef,\n compositeViewContext?.viewDefinition.sectionRefs,\n sectionMetadata,\n tCompositeViewSection,\n ]);\n const renderedChildren = useMemo(\n () => renderGroupedChildren(children, containerConfig, sectionPresentation, sectionMetadata, onSectionChange),\n [children, containerConfig, sectionPresentation, sectionMetadata, onSectionChange],\n );\n\n return (\n <SectionPresentationProvider value={{ sectionEntries: sectionPresentation }}>\n {/*\n Sections stack with the SAME rhythm `DisplayLayout` and `FormLayout` give theirs. This root had no\n spacing at all, so every composite's sections touched: measured on Wonder Todos, a todo's\n \"Supporting Tasks\" list ran straight into the \"Progress Metrics\" heading below it. A flex column\n with `gap` rather than `space-y`, because a section's content is often behind a `LoadingGate`,\n whose ready wrapper is `display: contents` — a flex gap spaces its children, a margin cannot.\n */}\n <div className={cn('flex flex-col gap-section', className)} data-composite-layout>\n {renderedChildren}\n </div>\n </SectionPresentationProvider>\n );\n}\n\nfunction renderGroupedChildren(\n children: ReactNode,\n containerConfig?: CompositeLayoutProps['containerConfig'],\n sectionPresentation?: Record<string, SectionPresentationEntry>,\n sectionMetadata?: CompositeLayoutProps['sectionMetadata'],\n onSectionChange?: CompositeLayoutProps['onSectionChange'],\n): ReactNode {\n const grouped = groupSectionsByAppearance(children);\n\n return (\n <>\n {grouped.items.map((item, idx) => {\n if (item.type === 'node') {\n return <React.Fragment key={idx}>{item.node}</React.Fragment>;\n }\n\n const { group } = item;\n const groupedSections = splitCompositeSectionGroupByMetadata(group.sections, sectionMetadata);\n\n return groupedSections.map((sectionGroup, groupIndex) => {\n const config = mergeCompositeLayoutContainerConfig(\n buildSectionConfigFromGroup({\n ...group,\n sections: sectionGroup,\n } as SectionGroup),\n resolveCompositeLayoutContainerConfig(sectionGroup, containerConfig, sectionMetadata),\n );\n\n const sections: ContentSectionDescriptor[] = sectionGroup.map((section) => (\n buildContentSectionFromLayoutSection(section, sectionPresentation)\n ));\n\n return (\n <ContentSectionContainer\n key={`composite-group-${group.mode}-${idx}-${groupIndex}`}\n sections={sections}\n config={config}\n onSectionChange={onSectionChange}\n />\n );\n });\n })}\n </>\n );\n}\n\nfunction buildContentSectionFromLayoutSection(\n section: React.ReactElement<SectionProps>,\n sectionPresentation?: Record<string, SectionPresentationEntry>,\n): ContentSectionDescriptor {\n const metadata = sectionPresentation?.[section.props.name];\n\n return {\n id: section.props.name,\n title: metadata?.title,\n description: metadata?.description,\n icon: metadata?.icon,\n count: metadata?.count,\n countTone: metadata?.countTone,\n disabled: section.props.disabled,\n content: (\n <GroupedSectionBody\n hostKind={GroupedSectionHostKind.COMPOSITE}\n sectionProps={section.props}\n providesHeading={!!metadata?.title}\n />\n ),\n };\n}\n\nfunction resolveCompositeLayoutContainerConfig(\n sections: React.ReactElement<SectionProps>[],\n containerConfig?: CompositeLayoutProps['containerConfig'],\n sectionMetadata?: CompositeLayoutProps['sectionMetadata'],\n): CompositeLayoutContainerConfigOverrides | undefined {\n const anchoredOverrides = sections\n .map((section) => sectionMetadata?.[section.props.name]?.containerConfig)\n .find((value) => value !== undefined);\n\n if (!containerConfig && !anchoredOverrides) {\n return undefined;\n }\n\n return {\n ...containerConfig,\n ...anchoredOverrides,\n };\n}\n\nfunction mergeCompositeLayoutContainerConfig(\n config: SectionConfig,\n overrides?: CompositeLayoutContainerConfigOverrides,\n): SectionConfig {\n if (!overrides) {\n return config;\n }\n\n return {\n ...config,\n ...overrides,\n } as SectionConfig;\n}\n\nfunction splitCompositeSectionGroupByMetadata(\n sections: React.ReactElement<SectionProps>[],\n sectionMetadata?: CompositeLayoutProps['sectionMetadata'],\n): React.ReactElement<SectionProps>[][] {\n const groups: React.ReactElement<SectionProps>[][] = [];\n\n for (const section of sections) {\n const metadataOverrideKey = JSON.stringify(\n sectionMetadata?.[section.props.name]?.containerConfig ?? null,\n );\n const previousGroup = groups[groups.length - 1];\n if (!previousGroup) {\n groups.push([section]);\n continue;\n }\n\n const previousSection = previousGroup[previousGroup.length - 1];\n const previousOverrideKey = JSON.stringify(\n sectionMetadata?.[previousSection.props.name]?.containerConfig ?? null,\n );\n\n if (previousOverrideKey === metadataOverrideKey) {\n previousGroup.push(section);\n continue;\n }\n\n groups.push([section]);\n }\n\n return groups;\n}\n"]}
@@ -0,0 +1,86 @@
1
+ import React from 'react';
2
+ import { HorizontalPlacement, ShellRegion } from '@wildo-ai/presets-components-models';
3
+ import type { StatusBarPlacement } from '../../core/config/app-level-components.frontend.schemas';
4
+ import type { AppShellLayoutInfo } from './app-shell.schemas';
5
+ /**
6
+ * Latches the FIRST time the shell becomes ready.
7
+ *
8
+ * `isLayoutReady` derives from configuration presence and can drop transiently after bootstrap (an
9
+ * organization switch reloading config, for example). Replacing the mounted shell with a loading state on such
10
+ * a drop would unmount every provider and zone below it and destroy navigation state — the failure mode
11
+ * `AppLoadingGate` documents. So a layout shows its loading state only while this returns `false`.
12
+ */
13
+ export declare function useAppShellFirstReady(isLayoutReady: boolean): boolean;
14
+ /**
15
+ * The shell's loading state: a centred spinner on the page background, announced politely. What every layout
16
+ * shows while `useAppShellFirstReady` says the shell has never been ready — one component rather than a copy per
17
+ * layout, so the loading state is the same whatever the disposal.
18
+ */
19
+ export declare function AppShellLoadingState(): React.JSX.Element;
20
+ export interface AppShellProvidersProps {
21
+ /** The result of `useAppShellLayout()`, computed once by the layout and shared with every outlet. */
22
+ layout: AppShellLayoutInfo;
23
+ children: React.ReactNode;
24
+ }
25
+ /**
26
+ * The providers every shell region reads, and nothing else — they render no DOM of their own:
27
+ *
28
+ * - `PortalContainerContext`, holding the `<main>` element `AppShellContentOutlet` registers, so overlays opened
29
+ * from any region portal into the content area — or, when the layout renders `AppShellOverlayPortalLayer`, that
30
+ * layer instead;
31
+ * - `HostedComponentInteractionsProvider`, the single owner of the open state and the open hotkey of the
32
+ * interactive hosted components (command menu, notification center, quick switcher), which may be hosted in the
33
+ * menubar and the sidebar at once.
34
+ */
35
+ export declare function AppShellProviders({ layout, children }: AppShellProvidersProps): React.JSX.Element;
36
+ /**
37
+ * A dedicated layer every overlay (dialog, sheet, menu, popover, tooltip) portals into, for a layout whose regions
38
+ * are TRANSFORMED — a 3D placement. Render it once, inside the providers but OUTSIDE the transformed subtree; the
39
+ * providers then prefer it to `<main>`. A layout that transforms nothing does not need it.
40
+ *
41
+ * It is a zero-size, untransformed, fixed box at the viewport's origin: an overlay positioned `fixed` resolves
42
+ * against the viewport, one positioned `absolute` against the viewport's origin, so floating content lands where its
43
+ * trigger is on screen. It carries the stacking tier overlays need above a layout's own layers.
44
+ */
45
+ export declare function AppShellOverlayPortalLayer(): React.JSX.Element;
46
+ /**
47
+ * Which region to render, and — for a region that sits at an edge — at which edge. The content area is not
48
+ * among them: it has its own outlet, because it owns `<main>` and the page.
49
+ *
50
+ * `placement` renders the region only when the application configured THAT placement. A layout that places the
51
+ * same region at two positions — as the default layout does for the sidebar's start and end edges — renders one
52
+ * outlet per edge. Omitted, the region renders at whatever placement is configured. The type admits only the
53
+ * placement axis the region has, so a sidebar cannot be asked for a vertical edge and render nothing.
54
+ */
55
+ export type AppShellRegionOutletProps = {
56
+ region: ShellRegion.SIDEBAR | ShellRegion.UTILITY_PANEL;
57
+ placement?: HorizontalPlacement.START | HorizontalPlacement.END;
58
+ } | {
59
+ region: ShellRegion.STATUS_BAR;
60
+ placement?: StatusBarPlacement;
61
+ } | {
62
+ region: ShellRegion.ACTIVITY_BAR | ShellRegion.MENUBAR | ShellRegion.TOOLBAR;
63
+ placement?: never;
64
+ };
65
+ /**
66
+ * Renders one shell region's component — the registry-resolved wrapper, with its placement prop — when the
67
+ * application configures that region (and, if `placement` is given, at that placement). Renders nothing
68
+ * otherwise, so placing an outlet for every region is always safe.
69
+ */
70
+ export declare function AppShellRegionOutlet(props: AppShellRegionOutletProps): React.JSX.Element | null;
71
+ export interface AppShellContentOutletProps {
72
+ /** Classes for the `<main>` element — the layout decides how the content area sizes within its arrangement. */
73
+ className?: string;
74
+ /** The route outlet the layout container receives; rendered by the navigation zones while their stack is empty. */
75
+ children?: React.ReactNode;
76
+ }
77
+ /**
78
+ * The content area: the `<main>` landmark carrying `ShellRegion.CONTENT`, the navigation zones, and the floating
79
+ * quick-action button when configured. Its element is registered with `AppShellProviders` as the portal
80
+ * container, so it must be rendered exactly once, inside the providers.
81
+ */
82
+ export declare function AppShellContentOutlet({ className, children }: AppShellContentOutletProps): React.JSX.Element;
83
+ /** The shell's overlay layer: navigation dialogs and sheets, then guidance (tours, tooltips, highlights). */
84
+ export declare function AppShellOverlaysOutlet(): React.JSX.Element;
85
+ /** @wildo_source:part:end saas.frontend.app-shell.building-blocks */
86
+ //# sourceMappingURL=AppShellBuildingBlocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppShellBuildingBlocks.d.ts","sourceRoot":"","sources":["../../../../../src/core/app-shell/AppShellBuildingBlocks.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsE,MAAM,OAAO,CAAC;AAE3F,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAqC,MAAM,qCAAqC,CAAC;AAe1H,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uEAAuE,CAAC;AAEhH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAoE9D;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO,CAMrE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAUxD;AAED,MAAM,WAAW,sBAAsB;IACrC,qGAAqG;IACrG,MAAM,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,sBAAsB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAqBjG;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAM9D;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,yBAAyB,GACjC;IAAE,MAAM,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,aAAa,CAAC;IAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAA;CAAE,GAC5H;IAAE,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC;IAAC,SAAS,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAClE;IAAE,MAAM,EAAE,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAExG;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA8B/F;AAED,MAAM,WAAW,0BAA0B;IACzC,+GAA+G;IAC/G,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mHAAmH;IACnH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,0BAA0B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAW5G;AAED,6GAA6G;AAC7G,wBAAgB,sBAAsB,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAO1D;AACD,qEAAqE"}
@@ -0,0 +1,187 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { createContext, useCallback, useContext, useEffect, useState } from 'react';
3
+ import { ShellRegion, SurfaceVariant } from '@wildo-ai/presets-components-models';
4
+ import { LoadingSpinner } from '../../components/feedback/loading-spinner.js';
5
+ import { Surface } from '../../components/sections/surface.js';
6
+ import { NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE } from '../../core/ui/surface-a11y.utils.js';
7
+ import { ApplicationLevel_ActivityBar } from '../../components/navigation/app-level/ApplicationLevel_ActivityBar.js';
8
+ import { ApplicationLevel_MenuBar } from '../../components/navigation/app-level/ApplicationLevel_MenuBar.js';
9
+ import { ApplicationLevel_QuickActionButton } from '../../components/navigation/app-level/ApplicationLevel_QuickActionButton.js';
10
+ import { ApplicationLevel_Sidebar } from '../../components/navigation/app-level/ApplicationLevel_Sidebar.js';
11
+ import { ApplicationLevel_StatusBar } from '../../components/navigation/app-level/ApplicationLevel_StatusBar.js';
12
+ import { ApplicationLevel_Toolbar } from '../../components/navigation/app-level/ApplicationLevel_Toolbar.js';
13
+ import { ApplicationLevel_UtilityPanel } from '../../components/navigation/app-level/ApplicationLevel_UtilityPanel.js';
14
+ import { HostedComponentInteractionsProvider } from '../../components/navigation/app-level/HostedComponentInteractionsProvider.js';
15
+ import { GuidanceRenderer } from '../../core/guidance/GuidanceRenderer.js';
16
+ import { NavigationContentAreas, NavigationOverlays } from '../../core/navigation/NavigationContentAreas.js';
17
+ import { PortalContainerContext } from './PortalContainerContext.js';
18
+ /** @wildo_source:part:start saas.frontend.app-shell.building-blocks facet:layer:frontend facet:family:app-shell facet:audience:app-developer */
19
+ /**
20
+ * # App shell building blocks
21
+ *
22
+ * The signed-in shell is a LAYOUT — where the regions sit — over parts that do not depend on the layout: the
23
+ * region components themselves (each resolved from the component registry by its wrapper), the content area,
24
+ * the overlays, and two providers every region reads. These building blocks are those parts, so a layout
25
+ * preset only decides the ARRANGEMENT. `AppLayoutPreset_MainContainer_Default` is composed from them, and any
26
+ * other layout container an application registers should be too — a different arrangement of the same regions,
27
+ * or, later, an alternative rendering that draws decoration around them.
28
+ *
29
+ * A layout preset uses them like this:
30
+ *
31
+ * ```tsx
32
+ * const layout = useAppShellLayout();
33
+ * const hasBeenReady = useAppShellFirstReady(layout.isLayoutReady);
34
+ * if (!layout.isLayoutReady && !hasBeenReady) return <AppShellLoadingState />;
35
+ * return (
36
+ * <AppShellProviders layout={layout}>
37
+ * <div className="my-arrangement">
38
+ * <AppShellRegionOutlet region={ShellRegion.SIDEBAR} placement={HorizontalPlacement.START} />
39
+ * <AppShellRegionOutlet region={ShellRegion.MENUBAR} />
40
+ * <AppShellContentOutlet className="flex-1 relative min-w-0">{children}</AppShellContentOutlet>
41
+ * <AppShellOverlaysOutlet />
42
+ * </div>
43
+ * </AppShellProviders>
44
+ * );
45
+ * ```
46
+ *
47
+ * Four rules keep a custom layout correct:
48
+ *
49
+ * - **Render `AppShellProviders` exactly once, around the whole shell.** It owns the single open state and the
50
+ * single hotkey registration of the command menu, notification center and quick switcher; two copies would
51
+ * make one shortcut open two dialogs.
52
+ * - **Place every region the application configures.** An outlet renders nothing when its region is not
53
+ * configured, so placing an outlet is always safe; leaving one out silently drops a region.
54
+ * - **Render `AppShellContentOutlet` exactly once.** It is the `<main>` landmark, and overlays portal into it —
55
+ * unless the layout also renders `AppShellOverlayPortalLayer`, which then takes the overlays instead. A layout that
56
+ * transforms its regions (a 3D placement) must render that layer OUTSIDE the transformed subtree: a transformed
57
+ * ancestor is the containing block of every `position: fixed` descendant, so a dialog in `<main>` would be confined
58
+ * to the pane and a menu would be placed in the wrong coordinates.
59
+ * - **Give the root `position: relative`, not `isolation: isolate`,** when the theme may declare a background
60
+ * layer. That layer is painted in its own stacking context above ordinary in-flow content, so shell text with
61
+ * no positioned ancestor is painted UNDER it; positioning the root lifts the whole shell above it. `isolate`
62
+ * would also lift it, but would make the shell one stacking context, so an overlay outside the shell with a
63
+ * lower z-index (a consent prompt) would paint over the shell's own dialogs.
64
+ */
65
+ /** The layout decisions `useAppShellLayout()` computed, shared with every outlet below the providers. */
66
+ const AppShellLayoutContext = createContext(null);
67
+ /** Lets the content outlet hand its `<main>` element to the providers, which expose it as the portal container. */
68
+ const AppShellPortalTargetContext = createContext(null);
69
+ /** Lets `AppShellOverlayPortalLayer` hand its element to the providers, which then prefer it over `<main>`. */
70
+ const AppShellOverlayLayerTargetContext = createContext(null);
71
+ function useAppShellLayoutContext(consumer) {
72
+ const layout = useContext(AppShellLayoutContext);
73
+ if (!layout) {
74
+ throw new Error(`${consumer} must be rendered inside <AppShellProviders>, which supplies the layout it places regions from.`);
75
+ }
76
+ return layout;
77
+ }
78
+ /**
79
+ * Latches the FIRST time the shell becomes ready.
80
+ *
81
+ * `isLayoutReady` derives from configuration presence and can drop transiently after bootstrap (an
82
+ * organization switch reloading config, for example). Replacing the mounted shell with a loading state on such
83
+ * a drop would unmount every provider and zone below it and destroy navigation state — the failure mode
84
+ * `AppLoadingGate` documents. So a layout shows its loading state only while this returns `false`.
85
+ */
86
+ export function useAppShellFirstReady(isLayoutReady) {
87
+ const [hasLayoutBeenReady, setHasLayoutBeenReady] = useState(false);
88
+ useEffect(() => {
89
+ if (isLayoutReady)
90
+ setHasLayoutBeenReady(true);
91
+ }, [isLayoutReady]);
92
+ return hasLayoutBeenReady;
93
+ }
94
+ /**
95
+ * The shell's loading state: a centred spinner on the page background, announced politely. What every layout
96
+ * shows while `useAppShellFirstReady` says the shell has never been ready — one component rather than a copy per
97
+ * layout, so the loading state is the same whatever the disposal.
98
+ */
99
+ export function AppShellLoadingState() {
100
+ return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.SHELL, policyOverride: NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE, children: _jsx("div", { className: "h-screen w-screen bg-background flex items-center justify-center", role: "status", "aria-live": "polite", children: _jsx("div", { className: "text-center", children: _jsx(LoadingSpinner, { size: 32, className: "text-primary mx-auto mb-field", "aria-hidden": "true" }) }) }) }));
101
+ }
102
+ /**
103
+ * The providers every shell region reads, and nothing else — they render no DOM of their own:
104
+ *
105
+ * - `PortalContainerContext`, holding the `<main>` element `AppShellContentOutlet` registers, so overlays opened
106
+ * from any region portal into the content area — or, when the layout renders `AppShellOverlayPortalLayer`, that
107
+ * layer instead;
108
+ * - `HostedComponentInteractionsProvider`, the single owner of the open state and the open hotkey of the
109
+ * interactive hosted components (command menu, notification center, quick switcher), which may be hosted in the
110
+ * menubar and the sidebar at once.
111
+ */
112
+ export function AppShellProviders({ layout, children }) {
113
+ const [portalContainer, setPortalContainer] = useState(null);
114
+ const [overlayLayer, setOverlayLayer] = useState(null);
115
+ const registerPortalTarget = useCallback((node) => {
116
+ setPortalContainer(node);
117
+ }, []);
118
+ const registerOverlayLayer = useCallback((node) => {
119
+ setOverlayLayer(node);
120
+ }, []);
121
+ return (_jsx(AppShellLayoutContext.Provider, { value: layout, children: _jsx(AppShellPortalTargetContext.Provider, { value: registerPortalTarget, children: _jsx(AppShellOverlayLayerTargetContext.Provider, { value: registerOverlayLayer, children: _jsx(PortalContainerContext.Provider, { value: overlayLayer ?? portalContainer, children: _jsx(HostedComponentInteractionsProvider, { children: children }) }) }) }) }));
122
+ }
123
+ /**
124
+ * A dedicated layer every overlay (dialog, sheet, menu, popover, tooltip) portals into, for a layout whose regions
125
+ * are TRANSFORMED — a 3D placement. Render it once, inside the providers but OUTSIDE the transformed subtree; the
126
+ * providers then prefer it to `<main>`. A layout that transforms nothing does not need it.
127
+ *
128
+ * It is a zero-size, untransformed, fixed box at the viewport's origin: an overlay positioned `fixed` resolves
129
+ * against the viewport, one positioned `absolute` against the viewport's origin, so floating content lands where its
130
+ * trigger is on screen. It carries the stacking tier overlays need above a layout's own layers.
131
+ */
132
+ export function AppShellOverlayPortalLayer() {
133
+ const register = useContext(AppShellOverlayLayerTargetContext);
134
+ if (!register) {
135
+ throw new Error('AppShellOverlayPortalLayer must be rendered inside <AppShellProviders>, which exposes it as the portal container.');
136
+ }
137
+ return _jsx("div", { ref: register, "data-shell-overlay-layer": "", className: "fixed left-0 top-0 z-50 h-0 w-0" });
138
+ }
139
+ /**
140
+ * Renders one shell region's component — the registry-resolved wrapper, with its placement prop — when the
141
+ * application configures that region (and, if `placement` is given, at that placement). Renders nothing
142
+ * otherwise, so placing an outlet for every region is always safe.
143
+ */
144
+ export function AppShellRegionOutlet(props) {
145
+ const layout = useAppShellLayoutContext('AppShellRegionOutlet');
146
+ const { region, placement } = props;
147
+ const at = (configured) => placement === undefined || placement === configured ? configured : null;
148
+ switch (region) {
149
+ case ShellRegion.ACTIVITY_BAR:
150
+ return layout.hasActivityBar ? _jsx(ApplicationLevel_ActivityBar, {}) : null;
151
+ case ShellRegion.MENUBAR:
152
+ return layout.hasMenubar ? _jsx(ApplicationLevel_MenuBar, {}) : null;
153
+ case ShellRegion.TOOLBAR:
154
+ return layout.hasToolbar ? _jsx(ApplicationLevel_Toolbar, {}) : null;
155
+ case ShellRegion.SIDEBAR: {
156
+ const sidebarPlacement = at(layout.sidebarPlacement);
157
+ return layout.hasSidebar && sidebarPlacement ? _jsx(ApplicationLevel_Sidebar, { placement: sidebarPlacement }) : null;
158
+ }
159
+ case ShellRegion.UTILITY_PANEL: {
160
+ const utilityPanelPlacement = at(layout.utilityPanelPlacement);
161
+ return layout.hasUtilityPanel && utilityPanelPlacement ? _jsx(ApplicationLevel_UtilityPanel, { position: utilityPanelPlacement }) : null;
162
+ }
163
+ case ShellRegion.STATUS_BAR: {
164
+ const statusBarPlacement = at(layout.statusBarPlacement);
165
+ return layout.hasStatusBar && statusBarPlacement ? _jsx(ApplicationLevel_StatusBar, { placement: statusBarPlacement }) : null;
166
+ }
167
+ default: {
168
+ const unhandled = region;
169
+ throw new Error(`AppShellRegionOutlet has no rendering for region "${String(unhandled)}".`);
170
+ }
171
+ }
172
+ }
173
+ /**
174
+ * The content area: the `<main>` landmark carrying `ShellRegion.CONTENT`, the navigation zones, and the floating
175
+ * quick-action button when configured. Its element is registered with `AppShellProviders` as the portal
176
+ * container, so it must be rendered exactly once, inside the providers.
177
+ */
178
+ export function AppShellContentOutlet({ className, children }) {
179
+ const layout = useAppShellLayoutContext('AppShellContentOutlet');
180
+ const registerPortalTarget = useContext(AppShellPortalTargetContext);
181
+ return (_jsxs("main", { ref: registerPortalTarget ?? undefined, "data-component-area": ShellRegion.CONTENT, className: className, children: [_jsx(NavigationContentAreas, { routerChildren: children }), layout.hasQuickActionButton && _jsx(ApplicationLevel_QuickActionButton, { placement: "floating" })] }));
182
+ }
183
+ /** The shell's overlay layer: navigation dialogs and sheets, then guidance (tours, tooltips, highlights). */
184
+ export function AppShellOverlaysOutlet() {
185
+ return (_jsxs(_Fragment, { children: [_jsx(NavigationOverlays, {}), _jsx(GuidanceRenderer, {})] }));
186
+ }
187
+ //# sourceMappingURL=AppShellBuildingBlocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppShellBuildingBlocks.js","sourceRoot":"","sources":["../../../../../src/core/app-shell/AppShellBuildingBlocks.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useState } from 'react';\n\nimport { HorizontalPlacement, ShellRegion, SurfaceVariant, VerticalPlacement } from '@wildo-ai/presets-components-models';\nimport { LoadingSpinner } from '~wildo-frontend-lib/components/feedback/loading-spinner';\nimport { Surface } from '~wildo-frontend-lib/components/sections/surface';\nimport { NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE } from '~wildo-frontend-lib/core/ui/surface-a11y.utils';\nimport { ApplicationLevel_ActivityBar } from '~wildo-frontend-lib/components/navigation/app-level/ApplicationLevel_ActivityBar';\nimport { ApplicationLevel_MenuBar } from '~wildo-frontend-lib/components/navigation/app-level/ApplicationLevel_MenuBar';\nimport { ApplicationLevel_QuickActionButton } from '~wildo-frontend-lib/components/navigation/app-level/ApplicationLevel_QuickActionButton';\nimport { ApplicationLevel_Sidebar } from '~wildo-frontend-lib/components/navigation/app-level/ApplicationLevel_Sidebar';\nimport { ApplicationLevel_StatusBar } from '~wildo-frontend-lib/components/navigation/app-level/ApplicationLevel_StatusBar';\nimport { ApplicationLevel_Toolbar } from '~wildo-frontend-lib/components/navigation/app-level/ApplicationLevel_Toolbar';\nimport { ApplicationLevel_UtilityPanel } from '~wildo-frontend-lib/components/navigation/app-level/ApplicationLevel_UtilityPanel';\nimport { HostedComponentInteractionsProvider } from '~wildo-frontend-lib/components/navigation/app-level/HostedComponentInteractionsProvider';\nimport { GuidanceRenderer } from '~wildo-frontend-lib/core/guidance/GuidanceRenderer';\nimport { NavigationContentAreas, NavigationOverlays } from '~wildo-frontend-lib/core/navigation/NavigationContentAreas';\n\nimport type { StatusBarPlacement } from '~wildo-frontend-lib/core/config/app-level-components.frontend.schemas';\n\nimport type { AppShellLayoutInfo } from './app-shell.schemas';\nimport { PortalContainerContext } from './PortalContainerContext';\n\n/** @wildo_source:part:start saas.frontend.app-shell.building-blocks facet:layer:frontend facet:family:app-shell facet:audience:app-developer */\n/**\n * # App shell building blocks\n *\n * The signed-in shell is a LAYOUT — where the regions sit — over parts that do not depend on the layout: the\n * region components themselves (each resolved from the component registry by its wrapper), the content area,\n * the overlays, and two providers every region reads. These building blocks are those parts, so a layout\n * preset only decides the ARRANGEMENT. `AppLayoutPreset_MainContainer_Default` is composed from them, and any\n * other layout container an application registers should be too — a different arrangement of the same regions,\n * or, later, an alternative rendering that draws decoration around them.\n *\n * A layout preset uses them like this:\n *\n * ```tsx\n * const layout = useAppShellLayout();\n * const hasBeenReady = useAppShellFirstReady(layout.isLayoutReady);\n * if (!layout.isLayoutReady && !hasBeenReady) return <AppShellLoadingState />;\n * return (\n * <AppShellProviders layout={layout}>\n * <div className=\"my-arrangement\">\n * <AppShellRegionOutlet region={ShellRegion.SIDEBAR} placement={HorizontalPlacement.START} />\n * <AppShellRegionOutlet region={ShellRegion.MENUBAR} />\n * <AppShellContentOutlet className=\"flex-1 relative min-w-0\">{children}</AppShellContentOutlet>\n * <AppShellOverlaysOutlet />\n * </div>\n * </AppShellProviders>\n * );\n * ```\n *\n * Four rules keep a custom layout correct:\n *\n * - **Render `AppShellProviders` exactly once, around the whole shell.** It owns the single open state and the\n * single hotkey registration of the command menu, notification center and quick switcher; two copies would\n * make one shortcut open two dialogs.\n * - **Place every region the application configures.** An outlet renders nothing when its region is not\n * configured, so placing an outlet is always safe; leaving one out silently drops a region.\n * - **Render `AppShellContentOutlet` exactly once.** It is the `<main>` landmark, and overlays portal into it —\n * unless the layout also renders `AppShellOverlayPortalLayer`, which then takes the overlays instead. A layout that\n * transforms its regions (a 3D placement) must render that layer OUTSIDE the transformed subtree: a transformed\n * ancestor is the containing block of every `position: fixed` descendant, so a dialog in `<main>` would be confined\n * to the pane and a menu would be placed in the wrong coordinates.\n * - **Give the root `position: relative`, not `isolation: isolate`,** when the theme may declare a background\n * layer. That layer is painted in its own stacking context above ordinary in-flow content, so shell text with\n * no positioned ancestor is painted UNDER it; positioning the root lifts the whole shell above it. `isolate`\n * would also lift it, but would make the shell one stacking context, so an overlay outside the shell with a\n * lower z-index (a consent prompt) would paint over the shell's own dialogs.\n */\n\n/** The layout decisions `useAppShellLayout()` computed, shared with every outlet below the providers. */\nconst AppShellLayoutContext = createContext<AppShellLayoutInfo | null>(null);\n\n/** Lets the content outlet hand its `<main>` element to the providers, which expose it as the portal container. */\nconst AppShellPortalTargetContext = createContext<((node: HTMLElement | null) => void) | null>(null);\n\n/** Lets `AppShellOverlayPortalLayer` hand its element to the providers, which then prefer it over `<main>`. */\nconst AppShellOverlayLayerTargetContext = createContext<((node: HTMLElement | null) => void) | null>(null);\n\nfunction useAppShellLayoutContext(consumer: string): AppShellLayoutInfo {\n const layout = useContext(AppShellLayoutContext);\n if (!layout) {\n throw new Error(`${consumer} must be rendered inside <AppShellProviders>, which supplies the layout it places regions from.`);\n }\n return layout;\n}\n\n/**\n * Latches the FIRST time the shell becomes ready.\n *\n * `isLayoutReady` derives from configuration presence and can drop transiently after bootstrap (an\n * organization switch reloading config, for example). Replacing the mounted shell with a loading state on such\n * a drop would unmount every provider and zone below it and destroy navigation state — the failure mode\n * `AppLoadingGate` documents. So a layout shows its loading state only while this returns `false`.\n */\nexport function useAppShellFirstReady(isLayoutReady: boolean): boolean {\n const [hasLayoutBeenReady, setHasLayoutBeenReady] = useState(false);\n useEffect(() => {\n if (isLayoutReady) setHasLayoutBeenReady(true);\n }, [isLayoutReady]);\n return hasLayoutBeenReady;\n}\n\n/**\n * The shell's loading state: a centred spinner on the page background, announced politely. What every layout\n * shows while `useAppShellFirstReady` says the shell has never been ready — one component rather than a copy per\n * layout, so the loading state is the same whatever the disposal.\n */\nexport function AppShellLoadingState(): React.JSX.Element {\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.SHELL} policyOverride={NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE}>\n <div className=\"h-screen w-screen bg-background flex items-center justify-center\" role=\"status\" aria-live=\"polite\">\n <div className=\"text-center\">\n <LoadingSpinner size={32} className=\"text-primary mx-auto mb-field\" aria-hidden=\"true\" />\n </div>\n </div>\n </Surface>\n );\n}\n\nexport interface AppShellProvidersProps {\n /** The result of `useAppShellLayout()`, computed once by the layout and shared with every outlet. */\n layout: AppShellLayoutInfo;\n children: React.ReactNode;\n}\n\n/**\n * The providers every shell region reads, and nothing else — they render no DOM of their own:\n *\n * - `PortalContainerContext`, holding the `<main>` element `AppShellContentOutlet` registers, so overlays opened\n * from any region portal into the content area — or, when the layout renders `AppShellOverlayPortalLayer`, that\n * layer instead;\n * - `HostedComponentInteractionsProvider`, the single owner of the open state and the open hotkey of the\n * interactive hosted components (command menu, notification center, quick switcher), which may be hosted in the\n * menubar and the sidebar at once.\n */\nexport function AppShellProviders({ layout, children }: AppShellProvidersProps): React.JSX.Element {\n const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n const [overlayLayer, setOverlayLayer] = useState<HTMLElement | null>(null);\n const registerPortalTarget = useCallback((node: HTMLElement | null) => {\n setPortalContainer(node);\n }, []);\n const registerOverlayLayer = useCallback((node: HTMLElement | null) => {\n setOverlayLayer(node);\n }, []);\n return (\n <AppShellLayoutContext.Provider value={layout}>\n <AppShellPortalTargetContext.Provider value={registerPortalTarget}>\n <AppShellOverlayLayerTargetContext.Provider value={registerOverlayLayer}>\n {/* The dedicated overlay layer wins when a layout renders one; otherwise overlays stay in `<main>`. */}\n <PortalContainerContext.Provider value={overlayLayer ?? portalContainer}>\n <HostedComponentInteractionsProvider>{children}</HostedComponentInteractionsProvider>\n </PortalContainerContext.Provider>\n </AppShellOverlayLayerTargetContext.Provider>\n </AppShellPortalTargetContext.Provider>\n </AppShellLayoutContext.Provider>\n );\n}\n\n/**\n * A dedicated layer every overlay (dialog, sheet, menu, popover, tooltip) portals into, for a layout whose regions\n * are TRANSFORMED — a 3D placement. Render it once, inside the providers but OUTSIDE the transformed subtree; the\n * providers then prefer it to `<main>`. A layout that transforms nothing does not need it.\n *\n * It is a zero-size, untransformed, fixed box at the viewport's origin: an overlay positioned `fixed` resolves\n * against the viewport, one positioned `absolute` against the viewport's origin, so floating content lands where its\n * trigger is on screen. It carries the stacking tier overlays need above a layout's own layers.\n */\nexport function AppShellOverlayPortalLayer(): React.JSX.Element {\n const register = useContext(AppShellOverlayLayerTargetContext);\n if (!register) {\n throw new Error('AppShellOverlayPortalLayer must be rendered inside <AppShellProviders>, which exposes it as the portal container.');\n }\n return <div ref={register} data-shell-overlay-layer=\"\" className=\"fixed left-0 top-0 z-50 h-0 w-0\" />;\n}\n\n/**\n * Which region to render, and — for a region that sits at an edge — at which edge. The content area is not\n * among them: it has its own outlet, because it owns `<main>` and the page.\n *\n * `placement` renders the region only when the application configured THAT placement. A layout that places the\n * same region at two positions — as the default layout does for the sidebar's start and end edges — renders one\n * outlet per edge. Omitted, the region renders at whatever placement is configured. The type admits only the\n * placement axis the region has, so a sidebar cannot be asked for a vertical edge and render nothing.\n */\nexport type AppShellRegionOutletProps =\n | { region: ShellRegion.SIDEBAR | ShellRegion.UTILITY_PANEL; placement?: HorizontalPlacement.START | HorizontalPlacement.END }\n | { region: ShellRegion.STATUS_BAR; placement?: StatusBarPlacement }\n | { region: ShellRegion.ACTIVITY_BAR | ShellRegion.MENUBAR | ShellRegion.TOOLBAR; placement?: never };\n\n/**\n * Renders one shell region's component — the registry-resolved wrapper, with its placement prop — when the\n * application configures that region (and, if `placement` is given, at that placement). Renders nothing\n * otherwise, so placing an outlet for every region is always safe.\n */\nexport function AppShellRegionOutlet(props: AppShellRegionOutletProps): React.JSX.Element | null {\n const layout = useAppShellLayoutContext('AppShellRegionOutlet');\n const { region, placement } = props;\n const at = <T extends HorizontalPlacement | VerticalPlacement>(configured: T): T | null =>\n placement === undefined || placement === configured ? configured : null;\n\n switch (region) {\n case ShellRegion.ACTIVITY_BAR:\n return layout.hasActivityBar ? <ApplicationLevel_ActivityBar /> : null;\n case ShellRegion.MENUBAR:\n return layout.hasMenubar ? <ApplicationLevel_MenuBar /> : null;\n case ShellRegion.TOOLBAR:\n return layout.hasToolbar ? <ApplicationLevel_Toolbar /> : null;\n case ShellRegion.SIDEBAR: {\n const sidebarPlacement = at(layout.sidebarPlacement);\n return layout.hasSidebar && sidebarPlacement ? <ApplicationLevel_Sidebar placement={sidebarPlacement} /> : null;\n }\n case ShellRegion.UTILITY_PANEL: {\n const utilityPanelPlacement = at(layout.utilityPanelPlacement);\n return layout.hasUtilityPanel && utilityPanelPlacement ? <ApplicationLevel_UtilityPanel position={utilityPanelPlacement} /> : null;\n }\n case ShellRegion.STATUS_BAR: {\n const statusBarPlacement = at(layout.statusBarPlacement);\n return layout.hasStatusBar && statusBarPlacement ? <ApplicationLevel_StatusBar placement={statusBarPlacement} /> : null;\n }\n default: {\n const unhandled: never = region;\n throw new Error(`AppShellRegionOutlet has no rendering for region \"${String(unhandled)}\".`);\n }\n }\n}\n\nexport interface AppShellContentOutletProps {\n /** Classes for the `<main>` element — the layout decides how the content area sizes within its arrangement. */\n className?: string;\n /** The route outlet the layout container receives; rendered by the navigation zones while their stack is empty. */\n children?: React.ReactNode;\n}\n\n/**\n * The content area: the `<main>` landmark carrying `ShellRegion.CONTENT`, the navigation zones, and the floating\n * quick-action button when configured. Its element is registered with `AppShellProviders` as the portal\n * container, so it must be rendered exactly once, inside the providers.\n */\nexport function AppShellContentOutlet({ className, children }: AppShellContentOutletProps): React.JSX.Element {\n const layout = useAppShellLayoutContext('AppShellContentOutlet');\n const registerPortalTarget = useContext(AppShellPortalTargetContext);\n return (\n <main ref={registerPortalTarget ?? undefined} data-component-area={ShellRegion.CONTENT} className={className}>\n <NavigationContentAreas routerChildren={children} />\n\n {/* Floating Quick Action Button */}\n {layout.hasQuickActionButton && <ApplicationLevel_QuickActionButton placement=\"floating\" />}\n </main>\n );\n}\n\n/** The shell's overlay layer: navigation dialogs and sheets, then guidance (tours, tooltips, highlights). */\nexport function AppShellOverlaysOutlet(): React.JSX.Element {\n return (\n <>\n <NavigationOverlays />\n <GuidanceRenderer />\n </>\n );\n}\n/** @wildo_source:part:end saas.frontend.app-shell.building-blocks */\n"]}
@@ -10,8 +10,11 @@ export interface PortalTargetResolution {
10
10
  * portal their content into the provided container instead of `document.body`.
11
11
  *
12
12
  * Primary use cases:
13
- * - Containing overlays within an alternate rendering context (e.g. a Three.js
14
- * `<Html>` panel) so they don't escape the spatial container.
13
+ * - Keeping overlays inside the shell's content area: `AppShellProviders` sets it to the `<main>` element
14
+ * `AppShellContentOutlet` registers, for every layout composed from the shell building blocks — or to the
15
+ * `AppShellOverlayPortalLayer` a layout that transforms its regions renders outside them. (An earlier
16
+ * version of this note named a Three.js `<Html>` panel; that design was rejected because such a panel is a
17
+ * separate React root that loses every context — see #1820.)
15
18
  * - Scoping overlay z-index stacking to a specific subtree.
16
19
  *
17
20
  * When `null` (the default), overlays portal to `document.body` — matching the
@@ -1 +1 @@
1
- {"version":3,"file":"PortalContainerContext.d.ts","sourceRoot":"","sources":["../../../../../src/core/app-shell/PortalContainerContext.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EAClB,MAAM,qCAAqC,CAAC;AAG7C,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,WAAW,GAAG,SAAS,CAAC;IACnC,YAAY,EAAE,OAAO,CAAC;CACvB;AAYD;;;;;;;;;;;;;GAaG;AACH,QAAA,MAAM,sBAAsB,sCAA0C,CAAC;AAEvE;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,GAAG,SAAS,CAG5D;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,cAAc,EACvB,cAAc,CAAC,EAAE,wBAAwB,GACxC,sBAAsB,CA+CxB;AAED,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAelG;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,cAAc,EACvB,cAAc,CAAC,EAAE,wBAAwB,GACxC,MAAM,CAKR;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"PortalContainerContext.d.ts","sourceRoot":"","sources":["../../../../../src/core/app-shell/PortalContainerContext.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EAClB,MAAM,qCAAqC,CAAC;AAG7C,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,WAAW,GAAG,SAAS,CAAC;IACnC,YAAY,EAAE,OAAO,CAAC;CACvB;AAYD;;;;;;;;;;;;;;;;GAgBG;AACH,QAAA,MAAM,sBAAsB,sCAA0C,CAAC;AAEvE;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,GAAG,SAAS,CAG5D;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,cAAc,EACvB,cAAc,CAAC,EAAE,wBAAwB,GACxC,sBAAsB,CA+CxB;AAED,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAelG;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,cAAc,EACvB,cAAc,CAAC,EAAE,wBAAwB,GACxC,MAAM,CAKR;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -14,8 +14,11 @@ function resolveCustomPortalTarget(customPortalTargetId) {
14
14
  * portal their content into the provided container instead of `document.body`.
15
15
  *
16
16
  * Primary use cases:
17
- * - Containing overlays within an alternate rendering context (e.g. a Three.js
18
- * `<Html>` panel) so they don't escape the spatial container.
17
+ * - Keeping overlays inside the shell's content area: `AppShellProviders` sets it to the `<main>` element
18
+ * `AppShellContentOutlet` registers, for every layout composed from the shell building blocks — or to the
19
+ * `AppShellOverlayPortalLayer` a layout that transforms its regions renders outside them. (An earlier
20
+ * version of this note named a Three.js `<Html>` panel; that design was rejected because such a panel is a
21
+ * separate React root that loses every context — see #1820.)
19
22
  * - Scoping overlay z-index stacking to a specific subtree.
20
23
  *
21
24
  * When `null` (the default), overlays portal to `document.body` — matching the
@@ -1 +1 @@
1
- {"version":3,"file":"PortalContainerContext.js","sourceRoot":"","sources":["../../../../../src/core/app-shell/PortalContainerContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import { createContext, useContext, useEffect, useLayoutEffect, useState } from 'react';\nimport {\n SurfaceVariant,\n type DeepPartialSurfacePolicy,\n type StackingTier,\n} from '@wildo-ai/presets-components-models';\nimport { useUI } from '~wildo-frontend-lib/core/ui/useUI';\n\nexport interface PortalTargetResolution {\n container: HTMLElement | undefined;\n shouldPortal: boolean;\n}\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nfunction resolveCustomPortalTarget(customPortalTargetId: string | null): HTMLElement | null {\n if (!customPortalTargetId || typeof document === 'undefined') {\n return null;\n }\n\n return document.getElementById(customPortalTargetId);\n}\n\n/**\n * Provides a DOM element that Radix UI Portal components should render into.\n *\n * When set, all overlay components (DropdownMenu, Popover, Tooltip, Dialog, etc.)\n * portal their content into the provided container instead of `document.body`.\n *\n * Primary use cases:\n * - Containing overlays within an alternate rendering context (e.g. a Three.js\n * `<Html>` panel) so they don't escape the spatial container.\n * - Scoping overlay z-index stacking to a specific subtree.\n *\n * When `null` (the default), overlays portal to `document.body` — matching the\n * standard Radix UI behavior.\n */\nconst PortalContainerContext = createContext<HTMLElement | null>(null);\n\n/**\n * Returns the portal container element from the nearest `PortalContainerContext.Provider`,\n * or `undefined` if none is set (which tells Radix to use `document.body`).\n *\n * Preset components call this inside their Portal wrappers:\n * ```tsx\n * const container = usePortalContainer();\n * <DropdownMenuPrimitive.Portal container={container}>\n * ```\n */\nexport function usePortalContainer(): HTMLElement | undefined {\n const container = useContext(PortalContainerContext);\n return container ?? undefined;\n}\n\nexport function useSurfacePolicyPortalTarget(\n variant: SurfaceVariant,\n policyOverride?: DeepPartialSurfacePolicy,\n): PortalTargetResolution {\n const appPortalContainer = usePortalContainer();\n const { getSurfacePolicy } = useUI();\n const portalTarget = getSurfacePolicy?.(variant, policyOverride)?.stacking?.portalTarget;\n const customPortalTargetId =\n typeof portalTarget === 'string' && portalTarget !== 'inline' && portalTarget !== 'app-portal' && portalTarget !== 'reset'\n ? portalTarget\n : null;\n const [customPortalContainer, setCustomPortalContainer] = useState<HTMLElement | null>(() =>\n resolveCustomPortalTarget(customPortalTargetId),\n );\n\n useIsomorphicLayoutEffect(() => {\n if (!customPortalTargetId || typeof document === 'undefined') {\n setCustomPortalContainer(null);\n return;\n }\n\n const existingTarget = resolveCustomPortalTarget(customPortalTargetId);\n setCustomPortalContainer(existingTarget);\n\n if (existingTarget || typeof MutationObserver === 'undefined') {\n return;\n }\n\n const observer = new MutationObserver(() => {\n const nextTarget = resolveCustomPortalTarget(customPortalTargetId);\n if (!nextTarget) return;\n\n setCustomPortalContainer(nextTarget);\n observer.disconnect();\n });\n\n observer.observe(document.body, { childList: true, subtree: true });\n\n return () => observer.disconnect();\n }, [customPortalTargetId]);\n\n if (portalTarget === 'inline') {\n return { container: undefined, shouldPortal: false };\n }\n\n if (customPortalContainer) {\n return { container: customPortalContainer, shouldPortal: true };\n }\n\n return { container: appPortalContainer, shouldPortal: true };\n}\n\nexport function resolveSurfacePolicyStackingClass(tier: StackingTier | 'reset' | undefined): string {\n switch (tier) {\n case 'content':\n return 'z-(--z-content)';\n case 'transient':\n return 'z-(--z-transient)';\n case 'guidance':\n return 'z-(--z-guidance)';\n case 'critical':\n return 'z-(--z-critical)';\n case 'overlay':\n case 'reset':\n default:\n return 'z-(--z-overlay)';\n }\n}\n\nexport function useSurfacePolicyStackingClass(\n variant: SurfaceVariant,\n policyOverride?: DeepPartialSurfacePolicy,\n): string {\n const { getSurfacePolicy } = useUI();\n const stackingTier = getSurfacePolicy?.(variant, policyOverride)?.stacking?.stackingTier;\n\n return resolveSurfacePolicyStackingClass(stackingTier);\n}\n\nexport { PortalContainerContext };\n"]}
1
+ {"version":3,"file":"PortalContainerContext.js","sourceRoot":"","sources":["../../../../../src/core/app-shell/PortalContainerContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAMxF,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAO1D,MAAM,yBAAyB,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;AAE9F,SAAS,yBAAyB,CAAC,oBAAmC;IACpE,IAAI,CAAC,oBAAoB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,QAAQ,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,sBAAsB,GAAG,aAAa,CAAqB,IAAI,CAAC,CAAC;AAEvE;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,SAAS,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;IACrD,OAAO,SAAS,IAAI,SAAS,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,OAAuB,EACvB,cAAyC;IAEzC,MAAM,kBAAkB,GAAG,kBAAkB,EAAE,CAAC;IAChD,MAAM,EAAE,gBAAgB,EAAE,GAAG,KAAK,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,gBAAgB,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC;IACzF,MAAM,oBAAoB,GACxB,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,YAAY,IAAI,YAAY,KAAK,OAAO;QACxH,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAAqB,GAAG,EAAE,CAC1F,yBAAyB,CAAC,oBAAoB,CAAC,CAChD,CAAC;IAEF,yBAAyB,CAAC,GAAG,EAAE;QAC7B,IAAI,CAAC,oBAAoB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YAC7D,wBAAwB,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,yBAAyB,CAAC,oBAAoB,CAAC,CAAC;QACvE,wBAAwB,CAAC,cAAc,CAAC,CAAC;QAEzC,IAAI,cAAc,IAAI,OAAO,gBAAgB,KAAK,WAAW,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;YACzC,MAAM,UAAU,GAAG,yBAAyB,CAAC,oBAAoB,CAAC,CAAC;YACnE,IAAI,CAAC,UAAU;gBAAE,OAAO;YAExB,wBAAwB,CAAC,UAAU,CAAC,CAAC;YACrC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpE,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAE3B,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,qBAAqB,EAAE,CAAC;QAC1B,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAClE,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,IAAwC;IACxF,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,iBAAiB,CAAC;QAC3B,KAAK,WAAW;YACd,OAAO,mBAAmB,CAAC;QAC7B,KAAK,UAAU;YACb,OAAO,kBAAkB,CAAC;QAC5B,KAAK,UAAU;YACb,OAAO,kBAAkB,CAAC;QAC5B,KAAK,SAAS,CAAC;QACf,KAAK,OAAO,CAAC;QACb;YACE,OAAO,iBAAiB,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,OAAuB,EACvB,cAAyC;IAEzC,MAAM,EAAE,gBAAgB,EAAE,GAAG,KAAK,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,gBAAgB,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC;IAEzF,OAAO,iCAAiC,CAAC,YAAY,CAAC,CAAC;AACzD,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC","sourcesContent":["import { createContext, useContext, useEffect, useLayoutEffect, useState } from 'react';\nimport {\n SurfaceVariant,\n type DeepPartialSurfacePolicy,\n type StackingTier,\n} from '@wildo-ai/presets-components-models';\nimport { useUI } from '~wildo-frontend-lib/core/ui/useUI';\n\nexport interface PortalTargetResolution {\n container: HTMLElement | undefined;\n shouldPortal: boolean;\n}\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nfunction resolveCustomPortalTarget(customPortalTargetId: string | null): HTMLElement | null {\n if (!customPortalTargetId || typeof document === 'undefined') {\n return null;\n }\n\n return document.getElementById(customPortalTargetId);\n}\n\n/**\n * Provides a DOM element that Radix UI Portal components should render into.\n *\n * When set, all overlay components (DropdownMenu, Popover, Tooltip, Dialog, etc.)\n * portal their content into the provided container instead of `document.body`.\n *\n * Primary use cases:\n * - Keeping overlays inside the shell's content area: `AppShellProviders` sets it to the `<main>` element\n * `AppShellContentOutlet` registers, for every layout composed from the shell building blocks — or to the\n * `AppShellOverlayPortalLayer` a layout that transforms its regions renders outside them. (An earlier\n * version of this note named a Three.js `<Html>` panel; that design was rejected because such a panel is a\n * separate React root that loses every context — see #1820.)\n * - Scoping overlay z-index stacking to a specific subtree.\n *\n * When `null` (the default), overlays portal to `document.body` — matching the\n * standard Radix UI behavior.\n */\nconst PortalContainerContext = createContext<HTMLElement | null>(null);\n\n/**\n * Returns the portal container element from the nearest `PortalContainerContext.Provider`,\n * or `undefined` if none is set (which tells Radix to use `document.body`).\n *\n * Preset components call this inside their Portal wrappers:\n * ```tsx\n * const container = usePortalContainer();\n * <DropdownMenuPrimitive.Portal container={container}>\n * ```\n */\nexport function usePortalContainer(): HTMLElement | undefined {\n const container = useContext(PortalContainerContext);\n return container ?? undefined;\n}\n\nexport function useSurfacePolicyPortalTarget(\n variant: SurfaceVariant,\n policyOverride?: DeepPartialSurfacePolicy,\n): PortalTargetResolution {\n const appPortalContainer = usePortalContainer();\n const { getSurfacePolicy } = useUI();\n const portalTarget = getSurfacePolicy?.(variant, policyOverride)?.stacking?.portalTarget;\n const customPortalTargetId =\n typeof portalTarget === 'string' && portalTarget !== 'inline' && portalTarget !== 'app-portal' && portalTarget !== 'reset'\n ? portalTarget\n : null;\n const [customPortalContainer, setCustomPortalContainer] = useState<HTMLElement | null>(() =>\n resolveCustomPortalTarget(customPortalTargetId),\n );\n\n useIsomorphicLayoutEffect(() => {\n if (!customPortalTargetId || typeof document === 'undefined') {\n setCustomPortalContainer(null);\n return;\n }\n\n const existingTarget = resolveCustomPortalTarget(customPortalTargetId);\n setCustomPortalContainer(existingTarget);\n\n if (existingTarget || typeof MutationObserver === 'undefined') {\n return;\n }\n\n const observer = new MutationObserver(() => {\n const nextTarget = resolveCustomPortalTarget(customPortalTargetId);\n if (!nextTarget) return;\n\n setCustomPortalContainer(nextTarget);\n observer.disconnect();\n });\n\n observer.observe(document.body, { childList: true, subtree: true });\n\n return () => observer.disconnect();\n }, [customPortalTargetId]);\n\n if (portalTarget === 'inline') {\n return { container: undefined, shouldPortal: false };\n }\n\n if (customPortalContainer) {\n return { container: customPortalContainer, shouldPortal: true };\n }\n\n return { container: appPortalContainer, shouldPortal: true };\n}\n\nexport function resolveSurfacePolicyStackingClass(tier: StackingTier | 'reset' | undefined): string {\n switch (tier) {\n case 'content':\n return 'z-(--z-content)';\n case 'transient':\n return 'z-(--z-transient)';\n case 'guidance':\n return 'z-(--z-guidance)';\n case 'critical':\n return 'z-(--z-critical)';\n case 'overlay':\n case 'reset':\n default:\n return 'z-(--z-overlay)';\n }\n}\n\nexport function useSurfacePolicyStackingClass(\n variant: SurfaceVariant,\n policyOverride?: DeepPartialSurfacePolicy,\n): string {\n const { getSurfacePolicy } = useUI();\n const stackingTier = getSurfacePolicy?.(variant, policyOverride)?.stacking?.stackingTier;\n\n return resolveSurfacePolicyStackingClass(stackingTier);\n}\n\nexport { PortalContainerContext };\n"]}
@@ -2,10 +2,10 @@ import type React from 'react';
2
2
  import type { UseFormReturn } from 'react-hook-form';
3
3
  import type { z } from 'zod';
4
4
  import { HorizontalPlacement } from '@wildo-ai/presets-components-models';
5
+ import type { VerticalPlacement } from '@wildo-ai/presets-components-models';
5
6
  import type { ForeignKeyDisplayMode, ViewportBreakpoint } from '@wildo-ai/zod-decorators';
6
7
  import type { AppScopeFieldDefinition } from '../../core/resources/resources.frontend.schemas';
7
- import type { ApplicationLevelComponentType, StatusBarItemType } from '../../core/config/app-level-components.frontend.schemas';
8
- import type { VerticalPlacement } from '@wildo-ai/presets-components-models';
8
+ import type { ApplicationLevelComponentType, StatusBarItemType, StatusBarPlacement } from '../../core/config/app-level-components.frontend.schemas';
9
9
  import type { QuickSwitcherFieldPresentation, UserDropdownAvatarDisplay, UserDropdownSection } from '../../core/config/app-configuration-frontend.schemas';
10
10
  import type { FrontendComponentType, PlacementSide } from '@wildo-ai/presets-components-models';
11
11
  import type { ComponentRegistryRef } from '../../core/components-registry/component-registry.frontend.schemas';
@@ -176,13 +176,11 @@ export interface SidebarConfigObject {
176
176
  }
177
177
  export declare function isSidebarConfigObject(config: unknown): config is SidebarConfigObject;
178
178
  /**
179
- * Narrowing guard for StatusBar object config.
180
- * StatusBar config can be `boolean | VerticalPlacement (string) | object`.
181
- * This guard identifies the object form, distinguishing it from both
182
- * the boolean and string-shorthand variants.
179
+ * The object form of the status bar's configuration. The configuration is `boolean | StatusBarPlacement (the
180
+ * string shorthand) | StatusBarConfigObject`.
183
181
  */
184
182
  export interface StatusBarConfigObject {
185
- placement?: VerticalPlacement;
183
+ placement?: StatusBarPlacement;
186
184
  showMemoryUsage?: boolean;
187
185
  showNotificationCount?: boolean;
188
186
  showConnectionStatus?: boolean;
@@ -194,6 +192,7 @@ export interface StatusBarConfigObject {
194
192
  statusItems?: StatusBarConfigItem[];
195
193
  style?: React.CSSProperties;
196
194
  }
195
+ /** Narrowing guard for the object form, distinguishing it from the boolean and string-shorthand forms. */
197
196
  export declare function isStatusBarConfigObject(config: unknown): config is StatusBarConfigObject;
198
197
  export type UtilityPanelPlacement = HorizontalPlacement.START | HorizontalPlacement.END;
199
198
  export interface UtilityPanelConfigObject {
@@ -328,8 +327,8 @@ export interface AppShellLayoutInfo {
328
327
  hasActivityBar: boolean;
329
328
  hasQuickActionButton: boolean;
330
329
  hasUtilityPanel: boolean;
331
- sidebarPlacement: HorizontalPlacement;
332
- statusBarPlacement: VerticalPlacement;
330
+ sidebarPlacement: HorizontalPlacement.START | HorizontalPlacement.END;
331
+ statusBarPlacement: StatusBarPlacement;
333
332
  utilityPanelPlacement: UtilityPanelPlacement;
334
333
  isLayoutReady: boolean;
335
334
  }
@@ -804,9 +803,17 @@ export interface MenuUserOrgBehavior {
804
803
  _id: string;
805
804
  name: string;
806
805
  } | undefined;
806
+ /**
807
+ * The organizations the person can switch into. `viaProviderOrganizationName` is present only on a CLIENT
808
+ * organization they work in as a service firm's expert (#1597) — the firm's name, so the switcher can
809
+ * group clients apart from the person's own organizations and say through whom each is reached. A
810
+ * client appears only while its relationship is live: the organization read behind this list passes the
811
+ * per-request live filter, so an ended or paused relationship drops the client from the switcher.
812
+ */
807
813
  organizations: {
808
814
  _id: string;
809
815
  name: string;
816
+ viaProviderOrganizationName?: string;
810
817
  }[];
811
818
  /** Dropdown sections to render. The `SETTINGS` entry opens the unified Settings Hub. */
812
819
  sections: UserDropdownSection[];
@@ -843,6 +850,8 @@ export interface MenuBarBehavior {
843
850
  group?: string;
844
851
  /** Whether this item is the current destination — at most one item is (see `useMenuBarBehavior`). */
845
852
  isActive: boolean;
853
+ /** The badge KEY to draw beside the label (`NavigationItemBadge`), when the declaration names one. */
854
+ notificationBadgeRef?: string;
846
855
  onExecute: () => void;
847
856
  }[];
848
857
  menubarConfig: {