@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-file.js","sourceRoot":"","sources":["../../../../../../src/components/form/fields/form-field-file.tsx"],"names":[],"mappings":"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","sourcesContent":["import { awaitFileRequest, FileReadinessError, waitForFileReadiness } from '../controls/file/file-readiness.frontend.utils'\nimport React, { forwardRef, useMemo } from 'react'\nimport { FrontendComponentType, CorePresetNames } from '@wildo-ai/presets-components-models'\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 { useApplication } from '~wildo-frontend-lib/core/runtime/useApplication'\nimport type { ControlBaseProps, FileHttpOperations } from '~wildo-frontend-lib/components/form/form-field-types'\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 { useIconRegistry } from \"~wildo-frontend-lib/core/icons/useIconRegistry\"\nimport { IconSize, StandardIconReference } from \"~wildo-frontend-lib/core/icons/icon-registry.frontend.schemas\"\nimport { LoadingSpinner } from \"~wildo-frontend-lib/components/feedback/loading-spinner\"\nimport { Button, ButtonVariants_Variant } from \"~wildo-frontend-lib/components/actions/button\"\nimport { UIBehavior, FormControlVariant, ButtonSize } from \"@wildo-ai/presets-components-models\"\nimport {\n FileReadiness,\n getFileMetadata,\n getFileUI,\n FileValue,\n SingleFileValue,\n MultipleFileValue,\n FileMetadata,\n FileFieldEndpoints,\n formatFileSize,\n isMimeTypeAllowed,\n getAcceptedFileKinds,\n buildAcceptAttribute,\n FileDisplayNature,\n resolveFileDisplayNature,\n} from \"@wildo-ai/zod-decorators\"\nimport { determineValidationMode, getZodErrorParams, ValidationMode } from \"~wildo-frontend-lib/components/form/validation-errors/form-validation\"\nimport { resolveFormFieldFileProviderConstraints } from './form-field-file-provider-constraints.frontend.utils'\nimport { describeAcceptedFileKinds } from './accepted-file-kinds-description.frontend.utils'\nimport { ProviderFilePickerHost } from '~wildo-frontend-lib/core/external-providers/ProviderFilePickerHost'\nimport { ProviderFrontendSelectionDelivery } from '@wildo-ai/saas-models/public-runtime'\nimport type { ProviderFileSelection } from '@wildo-ai/saas-models/public-runtime'\nimport { ImageCrop } from '~wildo-frontend-lib/components/form/controls/file/image-crop'\nimport { canExportWithinAllowedMimeTypes, isCroppableRasterImageFile } from '~wildo-frontend-lib/components/form/controls/file/image-crop.frontend.utils'\n\n// --- Contract ---\nexport interface FormFieldFilePresetProps extends Omit<ControlBaseProps, 'value' | 'onChange' | 'defaultValue'> {\n value?: FileValue\n onChange?: (value: FileValue | null) => void\n defaultValue?: FileValue\n endpoints: FileFieldEndpoints\n uploadButtonText?: string\n onValidationError?: (error: string | undefined) => void\n replaceButtonText?: string\n httpOperations: FileHttpOperations\n}\n\nexport type FormFieldFileProps = Omit<FormFieldFilePresetProps, 'httpOperations'> & {\n httpOperations?: FileHttpOperations\n} & ComponentPresetProps\n\nexport type FormFieldFileRef = HTMLDivElement\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/** State of an individual file being uploaded */\ninterface UploadingFileState {\n /** Temporary ID for tracking (not the server fileId) */\n tempId: string;\n /** Original file name */\n fileName: string;\n /** Upload progress percentage (0-100) */\n progress: number;\n /** Upload status */\n status: 'uploading' | 'done' | 'error';\n /** Error message if status is 'error' */\n error?: string;\n /** Server-returned fileId once upload is complete */\n fileId?: string;\n /** AbortController for cancellation */\n abortController: AbortController;\n}\n\n/** Type guard to check if value is a single file */\nfunction isSingleFileValue(value: FileValue | null | undefined): value is SingleFileValue {\n return value !== null && value !== undefined && 'fileId' in value;\n}\n\n/** Type guard to check if value is multiple files */\nfunction isMultipleFileValue(value: FileValue | null | undefined): value is MultipleFileValue {\n return value !== null && value !== undefined && 'fileIds' in value;\n}\n\n/** Generate a temporary ID for tracking uploads before server assigns fileId */\nlet tempIdCounter = 0;\nfunction generateTempId(): string {\n return `upload-${Date.now()}-${++tempIdCounter}`;\n}\n\n/**\n * Detect if an error was caused by intentional cancellation (AbortController.abort).\n *\n * Axios throws CanceledError with code 'ERR_CANCELED' and message 'canceled'.\n * Native fetch/AbortController throws DOMException with name 'AbortError'.\n * We check both to remain HTTP-client-agnostic.\n */\nfunction isCancellationError(err: unknown): boolean {\n if (!(err instanceof Error)) return false;\n if ((err as any).code === 'ERR_CANCELED') return true;\n if (err.name === 'AbortError') return true;\n return false;\n}\n\nfunction resolveSingleFileUploadUrl(\n endpoints: FileFieldEndpoints,\n currentFileId: string | null,\n): string | undefined {\n return currentFileId && endpoints.override\n ? endpoints.override\n : endpoints.upload\n}\n\nfunction hasActionableSingleFileEndpoint(\n endpoints: FileFieldEndpoints,\n currentFileId: string | null,\n): boolean {\n return Boolean(resolveSingleFileUploadUrl(endpoints, currentFileId))\n}\n\nfunction hasActionableMultipleFileEndpoint(endpoints: FileFieldEndpoints): boolean {\n return Boolean(endpoints.upload)\n}\n\nfunction getNeutralFileAttachmentLabel(\n filename: string | undefined,\n t: (key: string, params?: Record<string, unknown>) => string | undefined,\n): string {\n if (filename && filename.trim() !== '') {\n return filename;\n }\n\n // Do not expose internal file ids in fallback UI when metadata is unavailable.\n return t('File attached') ?? 'File attached';\n}\n\nfunction getSafeFileMutationErrorMessage(\n fallbackMessage: string,\n _err: unknown,\n): string {\n return _err instanceof FileReadinessError ? _err.message : fallbackMessage;\n}\n\n/**\n * FormFieldFile component\n *\n * Renders a file upload field with:\n * - Drag and drop zone\n * - File picker button\n * - Current file display (single mode) or file list (multiple mode)\n * - Replace/remove options\n * - Progress tracking per upload\n * - Upload cancellation support\n */\nexport const FormFieldFile_Preset_Default = React.forwardRef<FormFieldFileRef, FormFieldFilePresetProps>(\n ({\n schema,\n name,\n value: controlledValue,\n onChange,\n onBlur,\n defaultValue,\n disabled = false,\n readOnly,\n className,\n validationMode: validationModeProp,\n endpoints,\n uploadButtonText,\n replaceButtonText,\n onValidationError,\n required,\n httpOperations,\n}, ref): React.JSX.Element | null => {\n const { t, tErrorValidation, tComponent, isReady } = useI18n({\n component: FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE,\n keys: ['errors_validation'],\n })\n const { frontendProviderRegistry } = useApplication()\n const { renderIcon } = useIconRegistry()\n const { getRecipe } = useUI()\n const formRecipe = getRecipe(UIBehavior.FORM_CONTROL, FormControlVariant.DEFAULT)\n const resolvedUploadButtonText = uploadButtonText ?? tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'choose_file')\n const resolvedReplaceButtonText = replaceButtonText ?? tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'replace')\n const dragDropLabel = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'drag_and_drop')\n const removeLabel = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'remove')\n const uploadFailedMessage = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'upload_failed')\n const metadataLoadFailedMessage = t('Unable to load file details') ?? 'Unable to load file details'\n\n // Get file metadata from schema\n const fileSchemaMetadata = getFileMetadata(schema)\n // The FIELD's own constraints. A provider's declared limits are laid under\n // these inside `ProviderFilePickerHost`, per chosen provider (#380) — they do\n // not reach the native upload below, which goes to the field's own storage and\n // is no vendor's business.\n const providerConstraints = resolveFormFieldFileProviderConstraints({ schema })\n\n // Get options from metadata\n const allowedMimeTypes = providerConstraints.allowedMimeTypes\n const maxSize = providerConstraints.maxSize\n const minSize = fileSchemaMetadata?.minSize\n const overridable = fileSchemaMetadata?.overridable ?? true\n const accept = allowedMimeTypes ? buildAcceptAttribute(allowedMimeTypes) : undefined\n const isMultiple = fileSchemaMetadata?.multiple ?? false\n const maxFiles = providerConstraints.maxFiles\n const imageConstraints = fileSchemaMetadata?.imageConstraints\n const videoConstraints = fileSchemaMetadata?.videoConstraints\n const audioConstraints = fileSchemaMetadata?.audioConstraints\n const documentConstraints = fileSchemaMetadata?.documentConstraints\n\n // Determine validation mode\n const validationMode = determineValidationMode(schema, validationModeProp)\n\n // Internal state for uncontrolled mode\n const [internalValue, setInternalValue] = React.useState<FileValue | null>(defaultValue ?? null)\n\n // Internal validation error state (Hybrid Pattern - see file header comment)\n const [internalError, setInternalError] = React.useState<string | undefined>()\n\n\n // Clear internal error when value is cleared (form reset or manual clear)\n const prevValueRef = React.useRef(controlledValue)\n React.useEffect(() => {\n const prevValue = prevValueRef.current\n const valueCleared = prevValue !== undefined && (controlledValue === null || controlledValue === undefined)\n if (valueCleared && internalError) {\n setInternalError(undefined)\n }\n prevValueRef.current = controlledValue\n }, [controlledValue, internalError])\n\n // Upload state — supports parallel uploads for multiple file mode\n const [uploadingFiles, setUploadingFiles] = React.useState<Map<string, UploadingFileState>>(new Map())\n // Ref for reading upload state outside of React state updaters (e.g., to abort)\n const uploadingFilesRef = React.useRef(uploadingFiles)\n uploadingFilesRef.current = uploadingFiles\n const [uploadProgress, setUploadProgress] = React.useState(0) // Aggregate progress for single mode\n const [fileMetadataMap, setFileMetadataMap] = React.useState<Map<string, FileMetadata>>(new Map())\n const [dragOver, setDragOver] = React.useState(false)\n const readinessRequests = React.useRef(new Set<AbortController>())\n const readinessGeneration = React.useRef(0)\n const [pendingReadiness, setPendingReadiness] = React.useState<Set<string>>(new Set())\n const processingMessage = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'file_processing')\n const unavailableMessage = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'file_unavailable')\n const unverifiedMessage = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'file_readiness_unverified')\n const cancelReadiness = React.useCallback(() => {\n readinessGeneration.current += 1\n for (const request of readinessRequests.current) request.abort()\n for (const upload of uploadingFilesRef.current.values()) upload.abortController.abort()\n readinessRequests.current.clear()\n }, [])\n\n\n\n // File input ref\n const fileInputRef = React.useRef<HTMLInputElement>(null)\n\n // Controlled ⇔ the caller supplied a change handler (or a defined value).\n //\n // Deciding by VALUE alone is unsafe for a caller that legitimately passes `undefined` — an empty\n // file field on a create surface, or one whose value was cleared: the control would conclude it\n // is uncontrolled, keep the upload result in private internal state and never call `onChange`,\n // so the form would submit without the file the user just uploaded. The tier-1 field wrappers\n // were hardened against this class; this control renders directly and was not.\n const isControlled = onChange !== undefined || controlledValue !== undefined\n const currentValue = controlledValue ?? internalValue\n\n // Derived state\n const uploading = Array.from(uploadingFiles.values()).some(file => file.status === 'uploading')\n const currentFileId = isSingleFileValue(currentValue) ? currentValue.fileId : null\n const currentFileIds = isMultipleFileValue(currentValue) ? currentValue.fileIds : []\n const hasUploadCapability = isMultiple\n ? hasActionableMultipleFileEndpoint(endpoints)\n : hasActionableSingleFileEndpoint(endpoints, currentFileId)\n\n // Ref to track latest currentFileIds — prevents stale closure in multi-file upload.\n // Without this, two rapid batch uploads can lose IDs: Batch 1 and Batch 2 both capture\n // the same currentFileIds from the closure, then Batch 2's result overwrites Batch 1's.\n const currentFileIdsRef = React.useRef(currentFileIds)\n currentFileIdsRef.current = currentFileIds\n\n // Stable key for metadata fetch dependency (avoids inline .join() in effect deps)\n const fileIdsKey = React.useMemo(() => currentFileIds.join(','), [currentFileIds])\n\n // Ref for metadata map to avoid stale reads in fetch effect cache check\n const fileMetadataMapRef = React.useRef(fileMetadataMap)\n fileMetadataMapRef.current = fileMetadataMap\n\n // Get first metadata for single file mode display\n const fileMetadata = currentFileId ? fileMetadataMap.get(currentFileId) ?? null : null\n const visibleIds = currentFileId ? [currentFileId] : currentFileIds\n const existingReadinessError = visibleIds.some(id => fileMetadataMap.get(id)?.readiness === FileReadiness.UNAVAILABLE)\n ? unavailableMessage\n : visibleIds.some(id => ![FileReadiness.READY, FileReadiness.ATTACHED].includes(fileMetadataMap.get(id)?.readiness as FileReadiness))\n ? processingMessage : undefined\n const failedUploadError = Array.from(uploadingFiles.values()).find(file => file.status === 'error')?.error\n const readinessError = uploading || pendingReadiness.size > 0 ? processingMessage : failedUploadError ?? existingReadinessError\n React.useEffect(() => {\n onValidationError?.(internalError ?? readinessError)\n }, [internalError, readinessError, onValidationError])\n\n\n // ==========================================================================\n // HTTP OPERATIONS — delegates to the injected httpOperations interface\n // ==========================================================================\n\n const authenticatedGet = React.useCallback(\n async <T,>(url: string): Promise<T> => httpOperations.get<T>(url),\n [httpOperations]\n )\n\n const authenticatedDelete = React.useCallback(\n async (url: string): Promise<void> => httpOperations.delete(url),\n [httpOperations]\n )\n\n // ==========================================================================\n // METADATA FETCHING — for existing files\n // ==========================================================================\n\n React.useEffect(() => () => cancelReadiness(), [endpoints.getMetadata, endpoints.upload, endpoints.override, httpOperations, authenticatedGet, cancelReadiness])\n\n const metadataEndpointRef = React.useRef({ endpoint: endpoints.getMetadata, get: authenticatedGet })\n React.useEffect(() => {\n const ids = currentFileId ? [currentFileId] : currentFileIds\n const endpointChanged = metadataEndpointRef.current.endpoint !== endpoints.getMetadata || metadataEndpointRef.current.get !== authenticatedGet\n metadataEndpointRef.current = { endpoint: endpoints.getMetadata, get: authenticatedGet }\n if (endpointChanged) {\n fileMetadataMapRef.current = new Map()\n setFileMetadataMap(new Map())\n }\n if (ids.length === 0) {\n setFileMetadataMap(new Map())\n setInternalError(current => current === metadataLoadFailedMessage ? undefined : current)\n return\n }\n let cancelled = false\n const controller = new AbortController()\n let timer: ReturnType<typeof setTimeout> | undefined\n const refresh = async () => {\n let retry = false\n let failed = false\n const updates = new Map<string, FileMetadata>()\n await Promise.all(ids.map(async fileId => {\n const cached = fileMetadataMapRef.current.get(fileId)\n if (cached && [FileReadiness.READY, FileReadiness.ATTACHED, FileReadiness.UNAVAILABLE].includes(cached.readiness)) return\n if (!endpoints.getMetadata) { failed = true; return }\n try {\n const data = await awaitFileRequest(() => authenticatedGet<FileMetadata>(`${endpoints.getMetadata}/${encodeURIComponent(fileId)}/metadata`), controller.signal, 120_000, metadataLoadFailedMessage)\n if (data.fileId !== fileId || !Object.values(FileReadiness).includes(data.readiness)) throw new Error('Invalid file metadata')\n updates.set(fileId, data)\n if (data.readiness === FileReadiness.PROCESSING) retry = true\n } catch {\n failed = true; retry = true\n console.warn('Unable to load file metadata for one or more files.')\n }\n }))\n if (cancelled) return\n setFileMetadataMap(previous => {\n const next = new Map(previous)\n for (const [id, metadata] of updates) next.set(id, metadata)\n return next\n })\n setInternalError(current => failed ? metadataLoadFailedMessage : current === metadataLoadFailedMessage ? undefined : current)\n if (retry) timer = setTimeout(refresh, 2_000)\n }\n void refresh()\n return () => { cancelled = true; controller.abort(); if (timer) clearTimeout(timer) }\n }, [currentFileId, fileIdsKey, endpoints.getMetadata, authenticatedGet, metadataLoadFailedMessage])\n\n const admitUploadResult = React.useCallback(async (result: { fileId: string; metadata?: FileMetadata }, signal?: AbortSignal) => {\n const controller = new AbortController()\n const abort = () => controller.abort()\n if (signal?.aborted) controller.abort()\n signal?.addEventListener('abort', abort, { once: true })\n readinessRequests.current.add(controller)\n try {\n const metadata = await waitForFileReadiness({\n ...result, signal: controller.signal,\n getMetadata: endpoints.getMetadata ? () => authenticatedGet<FileMetadata>(`${endpoints.getMetadata}/${encodeURIComponent(result.fileId)}/metadata`) : undefined,\n onPending: () => setPendingReadiness(previous => new Set(previous).add(result.fileId)),\n unavailableMessage, unverifiedMessage,\n })\n controller.signal.throwIfAborted()\n return { fileId: result.fileId, metadata }\n } finally {\n signal?.removeEventListener('abort', abort)\n readinessRequests.current.delete(controller)\n setPendingReadiness(previous => { const next = new Set(previous); next.delete(result.fileId); return next })\n }\n }, [authenticatedGet, endpoints.getMetadata, unavailableMessage, unverifiedMessage])\n\n // ==========================================================================\n // VALIDATION\n // ==========================================================================\n\n /**\n * MIME check alone — shared between the plain upload path (via `validateFile`)\n * and the crop path, which must reject a disallowed type BEFORE opening the\n * crop dialog but must NOT pre-check byte size (shrinking an oversized\n * original under the ceiling is precisely what the crop step is for).\n */\n const validateFileMimeType = React.useCallback((file: File): string | undefined => {\n if (allowedMimeTypes && allowedMimeTypes.length > 0) {\n if (!isMimeTypeAllowed(file.type, allowedMimeTypes)) {\n const accepted = describeAcceptedFileKinds(getAcceptedFileKinds(allowedMimeTypes), tComponent)\n return tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'file_type_not_allowed', { accepted })\n }\n }\n return undefined\n }, [allowedMimeTypes, tComponent])\n\n const validateFile = React.useCallback((file: File): string | undefined => {\n // Check MIME type\n const mimeError = validateFileMimeType(file)\n if (mimeError) {\n return mimeError\n }\n\n // Check file size — maximum\n if (maxSize && file.size > maxSize) {\n const max = formatFileSize(maxSize)\n return tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'file_too_large', { max })\n }\n\n // Check file size — minimum\n if (minSize && file.size < minSize) {\n const min = formatFileSize(minSize)\n return tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'file_too_small', { min })\n }\n\n return undefined\n }, [validateFileMimeType, maxSize, minSize, tComponent])\n\n // ==========================================================================\n // UPLOAD — single file\n // ==========================================================================\n\n /** Upload a single file via httpOperations */\n const uploadSingleFile = React.useCallback(async (\n file: File,\n uploadUrl: string,\n isReplacing: boolean,\n existingFileId: string | null,\n onProgress: (percent: number) => void,\n signal?: AbortSignal,\n ): Promise<{ fileId: string; metadata?: FileMetadata }> => {\n const formData = new FormData()\n formData.append('file', file)\n if (isReplacing && existingFileId) {\n formData.append('fileId', existingFileId)\n }\n\n const request = () => httpOperations.upload(uploadUrl, formData, { onProgress, signal })\n const result = signal ? await awaitFileRequest(request, signal, undefined, unverifiedMessage) : await request()\n signal?.throwIfAborted()\n return admitUploadResult(result, signal)\n }, [httpOperations, admitUploadResult, unverifiedMessage])\n\n // ==========================================================================\n // UPLOAD HANDLERS — single mode\n // ==========================================================================\n\n const handleSingleFileUpload = React.useCallback(async (file: File) => {\n cancelReadiness()\n const generation = readinessGeneration.current\n const uploadUrl = resolveSingleFileUploadUrl(endpoints, currentFileId)\n if (!uploadUrl) {\n setInternalError(t('File uploads are unavailable for this field') ?? 'File uploads are unavailable for this field')\n return\n }\n\n // Validate first\n const validationError = validateFile(file)\n if (validationError) {\n setInternalError(validationError)\n return\n }\n\n const tempId = generateTempId()\n const abortController = new AbortController()\n\n setUploadingFiles(new Map([[tempId, {\n tempId,\n fileName: file.name,\n progress: 0,\n status: 'uploading',\n abortController,\n }]]))\n setUploadProgress(0)\n onValidationError?.(processingMessage)\n setInternalError(undefined)\n\n try {\n const isReplacing = !!currentFileId\n\n const result = await uploadSingleFile(\n file,\n uploadUrl,\n isReplacing,\n currentFileId,\n (percent) => {\n setUploadProgress(percent)\n setUploadingFiles(prev => {\n const next = new Map(prev)\n const state = next.get(tempId)\n if (state) next.set(tempId, { ...state, progress: percent })\n return next\n })\n },\n abortController.signal,\n )\n\n if (generation !== readinessGeneration.current) return\n // Build new value\n const newValue: FileValue = {\n fileId: result.fileId,\n updatedAt: new Date(),\n }\n\n if (!isControlled) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n\n // Update metadata cache\n if (result.metadata) {\n setFileMetadataMap(prev => {\n const next = new Map(prev)\n next.set(result.fileId, result.metadata!)\n return next\n })\n }\n\n // Validate the new value against schema\n if (validationMode !== 'onSubmit') {\n const schemaResult = schema.safeParse(newValue)\n if (!schemaResult.success) {\n const firstIssue = schemaResult.error.issues[0]\n if (firstIssue) {\n const params = { ...getZodErrorParams(firstIssue), message: firstIssue.message }\n const translated = tErrorValidation(firstIssue.code, 'msg', params)\n setInternalError(translated)\n }\n }\n }\n } catch (err) {\n if (abortController.signal.aborted || generation !== readinessGeneration.current || isCancellationError(err)) return\n setInternalError(getSafeFileMutationErrorMessage(uploadFailedMessage, err))\n } finally {\n setUploadingFiles(previous => { const next = new Map(previous); next.delete(tempId); return next })\n setUploadProgress(0)\n }\n }, [currentFileId, endpoints, isControlled, onChange, t, validateFile, validationMode, schema, tErrorValidation, uploadSingleFile, cancelReadiness, onValidationError, processingMessage, uploadFailedMessage])\n\n // ==========================================================================\n // UPLOAD HANDLERS — multiple mode\n // ==========================================================================\n\n const handleMultipleFilesUpload = React.useCallback(async (files: File[]) => {\n const generation = readinessGeneration.current\n if (!hasActionableMultipleFileEndpoint(endpoints)) {\n setInternalError(t('File uploads are unavailable for this field') ?? 'File uploads are unavailable for this field')\n return\n }\n\n // Use ref to get latest file IDs — prevents stale closure when batches overlap.\n // Without this, two rapid uploads both see the same old currentFileIds,\n // and the second batch's result would overwrite the first batch's new IDs.\n const latestFileIds = currentFileIdsRef.current\n\n // Validate all files first\n const currentCount = latestFileIds.length\n if (maxFiles && currentCount + files.length > maxFiles) {\n setInternalError(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'too_many_files', { max: maxFiles }))\n return\n }\n\n const validFiles: File[] = []\n for (const file of files) {\n const error = validateFile(file)\n if (error) {\n setInternalError(error)\n return\n }\n validFiles.push(file)\n }\n\n onValidationError?.(processingMessage)\n setInternalError(undefined)\n\n // Create upload state for each file\n const initialStates = new Map<string, UploadingFileState>()\n const fileEntries: { tempId: string; file: File; abortController: AbortController }[] = []\n\n for (const file of validFiles) {\n const tempId = generateTempId()\n const abortController = new AbortController()\n initialStates.set(tempId, {\n tempId,\n fileName: file.name,\n progress: 0,\n status: 'uploading',\n abortController,\n })\n fileEntries.push({ tempId, file, abortController })\n }\n\n setUploadingFiles(prev => {\n const next = new Map<string, UploadingFileState>()\n // Keep only in-progress uploads from previous batches; discard stale errors\n for (const [id, state] of prev) {\n if (state.status === 'uploading') {\n next.set(id, state)\n }\n }\n // Add new uploads\n for (const [id, state] of initialStates) {\n next.set(id, state)\n }\n return next\n })\n\n // Upload all files in parallel\n const results = await Promise.allSettled(\n fileEntries.map(async ({ tempId, file, abortController }) => {\n try {\n const result = await uploadSingleFile(\n file,\n endpoints.upload,\n false,\n null,\n (percent) => {\n setUploadingFiles(prev => {\n const next = new Map(prev)\n const state = next.get(tempId)\n if (state) next.set(tempId, { ...state, progress: percent })\n return next\n })\n },\n abortController.signal,\n )\n\n // Mark as done\n setUploadingFiles(prev => {\n const next = new Map(prev)\n const state = next.get(tempId)\n if (state) next.set(tempId, { ...state, status: 'done', fileId: result.fileId, progress: 100 })\n return next\n })\n\n // Cache metadata\n if (result.metadata) {\n setFileMetadataMap(prev => {\n const next = new Map(prev)\n next.set(result.fileId, result.metadata!)\n return next\n })\n }\n\n return result.fileId\n } catch (err) {\n if (abortController.signal.aborted || generation !== readinessGeneration.current || isCancellationError(err)) {\n setUploadingFiles(prev => {\n const next = new Map(prev)\n next.delete(tempId)\n return next\n })\n throw err\n }\n\n setUploadingFiles(prev => {\n const next = new Map(prev)\n const state = next.get(tempId)\n if (state) next.set(tempId, {\n ...state,\n status: 'error',\n error: getSafeFileMutationErrorMessage(uploadFailedMessage, err)\n })\n return next\n })\n throw err\n }\n })\n )\n\n // Collect successful fileIds\n const newFileIds: string[] = []\n for (const result of results) {\n if (result.status === 'fulfilled') {\n newFileIds.push(result.value)\n }\n }\n\n if (newFileIds.length > 0 && generation === readinessGeneration.current) {\n // Read latest file IDs via ref to avoid stale closure\n const updatedFileIds = [...currentFileIdsRef.current, ...newFileIds]\n currentFileIdsRef.current = updatedFileIds\n const newValue: MultipleFileValue = {\n fileIds: updatedFileIds,\n updatedAt: new Date(),\n }\n\n if (!isControlled) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n }\n\n // Failed candidates own their visible error until explicitly dismissed.\n\n // Clear completed uploads from state (keep errors for display)\n setUploadingFiles(prev => {\n const next = new Map(prev)\n for (const [id, state] of next) {\n if (state.status === 'done') next.delete(id)\n }\n return next\n })\n }, [endpoints, isControlled, maxFiles, onChange, tComponent, uploadSingleFile, validateFile, uploadFailedMessage, onValidationError, processingMessage])\n\n // ==========================================================================\n // CROP STEP — aspect-ratio-constrained image fields\n // ==========================================================================\n\n /**\n * Aspect-ratio constraint → inline crop step activation.\n *\n * When the authored `imageConstraints` declare an aspect ratio (ANY ratio —\n * a 1:1 avatar is just the first case, never a special case), a selected\n * raster image is routed through the injectable `ImageCrop` step\n * (pan/zoom + crop to the required ratio, client-side downscale to the\n * declared max dimensions, re-encode under the size ceiling) BEFORE the\n * normal upload pipeline. Fields without an aspect-ratio constraint keep\n * the direct-upload flow untouched.\n *\n * Boundaries, decided rather than omitted:\n * - Single-file mode only. A multi-file field with an aspect constraint\n * would need a per-file crop queue; until that UX exists, multi-file\n * selections keep the current validate-and-upload flow (the constraint\n * still holds server-side).\n * - SVG and browser-undecodable formats (e.g. HEIC) bypass the crop step\n * via `onUncroppable` and fall back to the plain upload path, keeping\n * server-side validation the authority instead of silently rasterizing\n * or hard-failing in the client.\n */\n const aspectRatioConstraint = imageConstraints?.aspectRatio\n const fileUIPreviewShape = getFileUI(schema)?.display?.preview?.shape\n\n const [pendingCropFile, setPendingCropFile] = React.useState<File | null>(null)\n\n const handleCropConfirm = React.useCallback((croppedFile: File) => {\n setPendingCropFile(null)\n handleSingleFileUpload(croppedFile)\n }, [handleSingleFileUpload])\n\n const handleCropCancel = React.useCallback(() => {\n setPendingCropFile(null)\n }, [])\n\n /** Decode failure → plain upload with the ORIGINAL file (see JSDoc above). */\n const handleUncroppable = React.useCallback((originalFile: File) => {\n setPendingCropFile(null)\n handleSingleFileUpload(originalFile)\n }, [handleSingleFileUpload])\n\n // ==========================================================================\n // UNIFIED FILE HANDLER\n // ==========================================================================\n\n const handleFiles = React.useCallback((files: File[]) => {\n if (files.length === 0) return\n\n if (isMultiple) {\n handleMultipleFilesUpload(files)\n } else {\n const file = files[0]\n // The allow-list gate keeps fields that accept no canvas-encodable\n // format (e.g. GIF-only) on the plain upload path — the cropper could\n // only emit a type the field's own MIME validation would then reject.\n if (aspectRatioConstraint && isCroppableRasterImageFile(file) && canExportWithinAllowedMimeTypes(allowedMimeTypes)) {\n // Reject a disallowed MIME type before opening the dialog; size is\n // deliberately NOT pre-checked — the crop export enforces it.\n const mimeError = validateFileMimeType(file)\n if (mimeError) {\n setInternalError(mimeError)\n return\n }\n setInternalError(undefined)\n setPendingCropFile(file)\n return\n }\n handleSingleFileUpload(file)\n }\n }, [isMultiple, handleMultipleFilesUpload, handleSingleFileUpload, aspectRatioConstraint, validateFileMimeType, allowedMimeTypes])\n\n // ==========================================================================\n // PROVIDER FILE PICKERS\n // ==========================================================================\n\n /*\n * A provider's picker hands back one of THREE delivery kinds, and the field —\n * not the host — decides what each one means. Two of them end in the same\n * place as a local selection: `handleFiles`, so MIME/size validation, the\n * crop step and the upload pipeline are the ones already written here rather\n * than a second, provider-only path that would drift from them.\n *\n * The third, REMOTE_REFERENCE, carries no bytes: the file STAYS at the vendor\n * and only the application backend can resolve the id (#394 P5). It goes to\n * the SAME endpoint an upload does, as a JSON body, and the backend verifies\n * the reference at the vendor as this person, holds it to the field's\n * constraints, and creates the row in the vendor's storage. What comes back\n * is a fileId, exactly as an upload's, so the value is committed by the same\n * code. The host has already refused any selection that contradicts the\n * provider's declaration, and the chooser offered this provider only because\n * the field accepts its storage — so a refusal here is the vendor's or the\n * backend's, and is shown as one message.\n */\n const linkRemoteSelections = React.useCallback(\n async (providerRef: string, selections: ReadonlyArray<Extract<ProviderFileSelection, { kind: ProviderFrontendSelectionDelivery.REMOTE_REFERENCE }>>) => {\n if (!isMultiple) cancelReadiness()\n const generation = readinessGeneration.current\n const toLink = isMultiple ? selections : selections.slice(0, 1)\n const uploadUrl = isMultiple ? endpoints.upload : resolveSingleFileUploadUrl(endpoints, currentFileId)\n if (!uploadUrl) {\n setInternalError(t('File uploads are unavailable for this field') ?? 'File uploads are unavailable for this field')\n return\n }\n onValidationError?.(processingMessage)\n setInternalError(undefined)\n\n const results = await Promise.allSettled(\n toLink.map(async (selection) => {\n const activityId = generateTempId()\n setPendingReadiness(previous => new Set(previous).add(activityId))\n const controller = new AbortController()\n readinessRequests.current.add(controller)\n try {\n const linked = await awaitFileRequest(() => httpOperations.linkRemoteReference(uploadUrl, {\n remoteReference: {\n providerRef,\n externalId: selection.externalId,\n ...(selection.displayName !== undefined ? { displayName: selection.displayName } : {}),\n ...(selection.mimeType !== undefined ? { mimeType: selection.mimeType } : {}),\n ...(selection.sizeBytes !== undefined ? { sizeBytes: selection.sizeBytes } : {}),\n },\n }), controller.signal, 120_000, unverifiedMessage)\n controller.signal.throwIfAborted()\n const result = await admitUploadResult(linked, controller.signal)\n if (result.metadata) {\n setFileMetadataMap(prev => {\n const next = new Map(prev)\n next.set(result.fileId, result.metadata!)\n return next\n })\n }\n return result.fileId\n } finally {\n readinessRequests.current.delete(controller)\n setPendingReadiness(previous => { const next = new Set(previous); next.delete(activityId); return next })\n }\n }),\n )\n\n const linkedFileIds = results.flatMap((result) => (result.status === 'fulfilled' ? [result.value] : []))\n if (linkedFileIds.length > 0 && generation === readinessGeneration.current) {\n const newValue: FileValue = isMultiple\n ? { fileIds: [...currentFileIdsRef.current, ...linkedFileIds], updatedAt: new Date() }\n : { fileId: linkedFileIds[0]!, updatedAt: new Date() }\n if (isMultipleFileValue(newValue)) currentFileIdsRef.current = newValue.fileIds\n if (!isControlled) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n }\n if (linkedFileIds.length < toLink.length && generation === readinessGeneration.current) {\n const failure = results.find(result => result.status === 'rejected')\n setInternalError(getSafeFileMutationErrorMessage(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'provider_link_failed'), failure?.status === 'rejected' ? failure.reason : undefined))\n }\n },\n [currentFileId, endpoints, httpOperations, isControlled, isMultiple, onChange, t, tComponent, admitUploadResult, cancelReadiness, onValidationError, processingMessage, unverifiedMessage],\n )\n\n const handleProviderSelections = React.useCallback(\n async (providerRef: string, selections: readonly ProviderFileSelection[]) => {\n if (!isMultiple) cancelReadiness()\n const generation = readinessGeneration.current\n const acquisition = new AbortController()\n const activityId = generateTempId()\n readinessRequests.current.add(acquisition)\n onValidationError?.(processingMessage)\n setPendingReadiness(previous => new Set(previous).add(activityId))\n try {\n const files: File[] = []\n const remoteReferences: Array<Extract<ProviderFileSelection, { kind: ProviderFrontendSelectionDelivery.REMOTE_REFERENCE }>> = []\n let sawFetchFailure = false\n\n for (const selection of selections) {\n if (selection.kind === ProviderFrontendSelectionDelivery.BROWSER_READABLE_FILE) {\n files.push(selection.file)\n continue\n }\n if (selection.kind === ProviderFrontendSelectionDelivery.BROWSER_READABLE_URL) {\n try {\n // The url is fetchable by the browser BY DECLARATION — its origin has\n // to be admitted by the surface's composed CSP, which is the\n // application's decision and not something this field can check. A\n // blocked origin therefore arrives here as an ordinary fetch failure.\n const response = await awaitFileRequest(() => fetch(selection.url, { signal: acquisition.signal }), acquisition.signal, 120_000, unverifiedMessage)\n if (!response.ok) {\n sawFetchFailure = true\n continue\n }\n const blob = await awaitFileRequest(() => response.blob(), acquisition.signal, 120_000, unverifiedMessage)\n files.push(new File([blob], selection.displayName ?? 'file', { type: selection.mimeType ?? blob.type }))\n } catch {\n if (acquisition.signal.aborted || generation !== readinessGeneration.current) return\n sawFetchFailure = true\n }\n continue\n }\n remoteReferences.push(selection)\n }\n\n if (acquisition.signal.aborted || generation !== readinessGeneration.current) return\n if (remoteReferences.length > 0) {\n await linkRemoteSelections(providerRef, remoteReferences)\n // A picker has one declared delivery kind. Remote linking owns the handoff and cancellation.\n return\n }\n if (sawFetchFailure && files.length === 0) {\n setInternalError(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'provider_fetch_failed'))\n return\n }\n if (files.length === 0) return\n\n setInternalError(sawFetchFailure ? tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'provider_fetch_failed') : undefined)\n handleFiles(files)\n } finally {\n readinessRequests.current.delete(acquisition)\n setPendingReadiness(previous => { const next = new Set(previous); next.delete(activityId); return next })\n }\n },\n [handleFiles, linkRemoteSelections, tComponent, isMultiple, cancelReadiness, onValidationError, processingMessage, unverifiedMessage],\n )\n\n /*\n * A picker that failed and a picker that contradicted its own declaration\n * reach here as one message, because they are one thing to the person looking\n * at the field. The distinction that matters to whoever wrote the provider is\n * carried in the rejection the host built, not in what a user reads.\n */\n const handleProviderFailure = React.useCallback(() => {\n setInternalError(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'provider_picker_failed'))\n }, [tComponent])\n\n // Handle file input change\n const handleFileChange = React.useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files\n if (files && files.length > 0) {\n handleFiles(Array.from(files))\n }\n // Reset input so same file can be selected again\n if (fileInputRef.current) {\n fileInputRef.current.value = ''\n }\n }, [handleFiles])\n\n // Effective disabled includes readOnly for interactive elements\n const isInteractionDisabled = disabled || readOnly\n const isUploadInteractionDisabled = isInteractionDisabled || !hasUploadCapability\n\n // Handle drag and drop\n const handleDragOver = React.useCallback((e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (!isUploadInteractionDisabled && !uploading) {\n setDragOver(true)\n }\n }, [isUploadInteractionDisabled, uploading])\n\n const handleDragLeave = React.useCallback((e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragOver(false)\n }, [])\n\n const handleDrop = React.useCallback((e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragOver(false)\n\n if (isUploadInteractionDisabled || uploading) return\n\n const files = e.dataTransfer.files\n if (files && files.length > 0) {\n handleFiles(Array.from(files))\n }\n }, [isUploadInteractionDisabled, uploading, handleFiles])\n\n // Handle remove single file\n const handleRemoveSingle = React.useCallback(async () => {\n cancelReadiness()\n if (!currentFileId) return\n\n if (endpoints.delete) {\n try {\n // Backend route: DELETE /files/:fileId\n const url = `${endpoints.delete}/${encodeURIComponent(currentFileId)}`\n await authenticatedDelete(url)\n } catch (err) {\n if (isCancellationError(err)) return\n setInternalError(getSafeFileMutationErrorMessage(uploadFailedMessage, err))\n return\n }\n }\n\n setInternalError(undefined)\n\n if (!isControlled) {\n setInternalValue(null)\n }\n\n onChange?.(null)\n setFileMetadataMap(prev => {\n const next = new Map(prev)\n next.delete(currentFileId)\n return next\n })\n }, [currentFileId, endpoints, isControlled, onChange, authenticatedDelete, uploadFailedMessage])\n\n // Handle remove file from multiple list.\n // Uses currentFileIdsRef to avoid stale closure: two rapid removes would both\n // capture the same closure value, and the second would re-add the file removed by the first.\n const handleRemoveFromMultiple = React.useCallback(async (fileId: string) => {\n cancelReadiness()\n if (endpoints.delete) {\n try {\n const url = `${endpoints.delete}/${encodeURIComponent(fileId)}`\n await authenticatedDelete(url)\n } catch (err) {\n if (isCancellationError(err)) return\n setInternalError(getSafeFileMutationErrorMessage(uploadFailedMessage, err))\n return\n }\n }\n\n setInternalError(undefined)\n\n // Read latest file IDs via ref — prevents lost removals during rapid clicks\n const updatedIds = currentFileIdsRef.current.filter(id => id !== fileId)\n currentFileIdsRef.current = updatedIds\n const newValue: FileValue | null = updatedIds.length > 0\n ? { fileIds: updatedIds, updatedAt: new Date() }\n : null\n\n if (!isControlled) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n\n setFileMetadataMap(prev => {\n const next = new Map(prev)\n next.delete(fileId)\n return next\n })\n }, [endpoints, isControlled, onChange, authenticatedDelete, uploadFailedMessage])\n\n // Cancel a specific upload.\n // Side effect (abort) is performed BEFORE the state update to comply with\n // React's requirement that state updater functions be pure.\n const handleCancelUpload = React.useCallback((tempId: string) => {\n // Read current state via ref (no side effect inside updater)\n const state = uploadingFilesRef.current.get(tempId)\n if (state) {\n state.abortController.abort()\n }\n\n setUploadingFiles(prev => {\n const next = new Map(prev)\n next.delete(tempId)\n return next\n })\n }, [])\n\n // Handle click on drop zone\n const handleClick = React.useCallback(() => {\n if (!isUploadInteractionDisabled && !uploading) {\n fileInputRef.current?.click()\n }\n }, [isUploadInteractionDisabled, uploading])\n\n // Get file icon reference based on MIME type (consistent with display-field-file.tsx)\n const getFileIconRef = (mimeType?: string): StandardIconReference => {\n if (!mimeType) return StandardIconReference.FILE\n if (mimeType.startsWith('image/')) return StandardIconReference.FILE_IMAGE\n if (mimeType.startsWith('video/')) return StandardIconReference.FILE_VIDEO\n if (mimeType.startsWith('audio/')) return StandardIconReference.FILE_AUDIO\n if (mimeType === 'application/pdf') return StandardIconReference.FILE_TEXT\n if (mimeType.includes('spreadsheet') || mimeType.includes('excel')) return StandardIconReference.FILE_SPREADSHEET\n if (mimeType.includes('presentation') || mimeType.includes('powerpoint')) return StandardIconReference.FILE_PRESENTATION\n if (mimeType.includes('document') || mimeType.includes('word')) return StandardIconReference.FILE_TEXT\n if (mimeType.includes('zip') || mimeType.includes('rar') || mimeType.includes('7z')) return StandardIconReference.FILE_ARCHIVE\n return StandardIconReference.FILE\n }\n\n /** Render a file icon for the given MIME type at the specified size */\n const renderFileIcon = (mimeType?: string, size: IconSize = IconSize.MD): React.ReactNode => {\n return renderIcon(getFileIconRef(mimeType), { size })\n }\n\n const acceptDescription = describeAcceptedFileKinds(getAcceptedFileKinds(allowedMimeTypes), tComponent)\n\n // ==========================================================================\n // RENDER — Nature detection for preview routing\n // ==========================================================================\n\n /** Resolve the display nature using the shared utility from zod-decorators */\n const schemaNature = fileSchemaMetadata?.nature\n\n // ==========================================================================\n // RENDER — File action buttons (shared between single + multi displays)\n // ==========================================================================\n\n const renderFileActions = (onRemove: () => void, compact = false) => (\n !isInteractionDisabled ? (\n <div className={cn(\"flex items-center gap-element\", compact ? \"flex-shrink-0\" : \"\")}>\n {!compact && overridable && hasUploadCapability && (\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.OUTLINE}\n size={ButtonSize.SM}\n onClick={handleClick}\n disabled={uploading}\n >\n {resolvedReplaceButtonText}\n </Button>\n )}\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={onRemove}\n disabled={uploading}\n className={cn(\"text-destructive hover:text-destructive\", compact && \"h-6 w-6 p-0\")}\n aria-label={removeLabel}\n title={removeLabel}\n >\n {renderIcon(StandardIconReference.CLOSE, { size: IconSize.SM })}\n </Button>\n </div>\n ) : null\n )\n\n // ==========================================================================\n // RENDER — File info line (filename, size, extension — shared)\n // ==========================================================================\n\n const renderFileInfo = (fileId: string, meta: FileMetadata | null, compact = false) => (\n <div className={cn(\"min-w-0\", compact ? \"\" : \"flex-1\")}>\n <div className=\"flex items-center gap-element\">\n {meta?.url ? (\n <a\n href={meta.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\"font-medium text-primary hover:underline truncate\", compact && \"text-sm\")}\n >\n {meta.filename}\n </a>\n ) : (\n <span className={cn(\"font-medium truncate\", compact && \"text-sm\")}>\n {getNeutralFileAttachmentLabel(meta?.filename, t)}\n </span>\n )}\n </div>\n <div className=\"flex items-center gap-group text-xs text-muted-foreground mt-0.5\">\n {meta?.size !== undefined && (\n <span>{formatFileSize(meta.size)}</span>\n )}\n {meta?.mimeType && (\n <span className=\"uppercase\">{meta.extension || meta.mimeType.split('/').pop()}</span>\n )}\n {meta?.width && meta?.height && (\n <span>{meta.width}×{meta.height}</span>\n )}\n </div>\n </div>\n )\n\n // ==========================================================================\n // RENDER — Nature-specific previews\n // ==========================================================================\n\n const renderImagePreview = (meta: FileMetadata) => (\n <div className=\"rounded-md border bg-muted/30 overflow-hidden\">\n <div className=\"relative\">\n <img\n src={meta.url || meta.thumbnailUrl || ''}\n alt={meta.filename}\n className=\"w-full max-h-64 object-contain bg-checkerboard\"\n loading=\"lazy\"\n onError={(e) => { (e.target as HTMLImageElement).style.display = 'none' }}\n />\n </div>\n <div className=\"flex items-center gap-group p-card-sm\">\n <span aria-hidden=\"true\">{renderFileIcon(meta.mimeType, IconSize.MD)}</span>\n {renderFileInfo('', meta)}\n {renderFileActions(handleRemoveSingle)}\n </div>\n </div>\n )\n\n const renderVideoPreview = (meta: FileMetadata) => (\n <div className=\"rounded-md border bg-muted/30 overflow-hidden\">\n <video\n src={meta.url}\n controls\n className=\"w-full max-h-64 bg-black\"\n poster={meta.thumbnailUrl}\n preload=\"metadata\"\n />\n <div className=\"flex items-center gap-group p-card-sm\">\n <span aria-hidden=\"true\">{renderFileIcon(meta.mimeType, IconSize.MD)}</span>\n {renderFileInfo('', meta)}\n {renderFileActions(handleRemoveSingle)}\n </div>\n </div>\n )\n\n const renderAudioPreview = (meta: FileMetadata) => (\n <div className=\"rounded-md border bg-muted/30 p-card-sm space-y-element\">\n <div className=\"flex items-center gap-group\">\n <span aria-hidden=\"true\">{renderFileIcon(meta.mimeType, IconSize.MD)}</span>\n {renderFileInfo('', meta)}\n {renderFileActions(handleRemoveSingle)}\n </div>\n <audio\n src={meta.url}\n controls\n className=\"w-full h-8\"\n preload=\"metadata\"\n />\n </div>\n )\n\n // ==========================================================================\n // RENDER — Single file display (nature-aware)\n // ==========================================================================\n\n const renderSingleFileDisplay = (fileId: string, meta: FileMetadata | null) => {\n if (meta && ![FileReadiness.READY, FileReadiness.ATTACHED].includes(meta.readiness)) meta = { ...meta, url: undefined, thumbnailUrl: undefined }\n if (!meta) {\n // No metadata yet — show generic card\n return (\n <div className=\"flex items-center gap-group p-card-sm rounded-md border bg-muted/30\">\n <span aria-hidden=\"true\">{renderFileIcon(undefined, IconSize.LG)}</span>\n {renderFileInfo(fileId, null)}\n {renderFileActions(handleRemoveSingle)}\n </div>\n )\n }\n\n const nature = resolveFileDisplayNature(schemaNature, meta.mimeType)\n\n // Nature-specific rendering\n if (nature === FileDisplayNature.IMAGE && (meta.url || meta.thumbnailUrl)) {\n return renderImagePreview(meta)\n }\n if (nature === FileDisplayNature.VIDEO && meta.url) {\n return renderVideoPreview(meta)\n }\n if (nature === FileDisplayNature.AUDIO && meta.url) {\n return renderAudioPreview(meta)\n }\n\n // Generic / document fallback — compact card\n return (\n <div className=\"flex items-center gap-group p-card-sm rounded-md border bg-muted/30\">\n <span aria-hidden=\"true\">{renderFileIcon(meta.mimeType, IconSize.LG)}</span>\n {renderFileInfo(fileId, meta)}\n {renderFileActions(handleRemoveSingle)}\n </div>\n )\n }\n\n // ==========================================================================\n // RENDER — Multiple file list\n // ==========================================================================\n\n /** Render a single item within the multiple-file list */\n const renderMultipleFileItem = (fileId: string, meta: FileMetadata | undefined) => {\n if (meta && ![FileReadiness.READY, FileReadiness.ATTACHED].includes(meta.readiness)) meta = { ...meta, url: undefined, thumbnailUrl: undefined }\n const nature = resolveFileDisplayNature(schemaNature, meta?.mimeType)\n const onRemove = () => handleRemoveFromMultiple(fileId)\n\n // Compact image preview — thumbnail inline\n if (nature === FileDisplayNature.IMAGE && meta && (meta.url || meta.thumbnailUrl)) {\n return (\n <div key={fileId} className=\"flex items-center gap-group p-card-sm rounded-md border bg-muted/30\">\n <img\n src={meta.thumbnailUrl || meta.url || ''}\n alt={meta.filename}\n className=\"h-12 w-12 rounded object-cover flex-shrink-0\"\n loading=\"lazy\"\n onError={(e) => { (e.target as HTMLImageElement).style.display = 'none' }}\n />\n <div className=\"flex-1 min-w-0\">\n {renderFileInfo(fileId, meta, true)}\n </div>\n {renderFileActions(onRemove, true)}\n </div>\n )\n }\n\n // Compact audio preview — inline player\n if (nature === FileDisplayNature.AUDIO && meta?.url) {\n return (\n <div key={fileId} className=\"rounded-md border bg-muted/30 p-card-sm space-y-item-xs\">\n <div className=\"flex items-center gap-group\">\n <span aria-hidden=\"true\">{renderFileIcon(meta.mimeType, IconSize.MD)}</span>\n <div className=\"flex-1 min-w-0\">\n {renderFileInfo(fileId, meta, true)}\n </div>\n {renderFileActions(onRemove, true)}\n </div>\n <audio src={meta.url} controls className=\"w-full h-8\" preload=\"metadata\" />\n </div>\n )\n }\n\n // Generic compact card (video, document, unknown)\n return (\n <div key={fileId} className=\"flex items-center gap-group p-card-sm rounded-md border bg-muted/30\">\n <span aria-hidden=\"true\">{renderFileIcon(meta?.mimeType, IconSize.MD)}</span>\n <div className=\"flex-1 min-w-0\">\n {renderFileInfo(fileId, meta ?? null, true)}\n </div>\n {renderFileActions(onRemove, true)}\n </div>\n )\n }\n\n const renderMultipleFileList = () => (\n <div className=\"space-y-element\">\n {/* Existing files */}\n {currentFileIds.map((fileId) => {\n const meta = fileMetadataMap.get(fileId)\n return renderMultipleFileItem(fileId, meta)\n })}\n\n {/* In-progress uploads */}\n {Array.from(uploadingFiles.values()).map((uploadState) => (\n <div key={uploadState.tempId} className=\"flex items-center gap-group p-card-sm rounded-md border border-primary/20 bg-primary/5\">\n {uploadState.status === 'uploading' && (\n <LoadingSpinner size={20} className=\"text-primary flex-shrink-0\" aria-hidden=\"true\" />\n )}\n {uploadState.status === 'error' && (\n <span className=\"text-destructive flex-shrink-0\" aria-hidden=\"true\">{renderIcon(StandardIconReference.WARNING, { size: IconSize.MD })}</span>\n )}\n <div className=\"flex-1 min-w-0\">\n <span className=\"font-medium text-sm truncate block\">{uploadState.fileName}</span>\n {uploadState.status === 'uploading' && (\n <div className=\"w-full h-1 bg-muted rounded-full mt-1 overflow-hidden\">\n {uploadState.progress < 0 ? (\n <div className=\"h-full w-1/3 bg-primary animate-pulse rounded-full\" />\n ) : (\n <div\n className=\"h-full bg-primary transition-all duration-[var(--motion-duration-fast)]\"\n style={{ width: `${uploadState.progress}%` }}\n />\n )}\n </div>\n )}\n {uploadState.status === 'error' && uploadState.error && (\n <span className=\"text-xs text-destructive\">{uploadState.error}</span>\n )}\n </div>\n {(uploadState.status === 'uploading' || uploadState.status === 'error') && (\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={() => handleCancelUpload(uploadState.tempId)}\n className=\"text-muted-foreground hover:text-destructive h-6 w-6 p-0\"\n aria-label={tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'cancel')}\n title={tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'cancel')}\n >\n {renderIcon(StandardIconReference.CLOSE, { size: IconSize.SM })}\n </Button>\n )}\n </div>\n ))}\n </div>\n )\n\n // ==========================================================================\n // RENDER — Constraint hints (below upload area)\n // ==========================================================================\n\n /** Format seconds into human-readable duration */\n const formatDuration = (seconds: number): string => {\n if (seconds < 60) return `${seconds}s`\n if (seconds < 3600) return `${Math.floor(seconds / 60)} min`\n const h = Math.floor(seconds / 3600)\n const m = Math.floor((seconds % 3600) / 60)\n return m > 0 ? `${h}h ${m}min` : `${h}h`\n }\n\n const constraintHints = React.useMemo(() => {\n const hints: string[] = []\n\n // Size constraints\n if (minSize && maxSize) {\n hints.push(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'constraint_size_range', { min: formatFileSize(minSize), max: formatFileSize(maxSize) }))\n } else if (minSize) {\n hints.push(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'constraint_min_size', { min: formatFileSize(minSize) }))\n }\n // maxSize is already shown inline in the upload zone — no duplicate needed\n\n // Image constraints\n if (imageConstraints) {\n const { minWidth, maxWidth, minHeight, maxHeight, aspectRatio } = imageConstraints\n if (minWidth || minHeight) {\n const w = minWidth ?? '–'\n const h = minHeight ?? '–'\n hints.push(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'constraint_image_dimensions', { width: String(w), height: String(h) }))\n }\n if (maxWidth || maxHeight) {\n const w = maxWidth ?? '–'\n const h = maxHeight ?? '–'\n hints.push(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'constraint_image_max_dimensions', { width: String(w), height: String(h) }))\n }\n if (aspectRatio) {\n hints.push(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'constraint_image_aspect_ratio', { width: String(aspectRatio.width), height: String(aspectRatio.height) }))\n }\n }\n\n // Video constraints\n if (videoConstraints) {\n if (videoConstraints.maxDuration) {\n hints.push(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'constraint_video_max_duration', { duration: formatDuration(videoConstraints.maxDuration) }))\n }\n }\n\n // Audio constraints\n if (audioConstraints) {\n if (audioConstraints.maxDuration) {\n hints.push(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'constraint_audio_max_duration', { duration: formatDuration(audioConstraints.maxDuration) }))\n }\n }\n\n // Document constraints\n if (documentConstraints) {\n if (documentConstraints.maxPages) {\n hints.push(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'constraint_document_max_pages', { pages: documentConstraints.maxPages }))\n }\n }\n\n // Multiple file constraint\n if (isMultiple && maxFiles) {\n hints.push(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'constraint_max_files', { max: maxFiles }))\n }\n\n return hints\n }, [minSize, maxSize, imageConstraints, videoConstraints, audioConstraints, documentConstraints, isMultiple, maxFiles, tComponent])\n\n const renderConstraintHints = () => {\n if (constraintHints.length === 0) return null\n return (\n <div className=\"flex flex-wrap gap-x-group gap-y-item-xs mt-item-xs\">\n {constraintHints.map((hint, i) => (\n <span key={i} className=\"text-xs text-muted-foreground\">\n {hint}\n </span>\n ))}\n </div>\n )\n }\n\n // ==========================================================================\n // RENDER — Upload zone (drop target + button)\n // ==========================================================================\n\n const renderUploadZone = (compact = false) => (\n <div\n onClick={handleClick}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n className={cn(\n \"relative flex flex-col items-center justify-center rounded-md border-2 border-dashed cursor-pointer\",\n compact ? \"p-card-sm\" : \"p-container\",\n dragOver && \"border-primary bg-primary/5\",\n isUploadInteractionDisabled && \"opacity-[var(--opacity-disabled)] cursor-not-allowed\",\n uploading && !isMultiple && \"pointer-events-none\",\n internalError && \"border-destructive\",\n !isUploadInteractionDisabled && !uploading && \"hover:border-primary hover:bg-primary/5\",\n formRecipe.motion.transition\n )}\n >\n {/* Single mode uploading state */}\n {uploading && !isMultiple ? (\n <>\n <LoadingSpinner size={32} className=\"text-primary mb-element\" aria-hidden=\"true\" />\n <span className=\"text-sm text-muted-foreground\">\n {uploadProgress < 0\n ? tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'uploading_indeterminate')\n : tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'uploading', { progress: uploadProgress })}\n </span>\n <div className=\"w-full max-w-xs h-1 bg-muted rounded-full mt-element overflow-hidden\">\n {uploadProgress < 0 ? (\n // Indeterminate progress: animated shimmer bar\n <div className=\"h-full w-1/3 bg-primary animate-pulse rounded-full\" />\n ) : (\n <div\n className=\"h-full bg-primary transition-all duration-[var(--motion-duration-fast)]\"\n style={{ width: `${uploadProgress}%` }}\n />\n )}\n </div>\n </>\n ) : (\n <>\n {!compact && <span className=\"mb-element\" aria-hidden=\"true\">{renderIcon(StandardIconReference.UPLOAD, { size: IconSize.XL })}</span>}\n <span className={cn(\"font-medium\", compact ? \"text-xs\" : \"text-sm\")}>\n {compact ? tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'add_more') : resolvedUploadButtonText}\n </span>\n {!compact && (\n <>\n <span className=\"text-xs text-muted-foreground mt-item-xs\">\n {dragDropLabel}\n </span>\n <span className=\"text-xs text-muted-foreground mt-element\">\n {acceptDescription}\n {maxSize && !minSize && ` • ${tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'max_size', { size: formatFileSize(maxSize) })}`}\n </span>\n {renderConstraintHints()}\n </>\n )}\n </>\n )}\n </div>\n )\n\n // ==========================================================================\n // RENDER — Main\n // ==========================================================================\n\n const canAddMore = isMultiple && (!maxFiles || currentFileIds.length < maxFiles)\n\n /*\n * The provider pickers, mounted in the FRAMEWORK's own upload chrome rather\n * than in an application: every application's file fields get them, and an\n * application that adopted it in one place would have proven the component\n * and left the capability just as unadopted.\n *\n * `ProviderFilePickerHost` renders NOTHING when no live provider carries a\n * picker, which is every application today — so this costs an empty render\n * and no chrome until somebody registers one. The chooser is supplied here\n * rather than left to the host's plain buttons because a provider's display\n * name is an i18n KEY: the host cannot resolve it without depending on the\n * i18n service, and this field already has one.\n */\n const renderProviderPickers = () => (\n <ProviderFilePickerHost\n multiple={isMultiple}\n constraints={providerConstraints}\n acceptedStorages={fileSchemaMetadata?.storageAccepted}\n onSelect={handleProviderSelections}\n onProviderFailure={handleProviderFailure}\n renderChooser={({ choices, chosen, choose }) => (\n <div role=\"group\" className=\"flex flex-wrap gap-item-xs mt-element\">\n {choices.map((choice) => (\n <Button\n key={choice.providerRef}\n type=\"button\"\n size={ButtonSize.SM}\n variant={choice.providerRef === chosen ? ButtonVariants_Variant.DEFAULT : ButtonVariants_Variant.OUTLINE}\n aria-pressed={choice.providerRef === chosen}\n onClick={() => choose(choice.providerRef)}\n >\n {t(choice.displayNameLabelKey) ?? choice.displayName ?? choice.providerRef}\n </Button>\n ))}\n </div>\n )}\n />\n )\n\n if (!isReady) return null;\n\n return (\n <div ref={ref as React.RefObject<HTMLDivElement>} className={className}>\n {(internalError ?? readinessError) && <p role=\"status\" className=\"text-sm text-muted-foreground\">{internalError ?? readinessError}</p>}\n {pendingReadiness.size > 0 && <Button type=\"button\" onClick={cancelReadiness}>{tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'cancel')}</Button>}\n {/* Hidden file input */}\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={isMultiple}\n onChange={handleFileChange}\n className=\"hidden\"\n disabled={isUploadInteractionDisabled}\n />\n\n {isMultiple ? (\n // Multiple file mode\n <div className=\"space-y-element\">\n {(currentFileIds.length > 0 || uploadingFiles.size > 0) && renderMultipleFileList()}\n {!isUploadInteractionDisabled && canAddMore && renderUploadZone(currentFileIds.length > 0)}\n {!isUploadInteractionDisabled && currentFileIds.length === 0 && !canAddMore && renderUploadZone(false)}\n {!isUploadInteractionDisabled && canAddMore && renderProviderPickers()}\n </div>\n ) : (\n // Single file mode\n currentFileId\n ? renderSingleFileDisplay(currentFileId, fileMetadata)\n : (hasUploadCapability ? (\n <>\n {renderUploadZone(false)}\n {!isUploadInteractionDisabled && renderProviderPickers()}\n </>\n ) : null)\n )}\n\n {/* Inline crop step — mounted only while a selection on an\n aspect-ratio-constrained field awaits cropping (mount = open). */}\n {pendingCropFile && aspectRatioConstraint && (\n <ImageCrop\n file={pendingCropFile}\n aspectRatio={aspectRatioConstraint}\n maskShape={fileUIPreviewShape}\n maxOutputWidth={imageConstraints?.maxWidth}\n maxOutputHeight={imageConstraints?.maxHeight}\n maxOutputSizeBytes={maxSize}\n allowedMimeTypes={allowedMimeTypes}\n onConfirm={handleCropConfirm}\n onCancel={handleCropCancel}\n onUncroppable={handleUncroppable}\n />\n )}\n </div>\n )\n})\n\n// --- Wrapper ---\n/**\n * Schema-aware FormFieldFile component.\n *\n * This wrapper sits between the generic FormField orchestrator and the preset\n * component. It is the proper boundary for injecting engine-level concerns:\n * - Authenticated HTTP operations (upload, metadata, delete) via httpClient\n * - Component preset resolution via the registry\n *\n * The preset component (presets-components) never imports the HTTP client directly,\n * maintaining separation of concerns. The generic FormField never deals with\n * file-specific HTTP concerns.\n */\nexport const FormFieldFile = forwardRef<FormFieldFileRef, FormFieldFileProps>(\n ({ preset = CorePresetNames.DEFAULT, httpOperations: externalHttpOperations, ...props }, ref) => {\n const { httpClient } = useApplication();\n\n const httpOperations: FileHttpOperations = useMemo(() => {\n if (externalHttpOperations) return externalHttpOperations;\n\n return {\n upload: async (url, formData, options) => {\n const response = await httpClient.uploadFile<any>(url, formData, {\n onUploadProgress: options?.onProgress,\n signal: options?.signal,\n });\n\n if (response?.file?.fileId) {\n return {\n fileId: response.file.fileId,\n metadata: response.file,\n };\n }\n if (response?.fileId) {\n return { fileId: response.fileId, metadata: response.metadata };\n }\n\n throw new Error('upload_failed');\n },\n linkRemoteReference: async (url, body) => {\n // Same route, same response shape as an upload — see `FileHttpOperations`.\n const response = await httpClient.post<any>(url, body);\n if (response?.file?.fileId) {\n return { fileId: response.file.fileId, metadata: response.file };\n }\n throw new Error('link_failed');\n },\n get: async <T,>(url: string): Promise<T> => {\n return httpClient.get<T>(url);\n },\n delete: async (url: string): Promise<void> => {\n await httpClient.delete(url);\n },\n };\n }, [httpClient, externalHttpOperations]);\n\n const Component = createComponentResolverWithRef<FormFieldFilePresetProps, FormFieldFileRef>(\n FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE,\n 'FormFieldFile'\n )(preset);\n const resolvedProps = { ...props, httpOperations } as FormFieldFilePresetProps;\n return <Component {...resolvedProps} ref={ref} />\n})\nFormFieldFile.displayName = 'FormFieldFile'\n"]}
1
+ {"version":3,"file":"form-field-file.js","sourceRoot":"","sources":["../../../../../../src/components/form/fields/form-field-file.tsx"],"names":[],"mappings":"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","sourcesContent":["import { awaitFileRequest, FileReadinessError, waitForFileReadiness } from '../controls/file/file-readiness.frontend.utils'\nimport React, { forwardRef, useMemo } from 'react'\nimport { FrontendComponentType, CorePresetNames } from '@wildo-ai/presets-components-models'\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 { useApplication } from '~wildo-frontend-lib/core/runtime/useApplication'\nimport type { ControlBaseProps, FileHttpOperations } from '~wildo-frontend-lib/components/form/form-field-types'\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 { useIconRegistry } from \"~wildo-frontend-lib/core/icons/useIconRegistry\"\nimport { IconSize, StandardIconReference } from \"~wildo-frontend-lib/core/icons/icon-registry.frontend.schemas\"\nimport { LoadingSpinner } from \"~wildo-frontend-lib/components/feedback/loading-spinner\"\nimport { Button, ButtonVariants_Variant } from \"~wildo-frontend-lib/components/actions/button\"\nimport { UIBehavior, FormControlVariant, ButtonSize } from \"@wildo-ai/presets-components-models\"\nimport {\n FileReadiness,\n getFileMetadata,\n getFileUI,\n FileValue,\n SingleFileValue,\n MultipleFileValue,\n FileMetadata,\n FileFieldEndpoints,\n formatFileSize,\n isMimeTypeAllowed,\n getAcceptedFileKinds,\n buildAcceptAttribute,\n FileDisplayNature,\n resolveFileDisplayNature,\n} from \"@wildo-ai/zod-decorators\"\nimport { determineValidationMode, getZodErrorParams, ValidationMode } from \"~wildo-frontend-lib/components/form/validation-errors/form-validation\"\nimport { resolveFormFieldFileProviderConstraints } from './form-field-file-provider-constraints.frontend.utils'\nimport { describeAcceptedFileKinds } from './accepted-file-kinds-description.frontend.utils'\nimport { ProviderFilePickerHost } from '~wildo-frontend-lib/core/external-providers/ProviderFilePickerHost'\nimport { ProviderFrontendSelectionDelivery } from '@wildo-ai/saas-models/public-runtime'\nimport { CoreResourceType, UserPrivacySchema } from '@wildo-ai/saas-models'\nimport { getZodObjectShape } from '@wildo-ai/zod-decorators'\nimport type { ProviderFileSelection } from '@wildo-ai/saas-models/public-runtime'\nimport { ImageCrop } from '~wildo-frontend-lib/components/form/controls/file/image-crop'\nimport { canExportWithinAllowedMimeTypes, isCroppableRasterImageFile } from '~wildo-frontend-lib/components/form/controls/file/image-crop.frontend.utils'\n\n// --- Contract ---\nexport interface FormFieldFilePresetProps extends Omit<ControlBaseProps, 'value' | 'onChange' | 'defaultValue'> {\n value?: FileValue\n onChange?: (value: FileValue | null) => void\n defaultValue?: FileValue\n endpoints: FileFieldEndpoints\n uploadButtonText?: string\n onValidationError?: (error: string | undefined) => void\n replaceButtonText?: string\n httpOperations: FileHttpOperations\n}\n\nexport type FormFieldFileProps = Omit<FormFieldFilePresetProps, 'httpOperations'> & {\n httpOperations?: FileHttpOperations\n} & ComponentPresetProps\n\nexport type FormFieldFileRef = HTMLDivElement\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/** State of an individual file being uploaded */\ninterface UploadingFileState {\n /** Temporary ID for tracking (not the server fileId) */\n tempId: string;\n /** Original file name */\n fileName: string;\n /** Upload progress percentage (0-100) */\n progress: number;\n /** Upload status */\n status: 'uploading' | 'done' | 'error';\n /** Error message if status is 'error' */\n error?: string;\n /** Server-returned fileId once upload is complete */\n fileId?: string;\n /** AbortController for cancellation */\n abortController: AbortController;\n}\n\n/** Type guard to check if value is a single file */\nfunction isSingleFileValue(value: FileValue | null | undefined): value is SingleFileValue {\n return value !== null && value !== undefined && 'fileId' in value;\n}\n\n/** Type guard to check if value is multiple files */\nfunction isMultipleFileValue(value: FileValue | null | undefined): value is MultipleFileValue {\n return value !== null && value !== undefined && 'fileIds' in value;\n}\n\n/** Generate a temporary ID for tracking uploads before server assigns fileId */\nlet tempIdCounter = 0;\nfunction generateTempId(): string {\n return `upload-${Date.now()}-${++tempIdCounter}`;\n}\n\n/**\n * Detect if an error was caused by intentional cancellation (AbortController.abort).\n *\n * Axios throws CanceledError with code 'ERR_CANCELED' and message 'canceled'.\n * Native fetch/AbortController throws DOMException with name 'AbortError'.\n * We check both to remain HTTP-client-agnostic.\n */\nfunction isCancellationError(err: unknown): boolean {\n if (!(err instanceof Error)) return false;\n if ((err as any).code === 'ERR_CANCELED') return true;\n if (err.name === 'AbortError') return true;\n return false;\n}\n\nfunction resolveSingleFileUploadUrl(\n endpoints: FileFieldEndpoints,\n currentFileId: string | null,\n): string | undefined {\n return currentFileId && endpoints.override\n ? endpoints.override\n : endpoints.upload\n}\n\nfunction hasActionableSingleFileEndpoint(\n endpoints: FileFieldEndpoints,\n currentFileId: string | null,\n): boolean {\n return Boolean(resolveSingleFileUploadUrl(endpoints, currentFileId))\n}\n\nfunction hasActionableMultipleFileEndpoint(endpoints: FileFieldEndpoints): boolean {\n return Boolean(endpoints.upload)\n}\n\nfunction getNeutralFileAttachmentLabel(\n filename: string | undefined,\n fileAttachedLabel: string,\n): string {\n if (filename && filename.trim() !== '') {\n return filename;\n }\n\n // Do not expose internal file ids in fallback UI when metadata is unavailable.\n // The words are the component's `file_attached` label, resolved by the caller.\n return fileAttachedLabel;\n}\n\nfunction getSafeFileMutationErrorMessage(\n fallbackMessage: string,\n _err: unknown,\n): string {\n return _err instanceof FileReadinessError ? _err.message : fallbackMessage;\n}\n\n/**\n * FormFieldFile component\n *\n * Renders a file upload field with:\n * - Drag and drop zone\n * - File picker button\n * - Current file display (single mode) or file list (multiple mode)\n * - Replace/remove options\n * - Progress tracking per upload\n * - Upload cancellation support\n */\nexport const FormFieldFile_Preset_Default = React.forwardRef<FormFieldFileRef, FormFieldFilePresetProps>(\n ({\n schema,\n name,\n value: controlledValue,\n onChange,\n onBlur,\n defaultValue,\n disabled = false,\n readOnly,\n className,\n validationMode: validationModeProp,\n endpoints,\n uploadButtonText,\n replaceButtonText,\n onValidationError,\n required,\n httpOperations,\n}, ref): React.JSX.Element | null => {\n const { t, tErrorValidation, tComponent, tResourceFieldEnumValue, isReady } = useI18n({\n component: FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE,\n // `system_enums` carries the consent purposes' words, shown when a provider waits on consent (#1702).\n keys: ['errors_validation', 'system_enums'],\n })\n const { frontendProviderRegistry } = useApplication()\n const { renderIcon } = useIconRegistry()\n const { getRecipe } = useUI()\n const formRecipe = getRecipe(UIBehavior.FORM_CONTROL, FormControlVariant.DEFAULT)\n const resolvedUploadButtonText = uploadButtonText ?? tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'choose_file')\n const resolvedReplaceButtonText = replaceButtonText ?? tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'replace')\n const dragDropLabel = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'drag_and_drop')\n const removeLabel = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'remove')\n const uploadFailedMessage = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'upload_failed')\n // Also an equality sentinel below (`current === metadataLoadFailedMessage`): the comparison is on\n // the RESOLVED words, which is what `internalError` holds, never on the key.\n const metadataLoadFailedMessage = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'metadata_load_failed')\n const uploadsUnavailableMessage = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'uploads_unavailable')\n const fileAttachedLabel = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'file_attached')\n\n // Get file metadata from schema\n const fileSchemaMetadata = getFileMetadata(schema)\n // The FIELD's own constraints. A provider's declared limits are laid under\n // these inside `ProviderFilePickerHost`, per chosen provider (#380) — they do\n // not reach the native upload below, which goes to the field's own storage and\n // is no vendor's business.\n const providerConstraints = resolveFormFieldFileProviderConstraints({ schema })\n\n // Get options from metadata\n const allowedMimeTypes = providerConstraints.allowedMimeTypes\n const maxSize = providerConstraints.maxSize\n const minSize = fileSchemaMetadata?.minSize\n const overridable = fileSchemaMetadata?.overridable ?? true\n const accept = allowedMimeTypes ? buildAcceptAttribute(allowedMimeTypes) : undefined\n const isMultiple = fileSchemaMetadata?.multiple ?? false\n const maxFiles = providerConstraints.maxFiles\n const imageConstraints = fileSchemaMetadata?.imageConstraints\n const videoConstraints = fileSchemaMetadata?.videoConstraints\n const audioConstraints = fileSchemaMetadata?.audioConstraints\n const documentConstraints = fileSchemaMetadata?.documentConstraints\n\n // Determine validation mode\n const validationMode = determineValidationMode(schema, validationModeProp)\n\n // Internal state for uncontrolled mode\n const [internalValue, setInternalValue] = React.useState<FileValue | null>(defaultValue ?? null)\n\n // Internal validation error state (Hybrid Pattern - see file header comment)\n const [internalError, setInternalError] = React.useState<string | undefined>()\n\n\n // Clear internal error when value is cleared (form reset or manual clear)\n const prevValueRef = React.useRef(controlledValue)\n React.useEffect(() => {\n const prevValue = prevValueRef.current\n const valueCleared = prevValue !== undefined && (controlledValue === null || controlledValue === undefined)\n if (valueCleared && internalError) {\n setInternalError(undefined)\n }\n prevValueRef.current = controlledValue\n }, [controlledValue, internalError])\n\n // Upload state — supports parallel uploads for multiple file mode\n const [uploadingFiles, setUploadingFiles] = React.useState<Map<string, UploadingFileState>>(new Map())\n // Ref for reading upload state outside of React state updaters (e.g., to abort)\n const uploadingFilesRef = React.useRef(uploadingFiles)\n uploadingFilesRef.current = uploadingFiles\n const [uploadProgress, setUploadProgress] = React.useState(0) // Aggregate progress for single mode\n const [fileMetadataMap, setFileMetadataMap] = React.useState<Map<string, FileMetadata>>(new Map())\n const [dragOver, setDragOver] = React.useState(false)\n const readinessRequests = React.useRef(new Set<AbortController>())\n const readinessGeneration = React.useRef(0)\n const [pendingReadiness, setPendingReadiness] = React.useState<Set<string>>(new Set())\n const processingMessage = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'file_processing')\n const unavailableMessage = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'file_unavailable')\n const unverifiedMessage = tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'file_readiness_unverified')\n const cancelReadiness = React.useCallback(() => {\n readinessGeneration.current += 1\n for (const request of readinessRequests.current) request.abort()\n for (const upload of uploadingFilesRef.current.values()) upload.abortController.abort()\n readinessRequests.current.clear()\n }, [])\n\n\n\n // File input ref\n const fileInputRef = React.useRef<HTMLInputElement>(null)\n\n // Controlled ⇔ the caller supplied a change handler (or a defined value).\n //\n // Deciding by VALUE alone is unsafe for a caller that legitimately passes `undefined` — an empty\n // file field on a create surface, or one whose value was cleared: the control would conclude it\n // is uncontrolled, keep the upload result in private internal state and never call `onChange`,\n // so the form would submit without the file the user just uploaded. The tier-1 field wrappers\n // were hardened against this class; this control renders directly and was not.\n const isControlled = onChange !== undefined || controlledValue !== undefined\n const currentValue = controlledValue ?? internalValue\n\n // Derived state\n const uploading = Array.from(uploadingFiles.values()).some(file => file.status === 'uploading')\n const currentFileId = isSingleFileValue(currentValue) ? currentValue.fileId : null\n const currentFileIds = isMultipleFileValue(currentValue) ? currentValue.fileIds : []\n const hasUploadCapability = isMultiple\n ? hasActionableMultipleFileEndpoint(endpoints)\n : hasActionableSingleFileEndpoint(endpoints, currentFileId)\n\n // Ref to track latest currentFileIds — prevents stale closure in multi-file upload.\n // Without this, two rapid batch uploads can lose IDs: Batch 1 and Batch 2 both capture\n // the same currentFileIds from the closure, then Batch 2's result overwrites Batch 1's.\n const currentFileIdsRef = React.useRef(currentFileIds)\n currentFileIdsRef.current = currentFileIds\n\n // Stable key for metadata fetch dependency (avoids inline .join() in effect deps)\n const fileIdsKey = React.useMemo(() => currentFileIds.join(','), [currentFileIds])\n\n // Ref for metadata map to avoid stale reads in fetch effect cache check\n const fileMetadataMapRef = React.useRef(fileMetadataMap)\n fileMetadataMapRef.current = fileMetadataMap\n\n // Get first metadata for single file mode display\n const fileMetadata = currentFileId ? fileMetadataMap.get(currentFileId) ?? null : null\n const visibleIds = currentFileId ? [currentFileId] : currentFileIds\n const existingReadinessError = visibleIds.some(id => fileMetadataMap.get(id)?.readiness === FileReadiness.UNAVAILABLE)\n ? unavailableMessage\n : visibleIds.some(id => ![FileReadiness.READY, FileReadiness.ATTACHED].includes(fileMetadataMap.get(id)?.readiness as FileReadiness))\n ? processingMessage : undefined\n const failedUploadError = Array.from(uploadingFiles.values()).find(file => file.status === 'error')?.error\n const readinessError = uploading || pendingReadiness.size > 0 ? processingMessage : failedUploadError ?? existingReadinessError\n React.useEffect(() => {\n onValidationError?.(internalError ?? readinessError)\n }, [internalError, readinessError, onValidationError])\n\n\n // ==========================================================================\n // HTTP OPERATIONS — delegates to the injected httpOperations interface\n // ==========================================================================\n\n const authenticatedGet = React.useCallback(\n async <T,>(url: string): Promise<T> => httpOperations.get<T>(url),\n [httpOperations]\n )\n\n const authenticatedDelete = React.useCallback(\n async (url: string): Promise<void> => httpOperations.delete(url),\n [httpOperations]\n )\n\n // ==========================================================================\n // METADATA FETCHING — for existing files\n // ==========================================================================\n\n React.useEffect(() => () => cancelReadiness(), [endpoints.getMetadata, endpoints.upload, endpoints.override, httpOperations, authenticatedGet, cancelReadiness])\n\n const metadataEndpointRef = React.useRef({ endpoint: endpoints.getMetadata, get: authenticatedGet })\n React.useEffect(() => {\n const ids = currentFileId ? [currentFileId] : currentFileIds\n const endpointChanged = metadataEndpointRef.current.endpoint !== endpoints.getMetadata || metadataEndpointRef.current.get !== authenticatedGet\n metadataEndpointRef.current = { endpoint: endpoints.getMetadata, get: authenticatedGet }\n if (endpointChanged) {\n fileMetadataMapRef.current = new Map()\n setFileMetadataMap(new Map())\n }\n if (ids.length === 0) {\n setFileMetadataMap(new Map())\n setInternalError(current => current === metadataLoadFailedMessage ? undefined : current)\n return\n }\n let cancelled = false\n const controller = new AbortController()\n let timer: ReturnType<typeof setTimeout> | undefined\n const refresh = async () => {\n let retry = false\n let failed = false\n const updates = new Map<string, FileMetadata>()\n await Promise.all(ids.map(async fileId => {\n const cached = fileMetadataMapRef.current.get(fileId)\n if (cached && [FileReadiness.READY, FileReadiness.ATTACHED, FileReadiness.UNAVAILABLE].includes(cached.readiness)) return\n if (!endpoints.getMetadata) { failed = true; return }\n try {\n const data = await awaitFileRequest(() => authenticatedGet<FileMetadata>(`${endpoints.getMetadata}/${encodeURIComponent(fileId)}/metadata`), controller.signal, 120_000, metadataLoadFailedMessage)\n if (data.fileId !== fileId || !Object.values(FileReadiness).includes(data.readiness)) throw new Error('Invalid file metadata')\n updates.set(fileId, data)\n if (data.readiness === FileReadiness.PROCESSING) retry = true\n } catch {\n failed = true; retry = true\n console.warn('Unable to load file metadata for one or more files.')\n }\n }))\n if (cancelled) return\n setFileMetadataMap(previous => {\n const next = new Map(previous)\n for (const [id, metadata] of updates) next.set(id, metadata)\n return next\n })\n setInternalError(current => failed ? metadataLoadFailedMessage : current === metadataLoadFailedMessage ? undefined : current)\n if (retry) timer = setTimeout(refresh, 2_000)\n }\n void refresh()\n return () => { cancelled = true; controller.abort(); if (timer) clearTimeout(timer) }\n }, [currentFileId, fileIdsKey, endpoints.getMetadata, authenticatedGet, metadataLoadFailedMessage])\n\n const admitUploadResult = React.useCallback(async (result: { fileId: string; metadata?: FileMetadata }, signal?: AbortSignal) => {\n const controller = new AbortController()\n const abort = () => controller.abort()\n if (signal?.aborted) controller.abort()\n signal?.addEventListener('abort', abort, { once: true })\n readinessRequests.current.add(controller)\n try {\n const metadata = await waitForFileReadiness({\n ...result, signal: controller.signal,\n getMetadata: endpoints.getMetadata ? () => authenticatedGet<FileMetadata>(`${endpoints.getMetadata}/${encodeURIComponent(result.fileId)}/metadata`) : undefined,\n onPending: () => setPendingReadiness(previous => new Set(previous).add(result.fileId)),\n unavailableMessage, unverifiedMessage,\n })\n controller.signal.throwIfAborted()\n return { fileId: result.fileId, metadata }\n } finally {\n signal?.removeEventListener('abort', abort)\n readinessRequests.current.delete(controller)\n setPendingReadiness(previous => { const next = new Set(previous); next.delete(result.fileId); return next })\n }\n }, [authenticatedGet, endpoints.getMetadata, unavailableMessage, unverifiedMessage])\n\n // ==========================================================================\n // VALIDATION\n // ==========================================================================\n\n /**\n * MIME check alone — shared between the plain upload path (via `validateFile`)\n * and the crop path, which must reject a disallowed type BEFORE opening the\n * crop dialog but must NOT pre-check byte size (shrinking an oversized\n * original under the ceiling is precisely what the crop step is for).\n */\n const validateFileMimeType = React.useCallback((file: File): string | undefined => {\n if (allowedMimeTypes && allowedMimeTypes.length > 0) {\n if (!isMimeTypeAllowed(file.type, allowedMimeTypes)) {\n const accepted = describeAcceptedFileKinds(getAcceptedFileKinds(allowedMimeTypes), tComponent)\n return tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'file_type_not_allowed', { accepted })\n }\n }\n return undefined\n }, [allowedMimeTypes, tComponent])\n\n const validateFile = React.useCallback((file: File): string | undefined => {\n // Check MIME type\n const mimeError = validateFileMimeType(file)\n if (mimeError) {\n return mimeError\n }\n\n // Check file size — maximum\n if (maxSize && file.size > maxSize) {\n const max = formatFileSize(maxSize)\n return tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'file_too_large', { max })\n }\n\n // Check file size — minimum\n if (minSize && file.size < minSize) {\n const min = formatFileSize(minSize)\n return tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'file_too_small', { min })\n }\n\n return undefined\n }, [validateFileMimeType, maxSize, minSize, tComponent])\n\n // ==========================================================================\n // UPLOAD — single file\n // ==========================================================================\n\n /** Upload a single file via httpOperations */\n const uploadSingleFile = React.useCallback(async (\n file: File,\n uploadUrl: string,\n isReplacing: boolean,\n existingFileId: string | null,\n onProgress: (percent: number) => void,\n signal?: AbortSignal,\n ): Promise<{ fileId: string; metadata?: FileMetadata }> => {\n const formData = new FormData()\n formData.append('file', file)\n if (isReplacing && existingFileId) {\n formData.append('fileId', existingFileId)\n }\n\n const request = () => httpOperations.upload(uploadUrl, formData, { onProgress, signal })\n const result = signal ? await awaitFileRequest(request, signal, undefined, unverifiedMessage) : await request()\n signal?.throwIfAborted()\n return admitUploadResult(result, signal)\n }, [httpOperations, admitUploadResult, unverifiedMessage])\n\n // ==========================================================================\n // UPLOAD HANDLERS — single mode\n // ==========================================================================\n\n const handleSingleFileUpload = React.useCallback(async (file: File) => {\n cancelReadiness()\n const generation = readinessGeneration.current\n const uploadUrl = resolveSingleFileUploadUrl(endpoints, currentFileId)\n if (!uploadUrl) {\n setInternalError(uploadsUnavailableMessage)\n return\n }\n\n // Validate first\n const validationError = validateFile(file)\n if (validationError) {\n setInternalError(validationError)\n return\n }\n\n const tempId = generateTempId()\n const abortController = new AbortController()\n\n setUploadingFiles(new Map([[tempId, {\n tempId,\n fileName: file.name,\n progress: 0,\n status: 'uploading',\n abortController,\n }]]))\n setUploadProgress(0)\n onValidationError?.(processingMessage)\n setInternalError(undefined)\n\n try {\n const isReplacing = !!currentFileId\n\n const result = await uploadSingleFile(\n file,\n uploadUrl,\n isReplacing,\n currentFileId,\n (percent) => {\n setUploadProgress(percent)\n setUploadingFiles(prev => {\n const next = new Map(prev)\n const state = next.get(tempId)\n if (state) next.set(tempId, { ...state, progress: percent })\n return next\n })\n },\n abortController.signal,\n )\n\n if (generation !== readinessGeneration.current) return\n // Build new value\n const newValue: FileValue = {\n fileId: result.fileId,\n updatedAt: new Date(),\n }\n\n if (!isControlled) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n\n // Update metadata cache\n if (result.metadata) {\n setFileMetadataMap(prev => {\n const next = new Map(prev)\n next.set(result.fileId, result.metadata!)\n return next\n })\n }\n\n // Validate the new value against schema\n if (validationMode !== 'onSubmit') {\n const schemaResult = schema.safeParse(newValue)\n if (!schemaResult.success) {\n const firstIssue = schemaResult.error.issues[0]\n if (firstIssue) {\n const params = { ...getZodErrorParams(firstIssue), message: firstIssue.message }\n const translated = tErrorValidation(firstIssue.code, 'msg', params)\n setInternalError(translated)\n }\n }\n }\n } catch (err) {\n if (abortController.signal.aborted || generation !== readinessGeneration.current || isCancellationError(err)) return\n setInternalError(getSafeFileMutationErrorMessage(uploadFailedMessage, err))\n } finally {\n setUploadingFiles(previous => { const next = new Map(previous); next.delete(tempId); return next })\n setUploadProgress(0)\n }\n }, [currentFileId, endpoints, isControlled, onChange, uploadsUnavailableMessage, validateFile, validationMode, schema, tErrorValidation, uploadSingleFile, cancelReadiness, onValidationError, processingMessage, uploadFailedMessage])\n\n // ==========================================================================\n // UPLOAD HANDLERS — multiple mode\n // ==========================================================================\n\n const handleMultipleFilesUpload = React.useCallback(async (files: File[]) => {\n const generation = readinessGeneration.current\n if (!hasActionableMultipleFileEndpoint(endpoints)) {\n setInternalError(uploadsUnavailableMessage)\n return\n }\n\n // Use ref to get latest file IDs — prevents stale closure when batches overlap.\n // Without this, two rapid uploads both see the same old currentFileIds,\n // and the second batch's result would overwrite the first batch's new IDs.\n const latestFileIds = currentFileIdsRef.current\n\n // Validate all files first\n const currentCount = latestFileIds.length\n if (maxFiles && currentCount + files.length > maxFiles) {\n setInternalError(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'too_many_files', { max: maxFiles }))\n return\n }\n\n const validFiles: File[] = []\n for (const file of files) {\n const error = validateFile(file)\n if (error) {\n setInternalError(error)\n return\n }\n validFiles.push(file)\n }\n\n onValidationError?.(processingMessage)\n setInternalError(undefined)\n\n // Create upload state for each file\n const initialStates = new Map<string, UploadingFileState>()\n const fileEntries: { tempId: string; file: File; abortController: AbortController }[] = []\n\n for (const file of validFiles) {\n const tempId = generateTempId()\n const abortController = new AbortController()\n initialStates.set(tempId, {\n tempId,\n fileName: file.name,\n progress: 0,\n status: 'uploading',\n abortController,\n })\n fileEntries.push({ tempId, file, abortController })\n }\n\n setUploadingFiles(prev => {\n const next = new Map<string, UploadingFileState>()\n // Keep only in-progress uploads from previous batches; discard stale errors\n for (const [id, state] of prev) {\n if (state.status === 'uploading') {\n next.set(id, state)\n }\n }\n // Add new uploads\n for (const [id, state] of initialStates) {\n next.set(id, state)\n }\n return next\n })\n\n // Upload all files in parallel\n const results = await Promise.allSettled(\n fileEntries.map(async ({ tempId, file, abortController }) => {\n try {\n const result = await uploadSingleFile(\n file,\n endpoints.upload,\n false,\n null,\n (percent) => {\n setUploadingFiles(prev => {\n const next = new Map(prev)\n const state = next.get(tempId)\n if (state) next.set(tempId, { ...state, progress: percent })\n return next\n })\n },\n abortController.signal,\n )\n\n // Mark as done\n setUploadingFiles(prev => {\n const next = new Map(prev)\n const state = next.get(tempId)\n if (state) next.set(tempId, { ...state, status: 'done', fileId: result.fileId, progress: 100 })\n return next\n })\n\n // Cache metadata\n if (result.metadata) {\n setFileMetadataMap(prev => {\n const next = new Map(prev)\n next.set(result.fileId, result.metadata!)\n return next\n })\n }\n\n return result.fileId\n } catch (err) {\n if (abortController.signal.aborted || generation !== readinessGeneration.current || isCancellationError(err)) {\n setUploadingFiles(prev => {\n const next = new Map(prev)\n next.delete(tempId)\n return next\n })\n throw err\n }\n\n setUploadingFiles(prev => {\n const next = new Map(prev)\n const state = next.get(tempId)\n if (state) next.set(tempId, {\n ...state,\n status: 'error',\n error: getSafeFileMutationErrorMessage(uploadFailedMessage, err)\n })\n return next\n })\n throw err\n }\n })\n )\n\n // Collect successful fileIds\n const newFileIds: string[] = []\n for (const result of results) {\n if (result.status === 'fulfilled') {\n newFileIds.push(result.value)\n }\n }\n\n if (newFileIds.length > 0 && generation === readinessGeneration.current) {\n // Read latest file IDs via ref to avoid stale closure\n const updatedFileIds = [...currentFileIdsRef.current, ...newFileIds]\n currentFileIdsRef.current = updatedFileIds\n const newValue: MultipleFileValue = {\n fileIds: updatedFileIds,\n updatedAt: new Date(),\n }\n\n if (!isControlled) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n }\n\n // Failed candidates own their visible error until explicitly dismissed.\n\n // Clear completed uploads from state (keep errors for display)\n setUploadingFiles(prev => {\n const next = new Map(prev)\n for (const [id, state] of next) {\n if (state.status === 'done') next.delete(id)\n }\n return next\n })\n }, [endpoints, isControlled, maxFiles, onChange, tComponent, uploadSingleFile, validateFile, uploadFailedMessage, uploadsUnavailableMessage, onValidationError, processingMessage])\n\n // ==========================================================================\n // CROP STEP — aspect-ratio-constrained image fields\n // ==========================================================================\n\n /**\n * Aspect-ratio constraint → inline crop step activation.\n *\n * When the authored `imageConstraints` declare an aspect ratio (ANY ratio —\n * a 1:1 avatar is just the first case, never a special case), a selected\n * raster image is routed through the injectable `ImageCrop` step\n * (pan/zoom + crop to the required ratio, client-side downscale to the\n * declared max dimensions, re-encode under the size ceiling) BEFORE the\n * normal upload pipeline. Fields without an aspect-ratio constraint keep\n * the direct-upload flow untouched.\n *\n * Boundaries, decided rather than omitted:\n * - Single-file mode only. A multi-file field with an aspect constraint\n * would need a per-file crop queue; until that UX exists, multi-file\n * selections keep the current validate-and-upload flow (the constraint\n * still holds server-side).\n * - SVG and browser-undecodable formats (e.g. HEIC) bypass the crop step\n * via `onUncroppable` and fall back to the plain upload path, keeping\n * server-side validation the authority instead of silently rasterizing\n * or hard-failing in the client.\n */\n const aspectRatioConstraint = imageConstraints?.aspectRatio\n const fileUIPreviewShape = getFileUI(schema)?.display?.preview?.shape\n\n const [pendingCropFile, setPendingCropFile] = React.useState<File | null>(null)\n\n const handleCropConfirm = React.useCallback((croppedFile: File) => {\n setPendingCropFile(null)\n handleSingleFileUpload(croppedFile)\n }, [handleSingleFileUpload])\n\n const handleCropCancel = React.useCallback(() => {\n setPendingCropFile(null)\n }, [])\n\n /** Decode failure → plain upload with the ORIGINAL file (see JSDoc above). */\n const handleUncroppable = React.useCallback((originalFile: File) => {\n setPendingCropFile(null)\n handleSingleFileUpload(originalFile)\n }, [handleSingleFileUpload])\n\n // ==========================================================================\n // UNIFIED FILE HANDLER\n // ==========================================================================\n\n const handleFiles = React.useCallback((files: File[]) => {\n if (files.length === 0) return\n\n if (isMultiple) {\n handleMultipleFilesUpload(files)\n } else {\n const file = files[0]\n // The allow-list gate keeps fields that accept no canvas-encodable\n // format (e.g. GIF-only) on the plain upload path — the cropper could\n // only emit a type the field's own MIME validation would then reject.\n if (aspectRatioConstraint && isCroppableRasterImageFile(file) && canExportWithinAllowedMimeTypes(allowedMimeTypes)) {\n // Reject a disallowed MIME type before opening the dialog; size is\n // deliberately NOT pre-checked — the crop export enforces it.\n const mimeError = validateFileMimeType(file)\n if (mimeError) {\n setInternalError(mimeError)\n return\n }\n setInternalError(undefined)\n setPendingCropFile(file)\n return\n }\n handleSingleFileUpload(file)\n }\n }, [isMultiple, handleMultipleFilesUpload, handleSingleFileUpload, aspectRatioConstraint, validateFileMimeType, allowedMimeTypes])\n\n // ==========================================================================\n // PROVIDER FILE PICKERS\n // ==========================================================================\n\n /*\n * A provider's picker hands back one of THREE delivery kinds, and the field —\n * not the host — decides what each one means. Two of them end in the same\n * place as a local selection: `handleFiles`, so MIME/size validation, the\n * crop step and the upload pipeline are the ones already written here rather\n * than a second, provider-only path that would drift from them.\n *\n * The third, REMOTE_REFERENCE, carries no bytes: the file STAYS at the vendor\n * and only the application backend can resolve the id (#394 P5). It goes to\n * the SAME endpoint an upload does, as a JSON body, and the backend verifies\n * the reference at the vendor as this person, holds it to the field's\n * constraints, and creates the row in the vendor's storage. What comes back\n * is a fileId, exactly as an upload's, so the value is committed by the same\n * code. The host has already refused any selection that contradicts the\n * provider's declaration, and the chooser offered this provider only because\n * the field accepts its storage — so a refusal here is the vendor's or the\n * backend's, and is shown as one message.\n */\n const linkRemoteSelections = React.useCallback(\n async (providerRef: string, selections: ReadonlyArray<Extract<ProviderFileSelection, { kind: ProviderFrontendSelectionDelivery.REMOTE_REFERENCE }>>) => {\n if (!isMultiple) cancelReadiness()\n const generation = readinessGeneration.current\n const toLink = isMultiple ? selections : selections.slice(0, 1)\n const uploadUrl = isMultiple ? endpoints.upload : resolveSingleFileUploadUrl(endpoints, currentFileId)\n if (!uploadUrl) {\n setInternalError(uploadsUnavailableMessage)\n return\n }\n onValidationError?.(processingMessage)\n setInternalError(undefined)\n\n const results = await Promise.allSettled(\n toLink.map(async (selection) => {\n const activityId = generateTempId()\n setPendingReadiness(previous => new Set(previous).add(activityId))\n const controller = new AbortController()\n readinessRequests.current.add(controller)\n try {\n const linked = await awaitFileRequest(() => httpOperations.linkRemoteReference(uploadUrl, {\n remoteReference: {\n providerRef,\n externalId: selection.externalId,\n ...(selection.displayName !== undefined ? { displayName: selection.displayName } : {}),\n ...(selection.mimeType !== undefined ? { mimeType: selection.mimeType } : {}),\n ...(selection.sizeBytes !== undefined ? { sizeBytes: selection.sizeBytes } : {}),\n },\n }), controller.signal, 120_000, unverifiedMessage)\n controller.signal.throwIfAborted()\n const result = await admitUploadResult(linked, controller.signal)\n if (result.metadata) {\n setFileMetadataMap(prev => {\n const next = new Map(prev)\n next.set(result.fileId, result.metadata!)\n return next\n })\n }\n return result.fileId\n } finally {\n readinessRequests.current.delete(controller)\n setPendingReadiness(previous => { const next = new Set(previous); next.delete(activityId); return next })\n }\n }),\n )\n\n const linkedFileIds = results.flatMap((result) => (result.status === 'fulfilled' ? [result.value] : []))\n if (linkedFileIds.length > 0 && generation === readinessGeneration.current) {\n const newValue: FileValue = isMultiple\n ? { fileIds: [...currentFileIdsRef.current, ...linkedFileIds], updatedAt: new Date() }\n : { fileId: linkedFileIds[0]!, updatedAt: new Date() }\n if (isMultipleFileValue(newValue)) currentFileIdsRef.current = newValue.fileIds\n if (!isControlled) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n }\n if (linkedFileIds.length < toLink.length && generation === readinessGeneration.current) {\n const failure = results.find(result => result.status === 'rejected')\n setInternalError(getSafeFileMutationErrorMessage(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'provider_link_failed'), failure?.status === 'rejected' ? failure.reason : undefined))\n }\n },\n [currentFileId, endpoints, httpOperations, isControlled, isMultiple, onChange, uploadsUnavailableMessage, tComponent, admitUploadResult, cancelReadiness, onValidationError, processingMessage, unverifiedMessage],\n )\n\n const handleProviderSelections = React.useCallback(\n async (providerRef: string, selections: readonly ProviderFileSelection[]) => {\n if (!isMultiple) cancelReadiness()\n const generation = readinessGeneration.current\n const acquisition = new AbortController()\n const activityId = generateTempId()\n readinessRequests.current.add(acquisition)\n onValidationError?.(processingMessage)\n setPendingReadiness(previous => new Set(previous).add(activityId))\n try {\n const files: File[] = []\n const remoteReferences: Array<Extract<ProviderFileSelection, { kind: ProviderFrontendSelectionDelivery.REMOTE_REFERENCE }>> = []\n let sawFetchFailure = false\n\n for (const selection of selections) {\n if (selection.kind === ProviderFrontendSelectionDelivery.BROWSER_READABLE_FILE) {\n files.push(selection.file)\n continue\n }\n if (selection.kind === ProviderFrontendSelectionDelivery.BROWSER_READABLE_URL) {\n try {\n // The url is fetchable by the browser BY DECLARATION — its origin has\n // to be admitted by the surface's composed CSP, which is the\n // application's decision and not something this field can check. A\n // blocked origin therefore arrives here as an ordinary fetch failure.\n const response = await awaitFileRequest(() => fetch(selection.url, { signal: acquisition.signal }), acquisition.signal, 120_000, unverifiedMessage)\n if (!response.ok) {\n sawFetchFailure = true\n continue\n }\n const blob = await awaitFileRequest(() => response.blob(), acquisition.signal, 120_000, unverifiedMessage)\n files.push(new File([blob], selection.displayName ?? 'file', { type: selection.mimeType ?? blob.type }))\n } catch {\n if (acquisition.signal.aborted || generation !== readinessGeneration.current) return\n sawFetchFailure = true\n }\n continue\n }\n remoteReferences.push(selection)\n }\n\n if (acquisition.signal.aborted || generation !== readinessGeneration.current) return\n if (remoteReferences.length > 0) {\n await linkRemoteSelections(providerRef, remoteReferences)\n // A picker has one declared delivery kind. Remote linking owns the handoff and cancellation.\n return\n }\n if (sawFetchFailure && files.length === 0) {\n setInternalError(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'provider_fetch_failed'))\n return\n }\n if (files.length === 0) return\n\n setInternalError(sawFetchFailure ? tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'provider_fetch_failed') : undefined)\n handleFiles(files)\n } finally {\n readinessRequests.current.delete(acquisition)\n setPendingReadiness(previous => { const next = new Set(previous); next.delete(activityId); return next })\n }\n },\n [handleFiles, linkRemoteSelections, tComponent, isMultiple, cancelReadiness, onValidationError, processingMessage, unverifiedMessage],\n )\n\n /*\n * A picker that failed and a picker that contradicted its own declaration\n * reach here as one message, because they are one thing to the person looking\n * at the field. The distinction that matters to whoever wrote the provider is\n * carried in the rejection the host built, not in what a user reads.\n */\n const handleProviderFailure = React.useCallback(() => {\n setInternalError(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'provider_picker_failed'))\n }, [tComponent])\n\n // Handle file input change\n const handleFileChange = React.useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files\n if (files && files.length > 0) {\n handleFiles(Array.from(files))\n }\n // Reset input so same file can be selected again\n if (fileInputRef.current) {\n fileInputRef.current.value = ''\n }\n }, [handleFiles])\n\n // Effective disabled includes readOnly for interactive elements\n const isInteractionDisabled = disabled || readOnly\n const isUploadInteractionDisabled = isInteractionDisabled || !hasUploadCapability\n\n // Handle drag and drop\n const handleDragOver = React.useCallback((e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (!isUploadInteractionDisabled && !uploading) {\n setDragOver(true)\n }\n }, [isUploadInteractionDisabled, uploading])\n\n const handleDragLeave = React.useCallback((e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragOver(false)\n }, [])\n\n const handleDrop = React.useCallback((e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragOver(false)\n\n if (isUploadInteractionDisabled || uploading) return\n\n const files = e.dataTransfer.files\n if (files && files.length > 0) {\n handleFiles(Array.from(files))\n }\n }, [isUploadInteractionDisabled, uploading, handleFiles])\n\n // Handle remove single file\n const handleRemoveSingle = React.useCallback(async () => {\n cancelReadiness()\n if (!currentFileId) return\n\n if (endpoints.delete) {\n try {\n // Backend route: DELETE /files/:fileId\n const url = `${endpoints.delete}/${encodeURIComponent(currentFileId)}`\n await authenticatedDelete(url)\n } catch (err) {\n if (isCancellationError(err)) return\n setInternalError(getSafeFileMutationErrorMessage(uploadFailedMessage, err))\n return\n }\n }\n\n setInternalError(undefined)\n\n if (!isControlled) {\n setInternalValue(null)\n }\n\n onChange?.(null)\n setFileMetadataMap(prev => {\n const next = new Map(prev)\n next.delete(currentFileId)\n return next\n })\n }, [currentFileId, endpoints, isControlled, onChange, authenticatedDelete, uploadFailedMessage])\n\n // Handle remove file from multiple list.\n // Uses currentFileIdsRef to avoid stale closure: two rapid removes would both\n // capture the same closure value, and the second would re-add the file removed by the first.\n const handleRemoveFromMultiple = React.useCallback(async (fileId: string) => {\n cancelReadiness()\n if (endpoints.delete) {\n try {\n const url = `${endpoints.delete}/${encodeURIComponent(fileId)}`\n await authenticatedDelete(url)\n } catch (err) {\n if (isCancellationError(err)) return\n setInternalError(getSafeFileMutationErrorMessage(uploadFailedMessage, err))\n return\n }\n }\n\n setInternalError(undefined)\n\n // Read latest file IDs via ref — prevents lost removals during rapid clicks\n const updatedIds = currentFileIdsRef.current.filter(id => id !== fileId)\n currentFileIdsRef.current = updatedIds\n const newValue: FileValue | null = updatedIds.length > 0\n ? { fileIds: updatedIds, updatedAt: new Date() }\n : null\n\n if (!isControlled) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n\n setFileMetadataMap(prev => {\n const next = new Map(prev)\n next.delete(fileId)\n return next\n })\n }, [endpoints, isControlled, onChange, authenticatedDelete, uploadFailedMessage])\n\n // Cancel a specific upload.\n // Side effect (abort) is performed BEFORE the state update to comply with\n // React's requirement that state updater functions be pure.\n const handleCancelUpload = React.useCallback((tempId: string) => {\n // Read current state via ref (no side effect inside updater)\n const state = uploadingFilesRef.current.get(tempId)\n if (state) {\n state.abortController.abort()\n }\n\n setUploadingFiles(prev => {\n const next = new Map(prev)\n next.delete(tempId)\n return next\n })\n }, [])\n\n // Handle click on drop zone\n const handleClick = React.useCallback(() => {\n if (!isUploadInteractionDisabled && !uploading) {\n fileInputRef.current?.click()\n }\n }, [isUploadInteractionDisabled, uploading])\n\n // Get file icon reference based on MIME type (consistent with display-field-file.tsx)\n const getFileIconRef = (mimeType?: string): StandardIconReference => {\n if (!mimeType) return StandardIconReference.FILE\n if (mimeType.startsWith('image/')) return StandardIconReference.FILE_IMAGE\n if (mimeType.startsWith('video/')) return StandardIconReference.FILE_VIDEO\n if (mimeType.startsWith('audio/')) return StandardIconReference.FILE_AUDIO\n if (mimeType === 'application/pdf') return StandardIconReference.FILE_TEXT\n if (mimeType.includes('spreadsheet') || mimeType.includes('excel')) return StandardIconReference.FILE_SPREADSHEET\n if (mimeType.includes('presentation') || mimeType.includes('powerpoint')) return StandardIconReference.FILE_PRESENTATION\n if (mimeType.includes('document') || mimeType.includes('word')) return StandardIconReference.FILE_TEXT\n if (mimeType.includes('zip') || mimeType.includes('rar') || mimeType.includes('7z')) return StandardIconReference.FILE_ARCHIVE\n return StandardIconReference.FILE\n }\n\n /** Render a file icon for the given MIME type at the specified size */\n const renderFileIcon = (mimeType?: string, size: IconSize = IconSize.MD): React.ReactNode => {\n return renderIcon(getFileIconRef(mimeType), { size })\n }\n\n const acceptDescription = describeAcceptedFileKinds(getAcceptedFileKinds(allowedMimeTypes), tComponent)\n\n // ==========================================================================\n // RENDER — Nature detection for preview routing\n // ==========================================================================\n\n /** Resolve the display nature using the shared utility from zod-decorators */\n const schemaNature = fileSchemaMetadata?.nature\n\n // ==========================================================================\n // RENDER — File action buttons (shared between single + multi displays)\n // ==========================================================================\n\n const renderFileActions = (onRemove: () => void, compact = false) => (\n !isInteractionDisabled ? (\n <div className={cn(\"flex items-center gap-element\", compact ? \"flex-shrink-0\" : \"\")}>\n {!compact && overridable && hasUploadCapability && (\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.OUTLINE}\n size={ButtonSize.SM}\n onClick={handleClick}\n disabled={uploading}\n >\n {resolvedReplaceButtonText}\n </Button>\n )}\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={onRemove}\n disabled={uploading}\n className={cn(\"text-destructive hover:text-destructive\", compact && \"h-6 w-6 p-0\")}\n aria-label={removeLabel}\n title={removeLabel}\n >\n {renderIcon(StandardIconReference.CLOSE, { size: IconSize.SM })}\n </Button>\n </div>\n ) : null\n )\n\n // ==========================================================================\n // RENDER — File info line (filename, size, extension — shared)\n // ==========================================================================\n\n const renderFileInfo = (fileId: string, meta: FileMetadata | null, compact = false) => (\n <div className={cn(\"min-w-0\", compact ? \"\" : \"flex-1\")}>\n <div className=\"flex items-center gap-element\">\n {meta?.url ? (\n <a\n href={meta.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\"font-medium text-primary hover:underline truncate\", compact && \"text-sm\")}\n >\n {meta.filename}\n </a>\n ) : (\n <span className={cn(\"font-medium truncate\", compact && \"text-sm\")}>\n {getNeutralFileAttachmentLabel(meta?.filename, fileAttachedLabel)}\n </span>\n )}\n </div>\n <div className=\"flex items-center gap-group text-xs text-muted-foreground mt-0.5\">\n {meta?.size !== undefined && (\n <span>{formatFileSize(meta.size)}</span>\n )}\n {meta?.mimeType && (\n <span className=\"uppercase\">{meta.extension || meta.mimeType.split('/').pop()}</span>\n )}\n {meta?.width && meta?.height && (\n <span>{meta.width}×{meta.height}</span>\n )}\n </div>\n </div>\n )\n\n // ==========================================================================\n // RENDER — Nature-specific previews\n // ==========================================================================\n\n const renderImagePreview = (meta: FileMetadata) => (\n <div className=\"rounded-md border bg-muted/30 overflow-hidden\">\n <div className=\"relative\">\n <img\n src={meta.url || meta.thumbnailUrl || ''}\n alt={meta.filename}\n className=\"w-full max-h-64 object-contain bg-checkerboard\"\n loading=\"lazy\"\n onError={(e) => { (e.target as HTMLImageElement).style.display = 'none' }}\n />\n </div>\n <div className=\"flex items-center gap-group p-card-sm\">\n <span aria-hidden=\"true\">{renderFileIcon(meta.mimeType, IconSize.MD)}</span>\n {renderFileInfo('', meta)}\n {renderFileActions(handleRemoveSingle)}\n </div>\n </div>\n )\n\n const renderVideoPreview = (meta: FileMetadata) => (\n <div className=\"rounded-md border bg-muted/30 overflow-hidden\">\n <video\n src={meta.url}\n controls\n className=\"w-full max-h-64 bg-black\"\n poster={meta.thumbnailUrl}\n preload=\"metadata\"\n />\n <div className=\"flex items-center gap-group p-card-sm\">\n <span aria-hidden=\"true\">{renderFileIcon(meta.mimeType, IconSize.MD)}</span>\n {renderFileInfo('', meta)}\n {renderFileActions(handleRemoveSingle)}\n </div>\n </div>\n )\n\n const renderAudioPreview = (meta: FileMetadata) => (\n <div className=\"rounded-md border bg-muted/30 p-card-sm space-y-element\">\n <div className=\"flex items-center gap-group\">\n <span aria-hidden=\"true\">{renderFileIcon(meta.mimeType, IconSize.MD)}</span>\n {renderFileInfo('', meta)}\n {renderFileActions(handleRemoveSingle)}\n </div>\n <audio\n src={meta.url}\n controls\n className=\"w-full h-8\"\n preload=\"metadata\"\n />\n </div>\n )\n\n // ==========================================================================\n // RENDER — Single file display (nature-aware)\n // ==========================================================================\n\n const renderSingleFileDisplay = (fileId: string, meta: FileMetadata | null) => {\n if (meta && ![FileReadiness.READY, FileReadiness.ATTACHED].includes(meta.readiness)) meta = { ...meta, url: undefined, thumbnailUrl: undefined }\n if (!meta) {\n // No metadata yet — show generic card\n return (\n <div className=\"flex items-center gap-group p-card-sm rounded-md border bg-muted/30\">\n <span aria-hidden=\"true\">{renderFileIcon(undefined, IconSize.LG)}</span>\n {renderFileInfo(fileId, null)}\n {renderFileActions(handleRemoveSingle)}\n </div>\n )\n }\n\n const nature = resolveFileDisplayNature(schemaNature, meta.mimeType)\n\n // Nature-specific rendering\n if (nature === FileDisplayNature.IMAGE && (meta.url || meta.thumbnailUrl)) {\n return renderImagePreview(meta)\n }\n if (nature === FileDisplayNature.VIDEO && meta.url) {\n return renderVideoPreview(meta)\n }\n if (nature === FileDisplayNature.AUDIO && meta.url) {\n return renderAudioPreview(meta)\n }\n\n // Generic / document fallback — compact card\n return (\n <div className=\"flex items-center gap-group p-card-sm rounded-md border bg-muted/30\">\n <span aria-hidden=\"true\">{renderFileIcon(meta.mimeType, IconSize.LG)}</span>\n {renderFileInfo(fileId, meta)}\n {renderFileActions(handleRemoveSingle)}\n </div>\n )\n }\n\n // ==========================================================================\n // RENDER — Multiple file list\n // ==========================================================================\n\n /** Render a single item within the multiple-file list */\n const renderMultipleFileItem = (fileId: string, meta: FileMetadata | undefined) => {\n if (meta && ![FileReadiness.READY, FileReadiness.ATTACHED].includes(meta.readiness)) meta = { ...meta, url: undefined, thumbnailUrl: undefined }\n const nature = resolveFileDisplayNature(schemaNature, meta?.mimeType)\n const onRemove = () => handleRemoveFromMultiple(fileId)\n\n // Compact image preview — thumbnail inline\n if (nature === FileDisplayNature.IMAGE && meta && (meta.url || meta.thumbnailUrl)) {\n return (\n <div key={fileId} className=\"flex items-center gap-group p-card-sm rounded-md border bg-muted/30\">\n <img\n src={meta.thumbnailUrl || meta.url || ''}\n alt={meta.filename}\n className=\"h-12 w-12 rounded object-cover flex-shrink-0\"\n loading=\"lazy\"\n onError={(e) => { (e.target as HTMLImageElement).style.display = 'none' }}\n />\n <div className=\"flex-1 min-w-0\">\n {renderFileInfo(fileId, meta, true)}\n </div>\n {renderFileActions(onRemove, true)}\n </div>\n )\n }\n\n // Compact audio preview — inline player\n if (nature === FileDisplayNature.AUDIO && meta?.url) {\n return (\n <div key={fileId} className=\"rounded-md border bg-muted/30 p-card-sm space-y-item-xs\">\n <div className=\"flex items-center gap-group\">\n <span aria-hidden=\"true\">{renderFileIcon(meta.mimeType, IconSize.MD)}</span>\n <div className=\"flex-1 min-w-0\">\n {renderFileInfo(fileId, meta, true)}\n </div>\n {renderFileActions(onRemove, true)}\n </div>\n <audio src={meta.url} controls className=\"w-full h-8\" preload=\"metadata\" />\n </div>\n )\n }\n\n // Generic compact card (video, document, unknown)\n return (\n <div key={fileId} className=\"flex items-center gap-group p-card-sm rounded-md border bg-muted/30\">\n <span aria-hidden=\"true\">{renderFileIcon(meta?.mimeType, IconSize.MD)}</span>\n <div className=\"flex-1 min-w-0\">\n {renderFileInfo(fileId, meta ?? null, true)}\n </div>\n {renderFileActions(onRemove, true)}\n </div>\n )\n }\n\n const renderMultipleFileList = () => (\n <div className=\"space-y-element\">\n {/* Existing files */}\n {currentFileIds.map((fileId) => {\n const meta = fileMetadataMap.get(fileId)\n return renderMultipleFileItem(fileId, meta)\n })}\n\n {/* In-progress uploads */}\n {Array.from(uploadingFiles.values()).map((uploadState) => (\n <div key={uploadState.tempId} className=\"flex items-center gap-group p-card-sm rounded-md border border-primary/20 bg-primary/5\">\n {uploadState.status === 'uploading' && (\n <LoadingSpinner size={20} className=\"text-primary flex-shrink-0\" aria-hidden=\"true\" />\n )}\n {uploadState.status === 'error' && (\n <span className=\"text-destructive flex-shrink-0\" aria-hidden=\"true\">{renderIcon(StandardIconReference.WARNING, { size: IconSize.MD })}</span>\n )}\n <div className=\"flex-1 min-w-0\">\n <span className=\"font-medium text-sm truncate block\">{uploadState.fileName}</span>\n {uploadState.status === 'uploading' && (\n <div className=\"w-full h-1 bg-muted rounded-full mt-1 overflow-hidden\">\n {uploadState.progress < 0 ? (\n <div className=\"h-full w-1/3 bg-primary animate-pulse rounded-full\" />\n ) : (\n <div\n className=\"h-full bg-primary transition-all duration-[var(--motion-duration-fast)]\"\n style={{ width: `${uploadState.progress}%` }}\n />\n )}\n </div>\n )}\n {uploadState.status === 'error' && uploadState.error && (\n <span className=\"text-xs text-destructive\">{uploadState.error}</span>\n )}\n </div>\n {(uploadState.status === 'uploading' || uploadState.status === 'error') && (\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={() => handleCancelUpload(uploadState.tempId)}\n className=\"text-muted-foreground hover:text-destructive h-6 w-6 p-0\"\n aria-label={tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'cancel')}\n title={tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'cancel')}\n >\n {renderIcon(StandardIconReference.CLOSE, { size: IconSize.SM })}\n </Button>\n )}\n </div>\n ))}\n </div>\n )\n\n // ==========================================================================\n // RENDER — Constraint hints (below upload area)\n // ==========================================================================\n\n /** Format seconds into human-readable duration */\n const formatDuration = (seconds: number): string => {\n if (seconds < 60) return `${seconds}s`\n if (seconds < 3600) return `${Math.floor(seconds / 60)} min`\n const h = Math.floor(seconds / 3600)\n const m = Math.floor((seconds % 3600) / 60)\n return m > 0 ? `${h}h ${m}min` : `${h}h`\n }\n\n const constraintHints = React.useMemo(() => {\n const hints: string[] = []\n\n // Size constraints\n if (minSize && maxSize) {\n hints.push(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'constraint_size_range', { min: formatFileSize(minSize), max: formatFileSize(maxSize) }))\n } else if (minSize) {\n hints.push(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'constraint_min_size', { min: formatFileSize(minSize) }))\n }\n // maxSize is already shown inline in the upload zone — no duplicate needed\n\n // Image constraints\n if (imageConstraints) {\n const { minWidth, maxWidth, minHeight, maxHeight, aspectRatio } = imageConstraints\n if (minWidth || minHeight) {\n const w = minWidth ?? '–'\n const h = minHeight ?? '–'\n hints.push(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'constraint_image_dimensions', { width: String(w), height: String(h) }))\n }\n if (maxWidth || maxHeight) {\n const w = maxWidth ?? '–'\n const h = maxHeight ?? '–'\n hints.push(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'constraint_image_max_dimensions', { width: String(w), height: String(h) }))\n }\n if (aspectRatio) {\n hints.push(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'constraint_image_aspect_ratio', { width: String(aspectRatio.width), height: String(aspectRatio.height) }))\n }\n }\n\n // Video constraints\n if (videoConstraints) {\n if (videoConstraints.maxDuration) {\n hints.push(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'constraint_video_max_duration', { duration: formatDuration(videoConstraints.maxDuration) }))\n }\n }\n\n // Audio constraints\n if (audioConstraints) {\n if (audioConstraints.maxDuration) {\n hints.push(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'constraint_audio_max_duration', { duration: formatDuration(audioConstraints.maxDuration) }))\n }\n }\n\n // Document constraints\n if (documentConstraints) {\n if (documentConstraints.maxPages) {\n hints.push(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'constraint_document_max_pages', { pages: documentConstraints.maxPages }))\n }\n }\n\n // Multiple file constraint\n if (isMultiple && maxFiles) {\n hints.push(tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'constraint_max_files', { max: maxFiles }))\n }\n\n return hints\n }, [minSize, maxSize, imageConstraints, videoConstraints, audioConstraints, documentConstraints, isMultiple, maxFiles, tComponent])\n\n const renderConstraintHints = () => {\n if (constraintHints.length === 0) return null\n return (\n <div className=\"flex flex-wrap gap-x-group gap-y-item-xs mt-item-xs\">\n {constraintHints.map((hint, i) => (\n <span key={i} className=\"text-xs text-muted-foreground\">\n {hint}\n </span>\n ))}\n </div>\n )\n }\n\n // ==========================================================================\n // RENDER — Upload zone (drop target + button)\n // ==========================================================================\n\n const renderUploadZone = (compact = false) => (\n <div\n onClick={handleClick}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n className={cn(\n \"relative flex flex-col items-center justify-center rounded-md border-2 border-dashed cursor-pointer\",\n compact ? \"p-card-sm\" : \"p-container\",\n dragOver && \"border-primary bg-primary/5\",\n isUploadInteractionDisabled && \"opacity-[var(--opacity-disabled)] cursor-not-allowed\",\n uploading && !isMultiple && \"pointer-events-none\",\n internalError && \"border-destructive\",\n !isUploadInteractionDisabled && !uploading && \"hover:border-primary hover:bg-primary/5\",\n formRecipe.motion.transition\n )}\n >\n {/* Single mode uploading state */}\n {uploading && !isMultiple ? (\n <>\n <LoadingSpinner size={32} className=\"text-primary mb-element\" aria-hidden=\"true\" />\n <span className=\"text-sm text-muted-foreground\">\n {uploadProgress < 0\n ? tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'uploading_indeterminate')\n : tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'uploading', { progress: uploadProgress })}\n </span>\n <div className=\"w-full max-w-xs h-1 bg-muted rounded-full mt-element overflow-hidden\">\n {uploadProgress < 0 ? (\n // Indeterminate progress: animated shimmer bar\n <div className=\"h-full w-1/3 bg-primary animate-pulse rounded-full\" />\n ) : (\n <div\n className=\"h-full bg-primary transition-all duration-[var(--motion-duration-fast)]\"\n style={{ width: `${uploadProgress}%` }}\n />\n )}\n </div>\n </>\n ) : (\n <>\n {!compact && <span className=\"mb-element\" aria-hidden=\"true\">{renderIcon(StandardIconReference.UPLOAD, { size: IconSize.XL })}</span>}\n <span className={cn(\"font-medium\", compact ? \"text-xs\" : \"text-sm\")}>\n {compact ? tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'add_more') : resolvedUploadButtonText}\n </span>\n {!compact && (\n <>\n <span className=\"text-xs text-muted-foreground mt-item-xs\">\n {dragDropLabel}\n </span>\n <span className=\"text-xs text-muted-foreground mt-element\">\n {acceptDescription}\n {maxSize && !minSize && ` • ${tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'max_size', { size: formatFileSize(maxSize) })}`}\n </span>\n {renderConstraintHints()}\n </>\n )}\n </>\n )}\n </div>\n )\n\n // ==========================================================================\n // RENDER — Main\n // ==========================================================================\n\n const canAddMore = isMultiple && (!maxFiles || currentFileIds.length < maxFiles)\n\n /*\n * The provider pickers, mounted in the FRAMEWORK's own upload chrome rather\n * than in an application: every application's file fields get them, and an\n * application that adopted it in one place would have proven the component\n * and left the capability just as unadopted.\n *\n * `ProviderFilePickerHost` renders NOTHING when no live provider carries a\n * picker, which is every application today — so this costs an empty render\n * and no chrome until somebody registers one. The chooser is supplied here\n * rather than left to the host's plain buttons because a provider's display\n * name is an i18n KEY: the host cannot resolve it without depending on the\n * i18n service, and this field already has one.\n */\n const renderProviderPickers = () => (\n <ProviderFilePickerHost\n multiple={isMultiple}\n constraints={providerConstraints}\n acceptedStorages={fileSchemaMetadata?.storageAccepted}\n onSelect={handleProviderSelections}\n onProviderFailure={handleProviderFailure}\n renderConsentRequired={({ choice, missingPurposes, grant }) => {\n // Purpose names are the `ConsentPurpose` vocabulary's own words, read through the field that stores\n // a person's grant — the same words the consent gate and the preferences page show (#1702).\n const purposes = missingPurposes\n .map((purpose) => tResourceFieldEnumValue(CoreResourceType.USER_SELF_PREFERENCES, 'privacy.consentedPurposes', purpose, CONSENTED_PURPOSES_FIELD_SCHEMA))\n .join(', ')\n const provider = t(choice.displayNameLabelKey) ?? choice.displayName ?? choice.providerRef\n return (\n <div role=\"status\" className=\"flex flex-wrap items-center gap-item-xs mt-element text-sm text-muted-foreground\">\n <span>{tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'provider_consent_required', { provider, purposes })}</span>\n {grant === undefined ? null : (\n <Button type=\"button\" size={ButtonSize.SM} variant={ButtonVariants_Variant.OUTLINE} onClick={() => void grant()}>\n {tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'provider_consent_grant', { purposes })}\n </Button>\n )}\n </div>\n )\n }}\n renderChooser={({ choices, chosen, choose }) => (\n <div role=\"group\" className=\"flex flex-wrap gap-item-xs mt-element\">\n {choices.map((choice) => (\n <Button\n key={choice.providerRef}\n type=\"button\"\n size={ButtonSize.SM}\n variant={choice.providerRef === chosen ? ButtonVariants_Variant.DEFAULT : ButtonVariants_Variant.OUTLINE}\n aria-pressed={choice.providerRef === chosen}\n onClick={() => choose(choice.providerRef)}\n >\n {t(choice.displayNameLabelKey) ?? choice.displayName ?? choice.providerRef}\n </Button>\n ))}\n </div>\n )}\n />\n )\n\n if (!isReady) return null;\n\n return (\n <div ref={ref as React.RefObject<HTMLDivElement>} className={className}>\n {(internalError ?? readinessError) && <p role=\"status\" className=\"text-sm text-muted-foreground\">{internalError ?? readinessError}</p>}\n {pendingReadiness.size > 0 && <Button type=\"button\" onClick={cancelReadiness}>{tComponent(FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE, 'cancel')}</Button>}\n {/* Hidden file input */}\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={isMultiple}\n onChange={handleFileChange}\n className=\"hidden\"\n disabled={isUploadInteractionDisabled}\n />\n\n {isMultiple ? (\n // Multiple file mode\n <div className=\"space-y-element\">\n {(currentFileIds.length > 0 || uploadingFiles.size > 0) && renderMultipleFileList()}\n {!isUploadInteractionDisabled && canAddMore && renderUploadZone(currentFileIds.length > 0)}\n {!isUploadInteractionDisabled && currentFileIds.length === 0 && !canAddMore && renderUploadZone(false)}\n {!isUploadInteractionDisabled && canAddMore && renderProviderPickers()}\n </div>\n ) : (\n // Single file mode\n currentFileId\n ? renderSingleFileDisplay(currentFileId, fileMetadata)\n : (hasUploadCapability ? (\n <>\n {renderUploadZone(false)}\n {!isUploadInteractionDisabled && renderProviderPickers()}\n </>\n ) : null)\n )}\n\n {/* Inline crop step — mounted only while a selection on an\n aspect-ratio-constrained field awaits cropping (mount = open). */}\n {pendingCropFile && aspectRatioConstraint && (\n <ImageCrop\n file={pendingCropFile}\n aspectRatio={aspectRatioConstraint}\n maskShape={fileUIPreviewShape}\n maxOutputWidth={imageConstraints?.maxWidth}\n maxOutputHeight={imageConstraints?.maxHeight}\n maxOutputSizeBytes={maxSize}\n allowedMimeTypes={allowedMimeTypes}\n onConfirm={handleCropConfirm}\n onCancel={handleCropCancel}\n onUncroppable={handleUncroppable}\n />\n )}\n </div>\n )\n})\n\n// --- Wrapper ---\n/**\n * Schema-aware FormFieldFile component.\n *\n * This wrapper sits between the generic FormField orchestrator and the preset\n * component. It is the proper boundary for injecting engine-level concerns:\n * - Authenticated HTTP operations (upload, metadata, delete) via httpClient\n * - Component preset resolution via the registry\n *\n * The preset component (presets-components) never imports the HTTP client directly,\n * maintaining separation of concerns. The generic FormField never deals with\n * file-specific HTTP concerns.\n */\n/**\n * The self-preferences field that stores a person's granted consent purposes. Handed to the enum-word lookup\n * because a value is worded only through the enum its FIELD declares (#966) — here `ConsentPurpose`.\n */\nconst CONSENTED_PURPOSES_FIELD_SCHEMA = getZodObjectShape(UserPrivacySchema).consentedPurposes\n\nexport const FormFieldFile = forwardRef<FormFieldFileRef, FormFieldFileProps>(\n ({ preset = CorePresetNames.DEFAULT, httpOperations: externalHttpOperations, ...props }, ref) => {\n const { httpClient } = useApplication();\n\n const httpOperations: FileHttpOperations = useMemo(() => {\n if (externalHttpOperations) return externalHttpOperations;\n\n return {\n upload: async (url, formData, options) => {\n const response = await httpClient.uploadFile<any>(url, formData, {\n onUploadProgress: options?.onProgress,\n signal: options?.signal,\n });\n\n if (response?.file?.fileId) {\n return {\n fileId: response.file.fileId,\n metadata: response.file,\n };\n }\n if (response?.fileId) {\n return { fileId: response.fileId, metadata: response.metadata };\n }\n\n throw new Error('upload_failed');\n },\n linkRemoteReference: async (url, body) => {\n // Same route, same response shape as an upload — see `FileHttpOperations`.\n const response = await httpClient.post<any>(url, body);\n if (response?.file?.fileId) {\n return { fileId: response.file.fileId, metadata: response.file };\n }\n throw new Error('link_failed');\n },\n get: async <T,>(url: string): Promise<T> => {\n return httpClient.get<T>(url);\n },\n delete: async (url: string): Promise<void> => {\n await httpClient.delete(url);\n },\n };\n }, [httpClient, externalHttpOperations]);\n\n const Component = createComponentResolverWithRef<FormFieldFilePresetProps, FormFieldFileRef>(\n FrontendComponentType.LOW_LEVEL_FORM_FIELD_FILE,\n 'FormFieldFile'\n )(preset);\n const resolvedProps = { ...props, httpOperations } as FormFieldFilePresetProps;\n return <Component {...resolvedProps} ref={ref} />\n})\nFormFieldFile.displayName = 'FormFieldFile'\n"]}