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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (777) hide show
  1. package/dist/esm/components/actions/action-bar.d.ts +15 -0
  2. package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
  3. package/dist/esm/components/actions/action-bar.js +15 -0
  4. package/dist/esm/components/actions/action-bar.js.map +1 -1
  5. package/dist/esm/components/ai-elements/decision/approval.d.ts +97 -7
  6. package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
  7. package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
  8. package/dist/esm/components/app/AppLayout_AuthenticatedRoute.d.ts.map +1 -1
  9. package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js +8 -3
  10. package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js.map +1 -1
  11. package/dist/esm/components/auth/Auth_EnrollmentRequired.d.ts.map +1 -1
  12. package/dist/esm/components/auth/Auth_EnrollmentRequired.js +5 -1
  13. package/dist/esm/components/auth/Auth_EnrollmentRequired.js.map +1 -1
  14. package/dist/esm/components/auth/Auth_Main.d.ts.map +1 -1
  15. package/dist/esm/components/auth/Auth_Main.js +1 -4
  16. package/dist/esm/components/auth/Auth_Main.js.map +1 -1
  17. package/dist/esm/components/auth/Auth_Register.d.ts.map +1 -1
  18. package/dist/esm/components/auth/Auth_Register.js +1 -3
  19. package/dist/esm/components/auth/Auth_Register.js.map +1 -1
  20. package/dist/esm/components/auth/StepUpAuthDialog.d.ts +7 -0
  21. package/dist/esm/components/auth/StepUpAuthDialog.d.ts.map +1 -1
  22. package/dist/esm/components/auth/StepUpAuthDialog.js +13 -7
  23. package/dist/esm/components/auth/StepUpAuthDialog.js.map +1 -1
  24. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.d.ts.map +1 -1
  25. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js +32 -33
  26. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js.map +1 -1
  27. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.d.ts.map +1 -1
  28. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js +18 -20
  29. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js.map +1 -1
  30. package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.d.ts.map +1 -1
  31. package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js +2 -3
  32. package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js.map +1 -1
  33. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.d.ts +13 -16
  34. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.d.ts.map +1 -1
  35. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.js +18 -15
  36. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.js.map +1 -1
  37. package/dist/esm/components/billing/billing-invoice-history.js +2 -2
  38. package/dist/esm/components/billing/billing-invoice-history.js.map +1 -1
  39. package/dist/esm/components/billing/billing-portal-link.js +2 -2
  40. package/dist/esm/components/billing/billing-portal-link.js.map +1 -1
  41. package/dist/esm/components/billing/billing-pricing-table.d.ts +33 -1
  42. package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
  43. package/dist/esm/components/billing/billing-pricing-table.js +34 -5
  44. package/dist/esm/components/billing/billing-pricing-table.js.map +1 -1
  45. package/dist/esm/components/billing/billing-subscription-status.js +2 -2
  46. package/dist/esm/components/billing/billing-subscription-status.js.map +1 -1
  47. package/dist/esm/components/billing/billing-usage-dashboard.d.ts +2 -0
  48. package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
  49. package/dist/esm/components/billing/billing-usage-dashboard.js +1 -0
  50. package/dist/esm/components/billing/billing-usage-dashboard.js.map +1 -1
  51. package/dist/esm/components/data-display/DisplayField.d.ts.map +1 -1
  52. package/dist/esm/components/data-display/DisplayField.js +15 -1
  53. package/dist/esm/components/data-display/DisplayField.js.map +1 -1
  54. package/dist/esm/components/data-display/DisplayFieldArray.d.ts.map +1 -1
  55. package/dist/esm/components/data-display/DisplayFieldArray.js +11 -0
  56. package/dist/esm/components/data-display/DisplayFieldArray.js.map +1 -1
  57. package/dist/esm/components/data-display/DisplayFieldEditable.d.ts.map +1 -1
  58. package/dist/esm/components/data-display/DisplayFieldEditable.js +2 -2
  59. package/dist/esm/components/data-display/DisplayFieldEditable.js.map +1 -1
  60. package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts +12 -2
  61. package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts.map +1 -1
  62. package/dist/esm/components/data-display/DisplayFieldEditableArray.js +3 -2
  63. package/dist/esm/components/data-display/DisplayFieldEditableArray.js.map +1 -1
  64. package/dist/esm/components/data-display/DisplayFieldReadOnly.d.ts.map +1 -1
  65. package/dist/esm/components/data-display/DisplayFieldReadOnly.js +2 -2
  66. package/dist/esm/components/data-display/DisplayFieldReadOnly.js.map +1 -1
  67. package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.d.ts.map +1 -1
  68. package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js +8 -2
  69. package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js.map +1 -1
  70. package/dist/esm/components/data-display/DisplayValueDispatcher.d.ts.map +1 -1
  71. package/dist/esm/components/data-display/DisplayValueDispatcher.js +18 -4
  72. package/dist/esm/components/data-display/DisplayValueDispatcher.js.map +1 -1
  73. package/dist/esm/components/data-display/ResourceAutomaticDisplayer.d.ts.map +1 -1
  74. package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js +61 -3
  75. package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js.map +1 -1
  76. package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts +7 -5
  77. package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts.map +1 -1
  78. package/dist/esm/components/data-display/ResourceSummaryDisplayer.js.map +1 -1
  79. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts +11 -1
  80. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts.map +1 -1
  81. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js +36 -11
  82. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js.map +1 -1
  83. package/dist/esm/components/data-display/display-field-resolved-props.d.ts +6 -0
  84. package/dist/esm/components/data-display/display-field-resolved-props.d.ts.map +1 -1
  85. package/dist/esm/components/data-display/display-field-resolved-props.js.map +1 -1
  86. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts +23 -0
  87. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts.map +1 -0
  88. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js +35 -0
  89. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js.map +1 -0
  90. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts +47 -0
  91. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts.map +1 -0
  92. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js +124 -0
  93. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js.map +1 -0
  94. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.d.ts +8 -0
  95. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.d.ts.map +1 -0
  96. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js +46 -0
  97. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js.map +1 -0
  98. package/dist/esm/components/feedback/resource-empty-state.d.ts +21 -8
  99. package/dist/esm/components/feedback/resource-empty-state.d.ts.map +1 -1
  100. package/dist/esm/components/feedback/resource-empty-state.js +56 -26
  101. package/dist/esm/components/feedback/resource-empty-state.js.map +1 -1
  102. package/dist/esm/components/flows-actors/approval.d.ts +29 -7
  103. package/dist/esm/components/flows-actors/approval.d.ts.map +1 -1
  104. package/dist/esm/components/flows-actors/approval.js +231 -101
  105. package/dist/esm/components/flows-actors/approval.js.map +1 -1
  106. package/dist/esm/components/flows-actors/approval.labels.d.ts.map +1 -1
  107. package/dist/esm/components/flows-actors/approval.labels.js +57 -0
  108. package/dist/esm/components/flows-actors/approval.labels.js.map +1 -1
  109. package/dist/esm/components/flows-actors/system-catalog.d.ts.map +1 -1
  110. package/dist/esm/components/flows-actors/system-catalog.js +4 -4
  111. package/dist/esm/components/flows-actors/system-catalog.js.map +1 -1
  112. package/dist/esm/components/flows-actors/system-catalog.labels.d.ts.map +1 -1
  113. package/dist/esm/components/flows-actors/system-catalog.labels.js +0 -5
  114. package/dist/esm/components/flows-actors/system-catalog.labels.js.map +1 -1
  115. package/dist/esm/components/form/Form.d.ts +2 -2
  116. package/dist/esm/components/form/Form.js +2 -2
  117. package/dist/esm/components/form/Form.js.map +1 -1
  118. package/dist/esm/components/form/automated/AutomatedArrayField.d.ts +28 -3
  119. package/dist/esm/components/form/automated/AutomatedArrayField.d.ts.map +1 -1
  120. package/dist/esm/components/form/automated/AutomatedArrayField.js +43 -14
  121. package/dist/esm/components/form/automated/AutomatedArrayField.js.map +1 -1
  122. package/dist/esm/components/form/automated/FormField.d.ts +3 -0
  123. package/dist/esm/components/form/automated/FormField.d.ts.map +1 -1
  124. package/dist/esm/components/form/automated/FormField.js +60 -21
  125. package/dist/esm/components/form/automated/FormField.js.map +1 -1
  126. package/dist/esm/components/form/automated/FormFieldArray.d.ts +6 -3
  127. package/dist/esm/components/form/automated/FormFieldArray.d.ts.map +1 -1
  128. package/dist/esm/components/form/automated/FormFieldArray.js +3 -2
  129. package/dist/esm/components/form/automated/FormFieldArray.js.map +1 -1
  130. package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts +5 -4
  131. package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts.map +1 -1
  132. package/dist/esm/components/form/automated/ResourceAutomatedForm.js +148 -55
  133. package/dist/esm/components/form/automated/ResourceAutomatedForm.js.map +1 -1
  134. package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts +30 -0
  135. package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts.map +1 -1
  136. package/dist/esm/components/form/automated/ResourceFormActionsContext.js +30 -1
  137. package/dist/esm/components/form/automated/ResourceFormActionsContext.js.map +1 -1
  138. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.d.ts +79 -0
  139. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.d.ts.map +1 -0
  140. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.js +203 -0
  141. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.js.map +1 -0
  142. package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts +12 -0
  143. package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts.map +1 -1
  144. package/dist/esm/components/form/automated/automated-form-submit.utils.js +11 -0
  145. package/dist/esm/components/form/automated/automated-form-submit.utils.js.map +1 -1
  146. package/dist/esm/components/form/chromes/FormFieldChrome.d.ts.map +1 -1
  147. package/dist/esm/components/form/chromes/FormFieldChrome.js +2 -2
  148. package/dist/esm/components/form/chromes/FormFieldChrome.js.map +1 -1
  149. package/dist/esm/components/form/combobox.d.ts +7 -0
  150. package/dist/esm/components/form/combobox.d.ts.map +1 -1
  151. package/dist/esm/components/form/combobox.js.map +1 -1
  152. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +1 -1
  153. package/dist/esm/components/form/controls/form-field-checkbox-group.js +13 -0
  154. package/dist/esm/components/form/controls/form-field-checkbox-group.js.map +1 -1
  155. package/dist/esm/components/form/fields/form-field-address.d.ts +58 -0
  156. package/dist/esm/components/form/fields/form-field-address.d.ts.map +1 -1
  157. package/dist/esm/components/form/fields/form-field-address.js +34 -6
  158. package/dist/esm/components/form/fields/form-field-address.js.map +1 -1
  159. package/dist/esm/components/form/fields/form-field-address.labels.d.ts.map +1 -1
  160. package/dist/esm/components/form/fields/form-field-address.labels.js +60 -1
  161. package/dist/esm/components/form/fields/form-field-address.labels.js.map +1 -1
  162. package/dist/esm/components/form/fields/form-field-file.d.ts +0 -12
  163. package/dist/esm/components/form/fields/form-field-file.d.ts.map +1 -1
  164. package/dist/esm/components/form/fields/form-field-file.js +34 -13
  165. package/dist/esm/components/form/fields/form-field-file.js.map +1 -1
  166. package/dist/esm/components/form/fields/form-field-file.labels.d.ts.map +1 -1
  167. package/dist/esm/components/form/fields/form-field-file.labels.js +46 -0
  168. package/dist/esm/components/form/fields/form-field-file.labels.js.map +1 -1
  169. package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts +73 -0
  170. package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts.map +1 -0
  171. package/dist/esm/components/form/fields/form-field-string-organization-role.js +64 -0
  172. package/dist/esm/components/form/fields/form-field-string-organization-role.js.map +1 -0
  173. package/dist/esm/components/form/fields/form-field-string.d.ts.map +1 -1
  174. package/dist/esm/components/form/fields/form-field-string.js +8 -1
  175. package/dist/esm/components/form/fields/form-field-string.js.map +1 -1
  176. package/dist/esm/components/form/fields/form-field-string.labels.d.ts.map +1 -1
  177. package/dist/esm/components/form/fields/form-field-string.labels.js +4 -0
  178. package/dist/esm/components/form/fields/form-field-string.labels.js.map +1 -1
  179. package/dist/esm/components/form/validation-errors/FormErrorSummary.js +1 -1
  180. package/dist/esm/components/form/validation-errors/FormErrorSummary.js.map +1 -1
  181. package/dist/esm/components/form/validation-errors/resolver-error-nesting.d.ts +31 -0
  182. package/dist/esm/components/form/validation-errors/resolver-error-nesting.d.ts.map +1 -0
  183. package/dist/esm/components/form/validation-errors/resolver-error-nesting.js +81 -0
  184. package/dist/esm/components/form/validation-errors/resolver-error-nesting.js.map +1 -0
  185. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.d.ts +14 -1
  186. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.d.ts.map +1 -1
  187. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.js +14 -0
  188. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.js.map +1 -1
  189. package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts +22 -0
  190. package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts.map +1 -1
  191. package/dist/esm/components/form/validation-errors/zod-issue-resolver.js +1 -22
  192. package/dist/esm/components/form/validation-errors/zod-issue-resolver.js.map +1 -1
  193. package/dist/esm/components/layout/resizable.d.ts +11 -0
  194. package/dist/esm/components/layout/resizable.d.ts.map +1 -1
  195. package/dist/esm/components/layout/resizable.js.map +1 -1
  196. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.d.ts +11 -1
  197. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.d.ts.map +1 -1
  198. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.js +15 -3
  199. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.js.map +1 -1
  200. package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.d.ts +2 -2
  201. package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.d.ts.map +1 -1
  202. package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.js.map +1 -1
  203. package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.d.ts +2 -2
  204. package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js +2 -2
  205. package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js.map +1 -1
  206. package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js +18 -20
  207. package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js.map +1 -1
  208. package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.d.ts.map +1 -1
  209. package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js +7 -1
  210. package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js.map +1 -1
  211. package/dist/esm/components/navigation/app-level/useMenuBarBehavior.d.ts.map +1 -1
  212. package/dist/esm/components/navigation/app-level/useMenuBarBehavior.js +4 -1
  213. package/dist/esm/components/navigation/app-level/useMenuBarBehavior.js.map +1 -1
  214. package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.d.ts.map +1 -1
  215. package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js +18 -2
  216. package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js.map +1 -1
  217. package/dist/esm/components/navigation/app-level/useSidebarBehavior.d.ts.map +1 -1
  218. package/dist/esm/components/navigation/app-level/useSidebarBehavior.js +82 -10
  219. package/dist/esm/components/navigation/app-level/useSidebarBehavior.js.map +1 -1
  220. package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts +2 -2
  221. package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts.map +1 -1
  222. package/dist/esm/components/navigation/app-level/useStatusBarBehavior.js.map +1 -1
  223. package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.d.ts.map +1 -1
  224. package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js +8 -1
  225. package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js.map +1 -1
  226. package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts +8 -2
  227. package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts.map +1 -1
  228. package/dist/esm/components/resources/ResourceCollectionToolbar.js +6 -2
  229. package/dist/esm/components/resources/ResourceCollectionToolbar.js.map +1 -1
  230. package/dist/esm/components/resources/ResourceLayout_Breadcrumb.d.ts.map +1 -1
  231. package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js +31 -16
  232. package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js.map +1 -1
  233. package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.d.ts.map +1 -1
  234. package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js +23 -8
  235. package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js.map +1 -1
  236. package/dist/esm/components/resources/ResourceLayout_ContainerNested.js +2 -2
  237. package/dist/esm/components/resources/ResourceLayout_ContainerNested.js.map +1 -1
  238. package/dist/esm/components/resources/ResourceLayout_Header.d.ts +13 -0
  239. package/dist/esm/components/resources/ResourceLayout_Header.d.ts.map +1 -1
  240. package/dist/esm/components/resources/ResourceLayout_Header.js +55 -28
  241. package/dist/esm/components/resources/ResourceLayout_Header.js.map +1 -1
  242. package/dist/esm/components/resources/ResourceLayout_List.d.ts.map +1 -1
  243. package/dist/esm/components/resources/ResourceLayout_List.js +41 -20
  244. package/dist/esm/components/resources/ResourceLayout_List.js.map +1 -1
  245. package/dist/esm/components/resources/ResourceLayout_List.labels.d.ts.map +1 -1
  246. package/dist/esm/components/resources/ResourceLayout_List.labels.js +1 -2
  247. package/dist/esm/components/resources/ResourceLayout_List.labels.js.map +1 -1
  248. package/dist/esm/components/resources/ResourceLayout_Read.d.ts +9 -4
  249. package/dist/esm/components/resources/ResourceLayout_Read.d.ts.map +1 -1
  250. package/dist/esm/components/resources/ResourceLayout_Read.js +30 -11
  251. package/dist/esm/components/resources/ResourceLayout_Read.js.map +1 -1
  252. package/dist/esm/components/resources/ResourceLayout_ReadSummary.d.ts.map +1 -1
  253. package/dist/esm/components/resources/ResourceLayout_ReadSummary.js +4 -2
  254. package/dist/esm/components/resources/ResourceLayout_ReadSummary.js.map +1 -1
  255. package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.d.ts.map +1 -1
  256. package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js +6 -2
  257. package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js.map +1 -1
  258. package/dist/esm/components/resources/ResourceLayout_Search.d.ts.map +1 -1
  259. package/dist/esm/components/resources/ResourceLayout_Search.js +30 -14
  260. package/dist/esm/components/resources/ResourceLayout_Search.js.map +1 -1
  261. package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.d.ts.map +1 -1
  262. package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js +14 -198
  263. package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js.map +1 -1
  264. package/dist/esm/components/resources/ResourceLayout_Update.d.ts +2 -2
  265. package/dist/esm/components/resources/ResourceLayout_Update.js +2 -2
  266. package/dist/esm/components/resources/ResourceLayout_Update.js.map +1 -1
  267. package/dist/esm/components/resources/ResourceListItemRenderer.d.ts.map +1 -1
  268. package/dist/esm/components/resources/ResourceListItemRenderer.js +69 -39
  269. package/dist/esm/components/resources/ResourceListItemRenderer.js.map +1 -1
  270. package/dist/esm/components/resources/ResourceOperationActionDropdown.d.ts +32 -0
  271. package/dist/esm/components/resources/ResourceOperationActionDropdown.d.ts.map +1 -0
  272. package/dist/esm/components/resources/ResourceOperationActionDropdown.js +130 -0
  273. package/dist/esm/components/resources/ResourceOperationActionDropdown.js.map +1 -0
  274. package/dist/esm/components/resources/collection-create-placement.utils.d.ts +32 -0
  275. package/dist/esm/components/resources/collection-create-placement.utils.d.ts.map +1 -0
  276. package/dist/esm/components/resources/collection-create-placement.utils.js +37 -0
  277. package/dist/esm/components/resources/collection-create-placement.utils.js.map +1 -0
  278. package/dist/esm/components/resources/embeds/RelatedResourcePreview.d.ts.map +1 -1
  279. package/dist/esm/components/resources/embeds/RelatedResourcePreview.js +5 -1
  280. package/dist/esm/components/resources/embeds/RelatedResourcePreview.js.map +1 -1
  281. package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts +8 -1
  282. package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts.map +1 -1
  283. package/dist/esm/components/resources/embeds/RelatedResourceSections.js +49 -2
  284. package/dist/esm/components/resources/embeds/RelatedResourceSections.js.map +1 -1
  285. package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts +22 -0
  286. package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts.map +1 -1
  287. package/dist/esm/components/resources/embeds/ResourceEmbeds.js +85 -2
  288. package/dist/esm/components/resources/embeds/ResourceEmbeds.js.map +1 -1
  289. package/dist/esm/components/resources/resourceLayout.utils.d.ts +14 -0
  290. package/dist/esm/components/resources/resourceLayout.utils.d.ts.map +1 -1
  291. package/dist/esm/components/resources/resourceLayout.utils.js +22 -0
  292. package/dist/esm/components/resources/resourceLayout.utils.js.map +1 -1
  293. package/dist/esm/components/resources/skeleton/ArrayField.d.ts.map +1 -1
  294. package/dist/esm/components/resources/skeleton/ArrayField.js +3 -0
  295. package/dist/esm/components/resources/skeleton/ArrayField.js.map +1 -1
  296. package/dist/esm/components/resources/skeleton/FormLayout.d.ts.map +1 -1
  297. package/dist/esm/components/resources/skeleton/FormLayout.js +33 -1
  298. package/dist/esm/components/resources/skeleton/FormLayout.js.map +1 -1
  299. package/dist/esm/components/resources/skeleton/ObjectScope.d.ts.map +1 -1
  300. package/dist/esm/components/resources/skeleton/ObjectScope.js +3 -0
  301. package/dist/esm/components/resources/skeleton/ObjectScope.js.map +1 -1
  302. package/dist/esm/components/resources/skeleton/Section.d.ts +12 -0
  303. package/dist/esm/components/resources/skeleton/Section.d.ts.map +1 -1
  304. package/dist/esm/components/resources/skeleton/Section.js +28 -2
  305. package/dist/esm/components/resources/skeleton/Section.js.map +1 -1
  306. package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts +70 -0
  307. package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts.map +1 -1
  308. package/dist/esm/components/resources/skeleton/SectionFieldsContext.js +157 -1
  309. package/dist/esm/components/resources/skeleton/SectionFieldsContext.js.map +1 -1
  310. package/dist/esm/components/resources/skeleton/WizardLayout.d.ts +6 -0
  311. package/dist/esm/components/resources/skeleton/WizardLayout.d.ts.map +1 -1
  312. package/dist/esm/components/resources/skeleton/WizardLayout.js +13 -2
  313. package/dist/esm/components/resources/skeleton/WizardLayout.js.map +1 -1
  314. package/dist/esm/components/resources/skeleton/WizardStep.d.ts.map +1 -1
  315. package/dist/esm/components/resources/skeleton/WizardStep.js +2 -1
  316. package/dist/esm/components/resources/skeleton/WizardStep.js.map +1 -1
  317. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.d.ts.map +1 -1
  318. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js +61 -15
  319. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js.map +1 -1
  320. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts +24 -2
  321. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts.map +1 -1
  322. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js +69 -1
  323. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js.map +1 -1
  324. package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.d.ts.map +1 -1
  325. package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js +18 -19
  326. package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js.map +1 -1
  327. package/dist/esm/components/sections/ContentSectionContainer.d.ts.map +1 -1
  328. package/dist/esm/components/sections/ContentSectionContainer.js +5 -4
  329. package/dist/esm/components/sections/ContentSectionContainer.js.map +1 -1
  330. package/dist/esm/components/sections/stepper.d.ts +5 -0
  331. package/dist/esm/components/sections/stepper.d.ts.map +1 -1
  332. package/dist/esm/components/sections/stepper.js.map +1 -1
  333. package/dist/esm/components/sections/surface.d.ts.map +1 -1
  334. package/dist/esm/components/sections/surface.js +12 -3
  335. package/dist/esm/components/sections/surface.js.map +1 -1
  336. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts +43 -0
  337. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts.map +1 -0
  338. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js +129 -0
  339. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js.map +1 -0
  340. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.d.ts +3 -0
  341. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.d.ts.map +1 -0
  342. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js +34 -0
  343. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js.map +1 -0
  344. package/dist/esm/components/settings/AppPage_AppearanceSettings.d.ts.map +1 -1
  345. package/dist/esm/components/settings/AppPage_AppearanceSettings.js +9 -11
  346. package/dist/esm/components/settings/AppPage_AppearanceSettings.js.map +1 -1
  347. package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.d.ts.map +1 -1
  348. package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.js +3 -2
  349. package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.js.map +1 -1
  350. package/dist/esm/components/settings/AppPage_BillingSettings.d.ts +4 -2
  351. package/dist/esm/components/settings/AppPage_BillingSettings.d.ts.map +1 -1
  352. package/dist/esm/components/settings/AppPage_BillingSettings.js +21 -3
  353. package/dist/esm/components/settings/AppPage_BillingSettings.js.map +1 -1
  354. package/dist/esm/components/settings/AppPage_BillingSettings.labels.d.ts.map +1 -1
  355. package/dist/esm/components/settings/AppPage_BillingSettings.labels.js +5 -10
  356. package/dist/esm/components/settings/AppPage_BillingSettings.labels.js.map +1 -1
  357. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts +58 -0
  358. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts.map +1 -1
  359. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js +243 -40
  360. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js.map +1 -1
  361. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.d.ts.map +1 -1
  362. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js +67 -6
  363. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js.map +1 -1
  364. package/dist/esm/components/settings/AppPage_InvitationsSettings.d.ts.map +1 -1
  365. package/dist/esm/components/settings/AppPage_InvitationsSettings.js +19 -11
  366. package/dist/esm/components/settings/AppPage_InvitationsSettings.js.map +1 -1
  367. package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.d.ts.map +1 -1
  368. package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js +4 -2
  369. package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js.map +1 -1
  370. package/dist/esm/components/settings/SettingsHub.d.ts.map +1 -1
  371. package/dist/esm/components/settings/SettingsHub.js +3 -0
  372. package/dist/esm/components/settings/SettingsHub.js.map +1 -1
  373. package/dist/esm/components/settings/SettingsResourceOperationPanel.d.ts.map +1 -1
  374. package/dist/esm/components/settings/SettingsResourceOperationPanel.js +16 -1
  375. package/dist/esm/components/settings/SettingsResourceOperationPanel.js.map +1 -1
  376. package/dist/esm/components/settings/useOwnerProviderConnections.d.ts +59 -0
  377. package/dist/esm/components/settings/useOwnerProviderConnections.d.ts.map +1 -0
  378. package/dist/esm/components/settings/useOwnerProviderConnections.js +136 -0
  379. package/dist/esm/components/settings/useOwnerProviderConnections.js.map +1 -0
  380. package/dist/esm/components/views/chart-view/chart-view.utils.d.ts +5 -0
  381. package/dist/esm/components/views/chart-view/chart-view.utils.d.ts.map +1 -1
  382. package/dist/esm/components/views/chart-view/chart-view.utils.js +5 -0
  383. package/dist/esm/components/views/chart-view/chart-view.utils.js.map +1 -1
  384. package/dist/esm/components/views/chart-view/useResourceChartData.d.ts +50 -0
  385. package/dist/esm/components/views/chart-view/useResourceChartData.d.ts.map +1 -0
  386. package/dist/esm/components/views/chart-view/useResourceChartData.js +72 -0
  387. package/dist/esm/components/views/chart-view/useResourceChartData.js.map +1 -0
  388. package/dist/esm/components/views/composite-view/CompositeLayout.d.ts.map +1 -1
  389. package/dist/esm/components/views/composite-view/CompositeLayout.js +2 -1
  390. package/dist/esm/components/views/composite-view/CompositeLayout.js.map +1 -1
  391. package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts +86 -0
  392. package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts.map +1 -0
  393. package/dist/esm/core/app-shell/AppShellBuildingBlocks.js +187 -0
  394. package/dist/esm/core/app-shell/AppShellBuildingBlocks.js.map +1 -0
  395. package/dist/esm/core/app-shell/PortalContainerContext.d.ts +5 -2
  396. package/dist/esm/core/app-shell/PortalContainerContext.d.ts.map +1 -1
  397. package/dist/esm/core/app-shell/PortalContainerContext.js +5 -2
  398. package/dist/esm/core/app-shell/PortalContainerContext.js.map +1 -1
  399. package/dist/esm/core/app-shell/app-shell.schemas.d.ts +18 -9
  400. package/dist/esm/core/app-shell/app-shell.schemas.d.ts.map +1 -1
  401. package/dist/esm/core/app-shell/app-shell.schemas.js +1 -0
  402. package/dist/esm/core/app-shell/app-shell.schemas.js.map +1 -1
  403. package/dist/esm/core/app-shell/useAppShellLayout.d.ts +10 -0
  404. package/dist/esm/core/app-shell/useAppShellLayout.d.ts.map +1 -1
  405. package/dist/esm/core/app-shell/useAppShellLayout.js +28 -5
  406. package/dist/esm/core/app-shell/useAppShellLayout.js.map +1 -1
  407. package/dist/esm/core/app-shell/usePublicShellLayout.d.ts.map +1 -1
  408. package/dist/esm/core/app-shell/usePublicShellLayout.js +38 -0
  409. package/dist/esm/core/app-shell/usePublicShellLayout.js.map +1 -1
  410. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts +15 -1
  411. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts.map +1 -1
  412. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js +47 -13
  413. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js.map +1 -1
  414. package/dist/esm/core/billing/BillingContext.d.ts +25 -2
  415. package/dist/esm/core/billing/BillingContext.d.ts.map +1 -1
  416. package/dist/esm/core/billing/BillingContext.js +16 -25
  417. package/dist/esm/core/billing/BillingContext.js.map +1 -1
  418. package/dist/esm/core/billing/billing-provider-display.frontend.utils.d.ts +11 -3
  419. package/dist/esm/core/billing/billing-provider-display.frontend.utils.d.ts.map +1 -1
  420. package/dist/esm/core/billing/billing-provider-display.frontend.utils.js +14 -8
  421. package/dist/esm/core/billing/billing-provider-display.frontend.utils.js.map +1 -1
  422. package/dist/esm/core/billing/useBillingPlanChange.d.ts.map +1 -1
  423. package/dist/esm/core/billing/useBillingPlanChange.js +2 -0
  424. package/dist/esm/core/billing/useBillingPlanChange.js.map +1 -1
  425. package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.d.ts.map +1 -1
  426. package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js +1 -0
  427. package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js.map +1 -1
  428. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts +29 -229
  429. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts.map +1 -1
  430. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js +29 -327
  431. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js.map +1 -1
  432. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts +17 -27
  433. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts.map +1 -1
  434. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js +28 -48
  435. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js.map +1 -1
  436. package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts +21 -11
  437. package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts.map +1 -1
  438. package/dist/esm/core/config/app-configuration-frontend.schemas.js +4 -4
  439. package/dist/esm/core/config/app-configuration-frontend.schemas.js.map +1 -1
  440. package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts +17 -0
  441. package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts.map +1 -1
  442. package/dist/esm/core/config/app-level-components.frontend.schemas.js +17 -0
  443. package/dist/esm/core/config/app-level-components.frontend.schemas.js.map +1 -1
  444. package/dist/esm/core/config/chart-view.frontend.schemas.d.ts +10 -10
  445. package/dist/esm/core/config/engine-settings-destinations.d.ts.map +1 -1
  446. package/dist/esm/core/config/engine-settings-destinations.js +221 -6
  447. package/dist/esm/core/config/engine-settings-destinations.js.map +1 -1
  448. package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts +8 -0
  449. package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts.map +1 -1
  450. package/dist/esm/core/config/launcher-items.frontend.schemas.js +1 -0
  451. package/dist/esm/core/config/launcher-items.frontend.schemas.js.map +1 -1
  452. package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts +10 -1
  453. package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts.map +1 -1
  454. package/dist/esm/core/config/settings-hub.frontend.schemas.js +9 -0
  455. package/dist/esm/core/config/settings-hub.frontend.schemas.js.map +1 -1
  456. package/dist/esm/core/config/verify-launcher-content.d.ts.map +1 -1
  457. package/dist/esm/core/config/verify-launcher-content.js +30 -19
  458. package/dist/esm/core/config/verify-launcher-content.js.map +1 -1
  459. package/dist/esm/core/errors/ErrorContext.d.ts.map +1 -1
  460. package/dist/esm/core/errors/ErrorContext.js +9 -1
  461. package/dist/esm/core/errors/ErrorContext.js.map +1 -1
  462. package/dist/esm/core/errors/GlobalErrorHandler.d.ts.map +1 -1
  463. package/dist/esm/core/errors/GlobalErrorHandler.js +5 -4
  464. package/dist/esm/core/errors/GlobalErrorHandler.js.map +1 -1
  465. package/dist/esm/core/errors/RouterErrorBoundary.js +1 -1
  466. package/dist/esm/core/errors/RouterErrorBoundary.js.map +1 -1
  467. package/dist/esm/core/errors/errors-builder.frontend.services.d.ts +2 -2
  468. package/dist/esm/core/errors/errors-builder.frontend.services.d.ts.map +1 -1
  469. package/dist/esm/core/errors/errors-builder.frontend.services.js +4 -4
  470. package/dist/esm/core/errors/errors-builder.frontend.services.js.map +1 -1
  471. package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js +1 -1
  472. package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js.map +1 -1
  473. package/dist/esm/core/events/NotificationContext.d.ts.map +1 -1
  474. package/dist/esm/core/events/NotificationContext.js +23 -5
  475. package/dist/esm/core/events/NotificationContext.js.map +1 -1
  476. package/dist/esm/core/events/events.frontend.schemas.d.ts +110 -43
  477. package/dist/esm/core/events/events.frontend.schemas.d.ts.map +1 -1
  478. package/dist/esm/core/events/events.frontend.schemas.js +89 -15
  479. package/dist/esm/core/events/events.frontend.schemas.js.map +1 -1
  480. package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts +2 -0
  481. package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts.map +1 -1
  482. package/dist/esm/core/execution/useExecutionParticipationRMM.js +2 -1
  483. package/dist/esm/core/execution/useExecutionParticipationRMM.js.map +1 -1
  484. package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts +1 -1
  485. package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts.map +1 -1
  486. package/dist/esm/core/execution/useExecutionResourceOperationSurface.js +5 -2
  487. package/dist/esm/core/execution/useExecutionResourceOperationSurface.js.map +1 -1
  488. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.d.ts +63 -0
  489. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.d.ts.map +1 -0
  490. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.js +131 -0
  491. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.js.map +1 -0
  492. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.d.ts +61 -0
  493. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.d.ts.map +1 -0
  494. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.js +178 -0
  495. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.js.map +1 -0
  496. package/dist/esm/core/external-providers/ProviderAddressLookupHost.d.ts +52 -0
  497. package/dist/esm/core/external-providers/ProviderAddressLookupHost.d.ts.map +1 -0
  498. package/dist/esm/core/external-providers/ProviderAddressLookupHost.js +144 -0
  499. package/dist/esm/core/external-providers/ProviderAddressLookupHost.js.map +1 -0
  500. package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts +22 -1
  501. package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts.map +1 -1
  502. package/dist/esm/core/external-providers/ProviderFilePickerHost.js +23 -3
  503. package/dist/esm/core/external-providers/ProviderFilePickerHost.js.map +1 -1
  504. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.d.ts +55 -0
  505. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.d.ts.map +1 -0
  506. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.js +65 -0
  507. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.js.map +1 -0
  508. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts +63 -0
  509. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts.map +1 -0
  510. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js +100 -0
  511. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js.map +1 -0
  512. package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts +45 -7
  513. package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts.map +1 -1
  514. package/dist/esm/core/flows-actors/FlowsActorsContext.js +112 -28
  515. package/dist/esm/core/flows-actors/FlowsActorsContext.js.map +1 -1
  516. package/dist/esm/core/flows-actors/usePendingDecisions.d.ts +32 -0
  517. package/dist/esm/core/flows-actors/usePendingDecisions.d.ts.map +1 -0
  518. package/dist/esm/core/flows-actors/usePendingDecisions.js +91 -0
  519. package/dist/esm/core/flows-actors/usePendingDecisions.js.map +1 -0
  520. package/dist/esm/core/guidance/GuidanceRenderer.d.ts.map +1 -1
  521. package/dist/esm/core/guidance/GuidanceRenderer.js +3 -2
  522. package/dist/esm/core/guidance/GuidanceRenderer.js.map +1 -1
  523. package/dist/esm/core/i18n/I18nContext.d.ts +22 -8
  524. package/dist/esm/core/i18n/I18nContext.d.ts.map +1 -1
  525. package/dist/esm/core/i18n/I18nContext.js +21 -9
  526. package/dist/esm/core/i18n/I18nContext.js.map +1 -1
  527. package/dist/esm/core/i18n/component-label-resolution.utils.d.ts +5 -3
  528. package/dist/esm/core/i18n/component-label-resolution.utils.d.ts.map +1 -1
  529. package/dist/esm/core/i18n/component-label-resolution.utils.js +5 -3
  530. package/dist/esm/core/i18n/component-label-resolution.utils.js.map +1 -1
  531. package/dist/esm/core/i18n/useI18n.d.ts +2 -1
  532. package/dist/esm/core/i18n/useI18n.d.ts.map +1 -1
  533. package/dist/esm/core/i18n/useI18n.js +2 -1
  534. package/dist/esm/core/i18n/useI18n.js.map +1 -1
  535. package/dist/esm/core/loading/LoadingContext.d.ts.map +1 -1
  536. package/dist/esm/core/loading/LoadingContext.js +7 -1
  537. package/dist/esm/core/loading/LoadingContext.js.map +1 -1
  538. package/dist/esm/core/loading/LoadingGate.d.ts.map +1 -1
  539. package/dist/esm/core/loading/LoadingGate.js +19 -1
  540. package/dist/esm/core/loading/LoadingGate.js.map +1 -1
  541. package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts +15 -2
  542. package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts.map +1 -1
  543. package/dist/esm/core/monitoring/analytics/AnalyticsContext.js +183 -20
  544. package/dist/esm/core/monitoring/analytics/AnalyticsContext.js.map +1 -1
  545. package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js +2 -2
  546. package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js.map +1 -1
  547. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.d.ts +7 -15
  548. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.d.ts.map +1 -1
  549. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.js +8 -26
  550. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.js.map +1 -1
  551. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.d.ts +12 -3
  552. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.d.ts.map +1 -1
  553. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.js +3 -2
  554. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.js.map +1 -1
  555. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.d.ts +42 -0
  556. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.d.ts.map +1 -1
  557. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js +89 -5
  558. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js.map +1 -1
  559. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.d.ts +2 -0
  560. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.d.ts.map +1 -1
  561. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.js +2 -0
  562. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.js.map +1 -1
  563. package/dist/esm/core/navigation/NavigationContentAreas.d.ts +78 -0
  564. package/dist/esm/core/navigation/NavigationContentAreas.d.ts.map +1 -1
  565. package/dist/esm/core/navigation/NavigationContentAreas.js +264 -16
  566. package/dist/esm/core/navigation/NavigationContentAreas.js.map +1 -1
  567. package/dist/esm/core/navigation/NavigationContext.d.ts +8 -0
  568. package/dist/esm/core/navigation/NavigationContext.d.ts.map +1 -1
  569. package/dist/esm/core/navigation/NavigationContext.js +137 -30
  570. package/dist/esm/core/navigation/NavigationContext.js.map +1 -1
  571. package/dist/esm/core/navigation/launcher-resolution.d.ts +2 -0
  572. package/dist/esm/core/navigation/launcher-resolution.d.ts.map +1 -1
  573. package/dist/esm/core/navigation/launcher-resolution.js +1 -0
  574. package/dist/esm/core/navigation/launcher-resolution.js.map +1 -1
  575. package/dist/esm/core/navigation/navigation-cascade.d.ts +46 -0
  576. package/dist/esm/core/navigation/navigation-cascade.d.ts.map +1 -0
  577. package/dist/esm/core/navigation/navigation-cascade.js +222 -0
  578. package/dist/esm/core/navigation/navigation-cascade.js.map +1 -0
  579. package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.d.ts.map +1 -1
  580. package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.js +21 -2
  581. package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.js.map +1 -1
  582. package/dist/esm/core/navigation/navigation-controller-internals.d.ts +71 -0
  583. package/dist/esm/core/navigation/navigation-controller-internals.d.ts.map +1 -0
  584. package/dist/esm/core/navigation/navigation-controller-internals.js +84 -0
  585. package/dist/esm/core/navigation/navigation-controller-internals.js.map +1 -0
  586. package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts +86 -2
  587. package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts.map +1 -1
  588. package/dist/esm/core/navigation/navigation-policy-resolver.service.js +242 -124
  589. package/dist/esm/core/navigation/navigation-policy-resolver.service.js.map +1 -1
  590. package/dist/esm/core/navigation/navigation.schemas.d.ts +170 -8
  591. package/dist/esm/core/navigation/navigation.schemas.d.ts.map +1 -1
  592. package/dist/esm/core/navigation/navigation.schemas.js +121 -2
  593. package/dist/esm/core/navigation/navigation.schemas.js.map +1 -1
  594. package/dist/esm/core/navigation/navigation.utils.d.ts +102 -6
  595. package/dist/esm/core/navigation/navigation.utils.d.ts.map +1 -1
  596. package/dist/esm/core/navigation/navigation.utils.js +283 -34
  597. package/dist/esm/core/navigation/navigation.utils.js.map +1 -1
  598. package/dist/esm/core/navigation/useIsStackEntryActive.d.ts +0 -10
  599. package/dist/esm/core/navigation/useIsStackEntryActive.d.ts.map +0 -1
  600. package/dist/esm/core/navigation/useIsStackEntryActive.js.map +0 -1
  601. package/dist/esm/core/navigation/useNavigationController.d.ts +28 -157
  602. package/dist/esm/core/navigation/useNavigationController.d.ts.map +1 -1
  603. package/dist/esm/core/navigation/useNavigationController.js +211 -1189
  604. package/dist/esm/core/navigation/useNavigationController.js.map +1 -1
  605. package/dist/esm/core/navigation/useNavigationRouterSync.d.ts +174 -0
  606. package/dist/esm/core/navigation/useNavigationRouterSync.d.ts.map +1 -0
  607. package/dist/esm/core/navigation/useNavigationRouterSync.js +977 -0
  608. package/dist/esm/core/navigation/useNavigationRouterSync.js.map +1 -0
  609. package/dist/esm/core/navigation/useOverlayTitle.d.ts +13 -1
  610. package/dist/esm/core/navigation/useOverlayTitle.d.ts.map +1 -1
  611. package/dist/esm/core/navigation/useOverlayTitle.js +15 -10
  612. package/dist/esm/core/navigation/useOverlayTitle.js.map +1 -1
  613. package/dist/esm/core/navigation/useResponsiveZoneMigration.d.ts +43 -0
  614. package/dist/esm/core/navigation/useResponsiveZoneMigration.d.ts.map +1 -0
  615. package/dist/esm/core/navigation/useResponsiveZoneMigration.js +44 -0
  616. package/dist/esm/core/navigation/useResponsiveZoneMigration.js.map +1 -0
  617. package/dist/esm/core/navigation/zone-collapse-migration.d.ts +83 -0
  618. package/dist/esm/core/navigation/zone-collapse-migration.d.ts.map +1 -0
  619. package/dist/esm/core/navigation/zone-collapse-migration.js +116 -0
  620. package/dist/esm/core/navigation/zone-collapse-migration.js.map +1 -0
  621. package/dist/esm/core/navigation/zone-collapse.d.ts +51 -0
  622. package/dist/esm/core/navigation/zone-collapse.d.ts.map +1 -0
  623. package/dist/esm/core/navigation/zone-collapse.js +59 -0
  624. package/dist/esm/core/navigation/zone-collapse.js.map +1 -0
  625. package/dist/esm/core/navigation/zone-emphasis.d.ts +3 -0
  626. package/dist/esm/core/navigation/zone-emphasis.d.ts.map +1 -1
  627. package/dist/esm/core/navigation/zone-emphasis.js +26 -4
  628. package/dist/esm/core/navigation/zone-emphasis.js.map +1 -1
  629. package/dist/esm/core/navigation/zone-visible-entry.d.ts +22 -0
  630. package/dist/esm/core/navigation/zone-visible-entry.d.ts.map +1 -1
  631. package/dist/esm/core/navigation/zone-visible-entry.js +25 -0
  632. package/dist/esm/core/navigation/zone-visible-entry.js.map +1 -1
  633. package/dist/esm/core/requests/websockets/WebSocketContext.d.ts.map +1 -1
  634. package/dist/esm/core/requests/websockets/WebSocketContext.js +53 -18
  635. package/dist/esm/core/requests/websockets/WebSocketContext.js.map +1 -1
  636. package/dist/esm/core/requests/websockets/WebSocketEventBridge.d.ts.map +1 -1
  637. package/dist/esm/core/requests/websockets/WebSocketEventBridge.js +3 -1
  638. package/dist/esm/core/requests/websockets/WebSocketEventBridge.js.map +1 -1
  639. package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts +22 -0
  640. package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts.map +1 -1
  641. package/dist/esm/core/requests/websockets/useNotificationBadges.js +72 -3
  642. package/dist/esm/core/requests/websockets/useNotificationBadges.js.map +1 -1
  643. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.d.ts +28 -0
  644. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.d.ts.map +1 -0
  645. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.js +86 -0
  646. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.js.map +1 -0
  647. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts +38 -3
  648. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts.map +1 -1
  649. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js +57 -2
  650. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js.map +1 -1
  651. package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.d.ts.map +1 -1
  652. package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js +4 -2
  653. package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js.map +1 -1
  654. package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts +30 -1
  655. package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts.map +1 -1
  656. package/dist/esm/core/requests/wildo-http-client.frontend.service.js +47 -4
  657. package/dist/esm/core/requests/wildo-http-client.frontend.service.js.map +1 -1
  658. package/dist/esm/core/resources/ResourceRegistryContext.d.ts.map +1 -1
  659. package/dist/esm/core/resources/ResourceRegistryContext.js +22 -1
  660. package/dist/esm/core/resources/ResourceRegistryContext.js.map +1 -1
  661. package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js +1 -1
  662. package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js.map +1 -1
  663. package/dist/esm/core/resources/frontend-resource.utils.d.ts +22 -1
  664. package/dist/esm/core/resources/frontend-resource.utils.d.ts.map +1 -1
  665. package/dist/esm/core/resources/frontend-resource.utils.js +25 -2
  666. package/dist/esm/core/resources/frontend-resource.utils.js.map +1 -1
  667. package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts +113 -13
  668. package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts.map +1 -1
  669. package/dist/esm/core/resources/operation-semantics.frontend.utils.js +173 -20
  670. package/dist/esm/core/resources/operation-semantics.frontend.utils.js.map +1 -1
  671. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.d.ts +11 -0
  672. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.d.ts.map +1 -1
  673. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.js +7 -0
  674. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.js.map +1 -1
  675. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.d.ts +3 -2
  676. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.d.ts.map +1 -1
  677. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.js +13 -5
  678. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.js.map +1 -1
  679. package/dist/esm/core/resources/resources-repository.frontend.service.d.ts +6 -0
  680. package/dist/esm/core/resources/resources-repository.frontend.service.d.ts.map +1 -1
  681. package/dist/esm/core/resources/resources-repository.frontend.service.js +90 -1
  682. package/dist/esm/core/resources/resources-repository.frontend.service.js.map +1 -1
  683. package/dist/esm/core/resources/resources.frontend.schemas.d.ts +139 -16
  684. package/dist/esm/core/resources/resources.frontend.schemas.d.ts.map +1 -1
  685. package/dist/esm/core/resources/resources.frontend.schemas.js +110 -11
  686. package/dist/esm/core/resources/resources.frontend.schemas.js.map +1 -1
  687. package/dist/esm/core/resources/rmm/ResourceMutationManager.d.ts.map +1 -1
  688. package/dist/esm/core/resources/rmm/ResourceMutationManager.js +3 -1
  689. package/dist/esm/core/resources/rmm/ResourceMutationManager.js.map +1 -1
  690. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts +10 -0
  691. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts.map +1 -1
  692. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js +8 -0
  693. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js.map +1 -1
  694. package/dist/esm/core/resources/rmm/useResourceRMM.d.ts +7 -0
  695. package/dist/esm/core/resources/rmm/useResourceRMM.d.ts.map +1 -1
  696. package/dist/esm/core/resources/rmm/useResourceRMM.js +9 -2
  697. package/dist/esm/core/resources/rmm/useResourceRMM.js.map +1 -1
  698. package/dist/esm/core/resources/useOperationDirectExecution.d.ts +59 -0
  699. package/dist/esm/core/resources/useOperationDirectExecution.d.ts.map +1 -0
  700. package/dist/esm/core/resources/useOperationDirectExecution.js +278 -0
  701. package/dist/esm/core/resources/useOperationDirectExecution.js.map +1 -0
  702. package/dist/esm/core/resources/useResourceOperationActions.d.ts +1 -1
  703. package/dist/esm/core/resources/useResourceOperationActions.d.ts.map +1 -1
  704. package/dist/esm/core/resources/useResourceOperationActions.js +69 -22
  705. package/dist/esm/core/resources/useResourceOperationActions.js.map +1 -1
  706. package/dist/esm/core/resources/useResourceOperationSurface.d.ts +8 -6
  707. package/dist/esm/core/resources/useResourceOperationSurface.d.ts.map +1 -1
  708. package/dist/esm/core/resources/useResourceOperationSurface.js +3 -2
  709. package/dist/esm/core/resources/useResourceOperationSurface.js.map +1 -1
  710. package/dist/esm/core/runtime/AppRouter.d.ts.map +1 -1
  711. package/dist/esm/core/runtime/AppRouter.js +23 -2
  712. package/dist/esm/core/runtime/AppRouter.js.map +1 -1
  713. package/dist/esm/core/runtime/ApplicationContext.shared.d.ts +4 -2
  714. package/dist/esm/core/runtime/ApplicationContext.shared.d.ts.map +1 -1
  715. package/dist/esm/core/runtime/ApplicationContext.shared.js.map +1 -1
  716. package/dist/esm/core/runtime/ApplicationMainContext.d.ts +12 -2
  717. package/dist/esm/core/runtime/ApplicationMainContext.d.ts.map +1 -1
  718. package/dist/esm/core/runtime/ApplicationMainContext.js +5 -2
  719. package/dist/esm/core/runtime/ApplicationMainContext.js.map +1 -1
  720. package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts +25 -1
  721. package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts.map +1 -1
  722. package/dist/esm/core/runtime/domain-module.frontend.definitions.js +37 -1
  723. package/dist/esm/core/runtime/domain-module.frontend.definitions.js.map +1 -1
  724. package/dist/esm/core/runtime/start-application.frontend.service.d.ts +21 -2
  725. package/dist/esm/core/runtime/start-application.frontend.service.d.ts.map +1 -1
  726. package/dist/esm/core/runtime/start-application.frontend.service.js +51 -4
  727. package/dist/esm/core/runtime/start-application.frontend.service.js.map +1 -1
  728. package/dist/esm/core/security/AuthSessionContext.d.ts +11 -0
  729. package/dist/esm/core/security/AuthSessionContext.d.ts.map +1 -1
  730. package/dist/esm/core/security/AuthSessionContext.js +70 -22
  731. package/dist/esm/core/security/AuthSessionContext.js.map +1 -1
  732. package/dist/esm/core/security/StepUpAuthContext.d.ts.map +1 -1
  733. package/dist/esm/core/security/StepUpAuthContext.js +10 -2
  734. package/dist/esm/core/security/StepUpAuthContext.js.map +1 -1
  735. package/dist/esm/core/security/UserOrgsContext.d.ts.map +1 -1
  736. package/dist/esm/core/security/UserOrgsContext.js +72 -8
  737. package/dist/esm/core/security/UserOrgsContext.js.map +1 -1
  738. package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts +7 -0
  739. package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts.map +1 -1
  740. package/dist/esm/core/security/route-organization-access.frontend.utils.js +8 -2
  741. package/dist/esm/core/security/route-organization-access.frontend.utils.js.map +1 -1
  742. package/dist/esm/core/security/useGrantedConsentPurposes.d.ts +30 -0
  743. package/dist/esm/core/security/useGrantedConsentPurposes.d.ts.map +1 -0
  744. package/dist/esm/core/security/useGrantedConsentPurposes.js +38 -0
  745. package/dist/esm/core/security/useGrantedConsentPurposes.js.map +1 -0
  746. package/dist/esm/core/ui/UIContext.d.ts.map +1 -1
  747. package/dist/esm/core/ui/UIContext.js +10 -6
  748. package/dist/esm/core/ui/UIContext.js.map +1 -1
  749. package/dist/esm/core/ui/color-conversion.utils.d.ts +20 -0
  750. package/dist/esm/core/ui/color-conversion.utils.d.ts.map +1 -1
  751. package/dist/esm/core/ui/color-conversion.utils.js +39 -5
  752. package/dist/esm/core/ui/color-conversion.utils.js.map +1 -1
  753. package/dist/esm/core/ui/themes/default.theme.d.ts.map +1 -1
  754. package/dist/esm/core/ui/themes/default.theme.js +22 -2
  755. package/dist/esm/core/ui/themes/default.theme.js.map +1 -1
  756. package/dist/esm/core/ui/ui.frontend.schemas.d.ts +6 -6
  757. package/dist/esm/core/ui/ui.frontend.schemas.d.ts.map +1 -1
  758. package/dist/esm/core/ui/ui.frontend.schemas.js +3 -3
  759. package/dist/esm/core/ui/ui.frontend.schemas.js.map +1 -1
  760. package/dist/esm/index.d.ts +10 -1
  761. package/dist/esm/index.d.ts.map +1 -1
  762. package/dist/esm/index.js +19 -1
  763. package/dist/esm/index.js.map +1 -1
  764. package/dist/esm/testing/app-shell-placement-coverage.d.ts +43 -0
  765. package/dist/esm/testing/app-shell-placement-coverage.d.ts.map +1 -0
  766. package/dist/esm/testing/app-shell-placement-coverage.js +114 -0
  767. package/dist/esm/testing/app-shell-placement-coverage.js.map +1 -0
  768. package/dist/esm/testing/mock-builders.d.ts.map +1 -1
  769. package/dist/esm/testing/mock-builders.js +5 -0
  770. package/dist/esm/testing/mock-builders.js.map +1 -1
  771. package/dist/esm/testing.d.ts +1 -0
  772. package/dist/esm/testing.d.ts.map +1 -1
  773. package/dist/esm/testing.js +1 -0
  774. package/dist/esm/testing.js.map +1 -1
  775. package/package.json +9 -7
  776. package/dist/esm/core/navigation/useIsStackEntryActive.js +0 -15
  777. package/dist/tsconfig.build.tsbuildinfo +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"form-field-address.js","sourceRoot":"","sources":["../../../../../../src/components/form/fields/form-field-address.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * FormFieldAddress Component\n *\n * Edits a structured postal address declared with `z_address()`: one labelled input per part, the\n * multi-field address pattern (GOV.UK \"Addresses\") rather than a single free-text box nothing can\n * validate or compare.\n *\n * - Every part carries its HTML autofill token (`address-line1`, `address-level2`, `postal-code`,\n * `country`, …), so a browser or password manager fills the whole address in one gesture (WCAG\n * 1.3.5).\n * - The country is a native `<select>` of ISO 3166-1 alpha-2 codes with names from the active\n * locale (`Intl.DisplayNames`), restricted to the field's `countriesAllowed` and pre-selected from\n * its `defaultCountry`. A stored code outside that list is kept as an option rather than silently\n * replaced.\n * - The latitude/longitude pair is offered only when the field declares `withCoordinates`.\n * - Blur is reported when focus leaves the GROUP, not each part, so on-blur validation does not fire\n * between \"line 1\" and \"city\".\n * - A validation issue is shown under the PART it concerns (`partErrors`), with that input marked\n * invalid — a nested error summarised as one message for the whole group names nothing to fix.\n * - The group is named by the field's own label (`field-<name>-label`, rendered by FormFieldChrome),\n * so \"Town or city\" in a billing address and in a shipping address are distinguishable to a screen\n * reader. The first line keeps the `field-<name>` id the chrome label targets, so clicking the label\n * still focuses the address.\n *\n * Every part is held as a string draft while typing and composed into the value on each change:\n * optional parts left empty are omitted, and a half-typed coordinate becomes `NaN`, which the schema\n * refuses — the field shows an error instead of storing a point the user did not enter.\n */\n\nimport React, { forwardRef } from 'react';\n\nimport { cn } from '~wildo-frontend-lib/core/ui/cn';\nimport { useUI } from '~wildo-frontend-lib/core/ui/useUI';\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { InputRoot } from '~wildo-frontend-lib/components/form/controls/input';\nimport { FieldError } from '~wildo-frontend-lib/components/form/chromes/field';\nimport { ControlSize, CorePresetNames, FormControlVariant, FrontendComponentType, UIBehavior } from '@wildo-ai/presets-components-models';\nimport { AddressCoordinatePart, AddressPart, getAddressMetadata, getCountries, type AddressValue } from '@wildo-ai/zod-decorators';\n\nimport { createComponentResolverWithRef } from '~wildo-frontend-lib/core/components-registry/component-resolver.frontend.helper';\nimport { ComponentPresetProps } from '~wildo-frontend-lib/core/components-registry/component-registry.frontend.schemas';\nimport type { ControlBaseProps } from '~wildo-frontend-lib/components/form/form-field-types';\n\n// --- Contract ---\nexport interface FormFieldAddressProps extends Omit<ControlBaseProps, 'value' | 'onChange' | 'defaultValue'> {\n value?: AddressValue;\n /**\n * `undefined` is emitted when the user empties every part of a clearable field — the control's\n * \"no address\" gesture. A pre-selected country alone is not an entry and does not count.\n */\n onChange?: (value: AddressValue | undefined) => void;\n defaultValue?: AddressValue;\n /**\n * The resolved, displayable error of each part that has one, keyed by the part's dotted path inside\n * the value (`city`, `coordinates.longitude` — see `listAddressPartPaths`). Resolved by the form,\n * which owns touch/submit visibility; the control only places each message under its input.\n */\n partErrors?: Readonly<Record<string, string | undefined>>;\n}\n\nexport type FormFieldAddressRef = HTMLInputElement;\n\n/** The free-text parts, in the order the form presents them. */\ntype AddressTextPart = AddressPart.LINE1 | AddressPart.LINE2 | AddressPart.CITY | AddressPart.STATE | AddressPart.POSTAL_CODE;\n\ninterface AddressTextPartControl {\n part: AddressTextPart;\n /** HTML autofill field name for this part. */\n autoComplete: string;\n}\n\nconst ADDRESS_TEXT_PART_CONTROLS: readonly AddressTextPartControl[] = [\n { part: AddressPart.LINE1, autoComplete: 'address-line1' },\n { part: AddressPart.LINE2, autoComplete: 'address-line2' },\n { part: AddressPart.CITY, autoComplete: 'address-level2' },\n { part: AddressPart.STATE, autoComplete: 'address-level1' },\n { part: AddressPart.POSTAL_CODE, autoComplete: 'postal-code' },\n];\n\n/** What the user has typed, part by part, before it is composed into a value. */\ntype AddressDraft = Record<AddressPart, string> & Record<AddressCoordinatePart, string>;\n\nfunction draftFromValue(value: AddressValue | undefined, defaultCountry: string | undefined): AddressDraft {\n return {\n [AddressPart.LINE1]: value?.line1 ?? '',\n [AddressPart.LINE2]: value?.line2 ?? '',\n [AddressPart.CITY]: value?.city ?? '',\n [AddressPart.STATE]: value?.state ?? '',\n [AddressPart.POSTAL_CODE]: value?.postalCode ?? '',\n [AddressPart.COUNTRY]: value?.country ?? defaultCountry ?? '',\n [AddressCoordinatePart.LATITUDE]: value?.coordinates ? String(value.coordinates.latitude) : '',\n [AddressCoordinatePart.LONGITUDE]: value?.coordinates ? String(value.coordinates.longitude) : '',\n };\n}\n\n/** A coordinate the user left empty while typing the other one is `NaN`, never a silent `0`. */\nfunction coordinateFromDraft(text: string): number {\n return text.trim() === '' ? Number.NaN : Number(text);\n}\n\n/**\n * Compose the draft into the value the form stores. Returns `null` when nothing was entered, so the\n * caller decides between the clear gesture and an empty (schema-refused) value.\n */\nfunction composeAddress(draft: AddressDraft): AddressValue | null {\n const hasText = ADDRESS_TEXT_PART_CONTROLS.some(({ part }) => draft[part].trim() !== '');\n const hasCoordinates = draft.latitude.trim() !== '' || draft.longitude.trim() !== '';\n if (!hasText && !hasCoordinates) return null;\n return {\n line1: draft.line1,\n ...(draft.line2 !== '' && { line2: draft.line2 }),\n city: draft.city,\n ...(draft.state !== '' && { state: draft.state }),\n ...(draft.postalCode !== '' && { postalCode: draft.postalCode }),\n country: draft.country,\n ...(hasCoordinates && {\n coordinates: { latitude: coordinateFromDraft(draft.latitude), longitude: coordinateFromDraft(draft.longitude) },\n }),\n };\n}\n\ninterface CountryOption {\n code: string;\n name: string;\n}\n\n/**\n * Selectable countries with locale-aware names, collated in the active language.\n *\n * The code list is the one the phone field uses (libphonenumber's region set). It covers every\n * inhabited ISO 3166-1 region; a stored code it lacks is still offered by the render below.\n */\nfunction buildCountryOptions(locale: string, countriesAllowed: readonly string[] | undefined): CountryOption[] {\n let displayNames: Intl.DisplayNames | undefined;\n try {\n displayNames = new Intl.DisplayNames([locale], { type: 'region' });\n } catch {\n displayNames = undefined;\n }\n const collator = new Intl.Collator(locale);\n const codes = countriesAllowed && countriesAllowed.length > 0 ? [...countriesAllowed] : getCountries();\n return codes\n .map((code) => ({ code, name: displayNames?.of(code) ?? code }))\n .sort((a, b) => collator.compare(a.name, b.name));\n}\n\n/**\n * FormFieldAddress component\n *\n * One labelled control per address part plus a country selector. Emits `AddressValue`.\n */\nexport const FormFieldAddress_Preset_Default = React.forwardRef<FormFieldAddressRef, FormFieldAddressProps>(\n (\n {\n schema,\n name,\n disabled,\n readOnly,\n className,\n value: controlledValue,\n onChange,\n onBlur,\n defaultValue,\n autoFocus,\n clearable,\n partErrors,\n controlSize = ControlSize.MD,\n },\n ref\n ): React.JSX.Element => {\n const { tComponent, currentLanguage } = useI18n({ component: [FrontendComponentType.LOW_LEVEL_FORM_FIELD_ADDRESS] });\n const { getRecipe } = useUI();\n const formRecipe = getRecipe(UIBehavior.FORM_CONTROL, FormControlVariant.DEFAULT);\n\n const addressMetadata = getAddressMetadata(schema);\n const defaultCountry = addressMetadata?.defaultCountry;\n const withCoordinates = addressMetadata?.withCoordinates === true;\n\n const externalValue = controlledValue ?? defaultValue;\n const [draft, setDraft] = React.useState<AddressDraft>(() => draftFromValue(externalValue, defaultCountry));\n /**\n * The latest draft, updated synchronously on every change. Change handlers build the next draft\n * from THIS rather than from the render's `draft`: browser autofill fills several parts in one\n * gesture, and a handler reading the render-time draft would overwrite the parts filled just before.\n */\n const draftRef = React.useRef<AddressDraft>(draft);\n\n /**\n * Our own emits come back as `controlledValue`. Re-deriving the draft from that echo would clobber\n * in-progress typing (an optional part emptied mid-edit is omitted from the value, and a half-typed\n * coordinate is `NaN`), so a resync happens only for a value this control did not emit.\n */\n const lastEmittedKeyRef = React.useRef<string>(JSON.stringify(externalValue ?? null));\n const externalKey = JSON.stringify(externalValue ?? null);\n React.useEffect(() => {\n if (externalKey === lastEmittedKeyRef.current) return;\n lastEmittedKeyRef.current = externalKey;\n const resynced = draftFromValue(externalValue, defaultCountry);\n draftRef.current = resynced;\n setDraft(resynced);\n // `externalValue` is represented by `externalKey`; depending on the object would resync on identity.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [externalKey, defaultCountry]);\n\n const countryOptions = React.useMemo(\n () => buildCountryOptions(currentLanguage, addressMetadata?.countriesAllowed),\n [currentLanguage, addressMetadata?.countriesAllowed]\n );\n\n const commitPart = React.useCallback(\n (part: AddressPart | AddressCoordinatePart, text: string) => {\n const nextDraft = { ...draftRef.current, [part]: text };\n draftRef.current = nextDraft;\n setDraft(nextDraft);\n const composed = composeAddress(nextDraft);\n const emitted = composed ?? (clearable ? undefined : { line1: '', city: '', country: nextDraft.country });\n lastEmittedKeyRef.current = JSON.stringify(emitted ?? null);\n onChange?.(emitted);\n },\n [clearable, onChange]\n );\n\n const handleGroupBlur = React.useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (event.currentTarget.contains(event.relatedTarget as Node | null)) return;\n onBlur?.();\n },\n [onBlur]\n );\n\n const fieldId = `field-${name}`;\n const partId = (path: string): string => (path === AddressPart.LINE1 ? fieldId : `${fieldId}-${path.replace('.', '-')}`);\n const labelClassName = 'text-sm text-muted-foreground';\n\n /** Label, control and the part's own error, with the error linked to the control. */\n const renderPart = (path: string, label: string, control: (a11y: { id: string; 'aria-invalid'?: true; 'aria-describedby'?: string }) => React.ReactNode) => {\n const id = partId(path);\n const error = partErrors?.[path];\n const errorId = `${id}-error`;\n return (\n <div key={path} className=\"flex flex-col gap-1\">\n <label htmlFor={id} className={labelClassName}>\n {label}\n </label>\n {control({ id, ...(error && { 'aria-invalid': true as const, 'aria-describedby': errorId }) })}\n {error && <FieldError id={errorId}>{error}</FieldError>}\n </div>\n );\n };\n\n const renderTextPart = ({ part, autoComplete }: AddressTextPartControl): React.ReactNode =>\n renderPart(part, tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_ADDRESS, part), (a11y) => (\n <InputRoot\n {...a11y}\n ref={part === AddressPart.LINE1 ? ref : undefined}\n name={`${name}.${part}`}\n type=\"text\"\n value={draft[part]}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) => commitPart(part, event.target.value)}\n disabled={disabled}\n readOnly={readOnly}\n autoComplete={autoComplete}\n autoFocus={part === AddressPart.LINE1 ? autoFocus : undefined}\n controlSize={controlSize}\n />\n ));\n\n const renderCoordinatePart = (part: AddressCoordinatePart): React.ReactNode =>\n renderPart(`coordinates.${part}`, tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_ADDRESS, part), (a11y) => (\n <InputRoot\n {...a11y}\n name={`${name}.coordinates.${part}`}\n type=\"number\"\n step=\"any\"\n inputMode=\"decimal\"\n value={draft[part]}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) => commitPart(part, event.target.value)}\n disabled={disabled}\n readOnly={readOnly}\n className=\"tabular-nums\"\n controlSize={controlSize}\n />\n ));\n\n const [line1Control, line2Control, cityControl, stateControl, postalCodeControl] = ADDRESS_TEXT_PART_CONTROLS;\n const countryIsListed = countryOptions.some((option) => option.code === draft.country);\n\n return (\n <div\n className={cn('flex w-full flex-col gap-element', className)}\n role=\"group\"\n aria-labelledby={`${fieldId}-label`}\n onBlur={handleGroupBlur}\n >\n {renderTextPart(line1Control)}\n {renderTextPart(line2Control)}\n <div className=\"grid gap-element sm:grid-cols-2\">\n {renderTextPart(cityControl)}\n {renderTextPart(postalCodeControl)}\n </div>\n {renderTextPart(stateControl)}\n {renderPart(AddressPart.COUNTRY, tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_ADDRESS, AddressPart.COUNTRY), (a11y) => (\n <select\n {...a11y}\n name={`${name}.${AddressPart.COUNTRY}`}\n value={draft.country}\n onChange={(event) => commitPart(AddressPart.COUNTRY, event.target.value)}\n disabled={disabled || readOnly}\n autoComplete=\"country\"\n data-size={controlSize}\n className={cn(\n 'flex w-full rounded-md bg-transparent text-sm',\n formRecipe.base,\n formRecipe.states.focus,\n formRecipe.states.disabled,\n formRecipe.sizes?.[controlSize],\n formRecipe.motion.transition\n )}\n >\n {draft.country === '' && (\n <option value=\"\" disabled>\n {tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_ADDRESS, 'countryPlaceholder')}\n </option>\n )}\n {draft.country !== '' && !countryIsListed && <option value={draft.country}>{draft.country}</option>}\n {countryOptions.map((option) => (\n <option key={option.code} value={option.code}>\n {option.name}\n </option>\n ))}\n </select>\n ))}\n {withCoordinates && (\n <div className=\"grid gap-element sm:grid-cols-2\">\n {renderCoordinatePart(AddressCoordinatePart.LATITUDE)}\n {renderCoordinatePart(AddressCoordinatePart.LONGITUDE)}\n </div>\n )}\n </div>\n );\n }\n);\n\nFormFieldAddress_Preset_Default.displayName = 'FormFieldAddress_Preset_Default';\n\n// --- Wrapper ---\nexport const FormFieldAddress = forwardRef<FormFieldAddressRef, FormFieldAddressProps & ComponentPresetProps>(\n ({ preset = CorePresetNames.DEFAULT, ...props }, ref) => {\n const Component = createComponentResolverWithRef<FormFieldAddressProps, FormFieldAddressRef>(\n FrontendComponentType.LOW_LEVEL_FORM_FIELD_ADDRESS,\n 'FormFieldAddress'\n )(preset);\n return <Component {...props} ref={ref} />;\n }\n);\nFormFieldAddress.displayName = 'FormFieldAddress';\n"]}
1
+ {"version":3,"file":"form-field-address.js","sourceRoot":"","sources":["../../../../../../src/components/form/fields/form-field-address.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,oDAAoD,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mDAAmD,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAC1I,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,kBAAkB,EAAE,YAAY,EAAqB,MAAM,0BAA0B,CAAC;AAEnI,OAAO,EAAE,8BAA8B,EAAE,MAAM,iFAAiF,CAAC;AAiFjI,MAAM,0BAA0B,GAAsC;IACpE,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE;IAC1D,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE;IAC1D,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,gBAAgB,EAAE;IAC1D,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE;IAC3D,EAAE,IAAI,EAAE,WAAW,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE;CAC/D,CAAC;AAKF,SAAS,cAAc,CAAC,KAA+B,EAAE,cAAkC;IACzF,OAAO;QACL,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE;QACvC,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE;QACvC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE;QACrC,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE;QACvC,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,IAAI,EAAE;QAClD,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,IAAI,cAAc,IAAI,EAAE;QAC7D,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;QAC9F,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;KACjG,CAAC;AACJ,CAAC;AAED,gGAAgG;AAChG,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,KAAmB;IACzC,MAAM,OAAO,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACzF,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IACrF,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IAC7C,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QACjD,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QACjD,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;QAChE,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,CAAC,cAAc,IAAI;YACpB,WAAW,EAAE,EAAE,QAAQ,EAAE,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;SAChH,CAAC;KACH,CAAC;AACJ,CAAC;AAOD;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,MAAc,EAAE,gBAA+C;IAC1F,IAAI,YAA2C,CAAC;IAChD,IAAI,CAAC;QACH,YAAY,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,YAAY,GAAG,SAAS,CAAC;IAC3B,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;IACvG,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;SAC/D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,CAAC,UAAU,CAC7D,CACE,EACE,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,KAAK,EAAE,eAAe,EACtB,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,SAAS,EACT,SAAS,EACT,UAAU,EACV,YAAY,EACZ,WAAW,GAAG,WAAW,CAAC,EAAE,GAC7B,EACD,GAAG,EACgB,EAAE;IACrB,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,qBAAqB,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACrH,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAElF,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,eAAe,EAAE,cAAc,CAAC;IACvD,MAAM,eAAe,GAAG,eAAe,EAAE,eAAe,KAAK,IAAI,CAAC;IAElE,MAAM,aAAa,GAAG,eAAe,IAAI,YAAY,CAAC;IACtD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAe,GAAG,EAAE,CAAC,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;IAC5G;;;;OAIG;IACH,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAe,KAAK,CAAC,CAAC;IAEnD;;;;OAIG;IACH,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAS,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC;IACtF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC;IAC1D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,WAAW,KAAK,iBAAiB,CAAC,OAAO;YAAE,OAAO;QACtD,iBAAiB,CAAC,OAAO,GAAG,WAAW,CAAC;QACxC,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QAC/D,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC;QAC5B,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,qGAAqG;QACrG,uDAAuD;IACzD,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IAElC,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAClC,GAAG,EAAE,CAAC,mBAAmB,CAAC,eAAe,EAAE,eAAe,EAAE,gBAAgB,CAAC,EAC7E,CAAC,eAAe,EAAE,eAAe,EAAE,gBAAgB,CAAC,CACrD,CAAC;IAEF,6GAA6G;IAC7G,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACnC,CAAC,SAAuB,EAAE,EAAE;QAC1B,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC;QAC7B,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpB,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1G,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QAC5D,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC,EACD,CAAC,SAAS,EAAE,QAAQ,CAAC,CACtB,CAAC;IAEF,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAClC,CAAC,IAAyC,EAAE,IAAY,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAC/G,CAAC,WAAW,CAAC,CACd,CAAC;IAEF,MAAM,cAAc,GAAG,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,CAAC;IAC9D,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CACpC,CAAC,OAAqB,EAAE,EAAE;QACxB,mGAAmG;QACnG,yDAAyD;QACzD,IAAI,cAAc;YAAE,OAAO;QAC3B,6FAA6F;QAC7F,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC;QAC9D,WAAW,CAAC,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;IACzD,CAAC,EACD,CAAC,WAAW,EAAE,cAAc,EAAE,cAAc,CAAC,CAC9C,CAAC;IAEF,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CACvC,CAAC,KAAuC,EAAE,EAAE;QAC1C,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,aAA4B,CAAC;YAAE,OAAO;QAC7E,MAAM,EAAE,EAAE,CAAC;IACb,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,OAAO,GAAG,SAAS,IAAI,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACzH,MAAM,cAAc,GAAG,+BAA+B,CAAC;IAEvD,qFAAqF;IACrF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,OAAsG,EAAE,EAAE;QACzJ,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,GAAG,EAAE,QAAQ,CAAC;QAC9B,OAAO,CACL,eAAgB,SAAS,EAAC,qBAAqB,aAC7C,KAAC,UAAU,IAAC,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,YAC/C,KAAK,GACK,EACZ,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,cAAc,EAAE,IAAa,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC7F,KAAK,IAAI,KAAC,UAAU,IAAC,EAAE,EAAE,OAAO,YAAG,KAAK,GAAc,KAL/C,IAAI,CAMR,CACP,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,EAAE,IAAI,EAAE,YAAY,EAA0B,EAAmB,EAAE,CACzF,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,qBAAqB,CAAC,4BAA4B,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAC/F,KAAC,SAAS,OACJ,IAAI,EACR,GAAG,EAAE,IAAI,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EACjD,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,EACvB,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,QAAQ,EAAE,CAAC,KAA0C,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAC9F,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,IAAI,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAC7D,WAAW,EAAE,WAAW,GACxB,CACH,CAAC,CAAC;IAEL,MAAM,oBAAoB,GAAG,CAAC,IAA2B,EAAmB,EAAE,CAC5E,UAAU,CAAC,eAAe,IAAI,EAAE,EAAE,UAAU,CAAC,qBAAqB,CAAC,4BAA4B,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAChH,KAAC,SAAS,OACJ,IAAI,EACR,IAAI,EAAE,GAAG,IAAI,gBAAgB,IAAI,EAAE,EACnC,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,KAAK,EACV,SAAS,EAAC,SAAS,EACnB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,QAAQ,EAAE,CAAC,KAA0C,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAC9F,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,cAAc,EACxB,WAAW,EAAE,WAAW,GACxB,CACH,CAAC,CAAC;IAEL,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,CAAC,GAAG,0BAA0B,CAAC;IAC9G,MAAM,eAAe,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC;IAEvF,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CAAC,kCAAkC,EAAE,SAAS,CAAC,EAC5D,IAAI,EAAC,OAAO,qBACK,GAAG,OAAO,QAAQ,EACnC,MAAM,EAAE,eAAe,aAEtB,YAAY,EAAE,CAAC;gBACd,mGAAmG;gBACnG,8DAA8D;gBAC9D,GAAG,CAAC,eAAe,EAAE,gBAAgB,IAAI,eAAe,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,gBAAgB,EAAE,eAAe,CAAC,gBAAgB,EAAE,CAAC;gBAC/I,GAAG,CAAC,cAAc,KAAK,SAAS,IAAI,EAAE,cAAc,EAAE,CAAC;gBACvD,QAAQ,EAAE,cAAc;gBACxB,YAAY;aACb,CAAC,EACD,cAAc,CAAC,YAAY,CAAC,EAC5B,cAAc,CAAC,YAAY,CAAC,EAC7B,eAAK,SAAS,EAAC,iCAAiC,aAC7C,cAAc,CAAC,WAAW,CAAC,EAC3B,cAAc,CAAC,iBAAiB,CAAC,IAC9B,EACL,cAAc,CAAC,YAAY,CAAC,EAC5B,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,qBAAqB,CAAC,4BAA4B,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAC9H,qBACM,IAAI,EACR,IAAI,EAAE,GAAG,IAAI,IAAI,WAAW,CAAC,OAAO,EAAE,EACtC,KAAK,EAAE,KAAK,CAAC,OAAO,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACxE,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAC9B,YAAY,EAAC,SAAS,eACX,WAAW,EACtB,SAAS,EAAE,EAAE,CACX,+CAA+C,EAC/C,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,MAAM,CAAC,KAAK,EACvB,UAAU,CAAC,MAAM,CAAC,QAAQ,EAC1B,UAAU,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,EAC/B,UAAU,CAAC,MAAM,CAAC,UAAU,CAC7B,aAEA,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,CACvB,iBAAQ,KAAK,EAAC,EAAE,EAAC,QAAQ,kBACtB,UAAU,CAAC,qBAAqB,CAAC,4BAA4B,EAAE,oBAAoB,CAAC,GAC9E,CACV,EACA,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,CAAC,eAAe,IAAI,iBAAQ,KAAK,EAAE,KAAK,CAAC,OAAO,YAAG,KAAK,CAAC,OAAO,GAAU,EAClG,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC9B,iBAA0B,KAAK,EAAE,MAAM,CAAC,IAAI,YACzC,MAAM,CAAC,IAAI,IADD,MAAM,CAAC,IAAI,CAEf,CACV,CAAC,IACK,CACV,CAAC,EACD,eAAe,IAAI,CAClB,eAAK,SAAS,EAAC,iCAAiC,aAC7C,oBAAoB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EACpD,oBAAoB,CAAC,qBAAqB,CAAC,SAAS,CAAC,IAClD,CACP,IACG,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,+BAA+B,CAAC,WAAW,GAAG,iCAAiC,CAAC;AAEhF,kBAAkB;AAClB,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CACxC,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACtD,MAAM,SAAS,GAAG,8BAA8B,CAC9C,qBAAqB,CAAC,4BAA4B,EAClD,kBAAkB,CACnB,CAAC,MAAM,CAAC,CAAC;IACV,OAAO,KAAC,SAAS,OAAK,KAAK,EAAE,GAAG,EAAE,GAAG,GAAI,CAAC;AAC5C,CAAC,CACF,CAAC;AACF,gBAAgB,CAAC,WAAW,GAAG,kBAAkB,CAAC","sourcesContent":["/**\n * FormFieldAddress Component\n *\n * Edits a structured postal address declared with `z_address()`: one labelled input per part, the\n * multi-field address pattern (GOV.UK \"Addresses\") rather than a single free-text box nothing can\n * validate or compare.\n *\n * - Every part carries its HTML autofill token (`address-line1`, `address-level2`, `postal-code`,\n * `country`, …), so a browser or password manager fills the whole address in one gesture (WCAG\n * 1.3.5).\n * - The country is a native `<select>` of ISO 3166-1 alpha-2 codes with names from the active\n * locale (`Intl.DisplayNames`), restricted to the field's `countriesAllowed` and pre-selected from\n * its `defaultCountry`. A stored code outside that list is kept as an option rather than silently\n * replaced.\n * - The latitude/longitude pair is offered only when the field declares `withCoordinates`.\n * - Blur is reported when focus leaves the GROUP, not each part, so on-blur validation does not fire\n * between \"line 1\" and \"city\".\n * - A validation issue is shown under the PART it concerns (`partErrors`), with that input marked\n * invalid — a nested error summarised as one message for the whole group names nothing to fix.\n * - The group is named by the field's own label (`field-<name>-label`, rendered by FormFieldChrome),\n * so \"Town or city\" in a billing address and in a shipping address are distinguishable to a screen\n * reader. The first line keeps the `field-<name>` id the chrome label targets, so clicking the label\n * still focuses the address.\n *\n * Every part is held as a string draft while typing and composed into the value on each change:\n * optional parts left empty are omitted, and a half-typed coordinate becomes `NaN`, which the schema\n * refuses — the field shows an error instead of storing a point the user did not enter.\n *\n * ## The lookup slot (#1730, filled by #561)\n *\n * `renderLookup` is where an address LOOKUP renders — a vendor autocomplete such as a\n * `FRONTEND_ADDRESS_LOOKUP` provider component — above the parts. The field hands it an\n * {@link AddressFieldLookupHost} and nothing else: the field imports no provider code, resolves no\n * provider, and works exactly the same by hand when the slot is empty, refused or failing. That split\n * is the design, not a placeholder: the field owns the value, its validation and its persistence; a\n * lookup only SUGGESTS a whole address, which lands in the parts as if the person had typed it and\n * stays editable before anything is saved.\n */\n\nimport React, { forwardRef } from 'react';\n\nimport { cn } from '~wildo-frontend-lib/core/ui/cn';\nimport { useUI } from '~wildo-frontend-lib/core/ui/useUI';\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { InputRoot } from '~wildo-frontend-lib/components/form/controls/input';\nimport { FieldError, FieldLabel } from '~wildo-frontend-lib/components/form/chromes/field';\nimport { ControlSize, CorePresetNames, FormControlVariant, FrontendComponentType, UIBehavior } from '@wildo-ai/presets-components-models';\nimport { AddressCoordinatePart, AddressPart, getAddressMetadata, getCountries, type AddressValue } from '@wildo-ai/zod-decorators';\n\nimport { createComponentResolverWithRef } from '~wildo-frontend-lib/core/components-registry/component-resolver.frontend.helper';\nimport { ComponentPresetProps } from '~wildo-frontend-lib/core/components-registry/component-registry.frontend.schemas';\nimport type { ControlBaseProps } from '~wildo-frontend-lib/components/form/form-field-types';\n\n// --- Contract ---\n/** @wildo_source:part:start saas.frontend.form-field-address.lookup-slot facet:layer:frontend facet:family:component facet:audience:app-developer */\n/**\n * Props of `FormFieldAddress` (`@wildo-ai/saas-frontend-lib`), the control the framework renders for every\n * field declared with `z_address()`. Forms dispatch to it automatically; an application passes these\n * props itself only when it renders the control directly or fills its lookup slot.\n */\nexport interface FormFieldAddressProps extends Omit<ControlBaseProps, 'value' | 'onChange' | 'defaultValue'> {\n value?: AddressValue;\n /**\n * `undefined` is emitted when the user empties every part of a clearable field — the control's\n * \"no address\" gesture. A pre-selected country alone is not an entry and does not count.\n */\n onChange?: (value: AddressValue | undefined) => void;\n defaultValue?: AddressValue;\n /**\n * The resolved, displayable error of each part that has one, keyed by the part's dotted path inside\n * the value (`city`, `coordinates.longitude` — see `listAddressPartPaths`). Resolved by the form,\n * which owns touch/submit visibility; the control only places each message under its input.\n */\n partErrors?: Readonly<Record<string, string | undefined>>;\n /**\n * Renders an address LOOKUP (a vendor autocomplete) above the parts. Omitted, the field is the plain\n * multi-part control, and it stays fully usable by hand when a lookup is refused or fails. The field\n * decides nothing about which lookup this is and imports no provider code: whoever fills the slot\n * resolves the provider, its consent and its errors, and fills the field through\n * {@link AddressFieldLookupHost.applyAddress}.\n */\n renderLookup?: (host: AddressFieldLookupHost) => React.ReactNode;\n}\n\n/**\n * What an address field hands to the lookup rendered in its `renderLookup` slot.\n *\n * Deliberately provider-free: every member is the FIELD's own knowledge (its `z_address()` options and\n * its editability) plus one way to fill it. A vendor lookup narrows its suggestions to\n * `countriesAllowed`, ranks by `defaultCountry`, and calls `applyAddress` with the place the person chose.\n */\nexport interface AddressFieldLookupHost {\n /** ISO 3166-1 alpha-2 codes the field accepts, from `z_address({ countriesAllowed })`. Absent means any; never empty. */\n readonly countriesAllowed?: readonly string[];\n /** The field's default country, from `z_address({ defaultCountry })` — a ranking hint for suggestions. */\n readonly defaultCountry?: string;\n /** True while the field is disabled or read-only. A lookup must not offer to fill it then; `applyAddress` ignores the call. */\n readonly disabled: boolean;\n /**\n * Replace every TEXT part and the country with the chosen address, as though the person had typed\n * it, and emit the value.\n *\n * Every text part is replaced, including the ones the chosen address omits: a `line2` left over from\n * the previous address describes a different place, so keeping it would compose an address that exists\n * nowhere.\n *\n * Coordinates are ALWAYS cleared, whatever `address` carries. The previous geocode describes the previous\n * place, and a lookup's geocode is never stored: vendors' terms either forbid storing it or allow it for a\n * limited time, while a stored `coordinates` has no expiry, so nothing would ever delete it on the\n * vendor's clock. The person can still enter coordinates by hand where the field offers them.\n *\n * The value is NOT validated here: it goes through the same form validation as a typed address, so a\n * country outside `countriesAllowed` shows the same error under the country part. A caller that wants to\n * refuse such a value before it reaches the field (the provider path does) validates it first.\n */\n applyAddress(address: AddressValue): void;\n}\n/** @wildo_source:part:end saas.frontend.form-field-address.lookup-slot */\n\nexport type FormFieldAddressRef = HTMLInputElement;\n\n/** The free-text parts, in the order the form presents them. */\ntype AddressTextPart = AddressPart.LINE1 | AddressPart.LINE2 | AddressPart.CITY | AddressPart.STATE | AddressPart.POSTAL_CODE;\n\ninterface AddressTextPartControl {\n part: AddressTextPart;\n /** HTML autofill field name for this part. */\n autoComplete: string;\n}\n\nconst ADDRESS_TEXT_PART_CONTROLS: readonly AddressTextPartControl[] = [\n { part: AddressPart.LINE1, autoComplete: 'address-line1' },\n { part: AddressPart.LINE2, autoComplete: 'address-line2' },\n { part: AddressPart.CITY, autoComplete: 'address-level2' },\n { part: AddressPart.STATE, autoComplete: 'address-level1' },\n { part: AddressPart.POSTAL_CODE, autoComplete: 'postal-code' },\n];\n\n/** What the user has typed, part by part, before it is composed into a value. */\ntype AddressDraft = Record<AddressPart, string> & Record<AddressCoordinatePart, string>;\n\nfunction draftFromValue(value: AddressValue | undefined, defaultCountry: string | undefined): AddressDraft {\n return {\n [AddressPart.LINE1]: value?.line1 ?? '',\n [AddressPart.LINE2]: value?.line2 ?? '',\n [AddressPart.CITY]: value?.city ?? '',\n [AddressPart.STATE]: value?.state ?? '',\n [AddressPart.POSTAL_CODE]: value?.postalCode ?? '',\n [AddressPart.COUNTRY]: value?.country ?? defaultCountry ?? '',\n [AddressCoordinatePart.LATITUDE]: value?.coordinates ? String(value.coordinates.latitude) : '',\n [AddressCoordinatePart.LONGITUDE]: value?.coordinates ? String(value.coordinates.longitude) : '',\n };\n}\n\n/** A coordinate the user left empty while typing the other one is `NaN`, never a silent `0`. */\nfunction coordinateFromDraft(text: string): number {\n return text.trim() === '' ? Number.NaN : Number(text);\n}\n\n/**\n * Compose the draft into the value the form stores. Returns `null` when nothing was entered, so the\n * caller decides between the clear gesture and an empty (schema-refused) value.\n */\nfunction composeAddress(draft: AddressDraft): AddressValue | null {\n const hasText = ADDRESS_TEXT_PART_CONTROLS.some(({ part }) => draft[part].trim() !== '');\n const hasCoordinates = draft.latitude.trim() !== '' || draft.longitude.trim() !== '';\n if (!hasText && !hasCoordinates) return null;\n return {\n line1: draft.line1,\n ...(draft.line2 !== '' && { line2: draft.line2 }),\n city: draft.city,\n ...(draft.state !== '' && { state: draft.state }),\n ...(draft.postalCode !== '' && { postalCode: draft.postalCode }),\n country: draft.country,\n ...(hasCoordinates && {\n coordinates: { latitude: coordinateFromDraft(draft.latitude), longitude: coordinateFromDraft(draft.longitude) },\n }),\n };\n}\n\ninterface CountryOption {\n code: string;\n name: string;\n}\n\n/**\n * Selectable countries with locale-aware names, collated in the active language.\n *\n * The code list is the one the phone field uses (libphonenumber's region set). It covers every\n * inhabited ISO 3166-1 region; a stored code it lacks is still offered by the render below.\n */\nfunction buildCountryOptions(locale: string, countriesAllowed: readonly string[] | undefined): CountryOption[] {\n let displayNames: Intl.DisplayNames | undefined;\n try {\n displayNames = new Intl.DisplayNames([locale], { type: 'region' });\n } catch {\n displayNames = undefined;\n }\n const collator = new Intl.Collator(locale);\n const codes = countriesAllowed && countriesAllowed.length > 0 ? [...countriesAllowed] : getCountries();\n return codes\n .map((code) => ({ code, name: displayNames?.of(code) ?? code }))\n .sort((a, b) => collator.compare(a.name, b.name));\n}\n\n/**\n * FormFieldAddress component\n *\n * One labelled control per address part plus a country selector. Emits `AddressValue`.\n */\nexport const FormFieldAddress_Preset_Default = React.forwardRef<FormFieldAddressRef, FormFieldAddressProps>(\n (\n {\n schema,\n name,\n disabled,\n readOnly,\n className,\n value: controlledValue,\n onChange,\n onBlur,\n defaultValue,\n autoFocus,\n clearable,\n partErrors,\n renderLookup,\n controlSize = ControlSize.MD,\n },\n ref\n ): React.JSX.Element => {\n const { tComponent, currentLanguage } = useI18n({ component: [FrontendComponentType.LOW_LEVEL_FORM_FIELD_ADDRESS] });\n const { getRecipe } = useUI();\n const formRecipe = getRecipe(UIBehavior.FORM_CONTROL, FormControlVariant.DEFAULT);\n\n const addressMetadata = getAddressMetadata(schema);\n const defaultCountry = addressMetadata?.defaultCountry;\n const withCoordinates = addressMetadata?.withCoordinates === true;\n\n const externalValue = controlledValue ?? defaultValue;\n const [draft, setDraft] = React.useState<AddressDraft>(() => draftFromValue(externalValue, defaultCountry));\n /**\n * The latest draft, updated synchronously on every change. Change handlers build the next draft\n * from THIS rather than from the render's `draft`: browser autofill fills several parts in one\n * gesture, and a handler reading the render-time draft would overwrite the parts filled just before.\n */\n const draftRef = React.useRef<AddressDraft>(draft);\n\n /**\n * Our own emits come back as `controlledValue`. Re-deriving the draft from that echo would clobber\n * in-progress typing (an optional part emptied mid-edit is omitted from the value, and a half-typed\n * coordinate is `NaN`), so a resync happens only for a value this control did not emit.\n */\n const lastEmittedKeyRef = React.useRef<string>(JSON.stringify(externalValue ?? null));\n const externalKey = JSON.stringify(externalValue ?? null);\n React.useEffect(() => {\n if (externalKey === lastEmittedKeyRef.current) return;\n lastEmittedKeyRef.current = externalKey;\n const resynced = draftFromValue(externalValue, defaultCountry);\n draftRef.current = resynced;\n setDraft(resynced);\n // `externalValue` is represented by `externalKey`; depending on the object would resync on identity.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [externalKey, defaultCountry]);\n\n const countryOptions = React.useMemo(\n () => buildCountryOptions(currentLanguage, addressMetadata?.countriesAllowed),\n [currentLanguage, addressMetadata?.countriesAllowed]\n );\n\n /** Adopt a new draft and emit the value it composes — the one path every edit, typed or looked up, takes. */\n const commitDraft = React.useCallback(\n (nextDraft: AddressDraft) => {\n draftRef.current = nextDraft;\n setDraft(nextDraft);\n const composed = composeAddress(nextDraft);\n const emitted = composed ?? (clearable ? undefined : { line1: '', city: '', country: nextDraft.country });\n lastEmittedKeyRef.current = JSON.stringify(emitted ?? null);\n onChange?.(emitted);\n },\n [clearable, onChange]\n );\n\n const commitPart = React.useCallback(\n (part: AddressPart | AddressCoordinatePart, text: string) => commitDraft({ ...draftRef.current, [part]: text }),\n [commitDraft]\n );\n\n const lookupDisabled = disabled === true || readOnly === true;\n const applyAddress = React.useCallback(\n (address: AddressValue) => {\n // Checked here as well as advertised through `disabled`: a lookup that ignored the flag must still\n // not be able to rewrite a field the person cannot edit.\n if (lookupDisabled) return;\n // `coordinates` is dropped before the draft is built: see the `applyAddress` contract above.\n const { coordinates: _lookupGeocode, ...textParts } = address;\n commitDraft(draftFromValue(textParts, defaultCountry));\n },\n [commitDraft, defaultCountry, lookupDisabled]\n );\n\n const handleGroupBlur = React.useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (event.currentTarget.contains(event.relatedTarget as Node | null)) return;\n onBlur?.();\n },\n [onBlur]\n );\n\n const fieldId = `field-${name}`;\n const partId = (path: string): string => (path === AddressPart.LINE1 ? fieldId : `${fieldId}-${path.replace('.', '-')}`);\n const labelClassName = 'text-sm text-muted-foreground';\n\n /** Label, control and the part's own error, with the error linked to the control. */\n const renderPart = (path: string, label: string, control: (a11y: { id: string; 'aria-invalid'?: true; 'aria-describedby'?: string }) => React.ReactNode) => {\n const id = partId(path);\n const error = partErrors?.[path];\n const errorId = `${id}-error`;\n return (\n <div key={path} className=\"flex flex-col gap-1\">\n <FieldLabel htmlFor={id} className={labelClassName}>\n {label}\n </FieldLabel>\n {control({ id, ...(error && { 'aria-invalid': true as const, 'aria-describedby': errorId }) })}\n {error && <FieldError id={errorId}>{error}</FieldError>}\n </div>\n );\n };\n\n const renderTextPart = ({ part, autoComplete }: AddressTextPartControl): React.ReactNode =>\n renderPart(part, tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_ADDRESS, part), (a11y) => (\n <InputRoot\n {...a11y}\n ref={part === AddressPart.LINE1 ? ref : undefined}\n name={`${name}.${part}`}\n type=\"text\"\n value={draft[part]}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) => commitPart(part, event.target.value)}\n disabled={disabled}\n readOnly={readOnly}\n autoComplete={autoComplete}\n autoFocus={part === AddressPart.LINE1 ? autoFocus : undefined}\n controlSize={controlSize}\n />\n ));\n\n const renderCoordinatePart = (part: AddressCoordinatePart): React.ReactNode =>\n renderPart(`coordinates.${part}`, tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_ADDRESS, part), (a11y) => (\n <InputRoot\n {...a11y}\n name={`${name}.coordinates.${part}`}\n type=\"number\"\n step=\"any\"\n inputMode=\"decimal\"\n value={draft[part]}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) => commitPart(part, event.target.value)}\n disabled={disabled}\n readOnly={readOnly}\n className=\"tabular-nums\"\n controlSize={controlSize}\n />\n ));\n\n const [line1Control, line2Control, cityControl, stateControl, postalCodeControl] = ADDRESS_TEXT_PART_CONTROLS;\n const countryIsListed = countryOptions.some((option) => option.code === draft.country);\n\n return (\n <div\n className={cn('flex w-full flex-col gap-element', className)}\n role=\"group\"\n aria-labelledby={`${fieldId}-label`}\n onBlur={handleGroupBlur}\n >\n {renderLookup?.({\n // An empty list means \"any country\" to this field (see `buildCountryOptions`), so it is not handed\n // over as a list a lookup could read as \"no country allowed\".\n ...(addressMetadata?.countriesAllowed && addressMetadata.countriesAllowed.length > 0 && { countriesAllowed: addressMetadata.countriesAllowed }),\n ...(defaultCountry !== undefined && { defaultCountry }),\n disabled: lookupDisabled,\n applyAddress,\n })}\n {renderTextPart(line1Control)}\n {renderTextPart(line2Control)}\n <div className=\"grid gap-element sm:grid-cols-2\">\n {renderTextPart(cityControl)}\n {renderTextPart(postalCodeControl)}\n </div>\n {renderTextPart(stateControl)}\n {renderPart(AddressPart.COUNTRY, tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_ADDRESS, AddressPart.COUNTRY), (a11y) => (\n <select\n {...a11y}\n name={`${name}.${AddressPart.COUNTRY}`}\n value={draft.country}\n onChange={(event) => commitPart(AddressPart.COUNTRY, event.target.value)}\n disabled={disabled || readOnly}\n autoComplete=\"country\"\n data-size={controlSize}\n className={cn(\n 'flex w-full rounded-md bg-transparent text-sm',\n formRecipe.base,\n formRecipe.states.focus,\n formRecipe.states.disabled,\n formRecipe.sizes?.[controlSize],\n formRecipe.motion.transition\n )}\n >\n {draft.country === '' && (\n <option value=\"\" disabled>\n {tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_ADDRESS, 'countryPlaceholder')}\n </option>\n )}\n {draft.country !== '' && !countryIsListed && <option value={draft.country}>{draft.country}</option>}\n {countryOptions.map((option) => (\n <option key={option.code} value={option.code}>\n {option.name}\n </option>\n ))}\n </select>\n ))}\n {withCoordinates && (\n <div className=\"grid gap-element sm:grid-cols-2\">\n {renderCoordinatePart(AddressCoordinatePart.LATITUDE)}\n {renderCoordinatePart(AddressCoordinatePart.LONGITUDE)}\n </div>\n )}\n </div>\n );\n }\n);\n\nFormFieldAddress_Preset_Default.displayName = 'FormFieldAddress_Preset_Default';\n\n// --- Wrapper ---\nexport const FormFieldAddress = forwardRef<FormFieldAddressRef, FormFieldAddressProps & ComponentPresetProps>(\n ({ preset = CorePresetNames.DEFAULT, ...props }, ref) => {\n const Component = createComponentResolverWithRef<FormFieldAddressProps, FormFieldAddressRef>(\n FrontendComponentType.LOW_LEVEL_FORM_FIELD_ADDRESS,\n 'FormFieldAddress'\n )(preset);\n return <Component {...props} ref={ref} />;\n }\n);\nFormFieldAddress.displayName = 'FormFieldAddress';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"form-field-address.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/fields/form-field-address.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,8BAA8B,EAAE,mBAAmB,EA8C/D,CAAC"}
1
+ {"version":3,"file":"form-field-address.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/fields/form-field-address.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiE,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAMvK,eAAO,MAAM,8BAA8B,EAAE,mBAAmB,EAyG/D,CAAC"}
@@ -1,4 +1,4 @@
1
- import { FrontendComponentType, LabelKind, registerComponentLabels } from '@wildo-ai/presets-components-models';
1
+ import { FormFieldAddressLookupLabel, FrontendComponentType, LabelKind, registerComponentLabels } from '@wildo-ai/presets-components-models';
2
2
  // Companion-only label metadata for this component: keys + params + (where
3
3
  // authored) per-key purpose / kind / variable meaning. Statically scanned by
4
4
  // the dev companion; NOT imported at runtime, so it never ships in the bundle.
@@ -48,6 +48,65 @@ export const LowLevelFormFieldAddressLabels = [
48
48
  kind: LabelKind.LABEL,
49
49
  purpose: 'Visible label of the longitude input, shown only when the address field offers coordinates',
50
50
  },
51
+ // The address LOOKUP (#561), rendered above the parts only when a lookup provider is live.
52
+ {
53
+ ref: FormFieldAddressLookupLabel.LOOKUP_LABEL,
54
+ kind: LabelKind.LABEL,
55
+ purpose: 'Visible label of the optional search box above the address parts, where the person finds their address by typing part of it instead of filling every part',
56
+ },
57
+ {
58
+ ref: FormFieldAddressLookupLabel.LOOKUP_PLACEHOLDER,
59
+ kind: LabelKind.PLACEHOLDER,
60
+ purpose: 'Text of the closed address search control, inviting the person to search for their address',
61
+ },
62
+ {
63
+ ref: FormFieldAddressLookupLabel.LOOKUP_SEARCH_PLACEHOLDER,
64
+ kind: LabelKind.PLACEHOLDER,
65
+ purpose: 'Placeholder of the text box inside the open address suggestion list, asking the person to start typing their address',
66
+ },
67
+ {
68
+ ref: FormFieldAddressLookupLabel.LOOKUP_TYPE_MORE,
69
+ kind: LabelKind.EMPTY_STATE,
70
+ purpose: 'Shown in the suggestion list until the person has typed enough characters for a search to run',
71
+ params: [{ key: 'minimum', meaning: 'The number of characters needed before suggestions are searched' }],
72
+ },
73
+ {
74
+ ref: FormFieldAddressLookupLabel.LOOKUP_NO_RESULTS,
75
+ kind: LabelKind.EMPTY_STATE,
76
+ purpose: 'Shown in the suggestion list when no address matches what was typed; the person can still fill the parts below by hand',
77
+ },
78
+ {
79
+ ref: FormFieldAddressLookupLabel.LOOKUP_UNAVAILABLE,
80
+ kind: LabelKind.MESSAGE,
81
+ purpose: 'Status shown when address search cannot run right now; tells the person to enter the address in the parts below, which always work',
82
+ },
83
+ {
84
+ ref: FormFieldAddressLookupLabel.LOOKUP_ADDRESS_REFUSED,
85
+ kind: LabelKind.MESSAGE,
86
+ purpose: 'Status shown when the chosen suggestion cannot fill this address (for example a country the field does not accept, or a place with no street address); tells the person to enter it below',
87
+ },
88
+ {
89
+ ref: FormFieldAddressLookupLabel.LOOKUP_ATTRIBUTION,
90
+ kind: LabelKind.ARIA,
91
+ purpose: 'Sentence read by screen readers beside the address suggestions, naming the service they come from (the service\'s own mark is shown visually, untranslated)',
92
+ params: [{ key: 'mark', meaning: "The service's own required attribution text, for example Google Maps; a trademark, reproduced exactly and never translated" }],
93
+ notes: ['Keep {{mark}} exactly as given; do not translate, quote or restyle it.'],
94
+ },
95
+ {
96
+ ref: FormFieldAddressLookupLabel.LOOKUP_CONSENT_REQUIRED,
97
+ kind: LabelKind.MESSAGE,
98
+ purpose: 'Status shown when the address search service can only be used after the person agrees to some data uses; names the service and the uses',
99
+ params: [
100
+ { key: 'provider', meaning: 'Name of the address search service' },
101
+ { key: 'purposes', meaning: 'Comma-separated names of the data uses the person has not agreed to' },
102
+ ],
103
+ },
104
+ {
105
+ ref: FormFieldAddressLookupLabel.LOOKUP_CONSENT_GRANT,
106
+ kind: LabelKind.BUTTON,
107
+ purpose: 'Button that records the person\'s agreement to exactly the listed data uses, so the address search can load',
108
+ params: [{ key: 'purposes', meaning: 'Comma-separated names of the data uses being agreed to' }],
109
+ },
51
110
  ];
52
111
  registerComponentLabels(FrontendComponentType.LOW_LEVEL_FORM_FIELD_ADDRESS, LowLevelFormFieldAddressLabels);
53
112
  //# sourceMappingURL=form-field-address.labels.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-field-address.labels.js","sourceRoot":"","sources":["../../../../../../src/components/form/fields/form-field-address.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAA4B,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAE1I,2EAA2E;AAC3E,6EAA6E;AAC7E,+EAA+E;AAE/E,MAAM,CAAC,MAAM,8BAA8B,GAA0B;IACnE;QACE,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,SAAS,CAAC,KAAK;QACrB,OAAO,EAAE,iGAAiG;KAC3G;IACD;QACE,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,SAAS,CAAC,KAAK;QACrB,OAAO,EAAE,2HAA2H;KACrI;IACD;QACE,GAAG,EAAE,MAAM;QACX,IAAI,EAAE,SAAS,CAAC,KAAK;QACrB,OAAO,EAAE,uDAAuD;KACjE;IACD;QACE,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,SAAS,CAAC,KAAK;QACrB,OAAO,EAAE,8HAA8H;KACxI;IACD;QACE,GAAG,EAAE,YAAY;QACjB,IAAI,EAAE,SAAS,CAAC,KAAK;QACrB,OAAO,EAAE,6GAA6G;KACvH;IACD;QACE,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS,CAAC,KAAK;QACrB,OAAO,EAAE,4DAA4D;KACtE;IACD;QACE,GAAG,EAAE,oBAAoB;QACzB,IAAI,EAAE,SAAS,CAAC,WAAW;QAC3B,OAAO,EAAE,2HAA2H;KACrI;IACD;QACE,GAAG,EAAE,UAAU;QACf,IAAI,EAAE,SAAS,CAAC,KAAK;QACrB,OAAO,EAAE,2FAA2F;KACrG;IACD;QACE,GAAG,EAAE,WAAW;QAChB,IAAI,EAAE,SAAS,CAAC,KAAK;QACrB,OAAO,EAAE,4FAA4F;KACtG;CACF,CAAC;AACF,uBAAuB,CAAC,qBAAqB,CAAC,4BAA4B,EAAE,8BAA8B,CAAC,CAAC","sourcesContent":["import { FrontendComponentType, LabelKind, type LabellingUnitaryDef, registerComponentLabels } from '@wildo-ai/presets-components-models';\n\n// Companion-only label metadata for this component: keys + params + (where\n// authored) per-key purpose / kind / variable meaning. Statically scanned by\n// the dev companion; NOT imported at runtime, so it never ships in the bundle.\n\nexport const LowLevelFormFieldAddressLabels: LabellingUnitaryDef[] = [\n {\n ref: 'line1',\n kind: LabelKind.LABEL,\n purpose: 'Visible label of the first address line (street and number) inside the structured address input',\n },\n {\n ref: 'line2',\n kind: LabelKind.LABEL,\n purpose: 'Visible label of the second address line (building, floor, apartment); the part is always optional, and the label says so',\n },\n {\n ref: 'city',\n kind: LabelKind.LABEL,\n purpose: 'Visible label of the town or city part of the address',\n },\n {\n ref: 'state',\n kind: LabelKind.LABEL,\n purpose: \"Visible label of the country's first subdivision (state, province, region or county); always optional, and the label says so\",\n },\n {\n ref: 'postalCode',\n kind: LabelKind.LABEL,\n purpose: 'Visible label of the postal code part; optional because not every country issues one, and the label says so',\n },\n {\n ref: 'country',\n kind: LabelKind.LABEL,\n purpose: 'Visible label of the country selector of the address input',\n },\n {\n ref: 'countryPlaceholder',\n kind: LabelKind.PLACEHOLDER,\n purpose: 'Disabled first option of the country selector, shown while no country is chosen and the field declares no default country',\n },\n {\n ref: 'latitude',\n kind: LabelKind.LABEL,\n purpose: 'Visible label of the latitude input, shown only when the address field offers coordinates',\n },\n {\n ref: 'longitude',\n kind: LabelKind.LABEL,\n purpose: 'Visible label of the longitude input, shown only when the address field offers coordinates',\n },\n];\nregisterComponentLabels(FrontendComponentType.LOW_LEVEL_FORM_FIELD_ADDRESS, LowLevelFormFieldAddressLabels);\n"]}
1
+ {"version":3,"file":"form-field-address.labels.js","sourceRoot":"","sources":["../../../../../../src/components/form/fields/form-field-address.labels.ts"],"names":[],"mappings":"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","sourcesContent":["import { FormFieldAddressLookupLabel, FrontendComponentType, LabelKind, type LabellingUnitaryDef, registerComponentLabels } from '@wildo-ai/presets-components-models';\n\n// Companion-only label metadata for this component: keys + params + (where\n// authored) per-key purpose / kind / variable meaning. Statically scanned by\n// the dev companion; NOT imported at runtime, so it never ships in the bundle.\n\nexport const LowLevelFormFieldAddressLabels: LabellingUnitaryDef[] = [\n {\n ref: 'line1',\n kind: LabelKind.LABEL,\n purpose: 'Visible label of the first address line (street and number) inside the structured address input',\n },\n {\n ref: 'line2',\n kind: LabelKind.LABEL,\n purpose: 'Visible label of the second address line (building, floor, apartment); the part is always optional, and the label says so',\n },\n {\n ref: 'city',\n kind: LabelKind.LABEL,\n purpose: 'Visible label of the town or city part of the address',\n },\n {\n ref: 'state',\n kind: LabelKind.LABEL,\n purpose: \"Visible label of the country's first subdivision (state, province, region or county); always optional, and the label says so\",\n },\n {\n ref: 'postalCode',\n kind: LabelKind.LABEL,\n purpose: 'Visible label of the postal code part; optional because not every country issues one, and the label says so',\n },\n {\n ref: 'country',\n kind: LabelKind.LABEL,\n purpose: 'Visible label of the country selector of the address input',\n },\n {\n ref: 'countryPlaceholder',\n kind: LabelKind.PLACEHOLDER,\n purpose: 'Disabled first option of the country selector, shown while no country is chosen and the field declares no default country',\n },\n {\n ref: 'latitude',\n kind: LabelKind.LABEL,\n purpose: 'Visible label of the latitude input, shown only when the address field offers coordinates',\n },\n {\n ref: 'longitude',\n kind: LabelKind.LABEL,\n purpose: 'Visible label of the longitude input, shown only when the address field offers coordinates',\n },\n // The address LOOKUP (#561), rendered above the parts only when a lookup provider is live.\n {\n ref: FormFieldAddressLookupLabel.LOOKUP_LABEL,\n kind: LabelKind.LABEL,\n purpose: 'Visible label of the optional search box above the address parts, where the person finds their address by typing part of it instead of filling every part',\n },\n {\n ref: FormFieldAddressLookupLabel.LOOKUP_PLACEHOLDER,\n kind: LabelKind.PLACEHOLDER,\n purpose: 'Text of the closed address search control, inviting the person to search for their address',\n },\n {\n ref: FormFieldAddressLookupLabel.LOOKUP_SEARCH_PLACEHOLDER,\n kind: LabelKind.PLACEHOLDER,\n purpose: 'Placeholder of the text box inside the open address suggestion list, asking the person to start typing their address',\n },\n {\n ref: FormFieldAddressLookupLabel.LOOKUP_TYPE_MORE,\n kind: LabelKind.EMPTY_STATE,\n purpose: 'Shown in the suggestion list until the person has typed enough characters for a search to run',\n params: [{ key: 'minimum', meaning: 'The number of characters needed before suggestions are searched' }],\n },\n {\n ref: FormFieldAddressLookupLabel.LOOKUP_NO_RESULTS,\n kind: LabelKind.EMPTY_STATE,\n purpose: 'Shown in the suggestion list when no address matches what was typed; the person can still fill the parts below by hand',\n },\n {\n ref: FormFieldAddressLookupLabel.LOOKUP_UNAVAILABLE,\n kind: LabelKind.MESSAGE,\n purpose: 'Status shown when address search cannot run right now; tells the person to enter the address in the parts below, which always work',\n },\n {\n ref: FormFieldAddressLookupLabel.LOOKUP_ADDRESS_REFUSED,\n kind: LabelKind.MESSAGE,\n purpose: 'Status shown when the chosen suggestion cannot fill this address (for example a country the field does not accept, or a place with no street address); tells the person to enter it below',\n },\n {\n ref: FormFieldAddressLookupLabel.LOOKUP_ATTRIBUTION,\n kind: LabelKind.ARIA,\n purpose: 'Sentence read by screen readers beside the address suggestions, naming the service they come from (the service\\'s own mark is shown visually, untranslated)',\n params: [{ key: 'mark', meaning: \"The service's own required attribution text, for example Google Maps; a trademark, reproduced exactly and never translated\" }],\n notes: ['Keep {{mark}} exactly as given; do not translate, quote or restyle it.'],\n },\n {\n ref: FormFieldAddressLookupLabel.LOOKUP_CONSENT_REQUIRED,\n kind: LabelKind.MESSAGE,\n purpose: 'Status shown when the address search service can only be used after the person agrees to some data uses; names the service and the uses',\n params: [\n { key: 'provider', meaning: 'Name of the address search service' },\n { key: 'purposes', meaning: 'Comma-separated names of the data uses the person has not agreed to' },\n ],\n },\n {\n ref: FormFieldAddressLookupLabel.LOOKUP_CONSENT_GRANT,\n kind: LabelKind.BUTTON,\n purpose: 'Button that records the person\\'s agreement to exactly the listed data uses, so the address search can load',\n params: [{ key: 'purposes', meaning: 'Comma-separated names of the data uses being agreed to' }],\n },\n];\nregisterComponentLabels(FrontendComponentType.LOW_LEVEL_FORM_FIELD_ADDRESS, LowLevelFormFieldAddressLabels);\n"]}
@@ -28,18 +28,6 @@ export type FormFieldFileRef = HTMLDivElement;
28
28
  * - Upload cancellation support
29
29
  */
30
30
  export declare const FormFieldFile_Preset_Default: React.ForwardRefExoticComponent<FormFieldFilePresetProps & React.RefAttributes<HTMLDivElement>>;
31
- /**
32
- * Schema-aware FormFieldFile component.
33
- *
34
- * This wrapper sits between the generic FormField orchestrator and the preset
35
- * component. It is the proper boundary for injecting engine-level concerns:
36
- * - Authenticated HTTP operations (upload, metadata, delete) via httpClient
37
- * - Component preset resolution via the registry
38
- *
39
- * The preset component (presets-components) never imports the HTTP client directly,
40
- * maintaining separation of concerns. The generic FormField never deals with
41
- * file-specific HTTP concerns.
42
- */
43
31
  export declare const FormFieldFile: React.ForwardRefExoticComponent<Omit<FormFieldFilePresetProps, "httpOperations"> & {
44
32
  httpOperations?: FileHttpOperations;
45
33
  } & ComponentPresetProps & React.RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"form-field-file.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/fields/form-field-file.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAGlD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kFAAkF,CAAA;AAEvH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,sDAAsD,CAAA;AAUhH,OAAO,EAIL,SAAS,EAIT,kBAAkB,EAOnB,MAAM,0BAA0B,CAAA;AAWjC,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,UAAU,GAAG,cAAc,CAAC;IAC7G,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAA;IAC5C,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,SAAS,EAAE,kBAAkB,CAAA;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;IACvD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,EAAE,kBAAkB,CAAA;CACnC;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,EAAE,gBAAgB,CAAC,GAAG;IAClF,cAAc,CAAC,EAAE,kBAAkB,CAAA;CACpC,GAAG,oBAAoB,CAAA;AAExB,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAA;AA6F7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,iGAk9CvC,CAAA;AAGF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa;qBA5kDP,kBAAkB;+DA6nDnC,CAAA"}
1
+ {"version":3,"file":"form-field-file.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/fields/form-field-file.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAGlD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kFAAkF,CAAA;AAEvH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,sDAAsD,CAAA;AAUhH,OAAO,EAIL,SAAS,EAIT,kBAAkB,EAOnB,MAAM,0BAA0B,CAAA;AAajC,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,UAAU,GAAG,cAAc,CAAC;IAC7G,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAA;IAC5C,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,SAAS,EAAE,kBAAkB,CAAA;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;IACvD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,EAAE,kBAAkB,CAAA;CACnC;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,EAAE,gBAAgB,CAAC,GAAG;IAClF,cAAc,CAAC,EAAE,kBAAkB,CAAA;CACpC,GAAG,oBAAoB,CAAA;AAExB,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAA;AA8F7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,iGAy+CvC,CAAA;AAqBF,eAAO,MAAM,aAAa;qBA1mDP,kBAAkB;+DA2pDnC,CAAA"}
@@ -18,6 +18,8 @@ import { resolveFormFieldFileProviderConstraints } from './form-field-file-provi
18
18
  import { describeAcceptedFileKinds } from './accepted-file-kinds-description.frontend.utils.js';
19
19
  import { ProviderFilePickerHost } from '../../../core/external-providers/ProviderFilePickerHost.js';
20
20
  import { ProviderFrontendSelectionDelivery } from '@wildo-ai/saas-models/public-runtime';
21
+ import { CoreResourceType, UserPrivacySchema } from '@wildo-ai/saas-models';
22
+ import { getZodObjectShape } from '@wildo-ai/zod-decorators';
21
23
  import { ImageCrop } from '../../../components/form/controls/file/image-crop.js';
22
24
  import { canExportWithinAllowedMimeTypes, isCroppableRasterImageFile } from '../../../components/form/controls/file/image-crop.frontend.utils.js';
23
25
  /** Type guard to check if value is a single file */
@@ -60,12 +62,13 @@ function hasActionableSingleFileEndpoint(endpoints, currentFileId) {
60
62
  function hasActionableMultipleFileEndpoint(endpoints) {
61
63
  return Boolean(endpoints.upload);
62
64
  }
63
- function getNeutralFileAttachmentLabel(filename, t) {
65
+ function getNeutralFileAttachmentLabel(filename, fileAttachedLabel) {
64
66
  if (filename && filename.trim() !== '') {
65
67
  return filename;
66
68
  }
67
69
  // Do not expose internal file ids in fallback UI when metadata is unavailable.
68
- return t('File attached') ?? 'File attached';
70
+ // The words are the component's `file_attached` label, resolved by the caller.
71
+ return fileAttachedLabel;
69
72
  }
70
73
  function getSafeFileMutationErrorMessage(fallbackMessage, _err) {
71
74
  return _err instanceof FileReadinessError ? _err.message : fallbackMessage;
@@ -82,9 +85,10 @@ function getSafeFileMutationErrorMessage(fallbackMessage, _err) {
82
85
  * - Upload cancellation support
83
86
  */
84
87
  export const FormFieldFile_Preset_Default = React.forwardRef(({ schema, name, value: controlledValue, onChange, onBlur, defaultValue, disabled = false, readOnly, className, validationMode: validationModeProp, endpoints, uploadButtonText, replaceButtonText, onValidationError, required, httpOperations, }, ref) => {
85
- const { t, tErrorValidation, tComponent, isReady } = useI18n({
88
+ const { t, tErrorValidation, tComponent, tResourceFieldEnumValue, isReady } = useI18n({
86
89
  component: FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE,
87
- keys: ['errors_validation'],
90
+ // `system_enums` carries the consent purposes' words, shown when a provider waits on consent (#1702).
91
+ keys: ['errors_validation', 'system_enums'],
88
92
  });
89
93
  const { frontendProviderRegistry } = useApplication();
90
94
  const { renderIcon } = useIconRegistry();
@@ -95,7 +99,11 @@ export const FormFieldFile_Preset_Default = React.forwardRef(({ schema, name, va
95
99
  const dragDropLabel = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'drag_and_drop');
96
100
  const removeLabel = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'remove');
97
101
  const uploadFailedMessage = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'upload_failed');
98
- const metadataLoadFailedMessage = t('Unable to load file details') ?? 'Unable to load file details';
102
+ // Also an equality sentinel below (`current === metadataLoadFailedMessage`): the comparison is on
103
+ // the RESOLVED words, which is what `internalError` holds, never on the key.
104
+ const metadataLoadFailedMessage = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'metadata_load_failed');
105
+ const uploadsUnavailableMessage = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'uploads_unavailable');
106
+ const fileAttachedLabel = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'file_attached');
99
107
  // Get file metadata from schema
100
108
  const fileSchemaMetadata = getFileMetadata(schema);
101
109
  // The FIELD's own constraints. A provider's declared limits are laid under
@@ -343,7 +351,7 @@ export const FormFieldFile_Preset_Default = React.forwardRef(({ schema, name, va
343
351
  const generation = readinessGeneration.current;
344
352
  const uploadUrl = resolveSingleFileUploadUrl(endpoints, currentFileId);
345
353
  if (!uploadUrl) {
346
- setInternalError(t('File uploads are unavailable for this field') ?? 'File uploads are unavailable for this field');
354
+ setInternalError(uploadsUnavailableMessage);
347
355
  return;
348
356
  }
349
357
  // Validate first
@@ -417,14 +425,14 @@ export const FormFieldFile_Preset_Default = React.forwardRef(({ schema, name, va
417
425
  setUploadingFiles(previous => { const next = new Map(previous); next.delete(tempId); return next; });
418
426
  setUploadProgress(0);
419
427
  }
420
- }, [currentFileId, endpoints, isControlled, onChange, t, validateFile, validationMode, schema, tErrorValidation, uploadSingleFile, cancelReadiness, onValidationError, processingMessage, uploadFailedMessage]);
428
+ }, [currentFileId, endpoints, isControlled, onChange, uploadsUnavailableMessage, validateFile, validationMode, schema, tErrorValidation, uploadSingleFile, cancelReadiness, onValidationError, processingMessage, uploadFailedMessage]);
421
429
  // ==========================================================================
422
430
  // UPLOAD HANDLERS — multiple mode
423
431
  // ==========================================================================
424
432
  const handleMultipleFilesUpload = React.useCallback(async (files) => {
425
433
  const generation = readinessGeneration.current;
426
434
  if (!hasActionableMultipleFileEndpoint(endpoints)) {
427
- setInternalError(t('File uploads are unavailable for this field') ?? 'File uploads are unavailable for this field');
435
+ setInternalError(uploadsUnavailableMessage);
428
436
  return;
429
437
  }
430
438
  // Use ref to get latest file IDs — prevents stale closure when batches overlap.
@@ -560,7 +568,7 @@ export const FormFieldFile_Preset_Default = React.forwardRef(({ schema, name, va
560
568
  }
561
569
  return next;
562
570
  });
563
- }, [endpoints, isControlled, maxFiles, onChange, tComponent, uploadSingleFile, validateFile, uploadFailedMessage, onValidationError, processingMessage]);
571
+ }, [endpoints, isControlled, maxFiles, onChange, tComponent, uploadSingleFile, validateFile, uploadFailedMessage, uploadsUnavailableMessage, onValidationError, processingMessage]);
564
572
  // ==========================================================================
565
573
  // CROP STEP — aspect-ratio-constrained image fields
566
574
  // ==========================================================================
@@ -657,7 +665,7 @@ export const FormFieldFile_Preset_Default = React.forwardRef(({ schema, name, va
657
665
  const toLink = isMultiple ? selections : selections.slice(0, 1);
658
666
  const uploadUrl = isMultiple ? endpoints.upload : resolveSingleFileUploadUrl(endpoints, currentFileId);
659
667
  if (!uploadUrl) {
660
- setInternalError(t('File uploads are unavailable for this field') ?? 'File uploads are unavailable for this field');
668
+ setInternalError(uploadsUnavailableMessage);
661
669
  return;
662
670
  }
663
671
  onValidationError?.(processingMessage);
@@ -709,7 +717,7 @@ export const FormFieldFile_Preset_Default = React.forwardRef(({ schema, name, va
709
717
  const failure = results.find(result => result.status === 'rejected');
710
718
  setInternalError(getSafeFileMutationErrorMessage(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'provider_link_failed'), failure?.status === 'rejected' ? failure.reason : undefined));
711
719
  }
712
- }, [currentFileId, endpoints, httpOperations, isControlled, isMultiple, onChange, t, tComponent, admitUploadResult, cancelReadiness, onValidationError, processingMessage, unverifiedMessage]);
720
+ }, [currentFileId, endpoints, httpOperations, isControlled, isMultiple, onChange, uploadsUnavailableMessage, tComponent, admitUploadResult, cancelReadiness, onValidationError, processingMessage, unverifiedMessage]);
713
721
  const handleProviderSelections = React.useCallback(async (providerRef, selections) => {
714
722
  if (!isMultiple)
715
723
  cancelReadiness();
@@ -942,7 +950,7 @@ export const FormFieldFile_Preset_Default = React.forwardRef(({ schema, name, va
942
950
  // ==========================================================================
943
951
  // RENDER — File info line (filename, size, extension — shared)
944
952
  // ==========================================================================
945
- const renderFileInfo = (fileId, meta, compact = false) => (_jsxs("div", { className: cn("min-w-0", compact ? "" : "flex-1"), children: [_jsx("div", { className: "flex items-center gap-element", children: meta?.url ? (_jsx("a", { href: meta.url, target: "_blank", rel: "noopener noreferrer", className: cn("font-medium text-primary hover:underline truncate", compact && "text-sm"), children: meta.filename })) : (_jsx("span", { className: cn("font-medium truncate", compact && "text-sm"), children: getNeutralFileAttachmentLabel(meta?.filename, t) })) }), _jsxs("div", { className: "flex items-center gap-group text-xs text-muted-foreground mt-0.5", children: [meta?.size !== undefined && (_jsx("span", { children: formatFileSize(meta.size) })), meta?.mimeType && (_jsx("span", { className: "uppercase", children: meta.extension || meta.mimeType.split('/').pop() })), meta?.width && meta?.height && (_jsxs("span", { children: [meta.width, "\u00D7", meta.height] }))] })] }));
953
+ const renderFileInfo = (fileId, meta, compact = false) => (_jsxs("div", { className: cn("min-w-0", compact ? "" : "flex-1"), children: [_jsx("div", { className: "flex items-center gap-element", children: meta?.url ? (_jsx("a", { href: meta.url, target: "_blank", rel: "noopener noreferrer", className: cn("font-medium text-primary hover:underline truncate", compact && "text-sm"), children: meta.filename })) : (_jsx("span", { className: cn("font-medium truncate", compact && "text-sm"), children: getNeutralFileAttachmentLabel(meta?.filename, fileAttachedLabel) })) }), _jsxs("div", { className: "flex items-center gap-group text-xs text-muted-foreground mt-0.5", children: [meta?.size !== undefined && (_jsx("span", { children: formatFileSize(meta.size) })), meta?.mimeType && (_jsx("span", { className: "uppercase", children: meta.extension || meta.mimeType.split('/').pop() })), meta?.width && meta?.height && (_jsxs("span", { children: [meta.width, "\u00D7", meta.height] }))] })] }));
946
954
  // ==========================================================================
947
955
  // RENDER — Nature-specific previews
948
956
  // ==========================================================================
@@ -1091,7 +1099,15 @@ export const FormFieldFile_Preset_Default = React.forwardRef(({ schema, name, va
1091
1099
  * name is an i18n KEY: the host cannot resolve it without depending on the
1092
1100
  * i18n service, and this field already has one.
1093
1101
  */
1094
- const renderProviderPickers = () => (_jsx(ProviderFilePickerHost, { multiple: isMultiple, constraints: providerConstraints, acceptedStorages: fileSchemaMetadata?.storageAccepted, onSelect: handleProviderSelections, onProviderFailure: handleProviderFailure, renderChooser: ({ choices, chosen, choose }) => (_jsx("div", { role: "group", className: "flex flex-wrap gap-item-xs mt-element", children: choices.map((choice) => (_jsx(Button, { type: "button", size: ButtonSize.SM, variant: choice.providerRef === chosen ? ButtonVariants_Variant.DEFAULT : ButtonVariants_Variant.OUTLINE, "aria-pressed": choice.providerRef === chosen, onClick: () => choose(choice.providerRef), children: t(choice.displayNameLabelKey) ?? choice.displayName ?? choice.providerRef }, choice.providerRef))) })) }));
1102
+ const renderProviderPickers = () => (_jsx(ProviderFilePickerHost, { multiple: isMultiple, constraints: providerConstraints, acceptedStorages: fileSchemaMetadata?.storageAccepted, onSelect: handleProviderSelections, onProviderFailure: handleProviderFailure, renderConsentRequired: ({ choice, missingPurposes, grant }) => {
1103
+ // Purpose names are the `ConsentPurpose` vocabulary's own words, read through the field that stores
1104
+ // a person's grant — the same words the consent gate and the preferences page show (#1702).
1105
+ const purposes = missingPurposes
1106
+ .map((purpose) => tResourceFieldEnumValue(CoreResourceType.USER_SELF_PREFERENCES, 'privacy.consentedPurposes', purpose, CONSENTED_PURPOSES_FIELD_SCHEMA))
1107
+ .join(', ');
1108
+ const provider = t(choice.displayNameLabelKey) ?? choice.displayName ?? choice.providerRef;
1109
+ return (_jsxs("div", { role: "status", className: "flex flex-wrap items-center gap-item-xs mt-element text-sm text-muted-foreground", children: [_jsx("span", { children: tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'provider_consent_required', { provider, purposes }) }), grant === undefined ? null : (_jsx(Button, { type: "button", size: ButtonSize.SM, variant: ButtonVariants_Variant.OUTLINE, onClick: () => void grant(), children: tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'provider_consent_grant', { purposes }) }))] }));
1110
+ }, renderChooser: ({ choices, chosen, choose }) => (_jsx("div", { role: "group", className: "flex flex-wrap gap-item-xs mt-element", children: choices.map((choice) => (_jsx(Button, { type: "button", size: ButtonSize.SM, variant: choice.providerRef === chosen ? ButtonVariants_Variant.DEFAULT : ButtonVariants_Variant.OUTLINE, "aria-pressed": choice.providerRef === chosen, onClick: () => choose(choice.providerRef), children: t(choice.displayNameLabelKey) ?? choice.displayName ?? choice.providerRef }, choice.providerRef))) })) }));
1095
1111
  if (!isReady)
1096
1112
  return null;
1097
1113
  return (_jsxs("div", { ref: ref, className: className, children: [(internalError ?? readinessError) && _jsx("p", { role: "status", className: "text-sm text-muted-foreground", children: internalError ?? readinessError }), pendingReadiness.size > 0 && _jsx(Button, { type: "button", onClick: cancelReadiness, children: tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'cancel') }), _jsx("input", { ref: fileInputRef, type: "file", accept: accept, multiple: isMultiple, onChange: handleFileChange, className: "hidden", disabled: isUploadInteractionDisabled }), isMultiple ? (
@@ -1115,6 +1131,11 @@ export const FormFieldFile_Preset_Default = React.forwardRef(({ schema, name, va
1115
1131
  * maintaining separation of concerns. The generic FormField never deals with
1116
1132
  * file-specific HTTP concerns.
1117
1133
  */
1134
+ /**
1135
+ * The self-preferences field that stores a person's granted consent purposes. Handed to the enum-word lookup
1136
+ * because a value is worded only through the enum its FIELD declares (#966) — here `ConsentPurpose`.
1137
+ */
1138
+ const CONSENTED_PURPOSES_FIELD_SCHEMA = getZodObjectShape(UserPrivacySchema).consentedPurposes;
1118
1139
  export const FormFieldFile = forwardRef(({ preset = CorePresetNames.DEFAULT, httpOperations: externalHttpOperations, ...props }, ref) => {
1119
1140
  const { httpClient } = useApplication();
1120
1141
  const httpOperations = useMemo(() => {