@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
@@ -591,12 +591,21 @@ const SurfaceRoot = React.forwardRef(function SurfaceRoot({ variant = SurfaceVar
591
591
  ...(ariaLabel !== undefined ? { 'aria-label': ariaLabel } : {}),
592
592
  ...(ariaLabelledBy !== undefined ? { 'aria-labelledby': ariaLabelledBy } : {}),
593
593
  };
594
+ /*
595
+ * Without `a11yManagedByHost`, Surface contributes the role and name IT resolved — but still only the keys
596
+ * it has a VALUE for. The same Slot rule applies here as above: an `undefined` key deletes the host's
597
+ * attribute. Emitting `role: undefined` stripped the role from every wrapped Radix primitive that sets one
598
+ * and was not given the opt-in — dropdown and context menus (`menu`), select (`listbox`), menubar
599
+ * (`menubar`), tabs content (`tabpanel`) — measured on the running app as a dropdown with no `role="menu"`
600
+ * (#1903). A role or name Surface DOES resolve (an explicit prop, a policy landmark) still wins over the
601
+ * host's, exactly as before; only the deletion is gone. Pinned in `Surface.host-role.test.tsx`.
602
+ */
594
603
  const a11yAttributes = a11yManagedByHost
595
604
  ? hostManagedA11yAttributes
596
605
  : {
597
- role: resolvedRole,
598
- 'aria-label': ariaLabel,
599
- 'aria-labelledby': resolvedAriaLabelledBy,
606
+ ...(resolvedRole !== undefined ? { role: resolvedRole } : {}),
607
+ ...(ariaLabel !== undefined ? { 'aria-label': ariaLabel } : {}),
608
+ ...(resolvedAriaLabelledBy !== undefined ? { 'aria-labelledby': resolvedAriaLabelledBy } : {}),
600
609
  };
601
610
  const shouldActivateFocusTrap = !a11yManagedByHost
602
611
  && (policy.a11y?.focusTrap === 'on-mount' || (modal && policy.a11y?.focusTrap === 'when-modal'));
@@ -1 +1 @@
1
- {"version":3,"file":"surface.js","sourceRoot":"","sources":["../../../../../src/components/sections/surface.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport {\n FRAMEWORK_DEFAULT_SURFACE_POLICIES,\n SurfaceVariant,\n UIBehavior,\n type DeepPartialSurfacePolicy,\n type MaterialProfileRole,\n type SurfacePolicy,\n} from '@wildo-ai/presets-components-models';\nimport { cn } from '~wildo-frontend-lib/core/ui/cn';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\nimport {\n computeSurfacePolicyContextValue,\n mergeSurfacePolicy,\n SurfacePolicyContext,\n useSurfacePolicy,\n} from '~wildo-frontend-lib/core/ui/SurfacePolicyContext';\nimport { useUI } from '~wildo-frontend-lib/core/ui/useUI';\nimport { useMaterialRuntime } from '~wildo-frontend-lib/core/ui/material-runtime';\nimport { SurfaceErrorBoundary } from '~wildo-frontend-lib/core/ui/SurfaceErrorBoundary';\nimport { useSurfaceBodyScrollLock, useSurfaceFocusTrap } from '~wildo-frontend-lib/core/ui/surface-a11y.utils';\n\ntype SurfaceStyle = React.CSSProperties & Record<`--surface-policy-${string}`, string | undefined>;\n\nexport interface SurfaceProps extends React.ComponentPropsWithoutRef<'div'> {\n /**\n * Semantic container role. Surface always composes the active theme's\n * matching `UIBehavior.SURFACE` recipe onto the rendered node; callers only\n * supply local structural classes and must not repeat the theme lookup.\n */\n variant?: SurfaceVariant;\n /**\n * Selects a material profile independently from the semantic surface recipe.\n * Use this when a component's behavior/policy remains one SurfaceVariant but\n * its functional role requires different optics (for example, a raised\n * navigation toolbar versus a raised menu). Theme recipes remain the default.\n */\n materialRoleOverride?: MaterialProfileRole;\n policyOverride?: DeepPartialSurfacePolicy;\n asChild?: boolean;\n /**\n * Suppresses policy-owned CSS variables and selector attributes while\n * retaining the resolved policy in React context for child slots. This does\n * not suppress the visual theme recipe: policy and appearance are separate\n * channels, and the semantic `variant` remains visually authoritative.\n */\n emitPolicyVars?: boolean;\n /**\n * Marks this surface as a modal root for policy slots such as\n * `focusTrap: 'when-modal'` and `scrollContainment: 'lock-body'`.\n */\n modal?: boolean;\n /**\n * Set when the host primitive already owns focus trapping / body scroll lock\n * AND the accessible name/description (for example Radix Dialog Content, which\n * wires `aria-labelledby` from its own `Dialog.Title`). Surface still emits\n * policy context, but contributes NO a11y attribute of its own — see the\n * `a11yAttributes` note below, where passing an `undefined` key was deleting\n * the host's accessible name (#632) — and skips duplicate runtime side effects\n * (focus trap, body scroll lock) plus the `from-header` label-policing\n * warning: the host owns labelling, so a `Surface.Header` is never registered\n * here and the warning would be a guaranteed false positive on every\n * host-managed overlay.\n */\n a11yManagedByHost?: boolean;\n 'data-slot'?: string;\n 'data-surface'?: string;\n}\n\nconst POLICY_DRIVEN_UTILITY_PREFIXES = /(?:^|\\s)(?:p|pt|pr|pb|pl|pe|ps|px|py|gap|gap-x|gap-y|max-h|min-h|max-w|overflow|z|flex|grid|flex-col|flex-row|flex-col-reverse|flex-row-reverse)-/;\nconst logger = LoggerFrontendService.getLogger();\n\nfunction paddingTierToCssValue(value: string | undefined): string | undefined {\n switch (value) {\n case 'none':\n return '0px';\n case 'field':\n return 'var(--sp-field)';\n case 'card-sm':\n return 'var(--spacing-card-sm)';\n case 'card':\n return 'var(--sp-card)';\n case 'container':\n return 'var(--sp-container)';\n default:\n return undefined;\n }\n}\n\nfunction gapTierToCssValue(value: string | undefined): string | undefined {\n switch (value) {\n case 'none':\n return '0px';\n case 'item':\n return 'var(--sp-item)';\n case 'field':\n return 'var(--sp-field)';\n case 'section':\n return 'var(--sp-section)';\n case 'lane':\n return 'var(--sp-region)';\n default:\n return undefined;\n }\n}\n\nfunction textWrapToCssValue(value: SurfacePolicy['content'] extends infer Content ? Content extends { wrapStrategy?: infer Wrap } ? Wrap : never : never): string | undefined {\n switch (value) {\n case 'nowrap':\n return 'nowrap';\n case 'balance':\n return 'balance';\n case 'pretty':\n return 'pretty';\n case 'wrap':\n return 'wrap';\n default:\n return undefined;\n }\n}\n\nfunction numericAlignmentToCssValue(value: SurfacePolicy['content'] extends infer Content ? Content extends { numericAlignment?: infer Numeric } ? Numeric : never : never): string | undefined {\n switch (value) {\n case 'tabular':\n return 'tabular-nums';\n case 'lining':\n return 'lining-nums';\n case 'inherit':\n return 'inherit';\n default:\n return undefined;\n }\n}\n\nfunction overlongTokenStrategyToCssValue(value: SurfacePolicy['content'] extends infer Content ? Content extends { overlongTokenStrategy?: infer Strategy } ? Strategy : never : never): string | undefined {\n switch (value) {\n case 'break-word':\n // CSS `overflow-wrap: break-word` (the framework default): emergency\n // character-boundary breaking when a token would otherwise overflow,\n // WITHOUT feeding those break opportunities into min-content sizing.\n // Catches URLs, dev-time i18n keys, hex hashes, file paths, error\n // messages with embedded paths.\n return 'break-word';\n case 'break-anywhere':\n // CSS `overflow-wrap: anywhere` — same emergency breaking as\n // `break-word`, but the break opportunities ALSO shrink the surface's\n // intrinsic min-content width to one character (which collapses\n // intrinsically-sized layouts like stat tiles to one letter per line).\n // Per-surface opt-in only; see `OverlongTokenStrategy` JSDoc.\n return 'anywhere';\n case 'overflow':\n // CSS `overflow-wrap: normal` = browser default. Long tokens\n // visibly overflow the surface. Useful for code blocks that\n // intentionally scroll horizontally, or any surface where the\n // design specifically calls for visible overflow.\n return 'normal';\n case 'inherit':\n return 'inherit';\n default:\n return undefined;\n }\n}\n\nfunction stackingTierToCssValue(value: SurfacePolicy['stacking'] extends infer Stacking ? Stacking extends { stackingTier?: infer Tier } ? Tier : never : never): string | undefined {\n switch (value) {\n case 'content':\n return 'var(--z-content)';\n case 'overlay':\n return 'var(--z-overlay)';\n case 'transient':\n return 'var(--z-transient)';\n case 'guidance':\n return 'var(--z-guidance)';\n case 'critical':\n return 'var(--z-critical)';\n default:\n return undefined;\n }\n}\n\nfunction actionAlignmentToCssValue(value: SurfacePolicy['geometry'] extends infer Geometry ? Geometry extends { actionAlignment?: infer Alignment } ? Alignment : never : never): string | undefined {\n switch (value) {\n case 'stack':\n return 'column';\n case 'row':\n case 'inherit':\n return value;\n case 'column-reverse-on-mobile':\n return 'row';\n default:\n return undefined;\n }\n}\n\nfunction actionAlignmentToMobileCssValue(value: SurfacePolicy['geometry'] extends infer Geometry ? Geometry extends { actionAlignment?: infer Alignment } ? Alignment : never : never): string | undefined {\n switch (value) {\n case 'column-reverse-on-mobile':\n return 'column-reverse';\n case 'stack':\n return 'column';\n case 'row':\n case 'inherit':\n return value;\n default:\n return undefined;\n }\n}\n\n/**\n * The CSS `max-inline-size` a {@link ResponsiveMaxWidth} tier resolves to.\n *\n * Exported so the two LAYOUT ROOTS that cap their own content — `DisplayLayout` and `FormLayout` —\n * resolve their measure through the same vocabulary a Surface does, instead of hand-writing the tier's\n * value. They used to carry the literal `max-w-[var(--measure-max-width,42rem)]`, which is byte-for-byte\n * what the `'measure'` tier returns here: the same decision, spelled two ways, with only one of the two\n * spellings reachable by a host that wanted to change it.\n */\nexport function responsiveMaxWidthToCssValue(value: SurfacePolicy['geometry'] extends infer Geometry ? Geometry extends { responsiveMaxWidth?: infer MaxWidth } ? MaxWidth : never : never): string | undefined {\n switch (value) {\n case 'full':\n return '100%';\n case 'sm':\n return '24rem';\n case 'md':\n return '28rem';\n case 'lg':\n return '32rem';\n case 'xl':\n return '36rem';\n case 'measure':\n // Reading-measure cap for single-column form/field stacks (T4c).\n // Themeable via `--measure-max-width`; defaults to 42rem (~672px).\n return 'var(--measure-max-width, 42rem)';\n case 'centered-readable':\n return '72ch';\n case 'content':\n // Page-content cap for primary content areas. Themeable via the\n // `--content-max-width` CSS variable; defaults to 80rem (~1280px).\n return 'var(--content-max-width, 80rem)';\n case 'none':\n default:\n // `none` is both the explicit tier AND the neutral, for the same reason the\n // margin companion below returns `0px` rather than `undefined`: policy vars\n // inherit, so an omitted cap adopts the nearest ancestor surface's cap. Every\n // tier of the union already returned explicitly, so folding the default in is\n // inert for every reachable value and only closes the inheritance hole.\n return 'none';\n }\n}\n\n/**\n * Centering companion to {@link responsiveMaxWidthToCssValue}: a surface capped\n * to a finite max inline-size is centered in its container via\n * `margin-inline: auto`. `full`/`none`/unset surfaces fill their container and\n * are explicitly RESET to `0px`. Applied by the Tailwind base layer at ≥ 640px\n * alongside the inline-size cap, so the `centered-readable`/`content` tiers\n * actually center (the cap alone would leave the surface flush to the\n * inline-start edge).\n *\n * The uncapped tiers MUST emit `0px` rather than `undefined`. Policy vars are\n * CSS custom properties, so they INHERIT: an omitted value is not \"no\n * centering\", it is \"whatever the nearest ancestor surface asked for\". Since\n * `OVERLAY` is capped (`lg`) and therefore publishes `auto`, every uncapped\n * surface nested inside a dialog silently inherited `margin-inline: auto` — and\n * an auto cross-axis margin in a flex column ALSO suppresses the item's\n * stretch, so those surfaces shrink-wrapped to their content and drifted to the\n * centre. In the settings hub that turned a column of cards into a ragged\n * staircase, each card as wide as its longest sentence. The inline-size\n * companion never showed the defect because its uncapped tier emits an explicit\n * `'none'`; this one returned `undefined` and inherited instead. Same neutral\n * -emission discipline as `--surface-policy-safe-area`, which publishes `0px`\n * rather than omitting itself.\n */\nfunction responsiveMaxWidthToMarginCssValue(value: SurfacePolicy['geometry'] extends infer Geometry ? Geometry extends { responsiveMaxWidth?: infer MaxWidth } ? MaxWidth : never : never): string | undefined {\n switch (value) {\n case 'sm':\n case 'md':\n case 'lg':\n case 'xl':\n case 'measure':\n case 'centered-readable':\n case 'content':\n return 'auto';\n case 'full':\n case 'none':\n default:\n // Explicit reset, never `undefined` — see the note above on inheritance.\n return '0px';\n }\n}\n\nfunction embeddedTablePaddingToCssValue(value: SurfacePolicy['composition'] extends infer Composition ? Composition extends { embeddedTablePadding?: infer Padding } ? Padding : never : never): string | undefined {\n switch (value) {\n case 'strip':\n return '0px';\n case 'preserve':\n default:\n // `preserve` is also the neutral: \"no opinion\" means keep the surface's own\n // inline padding. The Tailwind rule spells the same intent as a fallback\n // (`var(--…-embedded-table-padding-inline, var(--…-padding-inline))`), but a\n // fallback only fires when the var is UNSET — an inherited value that IS set\n // wins over it, so a table-bearing surface nested inside a `strip` ancestor\n // would have inherited `0px`. Emitting it here is what actually shadows that.\n return 'var(--surface-policy-padding-inline)';\n }\n}\n\nfunction framingModeToAttribute(value: SurfacePolicy['nesting'] extends infer Nesting ? Nesting extends { framingMode?: infer Framing } ? Framing : never : never): string | undefined {\n switch (value) {\n case 'always':\n case 'when-orphan':\n case 'never':\n return value;\n default:\n return undefined;\n }\n}\n\nfunction nestedRadiusStrategyToAttribute(value: SurfacePolicy['nesting'] extends infer Nesting ? Nesting extends { nestedRadiusStrategy?: infer Strategy } ? Strategy : never : never): string | undefined {\n switch (value) {\n case 'inherit':\n case 'one-tier-tighter':\n case 'fixed':\n return value;\n default:\n return undefined;\n }\n}\n\nfunction firstChildEdgeStrategyToAttribute(value: SurfacePolicy['nesting'] extends infer Nesting ? Nesting extends { firstChildEdgeStrategy?: infer Strategy } ? Strategy : never : never): string | undefined {\n switch (value) {\n case 'collapse':\n case 'preserve':\n return value;\n default:\n return undefined;\n }\n}\n\nfunction dividerStrategyToAttribute(value: SurfacePolicy['nesting'] extends infer Nesting ? Nesting extends { dividerStrategy?: infer Strategy } ? Strategy : never : never): string | undefined {\n switch (value) {\n case 'border':\n case 'gap':\n case 'rule':\n case 'none':\n return value;\n default:\n return undefined;\n }\n}\n\nfunction nestedRadiusToCssValue(\n strategy: SurfacePolicy['nesting'] extends infer Nesting ? Nesting extends { nestedRadiusStrategy?: infer Strategy } ? Strategy : never : never,\n isNestedInFramedAncestor: boolean,\n): string | undefined {\n if (!isNestedInFramedAncestor) {\n return undefined;\n }\n\n switch (strategy) {\n case 'inherit':\n return 'inherit';\n case 'one-tier-tighter':\n return 'var(--surface-nested-radius-one-tier-tighter, var(--radius-lg, 0.5rem))';\n case 'fixed':\n default:\n return undefined;\n }\n}\n\nfunction selectableSemanticsToAttribute(value: SurfacePolicy['interactiveState'] extends infer InteractiveState ? InteractiveState extends { selectableSemantics?: infer Semantics } ? Semantics : never : never): string | undefined {\n switch (value) {\n case 'wrap-children':\n case 'self-selectable':\n case 'forbidden':\n return value;\n default:\n return undefined;\n }\n}\n\nfunction gestureOptInToAttribute(value: SurfacePolicy['interactiveState'] extends infer InteractiveState ? InteractiveState extends { gestureOptIn?: infer OptIn } ? OptIn : never : never): string | undefined {\n switch (value) {\n case 'self':\n case 'children':\n case 'none':\n return value;\n default:\n return undefined;\n }\n}\n\nfunction landmarkRoleToAttribute(value: SurfacePolicy['a11y'] extends infer A11y ? A11y extends { landmarkRole?: infer Role } ? Role : never : never): React.AriaRole | undefined {\n switch (value) {\n case 'region':\n case 'dialog':\n case 'alertdialog':\n case 'complementary':\n case 'navigation':\n case 'status':\n case 'main':\n return value;\n case 'none':\n case 'reset':\n default:\n return undefined;\n }\n}\n\nfunction shouldActivateStackLayout(gap: string | undefined): boolean {\n return Boolean(gap && gap !== 'none');\n}\n\n/**\n * Stack-layout channel for `display` / `flex-direction`, on both the surface\n * root (`--surface-policy-display`) and its slots (`--surface-policy-slot-display`).\n *\n * The NON-stacking branch MUST return a concrete value rather than `undefined`,\n * for two independent reasons — the second one shipped as a live defect:\n *\n * 1. Policy vars are CSS custom properties, so they INHERIT. An omitted value is\n * not \"no opinion\", it is \"adopt the nearest ancestor surface's opinion\". A\n * non-stacking surface nested inside a stacking one therefore picked up\n * `display: flex; flex-direction: column` from its ancestor — the same\n * inheritance class as the `--surface-policy-responsive-max-width-margin`\n * defect (see `responsiveMaxWidthToMarginCssValue`).\n * 2. Even with NO ancestor to inherit from, omitting the var does not leave the\n * element alone. `display: var(--surface-policy-display)` with the var unset\n * is invalid at computed-value time, which resolves to `unset` — and `display`\n * is not inherited, so that is its INITIAL value, `inline`. The base-layer\n * declaration still wins the cascade, so it overrides the UA stylesheet's\n * `div { display: block }`. Measured on the running app: the framework's own\n * `PrimaryContentWidthBoundary` (a SHELL surface whose `containment.gap` is\n * flattened to `'none'` precisely so it stays \"a plain block\") computed\n * `display: inline`, which made its `max-inline-size` cap and `margin-inline:\n * auto` centering inert — `max-inline-size` does not apply to non-replaced\n * inline boxes. With a 400px cap forced inside a 976px container the surface\n * measured 976px wide; publishing `block` measured 400px, centered. The entire\n * page-content width cap was silently doing nothing.\n *\n * A CSS-wide keyword cannot express \"no opinion\" here: `revert-layer`, `revert`\n * and `initial` were each measured through this var in the running app and all\n * three behaved exactly like the unset case (`display: inline`), because a\n * CSS-wide keyword arriving via `var()` substitution is not honoured as one. A\n * consumer-side fallback (`var(--x, block)`) does not help either — an inherited\n * value that IS set wins over the fallback, which is the whole of reason 1.\n *\n * `block` / `row` are the initial-ish values a block container wants. Utility\n * classes still win: they live in a later cascade layer than this base rule.\n */\nfunction stackDisplayCssValue(isStacking: boolean): string {\n return isStacking ? 'flex' : 'block';\n}\n\n/** Companion to {@link stackDisplayCssValue} — see its note on explicit neutrals. */\nfunction stackFlexDirectionCssValue(isStacking: boolean): string {\n return isStacking ? 'column' : 'row';\n}\n\n/**\n * Every var below is read by a Tailwind base-layer rule that can match a NESTED\n * surface, so any `undefined` here is not \"neutral\" — it is \"inherit the nearest\n * ancestor surface's value\". The vars were enumerated against that rule set\n * (`src/tailwind/index.ts`) and classified; the residuals are recorded so the next\n * author does not have to re-derive them:\n *\n * - SAFE BY CONSTRUCTION — `safe-area` always emits `0px`/`env()`;\n * `child-adaptive-gap` is gated by the same boolean as the\n * `data-surface-child-adaptive-density` attribute its selector requires, so the\n * read is unreachable when the emission is absent.\n * - BENIGN — `numeric-align`, `text-wrap` and `overflow-wrap` drive CSS properties\n * that are THEMSELVES inherited, so inheriting the var is equivalent to\n * inheriting the property. No shadowing needed.\n * - INERT — `framing-mode`, `nested-radius{,-strategy}`, `first-child-edge-strategy`,\n * `divider-strategy`, `selectable-semantics` and `gesture-opt-in` are republished\n * as `--surface-*` custom properties that NOTHING reads (verified repo-wide);\n * behaviour is driven by the matching `data-surface-*` attributes, which do not\n * inherit.\n * - LATENT — the remaining tier-mapped vars (`padding-*`, `overflow`, `max-height`,\n * `gap`, `z-tier`, the per-slot gaps, `action-alignment{,-mobile}`) can only reach\n * their `undefined` branch through an override that sets the slot explicitly to\n * `undefined`: every variant's framework default populates them, and both `'reset'`\n * and `'inherit'` resolve to a concrete value (`'reset'` additionally logs an error\n * when it cannot). Left as-is rather than changed blind — if one becomes reachable,\n * it belongs in the explicit-neutral treatment above.\n */\nfunction buildSurfacePolicyStyle(policy: SurfacePolicy): SurfaceStyle {\n const containment = policy.containment;\n const nesting = policy.nesting;\n const content = policy.content;\n const interactiveState = policy.interactiveState;\n const geometry = policy.geometry;\n const stacking = policy.stacking;\n const composition = policy.composition;\n const shouldStack = shouldActivateStackLayout(containment?.gap);\n\n return {\n '--surface-policy-display': stackDisplayCssValue(shouldStack),\n '--surface-policy-flex-direction': stackFlexDirectionCssValue(shouldStack),\n '--surface-policy-padding-block': paddingTierToCssValue(containment?.paddingBlock),\n '--surface-policy-padding-inline': paddingTierToCssValue(containment?.paddingInline),\n '--surface-policy-overflow': containment?.overflow,\n '--surface-policy-max-height': containment?.maxHeight === 'none' ? 'none' : containment?.maxHeight,\n '--surface-policy-gap': gapTierToCssValue(containment?.gap),\n '--surface-policy-header-gap': gapTierToCssValue(containment?.slotGap?.header ?? containment?.gap),\n '--surface-policy-body-gap': gapTierToCssValue(containment?.slotGap?.body ?? containment?.gap),\n '--surface-policy-footer-gap': gapTierToCssValue(containment?.slotGap?.footer ?? containment?.gap),\n '--surface-policy-framing-mode': framingModeToAttribute(nesting?.framingMode),\n '--surface-policy-nested-radius-strategy': nestedRadiusStrategyToAttribute(nesting?.nestedRadiusStrategy),\n '--surface-policy-first-child-edge-strategy': firstChildEdgeStrategyToAttribute(nesting?.firstChildEdgeStrategy),\n '--surface-policy-divider-strategy': dividerStrategyToAttribute(nesting?.dividerStrategy),\n '--surface-policy-z-tier': stackingTierToCssValue(stacking?.stackingTier),\n '--surface-policy-numeric-align': numericAlignmentToCssValue(content?.numericAlignment),\n '--surface-policy-text-wrap': textWrapToCssValue(content?.wrapStrategy),\n '--surface-policy-overflow-wrap': overlongTokenStrategyToCssValue(content?.overlongTokenStrategy),\n '--surface-policy-safe-area': geometry?.safeAreaPadding ? 'env(safe-area-inset-bottom)' : '0px',\n '--surface-policy-action-alignment': actionAlignmentToCssValue(geometry?.actionAlignment),\n '--surface-policy-action-alignment-mobile': actionAlignmentToMobileCssValue(geometry?.actionAlignment),\n '--surface-policy-responsive-max-width': responsiveMaxWidthToCssValue(geometry?.responsiveMaxWidth),\n '--surface-policy-responsive-max-width-margin': responsiveMaxWidthToMarginCssValue(geometry?.responsiveMaxWidth),\n '--surface-policy-embedded-table-padding-inline': embeddedTablePaddingToCssValue(composition?.embeddedTablePadding),\n '--surface-policy-child-adaptive-gap': composition?.childAdaptiveDensity ? 'var(--sp-field)' : undefined,\n '--surface-policy-selectable-semantics': selectableSemanticsToAttribute(interactiveState?.selectableSemantics),\n '--surface-policy-gesture-opt-in': gestureOptInToAttribute(interactiveState?.gestureOptIn),\n };\n}\n\n/**\n * Policy families whose values DO produce CSS — `containment` (padding,\n * overflow, max-height, gap), `nesting` (framing mode → frame visibility),\n * `content` (text-wrap, numeric alignment), `geometry` (responsiveMaxWidth →\n * max-inline-size), `stacking` (z-tier). The remaining families (`a11y`,\n * `interactiveState`, `autoRender`, `skeleton`, `composition`) emit only ARIA\n * attributes / behavioral data-attributes / runtime hooks and CANNOT\n * visually conflict with a Tailwind utility class.\n *\n * Restricting the collision check to these families eliminates a noisy\n * false-positive: a Surface that overrides ONLY `a11y.landmarkRole`\n * (e.g., the public shell using `NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE`)\n * combined with an `overflow-auto` Tailwind utility on the same node is NOT\n * a collision — `a11y.landmarkRole` does not emit any CSS property the\n * utility could fight with.\n */\nconst VISUALLY_IMPACTFUL_POLICY_FAMILIES: ReadonlySet<string> = new Set([\n 'containment',\n 'nesting',\n 'content',\n 'geometry',\n 'stacking',\n]);\n\nfunction hasPolicyDrivenOverride(policyOverride: DeepPartialSurfacePolicy | undefined): boolean {\n if (!policyOverride) {\n return false;\n }\n\n return Object.entries(policyOverride).some(([familyName, familyOverride]) => {\n if (!VISUALLY_IMPACTFUL_POLICY_FAMILIES.has(familyName)) {\n return false;\n }\n return familyOverride !== undefined\n && familyOverride !== null\n && typeof familyOverride === 'object'\n && Object.keys(familyOverride).length > 0;\n });\n}\n\nfunction usePolicyChannelCollisionWarning(\n className: string | undefined,\n childClassName: string | undefined,\n policyOverride: DeepPartialSurfacePolicy | undefined,\n emitPolicyVars: boolean,\n): void {\n const warnedRef = React.useRef(false);\n\n // The collision this warns about — a className layout utility (padding / gap /\n // flex / …) visually overriding a policy-driven CSS var while children still\n // read the policy value — can only happen when the policy vars are actually\n // emitted. A surface with `emitPolicyVars={false}` (e.g. ContentSection section\n // chrome, which owns layout via recipe classes and may set only a\n // `nesting.framingMode` override) emits NO vars, so there is nothing for a\n // utility to override. Skipping the check here removes a guaranteed\n // false-positive on every such surface.\n if (!emitPolicyVars) {\n return;\n }\n\n const conflictingClassName = [className, childClassName].filter(Boolean).join(' ');\n\n if (\n process.env.NODE_ENV !== 'production'\n && !warnedRef.current\n && conflictingClassName\n && hasPolicyDrivenOverride(policyOverride)\n && POLICY_DRIVEN_UTILITY_PREFIXES.test(conflictingClassName)\n ) {\n warnedRef.current = true;\n logger.warn('[Surface] className utilities can visually override policyOverride while child policy context still sees the policy value', {\n className: conflictingClassName,\n });\n }\n}\n\nfunction mergeSurfaceStyle(\n policy: SurfacePolicy,\n materialStyle: React.CSSProperties | undefined,\n style: React.CSSProperties | undefined,\n emitPolicyVars: boolean,\n rendersOwnFrame: boolean,\n nestedRadius: string | undefined,\n): SurfaceStyle | React.CSSProperties | undefined {\n if (!emitPolicyVars) {\n return { ...materialStyle, ...style };\n }\n\n return {\n ...buildSurfacePolicyStyle(policy),\n '--surface-policy-nested-radius': nestedRadius,\n borderWidth: rendersOwnFrame ? undefined : '0px',\n boxShadow: rendersOwnFrame ? undefined : 'none',\n borderRadius: nestedRadius ? 'var(--surface-policy-nested-radius)' : undefined,\n ...materialStyle,\n ...style,\n } as SurfaceStyle;\n}\n\nconst SurfaceRoot = React.forwardRef<HTMLDivElement, SurfaceProps>(function SurfaceRoot(\n {\n variant = SurfaceVariant.BASE,\n materialRoleOverride,\n policyOverride,\n asChild = false,\n emitPolicyVars = true,\n modal = false,\n a11yManagedByHost = false,\n className,\n style,\n children,\n role,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'data-slot': _dataSlot,\n 'data-surface': _dataSurface,\n ...props\n },\n ref,\n): React.JSX.Element {\n const {\n getComposedClasses,\n getMaterialProfile,\n getRecipe,\n getSurfacePolicy,\n } = useUI();\n // Optional calls keep the primitive resilient in isolated tests and custom\n // host adapters that provide the legacy minimal UI context surface.\n const visualRecipe = getRecipe?.(UIBehavior.SURFACE, variant);\n const visualRecipeClasses = getComposedClasses?.(UIBehavior.SURFACE, variant);\n const materialProfile = getMaterialProfile?.(materialRoleOverride ?? visualRecipe?.material);\n const parentContext = React.useContext(SurfacePolicyContext);\n const policy = React.useMemo(\n () => getSurfacePolicy\n ? getSurfacePolicy(variant, policyOverride, parentContext?.policy)\n : mergeSurfacePolicy(\n FRAMEWORK_DEFAULT_SURFACE_POLICIES[variant],\n undefined,\n undefined,\n policyOverride,\n {\n variant,\n parentPolicy: parentContext?.policy,\n logger,\n },\n ),\n [getSurfacePolicy, parentContext?.policy, policyOverride, variant],\n );\n const [headerId, setHeaderId] = React.useState<string | undefined>();\n const registerHeaderId = React.useCallback((id: string): void => {\n setHeaderId(id);\n }, []);\n const unregisterHeaderId = React.useCallback((id: string): void => {\n setHeaderId((current) => (current === id ? undefined : current));\n }, []);\n const headerRegistration = React.useMemo(\n () => ({ headerId, registerHeaderId, unregisterHeaderId }),\n [headerId, registerHeaderId, unregisterHeaderId],\n );\n const contextValue = React.useMemo(\n () => computeSurfacePolicyContextValue(variant, policy, parentContext, headerRegistration),\n [headerRegistration, parentContext, policy, variant],\n );\n const isNestedInFramedAncestor = Boolean(parentContext?.isInFramedAncestor);\n const nearestFramedAncestorVariant = isNestedInFramedAncestor\n ? parentContext?.nearestFramedAncestorVariant ?? undefined\n : undefined;\n const nestedRadius = nestedRadiusToCssValue(policy.nesting?.nestedRadiusStrategy, isNestedInFramedAncestor);\n\n const childClassName = asChild && React.isValidElement<{ className?: string }>(children)\n ? children.props.className\n : undefined;\n usePolicyChannelCollisionWarning(className, childClassName, policyOverride, emitPolicyVars);\n const Comp = asChild ? Slot : 'div';\n const surfaceNodeRef = React.useRef<HTMLElement | null>(null);\n const materialRuntime = useMaterialRuntime(materialProfile, surfaceNodeRef);\n const composedRef = React.useCallback((node: HTMLElement | null): void => {\n surfaceNodeRef.current = node;\n\n if (typeof ref === 'function') {\n ref(node as HTMLDivElement | null);\n return;\n }\n\n if (ref) {\n ref.current = node as HTMLDivElement | null;\n }\n }, [ref]);\n const resolvedRole = role ?? landmarkRoleToAttribute(policy.a11y?.landmarkRole);\n const resolvedAriaLabelledBy = ariaLabelledBy\n ?? (policy.a11y?.labelStrategy === 'from-header' ? headerId : undefined);\n\n /*\n * The a11y attributes Surface puts on the merged element — and under `a11yManagedByHost`, the\n * KEYS it must not put there at all.\n *\n * An `asChild` Surface is a Slot: its props are merged into the host primitive's, and the host\n * then spreads that merged object AFTER its own attributes. So a key present with an\n * `undefined` value does not mean \"Surface contributes nothing\" — it means \"delete whatever the\n * host set\". Radix `Dialog.Content` renders\n * `<div role=\"dialog\" aria-labelledby={context.titleId} {...contentProps}>`, so Surface passing\n * `aria-labelledby: undefined` REMOVED the accessible name the host had just wired from its own\n * `Dialog.Title` (#632).\n *\n * Measured on the command palette: `aria-describedby` survived (Surface never emits it) while\n * `aria-labelledby` was absent, with a correctly-rendered `Dialog.Title` sitting inside carrying\n * the very id that should have been referenced. The defect hid behind the common path —\n * `OverlayContainer` passes `aria-labelledby` EXPLICITLY, so its dialogs were named and only\n * overlays relying on the host's own title wiring lost it.\n *\n * Hence: when the host owns a11y, forward only what the CALLER explicitly supplied, as present\n * keys, and omit the rest entirely rather than passing `undefined`. Synthesizing a value is\n * equally wrong here — Surface's own `landmarkRole` would overwrite an `alertdialog` role with\n * `dialog`, which is the same defect one attribute over.\n */\n const hostManagedA11yAttributes = {\n ...(role !== undefined ? { role } : {}),\n ...(ariaLabel !== undefined ? { 'aria-label': ariaLabel } : {}),\n ...(ariaLabelledBy !== undefined ? { 'aria-labelledby': ariaLabelledBy } : {}),\n };\n const a11yAttributes = a11yManagedByHost\n ? hostManagedA11yAttributes\n : {\n role: resolvedRole,\n 'aria-label': ariaLabel,\n 'aria-labelledby': resolvedAriaLabelledBy,\n };\n const shouldActivateFocusTrap = !a11yManagedByHost\n && (policy.a11y?.focusTrap === 'on-mount' || (modal && policy.a11y?.focusTrap === 'when-modal'));\n const shouldActivateScrollContainment = !a11yManagedByHost\n && modal\n && policy.a11y?.scrollContainment === 'lock-body';\n\n useSurfaceFocusTrap(surfaceNodeRef, shouldActivateFocusTrap);\n useSurfaceBodyScrollLock(shouldActivateScrollContainment);\n React.useEffect(() => {\n if (\n process.env.NODE_ENV === 'production'\n // When the host primitive owns a11y (Radix Dialog / Drawer / Sheet /\n // AlertDialog), the accessible name comes from the host's own title\n // (e.g. `Dialog.Title` → `aria-labelledby`), NOT from a `Surface.Header`.\n // The `from-header` strategy is structurally inactive here, so this\n // warning would fire for EVERY host-managed overlay regardless of whether\n // it is correctly titled. Defer labelling validation to the host — Radix\n // emits its own (authoritative) warning when the title is genuinely absent.\n || a11yManagedByHost\n || policy.a11y?.labelStrategy !== 'from-header'\n || !resolvedRole\n || ariaLabel\n || ariaLabelledBy\n || headerId\n ) {\n return undefined;\n }\n\n const timeout = window.setTimeout(() => {\n logger.warn('[Surface] labelStrategy \"from-header\" produced an unlabelled landmark surface', {\n variant,\n role: resolvedRole,\n });\n }, 0);\n\n return () => window.clearTimeout(timeout);\n }, [a11yManagedByHost, ariaLabel, ariaLabelledBy, headerId, policy.a11y?.labelStrategy, resolvedRole, variant]);\n const policyStyleAttrs = emitPolicyVars\n ? {\n 'data-slot': 'surface',\n 'data-surface': '',\n /*\n * The width tier this surface applies, announced so the CAP is legible in the DOM.\n *\n * Width is a chain — a zone boundary, a pane, a layout root's reading measure — and until\n * every level said which tier it was applying, diagnosing \"why is this narrow\" meant walking\n * the ancestors reading computed styles, which is how the wrong cap got fixed twice in a row.\n * With this, `document.querySelectorAll('[data-inline-size-tier]')` names every cap in the\n * page and its owner in one call. Absent when no tier is declared, so it marks the elements\n * that actually decide something rather than every surface.\n */\n 'data-inline-size-tier': policy.geometry?.responsiveMaxWidth,\n }\n : {};\n const surfaceElement = (\n <Comp\n ref={composedRef}\n {...props}\n {...policyStyleAttrs}\n data-material-kind={materialRuntime['data-material-kind']}\n data-material-tier={materialRuntime['data-material-tier']}\n data-material-variant={materialRuntime['data-material-variant']}\n data-material-depth={materialRuntime['data-material-depth']}\n data-material-composition={materialRuntime['data-material-composition']}\n data-material-group={materialRuntime['data-material-group']}\n data-material-refractive-budget={materialRuntime['data-material-refractive-budget']}\n tabIndex={shouldActivateFocusTrap && props.tabIndex == null ? -1 : props.tabIndex}\n data-surface-focus-trap={shouldActivateFocusTrap ? '' : undefined}\n data-surface-scroll-containment={shouldActivateScrollContainment ? '' : undefined}\n data-surface-framing-mode={emitPolicyVars ? framingModeToAttribute(policy.nesting?.framingMode) : undefined}\n data-surface-frame={emitPolicyVars ? (contextValue.rendersOwnFrame ? 'rendered' : 'suppressed') : undefined}\n data-surface-in-framed-ancestor={emitPolicyVars && isNestedInFramedAncestor ? '' : undefined}\n data-surface-nearest-framed-ancestor={emitPolicyVars ? nearestFramedAncestorVariant : undefined}\n data-surface-nested-radius-strategy={emitPolicyVars ? nestedRadiusStrategyToAttribute(policy.nesting?.nestedRadiusStrategy) : undefined}\n data-surface-first-child-edge-strategy={emitPolicyVars ? firstChildEdgeStrategyToAttribute(policy.nesting?.firstChildEdgeStrategy) : undefined}\n data-surface-divider-strategy={emitPolicyVars ? dividerStrategyToAttribute(policy.nesting?.dividerStrategy) : undefined}\n data-surface-selectable-semantics={emitPolicyVars ? selectableSemanticsToAttribute(policy.interactiveState?.selectableSemantics) : undefined}\n data-surface-gesture-opt-in={emitPolicyVars ? gestureOptInToAttribute(policy.interactiveState?.gestureOptIn) : undefined}\n data-surface-child-adaptive-density={emitPolicyVars && policy.composition?.childAdaptiveDensity === true ? '' : undefined}\n data-surface-selection-column-aware={emitPolicyVars && policy.composition?.selectionColumnAware === true ? '' : undefined}\n {...a11yAttributes}\n data-surface-variant={variant}\n className={cn(visualRecipeClasses, className)}\n style={mergeSurfaceStyle(policy, materialRuntime.style, style, emitPolicyVars, contextValue.rendersOwnFrame, nestedRadius)}\n >\n {children}\n </Comp>\n );\n const shouldWrapErrorBoundary = policy.interactiveState?.errorBoundary === 'self';\n\n return (\n <SurfacePolicyContext.Provider value={contextValue}>\n {shouldWrapErrorBoundary ? (\n <SurfaceErrorBoundary>{surfaceElement}</SurfaceErrorBoundary>\n ) : surfaceElement}\n </SurfacePolicyContext.Provider>\n );\n});\n\nSurfaceRoot.displayName = 'Surface';\n\nfunction surfaceSlotStyle(\n slot: 'header' | 'body' | 'footer',\n policy: SurfacePolicy,\n style: React.CSSProperties | undefined,\n): React.CSSProperties {\n const gap = policy.containment?.slotGap?.[slot] ?? policy.containment?.gap;\n const shouldStack = shouldActivateStackLayout(gap);\n\n return {\n '--surface-policy-slot-display': stackDisplayCssValue(shouldStack),\n '--surface-policy-slot-flex-direction': stackFlexDirectionCssValue(shouldStack),\n [`--surface-policy-${slot}-gap`]: gapTierToCssValue(gap),\n ...style,\n } as React.CSSProperties;\n}\n\nexport const SurfaceHeader = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(function SurfaceHeader(\n { className, id, style, ...props },\n ref,\n): React.JSX.Element {\n const policy = useSurfacePolicy();\n const surfaceContext = React.useContext(SurfacePolicyContext);\n const registerHeaderId = surfaceContext?.registerHeaderId;\n const unregisterHeaderId = surfaceContext?.unregisterHeaderId;\n const generatedId = React.useId();\n const resolvedId = id ?? generatedId;\n\n React.useEffect(() => {\n registerHeaderId?.(resolvedId);\n return () => unregisterHeaderId?.(resolvedId);\n }, [registerHeaderId, resolvedId, unregisterHeaderId]);\n\n return (\n <div\n ref={ref}\n id={resolvedId}\n data-slot=\"surface-header\"\n className={cn(className)}\n style={surfaceSlotStyle('header', policy, style)}\n {...props}\n />\n );\n});\n\nSurfaceHeader.displayName = 'Surface.Header';\n\nexport const SurfaceBody = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(function SurfaceBody(\n { className, style, ...props },\n ref,\n): React.JSX.Element {\n const policy = useSurfacePolicy();\n\n return (\n <div\n ref={ref}\n data-slot=\"surface-body\"\n className={cn(className)}\n style={surfaceSlotStyle('body', policy, style)}\n {...props}\n />\n );\n});\n\nSurfaceBody.displayName = 'Surface.Body';\n\nexport const SurfaceFooter = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(function SurfaceFooter(\n { className, style, ...props },\n ref,\n): React.JSX.Element {\n const policy = useSurfacePolicy();\n const gap = policy.containment?.slotGap?.footer ?? policy.containment?.gap;\n const shouldStack = shouldActivateStackLayout(gap);\n const shouldAlignActions = Boolean(policy.geometry?.actionAlignment && policy.geometry.actionAlignment !== 'inherit');\n\n return (\n <div\n ref={ref}\n data-slot=\"surface-footer\"\n className={cn(className)}\n style={{\n '--surface-policy-slot-display': stackDisplayCssValue(shouldStack || shouldAlignActions),\n '--surface-policy-slot-flex-direction': stackFlexDirectionCssValue(shouldStack),\n '--surface-policy-footer-gap': gapTierToCssValue(gap),\n '--surface-policy-action-alignment': shouldAlignActions\n ? actionAlignmentToCssValue(policy.geometry?.actionAlignment)\n : undefined,\n '--surface-policy-action-alignment-mobile': shouldAlignActions\n ? actionAlignmentToMobileCssValue(policy.geometry?.actionAlignment)\n : undefined,\n ...style,\n } as React.CSSProperties}\n {...props}\n />\n );\n});\n\nSurfaceFooter.displayName = 'Surface.Footer';\n\nexport const SurfaceAction = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(function SurfaceAction(\n { className, ...props },\n ref,\n): React.JSX.Element {\n return (\n <div\n ref={ref}\n data-slot=\"surface-action\"\n className={cn(className)}\n {...props}\n />\n );\n});\n\nSurfaceAction.displayName = 'Surface.Action';\n\nexport const Surface = Object.assign(SurfaceRoot, {\n Header: SurfaceHeader,\n Body: SurfaceBody,\n Footer: SurfaceFooter,\n Action: SurfaceAction,\n});\n"]}
1
+ {"version":3,"file":"surface.js","sourceRoot":"","sources":["../../../../../src/components/sections/surface.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport {\n FRAMEWORK_DEFAULT_SURFACE_POLICIES,\n SurfaceVariant,\n UIBehavior,\n type DeepPartialSurfacePolicy,\n type MaterialProfileRole,\n type SurfacePolicy,\n} from '@wildo-ai/presets-components-models';\nimport { cn } from '~wildo-frontend-lib/core/ui/cn';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\nimport {\n computeSurfacePolicyContextValue,\n mergeSurfacePolicy,\n SurfacePolicyContext,\n useSurfacePolicy,\n} from '~wildo-frontend-lib/core/ui/SurfacePolicyContext';\nimport { useUI } from '~wildo-frontend-lib/core/ui/useUI';\nimport { useMaterialRuntime } from '~wildo-frontend-lib/core/ui/material-runtime';\nimport { SurfaceErrorBoundary } from '~wildo-frontend-lib/core/ui/SurfaceErrorBoundary';\nimport { useSurfaceBodyScrollLock, useSurfaceFocusTrap } from '~wildo-frontend-lib/core/ui/surface-a11y.utils';\n\ntype SurfaceStyle = React.CSSProperties & Record<`--surface-policy-${string}`, string | undefined>;\n\nexport interface SurfaceProps extends React.ComponentPropsWithoutRef<'div'> {\n /**\n * Semantic container role. Surface always composes the active theme's\n * matching `UIBehavior.SURFACE` recipe onto the rendered node; callers only\n * supply local structural classes and must not repeat the theme lookup.\n */\n variant?: SurfaceVariant;\n /**\n * Selects a material profile independently from the semantic surface recipe.\n * Use this when a component's behavior/policy remains one SurfaceVariant but\n * its functional role requires different optics (for example, a raised\n * navigation toolbar versus a raised menu). Theme recipes remain the default.\n */\n materialRoleOverride?: MaterialProfileRole;\n policyOverride?: DeepPartialSurfacePolicy;\n asChild?: boolean;\n /**\n * Suppresses policy-owned CSS variables and selector attributes while\n * retaining the resolved policy in React context for child slots. This does\n * not suppress the visual theme recipe: policy and appearance are separate\n * channels, and the semantic `variant` remains visually authoritative.\n */\n emitPolicyVars?: boolean;\n /**\n * Marks this surface as a modal root for policy slots such as\n * `focusTrap: 'when-modal'` and `scrollContainment: 'lock-body'`.\n */\n modal?: boolean;\n /**\n * Set when the host primitive already owns focus trapping / body scroll lock\n * AND the accessible name/description (for example Radix Dialog Content, which\n * wires `aria-labelledby` from its own `Dialog.Title`). Surface still emits\n * policy context, but contributes NO a11y attribute of its own — see the\n * `a11yAttributes` note below, where passing an `undefined` key was deleting\n * the host's accessible name (#632) — and skips duplicate runtime side effects\n * (focus trap, body scroll lock) plus the `from-header` label-policing\n * warning: the host owns labelling, so a `Surface.Header` is never registered\n * here and the warning would be a guaranteed false positive on every\n * host-managed overlay.\n */\n a11yManagedByHost?: boolean;\n 'data-slot'?: string;\n 'data-surface'?: string;\n}\n\nconst POLICY_DRIVEN_UTILITY_PREFIXES = /(?:^|\\s)(?:p|pt|pr|pb|pl|pe|ps|px|py|gap|gap-x|gap-y|max-h|min-h|max-w|overflow|z|flex|grid|flex-col|flex-row|flex-col-reverse|flex-row-reverse)-/;\nconst logger = LoggerFrontendService.getLogger();\n\nfunction paddingTierToCssValue(value: string | undefined): string | undefined {\n switch (value) {\n case 'none':\n return '0px';\n case 'field':\n return 'var(--sp-field)';\n case 'card-sm':\n return 'var(--spacing-card-sm)';\n case 'card':\n return 'var(--sp-card)';\n case 'container':\n return 'var(--sp-container)';\n default:\n return undefined;\n }\n}\n\nfunction gapTierToCssValue(value: string | undefined): string | undefined {\n switch (value) {\n case 'none':\n return '0px';\n case 'item':\n return 'var(--sp-item)';\n case 'field':\n return 'var(--sp-field)';\n case 'section':\n return 'var(--sp-section)';\n case 'lane':\n return 'var(--sp-region)';\n default:\n return undefined;\n }\n}\n\nfunction textWrapToCssValue(value: SurfacePolicy['content'] extends infer Content ? Content extends { wrapStrategy?: infer Wrap } ? Wrap : never : never): string | undefined {\n switch (value) {\n case 'nowrap':\n return 'nowrap';\n case 'balance':\n return 'balance';\n case 'pretty':\n return 'pretty';\n case 'wrap':\n return 'wrap';\n default:\n return undefined;\n }\n}\n\nfunction numericAlignmentToCssValue(value: SurfacePolicy['content'] extends infer Content ? Content extends { numericAlignment?: infer Numeric } ? Numeric : never : never): string | undefined {\n switch (value) {\n case 'tabular':\n return 'tabular-nums';\n case 'lining':\n return 'lining-nums';\n case 'inherit':\n return 'inherit';\n default:\n return undefined;\n }\n}\n\nfunction overlongTokenStrategyToCssValue(value: SurfacePolicy['content'] extends infer Content ? Content extends { overlongTokenStrategy?: infer Strategy } ? Strategy : never : never): string | undefined {\n switch (value) {\n case 'break-word':\n // CSS `overflow-wrap: break-word` (the framework default): emergency\n // character-boundary breaking when a token would otherwise overflow,\n // WITHOUT feeding those break opportunities into min-content sizing.\n // Catches URLs, dev-time i18n keys, hex hashes, file paths, error\n // messages with embedded paths.\n return 'break-word';\n case 'break-anywhere':\n // CSS `overflow-wrap: anywhere` — same emergency breaking as\n // `break-word`, but the break opportunities ALSO shrink the surface's\n // intrinsic min-content width to one character (which collapses\n // intrinsically-sized layouts like stat tiles to one letter per line).\n // Per-surface opt-in only; see `OverlongTokenStrategy` JSDoc.\n return 'anywhere';\n case 'overflow':\n // CSS `overflow-wrap: normal` = browser default. Long tokens\n // visibly overflow the surface. Useful for code blocks that\n // intentionally scroll horizontally, or any surface where the\n // design specifically calls for visible overflow.\n return 'normal';\n case 'inherit':\n return 'inherit';\n default:\n return undefined;\n }\n}\n\nfunction stackingTierToCssValue(value: SurfacePolicy['stacking'] extends infer Stacking ? Stacking extends { stackingTier?: infer Tier } ? Tier : never : never): string | undefined {\n switch (value) {\n case 'content':\n return 'var(--z-content)';\n case 'overlay':\n return 'var(--z-overlay)';\n case 'transient':\n return 'var(--z-transient)';\n case 'guidance':\n return 'var(--z-guidance)';\n case 'critical':\n return 'var(--z-critical)';\n default:\n return undefined;\n }\n}\n\nfunction actionAlignmentToCssValue(value: SurfacePolicy['geometry'] extends infer Geometry ? Geometry extends { actionAlignment?: infer Alignment } ? Alignment : never : never): string | undefined {\n switch (value) {\n case 'stack':\n return 'column';\n case 'row':\n case 'inherit':\n return value;\n case 'column-reverse-on-mobile':\n return 'row';\n default:\n return undefined;\n }\n}\n\nfunction actionAlignmentToMobileCssValue(value: SurfacePolicy['geometry'] extends infer Geometry ? Geometry extends { actionAlignment?: infer Alignment } ? Alignment : never : never): string | undefined {\n switch (value) {\n case 'column-reverse-on-mobile':\n return 'column-reverse';\n case 'stack':\n return 'column';\n case 'row':\n case 'inherit':\n return value;\n default:\n return undefined;\n }\n}\n\n/**\n * The CSS `max-inline-size` a {@link ResponsiveMaxWidth} tier resolves to.\n *\n * Exported so the two LAYOUT ROOTS that cap their own content — `DisplayLayout` and `FormLayout` —\n * resolve their measure through the same vocabulary a Surface does, instead of hand-writing the tier's\n * value. They used to carry the literal `max-w-[var(--measure-max-width,42rem)]`, which is byte-for-byte\n * what the `'measure'` tier returns here: the same decision, spelled two ways, with only one of the two\n * spellings reachable by a host that wanted to change it.\n */\nexport function responsiveMaxWidthToCssValue(value: SurfacePolicy['geometry'] extends infer Geometry ? Geometry extends { responsiveMaxWidth?: infer MaxWidth } ? MaxWidth : never : never): string | undefined {\n switch (value) {\n case 'full':\n return '100%';\n case 'sm':\n return '24rem';\n case 'md':\n return '28rem';\n case 'lg':\n return '32rem';\n case 'xl':\n return '36rem';\n case 'measure':\n // Reading-measure cap for single-column form/field stacks (T4c).\n // Themeable via `--measure-max-width`; defaults to 42rem (~672px).\n return 'var(--measure-max-width, 42rem)';\n case 'centered-readable':\n return '72ch';\n case 'content':\n // Page-content cap for primary content areas. Themeable via the\n // `--content-max-width` CSS variable; defaults to 80rem (~1280px).\n return 'var(--content-max-width, 80rem)';\n case 'none':\n default:\n // `none` is both the explicit tier AND the neutral, for the same reason the\n // margin companion below returns `0px` rather than `undefined`: policy vars\n // inherit, so an omitted cap adopts the nearest ancestor surface's cap. Every\n // tier of the union already returned explicitly, so folding the default in is\n // inert for every reachable value and only closes the inheritance hole.\n return 'none';\n }\n}\n\n/**\n * Centering companion to {@link responsiveMaxWidthToCssValue}: a surface capped\n * to a finite max inline-size is centered in its container via\n * `margin-inline: auto`. `full`/`none`/unset surfaces fill their container and\n * are explicitly RESET to `0px`. Applied by the Tailwind base layer at ≥ 640px\n * alongside the inline-size cap, so the `centered-readable`/`content` tiers\n * actually center (the cap alone would leave the surface flush to the\n * inline-start edge).\n *\n * The uncapped tiers MUST emit `0px` rather than `undefined`. Policy vars are\n * CSS custom properties, so they INHERIT: an omitted value is not \"no\n * centering\", it is \"whatever the nearest ancestor surface asked for\". Since\n * `OVERLAY` is capped (`lg`) and therefore publishes `auto`, every uncapped\n * surface nested inside a dialog silently inherited `margin-inline: auto` — and\n * an auto cross-axis margin in a flex column ALSO suppresses the item's\n * stretch, so those surfaces shrink-wrapped to their content and drifted to the\n * centre. In the settings hub that turned a column of cards into a ragged\n * staircase, each card as wide as its longest sentence. The inline-size\n * companion never showed the defect because its uncapped tier emits an explicit\n * `'none'`; this one returned `undefined` and inherited instead. Same neutral\n * -emission discipline as `--surface-policy-safe-area`, which publishes `0px`\n * rather than omitting itself.\n */\nfunction responsiveMaxWidthToMarginCssValue(value: SurfacePolicy['geometry'] extends infer Geometry ? Geometry extends { responsiveMaxWidth?: infer MaxWidth } ? MaxWidth : never : never): string | undefined {\n switch (value) {\n case 'sm':\n case 'md':\n case 'lg':\n case 'xl':\n case 'measure':\n case 'centered-readable':\n case 'content':\n return 'auto';\n case 'full':\n case 'none':\n default:\n // Explicit reset, never `undefined` — see the note above on inheritance.\n return '0px';\n }\n}\n\nfunction embeddedTablePaddingToCssValue(value: SurfacePolicy['composition'] extends infer Composition ? Composition extends { embeddedTablePadding?: infer Padding } ? Padding : never : never): string | undefined {\n switch (value) {\n case 'strip':\n return '0px';\n case 'preserve':\n default:\n // `preserve` is also the neutral: \"no opinion\" means keep the surface's own\n // inline padding. The Tailwind rule spells the same intent as a fallback\n // (`var(--…-embedded-table-padding-inline, var(--…-padding-inline))`), but a\n // fallback only fires when the var is UNSET — an inherited value that IS set\n // wins over it, so a table-bearing surface nested inside a `strip` ancestor\n // would have inherited `0px`. Emitting it here is what actually shadows that.\n return 'var(--surface-policy-padding-inline)';\n }\n}\n\nfunction framingModeToAttribute(value: SurfacePolicy['nesting'] extends infer Nesting ? Nesting extends { framingMode?: infer Framing } ? Framing : never : never): string | undefined {\n switch (value) {\n case 'always':\n case 'when-orphan':\n case 'never':\n return value;\n default:\n return undefined;\n }\n}\n\nfunction nestedRadiusStrategyToAttribute(value: SurfacePolicy['nesting'] extends infer Nesting ? Nesting extends { nestedRadiusStrategy?: infer Strategy } ? Strategy : never : never): string | undefined {\n switch (value) {\n case 'inherit':\n case 'one-tier-tighter':\n case 'fixed':\n return value;\n default:\n return undefined;\n }\n}\n\nfunction firstChildEdgeStrategyToAttribute(value: SurfacePolicy['nesting'] extends infer Nesting ? Nesting extends { firstChildEdgeStrategy?: infer Strategy } ? Strategy : never : never): string | undefined {\n switch (value) {\n case 'collapse':\n case 'preserve':\n return value;\n default:\n return undefined;\n }\n}\n\nfunction dividerStrategyToAttribute(value: SurfacePolicy['nesting'] extends infer Nesting ? Nesting extends { dividerStrategy?: infer Strategy } ? Strategy : never : never): string | undefined {\n switch (value) {\n case 'border':\n case 'gap':\n case 'rule':\n case 'none':\n return value;\n default:\n return undefined;\n }\n}\n\nfunction nestedRadiusToCssValue(\n strategy: SurfacePolicy['nesting'] extends infer Nesting ? Nesting extends { nestedRadiusStrategy?: infer Strategy } ? Strategy : never : never,\n isNestedInFramedAncestor: boolean,\n): string | undefined {\n if (!isNestedInFramedAncestor) {\n return undefined;\n }\n\n switch (strategy) {\n case 'inherit':\n return 'inherit';\n case 'one-tier-tighter':\n return 'var(--surface-nested-radius-one-tier-tighter, var(--radius-lg, 0.5rem))';\n case 'fixed':\n default:\n return undefined;\n }\n}\n\nfunction selectableSemanticsToAttribute(value: SurfacePolicy['interactiveState'] extends infer InteractiveState ? InteractiveState extends { selectableSemantics?: infer Semantics } ? Semantics : never : never): string | undefined {\n switch (value) {\n case 'wrap-children':\n case 'self-selectable':\n case 'forbidden':\n return value;\n default:\n return undefined;\n }\n}\n\nfunction gestureOptInToAttribute(value: SurfacePolicy['interactiveState'] extends infer InteractiveState ? InteractiveState extends { gestureOptIn?: infer OptIn } ? OptIn : never : never): string | undefined {\n switch (value) {\n case 'self':\n case 'children':\n case 'none':\n return value;\n default:\n return undefined;\n }\n}\n\nfunction landmarkRoleToAttribute(value: SurfacePolicy['a11y'] extends infer A11y ? A11y extends { landmarkRole?: infer Role } ? Role : never : never): React.AriaRole | undefined {\n switch (value) {\n case 'region':\n case 'dialog':\n case 'alertdialog':\n case 'complementary':\n case 'navigation':\n case 'status':\n case 'main':\n return value;\n case 'none':\n case 'reset':\n default:\n return undefined;\n }\n}\n\nfunction shouldActivateStackLayout(gap: string | undefined): boolean {\n return Boolean(gap && gap !== 'none');\n}\n\n/**\n * Stack-layout channel for `display` / `flex-direction`, on both the surface\n * root (`--surface-policy-display`) and its slots (`--surface-policy-slot-display`).\n *\n * The NON-stacking branch MUST return a concrete value rather than `undefined`,\n * for two independent reasons — the second one shipped as a live defect:\n *\n * 1. Policy vars are CSS custom properties, so they INHERIT. An omitted value is\n * not \"no opinion\", it is \"adopt the nearest ancestor surface's opinion\". A\n * non-stacking surface nested inside a stacking one therefore picked up\n * `display: flex; flex-direction: column` from its ancestor — the same\n * inheritance class as the `--surface-policy-responsive-max-width-margin`\n * defect (see `responsiveMaxWidthToMarginCssValue`).\n * 2. Even with NO ancestor to inherit from, omitting the var does not leave the\n * element alone. `display: var(--surface-policy-display)` with the var unset\n * is invalid at computed-value time, which resolves to `unset` — and `display`\n * is not inherited, so that is its INITIAL value, `inline`. The base-layer\n * declaration still wins the cascade, so it overrides the UA stylesheet's\n * `div { display: block }`. Measured on the running app: the framework's own\n * `PrimaryContentWidthBoundary` (a SHELL surface whose `containment.gap` is\n * flattened to `'none'` precisely so it stays \"a plain block\") computed\n * `display: inline`, which made its `max-inline-size` cap and `margin-inline:\n * auto` centering inert — `max-inline-size` does not apply to non-replaced\n * inline boxes. With a 400px cap forced inside a 976px container the surface\n * measured 976px wide; publishing `block` measured 400px, centered. The entire\n * page-content width cap was silently doing nothing.\n *\n * A CSS-wide keyword cannot express \"no opinion\" here: `revert-layer`, `revert`\n * and `initial` were each measured through this var in the running app and all\n * three behaved exactly like the unset case (`display: inline`), because a\n * CSS-wide keyword arriving via `var()` substitution is not honoured as one. A\n * consumer-side fallback (`var(--x, block)`) does not help either — an inherited\n * value that IS set wins over the fallback, which is the whole of reason 1.\n *\n * `block` / `row` are the initial-ish values a block container wants. Utility\n * classes still win: they live in a later cascade layer than this base rule.\n */\nfunction stackDisplayCssValue(isStacking: boolean): string {\n return isStacking ? 'flex' : 'block';\n}\n\n/** Companion to {@link stackDisplayCssValue} — see its note on explicit neutrals. */\nfunction stackFlexDirectionCssValue(isStacking: boolean): string {\n return isStacking ? 'column' : 'row';\n}\n\n/**\n * Every var below is read by a Tailwind base-layer rule that can match a NESTED\n * surface, so any `undefined` here is not \"neutral\" — it is \"inherit the nearest\n * ancestor surface's value\". The vars were enumerated against that rule set\n * (`src/tailwind/index.ts`) and classified; the residuals are recorded so the next\n * author does not have to re-derive them:\n *\n * - SAFE BY CONSTRUCTION — `safe-area` always emits `0px`/`env()`;\n * `child-adaptive-gap` is gated by the same boolean as the\n * `data-surface-child-adaptive-density` attribute its selector requires, so the\n * read is unreachable when the emission is absent.\n * - BENIGN — `numeric-align`, `text-wrap` and `overflow-wrap` drive CSS properties\n * that are THEMSELVES inherited, so inheriting the var is equivalent to\n * inheriting the property. No shadowing needed.\n * - INERT — `framing-mode`, `nested-radius{,-strategy}`, `first-child-edge-strategy`,\n * `divider-strategy`, `selectable-semantics` and `gesture-opt-in` are republished\n * as `--surface-*` custom properties that NOTHING reads (verified repo-wide);\n * behaviour is driven by the matching `data-surface-*` attributes, which do not\n * inherit.\n * - LATENT — the remaining tier-mapped vars (`padding-*`, `overflow`, `max-height`,\n * `gap`, `z-tier`, the per-slot gaps, `action-alignment{,-mobile}`) can only reach\n * their `undefined` branch through an override that sets the slot explicitly to\n * `undefined`: every variant's framework default populates them, and both `'reset'`\n * and `'inherit'` resolve to a concrete value (`'reset'` additionally logs an error\n * when it cannot). Left as-is rather than changed blind — if one becomes reachable,\n * it belongs in the explicit-neutral treatment above.\n */\nfunction buildSurfacePolicyStyle(policy: SurfacePolicy): SurfaceStyle {\n const containment = policy.containment;\n const nesting = policy.nesting;\n const content = policy.content;\n const interactiveState = policy.interactiveState;\n const geometry = policy.geometry;\n const stacking = policy.stacking;\n const composition = policy.composition;\n const shouldStack = shouldActivateStackLayout(containment?.gap);\n\n return {\n '--surface-policy-display': stackDisplayCssValue(shouldStack),\n '--surface-policy-flex-direction': stackFlexDirectionCssValue(shouldStack),\n '--surface-policy-padding-block': paddingTierToCssValue(containment?.paddingBlock),\n '--surface-policy-padding-inline': paddingTierToCssValue(containment?.paddingInline),\n '--surface-policy-overflow': containment?.overflow,\n '--surface-policy-max-height': containment?.maxHeight === 'none' ? 'none' : containment?.maxHeight,\n '--surface-policy-gap': gapTierToCssValue(containment?.gap),\n '--surface-policy-header-gap': gapTierToCssValue(containment?.slotGap?.header ?? containment?.gap),\n '--surface-policy-body-gap': gapTierToCssValue(containment?.slotGap?.body ?? containment?.gap),\n '--surface-policy-footer-gap': gapTierToCssValue(containment?.slotGap?.footer ?? containment?.gap),\n '--surface-policy-framing-mode': framingModeToAttribute(nesting?.framingMode),\n '--surface-policy-nested-radius-strategy': nestedRadiusStrategyToAttribute(nesting?.nestedRadiusStrategy),\n '--surface-policy-first-child-edge-strategy': firstChildEdgeStrategyToAttribute(nesting?.firstChildEdgeStrategy),\n '--surface-policy-divider-strategy': dividerStrategyToAttribute(nesting?.dividerStrategy),\n '--surface-policy-z-tier': stackingTierToCssValue(stacking?.stackingTier),\n '--surface-policy-numeric-align': numericAlignmentToCssValue(content?.numericAlignment),\n '--surface-policy-text-wrap': textWrapToCssValue(content?.wrapStrategy),\n '--surface-policy-overflow-wrap': overlongTokenStrategyToCssValue(content?.overlongTokenStrategy),\n '--surface-policy-safe-area': geometry?.safeAreaPadding ? 'env(safe-area-inset-bottom)' : '0px',\n '--surface-policy-action-alignment': actionAlignmentToCssValue(geometry?.actionAlignment),\n '--surface-policy-action-alignment-mobile': actionAlignmentToMobileCssValue(geometry?.actionAlignment),\n '--surface-policy-responsive-max-width': responsiveMaxWidthToCssValue(geometry?.responsiveMaxWidth),\n '--surface-policy-responsive-max-width-margin': responsiveMaxWidthToMarginCssValue(geometry?.responsiveMaxWidth),\n '--surface-policy-embedded-table-padding-inline': embeddedTablePaddingToCssValue(composition?.embeddedTablePadding),\n '--surface-policy-child-adaptive-gap': composition?.childAdaptiveDensity ? 'var(--sp-field)' : undefined,\n '--surface-policy-selectable-semantics': selectableSemanticsToAttribute(interactiveState?.selectableSemantics),\n '--surface-policy-gesture-opt-in': gestureOptInToAttribute(interactiveState?.gestureOptIn),\n };\n}\n\n/**\n * Policy families whose values DO produce CSS — `containment` (padding,\n * overflow, max-height, gap), `nesting` (framing mode → frame visibility),\n * `content` (text-wrap, numeric alignment), `geometry` (responsiveMaxWidth →\n * max-inline-size), `stacking` (z-tier). The remaining families (`a11y`,\n * `interactiveState`, `autoRender`, `skeleton`, `composition`) emit only ARIA\n * attributes / behavioral data-attributes / runtime hooks and CANNOT\n * visually conflict with a Tailwind utility class.\n *\n * Restricting the collision check to these families eliminates a noisy\n * false-positive: a Surface that overrides ONLY `a11y.landmarkRole`\n * (e.g., the public shell using `NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE`)\n * combined with an `overflow-auto` Tailwind utility on the same node is NOT\n * a collision — `a11y.landmarkRole` does not emit any CSS property the\n * utility could fight with.\n */\nconst VISUALLY_IMPACTFUL_POLICY_FAMILIES: ReadonlySet<string> = new Set([\n 'containment',\n 'nesting',\n 'content',\n 'geometry',\n 'stacking',\n]);\n\nfunction hasPolicyDrivenOverride(policyOverride: DeepPartialSurfacePolicy | undefined): boolean {\n if (!policyOverride) {\n return false;\n }\n\n return Object.entries(policyOverride).some(([familyName, familyOverride]) => {\n if (!VISUALLY_IMPACTFUL_POLICY_FAMILIES.has(familyName)) {\n return false;\n }\n return familyOverride !== undefined\n && familyOverride !== null\n && typeof familyOverride === 'object'\n && Object.keys(familyOverride).length > 0;\n });\n}\n\nfunction usePolicyChannelCollisionWarning(\n className: string | undefined,\n childClassName: string | undefined,\n policyOverride: DeepPartialSurfacePolicy | undefined,\n emitPolicyVars: boolean,\n): void {\n const warnedRef = React.useRef(false);\n\n // The collision this warns about — a className layout utility (padding / gap /\n // flex / …) visually overriding a policy-driven CSS var while children still\n // read the policy value — can only happen when the policy vars are actually\n // emitted. A surface with `emitPolicyVars={false}` (e.g. ContentSection section\n // chrome, which owns layout via recipe classes and may set only a\n // `nesting.framingMode` override) emits NO vars, so there is nothing for a\n // utility to override. Skipping the check here removes a guaranteed\n // false-positive on every such surface.\n if (!emitPolicyVars) {\n return;\n }\n\n const conflictingClassName = [className, childClassName].filter(Boolean).join(' ');\n\n if (\n process.env.NODE_ENV !== 'production'\n && !warnedRef.current\n && conflictingClassName\n && hasPolicyDrivenOverride(policyOverride)\n && POLICY_DRIVEN_UTILITY_PREFIXES.test(conflictingClassName)\n ) {\n warnedRef.current = true;\n logger.warn('[Surface] className utilities can visually override policyOverride while child policy context still sees the policy value', {\n className: conflictingClassName,\n });\n }\n}\n\nfunction mergeSurfaceStyle(\n policy: SurfacePolicy,\n materialStyle: React.CSSProperties | undefined,\n style: React.CSSProperties | undefined,\n emitPolicyVars: boolean,\n rendersOwnFrame: boolean,\n nestedRadius: string | undefined,\n): SurfaceStyle | React.CSSProperties | undefined {\n if (!emitPolicyVars) {\n return { ...materialStyle, ...style };\n }\n\n return {\n ...buildSurfacePolicyStyle(policy),\n '--surface-policy-nested-radius': nestedRadius,\n borderWidth: rendersOwnFrame ? undefined : '0px',\n boxShadow: rendersOwnFrame ? undefined : 'none',\n borderRadius: nestedRadius ? 'var(--surface-policy-nested-radius)' : undefined,\n ...materialStyle,\n ...style,\n } as SurfaceStyle;\n}\n\nconst SurfaceRoot = React.forwardRef<HTMLDivElement, SurfaceProps>(function SurfaceRoot(\n {\n variant = SurfaceVariant.BASE,\n materialRoleOverride,\n policyOverride,\n asChild = false,\n emitPolicyVars = true,\n modal = false,\n a11yManagedByHost = false,\n className,\n style,\n children,\n role,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'data-slot': _dataSlot,\n 'data-surface': _dataSurface,\n ...props\n },\n ref,\n): React.JSX.Element {\n const {\n getComposedClasses,\n getMaterialProfile,\n getRecipe,\n getSurfacePolicy,\n } = useUI();\n // Optional calls keep the primitive resilient in isolated tests and custom\n // host adapters that provide the legacy minimal UI context surface.\n const visualRecipe = getRecipe?.(UIBehavior.SURFACE, variant);\n const visualRecipeClasses = getComposedClasses?.(UIBehavior.SURFACE, variant);\n const materialProfile = getMaterialProfile?.(materialRoleOverride ?? visualRecipe?.material);\n const parentContext = React.useContext(SurfacePolicyContext);\n const policy = React.useMemo(\n () => getSurfacePolicy\n ? getSurfacePolicy(variant, policyOverride, parentContext?.policy)\n : mergeSurfacePolicy(\n FRAMEWORK_DEFAULT_SURFACE_POLICIES[variant],\n undefined,\n undefined,\n policyOverride,\n {\n variant,\n parentPolicy: parentContext?.policy,\n logger,\n },\n ),\n [getSurfacePolicy, parentContext?.policy, policyOverride, variant],\n );\n const [headerId, setHeaderId] = React.useState<string | undefined>();\n const registerHeaderId = React.useCallback((id: string): void => {\n setHeaderId(id);\n }, []);\n const unregisterHeaderId = React.useCallback((id: string): void => {\n setHeaderId((current) => (current === id ? undefined : current));\n }, []);\n const headerRegistration = React.useMemo(\n () => ({ headerId, registerHeaderId, unregisterHeaderId }),\n [headerId, registerHeaderId, unregisterHeaderId],\n );\n const contextValue = React.useMemo(\n () => computeSurfacePolicyContextValue(variant, policy, parentContext, headerRegistration),\n [headerRegistration, parentContext, policy, variant],\n );\n const isNestedInFramedAncestor = Boolean(parentContext?.isInFramedAncestor);\n const nearestFramedAncestorVariant = isNestedInFramedAncestor\n ? parentContext?.nearestFramedAncestorVariant ?? undefined\n : undefined;\n const nestedRadius = nestedRadiusToCssValue(policy.nesting?.nestedRadiusStrategy, isNestedInFramedAncestor);\n\n const childClassName = asChild && React.isValidElement<{ className?: string }>(children)\n ? children.props.className\n : undefined;\n usePolicyChannelCollisionWarning(className, childClassName, policyOverride, emitPolicyVars);\n const Comp = asChild ? Slot : 'div';\n const surfaceNodeRef = React.useRef<HTMLElement | null>(null);\n const materialRuntime = useMaterialRuntime(materialProfile, surfaceNodeRef);\n const composedRef = React.useCallback((node: HTMLElement | null): void => {\n surfaceNodeRef.current = node;\n\n if (typeof ref === 'function') {\n ref(node as HTMLDivElement | null);\n return;\n }\n\n if (ref) {\n ref.current = node as HTMLDivElement | null;\n }\n }, [ref]);\n const resolvedRole = role ?? landmarkRoleToAttribute(policy.a11y?.landmarkRole);\n const resolvedAriaLabelledBy = ariaLabelledBy\n ?? (policy.a11y?.labelStrategy === 'from-header' ? headerId : undefined);\n\n /*\n * The a11y attributes Surface puts on the merged element — and under `a11yManagedByHost`, the\n * KEYS it must not put there at all.\n *\n * An `asChild` Surface is a Slot: its props are merged into the host primitive's, and the host\n * then spreads that merged object AFTER its own attributes. So a key present with an\n * `undefined` value does not mean \"Surface contributes nothing\" — it means \"delete whatever the\n * host set\". Radix `Dialog.Content` renders\n * `<div role=\"dialog\" aria-labelledby={context.titleId} {...contentProps}>`, so Surface passing\n * `aria-labelledby: undefined` REMOVED the accessible name the host had just wired from its own\n * `Dialog.Title` (#632).\n *\n * Measured on the command palette: `aria-describedby` survived (Surface never emits it) while\n * `aria-labelledby` was absent, with a correctly-rendered `Dialog.Title` sitting inside carrying\n * the very id that should have been referenced. The defect hid behind the common path —\n * `OverlayContainer` passes `aria-labelledby` EXPLICITLY, so its dialogs were named and only\n * overlays relying on the host's own title wiring lost it.\n *\n * Hence: when the host owns a11y, forward only what the CALLER explicitly supplied, as present\n * keys, and omit the rest entirely rather than passing `undefined`. Synthesizing a value is\n * equally wrong here — Surface's own `landmarkRole` would overwrite an `alertdialog` role with\n * `dialog`, which is the same defect one attribute over.\n */\n const hostManagedA11yAttributes = {\n ...(role !== undefined ? { role } : {}),\n ...(ariaLabel !== undefined ? { 'aria-label': ariaLabel } : {}),\n ...(ariaLabelledBy !== undefined ? { 'aria-labelledby': ariaLabelledBy } : {}),\n };\n /*\n * Without `a11yManagedByHost`, Surface contributes the role and name IT resolved — but still only the keys\n * it has a VALUE for. The same Slot rule applies here as above: an `undefined` key deletes the host's\n * attribute. Emitting `role: undefined` stripped the role from every wrapped Radix primitive that sets one\n * and was not given the opt-in — dropdown and context menus (`menu`), select (`listbox`), menubar\n * (`menubar`), tabs content (`tabpanel`) — measured on the running app as a dropdown with no `role=\"menu\"`\n * (#1903). A role or name Surface DOES resolve (an explicit prop, a policy landmark) still wins over the\n * host's, exactly as before; only the deletion is gone. Pinned in `Surface.host-role.test.tsx`.\n */\n const a11yAttributes = a11yManagedByHost\n ? hostManagedA11yAttributes\n : {\n ...(resolvedRole !== undefined ? { role: resolvedRole } : {}),\n ...(ariaLabel !== undefined ? { 'aria-label': ariaLabel } : {}),\n ...(resolvedAriaLabelledBy !== undefined ? { 'aria-labelledby': resolvedAriaLabelledBy } : {}),\n };\n const shouldActivateFocusTrap = !a11yManagedByHost\n && (policy.a11y?.focusTrap === 'on-mount' || (modal && policy.a11y?.focusTrap === 'when-modal'));\n const shouldActivateScrollContainment = !a11yManagedByHost\n && modal\n && policy.a11y?.scrollContainment === 'lock-body';\n\n useSurfaceFocusTrap(surfaceNodeRef, shouldActivateFocusTrap);\n useSurfaceBodyScrollLock(shouldActivateScrollContainment);\n React.useEffect(() => {\n if (\n process.env.NODE_ENV === 'production'\n // When the host primitive owns a11y (Radix Dialog / Drawer / Sheet /\n // AlertDialog), the accessible name comes from the host's own title\n // (e.g. `Dialog.Title` → `aria-labelledby`), NOT from a `Surface.Header`.\n // The `from-header` strategy is structurally inactive here, so this\n // warning would fire for EVERY host-managed overlay regardless of whether\n // it is correctly titled. Defer labelling validation to the host — Radix\n // emits its own (authoritative) warning when the title is genuinely absent.\n || a11yManagedByHost\n || policy.a11y?.labelStrategy !== 'from-header'\n || !resolvedRole\n || ariaLabel\n || ariaLabelledBy\n || headerId\n ) {\n return undefined;\n }\n\n const timeout = window.setTimeout(() => {\n logger.warn('[Surface] labelStrategy \"from-header\" produced an unlabelled landmark surface', {\n variant,\n role: resolvedRole,\n });\n }, 0);\n\n return () => window.clearTimeout(timeout);\n }, [a11yManagedByHost, ariaLabel, ariaLabelledBy, headerId, policy.a11y?.labelStrategy, resolvedRole, variant]);\n const policyStyleAttrs = emitPolicyVars\n ? {\n 'data-slot': 'surface',\n 'data-surface': '',\n /*\n * The width tier this surface applies, announced so the CAP is legible in the DOM.\n *\n * Width is a chain — a zone boundary, a pane, a layout root's reading measure — and until\n * every level said which tier it was applying, diagnosing \"why is this narrow\" meant walking\n * the ancestors reading computed styles, which is how the wrong cap got fixed twice in a row.\n * With this, `document.querySelectorAll('[data-inline-size-tier]')` names every cap in the\n * page and its owner in one call. Absent when no tier is declared, so it marks the elements\n * that actually decide something rather than every surface.\n */\n 'data-inline-size-tier': policy.geometry?.responsiveMaxWidth,\n }\n : {};\n const surfaceElement = (\n <Comp\n ref={composedRef}\n {...props}\n {...policyStyleAttrs}\n data-material-kind={materialRuntime['data-material-kind']}\n data-material-tier={materialRuntime['data-material-tier']}\n data-material-variant={materialRuntime['data-material-variant']}\n data-material-depth={materialRuntime['data-material-depth']}\n data-material-composition={materialRuntime['data-material-composition']}\n data-material-group={materialRuntime['data-material-group']}\n data-material-refractive-budget={materialRuntime['data-material-refractive-budget']}\n tabIndex={shouldActivateFocusTrap && props.tabIndex == null ? -1 : props.tabIndex}\n data-surface-focus-trap={shouldActivateFocusTrap ? '' : undefined}\n data-surface-scroll-containment={shouldActivateScrollContainment ? '' : undefined}\n data-surface-framing-mode={emitPolicyVars ? framingModeToAttribute(policy.nesting?.framingMode) : undefined}\n data-surface-frame={emitPolicyVars ? (contextValue.rendersOwnFrame ? 'rendered' : 'suppressed') : undefined}\n data-surface-in-framed-ancestor={emitPolicyVars && isNestedInFramedAncestor ? '' : undefined}\n data-surface-nearest-framed-ancestor={emitPolicyVars ? nearestFramedAncestorVariant : undefined}\n data-surface-nested-radius-strategy={emitPolicyVars ? nestedRadiusStrategyToAttribute(policy.nesting?.nestedRadiusStrategy) : undefined}\n data-surface-first-child-edge-strategy={emitPolicyVars ? firstChildEdgeStrategyToAttribute(policy.nesting?.firstChildEdgeStrategy) : undefined}\n data-surface-divider-strategy={emitPolicyVars ? dividerStrategyToAttribute(policy.nesting?.dividerStrategy) : undefined}\n data-surface-selectable-semantics={emitPolicyVars ? selectableSemanticsToAttribute(policy.interactiveState?.selectableSemantics) : undefined}\n data-surface-gesture-opt-in={emitPolicyVars ? gestureOptInToAttribute(policy.interactiveState?.gestureOptIn) : undefined}\n data-surface-child-adaptive-density={emitPolicyVars && policy.composition?.childAdaptiveDensity === true ? '' : undefined}\n data-surface-selection-column-aware={emitPolicyVars && policy.composition?.selectionColumnAware === true ? '' : undefined}\n {...a11yAttributes}\n data-surface-variant={variant}\n className={cn(visualRecipeClasses, className)}\n style={mergeSurfaceStyle(policy, materialRuntime.style, style, emitPolicyVars, contextValue.rendersOwnFrame, nestedRadius)}\n >\n {children}\n </Comp>\n );\n const shouldWrapErrorBoundary = policy.interactiveState?.errorBoundary === 'self';\n\n return (\n <SurfacePolicyContext.Provider value={contextValue}>\n {shouldWrapErrorBoundary ? (\n <SurfaceErrorBoundary>{surfaceElement}</SurfaceErrorBoundary>\n ) : surfaceElement}\n </SurfacePolicyContext.Provider>\n );\n});\n\nSurfaceRoot.displayName = 'Surface';\n\nfunction surfaceSlotStyle(\n slot: 'header' | 'body' | 'footer',\n policy: SurfacePolicy,\n style: React.CSSProperties | undefined,\n): React.CSSProperties {\n const gap = policy.containment?.slotGap?.[slot] ?? policy.containment?.gap;\n const shouldStack = shouldActivateStackLayout(gap);\n\n return {\n '--surface-policy-slot-display': stackDisplayCssValue(shouldStack),\n '--surface-policy-slot-flex-direction': stackFlexDirectionCssValue(shouldStack),\n [`--surface-policy-${slot}-gap`]: gapTierToCssValue(gap),\n ...style,\n } as React.CSSProperties;\n}\n\nexport const SurfaceHeader = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(function SurfaceHeader(\n { className, id, style, ...props },\n ref,\n): React.JSX.Element {\n const policy = useSurfacePolicy();\n const surfaceContext = React.useContext(SurfacePolicyContext);\n const registerHeaderId = surfaceContext?.registerHeaderId;\n const unregisterHeaderId = surfaceContext?.unregisterHeaderId;\n const generatedId = React.useId();\n const resolvedId = id ?? generatedId;\n\n React.useEffect(() => {\n registerHeaderId?.(resolvedId);\n return () => unregisterHeaderId?.(resolvedId);\n }, [registerHeaderId, resolvedId, unregisterHeaderId]);\n\n return (\n <div\n ref={ref}\n id={resolvedId}\n data-slot=\"surface-header\"\n className={cn(className)}\n style={surfaceSlotStyle('header', policy, style)}\n {...props}\n />\n );\n});\n\nSurfaceHeader.displayName = 'Surface.Header';\n\nexport const SurfaceBody = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(function SurfaceBody(\n { className, style, ...props },\n ref,\n): React.JSX.Element {\n const policy = useSurfacePolicy();\n\n return (\n <div\n ref={ref}\n data-slot=\"surface-body\"\n className={cn(className)}\n style={surfaceSlotStyle('body', policy, style)}\n {...props}\n />\n );\n});\n\nSurfaceBody.displayName = 'Surface.Body';\n\nexport const SurfaceFooter = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(function SurfaceFooter(\n { className, style, ...props },\n ref,\n): React.JSX.Element {\n const policy = useSurfacePolicy();\n const gap = policy.containment?.slotGap?.footer ?? policy.containment?.gap;\n const shouldStack = shouldActivateStackLayout(gap);\n const shouldAlignActions = Boolean(policy.geometry?.actionAlignment && policy.geometry.actionAlignment !== 'inherit');\n\n return (\n <div\n ref={ref}\n data-slot=\"surface-footer\"\n className={cn(className)}\n style={{\n '--surface-policy-slot-display': stackDisplayCssValue(shouldStack || shouldAlignActions),\n '--surface-policy-slot-flex-direction': stackFlexDirectionCssValue(shouldStack),\n '--surface-policy-footer-gap': gapTierToCssValue(gap),\n '--surface-policy-action-alignment': shouldAlignActions\n ? actionAlignmentToCssValue(policy.geometry?.actionAlignment)\n : undefined,\n '--surface-policy-action-alignment-mobile': shouldAlignActions\n ? actionAlignmentToMobileCssValue(policy.geometry?.actionAlignment)\n : undefined,\n ...style,\n } as React.CSSProperties}\n {...props}\n />\n );\n});\n\nSurfaceFooter.displayName = 'Surface.Footer';\n\nexport const SurfaceAction = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(function SurfaceAction(\n { className, ...props },\n ref,\n): React.JSX.Element {\n return (\n <div\n ref={ref}\n data-slot=\"surface-action\"\n className={cn(className)}\n {...props}\n />\n );\n});\n\nSurfaceAction.displayName = 'Surface.Action';\n\nexport const Surface = Object.assign(SurfaceRoot, {\n Header: SurfaceHeader,\n Body: SurfaceBody,\n Footer: SurfaceFooter,\n Action: SurfaceAction,\n});\n"]}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * AppPage_AgentWorkOverrideRateSettings — the Settings Hub "Override rate" panel (#1599).
3
+ *
4
+ * How often the current organization's experts override its agents' proposals over a window, grouped by agent,
5
+ * tool, case or reviewer. It calls `POST /agent-work/override-rate` for the organization the caller is working in
6
+ * (the route admits an organization-wide administrator of that organization, or the application's super
7
+ * administrator) and renders each group's counts:
8
+ *
9
+ * - accepted, accepted with modifications and rejected are the decisions the rate is computed from;
10
+ * - `notDecided` (lapsed, withdrawn, requester authority lapsed) is shown beside them and never enters the rate;
11
+ * - a group in which nothing was decided has a `null` rate, rendered as "nothing decided", never as 0 %: a rate of
12
+ * zero decisions is not a rate of zero.
13
+ *
14
+ * Bespoke rather than a resource surface because the rate is not a row: it is an aggregate the engine computes on
15
+ * request from the decision records.
16
+ *
17
+ * i18n: `useI18n({ component })` requests this panel's namespace, the panel renders nothing until the bundle is
18
+ * ready, and every word is a key in `AppPage_AgentWorkOverrideRateSettings.labels.ts`.
19
+ */
20
+ import React from 'react';
21
+ import { AgentWorkDecisionGrouping, type AgentWorkOverrideRateGroup } from '@wildo-ai/saas-models';
22
+ /**
23
+ * The windows the panel offers, in days. Each is within the route's `AGENT_WORK_MAX_WINDOW_DAYS` (366), which the
24
+ * request schema refuses beyond.
25
+ */
26
+ export declare enum AgentWorkOverrideRateWindow {
27
+ LAST_30_DAYS = 30,
28
+ LAST_90_DAYS = 90,
29
+ LAST_365_DAYS = 365
30
+ }
31
+ /** The label key of a grouping's tab and column heading. One key per `AgentWorkDecisionGrouping` member. */
32
+ export declare function groupingLabelKey(grouping: AgentWorkDecisionGrouping): string;
33
+ /** The label key of a window button. One key per `AgentWorkOverrideRateWindow` member. */
34
+ export declare function windowLabelKey(window: AgentWorkOverrideRateWindow): string;
35
+ /** The group's identity under the chosen grouping, or `undefined` when the records carried none (shown as such). */
36
+ export declare function overrideRateGroupKey(group: AgentWorkOverrideRateGroup, grouping: AgentWorkDecisionGrouping): string | undefined;
37
+ /**
38
+ * The rate as a reader should see it. `null` is "nothing was decided in this group" and is returned as `null` so
39
+ * the caller renders that sentence; it is never formatted as 0 %.
40
+ */
41
+ export declare function formatOverrideRate(rate: number | null, locale: string): string | null;
42
+ export declare const AppPage_AgentWorkOverrideRateSettings: React.FC;
43
+ //# sourceMappingURL=AppPage_AgentWorkOverrideRateSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppPage_AgentWorkOverrideRateSettings.d.ts","sourceRoot":"","sources":["../../../../../src/components/settings/AppPage_AgentWorkOverrideRateSettings.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAoD,MAAM,OAAO,CAAC;AAEzE,OAAO,EAAE,yBAAyB,EAAmD,KAAK,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAapJ;;;GAGG;AACH,oBAAY,2BAA2B;IACrC,YAAY,KAAK;IACjB,YAAY,KAAK;IACjB,aAAa,MAAM;CACpB;AAQD,4GAA4G;AAC5G,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,MAAM,CAE5E;AACD,0FAA0F;AAC1F,wBAAgB,cAAc,CAAC,MAAM,EAAE,2BAA2B,GAAG,MAAM,CAE1E;AAED,oHAAoH;AACpH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,0BAA0B,EAAE,QAAQ,EAAE,yBAAyB,GAAG,MAAM,GAAG,SAAS,CAW/H;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGrF;AAED,eAAO,MAAM,qCAAqC,EAAE,KAAK,CAAC,EA0HzD,CAAC"}
@@ -0,0 +1,129 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * AppPage_AgentWorkOverrideRateSettings — the Settings Hub "Override rate" panel (#1599).
4
+ *
5
+ * How often the current organization's experts override its agents' proposals over a window, grouped by agent,
6
+ * tool, case or reviewer. It calls `POST /agent-work/override-rate` for the organization the caller is working in
7
+ * (the route admits an organization-wide administrator of that organization, or the application's super
8
+ * administrator) and renders each group's counts:
9
+ *
10
+ * - accepted, accepted with modifications and rejected are the decisions the rate is computed from;
11
+ * - `notDecided` (lapsed, withdrawn, requester authority lapsed) is shown beside them and never enters the rate;
12
+ * - a group in which nothing was decided has a `null` rate, rendered as "nothing decided", never as 0 %: a rate of
13
+ * zero decisions is not a rate of zero.
14
+ *
15
+ * Bespoke rather than a resource surface because the rate is not a row: it is an aggregate the engine computes on
16
+ * request from the decision records.
17
+ *
18
+ * i18n: `useI18n({ component })` requests this panel's namespace, the panel renders nothing until the bundle is
19
+ * ready, and every word is a key in `AppPage_AgentWorkOverrideRateSettings.labels.ts`.
20
+ */
21
+ import { useCallback, useEffect, useMemo, useState } from 'react';
22
+ import { ButtonSize, FrontendComponentType } from '@wildo-ai/presets-components-models';
23
+ import { AgentWorkDecisionGrouping, isWildoBackendError } from '@wildo-ai/saas-models';
24
+ import { Card, CardContent } from '../../components/sections/card.js';
25
+ import { Tabs, TabsList, TabsTrigger } from '../../components/sections/tabs.js';
26
+ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '../../components/sections/table.js';
27
+ import { Button, ButtonVariants_Variant } from '../../components/actions/button.js';
28
+ import { Text } from '../../components/typography/text.js';
29
+ import { Alert, AlertDescription } from '../../components/overlays/containers/alert.js';
30
+ import { useI18n } from '../../core/i18n/useI18n.js';
31
+ import { useUserOrgs } from '../../core/security/useUserOrgs.js';
32
+ import { getManualCallsHttpClient } from '../../core/requests/wildo-http-client-manual-calls.frontend.service.js';
33
+ const COMPONENT = FrontendComponentType.APP_LAYOUTS_AGENT_WORK_OVERRIDE_RATE_SETTINGS;
34
+ /**
35
+ * The windows the panel offers, in days. Each is within the route's `AGENT_WORK_MAX_WINDOW_DAYS` (366), which the
36
+ * request schema refuses beyond.
37
+ */
38
+ export var AgentWorkOverrideRateWindow;
39
+ (function (AgentWorkOverrideRateWindow) {
40
+ AgentWorkOverrideRateWindow[AgentWorkOverrideRateWindow["LAST_30_DAYS"] = 30] = "LAST_30_DAYS";
41
+ AgentWorkOverrideRateWindow[AgentWorkOverrideRateWindow["LAST_90_DAYS"] = 90] = "LAST_90_DAYS";
42
+ AgentWorkOverrideRateWindow[AgentWorkOverrideRateWindow["LAST_365_DAYS"] = 365] = "LAST_365_DAYS";
43
+ })(AgentWorkOverrideRateWindow || (AgentWorkOverrideRateWindow = {}));
44
+ const WINDOWS = [
45
+ AgentWorkOverrideRateWindow.LAST_30_DAYS,
46
+ AgentWorkOverrideRateWindow.LAST_90_DAYS,
47
+ AgentWorkOverrideRateWindow.LAST_365_DAYS,
48
+ ];
49
+ const GROUPINGS = Object.values(AgentWorkDecisionGrouping);
50
+ /** The label key of a grouping's tab and column heading. One key per `AgentWorkDecisionGrouping` member. */
51
+ export function groupingLabelKey(grouping) {
52
+ return `groupBy_${grouping}`;
53
+ }
54
+ /** The label key of a window button. One key per `AgentWorkOverrideRateWindow` member. */
55
+ export function windowLabelKey(window) {
56
+ return `window_${window}`;
57
+ }
58
+ /** The group's identity under the chosen grouping, or `undefined` when the records carried none (shown as such). */
59
+ export function overrideRateGroupKey(group, grouping) {
60
+ switch (grouping) {
61
+ case AgentWorkDecisionGrouping.AGENT:
62
+ return group.key.agentRef;
63
+ case AgentWorkDecisionGrouping.TOOL:
64
+ return group.key.toolName;
65
+ case AgentWorkDecisionGrouping.CASE:
66
+ return group.key.caseRef ? `${group.key.caseRef.resourceType}:${group.key.caseRef.resourceId}` : undefined;
67
+ case AgentWorkDecisionGrouping.DECIDER:
68
+ return group.key.deciderUserId;
69
+ }
70
+ }
71
+ /**
72
+ * The rate as a reader should see it. `null` is "nothing was decided in this group" and is returned as `null` so
73
+ * the caller renders that sentence; it is never formatted as 0 %.
74
+ */
75
+ export function formatOverrideRate(rate, locale) {
76
+ if (rate === null)
77
+ return null;
78
+ return new Intl.NumberFormat(locale, { style: 'percent', maximumFractionDigits: 1 }).format(rate);
79
+ }
80
+ export const AppPage_AgentWorkOverrideRateSettings = () => {
81
+ const { tComponent, isReady, currentLanguage } = useI18n({ component: COMPONENT });
82
+ const { currentOrganizationId } = useUserOrgs();
83
+ const t = useCallback((key) => tComponent(COMPONENT, key), [tComponent]);
84
+ const [grouping, setGrouping] = useState(AgentWorkDecisionGrouping.AGENT);
85
+ const [windowDays, setWindowDays] = useState(AgentWorkOverrideRateWindow.LAST_90_DAYS);
86
+ const [summary, setSummary] = useState(null);
87
+ const [loading, setLoading] = useState(true);
88
+ const [error, setError] = useState(null);
89
+ useEffect(() => {
90
+ // No organization selected: nothing to ask for, and the panel says so rather than waiting forever.
91
+ if (!currentOrganizationId) {
92
+ setError(null);
93
+ setLoading(false);
94
+ return;
95
+ }
96
+ let cancelled = false;
97
+ const to = new Date();
98
+ const from = new Date(to.getTime() - windowDays * 24 * 60 * 60_000);
99
+ setLoading(true);
100
+ setError(null);
101
+ getManualCallsHttpClient()
102
+ .summarizeAgentWorkOverrideRate({ from: from.toISOString(), to: to.toISOString(), groupBy: grouping, organizationId: currentOrganizationId })
103
+ .then((result) => { if (!cancelled)
104
+ setSummary(result); })
105
+ .catch((caught) => {
106
+ if (cancelled)
107
+ return;
108
+ // The panel says it failed whatever the cause (a refused request included), so it never sits on "loading";
109
+ // a backend error is then rethrown for the application's error surfacing.
110
+ setError(t('errorGeneric'));
111
+ if (isWildoBackendError(caught))
112
+ throw caught;
113
+ })
114
+ .finally(() => { if (!cancelled)
115
+ setLoading(false); });
116
+ return () => { cancelled = true; };
117
+ }, [currentOrganizationId, grouping, windowDays, t]);
118
+ const groups = useMemo(() => summary?.groupBy === grouping ? summary.groups : [], [summary, grouping]);
119
+ // A regroup keeps the previous grouping's summary until the new one arrives: that is loading, not "no decisions".
120
+ const awaitingGrouping = loading || (summary !== null && summary.groupBy !== grouping);
121
+ if (!isReady)
122
+ return null;
123
+ return (_jsxs("div", { className: "flex flex-col gap-section", children: [_jsx("h3", { className: "text-base font-semibold tracking-tight", children: t('pageTitle') }), _jsx(Text, { className: "text-sm text-muted-foreground", children: t('pageDescription') }), _jsxs("div", { className: "flex flex-wrap items-center justify-between gap-section", children: [_jsx(Tabs, { value: grouping, onValueChange: (value) => setGrouping(value), children: _jsx(TabsList, { children: GROUPINGS.map((value) => (_jsx(TabsTrigger, { value: value, "data-ref": value, children: t(groupingLabelKey(value)) }, value))) }) }), _jsx("div", { className: "flex gap-element", role: "group", "aria-label": t('windowLabel'), children: WINDOWS.map((value) => (_jsx(Button, { size: ButtonSize.SM, variant: value === windowDays ? ButtonVariants_Variant.DEFAULT : ButtonVariants_Variant.OUTLINE, "aria-pressed": value === windowDays, onClick: () => setWindowDays(value), children: t(windowLabelKey(value)) }, value))) })] }), error && (_jsx(Alert, { variant: "destructive", children: _jsx(AlertDescription, { children: error }) })), !(error && groups.length === 0) && (_jsx(Card, { children: _jsx(CardContent, { className: "p-card", children: !currentOrganizationId ? (_jsx(Text, { className: "text-sm text-muted-foreground", children: t('noOrganization') })) : awaitingGrouping && groups.length === 0 ? (_jsx(Text, { className: "text-sm text-muted-foreground", children: t('loading') })) : groups.length === 0 ? (_jsx(Text, { className: "text-sm text-muted-foreground", children: t('empty') })) : (_jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: t(groupingLabelKey(grouping)) }), _jsx(TableHead, { children: t('columnAccepted') }), _jsx(TableHead, { children: t('columnAcceptedWithModifications') }), _jsx(TableHead, { children: t('columnRejected') }), _jsx(TableHead, { children: t('columnNotDecided') }), _jsx(TableHead, { children: t('columnOverrideRate') })] }) }), _jsx(TableBody, { children: groups.map((group, index) => {
124
+ const key = overrideRateGroupKey(group, grouping);
125
+ const rate = formatOverrideRate(group.overrideRate, currentLanguage);
126
+ return (_jsxs(TableRow, { children: [_jsx(TableCell, { children: key ?? t('unattributed') }), _jsx(TableCell, { children: group.accepted }), _jsx(TableCell, { children: group.acceptedWithModifications }), _jsx(TableCell, { children: group.rejected }), _jsx(TableCell, { children: group.notDecided }), _jsx(TableCell, { children: rate ?? t('nothingDecided') })] }, key ?? `unattributed-${index}`));
127
+ }) })] })) }) }))] }));
128
+ };
129
+ //# sourceMappingURL=AppPage_AgentWorkOverrideRateSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppPage_AgentWorkOverrideRateSettings.js","sourceRoot":"","sources":["../../../../../src/components/settings/AppPage_AgentWorkOverrideRateSettings.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * AppPage_AgentWorkOverrideRateSettings — the Settings Hub \"Override rate\" panel (#1599).\n *\n * How often the current organization's experts override its agents' proposals over a window, grouped by agent,\n * tool, case or reviewer. It calls `POST /agent-work/override-rate` for the organization the caller is working in\n * (the route admits an organization-wide administrator of that organization, or the application's super\n * administrator) and renders each group's counts:\n *\n * - accepted, accepted with modifications and rejected are the decisions the rate is computed from;\n * - `notDecided` (lapsed, withdrawn, requester authority lapsed) is shown beside them and never enters the rate;\n * - a group in which nothing was decided has a `null` rate, rendered as \"nothing decided\", never as 0 %: a rate of\n * zero decisions is not a rate of zero.\n *\n * Bespoke rather than a resource surface because the rate is not a row: it is an aggregate the engine computes on\n * request from the decision records.\n *\n * i18n: `useI18n({ component })` requests this panel's namespace, the panel renders nothing until the bundle is\n * ready, and every word is a key in `AppPage_AgentWorkOverrideRateSettings.labels.ts`.\n */\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { ButtonSize, FrontendComponentType } from '@wildo-ai/presets-components-models';\nimport { AgentWorkDecisionGrouping, isWildoBackendError, type AgentWorkOverrideRate, type AgentWorkOverrideRateGroup } from '@wildo-ai/saas-models';\nimport { Card, CardContent } from '~wildo-frontend-lib/components/sections/card';\nimport { Tabs, TabsList, TabsTrigger } from '~wildo-frontend-lib/components/sections/tabs';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '~wildo-frontend-lib/components/sections/table';\nimport { Button, ButtonVariants_Variant } from '~wildo-frontend-lib/components/actions/button';\nimport { Text } from '~wildo-frontend-lib/components/typography/text';\nimport { Alert, AlertDescription } from '~wildo-frontend-lib/components/overlays/containers/alert';\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { useUserOrgs } from '~wildo-frontend-lib/core/security/useUserOrgs';\nimport { getManualCallsHttpClient } from '~wildo-frontend-lib/core/requests/wildo-http-client-manual-calls.frontend.service';\n\nconst COMPONENT = FrontendComponentType.APP_LAYOUTS_AGENT_WORK_OVERRIDE_RATE_SETTINGS;\n\n/**\n * The windows the panel offers, in days. Each is within the route's `AGENT_WORK_MAX_WINDOW_DAYS` (366), which the\n * request schema refuses beyond.\n */\nexport enum AgentWorkOverrideRateWindow {\n LAST_30_DAYS = 30,\n LAST_90_DAYS = 90,\n LAST_365_DAYS = 365,\n}\nconst WINDOWS: readonly AgentWorkOverrideRateWindow[] = [\n AgentWorkOverrideRateWindow.LAST_30_DAYS,\n AgentWorkOverrideRateWindow.LAST_90_DAYS,\n AgentWorkOverrideRateWindow.LAST_365_DAYS,\n];\nconst GROUPINGS: readonly AgentWorkDecisionGrouping[] = Object.values(AgentWorkDecisionGrouping);\n\n/** The label key of a grouping's tab and column heading. One key per `AgentWorkDecisionGrouping` member. */\nexport function groupingLabelKey(grouping: AgentWorkDecisionGrouping): string {\n return `groupBy_${grouping}`;\n}\n/** The label key of a window button. One key per `AgentWorkOverrideRateWindow` member. */\nexport function windowLabelKey(window: AgentWorkOverrideRateWindow): string {\n return `window_${window}`;\n}\n\n/** The group's identity under the chosen grouping, or `undefined` when the records carried none (shown as such). */\nexport function overrideRateGroupKey(group: AgentWorkOverrideRateGroup, grouping: AgentWorkDecisionGrouping): string | undefined {\n switch (grouping) {\n case AgentWorkDecisionGrouping.AGENT:\n return group.key.agentRef;\n case AgentWorkDecisionGrouping.TOOL:\n return group.key.toolName;\n case AgentWorkDecisionGrouping.CASE:\n return group.key.caseRef ? `${group.key.caseRef.resourceType}:${group.key.caseRef.resourceId}` : undefined;\n case AgentWorkDecisionGrouping.DECIDER:\n return group.key.deciderUserId;\n }\n}\n\n/**\n * The rate as a reader should see it. `null` is \"nothing was decided in this group\" and is returned as `null` so\n * the caller renders that sentence; it is never formatted as 0 %.\n */\nexport function formatOverrideRate(rate: number | null, locale: string): string | null {\n if (rate === null) return null;\n return new Intl.NumberFormat(locale, { style: 'percent', maximumFractionDigits: 1 }).format(rate);\n}\n\nexport const AppPage_AgentWorkOverrideRateSettings: React.FC = () => {\n const { tComponent, isReady, currentLanguage } = useI18n({ component: COMPONENT });\n const { currentOrganizationId } = useUserOrgs();\n const t = useCallback((key: string) => tComponent(COMPONENT, key), [tComponent]);\n\n const [grouping, setGrouping] = useState<AgentWorkDecisionGrouping>(AgentWorkDecisionGrouping.AGENT);\n const [windowDays, setWindowDays] = useState<AgentWorkOverrideRateWindow>(AgentWorkOverrideRateWindow.LAST_90_DAYS);\n const [summary, setSummary] = useState<AgentWorkOverrideRate | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n // No organization selected: nothing to ask for, and the panel says so rather than waiting forever.\n if (!currentOrganizationId) {\n setError(null);\n setLoading(false);\n return;\n }\n let cancelled = false;\n const to = new Date();\n const from = new Date(to.getTime() - windowDays * 24 * 60 * 60_000);\n setLoading(true);\n setError(null);\n getManualCallsHttpClient()\n .summarizeAgentWorkOverrideRate({ from: from.toISOString(), to: to.toISOString(), groupBy: grouping, organizationId: currentOrganizationId })\n .then((result) => { if (!cancelled) setSummary(result); })\n .catch((caught: unknown) => {\n if (cancelled) return;\n // The panel says it failed whatever the cause (a refused request included), so it never sits on \"loading\";\n // a backend error is then rethrown for the application's error surfacing.\n setError(t('errorGeneric'));\n if (isWildoBackendError(caught)) throw caught;\n })\n .finally(() => { if (!cancelled) setLoading(false); });\n return () => { cancelled = true; };\n }, [currentOrganizationId, grouping, windowDays, t]);\n\n const groups = useMemo(() => summary?.groupBy === grouping ? summary.groups : [], [summary, grouping]);\n // A regroup keeps the previous grouping's summary until the new one arrives: that is loading, not \"no decisions\".\n const awaitingGrouping = loading || (summary !== null && summary.groupBy !== grouping);\n\n if (!isReady) return null;\n\n return (\n <div className=\"flex flex-col gap-section\">\n <h3 className=\"text-base font-semibold tracking-tight\">{t('pageTitle')}</h3>\n <Text className=\"text-sm text-muted-foreground\">{t('pageDescription')}</Text>\n\n <div className=\"flex flex-wrap items-center justify-between gap-section\">\n <Tabs value={grouping} onValueChange={(value) => setGrouping(value as AgentWorkDecisionGrouping)}>\n <TabsList>\n {GROUPINGS.map((value) => (\n <TabsTrigger key={value} value={value} data-ref={value}>{t(groupingLabelKey(value))}</TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n <div className=\"flex gap-element\" role=\"group\" aria-label={t('windowLabel')}>\n {WINDOWS.map((value) => (\n <Button\n key={value}\n size={ButtonSize.SM}\n variant={value === windowDays ? ButtonVariants_Variant.DEFAULT : ButtonVariants_Variant.OUTLINE}\n aria-pressed={value === windowDays}\n onClick={() => setWindowDays(value)}\n >\n {t(windowLabelKey(value))}\n </Button>\n ))}\n </div>\n </div>\n\n {error && (\n <Alert variant=\"destructive\">\n <AlertDescription>{error}</AlertDescription>\n </Alert>\n )}\n\n {/* A failed fetch with nothing to show for this grouping says so in the alert above, and nothing else. */}\n {!(error && groups.length === 0) && (\n <Card>\n <CardContent className=\"p-card\">\n {!currentOrganizationId ? (\n <Text className=\"text-sm text-muted-foreground\">{t('noOrganization')}</Text>\n ) : awaitingGrouping && groups.length === 0 ? (\n <Text className=\"text-sm text-muted-foreground\">{t('loading')}</Text>\n ) : groups.length === 0 ? (\n <Text className=\"text-sm text-muted-foreground\">{t('empty')}</Text>\n ) : (\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>{t(groupingLabelKey(grouping))}</TableHead>\n <TableHead>{t('columnAccepted')}</TableHead>\n <TableHead>{t('columnAcceptedWithModifications')}</TableHead>\n <TableHead>{t('columnRejected')}</TableHead>\n <TableHead>{t('columnNotDecided')}</TableHead>\n <TableHead>{t('columnOverrideRate')}</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {groups.map((group, index) => {\n const key = overrideRateGroupKey(group, grouping);\n const rate = formatOverrideRate(group.overrideRate, currentLanguage);\n return (\n <TableRow key={key ?? `unattributed-${index}`}>\n <TableCell>{key ?? t('unattributed')}</TableCell>\n <TableCell>{group.accepted}</TableCell>\n <TableCell>{group.acceptedWithModifications}</TableCell>\n <TableCell>{group.rejected}</TableCell>\n <TableCell>{group.notDecided}</TableCell>\n <TableCell>{rate ?? t('nothingDecided')}</TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n )}\n </CardContent>\n </Card>\n )}\n </div>\n );\n};\n"]}
@@ -0,0 +1,3 @@
1
+ import { type LabellingUnitaryDef } from '@wildo-ai/presets-components-models';
2
+ export declare const AppLayoutsAgentWorkOverrideRateSettingsLabels: LabellingUnitaryDef[];
3
+ //# sourceMappingURL=AppPage_AgentWorkOverrideRateSettings.labels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppPage_AgentWorkOverrideRateSettings.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAU7C,eAAO,MAAM,6CAA6C,EAAE,mBAAmB,EAsB9E,CAAC"}