@12-apps/ui 6.78.4 → 6.79.0

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 (993) hide show
  1. package/dist/_internal/components/data-display/Alert/Alert.js +3 -3
  2. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.js +2 -1
  3. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +3 -3
  4. package/dist/_internal/components/data-display/Avatar/Avatar.js +4 -4
  5. package/dist/_internal/components/data-display/Avatar/Avatar.view.js +2 -2
  6. package/dist/_internal/components/data-display/CardKit/card-actions-context.js +4 -4
  7. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +11 -10
  8. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +7 -6
  9. package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +5 -2
  10. package/dist/_internal/components/data-display/Carousel/Carousel.js +7 -4
  11. package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +4 -1
  12. package/dist/_internal/components/data-display/Chart/Chart.js +3 -3
  13. package/dist/_internal/components/data-display/Chart/SpecChart.js +6 -6
  14. package/dist/_internal/components/data-display/Chart/chart-renderers.js +2 -2
  15. package/dist/_internal/components/data-display/Chart/chart-spec.js +2 -2
  16. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
  17. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +50 -49
  18. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +70 -69
  19. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +4 -3
  20. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +9 -8
  21. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +8 -7
  22. package/dist/_internal/components/data-display/DataViews/base-card.js +5 -5
  23. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +3 -3
  24. package/dist/_internal/components/data-display/DataViews/base-list-card-gutters.js +3 -3
  25. package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +3 -3
  26. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +2 -2
  27. package/dist/_internal/components/data-display/DataViews/base-list-card.js +10 -10
  28. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +15 -14
  29. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +21 -20
  30. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +6 -6
  31. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +45 -44
  32. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +22 -21
  33. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +19 -18
  34. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +20 -19
  35. package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +3 -3
  36. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +2 -2
  37. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +9 -8
  38. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +22 -21
  39. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +8 -7
  40. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +2 -2
  41. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +4 -4
  42. package/dist/_internal/components/data-display/EmptyState/EmptyState.js +2 -2
  43. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +11 -8
  44. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +10 -7
  45. package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +1 -1
  46. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +15 -12
  47. package/dist/_internal/components/data-display/HoverCard/HoverCard.js +2 -2
  48. package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.js +2 -2
  49. package/dist/_internal/components/data-display/LazyImage/LazyImage.hooks.js +1 -1
  50. package/dist/_internal/components/data-display/LazyImage/LazyImage.js +3 -2
  51. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +6 -6
  52. package/dist/_internal/components/data-display/MapPreview/MapControlBar.js +5 -1
  53. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +7 -3
  54. package/dist/_internal/components/data-display/MapPreview/MapMarkers.js +5 -1
  55. package/dist/_internal/components/data-display/MapPreview/MapPreview.helpers.js +6 -1
  56. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +9 -6
  57. package/dist/_internal/components/data-display/Progress/Progress.js +2 -2
  58. package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +6 -4
  59. package/dist/_internal/components/data-display/Sheet/Sheet.hooks.js +2 -2
  60. package/dist/_internal/components/data-display/Sheet/Sheet.js +4 -4
  61. package/dist/_internal/components/data-display/Stepper/Stepper.js +3 -1
  62. package/dist/_internal/components/data-display/Table/Table.helpers.js +1 -1
  63. package/dist/_internal/components/data-display/Table/Table.js +6 -4
  64. package/dist/_internal/components/data-display/Table/TableParts.hooks.js +4 -2
  65. package/dist/_internal/components/data-display/Table/TableParts.js +4 -2
  66. package/dist/_internal/components/data-display/Timeline/Timeline.js +4 -2
  67. package/dist/_internal/components/data-display/Timeline/TimelineRow.js +1 -1
  68. package/dist/_internal/components/data-display/index.js +69 -64
  69. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +4 -3
  70. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.parts.js +3 -2
  71. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +5 -4
  72. package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +4 -3
  73. package/dist/_internal/components/feedback/Dialog/Dialog.js +3 -2
  74. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +4 -4
  75. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +12 -11
  76. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +6 -6
  77. package/dist/_internal/components/feedback/Sonner/Sonner.js +3 -2
  78. package/dist/_internal/components/feedback/Sonner/SonnerToast.js +1 -1
  79. package/dist/_internal/components/feedback/StackedModal/StackedModal.js +7 -6
  80. package/dist/_internal/components/feedback/StackedModal/StackedModal.parts.js +2 -1
  81. package/dist/_internal/components/feedback/Toast/Toast.js +2 -1
  82. package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +3 -2
  83. package/dist/_internal/components/feedback/TutorialOverlay/TutorialStepBody.js +2 -1
  84. package/dist/_internal/components/feedback/index.js +33 -31
  85. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.helpers.js +3 -1
  86. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.hooks.js +8 -6
  87. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +12 -10
  88. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +4 -2
  89. package/dist/_internal/components/form/AddressAutocomplete/useAddressPredictions.js +4 -2
  90. package/dist/_internal/components/form/AddressAutocomplete/useAddressSelection.js +1 -1
  91. package/dist/_internal/components/form/AddressAutocomplete/useCurrentLocation.js +1 -1
  92. package/dist/_internal/components/form/AddressAutocomplete/useGoogleMapsAPI.js +1 -1
  93. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +2 -2
  94. package/dist/_internal/components/form/Calendar/Calendar.hooks.js +2 -2
  95. package/dist/_internal/components/form/Calendar/Calendar.js +6 -6
  96. package/dist/_internal/components/form/Calendar/CalendarDayCell.js +2 -2
  97. package/dist/_internal/components/form/Calendar/CalendarMonth.js +3 -3
  98. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +5 -5
  99. package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +3 -3
  100. package/dist/_internal/components/form/CategorySelect/CategoryRows.js +2 -2
  101. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +9 -9
  102. package/dist/_internal/components/form/Checkbox/Checkbox.js +2 -2
  103. package/dist/_internal/components/form/CodeEditor/CodeEditor.js +3 -3
  104. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +9 -9
  105. package/dist/_internal/components/form/InputOTP/InputOTP.js +2 -2
  106. package/dist/_internal/components/form/Menubar/Menubar.js +2 -2
  107. package/dist/_internal/components/form/PhoneInput/PhoneInput.hooks.js +2 -2
  108. package/dist/_internal/components/form/PhoneInput/PhoneInput.js +3 -3
  109. package/dist/_internal/components/form/PhoneInput/countries.js +7 -3
  110. package/dist/_internal/components/form/PickerSheet/PickerSheet.js +4 -4
  111. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.dom.js +2 -1
  112. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.format.js +3 -2
  113. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.hooks.js +4 -3
  114. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +7 -5
  115. package/dist/_internal/components/form/RichTextEditor/RichTextEditorToolbar.js +1 -1
  116. package/dist/_internal/components/form/Switch/Switch.js +4 -4
  117. package/dist/_internal/components/form/Switch/Switch.parts.js +3 -3
  118. package/dist/_internal/components/form/Switch/Switch.styles.js +2 -2
  119. package/dist/_internal/components/form/Textarea/Textarea.js +1 -1
  120. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js +4 -1
  121. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js.map +1 -1
  122. package/dist/_internal/components/form/UploadButton/UploadButton.hooks.js +2 -1
  123. package/dist/_internal/components/form/UploadButton/UploadButton.js +3 -2
  124. package/dist/_internal/components/form/index.js +48 -45
  125. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +10 -10
  126. package/dist/_internal/components/form/total-form/Fields/index.js +13 -13
  127. package/dist/_internal/components/form/total-form/FormErrorSnackbar.js +3 -2
  128. package/dist/_internal/components/index.js +196 -188
  129. package/dist/_internal/components/layout/Card/Card.js +2 -2
  130. package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +2 -1
  131. package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +2 -1
  132. package/dist/_internal/components/layout/Dashboard/Dashboard.js +2 -1
  133. package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +3 -3
  134. package/dist/_internal/components/layout/SettingCard/SettingCard.js +4 -4
  135. package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js +3 -3
  136. package/dist/_internal/components/layout/SettingCard/SettingGroup.js +10 -10
  137. package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +8 -8
  138. package/dist/_internal/components/layout/SettingCard/SettingToggle.js +10 -10
  139. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +6 -6
  140. package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +3 -3
  141. package/dist/_internal/components/layout/SettingsLayout/SettingsSectionChips.js +2 -2
  142. package/dist/_internal/components/layout/index.js +34 -33
  143. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +8 -7
  144. package/dist/_internal/components/navigation/CommandPalette/CommandPalette.helpers.js +2 -1
  145. package/dist/_internal/components/navigation/CommandPalette/CommandPalette.hooks.js +3 -2
  146. package/dist/_internal/components/navigation/CommandPalette/CommandPalette.js +6 -4
  147. package/dist/_internal/components/navigation/CommandPalette/CommandPaletteResults.js +3 -1
  148. package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +4 -4
  149. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +7 -6
  150. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.shell.js +1 -1
  151. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenuItem.js +2 -2
  152. package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +5 -4
  153. package/dist/_internal/components/navigation/Pagination/Pagination.js +2 -2
  154. package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +2 -2
  155. package/dist/_internal/components/navigation/SectionNav/SectionNav.js +4 -4
  156. package/dist/_internal/components/navigation/index.js +29 -26
  157. package/dist/_internal/components/typography/Code/Code.js +2 -1
  158. package/dist/_internal/components/typography/index.js +2 -1
  159. package/dist/_internal/components/utility/InstallPrompt/InstallPrompt.js +2 -2
  160. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +7 -3
  161. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +6 -4
  162. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +4 -2
  163. package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +5 -3
  164. package/dist/_internal/components/utility/index.js +8 -6
  165. package/dist/_internal/copy/labels.js +1 -0
  166. package/dist/_internal/en-US.data-display.js +1 -1
  167. package/dist/_internal/en-US.feedback.js +1 -1
  168. package/dist/_internal/en-US.form.js +1 -1
  169. package/dist/_internal/en-US.labels.js +8 -0
  170. package/dist/_internal/en-US.navigation.js +1 -1
  171. package/dist/_internal/en-US.utility.js +1 -1
  172. package/dist/_internal/pt-BR.data-display.js +1 -1
  173. package/dist/_internal/pt-BR.feedback.js +1 -1
  174. package/dist/_internal/pt-BR.form.js +1 -1
  175. package/dist/_internal/pt-BR.labels.js +8 -0
  176. package/dist/_internal/pt-BR.labels.js.map +1 -0
  177. package/dist/_internal/pt-BR.navigation.js +1 -1
  178. package/dist/_internal/pt-BR.utility.js +1 -1
  179. package/dist/_internal/social-login-button/social-login-button.js +4 -4
  180. package/dist/_internal/user-avatar/user-avatar.js +8 -7
  181. package/dist/_internal/utils/resolve-labels.js +8 -0
  182. package/dist/_internal/utils/resolve-labels.js.map +1 -0
  183. package/dist/charts.js +11 -11
  184. package/dist/{chunk-2ILXXBMG.js → chunk-25HBYY4O.js} +12 -6
  185. package/dist/chunk-25HBYY4O.js.map +1 -0
  186. package/dist/{chunk-OPP6USJC.js → chunk-2FQF4CNE.js} +2 -2
  187. package/dist/{chunk-BWFQEASG.js → chunk-2P5ZBBTL.js} +5 -5
  188. package/dist/{chunk-QVO4SIS7.js → chunk-3W2B7IZG.js} +2 -2
  189. package/dist/{chunk-PMRLFNBT.js → chunk-3XLSA3YB.js} +4 -4
  190. package/dist/{chunk-7P5PNRBT.js → chunk-3YCV4EP7.js} +6 -6
  191. package/dist/{chunk-AYP6ICAY.js → chunk-44FY2YZL.js} +11 -10
  192. package/dist/chunk-44FY2YZL.js.map +1 -0
  193. package/dist/chunk-47IAX6PI.js +119 -0
  194. package/dist/chunk-47IAX6PI.js.map +1 -0
  195. package/dist/{chunk-Q6PRGXR2.js → chunk-4HBCWKIX.js} +4 -4
  196. package/dist/{chunk-HN3PZTUK.js → chunk-4MKVGSHX.js} +5 -5
  197. package/dist/{chunk-EERUSI52.js → chunk-4N3I7ZHQ.js} +2 -2
  198. package/dist/{chunk-O6SAU5JA.js → chunk-4OTJ66ID.js} +4 -4
  199. package/dist/{chunk-LG52LMAM.js → chunk-556LO6KA.js} +3 -3
  200. package/dist/{chunk-LBZEPWYK.js → chunk-5GLOEGOM.js} +4 -4
  201. package/dist/{chunk-KZXOIRUP.js → chunk-5MAD6ZEI.js} +43 -12
  202. package/dist/chunk-5MAD6ZEI.js.map +1 -0
  203. package/dist/{chunk-XICRCPEQ.js → chunk-5U7LBO2V.js} +5 -4
  204. package/dist/chunk-5U7LBO2V.js.map +1 -0
  205. package/dist/{chunk-JE6RZ5L6.js → chunk-5ZOJLYD2.js} +4 -4
  206. package/dist/{chunk-GSXYXMCV.js → chunk-66BRUS2M.js} +2 -2
  207. package/dist/{chunk-ALREWFRX.js → chunk-6DGNMASB.js} +4 -4
  208. package/dist/{chunk-MA6SUE7F.js → chunk-6EZQLNPK.js} +5 -3
  209. package/dist/chunk-6EZQLNPK.js.map +1 -0
  210. package/dist/{chunk-VRPCZ3IE.js → chunk-6JKECOZ2.js} +7 -6
  211. package/dist/chunk-6JKECOZ2.js.map +1 -0
  212. package/dist/{chunk-XKSA4L2X.js → chunk-6MGYPTAL.js} +11 -3
  213. package/dist/chunk-6MGYPTAL.js.map +1 -0
  214. package/dist/{chunk-5752357K.js → chunk-6N2U67KF.js} +4 -4
  215. package/dist/{chunk-UZOG6HNN.js → chunk-6SFJIW54.js} +5 -4
  216. package/dist/chunk-6SFJIW54.js.map +1 -0
  217. package/dist/{chunk-VD72JGHA.js → chunk-73OYC22L.js} +2 -2
  218. package/dist/{chunk-6DAIC2MG.js → chunk-775LIZXS.js} +4 -4
  219. package/dist/{chunk-C5JCARNE.js → chunk-7HKXTRTK.js} +7 -4
  220. package/dist/chunk-7HKXTRTK.js.map +1 -0
  221. package/dist/{chunk-S4JXSC4D.js → chunk-7HZ6TJRH.js} +6 -6
  222. package/dist/{chunk-33LAPBYB.js → chunk-7S25RDE4.js} +9 -5
  223. package/dist/chunk-7S25RDE4.js.map +1 -0
  224. package/dist/{chunk-CSD6SWBZ.js → chunk-A3Z7ZXLM.js} +6 -6
  225. package/dist/{chunk-LI6XSM5D.js → chunk-A6V7KE45.js} +3 -3
  226. package/dist/{chunk-YJBWDDW7.js → chunk-AAWVAQI2.js} +12 -12
  227. package/dist/{chunk-44PBCQ7E.js → chunk-ABQZFK7M.js} +6 -6
  228. package/dist/{chunk-EIMFA7KP.js → chunk-ANUO67JQ.js} +2 -2
  229. package/dist/{chunk-PTQRJEPN.js → chunk-AOBQ3KYY.js} +2 -2
  230. package/dist/{chunk-LODYTVOO.js → chunk-B25SHVWP.js} +4 -4
  231. package/dist/{chunk-GTT5UKKO.js → chunk-BDJIP4HG.js} +4 -4
  232. package/dist/{chunk-RS576GOH.js → chunk-BIUT3K6A.js} +4 -4
  233. package/dist/{chunk-4NQXHPQR.js → chunk-BJ7NWZWO.js} +11 -2
  234. package/dist/chunk-BJ7NWZWO.js.map +1 -0
  235. package/dist/{chunk-A5NXBOWS.js → chunk-BLHSLB5D.js} +5 -5
  236. package/dist/{chunk-DYHOBKPU.js → chunk-BLZDSCIZ.js} +6 -6
  237. package/dist/{chunk-E53MMMDA.js → chunk-BX6CF2UG.js} +3 -3
  238. package/dist/{chunk-WVZBYTIK.js → chunk-C465AAD5.js} +29 -19
  239. package/dist/chunk-C465AAD5.js.map +1 -0
  240. package/dist/{chunk-7HA7UH7O.js → chunk-C4OETF7K.js} +4 -4
  241. package/dist/{chunk-64AOS2WA.js → chunk-CAHN7AMY.js} +5 -5
  242. package/dist/{chunk-Z24VOTA7.js → chunk-CCWE6DBC.js} +4 -2
  243. package/dist/{chunk-Z24VOTA7.js.map → chunk-CCWE6DBC.js.map} +1 -1
  244. package/dist/{chunk-YLSDFW5O.js → chunk-CN4JS57H.js} +35 -5
  245. package/dist/chunk-CN4JS57H.js.map +1 -0
  246. package/dist/{chunk-MSC43MCJ.js → chunk-CRFOAKQL.js} +5 -5
  247. package/dist/{chunk-IQ2U5MVO.js → chunk-CSQWPDQV.js} +9 -9
  248. package/dist/{chunk-B2JYQBO4.js → chunk-CXTRDTNM.js} +11 -6
  249. package/dist/chunk-CXTRDTNM.js.map +1 -0
  250. package/dist/{chunk-TTCVYY2B.js → chunk-CYKINZKO.js} +22 -7
  251. package/dist/chunk-CYKINZKO.js.map +1 -0
  252. package/dist/{chunk-FT6HBP5E.js → chunk-DE7E2GBP.js} +11 -8
  253. package/dist/chunk-DE7E2GBP.js.map +1 -0
  254. package/dist/{chunk-QWVETTIY.js → chunk-DJMVBIFD.js} +21 -12
  255. package/dist/chunk-DJMVBIFD.js.map +1 -0
  256. package/dist/{chunk-3HLKTBEO.js → chunk-DQ22UKMZ.js} +4 -2
  257. package/dist/{chunk-3HLKTBEO.js.map → chunk-DQ22UKMZ.js.map} +1 -1
  258. package/dist/{chunk-INGPH3YQ.js → chunk-DVRNW33K.js} +28 -5
  259. package/dist/chunk-DVRNW33K.js.map +1 -0
  260. package/dist/{chunk-VQYR64QB.js → chunk-DX5PLJKN.js} +8 -3
  261. package/dist/chunk-DX5PLJKN.js.map +1 -0
  262. package/dist/{chunk-7XSCEHGA.js → chunk-EOQ6EKTS.js} +7 -7
  263. package/dist/{chunk-UGH2DDST.js → chunk-ETSASQXI.js} +4 -2
  264. package/dist/chunk-ETSASQXI.js.map +1 -0
  265. package/dist/{chunk-3VXS7O3X.js → chunk-EVYLJ5JB.js} +17 -3
  266. package/dist/chunk-EVYLJ5JB.js.map +1 -0
  267. package/dist/chunk-FB4GLQQO.js +102 -0
  268. package/dist/chunk-FB4GLQQO.js.map +1 -0
  269. package/dist/{chunk-WC3W36AM.js → chunk-FKUVFPQZ.js} +26 -12
  270. package/dist/chunk-FKUVFPQZ.js.map +1 -0
  271. package/dist/{chunk-VEKTKCSB.js → chunk-FLJ3RIRP.js} +5 -5
  272. package/dist/{chunk-LH4VKUZC.js → chunk-FLTXJWOC.js} +13 -7
  273. package/dist/chunk-FLTXJWOC.js.map +1 -0
  274. package/dist/{chunk-2ARVNCVU.js → chunk-FZUAB2KS.js} +8 -6
  275. package/dist/chunk-FZUAB2KS.js.map +1 -0
  276. package/dist/{chunk-PY3RW5LC.js → chunk-G2IVONJD.js} +24 -10
  277. package/dist/chunk-G2IVONJD.js.map +1 -0
  278. package/dist/{chunk-Z5WUSI47.js → chunk-G3JFESKD.js} +6 -6
  279. package/dist/{chunk-XRDH24J7.js → chunk-G6ET2DRL.js} +2 -2
  280. package/dist/{chunk-KIL3OVLI.js → chunk-G76PIGF7.js} +6 -2
  281. package/dist/chunk-G76PIGF7.js.map +1 -0
  282. package/dist/{chunk-XQWUVQ2F.js → chunk-GHGZI7PK.js} +6 -2
  283. package/dist/chunk-GHGZI7PK.js.map +1 -0
  284. package/dist/{chunk-4MQ6XTIJ.js → chunk-GJMWQUAD.js} +24 -13
  285. package/dist/chunk-GJMWQUAD.js.map +1 -0
  286. package/dist/{chunk-U4G3KY6L.js → chunk-GMU5AA3R.js} +8 -7
  287. package/dist/chunk-GMU5AA3R.js.map +1 -0
  288. package/dist/{chunk-ZFBFQK2Y.js → chunk-GPPUKDA6.js} +11 -12
  289. package/dist/chunk-GPPUKDA6.js.map +1 -0
  290. package/dist/{chunk-O36MIQIO.js → chunk-GPQ22MPR.js} +2 -2
  291. package/dist/{chunk-GRMBCJS6.js → chunk-H6R2L7VI.js} +4 -4
  292. package/dist/{chunk-AMLHEKSV.js → chunk-HI7JPDD6.js} +5 -5
  293. package/dist/{chunk-CW6Y32N2.js → chunk-I2CT4XIP.js} +6 -6
  294. package/dist/{chunk-N34AOGK3.js → chunk-I3OKAQ5L.js} +7 -7
  295. package/dist/{chunk-AEYLFBZT.js → chunk-I4NDZFTB.js} +2 -2
  296. package/dist/{chunk-5J7SA4CZ.js → chunk-IASPZGYB.js} +28 -10
  297. package/dist/chunk-IASPZGYB.js.map +1 -0
  298. package/dist/{chunk-2ZRZTGWP.js → chunk-ISW5K72V.js} +5 -5
  299. package/dist/{chunk-KARMRTTM.js → chunk-J2RUDZVJ.js} +7 -7
  300. package/dist/{chunk-FTPTPASD.js → chunk-JBYFBPI6.js} +2 -5
  301. package/dist/{chunk-FTPTPASD.js.map → chunk-JBYFBPI6.js.map} +1 -1
  302. package/dist/{chunk-4M5GEKPM.js → chunk-JL4I7OQE.js} +4 -4
  303. package/dist/chunk-JQLQOIB3.js +1 -0
  304. package/dist/chunk-JQLQOIB3.js.map +1 -0
  305. package/dist/{chunk-NBXG3SQ3.js → chunk-JSY234NY.js} +5 -5
  306. package/dist/{chunk-HQCZT6TO.js → chunk-JVOEVTCZ.js} +5 -5
  307. package/dist/{chunk-MBMZNSBP.js → chunk-JW7MN4DG.js} +3 -3
  308. package/dist/{chunk-ZPACE34U.js → chunk-K53XSVQO.js} +10 -10
  309. package/dist/{chunk-RUF7TOAZ.js → chunk-KE74C2SM.js} +3 -2
  310. package/dist/{chunk-RUF7TOAZ.js.map → chunk-KE74C2SM.js.map} +1 -1
  311. package/dist/{chunk-GBVNY2LG.js → chunk-KTXJQ4YJ.js} +6 -6
  312. package/dist/{chunk-FCVPVEAS.js → chunk-KYE7I6NT.js} +7 -7
  313. package/dist/{chunk-MM7BPTVV.js → chunk-KYT5G4K7.js} +2 -2
  314. package/dist/{chunk-4VRDFZ4G.js → chunk-KYTFGW4R.js} +7 -3
  315. package/dist/chunk-KYTFGW4R.js.map +1 -0
  316. package/dist/chunk-L35TCXFA.js +74 -0
  317. package/dist/chunk-L35TCXFA.js.map +1 -0
  318. package/dist/{chunk-3V3Z4EML.js → chunk-L4FWEI2P.js} +5 -5
  319. package/dist/{chunk-7VRCGWQL.js → chunk-L7N4AFZD.js} +6 -5
  320. package/dist/chunk-L7N4AFZD.js.map +1 -0
  321. package/dist/{chunk-2TSGRQ2J.js → chunk-LHJJZ462.js} +4 -2
  322. package/dist/chunk-LHJJZ462.js.map +1 -0
  323. package/dist/{chunk-SV6IQ2YO.js → chunk-LIWONEAU.js} +6 -4
  324. package/dist/chunk-LIWONEAU.js.map +1 -0
  325. package/dist/chunk-LL2BWQPM.js +11 -0
  326. package/dist/chunk-LL2BWQPM.js.map +1 -0
  327. package/dist/{chunk-XYFBJH6F.js → chunk-LR473BUT.js} +19 -9
  328. package/dist/chunk-LR473BUT.js.map +1 -0
  329. package/dist/{chunk-56JF5PZK.js → chunk-LYVTJLCF.js} +4 -4
  330. package/dist/{chunk-M3DSPEZ3.js → chunk-M3ZNQTS5.js} +5 -5
  331. package/dist/{chunk-AYJ44VTJ.js → chunk-MBY7DWGT.js} +15 -13
  332. package/dist/chunk-MBY7DWGT.js.map +1 -0
  333. package/dist/{chunk-GBKIGUNP.js → chunk-MGDCGNLC.js} +3 -3
  334. package/dist/{chunk-BGYLL467.js → chunk-N3W6FZOC.js} +4 -4
  335. package/dist/{chunk-BWFUZ4N2.js → chunk-NA3M7KDE.js} +4 -4
  336. package/dist/{chunk-MTGEJRE4.js → chunk-NNKIM73H.js} +17 -4
  337. package/dist/chunk-NNKIM73H.js.map +1 -0
  338. package/dist/{chunk-OHXAJUO5.js → chunk-NPPO7G2B.js} +5 -3
  339. package/dist/{chunk-OHXAJUO5.js.map → chunk-NPPO7G2B.js.map} +1 -1
  340. package/dist/{chunk-FIOBPQL2.js → chunk-NUUX4BBR.js} +10 -3
  341. package/dist/chunk-NUUX4BBR.js.map +1 -0
  342. package/dist/{chunk-7JOLSD2W.js → chunk-P3QFJJJY.js} +3 -3
  343. package/dist/{chunk-RCTHCXS6.js → chunk-PJNIJIE6.js} +2 -2
  344. package/dist/{chunk-DXFKPY2K.js → chunk-PU3FQG7T.js} +4 -4
  345. package/dist/{chunk-6ATXOJVQ.js → chunk-QADTI63U.js} +4 -4
  346. package/dist/{chunk-FRGNTTPA.js → chunk-QDRHIK2R.js} +15 -10
  347. package/dist/chunk-QDRHIK2R.js.map +1 -0
  348. package/dist/{chunk-SUZXPDUQ.js → chunk-QJLOWBFW.js} +12 -6
  349. package/dist/chunk-QJLOWBFW.js.map +1 -0
  350. package/dist/chunk-QNAB53N3.js +1 -0
  351. package/dist/chunk-QNAB53N3.js.map +1 -0
  352. package/dist/{chunk-7ZROYGUG.js → chunk-QOTMQLMW.js} +2 -2
  353. package/dist/{chunk-NQCTANF3.js → chunk-QVDEGBME.js} +7 -7
  354. package/dist/{chunk-HEBZ7Q7O.js → chunk-QVYBRD6U.js} +7 -6
  355. package/dist/chunk-QVYBRD6U.js.map +1 -0
  356. package/dist/{chunk-VNVV6Y2X.js → chunk-RECD3XOL.js} +4 -2
  357. package/dist/chunk-RECD3XOL.js.map +1 -0
  358. package/dist/{chunk-JJVIZR6C.js → chunk-RIPG3QIN.js} +24 -13
  359. package/dist/chunk-RIPG3QIN.js.map +1 -0
  360. package/dist/{chunk-T743IIER.js → chunk-RNQA7MDM.js} +8 -4
  361. package/dist/chunk-RNQA7MDM.js.map +1 -0
  362. package/dist/{chunk-YNDTLBOH.js → chunk-RQMYEPRR.js} +2 -2
  363. package/dist/{chunk-3JDP5OUR.js → chunk-RQY5ONSF.js} +6 -2
  364. package/dist/chunk-RQY5ONSF.js.map +1 -0
  365. package/dist/{chunk-Y7YJYUNV.js → chunk-RRSLH2FV.js} +10 -3
  366. package/dist/chunk-RRSLH2FV.js.map +1 -0
  367. package/dist/{chunk-3Z3WIQ5M.js → chunk-RZ3QMKM7.js} +5 -5
  368. package/dist/{chunk-WA6F4NOO.js → chunk-SMANO5OD.js} +4 -4
  369. package/dist/{chunk-5M2NWXN4.js → chunk-SRNBD6EV.js} +2 -2
  370. package/dist/{chunk-7SYYGXC7.js → chunk-SSCEX5NY.js} +6 -2
  371. package/dist/chunk-SSCEX5NY.js.map +1 -0
  372. package/dist/{chunk-PU3HEWSG.js → chunk-SYSR2K2M.js} +13 -4
  373. package/dist/chunk-SYSR2K2M.js.map +1 -0
  374. package/dist/{chunk-NDGA7ZE6.js → chunk-TGMMUKOF.js} +3 -3
  375. package/dist/{chunk-SB2SEGR6.js → chunk-TIM4PXWN.js} +3 -3
  376. package/dist/{chunk-555TUQ7E.js → chunk-TPGFR24B.js} +5 -5
  377. package/dist/{chunk-MHLYX6QW.js → chunk-TRAMTVIO.js} +5 -5
  378. package/dist/{chunk-QO7UJXXO.js → chunk-TVMSXL3R.js} +2 -2
  379. package/dist/{chunk-OE3SQOZV.js → chunk-U6XXAVBO.js} +13 -7
  380. package/dist/chunk-U6XXAVBO.js.map +1 -0
  381. package/dist/{chunk-CZV6NVCA.js → chunk-UG4EMHMW.js} +10 -7
  382. package/dist/chunk-UG4EMHMW.js.map +1 -0
  383. package/dist/{chunk-VEBNL5MG.js → chunk-UGYBN6OO.js} +2 -2
  384. package/dist/{chunk-HHPJXK4Z.js → chunk-UHQZ5XPW.js} +2 -2
  385. package/dist/{chunk-2QO3BKUQ.js → chunk-UJT6AQHL.js} +4 -4
  386. package/dist/{chunk-FTDGFWB5.js → chunk-UK3DSFMK.js} +5 -5
  387. package/dist/{chunk-NYWAAXDX.js → chunk-URAXAKUI.js} +3 -3
  388. package/dist/{chunk-XODBYGTH.js → chunk-V37QIB7B.js} +2 -2
  389. package/dist/{chunk-7K23NEZO.js → chunk-V45JGJ3W.js} +8 -8
  390. package/dist/{chunk-RA6W37NZ.js → chunk-V64USPG3.js} +11 -8
  391. package/dist/chunk-V64USPG3.js.map +1 -0
  392. package/dist/{chunk-HZK4DRGF.js → chunk-V7INHV5V.js} +6 -4
  393. package/dist/chunk-V7INHV5V.js.map +1 -0
  394. package/dist/{chunk-RZCXYKY4.js → chunk-VFVATUC6.js} +6 -2
  395. package/dist/chunk-VFVATUC6.js.map +1 -0
  396. package/dist/{chunk-2MYSXWZQ.js → chunk-VKTF3GAP.js} +9 -9
  397. package/dist/{chunk-ICRVLGWD.js → chunk-VMU52I5D.js} +8 -2
  398. package/dist/chunk-VMU52I5D.js.map +1 -0
  399. package/dist/{chunk-MNZ6MCOK.js → chunk-VQ6UB4MN.js} +8 -8
  400. package/dist/{chunk-LTTYUSJ2.js → chunk-VTDZUO2J.js} +4 -2
  401. package/dist/chunk-VTDZUO2J.js.map +1 -0
  402. package/dist/{chunk-4HUSG5MR.js → chunk-VZVAP2ZR.js} +2 -2
  403. package/dist/{chunk-4XBAEKQQ.js → chunk-W2RXXF7K.js} +4 -4
  404. package/dist/chunk-W5PRZHLU.js +74 -0
  405. package/dist/chunk-W5PRZHLU.js.map +1 -0
  406. package/dist/{chunk-A2YLFKQU.js → chunk-W5WYTVLS.js} +2 -2
  407. package/dist/{chunk-EUACQR6N.js → chunk-WE43PZ4P.js} +7 -5
  408. package/dist/chunk-WE43PZ4P.js.map +1 -0
  409. package/dist/{chunk-RHKQ2RSY.js → chunk-WUW6NDXC.js} +15 -15
  410. package/dist/{chunk-EBCEDBHX.js → chunk-XDDKRACZ.js} +3 -3
  411. package/dist/{chunk-SLSED46V.js → chunk-Y3DV7LGC.js} +2 -1
  412. package/dist/{chunk-SLSED46V.js.map → chunk-Y3DV7LGC.js.map} +1 -1
  413. package/dist/{chunk-ASZGMKB4.js → chunk-Y3TD7HOY.js} +2 -2
  414. package/dist/{chunk-HBHBRRSW.js → chunk-YBAK2WN5.js} +7 -7
  415. package/dist/{chunk-LOLYI6PS.js → chunk-YCZGYYUX.js} +11 -8
  416. package/dist/chunk-YCZGYYUX.js.map +1 -0
  417. package/dist/{chunk-KT3TF2LT.js → chunk-YJ6UQDA6.js} +7 -5
  418. package/dist/chunk-YJ6UQDA6.js.map +1 -0
  419. package/dist/{chunk-6RTE4UNO.js → chunk-YV4O7KDR.js} +1 -1
  420. package/dist/{chunk-Z5V5E3JW.js → chunk-ZIHSCBMN.js} +10 -10
  421. package/dist/data-display/Alert.js +3 -3
  422. package/dist/data-display/AlertDialog.js +2 -1
  423. package/dist/data-display/AsyncStateContainer.js +3 -3
  424. package/dist/data-display/Avatar.js +4 -4
  425. package/dist/data-display/CardKit.js +18 -17
  426. package/dist/data-display/Carousel.js +7 -4
  427. package/dist/data-display/Chart.js +11 -11
  428. package/dist/data-display/DataGrid.js +2 -2
  429. package/dist/data-display/DataViews.js +86 -85
  430. package/dist/data-display/EmptyState.js +2 -2
  431. package/dist/data-display/FleetMap.js +15 -12
  432. package/dist/data-display/HoverCard.js +2 -2
  433. package/dist/data-display/InteractiveTooltip.js +2 -2
  434. package/dist/data-display/LazyImage.js +3 -2
  435. package/dist/data-display/Lightbox.js +6 -6
  436. package/dist/data-display/MapPreview.js +9 -6
  437. package/dist/data-display/Progress.js +2 -2
  438. package/dist/data-display/SectionOnboarding.js +6 -4
  439. package/dist/data-display/Sheet.js +4 -4
  440. package/dist/data-display/Stepper.js +3 -1
  441. package/dist/data-display/Table.js +6 -4
  442. package/dist/data-display/Timeline.js +4 -2
  443. package/dist/en-US.js +16 -12
  444. package/dist/feedback/ConfirmAction.js +9 -8
  445. package/dist/feedback/Dialog.js +3 -2
  446. package/dist/feedback/NotificationStatusNotice.js +4 -4
  447. package/dist/feedback/SequenceResolver.js +12 -11
  448. package/dist/feedback/Sonner.js +3 -2
  449. package/dist/feedback/StackedModal.js +7 -6
  450. package/dist/feedback/Toast.js +2 -1
  451. package/dist/feedback/TutorialOverlay.js +3 -2
  452. package/dist/form/AddressAutocomplete.js +12 -10
  453. package/dist/form/Autocomplete.js +2 -2
  454. package/dist/form/Calendar.js +6 -6
  455. package/dist/form/CategorySelect.js +9 -9
  456. package/dist/form/Checkbox.js +2 -2
  457. package/dist/form/CodeEditor.js +3 -3
  458. package/dist/form/DateRangePicker.js +9 -9
  459. package/dist/form/InputOTP.js +2 -2
  460. package/dist/form/Menubar.js +2 -2
  461. package/dist/form/PhoneInput.js +3 -3
  462. package/dist/form/PickerSheet.js +4 -4
  463. package/dist/form/RichTextEditor.js +7 -5
  464. package/dist/form/Switch.js +4 -4
  465. package/dist/form/Textarea.js +1 -1
  466. package/dist/form/UploadButton.js +3 -2
  467. package/dist/form/total-form.js +18 -17
  468. package/dist/layout/Card.js +2 -2
  469. package/dist/layout/ContentToolbar.js +11 -10
  470. package/dist/layout/Dashboard.js +2 -1
  471. package/dist/layout/ScrollArea.js +3 -3
  472. package/dist/layout/SettingCard.js +17 -17
  473. package/dist/layout/SettingsLayout.js +6 -6
  474. package/dist/locales.js +36 -28
  475. package/dist/locales.js.map +1 -1
  476. package/dist/native/chunks/{chunk-BXNZHDXK.js → chunk-4SP3BDPZ.js} +12 -5
  477. package/dist/native/chunks/chunk-4SP3BDPZ.js.map +1 -0
  478. package/dist/native/chunks/{chunk-AVHGS66L.js → chunk-FGAX5BRS.js} +2 -2
  479. package/dist/native/chunks/chunk-SPK34J7Y.js +74 -0
  480. package/dist/native/chunks/chunk-SPK34J7Y.js.map +1 -0
  481. package/dist/native/data-display/Badge.js +9 -3
  482. package/dist/native/data-display/Badge.js.map +1 -1
  483. package/dist/native/data-display/Chip.js +9 -1
  484. package/dist/native/data-display/Chip.js.map +1 -1
  485. package/dist/native/data-display/EmptyState.js +3 -2
  486. package/dist/native/data-display/ErrorState.js +2 -1
  487. package/dist/native/data-display/ErrorState.js.map +1 -1
  488. package/dist/native/data-display/FleetMap.js +3 -2
  489. package/dist/native/data-display/FleetMap.js.map +1 -1
  490. package/dist/native/feedback/Dialog.js +20 -3
  491. package/dist/native/feedback/Dialog.js.map +1 -1
  492. package/dist/native/form/Button.js +2 -1
  493. package/dist/native/form/Checkbox.js +6 -1
  494. package/dist/native/form/Checkbox.js.map +1 -1
  495. package/dist/native/form/Input.js +11 -3
  496. package/dist/native/form/Input.js.map +1 -1
  497. package/dist/native/form/Switch.js +5 -1
  498. package/dist/native/form/Switch.js.map +1 -1
  499. package/dist/navigation/AppHeader.js +10 -9
  500. package/dist/navigation/CommandPalette.js +6 -4
  501. package/dist/navigation/NavigationMenu.js +7 -6
  502. package/dist/navigation/Pagination.js +2 -2
  503. package/dist/navigation/SectionNav.js +5 -5
  504. package/dist/pt-BR.js +10 -6
  505. package/dist/social-login-button.js +4 -4
  506. package/dist/types/components/data-display/AlertDialog/AlertDialog.d.ts.map +1 -1
  507. package/dist/types/components/data-display/AlertDialog/AlertDialog.types.d.ts +5 -0
  508. package/dist/types/components/data-display/AlertDialog/AlertDialog.types.d.ts.map +1 -1
  509. package/dist/types/components/data-display/Carousel/Carousel.chrome.d.ts.map +1 -1
  510. package/dist/types/components/data-display/Carousel/Carousel.parts.d.ts.map +1 -1
  511. package/dist/types/components/data-display/Carousel/Carousel.types.d.ts +2 -0
  512. package/dist/types/components/data-display/Carousel/Carousel.types.d.ts.map +1 -1
  513. package/dist/types/components/data-display/LazyImage/LazyImage.d.ts.map +1 -1
  514. package/dist/types/components/data-display/LazyImage/LazyImage.types.d.ts +10 -0
  515. package/dist/types/components/data-display/LazyImage/LazyImage.types.d.ts.map +1 -1
  516. package/dist/types/components/data-display/MapPreview/MapControlBar.d.ts.map +1 -1
  517. package/dist/types/components/data-display/MapPreview/MapLayers.d.ts +1 -1
  518. package/dist/types/components/data-display/MapPreview/MapLayers.d.ts.map +1 -1
  519. package/dist/types/components/data-display/MapPreview/MapMarkers.d.ts +2 -0
  520. package/dist/types/components/data-display/MapPreview/MapMarkers.d.ts.map +1 -1
  521. package/dist/types/components/data-display/MapPreview/MapPreview.d.ts.map +1 -1
  522. package/dist/types/components/data-display/MapPreview/MapPreview.helpers.d.ts +7 -1
  523. package/dist/types/components/data-display/MapPreview/MapPreview.helpers.d.ts.map +1 -1
  524. package/dist/types/components/data-display/Stepper/Stepper.d.ts.map +1 -1
  525. package/dist/types/components/data-display/Stepper/Stepper.types.d.ts +4 -0
  526. package/dist/types/components/data-display/Stepper/Stepper.types.d.ts.map +1 -1
  527. package/dist/types/components/data-display/Table/Table.d.ts.map +1 -1
  528. package/dist/types/components/data-display/Table/Table.helpers.d.ts.map +1 -1
  529. package/dist/types/components/data-display/Table/Table.types.d.ts +11 -0
  530. package/dist/types/components/data-display/Table/Table.types.d.ts.map +1 -1
  531. package/dist/types/components/data-display/Table/TableParts.d.ts +2 -1
  532. package/dist/types/components/data-display/Table/TableParts.d.ts.map +1 -1
  533. package/dist/types/components/data-display/Table/TableParts.hooks.d.ts +2 -2
  534. package/dist/types/components/data-display/Table/TableParts.hooks.d.ts.map +1 -1
  535. package/dist/types/components/data-display/Timeline/Timeline.d.ts.map +1 -1
  536. package/dist/types/components/data-display/Timeline/Timeline.types.d.ts +3 -0
  537. package/dist/types/components/data-display/Timeline/Timeline.types.d.ts.map +1 -1
  538. package/dist/types/components/data-display/Timeline/TimelineRow.d.ts +2 -0
  539. package/dist/types/components/data-display/Timeline/TimelineRow.d.ts.map +1 -1
  540. package/dist/types/components/feedback/Dialog/Dialog.base.d.ts +10 -0
  541. package/dist/types/components/feedback/Dialog/Dialog.base.d.ts.map +1 -1
  542. package/dist/types/components/feedback/Dialog/Dialog.d.ts.map +1 -1
  543. package/dist/types/components/feedback/Sonner/Sonner.d.ts +6 -0
  544. package/dist/types/components/feedback/Sonner/Sonner.d.ts.map +1 -1
  545. package/dist/types/components/feedback/Sonner/SonnerToast.d.ts.map +1 -1
  546. package/dist/types/components/feedback/StackedModal/StackedModal.d.ts.map +1 -1
  547. package/dist/types/components/feedback/StackedModal/StackedModal.parts.d.ts +2 -0
  548. package/dist/types/components/feedback/StackedModal/StackedModal.parts.d.ts.map +1 -1
  549. package/dist/types/components/feedback/StackedModal/StackedModal.types.d.ts +5 -0
  550. package/dist/types/components/feedback/StackedModal/StackedModal.types.d.ts.map +1 -1
  551. package/dist/types/components/feedback/Toast/Toast.d.ts.map +1 -1
  552. package/dist/types/components/feedback/Toast/Toast.types.d.ts +5 -0
  553. package/dist/types/components/feedback/Toast/Toast.types.d.ts.map +1 -1
  554. package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.d.ts.map +1 -1
  555. package/dist/types/components/feedback/TutorialOverlay/TutorialStepBody.d.ts.map +1 -1
  556. package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.d.ts.map +1 -1
  557. package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.helpers.d.ts +1 -1
  558. package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.helpers.d.ts.map +1 -1
  559. package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.hooks.d.ts +3 -1
  560. package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.hooks.d.ts.map +1 -1
  561. package/dist/types/components/form/AddressAutocomplete/AddressAutocompleteField.d.ts.map +1 -1
  562. package/dist/types/components/form/AddressAutocomplete/useAddressPredictions.d.ts +2 -1
  563. package/dist/types/components/form/AddressAutocomplete/useAddressPredictions.d.ts.map +1 -1
  564. package/dist/types/components/form/AddressAutocomplete/useAddressSelection.d.ts +3 -1
  565. package/dist/types/components/form/AddressAutocomplete/useAddressSelection.d.ts.map +1 -1
  566. package/dist/types/components/form/AddressAutocomplete/useCurrentLocation.d.ts +3 -1
  567. package/dist/types/components/form/AddressAutocomplete/useCurrentLocation.d.ts.map +1 -1
  568. package/dist/types/components/form/AddressAutocomplete/useGoogleMapsAPI.d.ts +4 -1
  569. package/dist/types/components/form/AddressAutocomplete/useGoogleMapsAPI.d.ts.map +1 -1
  570. package/dist/types/components/form/Button/Button.native.loading.d.ts +2 -1
  571. package/dist/types/components/form/Button/Button.native.loading.d.ts.map +1 -1
  572. package/dist/types/components/form/PhoneInput/PhoneInput.d.ts.map +1 -1
  573. package/dist/types/components/form/PhoneInput/PhoneInput.types.d.ts +1 -0
  574. package/dist/types/components/form/PhoneInput/PhoneInput.types.d.ts.map +1 -1
  575. package/dist/types/components/form/PhoneInput/countries.d.ts +6 -0
  576. package/dist/types/components/form/PhoneInput/countries.d.ts.map +1 -1
  577. package/dist/types/components/form/RichTextEditor/RichTextEditor.d.ts.map +1 -1
  578. package/dist/types/components/form/RichTextEditor/RichTextEditor.dom.d.ts +1 -1
  579. package/dist/types/components/form/RichTextEditor/RichTextEditor.dom.d.ts.map +1 -1
  580. package/dist/types/components/form/RichTextEditor/RichTextEditor.format.d.ts +2 -1
  581. package/dist/types/components/form/RichTextEditor/RichTextEditor.format.d.ts.map +1 -1
  582. package/dist/types/components/form/RichTextEditor/RichTextEditor.hooks.d.ts +2 -1
  583. package/dist/types/components/form/RichTextEditor/RichTextEditor.hooks.d.ts.map +1 -1
  584. package/dist/types/components/form/RichTextEditor/RichTextEditor.types.d.ts +7 -1
  585. package/dist/types/components/form/RichTextEditor/RichTextEditor.types.d.ts.map +1 -1
  586. package/dist/types/components/form/RichTextEditor/RichTextEditorToolbar.d.ts +2 -0
  587. package/dist/types/components/form/RichTextEditor/RichTextEditorToolbar.d.ts.map +1 -1
  588. package/dist/types/components/form/Textarea/TextareaRichEditor.d.ts.map +1 -1
  589. package/dist/types/components/form/UploadButton/UploadButton.hooks.d.ts.map +1 -1
  590. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts +14 -0
  591. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts.map +1 -1
  592. package/dist/types/components/layout/ContentToolbar/FilterTrigger.d.ts +1 -1
  593. package/dist/types/components/layout/ContentToolbar/FilterTrigger.d.ts.map +1 -1
  594. package/dist/types/components/layout/ContentToolbar/ViewSelector.d.ts +1 -1
  595. package/dist/types/components/layout/ContentToolbar/ViewSelector.d.ts.map +1 -1
  596. package/dist/types/components/layout/Dashboard/Dashboard.d.ts +1 -1
  597. package/dist/types/components/layout/Dashboard/Dashboard.d.ts.map +1 -1
  598. package/dist/types/components/layout/Dashboard/Dashboard.types.d.ts +5 -0
  599. package/dist/types/components/layout/Dashboard/Dashboard.types.d.ts.map +1 -1
  600. package/dist/types/components/navigation/CommandPalette/CommandPalette.d.ts.map +1 -1
  601. package/dist/types/components/navigation/CommandPalette/CommandPalette.helpers.d.ts +1 -1
  602. package/dist/types/components/navigation/CommandPalette/CommandPalette.helpers.d.ts.map +1 -1
  603. package/dist/types/components/navigation/CommandPalette/CommandPalette.hooks.d.ts +2 -1
  604. package/dist/types/components/navigation/CommandPalette/CommandPalette.hooks.d.ts.map +1 -1
  605. package/dist/types/components/navigation/CommandPalette/CommandPaletteResults.d.ts.map +1 -1
  606. package/dist/types/components/navigation/NavigationMenu/NavigationMenu.d.ts.map +1 -1
  607. package/dist/types/components/navigation/NavigationMenu/NavigationMenu.shell.d.ts +1 -0
  608. package/dist/types/components/navigation/NavigationMenu/NavigationMenu.shell.d.ts.map +1 -1
  609. package/dist/types/components/navigation/NavigationMenu/NavigationMenu.types.d.ts +11 -0
  610. package/dist/types/components/navigation/NavigationMenu/NavigationMenu.types.d.ts.map +1 -1
  611. package/dist/types/components/navigation/NavigationMenu/NavigationMenuItem.d.ts.map +1 -1
  612. package/dist/types/components/navigation/NavigationMenu/NavigationStandardBody.d.ts +4 -0
  613. package/dist/types/components/navigation/NavigationMenu/NavigationStandardBody.d.ts.map +1 -1
  614. package/dist/types/components/typography/Code/Code.d.ts.map +1 -1
  615. package/dist/types/components/typography/Code/Code.types.d.ts +4 -0
  616. package/dist/types/components/typography/Code/Code.types.d.ts.map +1 -1
  617. package/dist/types/components/utility/WorkflowStep/WorkflowStep.d.ts.map +1 -1
  618. package/dist/types/components/utility/WorkflowStep/WorkflowStep.helpers.d.ts +4 -1
  619. package/dist/types/components/utility/WorkflowStep/WorkflowStep.helpers.d.ts.map +1 -1
  620. package/dist/types/components/utility/WorkflowStep/WorkflowStep.parts.d.ts.map +1 -1
  621. package/dist/types/components/utility/WorkflowStep/WorkflowStep.types.d.ts +9 -0
  622. package/dist/types/components/utility/WorkflowStep/WorkflowStep.types.d.ts.map +1 -1
  623. package/dist/types/components/utility/WorkflowStep/WorkflowStepRow.d.ts +1 -0
  624. package/dist/types/components/utility/WorkflowStep/WorkflowStepRow.d.ts.map +1 -1
  625. package/dist/types/copy/data-display.d.ts +24 -0
  626. package/dist/types/copy/data-display.d.ts.map +1 -1
  627. package/dist/types/copy/feedback.d.ts +4 -0
  628. package/dist/types/copy/feedback.d.ts.map +1 -1
  629. package/dist/types/copy/form.d.ts +58 -0
  630. package/dist/types/copy/form.d.ts.map +1 -1
  631. package/dist/types/copy/labels.d.ts +108 -0
  632. package/dist/types/copy/labels.d.ts.map +1 -0
  633. package/dist/types/copy/navigation.d.ts +12 -0
  634. package/dist/types/copy/navigation.d.ts.map +1 -1
  635. package/dist/types/copy/utility.d.ts +8 -1
  636. package/dist/types/copy/utility.d.ts.map +1 -1
  637. package/dist/types/copy.d.ts +1 -0
  638. package/dist/types/copy.d.ts.map +1 -1
  639. package/dist/types/en-US.d.ts +1 -0
  640. package/dist/types/en-US.d.ts.map +1 -1
  641. package/dist/types/en-US.data-display.d.ts +2 -2
  642. package/dist/types/en-US.data-display.d.ts.map +1 -1
  643. package/dist/types/en-US.feedback.d.ts +1 -1
  644. package/dist/types/en-US.feedback.d.ts.map +1 -1
  645. package/dist/types/en-US.form.d.ts +4 -4
  646. package/dist/types/en-US.form.d.ts.map +1 -1
  647. package/dist/types/en-US.labels.d.ts +9 -0
  648. package/dist/types/en-US.labels.d.ts.map +1 -0
  649. package/dist/types/en-US.navigation.d.ts +1 -1
  650. package/dist/types/en-US.navigation.d.ts.map +1 -1
  651. package/dist/types/en-US.utility.d.ts +1 -1
  652. package/dist/types/en-US.utility.d.ts.map +1 -1
  653. package/dist/types/locales.d.ts +2 -1
  654. package/dist/types/locales.d.ts.map +1 -1
  655. package/dist/types/pt-BR.d.ts +1 -0
  656. package/dist/types/pt-BR.d.ts.map +1 -1
  657. package/dist/types/pt-BR.data-display.d.ts +2 -2
  658. package/dist/types/pt-BR.data-display.d.ts.map +1 -1
  659. package/dist/types/pt-BR.feedback.d.ts +1 -1
  660. package/dist/types/pt-BR.feedback.d.ts.map +1 -1
  661. package/dist/types/pt-BR.form.d.ts +4 -4
  662. package/dist/types/pt-BR.form.d.ts.map +1 -1
  663. package/dist/types/pt-BR.labels.d.ts +8 -0
  664. package/dist/types/pt-BR.labels.d.ts.map +1 -0
  665. package/dist/types/pt-BR.navigation.d.ts +1 -1
  666. package/dist/types/pt-BR.navigation.d.ts.map +1 -1
  667. package/dist/types/pt-BR.utility.d.ts +1 -1
  668. package/dist/types/pt-BR.utility.d.ts.map +1 -1
  669. package/dist/types/user-avatar/user-avatar.d.ts +6 -1
  670. package/dist/types/user-avatar/user-avatar.d.ts.map +1 -1
  671. package/dist/types/utils/resolve-labels.d.ts +9 -0
  672. package/dist/types/utils/resolve-labels.d.ts.map +1 -0
  673. package/dist/types-native/components/data-display/Badge/Badge.native.d.ts +1 -0
  674. package/dist/types-native/components/data-display/Badge/Badge.native.d.ts.map +1 -1
  675. package/dist/types-native/components/data-display/Badge/Badge.types.native.d.ts +2 -0
  676. package/dist/types-native/components/data-display/Badge/Badge.types.native.d.ts.map +1 -1
  677. package/dist/types-native/components/data-display/Badge/BadgeContent.native.d.ts +2 -1
  678. package/dist/types-native/components/data-display/Badge/BadgeContent.native.d.ts.map +1 -1
  679. package/dist/types-native/components/data-display/Chip/Chip.native.d.ts +1 -0
  680. package/dist/types-native/components/data-display/Chip/Chip.native.d.ts.map +1 -1
  681. package/dist/types-native/components/data-display/Chip/Chip.types.native.d.ts +2 -0
  682. package/dist/types-native/components/data-display/Chip/Chip.types.native.d.ts.map +1 -1
  683. package/dist/types-native/components/feedback/Dialog/Dialog.base.d.ts +10 -0
  684. package/dist/types-native/components/feedback/Dialog/Dialog.base.d.ts.map +1 -1
  685. package/dist/types-native/components/feedback/Dialog/Dialog.native.d.ts.map +1 -1
  686. package/dist/types-native/components/feedback/Dialog/DialogParts.native.d.ts +1 -1
  687. package/dist/types-native/components/feedback/Dialog/DialogParts.native.d.ts.map +1 -1
  688. package/dist/types-native/components/form/Button/Button.native.d.ts +1 -0
  689. package/dist/types-native/components/form/Button/Button.native.d.ts.map +1 -1
  690. package/dist/types-native/components/form/Button/Button.native.loading.d.ts +2 -1
  691. package/dist/types-native/components/form/Button/Button.native.loading.d.ts.map +1 -1
  692. package/dist/types-native/components/form/Button/Button.types.native.d.ts +2 -0
  693. package/dist/types-native/components/form/Button/Button.types.native.d.ts.map +1 -1
  694. package/dist/types-native/components/form/Checkbox/Checkbox.native.d.ts +1 -0
  695. package/dist/types-native/components/form/Checkbox/Checkbox.native.d.ts.map +1 -1
  696. package/dist/types-native/components/form/Checkbox/Checkbox.types.native.d.ts +2 -0
  697. package/dist/types-native/components/form/Checkbox/Checkbox.types.native.d.ts.map +1 -1
  698. package/dist/types-native/components/form/Input/Input.native.d.ts +1 -0
  699. package/dist/types-native/components/form/Input/Input.native.d.ts.map +1 -1
  700. package/dist/types-native/components/form/Input/Input.types.native.d.ts +2 -0
  701. package/dist/types-native/components/form/Input/Input.types.native.d.ts.map +1 -1
  702. package/dist/types-native/components/form/Switch/Switch.native.d.ts +1 -0
  703. package/dist/types-native/components/form/Switch/Switch.native.d.ts.map +1 -1
  704. package/dist/types-native/components/form/Switch/Switch.types.native.d.ts +2 -0
  705. package/dist/types-native/components/form/Switch/Switch.types.native.d.ts.map +1 -1
  706. package/dist/types-native/copy/data-display.d.ts +119 -0
  707. package/dist/types-native/copy/data-display.d.ts.map +1 -0
  708. package/dist/types-native/copy/labels.d.ts +108 -0
  709. package/dist/types-native/copy/labels.d.ts.map +1 -0
  710. package/dist/types-native/en-US.labels.d.ts +9 -0
  711. package/dist/types-native/en-US.labels.d.ts.map +1 -0
  712. package/dist/typography/Code.js +2 -1
  713. package/dist/user-avatar.js +8 -7
  714. package/dist/utility/InstallPrompt.js +2 -2
  715. package/dist/utility/WorkflowStep.js +6 -4
  716. package/package.json +2 -2
  717. package/src/components/data-display/AlertDialog/AlertDialog.tsx +3 -1
  718. package/src/components/data-display/AlertDialog/AlertDialog.types.ts +6 -0
  719. package/src/components/data-display/Badge/Badge.native.tsx +2 -0
  720. package/src/components/data-display/Badge/Badge.types.native.ts +2 -0
  721. package/src/components/data-display/Badge/BadgeContent.native.tsx +4 -1
  722. package/src/components/data-display/Carousel/Carousel.chrome.tsx +1 -0
  723. package/src/components/data-display/Carousel/Carousel.parts.tsx +13 -9
  724. package/src/components/data-display/Carousel/Carousel.types.ts +2 -0
  725. package/src/components/data-display/Chip/Chip.native.tsx +9 -1
  726. package/src/components/data-display/Chip/Chip.types.native.ts +2 -0
  727. package/src/components/data-display/LazyImage/LazyImage.hooks.ts +1 -1
  728. package/src/components/data-display/LazyImage/LazyImage.tsx +4 -4
  729. package/src/components/data-display/LazyImage/LazyImage.types.ts +12 -0
  730. package/src/components/data-display/MapPreview/MapControlBar.tsx +7 -3
  731. package/src/components/data-display/MapPreview/MapLayers.tsx +2 -2
  732. package/src/components/data-display/MapPreview/MapMarkers.tsx +13 -4
  733. package/src/components/data-display/MapPreview/MapPreview.helpers.ts +13 -2
  734. package/src/components/data-display/MapPreview/MapPreview.tsx +7 -3
  735. package/src/components/data-display/Stepper/Stepper.tsx +41 -7
  736. package/src/components/data-display/Stepper/Stepper.types.ts +4 -0
  737. package/src/components/data-display/Table/Table.helpers.ts +1 -0
  738. package/src/components/data-display/Table/Table.tsx +4 -5
  739. package/src/components/data-display/Table/Table.types.ts +12 -0
  740. package/src/components/data-display/Table/TableParts.hooks.tsx +8 -1
  741. package/src/components/data-display/Table/TableParts.tsx +19 -5
  742. package/src/components/data-display/Timeline/Timeline.tsx +6 -1
  743. package/src/components/data-display/Timeline/Timeline.types.ts +3 -0
  744. package/src/components/data-display/Timeline/TimelineRow.tsx +11 -4
  745. package/src/components/feedback/Dialog/Dialog.base.ts +10 -0
  746. package/src/components/feedback/Dialog/Dialog.native.tsx +2 -0
  747. package/src/components/feedback/Dialog/Dialog.tsx +5 -1
  748. package/src/components/feedback/Dialog/DialogParts.native.tsx +17 -3
  749. package/src/components/feedback/Sonner/Sonner.tsx +16 -6
  750. package/src/components/feedback/Sonner/SonnerToast.tsx +4 -2
  751. package/src/components/feedback/StackedModal/StackedModal.parts.tsx +24 -3
  752. package/src/components/feedback/StackedModal/StackedModal.tsx +2 -1
  753. package/src/components/feedback/StackedModal/StackedModal.types.ts +5 -0
  754. package/src/components/feedback/Toast/Toast.tsx +5 -2
  755. package/src/components/feedback/Toast/Toast.types.ts +5 -0
  756. package/src/components/feedback/TutorialOverlay/TutorialOverlay.tsx +3 -1
  757. package/src/components/feedback/TutorialOverlay/TutorialStepBody.tsx +12 -3
  758. package/src/components/form/AddressAutocomplete/AddressAutocomplete.helpers.ts +12 -6
  759. package/src/components/form/AddressAutocomplete/AddressAutocomplete.hooks.ts +15 -2
  760. package/src/components/form/AddressAutocomplete/AddressAutocomplete.tsx +1 -0
  761. package/src/components/form/AddressAutocomplete/AddressAutocompleteField.tsx +9 -3
  762. package/src/components/form/AddressAutocomplete/useAddressPredictions.ts +6 -3
  763. package/src/components/form/AddressAutocomplete/useAddressSelection.ts +8 -4
  764. package/src/components/form/AddressAutocomplete/useCurrentLocation.ts +12 -8
  765. package/src/components/form/AddressAutocomplete/useGoogleMapsAPI.ts +8 -4
  766. package/src/components/form/Button/Button.native.loading.tsx +11 -2
  767. package/src/components/form/Button/Button.native.tsx +2 -2
  768. package/src/components/form/Button/Button.types.native.ts +2 -0
  769. package/src/components/form/Checkbox/Checkbox.native.tsx +5 -2
  770. package/src/components/form/Checkbox/Checkbox.types.native.ts +2 -0
  771. package/src/components/form/Input/Input.native.tsx +13 -4
  772. package/src/components/form/Input/Input.types.native.ts +2 -0
  773. package/src/components/form/PhoneInput/PhoneInput.md +2 -2
  774. package/src/components/form/PhoneInput/PhoneInput.tsx +21 -10
  775. package/src/components/form/PhoneInput/PhoneInput.types.ts +1 -0
  776. package/src/components/form/PhoneInput/countries.ts +18 -1
  777. package/src/components/form/RichTextEditor/RichTextEditor.dom.ts +5 -3
  778. package/src/components/form/RichTextEditor/RichTextEditor.format.ts +3 -1
  779. package/src/components/form/RichTextEditor/RichTextEditor.hooks.ts +4 -1
  780. package/src/components/form/RichTextEditor/RichTextEditor.tsx +10 -4
  781. package/src/components/form/RichTextEditor/RichTextEditor.types.ts +7 -1
  782. package/src/components/form/RichTextEditor/RichTextEditorToolbar.tsx +29 -19
  783. package/src/components/form/Switch/Switch.native.tsx +4 -3
  784. package/src/components/form/Switch/Switch.types.native.ts +2 -0
  785. package/src/components/form/Textarea/TextareaRichEditor.tsx +2 -1
  786. package/src/components/form/UploadButton/UploadButton.hooks.ts +16 -6
  787. package/src/components/layout/ContentToolbar/ContentToolbar.types.ts +14 -0
  788. package/src/components/layout/ContentToolbar/FilterTrigger.tsx +10 -1
  789. package/src/components/layout/ContentToolbar/ViewSelector.tsx +15 -5
  790. package/src/components/layout/Dashboard/Dashboard.tsx +3 -1
  791. package/src/components/layout/Dashboard/Dashboard.types.ts +5 -0
  792. package/src/components/navigation/CommandPalette/CommandPalette.helpers.ts +6 -2
  793. package/src/components/navigation/CommandPalette/CommandPalette.hooks.ts +9 -1
  794. package/src/components/navigation/CommandPalette/CommandPalette.tsx +16 -6
  795. package/src/components/navigation/CommandPalette/CommandPaletteResults.tsx +3 -1
  796. package/src/components/navigation/NavigationMenu/NavigationMenu.shell.tsx +7 -4
  797. package/src/components/navigation/NavigationMenu/NavigationMenu.tsx +4 -0
  798. package/src/components/navigation/NavigationMenu/NavigationMenu.types.ts +13 -0
  799. package/src/components/navigation/NavigationMenu/NavigationMenuItem.tsx +2 -0
  800. package/src/components/navigation/NavigationMenu/NavigationStandardBody.tsx +24 -4
  801. package/src/components/typography/Code/Code.tsx +28 -6
  802. package/src/components/typography/Code/Code.types.ts +4 -0
  803. package/src/components/utility/WorkflowStep/WorkflowStep.helpers.ts +9 -1
  804. package/src/components/utility/WorkflowStep/WorkflowStep.parts.tsx +3 -2
  805. package/src/components/utility/WorkflowStep/WorkflowStep.tsx +3 -1
  806. package/src/components/utility/WorkflowStep/WorkflowStep.types.ts +10 -0
  807. package/src/components/utility/WorkflowStep/WorkflowStepRow.tsx +3 -0
  808. package/src/copy/data-display.ts +19 -0
  809. package/src/copy/feedback.ts +4 -0
  810. package/src/copy/form.ts +58 -0
  811. package/src/copy/labels.ts +120 -0
  812. package/src/copy/navigation.ts +12 -0
  813. package/src/copy/utility.ts +8 -1
  814. package/src/copy.ts +1 -0
  815. package/src/en-US.data-display.ts +9 -2
  816. package/src/en-US.feedback.ts +3 -1
  817. package/src/en-US.form.ts +27 -4
  818. package/src/en-US.labels.ts +76 -0
  819. package/src/en-US.navigation.ts +5 -1
  820. package/src/en-US.ts +1 -0
  821. package/src/en-US.utility.ts +3 -1
  822. package/src/locales.ts +4 -0
  823. package/src/pt-BR.data-display.ts +9 -2
  824. package/src/pt-BR.feedback.ts +3 -1
  825. package/src/pt-BR.form.ts +40 -4
  826. package/src/pt-BR.labels.ts +75 -0
  827. package/src/pt-BR.navigation.ts +5 -1
  828. package/src/pt-BR.ts +1 -0
  829. package/src/pt-BR.utility.ts +3 -1
  830. package/src/user-avatar/user-avatar.tsx +11 -2
  831. package/src/utils/resolve-labels.ts +12 -0
  832. package/dist/chunk-2ARVNCVU.js.map +0 -1
  833. package/dist/chunk-2ILXXBMG.js.map +0 -1
  834. package/dist/chunk-2TSGRQ2J.js.map +0 -1
  835. package/dist/chunk-33LAPBYB.js.map +0 -1
  836. package/dist/chunk-3JDP5OUR.js.map +0 -1
  837. package/dist/chunk-3VXS7O3X.js.map +0 -1
  838. package/dist/chunk-4MQ6XTIJ.js.map +0 -1
  839. package/dist/chunk-4NQXHPQR.js.map +0 -1
  840. package/dist/chunk-4VRDFZ4G.js.map +0 -1
  841. package/dist/chunk-5J7SA4CZ.js.map +0 -1
  842. package/dist/chunk-7QXEEZFO.js +0 -92
  843. package/dist/chunk-7QXEEZFO.js.map +0 -1
  844. package/dist/chunk-7SYYGXC7.js.map +0 -1
  845. package/dist/chunk-7VRCGWQL.js.map +0 -1
  846. package/dist/chunk-AYJ44VTJ.js.map +0 -1
  847. package/dist/chunk-AYP6ICAY.js.map +0 -1
  848. package/dist/chunk-B2JYQBO4.js.map +0 -1
  849. package/dist/chunk-BWZKLKDT.js +0 -1
  850. package/dist/chunk-C5JCARNE.js.map +0 -1
  851. package/dist/chunk-CZV6NVCA.js.map +0 -1
  852. package/dist/chunk-EUACQR6N.js.map +0 -1
  853. package/dist/chunk-FIOBPQL2.js.map +0 -1
  854. package/dist/chunk-FRGNTTPA.js.map +0 -1
  855. package/dist/chunk-FT6HBP5E.js.map +0 -1
  856. package/dist/chunk-HEBZ7Q7O.js.map +0 -1
  857. package/dist/chunk-HZK4DRGF.js.map +0 -1
  858. package/dist/chunk-ICRVLGWD.js.map +0 -1
  859. package/dist/chunk-INGPH3YQ.js.map +0 -1
  860. package/dist/chunk-JJVIZR6C.js.map +0 -1
  861. package/dist/chunk-KIL3OVLI.js.map +0 -1
  862. package/dist/chunk-KT3TF2LT.js.map +0 -1
  863. package/dist/chunk-KZXOIRUP.js.map +0 -1
  864. package/dist/chunk-LH4VKUZC.js.map +0 -1
  865. package/dist/chunk-LOLYI6PS.js.map +0 -1
  866. package/dist/chunk-LTTYUSJ2.js.map +0 -1
  867. package/dist/chunk-MA6SUE7F.js.map +0 -1
  868. package/dist/chunk-MTGEJRE4.js.map +0 -1
  869. package/dist/chunk-OE3SQOZV.js.map +0 -1
  870. package/dist/chunk-PU3HEWSG.js.map +0 -1
  871. package/dist/chunk-PY3RW5LC.js.map +0 -1
  872. package/dist/chunk-QWVETTIY.js.map +0 -1
  873. package/dist/chunk-RA6W37NZ.js.map +0 -1
  874. package/dist/chunk-RZCXYKY4.js.map +0 -1
  875. package/dist/chunk-SUZXPDUQ.js.map +0 -1
  876. package/dist/chunk-SV6IQ2YO.js.map +0 -1
  877. package/dist/chunk-T743IIER.js.map +0 -1
  878. package/dist/chunk-TTCVYY2B.js.map +0 -1
  879. package/dist/chunk-U4G3KY6L.js.map +0 -1
  880. package/dist/chunk-UGH2DDST.js.map +0 -1
  881. package/dist/chunk-UZOG6HNN.js.map +0 -1
  882. package/dist/chunk-VNOFFVRQ.js +0 -113
  883. package/dist/chunk-VNOFFVRQ.js.map +0 -1
  884. package/dist/chunk-VNVV6Y2X.js.map +0 -1
  885. package/dist/chunk-VQYR64QB.js.map +0 -1
  886. package/dist/chunk-VRPCZ3IE.js.map +0 -1
  887. package/dist/chunk-WC3W36AM.js.map +0 -1
  888. package/dist/chunk-WVZBYTIK.js.map +0 -1
  889. package/dist/chunk-XICRCPEQ.js.map +0 -1
  890. package/dist/chunk-XKSA4L2X.js.map +0 -1
  891. package/dist/chunk-XQWUVQ2F.js.map +0 -1
  892. package/dist/chunk-XYFBJH6F.js.map +0 -1
  893. package/dist/chunk-Y7YJYUNV.js.map +0 -1
  894. package/dist/chunk-YICNA5LG.js +0 -1
  895. package/dist/chunk-YLSDFW5O.js.map +0 -1
  896. package/dist/chunk-ZFBFQK2Y.js.map +0 -1
  897. package/dist/native/chunks/chunk-BXNZHDXK.js.map +0 -1
  898. /package/dist/{chunk-BWZKLKDT.js.map → _internal/copy/labels.js.map} +0 -0
  899. /package/dist/{chunk-YICNA5LG.js.map → _internal/en-US.labels.js.map} +0 -0
  900. /package/dist/{chunk-OPP6USJC.js.map → chunk-2FQF4CNE.js.map} +0 -0
  901. /package/dist/{chunk-BWFQEASG.js.map → chunk-2P5ZBBTL.js.map} +0 -0
  902. /package/dist/{chunk-QVO4SIS7.js.map → chunk-3W2B7IZG.js.map} +0 -0
  903. /package/dist/{chunk-PMRLFNBT.js.map → chunk-3XLSA3YB.js.map} +0 -0
  904. /package/dist/{chunk-7P5PNRBT.js.map → chunk-3YCV4EP7.js.map} +0 -0
  905. /package/dist/{chunk-Q6PRGXR2.js.map → chunk-4HBCWKIX.js.map} +0 -0
  906. /package/dist/{chunk-HN3PZTUK.js.map → chunk-4MKVGSHX.js.map} +0 -0
  907. /package/dist/{chunk-EERUSI52.js.map → chunk-4N3I7ZHQ.js.map} +0 -0
  908. /package/dist/{chunk-O6SAU5JA.js.map → chunk-4OTJ66ID.js.map} +0 -0
  909. /package/dist/{chunk-LG52LMAM.js.map → chunk-556LO6KA.js.map} +0 -0
  910. /package/dist/{chunk-LBZEPWYK.js.map → chunk-5GLOEGOM.js.map} +0 -0
  911. /package/dist/{chunk-JE6RZ5L6.js.map → chunk-5ZOJLYD2.js.map} +0 -0
  912. /package/dist/{chunk-GSXYXMCV.js.map → chunk-66BRUS2M.js.map} +0 -0
  913. /package/dist/{chunk-ALREWFRX.js.map → chunk-6DGNMASB.js.map} +0 -0
  914. /package/dist/{chunk-5752357K.js.map → chunk-6N2U67KF.js.map} +0 -0
  915. /package/dist/{chunk-VD72JGHA.js.map → chunk-73OYC22L.js.map} +0 -0
  916. /package/dist/{chunk-6DAIC2MG.js.map → chunk-775LIZXS.js.map} +0 -0
  917. /package/dist/{chunk-S4JXSC4D.js.map → chunk-7HZ6TJRH.js.map} +0 -0
  918. /package/dist/{chunk-CSD6SWBZ.js.map → chunk-A3Z7ZXLM.js.map} +0 -0
  919. /package/dist/{chunk-LI6XSM5D.js.map → chunk-A6V7KE45.js.map} +0 -0
  920. /package/dist/{chunk-YJBWDDW7.js.map → chunk-AAWVAQI2.js.map} +0 -0
  921. /package/dist/{chunk-44PBCQ7E.js.map → chunk-ABQZFK7M.js.map} +0 -0
  922. /package/dist/{chunk-EIMFA7KP.js.map → chunk-ANUO67JQ.js.map} +0 -0
  923. /package/dist/{chunk-PTQRJEPN.js.map → chunk-AOBQ3KYY.js.map} +0 -0
  924. /package/dist/{chunk-LODYTVOO.js.map → chunk-B25SHVWP.js.map} +0 -0
  925. /package/dist/{chunk-GTT5UKKO.js.map → chunk-BDJIP4HG.js.map} +0 -0
  926. /package/dist/{chunk-RS576GOH.js.map → chunk-BIUT3K6A.js.map} +0 -0
  927. /package/dist/{chunk-A5NXBOWS.js.map → chunk-BLHSLB5D.js.map} +0 -0
  928. /package/dist/{chunk-DYHOBKPU.js.map → chunk-BLZDSCIZ.js.map} +0 -0
  929. /package/dist/{chunk-E53MMMDA.js.map → chunk-BX6CF2UG.js.map} +0 -0
  930. /package/dist/{chunk-7HA7UH7O.js.map → chunk-C4OETF7K.js.map} +0 -0
  931. /package/dist/{chunk-64AOS2WA.js.map → chunk-CAHN7AMY.js.map} +0 -0
  932. /package/dist/{chunk-MSC43MCJ.js.map → chunk-CRFOAKQL.js.map} +0 -0
  933. /package/dist/{chunk-IQ2U5MVO.js.map → chunk-CSQWPDQV.js.map} +0 -0
  934. /package/dist/{chunk-7XSCEHGA.js.map → chunk-EOQ6EKTS.js.map} +0 -0
  935. /package/dist/{chunk-VEKTKCSB.js.map → chunk-FLJ3RIRP.js.map} +0 -0
  936. /package/dist/{chunk-Z5WUSI47.js.map → chunk-G3JFESKD.js.map} +0 -0
  937. /package/dist/{chunk-XRDH24J7.js.map → chunk-G6ET2DRL.js.map} +0 -0
  938. /package/dist/{chunk-O36MIQIO.js.map → chunk-GPQ22MPR.js.map} +0 -0
  939. /package/dist/{chunk-GRMBCJS6.js.map → chunk-H6R2L7VI.js.map} +0 -0
  940. /package/dist/{chunk-AMLHEKSV.js.map → chunk-HI7JPDD6.js.map} +0 -0
  941. /package/dist/{chunk-CW6Y32N2.js.map → chunk-I2CT4XIP.js.map} +0 -0
  942. /package/dist/{chunk-N34AOGK3.js.map → chunk-I3OKAQ5L.js.map} +0 -0
  943. /package/dist/{chunk-AEYLFBZT.js.map → chunk-I4NDZFTB.js.map} +0 -0
  944. /package/dist/{chunk-2ZRZTGWP.js.map → chunk-ISW5K72V.js.map} +0 -0
  945. /package/dist/{chunk-KARMRTTM.js.map → chunk-J2RUDZVJ.js.map} +0 -0
  946. /package/dist/{chunk-4M5GEKPM.js.map → chunk-JL4I7OQE.js.map} +0 -0
  947. /package/dist/{chunk-NBXG3SQ3.js.map → chunk-JSY234NY.js.map} +0 -0
  948. /package/dist/{chunk-HQCZT6TO.js.map → chunk-JVOEVTCZ.js.map} +0 -0
  949. /package/dist/{chunk-MBMZNSBP.js.map → chunk-JW7MN4DG.js.map} +0 -0
  950. /package/dist/{chunk-ZPACE34U.js.map → chunk-K53XSVQO.js.map} +0 -0
  951. /package/dist/{chunk-GBVNY2LG.js.map → chunk-KTXJQ4YJ.js.map} +0 -0
  952. /package/dist/{chunk-FCVPVEAS.js.map → chunk-KYE7I6NT.js.map} +0 -0
  953. /package/dist/{chunk-MM7BPTVV.js.map → chunk-KYT5G4K7.js.map} +0 -0
  954. /package/dist/{chunk-3V3Z4EML.js.map → chunk-L4FWEI2P.js.map} +0 -0
  955. /package/dist/{chunk-56JF5PZK.js.map → chunk-LYVTJLCF.js.map} +0 -0
  956. /package/dist/{chunk-M3DSPEZ3.js.map → chunk-M3ZNQTS5.js.map} +0 -0
  957. /package/dist/{chunk-GBKIGUNP.js.map → chunk-MGDCGNLC.js.map} +0 -0
  958. /package/dist/{chunk-BGYLL467.js.map → chunk-N3W6FZOC.js.map} +0 -0
  959. /package/dist/{chunk-BWFUZ4N2.js.map → chunk-NA3M7KDE.js.map} +0 -0
  960. /package/dist/{chunk-7JOLSD2W.js.map → chunk-P3QFJJJY.js.map} +0 -0
  961. /package/dist/{chunk-RCTHCXS6.js.map → chunk-PJNIJIE6.js.map} +0 -0
  962. /package/dist/{chunk-DXFKPY2K.js.map → chunk-PU3FQG7T.js.map} +0 -0
  963. /package/dist/{chunk-6ATXOJVQ.js.map → chunk-QADTI63U.js.map} +0 -0
  964. /package/dist/{chunk-7ZROYGUG.js.map → chunk-QOTMQLMW.js.map} +0 -0
  965. /package/dist/{chunk-NQCTANF3.js.map → chunk-QVDEGBME.js.map} +0 -0
  966. /package/dist/{chunk-YNDTLBOH.js.map → chunk-RQMYEPRR.js.map} +0 -0
  967. /package/dist/{chunk-3Z3WIQ5M.js.map → chunk-RZ3QMKM7.js.map} +0 -0
  968. /package/dist/{chunk-WA6F4NOO.js.map → chunk-SMANO5OD.js.map} +0 -0
  969. /package/dist/{chunk-5M2NWXN4.js.map → chunk-SRNBD6EV.js.map} +0 -0
  970. /package/dist/{chunk-NDGA7ZE6.js.map → chunk-TGMMUKOF.js.map} +0 -0
  971. /package/dist/{chunk-SB2SEGR6.js.map → chunk-TIM4PXWN.js.map} +0 -0
  972. /package/dist/{chunk-555TUQ7E.js.map → chunk-TPGFR24B.js.map} +0 -0
  973. /package/dist/{chunk-MHLYX6QW.js.map → chunk-TRAMTVIO.js.map} +0 -0
  974. /package/dist/{chunk-QO7UJXXO.js.map → chunk-TVMSXL3R.js.map} +0 -0
  975. /package/dist/{chunk-VEBNL5MG.js.map → chunk-UGYBN6OO.js.map} +0 -0
  976. /package/dist/{chunk-HHPJXK4Z.js.map → chunk-UHQZ5XPW.js.map} +0 -0
  977. /package/dist/{chunk-2QO3BKUQ.js.map → chunk-UJT6AQHL.js.map} +0 -0
  978. /package/dist/{chunk-FTDGFWB5.js.map → chunk-UK3DSFMK.js.map} +0 -0
  979. /package/dist/{chunk-NYWAAXDX.js.map → chunk-URAXAKUI.js.map} +0 -0
  980. /package/dist/{chunk-XODBYGTH.js.map → chunk-V37QIB7B.js.map} +0 -0
  981. /package/dist/{chunk-7K23NEZO.js.map → chunk-V45JGJ3W.js.map} +0 -0
  982. /package/dist/{chunk-2MYSXWZQ.js.map → chunk-VKTF3GAP.js.map} +0 -0
  983. /package/dist/{chunk-MNZ6MCOK.js.map → chunk-VQ6UB4MN.js.map} +0 -0
  984. /package/dist/{chunk-4HUSG5MR.js.map → chunk-VZVAP2ZR.js.map} +0 -0
  985. /package/dist/{chunk-4XBAEKQQ.js.map → chunk-W2RXXF7K.js.map} +0 -0
  986. /package/dist/{chunk-A2YLFKQU.js.map → chunk-W5WYTVLS.js.map} +0 -0
  987. /package/dist/{chunk-RHKQ2RSY.js.map → chunk-WUW6NDXC.js.map} +0 -0
  988. /package/dist/{chunk-EBCEDBHX.js.map → chunk-XDDKRACZ.js.map} +0 -0
  989. /package/dist/{chunk-ASZGMKB4.js.map → chunk-Y3TD7HOY.js.map} +0 -0
  990. /package/dist/{chunk-HBHBRRSW.js.map → chunk-YBAK2WN5.js.map} +0 -0
  991. /package/dist/{chunk-6RTE4UNO.js.map → chunk-YV4O7KDR.js.map} +0 -0
  992. /package/dist/{chunk-Z5V5E3JW.js.map → chunk-ZIHSCBMN.js.map} +0 -0
  993. /package/dist/native/chunks/{chunk-AVHGS66L.js.map → chunk-FGAX5BRS.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Table/Table.tsx"],"sourcesContent":["import MoreVertIcon from '@mui/icons-material/MoreVert';\nimport Box from '@mui/material/Box/index.js';\nimport FormControlLabel from '@mui/material/FormControlLabel/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Menu from '@mui/material/Menu/index.js';\nimport MenuItem from '@mui/material/MenuItem/index.js';\nimport Skeleton from '@mui/material/Skeleton/index.js';\nimport Switch from '@mui/material/Switch/index.js';\nimport MuiTable from '@mui/material/Table/index.js';\nimport TableBody from '@mui/material/TableBody/index.js';\nimport TableCell from '@mui/material/TableCell/index.js';\nimport TableContainer from '@mui/material/TableContainer/index.js';\nimport TableRow from '@mui/material/TableRow/index.js';\nimport { styled, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport type {\n ColumnConfig,\n TableDensity,\n TableProps,\n TableStripeColor} from './Table.types';\nimport {\n TABLE_DEFAULTS,\n containerStyle,\n definedProps,\n headerRefFor,\n resolveTableDensity,\n scrollerRadiusStyle,\n tableDomProps,\n tableRowHeight,\n virtualHeight,\n} from './Table.helpers';\nimport { useTableSelection, useVirtualScrolling } from './Table.hooks';\nimport { EnhancedTableBody, EnhancedTableHeader } from './TableParts';\nimport { EmptyRow, NoDataPlaceholder } from './TableStates';\nimport { tableStyles } from './Table.styles';\nimport { rem } from '../../../tokens/relative';\n\n// Helper function to get stripe color from theme\nconst StyledTable = styled(MuiTable, {\n shouldForwardProp: (prop) =>\n !['customVariant', 'glow', 'pulse', 'hoverable', 'density', 'stickyHeader', 'stripeColor', 'virtualised'].includes(prop as string) })<{\n customVariant?: string;\n glow?: boolean;\n pulse?: boolean;\n hoverable?: boolean;\n density?: TableDensity;\n stickyHeader?: boolean;\n stripeColor?: TableStripeColor;\n virtualised?: boolean;\n}>(({ theme, customVariant, glow, pulse, hoverable, density, stickyHeader, stripeColor = 'neutral', virtualised }) => {\n return tableStyles({\n theme,\n customVariant,\n glow,\n pulse,\n hoverable,\n density,\n stickyHeader,\n stripeColor,\n virtualised });\n});\n\n// Virtual Scrolling Hook\nconst TableShell: React.FC<{\n innerRef: React.Ref<globalThis.HTMLTableElement>;\n variant?: string;\n stripeColor?: TableStripeColor;\n glow?: boolean;\n pulse?: boolean;\n hoverable?: boolean;\n density?: TableDensity;\n stickyHeader?: boolean;\n header: React.ReactNode;\n rest: Record<string, unknown>;\n children: React.ReactNode;\n}> = ({\n innerRef,\n variant,\n stripeColor,\n glow,\n pulse,\n hoverable,\n density,\n stickyHeader,\n header,\n rest,\n children }) => (\n // The loading and empty shells are not scrollers (no `containerHeight`), so\n // they get only the rounded clip `stickyHeader` moves off the `<table>`,\n // never a height (FUT-2677).\n <TableContainer style={scrollerRadiusStyle(useTheme(), stickyHeader)}>\n <StyledTable\n ref={innerRef}\n customVariant={variant}\n stripeColor={stripeColor}\n glow={glow}\n pulse={pulse}\n hoverable={hoverable}\n density={density}\n stickyHeader={stickyHeader}\n {...rest}\n >\n {header}\n {children}\n </StyledTable>\n </TableContainer>\n);\n\nconst SKELETON_ROW_COUNT = 5;\n\nconst LoadingSkeletonRows: React.FC<{ columns?: ColumnConfig[] }> = ({ columns }) => {\n const theme = useTheme();\n return (\n <>\n {Array.from({ length: SKELETON_ROW_COUNT }, (_, index) => (\n <TableRow key={index}>\n {columns?.map((column) => (\n <TableCell key={column.key}>\n <Skeleton height={rem(theme, 20)} />\n </TableCell>\n ))}\n </TableRow>\n ))}\n </>\n );\n};\n\nexport type TableShellProps = Omit<React.ComponentProps<typeof TableShell>, 'children'>;\n\ntype Selection = ReturnType<typeof useTableSelection>;\n\ninterface RendererProps {\n resolved: TableProps;\n selection: Selection;\n innerRef: React.Ref<globalThis.HTMLTableElement>;\n rest: Record<string, unknown>;\n}\n\n// The column-visibility control, shown only when responsive mode has actually\n// hidden something on a narrow viewport.\nconst ColumnToggleMenu: React.FC<{\n columns: ColumnConfig[];\n hiddenColumns: number[];\n anchor: HTMLElement | null;\n setAnchor: (element: HTMLElement | null) => void;\n setHiddenColumns: (next: number[]) => void;\n}> = ({ columns, hiddenColumns, anchor, setAnchor, setHiddenColumns }) => (\n <Box position=\"absolute\" top={8} right={8}>\n <IconButton onClick={(event) => setAnchor(event.currentTarget)} size=\"small\">\n <MoreVertIcon />\n </IconButton>\n <Menu anchorEl={anchor} open={Boolean(anchor)} onClose={() => setAnchor(null)}>\n {columns.map((column, index) => (\n <MenuItem key={column.key}>\n <FormControlLabel\n control={\n <Switch\n checked={!hiddenColumns.includes(index)}\n onChange={(event) =>\n setHiddenColumns(\n event.target.checked\n ? hiddenColumns.filter((i: number) => i !== index)\n : [...hiddenColumns, index],\n )\n }\n size=\"small\"\n />\n }\n label={column.label}\n />\n </MenuItem>\n ))}\n </Menu>\n </Box>\n);\n\n// The populated table. Local because StyledTable cannot cross a module\n// boundary (TS2742).\nconst columnsFor = (resolved: TableProps, selection: Selection): ColumnConfig[] =>\n (resolved.responsive ? selection.visibleColumns : resolved.columns) ?? [];\n\n// The toggle only earns its place when responsive mode has actually hidden\n// something on a narrow viewport.\nconst showsColumnToggle = (resolved: TableProps, selection: Selection): boolean =>\n Boolean(\n resolved.responsive &&\n selection.isMobile &&\n resolved.showColumnToggle &&\n selection.hiddenColumns.length > 0,\n );\n\n// The virtual window lives here, with the one scroller whose offset drives it;\n// the header's ref lets it subtract the height the `<thead>` pushes the body down.\nconst AdvancedTable: React.FC<RendererProps> = ({ resolved: p, selection, innerRef, rest }) => {\n const theme = useTheme();\n const finalColumns = columnsFor(p, selection);\n const showToggle = showsColumnToggle(p, selection);\n const headRef = React.useRef<globalThis.HTMLTableSectionElement>(null);\n const windowHeight = virtualHeight(p);\n const { visibleItems, handleScroll } = useVirtualScrolling(\n p.data ?? [],\n tableRowHeight(p.rowHeight) || 40,\n windowHeight ?? 400,\n p.overscan,\n headerRefFor(windowHeight, headRef),\n );\n\n return (\n <Box position=\"relative\">\n <TableContainer\n style={containerStyle(theme, p)}\n onScroll={windowHeight ? handleScroll : undefined}\n >\n <StyledTable\n ref={innerRef}\n customVariant={p.variant}\n stripeColor={p.stripeColor}\n glow={p.glow}\n pulse={p.pulse}\n hoverable={p.hoverable}\n density={p.density}\n stickyHeader={p.stickyHeader}\n virtualised={Boolean(windowHeight)}\n {...rest}\n >\n <EnhancedTableHeader\n columns={finalColumns}\n data={p.data ?? []}\n sortable={p.sortable}\n sortConfig={p.sortConfig}\n onSortChange={p.onSortChange}\n selectable={p.selectable}\n selectedRows={p.selectedRows}\n onSelectAll={selection.handleSelectAll}\n density={p.density}\n stickyHeader={p.stickyHeader}\n headRef={headRef}\n />\n <EnhancedTableBody\n data={p.data ?? []}\n columns={finalColumns}\n selectedRows={p.selectedRows}\n onRowClick={p.onRowClick}\n onRowFocus={p.onRowFocus}\n onRowBlur={p.onRowBlur}\n onSelectionChange={selection.handleSelectionChange}\n rowKeyExtractor={p.rowKeyExtractor}\n density={p.density}\n selectable={p.selectable}\n hoverable={p.hoverable}\n renderRow={p.renderRow}\n renderCell={p.renderCell}\n virtualWindow={windowHeight ? visibleItems : undefined}\n rowHeight={p.rowHeight}\n />\n </StyledTable>\n </TableContainer>\n\n {showToggle && (\n <ColumnToggleMenu\n columns={p.columns ?? []}\n hiddenColumns={selection.hiddenColumns}\n anchor={selection.columnMenuAnchor}\n setAnchor={selection.setColumnMenuAnchor}\n setHiddenColumns={selection.setHiddenColumns}\n />\n )}\n </Box>\n );\n};\n\n// The loading and empty states render the same shell as the populated table, so\n// they share TableShell rather than repeating it three times.\nconst buildShell = ({\n resolved,\n selection,\n innerRef,\n rest,\n finalColumns }: RendererProps & { finalColumns?: ColumnConfig[] }) => ({\n innerRef,\n variant: resolved.variant,\n stripeColor: resolved.stripeColor,\n glow: resolved.glow,\n pulse: resolved.pulse,\n hoverable: resolved.hoverable,\n density: resolved.density,\n stickyHeader: resolved.stickyHeader,\n header: resolved.columns ? (\n <EnhancedTableHeader\n columns={finalColumns ?? []}\n data={[]}\n sortable={resolved.sortable}\n sortConfig={resolved.sortConfig}\n onSortChange={resolved.onSortChange}\n selectable={resolved.selectable}\n selectedRows={resolved.selectedRows}\n onSelectAll={selection.handleSelectAll}\n density={resolved.density}\n stickyHeader={resolved.stickyHeader}\n />\n ) : null,\n rest: rest as Record<string, unknown> });\n\nconst TableLoadingState: React.FC<{\n shell: TableShellProps;\n loadingComponent?: React.ReactNode;\n columns?: ColumnConfig[];\n}> = ({ shell, loadingComponent, columns }) => (\n <TableShell {...shell}>\n <TableBody data-testid=\"table-loading\">\n {loadingComponent || <LoadingSkeletonRows columns={columns} />}\n </TableBody>\n </TableShell>\n);\n\nconst TableEmptyState: React.FC<{\n shell: TableShellProps;\n emptyStateComponent?: React.ReactNode;\n emptyText: string;\n colSpan: number;\n}> = ({ shell, emptyStateComponent, emptyText, colSpan }) => (\n <TableShell {...shell}>\n <EmptyRow colSpan={colSpan}>\n {emptyStateComponent || <NoDataPlaceholder emptyText={emptyText} />}\n </EmptyRow>\n </TableShell>\n);\n\nexport const Table = React.forwardRef<globalThis.HTMLTableElement, TableProps>(\n (tableProps, ref) => {\n const resolved = { ...TABLE_DEFAULTS, ...definedProps(tableProps) } as TableProps;\n // Never from the theme (FUT-2886) — see `resolveTableDensity`.\n resolved.density = resolveTableDensity(resolved.density);\n const {\n columns,\n data,\n responsive,\n loading,\n loadingComponent,\n emptyStateComponent,\n emptyText,\n children,\n } = resolved;\n\n const selection = useTableSelection({\n columns,\n data,\n responsive,\n columnPriorities: resolved.columnPriorities,\n selectedRows: resolved.selectedRows ?? [],\n rowKeyExtractor: resolved.rowKeyExtractor,\n onSelectionChange: resolved.onSelectionChange });\n\n // Only MUI's and the DOM's own props reach the `<table>` (FUT-2658).\n const rest = tableDomProps(tableProps);\n const renderer: RendererProps = { resolved, selection, innerRef: ref, rest };\n const finalColumns = responsive ? selection.visibleColumns : columns;\n const shell = buildShell({ ...renderer, finalColumns });\n\n if (loading) {\n return (\n <TableLoadingState shell={shell} loadingComponent={loadingComponent} columns={columns} />\n );\n }\n\n if (data && data.length === 0) {\n return (\n <TableEmptyState\n shell={shell}\n emptyStateComponent={emptyStateComponent}\n emptyText={emptyText}\n colSpan={finalColumns?.length || 1}\n />\n );\n }\n\n if (columns && data) return <AdvancedTable {...renderer} />;\n\n // Basic table (backward compatibility)\n return (\n <StyledTable\n ref={ref}\n customVariant={resolved.variant}\n stripeColor={resolved.stripeColor}\n glow={resolved.glow}\n pulse={resolved.pulse}\n hoverable={resolved.hoverable}\n density={resolved.density}\n stickyHeader={resolved.stickyHeader}\n {...rest}\n >\n {children}\n </StyledTable>\n );\n },\n);\n\nTable.displayName = 'Table';"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/RichTextEditor/RichTextEditor.hooks.ts"],"sourcesContent":["import DOMPurify from 'dompurify';\nimport type React from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { applyFormatToRange } from './RichTextEditor.format';\n\n// Deliberately narrow: anything not listed is stripped, and no data-* attributes\n// survive, so pasted markup cannot smuggle in behaviour.\nconst SANITIZE_CONFIG = {\n ALLOWED_TAGS: [\n 'p', 'br', 'strong', 'em', 'u', 's', 'a', 'img', 'ul', 'ol', 'li',\n 'blockquote', 'pre', 'code', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span', 'div',\n ],\n ALLOWED_ATTR: ['href', 'src', 'alt', 'target', 'rel', 'style', 'class'],\n ALLOW_DATA_ATTR: false,\n KEEP_CONTENT: true,\n};\n\n// The one way editor html reaches the DOM. Both writes (the render-path effect\n// and the over-limit restore) use it, so they cannot drift to different configs.\nconst sanitize = (html: string): string => DOMPurify.sanitize(html, SANITIZE_CONFIG);\n\n// INVARIANT: only ever pass SANITISED html here. Assigning innerHTML to a\n// detached element still fetches `<img src>` and fires its `onerror`, so raw\n// markup would execute. Its one caller passes `sanitizedContent`.\nconst textLengthOf = (html: string): number => {\n const probe = document.createElement('div');\n probe.innerHTML = html;\n return probe.textContent?.length || 0;\n};\n\n// The editable content and the limit that guards it.\nconst useEditorContent = ({\n editorRef,\n value,\n onChange,\n maxLength,\n}: {\n editorRef: React.RefObject<HTMLDivElement | null>;\n value?: string;\n onChange?: (value: string) => void;\n maxLength?: number;\n}) => {\n // `content` holds UNSANITISED html: the caller's raw `value` (read once, at\n // mount) until the first accepted input, and the editor's raw live innerHTML\n // after it. Every write of it to the DOM must go through `sanitize` below.\n // INVARIANT: if syncing a later `value` is ever added, the new value reaches\n // the DOM through the same sanitiser, never by a direct innerHTML write.\n const [content, setContent] = useState(value ?? '');\n\n const handleContentChange = useCallback(() => {\n if (!editorRef.current) return;\n\n const newContent = editorRef.current.innerHTML;\n\n // Over the limit, put the last accepted content back rather than truncating\n // mid-markup. `content` may be the caller's raw `value`, so the restore is\n // sanitised exactly as the render path is: writing it raw ran an `onerror`\n // handler carried in `value` (FUT-2685).\n if (maxLength && (editorRef.current.textContent || '').length > maxLength) {\n editorRef.current.innerHTML = sanitize(content);\n return;\n }\n\n // Emitting the live DOM is safe only because nothing but `sanitize()` ever\n // writes it: the editor renders empty and the effect below fills it. Give\n // the first render its own markup and this must emit `sanitize(newContent)`.\n setContent(newContent);\n onChange?.(newContent);\n }, [maxLength, onChange, content, editorRef]);\n\n return { content, handleContentChange };\n};\n\nconst useFocusState = ({ onFocus, onBlur }: { onFocus?: () => void; onBlur?: () => void }) => {\n const [isFocused, setIsFocused] = useState(false);\n\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n onFocus?.();\n }, [onFocus]);\n\n const handleBlur = useCallback(() => {\n setIsFocused(false);\n onBlur?.();\n }, [onBlur]);\n\n return { isFocused, handleFocus, handleBlur };\n};\n\nexport const useRichTextEditor = ({\n value,\n onChange,\n onFocus,\n onBlur,\n disabled,\n readOnly,\n maxLength,\n}: {\n value?: string;\n onChange?: (value: string) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n disabled?: boolean;\n readOnly?: boolean;\n maxLength?: number;\n}) => {\n const editorRef = useRef<HTMLDivElement>(null);\n const { content, handleContentChange } = useEditorContent({\n editorRef,\n value,\n onChange,\n maxLength,\n });\n const { isFocused, handleFocus, handleBlur } = useFocusState({ onFocus, onBlur });\n\n const applyFormat = useCallback(\n (formatType: string, formatValue?: string) => {\n if (disabled || readOnly || !editorRef.current) return;\n\n const selection = window.getSelection();\n // Nothing selected: give the editor focus so the next keystroke lands.\n if (!selection || selection.rangeCount === 0) {\n editorRef.current.focus();\n return;\n }\n\n applyFormatToRange({\n formatType,\n value: formatValue,\n range: selection.getRangeAt(0),\n editor: editorRef.current,\n });\n\n handleContentChange();\n editorRef.current.focus();\n },\n [disabled, readOnly, handleContentChange],\n );\n\n const sanitizedContent = sanitize(content);\n\n // Reflect the sanitized result back when it differs from what is on screen.\n useEffect(() => {\n if (editorRef.current && editorRef.current.innerHTML !== sanitizedContent) {\n editorRef.current.innerHTML = sanitizedContent;\n }\n }, [sanitizedContent]);\n\n return {\n editorRef,\n isFocused,\n characterCount: textLengthOf(sanitizedContent),\n handleContentChange,\n handleFocus,\n handleBlur,\n applyFormat,\n };\n};\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/pt-BR.data-display.ts"],"sourcesContent":["/**\n * The pt-BR pack for the data-display family. Split out of `pt-BR.ts`, which is a\n * barrel over this folder — see that file for why.\n */\nimport type { DataViewsCopy } from \"./components/data-display/DataViews/data-views-copy\";\nimport type {\n CarouselCopy,\n DataGridCopy,\n DataStateCopy,\n LightboxCopy,\n MapPreviewCopy,\n TimingDiagramCopy,\n} from './copy';\nimport { PT_BR_TABLE_FILTER_COPY } from './pt-BR.layout';\nimport {\n PT_BR_CATEGORY_SELECT_COPY,\n PT_BR_CONFIRM_ACTION_COPY,\n PT_BR_SAVED_VIEWS_LABELS,\n} from './pt-BR.shared';\n\nexport const PT_BR_LIGHTBOX_COPY: LightboxCopy = {\n close: \"Fechar\",\n previous: \"Anterior\",\n next: \"Próximo\",\n zoomIn: \"Aproximar\",\n zoomOut: \"Afastar\",\n resetZoom: \"Restaurar o zoom\",\n play: \"Iniciar a apresentação\",\n pause: \"Pausar a apresentação\",\n dialogLabel: \"Galeria de imagens\",\n itemPosition: (index, total) => `Item ${index} de ${total}`,\n videoFallback: (index, total) => `Vídeo ${index} de ${total}`,\n imageFallback: (index, total) => `Imagem ${index} de ${total}`,\n thumbnailFallback: (index) => `Miniatura ${index}`,\n};\n\nexport const PT_BR_DATA_GRID_COPY: DataGridCopy = {\n sortBy: (header) => `Ordenar por ${header}`,\n selectRow: (rowNumber) => `Selecionar linha ${rowNumber}`,\n selectAllRows: \"Selecionar todas as linhas\",\n expandRow: \"Expandir linha\",\n collapseRow: \"Recolher linha\",\n gridLabel: \"Grade de dados\",\n};\n\nexport const PT_BR_MAP_PREVIEW_COPY: MapPreviewCopy = {\n zoomIn: \"Aproximar\",\n zoomOut: \"Afastar\",\n center: \"Centralizar o mapa\",\n mapType: \"Trocar o tipo de mapa\",\n fullscreen: \"Tela cheia\",\n search: \"Buscar endereço\",\n};\n\nexport const PT_BR_CAROUSEL_COPY: CarouselCopy = {\n previous: \"Anterior\",\n next: \"Próximo\",\n};\n\nexport const PT_BR_TIMING_DIAGRAM_COPY: TimingDiagramCopy = {\n regionLabel: \"Diagrama de tempos\",\n heading: \"Tempo da requisição\",\n dns: \"Busca de DNS\",\n connect: \"Conexão\",\n ssl: \"SSL/TLS\",\n request: \"Requisição\",\n response: \"Resposta\",\n total: (formatted) => `Total: ${formatted}`,\n totalTime: (formatted) => `Tempo total: ${formatted}`,\n};\n\nexport const PT_BR_DATA_STATE_COPY: DataStateCopy = {\n empty: \"Nenhum dado por aqui\",\n loading: \"Carregando…\",\n endOfList: \"Não há mais itens para carregar\",\n dismissAlert: \"Fechar o aviso\",\n dismissBanner: \"Fechar a faixa\",\n};\n\nexport const PT_BR_DATA_VIEWS_COPY: DataViewsCopy = {\n savedViewsMenu: PT_BR_SAVED_VIEWS_LABELS,\n confirmAction: PT_BR_CONFIRM_ACTION_COPY,\n categorySelect: PT_BR_CATEGORY_SELECT_COPY,\n board: {\n countOnPage: (label, count) => `${label}: ${count} nesta página`,\n onThisPage: (count) => `${count} nesta página`,\n pageSum: (sum) => `Soma desta página: ${sum}`,\n emptyColumn: \"Nada nesta etapa\",\n pageScopeNote:\n \"As contagens e somas abaixo referem-se apenas aos itens desta página.\",\n },\n deleteView: {\n title: \"Excluir visão\",\n target: (viewName) => `Excluir \"${viewName}\"?`,\n sharedWarning: \"Esta visão está compartilhada — a equipe perderá o acesso a ela.\",\n rowsUnaffected: (entityLabel) =>\n `${entityLabel} não são afetados; apenas o recorte salvo é removido.`,\n confirm: \"Excluir visão\",\n cancel: \"Cancelar\",\n },\n manageViews: {\n title: \"Gerenciar visões\",\n empty: \"Nenhuma visão salva.\",\n edit: \"Editar\",\n defaultTag: \"Padrão\",\n otherUserTag: \"De outro usuário\",\n deleteTitle: \"Excluir a visão salva?\",\n deleteBody: \"Os filtros e colunas guardados nela são perdidos. Não é possível restaurar.\",\n deleteConfirm: \"Excluir\",\n },\n saveView: {\n sharedDescription: \"Qualquer pessoa da loja poderá abrir e usar esta visão.\",\n setDefaultTitle: \"Definir como padrão\",\n setDefaultDescription: \"Esta tela abre nesta visão em vez da Visão principal.\",\n previewHeading: \"O que esta visão guarda\",\n previewUnchanged: \"Nada foi alterado — esta visão ficará igual à Visão principal.\",\n sortRowLabel: \"Ordenação\",\n saveFailed: \"Não foi possível salvar a visão.\",\n titleEditing: \"Editar visão\",\n titleCreating: \"Salvar visão\",\n descriptionLabel: \"Descrição — opcional\",\n descriptionPlaceholder: \"Para que serve esta visão\",\n submitEditing: \"Salvar alterações\",\n submitCreating: \"Salvar visão\",\n nameLabel: \"Nome\",\n cancel: \"Cancelar\",\n pinnedTitle: \"Fixar na barra lateral\",\n pinnedDescription: \"Aparece como atalho no menu, abaixo desta tela.\",\n sharedTitle: \"Compartilhar com a equipe\",\n namePlaceholder: \"Ex.: Recusados no PIX desta semana\",\n previewFilters: \"Filtros\",\n previewHiddenColumns: \"Colunas ocultas\",\n },\n columns: {\n visibleCount: (visible, total) => `${visible} de ${total} visíveis`,\n reset: \"Padrão\",\n showAll: \"Mostrar todas\",\n dragHint: \"Arraste para reordenar as colunas.\",\n moveUp: (columnLabel) => `Mover ${columnLabel} para cima`,\n moveDown: (columnLabel) => `Mover ${columnLabel} para baixo`,\n },\n display: {\n sortTab: \"Ordenar\",\n columnsTab: \"Colunas\",\n panelTab: \"Exibição\",\n direction: \"Direção\",\n layoutHints: {\n table: \"Colunas comparáveis, boa para varrer números.\",\n list: \"Uma linha por item, com os dados principais.\",\n cards: \"Blocos maiores, bom para poucos itens.\",\n board: \"Colunas por etapa, para acompanhar o que está onde.\",\n },\n densityHeadings: {\n table: \"Altura das linhas\",\n list: \"Altura das linhas\",\n cards: \"Cards por linha\",\n board: \"Largura das colunas\",\n },\n densityLabels: {\n table: { compact: \"Baixa\", cozy: \"Média\", comfortable: \"Alta\" },\n list: { compact: \"Baixa\", cozy: \"Média\", comfortable: \"Alta\" },\n cards: { compact: \"Muitos\", cozy: \"Médio\", comfortable: \"Poucos\" },\n board: { compact: \"Estreita\", cozy: \"Média\", comfortable: \"Larga\" },\n },\n boardUnavailable: \"Esta tela não declara etapas, então não oferece quadro.\",\n densityUnavailableNarrow:\n \"Um card por linha nesta largura — a densidade volta em telas maiores.\",\n trigger: \"Exibir\",\n fieldHeading: \"Campo\",\n formatHeading: \"Formato\",\n cardZoom: \"Tamanho dos cards\",\n },\n export: {\n formats: {\n json: { label: \"JSON (.json)\", hint: \"Para integrações\" },\n },\n scopeLine: (selectedCount, totalCount) =>\n selectedCount > 0\n ? `Exportando ${selectedCount} ${selectedCount === 1 ? \"item selecionado\" : \"itens selecionados\"}`\n : `Exportando ${totalCount} ${totalCount === 1 ? \"item filtrado\" : \"itens filtrados\"}`,\n visibleColumns: (columnCount) => `${columnCount} colunas visíveis, na ordem atual`,\n trigger: \"Exportar\",\n triggerLabel: \"Exportar\",\n },\n tableFilter: PT_BR_TABLE_FILTER_COPY,\n grid: {\n ...PT_BR_DATA_GRID_COPY,\n rowActions: \"Ações\",\n bulkActions: (selectedCount) => `Ações (${selectedCount}) ▾`,\n emptyFilteredTitle: \"Nenhum resultado para esses filtros\",\n emptyFilteredHint: \"Ajuste ou remova os filtros.\",\n emptyFilteredAction: \"Limpar filtros\",\n },\n filters: {\n moreFilters: (count) => `Mais filtros: ${count} sem espaço na barra`,\n moreFiltersApplied: (count, appliedCount) =>\n `Mais filtros: ${count} sem espaço na barra, ${appliedCount} aplicado(s)`,\n moreTriggerLabel: \"Mais\",\n moreHeading: \"Mais filtros\",\n overflowNote: \"sem espaço na barra\",\n rangeEnd: \"Até\",\n rangeInvalid: \"O início precisa ser menor que o fim.\",\n rangeInclusiveNote: \"Ambas as datas entram no resultado.\",\n rangeStart: \"De\",\n dayMask: \"dd/mm/aaaa\",\n clearAllFilters: \"Limpar todos os filtros\",\n rangePresets: {\n hoje: \"Hoje\",\n ontem: \"Ontem\",\n semana: \"Esta semana\",\n mes: \"Este mês\",\n ano: \"Este ano\",\n },\n scopesLabel: \"Situação\",\n panelTitle: \"Filtros\",\n clear: \"Limpar\",\n clearAll: \"Limpar filtros\",\n clearRange: (label) => `Limpar ${label}`,\n allOption: \"Todas\",\n optionSearchPlaceholder: \"Buscar…\",\n optionsEmpty: \"Nenhum resultado\",\n optionsHeading: \"Opções\",\n },\n selection: {\n selectAllOnPage: \"Selecionar todos nesta página\",\n clearSelection: \"Limpar seleção\",\n selectAll: \"Selecionar tudo\",\n onThisPage: (count) => `${count} nesta página`,\n selectedCount: (count) => `${count} ${count === 1 ? \"selecionado\" : \"selecionados\"}`,\n selectRow: \"Selecionar\",\n expandRow: \"Expandir detalhes\",\n collapseRow: \"Recolher detalhes\",\n },\n nav: {\n mainView: \"Visão principal\",\n defaultTag: \"Padrão\",\n viewOptions: (viewName) => `Opções de ${viewName}`,\n emptyHint: \"Nenhuma visão salva. Ajuste filtros, colunas ou ordenação e salve abaixo.\",\n setDefault: \"Definir como padrão\",\n deleteView: \"Excluir visão\",\n unsavedChanges: \"Alterações não salvas\",\n label: \"Visão\",\n update: \"Atualizar visão\",\n save: \"Salvar visão\",\n saveAs: \"Salvar como nova\",\n reset: \"Redefinir\",\n updateFailed: \"Não foi possível atualizar a visão\",\n dismissError: \"Fechar o aviso\",\n goBack: \"Voltar\",\n pageSize: \"Mostrar:\",\n saveFailed: \"Não foi possível salvar a alteração da visão.\",\n editView: \"Renomear e editar\",\n pinToSidebar: \"Fixar na barra lateral\",\n shareWithTeam: \"Compartilhar com a equipe\",\n },\n search: {\n placeholder: \"Buscar…\",\n allColumnsLabel: \"Buscar em todas as colunas\",\n keywordPlaceholder: \"Pressione Enter para filtrar\",\n open: \"Buscar\",\n close: \"Fechar busca\",\n clear: \"Limpar busca\",\n },\n};\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Carousel/Carousel.parts.tsx"],"sourcesContent":["import ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos';\nimport ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';\nimport FiberManualRecordIcon from '@mui/icons-material/FiberManualRecord';\nimport Box from '@mui/material/Box/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, useTheme } from '@mui/material/styles/index.js';\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { withDefaults } from '../../../utils/withDefaults';\n\nimport { neutralTones } from '../../../tokens/ink';\nimport { accentFor, muiSize, rem } from '../../../tokens/scales';\n\nimport type {\n CarouselArrowsProps,\n CarouselIndicatorsProps,\n CarouselItem,\n CarouselThumbnailsProps,\n} from './Carousel.types';\n\ntype IndicatorPosition = NonNullable<CarouselIndicatorsProps['position']>;\ntype IndicatorVariant = NonNullable<CarouselIndicatorsProps['variant']>;\ntype Color = NonNullable<CarouselIndicatorsProps['color']>;\n\n/** Fires `onSelect` for the keys a native button would treat as activation. */\nconst activateOnKey = (onSelect: () => void) => (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSelect();\n }\n};\n\nconst INDICATOR_POSITIONS = (theme: Theme): Record<IndicatorPosition, CSSObject> => ({\n top: { top: theme.spacing(2), left: '50%', transform: 'translateX(-50%)' },\n bottom: { bottom: theme.spacing(2), left: '50%', transform: 'translateX(-50%)' },\n left: {\n left: theme.spacing(2),\n top: '50%',\n transform: 'translateY(-50%)',\n flexDirection: 'column',\n },\n right: {\n right: theme.spacing(2),\n top: '50%',\n transform: 'translateY(-50%)',\n flexDirection: 'column',\n },\n});\n\ninterface IndicatorProps {\n index: number;\n isActive: boolean;\n color: Color;\n onSelect: () => void;\n}\n\n/** Attributes every indicator variant carries, whatever it draws. */\nconst indicatorAttrs = (index: number, isActive: boolean) => ({\n 'aria-label': `Go to slide ${index + 1}`,\n 'data-testid': `carousel-indicator-${index}`,\n 'data-active': isActive,\n});\n\nconst LineIndicator: React.FC<IndicatorProps> = ({ index, isActive, color, onSelect }) => {\n const theme = useTheme();\n\n return (\n <Box\n role=\"button\"\n tabIndex={0}\n {...indicatorAttrs(index, isActive)}\n sx={{\n width: rem(theme, isActive ? 30 : 20),\n height: rem(theme, 3),\n backgroundColor: isActive\n ? accentFor(theme, color).main\n : alpha(accentFor(theme, color).main, 0.3),\n borderRadius: 1.5,\n transition: theme.transitions.create(['width', 'background-color']),\n cursor: 'pointer',\n }}\n onClick={onSelect}\n onKeyDown={activateOnKey(onSelect)}\n />\n );\n};\n\nconst NumberIndicator: React.FC<IndicatorProps> = ({ index, isActive, color, onSelect }) => {\n const theme = useTheme();\n\n return (\n <Box\n role=\"button\"\n tabIndex={0}\n {...indicatorAttrs(index, isActive)}\n sx={{\n width: rem(theme, 24),\n height: rem(theme, 24),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '50%',\n backgroundColor: isActive ? accentFor(theme, color).main : 'transparent',\n color: isActive ? accentFor(theme, color).contrastText : accentFor(theme, color).main,\n border: `1px solid ${accentFor(theme, color).main}`,\n fontSize: rem(theme, 12),\n fontWeight: isActive ? 'bold' : 'normal',\n cursor: 'pointer',\n transition: theme.transitions.create(['all']),\n }}\n onClick={onSelect}\n onKeyDown={activateOnKey(onSelect)}\n >\n {index + 1}\n </Box>\n );\n};\n\nconst DotIndicator: React.FC<IndicatorProps> = ({ index, isActive, color, onSelect }) => {\n const theme = useTheme();\n\n return (\n <IconButton\n size=\"small\"\n {...indicatorAttrs(index, isActive)}\n onClick={onSelect}\n sx={{\n p: 0.5,\n color: isActive ? accentFor(theme, color).main : alpha(accentFor(theme, color).main, 0.3),\n transform: isActive ? 'scale(1.2)' : 'scale(1)',\n transition: theme.transitions.create(['transform', 'color']),\n }}\n >\n <FiberManualRecordIcon fontSize=\"small\" />\n </IconButton>\n );\n};\n\nconst INDICATORS: Record<IndicatorVariant, React.FC<IndicatorProps>> = {\n lines: LineIndicator,\n numbers: NumberIndicator,\n dots: DotIndicator,\n};\n\nconst INDICATORS_DEFAULTS = {\n position: 'bottom',\n color: 'primary',\n variant: 'dots',\n} satisfies Partial<CarouselIndicatorsProps>;\n\nexport const CarouselIndicators: React.FC<CarouselIndicatorsProps> = (props) => {\n const { count, activeIndex, onSelect, position, color, variant, className, style } = withDefaults(\n props,\n INDICATORS_DEFAULTS,\n ) as CarouselIndicatorsProps & Required<Pick<CarouselIndicatorsProps, keyof typeof INDICATORS_DEFAULTS>>;\n\n const theme = useTheme();\n const Indicator = INDICATORS[variant] ?? DotIndicator;\n\n return (\n <Box\n className={className}\n data-testid=\"carousel-indicators\"\n sx={{\n position: 'absolute',\n display: 'flex',\n gap: 1,\n zIndex: 2,\n ...(INDICATOR_POSITIONS(theme)[position] ?? INDICATOR_POSITIONS(theme).bottom),\n ...style,\n }}\n >\n {Array.from({ length: count }).map((_, index) => (\n <Indicator\n key={index}\n index={index}\n isActive={index === activeIndex}\n color={color}\n onSelect={() => onSelect(index)}\n />\n ))}\n </Box>\n );\n};\n\nconst ARROWS_DEFAULTS = {\n position: 'overlay',\n disabled: false,\n disablePrev: false,\n disableNext: false,\n color: 'primary',\n size: 'md',\n} satisfies Partial<CarouselArrowsProps>;\n\n/**\n * All three positions place the arrow the same way; only `overlay` fades it back\n * until hovered, and only `outside` sits it clear of the frame.\n */\nconst arrowSx = (theme: Theme, color: Color, isOverlay: boolean): CSSObject => ({\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n zIndex: 3,\n backgroundColor: alpha(theme.palette.background.paper, 0.8),\n color: accentFor(theme, color).main,\n '&:disabled': { opacity: 0.3 },\n ...(isOverlay\n ? {\n opacity: 0.7,\n '&:hover': { backgroundColor: theme.palette.background.paper, opacity: 1 },\n }\n : { '&:hover': { backgroundColor: theme.palette.background.paper } }),\n});\n\nexport const CarouselArrows: React.FC<CarouselArrowsProps> = (props) => {\n const {\n copy, onPrev, onNext, position, disabled, disablePrev, disableNext, color, size, className,\n style,\n } = withDefaults(props, ARROWS_DEFAULTS) as CarouselArrowsProps &\n Required<Pick<CarouselArrowsProps, keyof typeof ARROWS_DEFAULTS>>;\n\n const theme = useTheme();\n const sx = arrowSx(theme, color, position === 'overlay');\n const offset = rem(theme, position === 'outside' ? -40 : 8);\n\n return (\n <Box data-testid=\"carousel-navigation\">\n <IconButton\n onClick={onPrev}\n disabled={disabled || disablePrev}\n size={muiSize(size)}\n className={className}\n aria-label={copy.previous}\n data-testid=\"carousel-prev-button\"\n sx={{ ...sx, left: offset, ...style }}\n >\n <ArrowBackIosIcon />\n </IconButton>\n\n <IconButton\n onClick={onNext}\n disabled={disabled || disableNext}\n aria-label={copy.next}\n size={muiSize(size)}\n className={className}\n data-testid=\"carousel-next-button\"\n sx={{ ...sx, right: offset, ...style }}\n >\n <ArrowForwardIosIcon />\n </IconButton>\n </Box>\n );\n};\n\nconst THUMBNAIL_SIZES = { xs: 40, sm: 60, md: 80, lg: 100, xl: 120 } as const;\n/** A thumbnail's side in design px — 60 for a size the table does not know. */\nconst thumbnailSidePx = (size: string): number =>\n THUMBNAIL_SIZES[size as keyof typeof THUMBNAIL_SIZES] ?? 60;\n\nconst Thumbnail: React.FC<{\n item: CarouselItem;\n index: number;\n isActive: boolean;\n side: number;\n onSelect: () => void;\n}> = ({ item, index, isActive, side, onSelect }) => {\n const theme = useTheme();\n\n return (\n <Box\n onClick={onSelect}\n data-testid={`carousel-thumbnail-${index}`}\n data-active={isActive}\n sx={{\n width: rem(theme, side),\n height: rem(theme, side),\n border: `${rem(theme, 2)} solid ${isActive ? theme.palette.primary.main : 'transparent'}`,\n borderRadius: 1,\n overflow: 'hidden',\n cursor: 'pointer',\n opacity: isActive ? 1 : 0.6,\n transition: theme.transitions.create(['opacity', 'border-color']),\n '&:hover': { opacity: 1 },\n }}\n >\n {item.image ? (\n <Box\n component=\"img\"\n src={item.image}\n alt={item.alt || item.title}\n sx={{ width: '100%', height: '100%', objectFit: 'cover' }}\n />\n ) : (\n // No image to show, so the slide's number stands in for it.\n <Box\n sx={{\n width: '100%',\n height: '100%',\n backgroundColor: neutralTones(theme).track,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Typography variant=\"caption\">{index + 1}</Typography>\n </Box>\n )}\n </Box>\n );\n};\n\nexport const CarouselThumbnails: React.FC<CarouselThumbnailsProps> = ({\n items,\n activeIndex,\n onSelect,\n size = 'sm',\n className,\n style,\n}) => {\n const theme = useTheme();\n const side = thumbnailSidePx(size);\n\n return (\n <Box\n className={className}\n data-testid=\"carousel-thumbnails\"\n sx={{\n position: 'absolute',\n // Hung below the frame, clear of its own height plus a gap.\n bottom: rem(theme, -side - 16),\n left: '50%',\n transform: 'translateX(-50%)',\n display: 'flex',\n gap: 1,\n p: 1,\n backgroundColor: alpha(theme.palette.background.paper, 0.9),\n borderRadius: 1,\n ...style,\n }}\n >\n {items.map((item, index) => (\n <Thumbnail\n key={item.id}\n item={item}\n index={index}\n isActive={index === activeIndex}\n side={side}\n onSelect={() => onSelect(index)}\n />\n ))}\n </Box>\n );\n};\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/feedback/TutorialOverlay/TutorialStepBody.tsx"],"sourcesContent":["import CompleteIcon from '@mui/icons-material/CheckCircle';\nimport CloseIcon from '@mui/icons-material/Close';\nimport PrevIcon from '@mui/icons-material/NavigateBefore';\nimport NextIcon from '@mui/icons-material/NavigateNext';\nimport RestartIcon from '@mui/icons-material/Refresh';\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Stack from '@mui/material/Stack/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, styled } from '@mui/material/styles/index.js';\nimport React, { } from 'react';\n\nimport { onMedia, uiInk } from '../../../tokens/ink';\nimport { rem } from '../../../tokens/relative';\n\nimport type { TutorialOverlayProps } from './TutorialOverlay.types';\nimport type { TutorialCopy } from '../../../copy';\n\n// Animation keyframes\n\nconst StepIndicator = styled(Box)(({ theme }) => ({\n display: 'flex',\n gap: theme.spacing(1),\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2) }));\n\n\nconst StepDot = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'active' && prop !== 'completed' })<{ active?: boolean; completed?: boolean }>(({ theme, active, completed }) => ({\n width: rem(theme, 8),\n height: rem(theme, 8),\n borderRadius: '50%',\n background: completed\n ? theme.palette.success.main\n : active\n ? theme.palette.primary.main\n : alpha(theme.palette.text.primary, 0.3),\n transition: 'all 0.3s ease',\n ...(active && {\n transform: 'scale(1.5)' }) }));\n\n// Title, body copy, the step dots and the navigation row.\n\n// The step's controls: skip/restart on the left, previous/next on the right.\nconst TutorialStepNav: React.FC<{\n copy: TutorialCopy;\n currentStep: number;\n stepCount: number;\n isLastStep: boolean;\n allowSkip: boolean;\n requiresActionBeforeNext?: boolean;\n onNext: () => void;\n onPrev: () => void;\n onSkip: () => void;\n onRestart: () => void;\n}> = ({\n copy,\n currentStep,\n stepCount,\n isLastStep,\n allowSkip,\n requiresActionBeforeNext,\n onNext,\n onPrev,\n onSkip,\n onRestart }) => (\n <Stack\n direction=\"row\"\n spacing={1}\n justifyContent=\"space-between\"\n data-testid=\"tutorial-navigation\"\n >\n <Stack direction=\"row\" spacing={1}>\n {allowSkip && (\n <Button size=\"small\" onClick={onSkip} variant=\"text\">\n {copy.skip}\n </Button>\n )}\n {stepCount > 1 && (\n <IconButton\n size=\"small\"\n onClick={onRestart}\n disabled={currentStep === 0}\n title={copy.restart}\n >\n <RestartIcon fontSize=\"small\" />\n </IconButton>\n )}\n </Stack>\n\n <Stack direction=\"row\" spacing={1}>\n {stepCount > 1 && currentStep > 0 && (\n <Button\n size=\"small\"\n startIcon={<PrevIcon />}\n onClick={onPrev}\n disabled={currentStep === 0}\n data-testid=\"tutorial-prev-button\"\n >\n {copy.previous}\n </Button>\n )}\n\n {!isLastStep ? (\n <Button\n variant=\"contained\"\n size=\"small\"\n endIcon={<NextIcon />}\n onClick={onNext}\n disabled={requiresActionBeforeNext}\n title={requiresActionBeforeNext ? copy.requiresAction : ''}\n data-testid=\"tutorial-next-button\"\n >\n {copy.next}\n </Button>\n ) : (\n <Button\n variant=\"contained\"\n size=\"small\"\n endIcon={<CompleteIcon />}\n onClick={onNext}\n sx={(theme) => {\n const [from, to] = uiInk(theme).celebration.mint;\n return { background: `linear-gradient(135deg, ${from} 0%, ${to} 100%)` };\n }}\n data-testid=\"tutorial-finish-button\"\n >\n {stepCount === 1 ? copy.complete : copy.finish}\n </Button>\n )}\n </Stack>\n </Stack>\n);\n\nconst StepDots: React.FC<{ currentStep: number; stepCount: number }> = ({\n currentStep,\n stepCount }) => (\n <StepIndicator data-testid=\"tutorial-step-indicators\">\n {Array.from({ length: stepCount }).map((_, index) => (\n <StepDot\n key={index}\n active={index === currentStep}\n completed={index < currentStep}\n data-testid={`tutorial-indicator-${index}`}\n />\n ))}\n </StepIndicator>\n);\n\n// Title, and the close button when skipping is allowed.\nconst TutorialStepHeader: React.FC<{\n title: React.ReactNode;\n currentStep: number;\n allowSkip: boolean;\n onSkip: () => void;\n}> = ({ title, currentStep, allowSkip, onSkip }) => (\n <Box\n sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start' }}\n >\n <Typography\n id={`tutorial-title-${currentStep}`}\n variant=\"h6\"\n fontWeight=\"bold\"\n sx={{ flex: 1 }}\n data-testid=\"tutorial-step-title\"\n >\n {title}\n </Typography>\n {allowSkip && (\n <IconButton\n size=\"small\"\n onClick={onSkip}\n sx={{ ml: 1, mt: -1, mr: -1 }}\n data-testid=\"tutorial-close-button\"\n >\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n )}\n </Box>\n);\n\nexport const TutorialStepBody: React.FC<{\n copy: TutorialCopy;\n step: TutorialOverlayProps['steps'][number];\n currentStep: number;\n stepCount: number;\n progress: number;\n isLastStep: boolean;\n allowSkip: boolean;\n showProgress: boolean;\n requiresActionBeforeNext?: boolean;\n onNext: () => void;\n onPrev: () => void;\n onSkip: () => void;\n onRestart: () => void;\n}> = ({\n copy,\n step,\n currentStep,\n stepCount,\n progress: _progress,\n isLastStep,\n allowSkip,\n showProgress,\n requiresActionBeforeNext,\n onNext,\n onPrev,\n onSkip,\n onRestart }) => (\n <Stack spacing={2}>\n <TutorialStepHeader\n title={step.title}\n currentStep={currentStep}\n allowSkip={allowSkip}\n onSkip={onSkip}\n />\n\n <Typography\n id={`tutorial-content-${currentStep}`}\n variant=\"body2\"\n color=\"text.secondary\"\n data-testid=\"tutorial-step-content\"\n >\n {step.content}\n </Typography>\n\n {showProgress && (\n <Typography variant=\"caption\" color=\"text.secondary\" align=\"center\">\n {currentStep + 1} of {stepCount}\n </Typography>\n )}\n\n {step.action && (\n <Button\n variant=\"contained\"\n size=\"small\"\n onClick={step.action.onClick}\n sx={(theme) => {\n const [from, to] = uiInk(theme).celebration.violet;\n return { background: `linear-gradient(135deg, ${from} 0%, ${to} 100%)`, color: onMedia(theme) };\n }}\n >\n {step.action.label}\n </Button>\n )}\n\n <StepDots currentStep={currentStep} stepCount={stepCount} />\n\n <TutorialStepNav\n copy={copy}\n currentStep={currentStep}\n stepCount={stepCount}\n isLastStep={isLastStep}\n allowSkip={allowSkip}\n requiresActionBeforeNext={requiresActionBeforeNext}\n onNext={onNext}\n onPrev={onPrev}\n onSkip={onSkip}\n onRestart={onRestart}\n />\n </Stack>\n);\n\n// Main component\n"],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB;AACzB,OAAO,eAAe;AACtB,OAAO,cAAc;AACrB,OAAO,cAAc;AACrB,OAAO,iBAAiB;AACxB,OAAO,SAAS;AAChB,OAAO,YAAY;AACnB,OAAO,gBAAgB;AACvB,OAAO,WAAW;AAClB,OAAO,gBAAgB;AACvB,SAAS,OAAO,cAAc;AA+DpB,SAEI,KAFJ;AApDV,IAAM,gBAAgB,OAAO,GAAG,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EAChD,SAAS;AAAA,EACT,KAAK,MAAM,QAAQ,CAAC;AAAA,EACpB,WAAW,MAAM,QAAQ,CAAC;AAAA,EAC1B,cAAc,MAAM,QAAQ,CAAC;AAAE,EAAE;AAGnC,IAAM,UAAU,OAAO,KAAK;AAAA,EAC1B,mBAAmB,CAAC,SAAS,SAAS,YAAY,SAAS;AAAY,CAAC,EAA6C,CAAC,EAAE,OAAO,QAAQ,UAAU,OAAO;AAAA,EACxJ,OAAO,IAAI,OAAO,CAAC;AAAA,EACnB,QAAQ,IAAI,OAAO,CAAC;AAAA,EACpB,cAAc;AAAA,EACd,YAAY,YACR,MAAM,QAAQ,QAAQ,OACtB,SACE,MAAM,QAAQ,QAAQ,OACtB,MAAM,MAAM,QAAQ,KAAK,SAAS,GAAG;AAAA,EAC3C,YAAY;AAAA,EACZ,GAAI,UAAU;AAAA,IACZ,WAAW;AAAA,EAAa;AAAG,EAAE;AAKjC,IAAM,kBAWD,CAAC;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAU,MACJ;AAAA,EAAC;AAAA;AAAA,IACC,WAAU;AAAA,IACV,SAAS;AAAA,IACT,gBAAe;AAAA,IACf,eAAY;AAAA,IAEZ;AAAA,2BAAC,SAAM,WAAU,OAAM,SAAS,GAC7B;AAAA,qBACC,oBAAC,UAAO,MAAK,SAAQ,SAAS,QAAQ,SAAQ,QAC3C,eAAK,MACR;AAAA,QAED,YAAY,KACX;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS;AAAA,YACT,UAAU,gBAAgB;AAAA,YAC1B,OAAO,KAAK;AAAA,YAEZ,8BAAC,eAAY,UAAS,SAAQ;AAAA;AAAA,QAChC;AAAA,SAEJ;AAAA,MAEA,qBAAC,SAAM,WAAU,OAAM,SAAS,GAC7B;AAAA,oBAAY,KAAK,cAAc,KAC9B;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAW,oBAAC,YAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,gBAAgB;AAAA,YAC1B,eAAY;AAAA,YAEX,eAAK;AAAA;AAAA,QACR;AAAA,QAGD,CAAC,aACA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,SAAS,oBAAC,YAAS;AAAA,YACnB,SAAS;AAAA,YACT,UAAU;AAAA,YACV,OAAO,2BAA2B,KAAK,iBAAiB;AAAA,YACxD,eAAY;AAAA,YAEX,eAAK;AAAA;AAAA,QACR,IAEA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,SAAS,oBAAC,gBAAa;AAAA,YACvB,SAAS;AAAA,YACT,IAAI,CAAC,UAAU;AACb,oBAAM,CAAC,MAAM,EAAE,IAAI,MAAM,KAAK,EAAE,YAAY;AAC5C,qBAAO,EAAE,YAAY,2BAA2B,IAAI,QAAQ,EAAE,SAAS;AAAA,YACzE;AAAA,YACA,eAAY;AAAA,YAEX,wBAAc,IAAI,KAAK,WAAW,KAAK;AAAA;AAAA,QAC1C;AAAA,SAEJ;AAAA;AAAA;AACF;AAGR,IAAM,WAAiE,CAAC;AAAA,EACtE;AAAA,EACA;AAAU,MACV,oBAAC,iBAAc,eAAY,4BACxB,gBAAM,KAAK,EAAE,QAAQ,UAAU,CAAC,EAAE,IAAI,CAAC,GAAG,UACzC;AAAA,EAAC;AAAA;AAAA,IAEC,QAAQ,UAAU;AAAA,IAClB,WAAW,QAAQ;AAAA,IACnB,eAAa,sBAAsB,KAAK;AAAA;AAAA,EAHnC;AAIP,CACD,GACH;AAIF,IAAM,qBAKD,CAAC,EAAE,OAAO,aAAa,WAAW,OAAO,MACtC;AAAA,EAAC;AAAA;AAAA,IACC,IAAI,EAAE,SAAS,QAAQ,gBAAgB,iBAAiB,YAAY,aAAa;AAAA,IAEjF;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,IAAI,kBAAkB,WAAW;AAAA,UACjC,SAAQ;AAAA,UACR,YAAW;AAAA,UACX,IAAI,EAAE,MAAM,EAAE;AAAA,UACd,eAAY;AAAA,UAEX;AAAA;AAAA,MACH;AAAA,MACC,aACC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS;AAAA,UACT,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG;AAAA,UAC5B,eAAY;AAAA,UAEZ,8BAAC,aAAU,UAAS,SAAQ;AAAA;AAAA,MAC9B;AAAA;AAAA;AAEJ;AAGD,IAAM,mBAcR,CAAC;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAU,MACN,qBAAC,SAAM,SAAS,GACd;AAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,KAAK;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACF;AAAA,EAEA;AAAA,IAAC;AAAA;AAAA,MACC,IAAI,oBAAoB,WAAW;AAAA,MACnC,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,eAAY;AAAA,MAEX,eAAK;AAAA;AAAA,EACR;AAAA,EAEC,gBACC,qBAAC,cAAW,SAAQ,WAAU,OAAM,kBAAiB,OAAM,UACxD;AAAA,kBAAc;AAAA,IAAE;AAAA,IAAK;AAAA,KACxB;AAAA,EAGD,KAAK,UACJ;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,SAAS,KAAK,OAAO;AAAA,MACrB,IAAI,CAAC,UAAU;AACb,cAAM,CAAC,MAAM,EAAE,IAAI,MAAM,KAAK,EAAE,YAAY;AAC5C,eAAO,EAAE,YAAY,2BAA2B,IAAI,QAAQ,EAAE,UAAU,OAAO,QAAQ,KAAK,EAAE;AAAA,MAChG;AAAA,MAEC,eAAK,OAAO;AAAA;AAAA,EACf;AAAA,EAGF,oBAAC,YAAS,aAA0B,WAAsB;AAAA,EAE1D;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACF;AAAA,GACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/AddressAutocomplete/useAddressPredictions.ts"],"sourcesContent":["import type React from 'react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { MIN_QUERY_LENGTH } from './AddressAutocomplete.helpers';\nimport type { AddressAutocompleteProps, AddressOptionValue } from './AddressAutocomplete.types';\nimport { searchMockAddresses } from './mockPlaces';\nimport type { GoogleMapsService } from './useGoogleMapsAPI';\n\nconst DEBOUNCE_MS = 300;\n// Long enough to exercise the loading state, short enough not to slow tests down.\nconst MOCK_PREDICTION_DELAY_MS = 100;\n\ntype Restrictions = AddressAutocompleteProps['restrictions'];\n\ninterface PredictionSink {\n setOptions: (options: AddressOptionValue[]) => void;\n setLoading: (loading: boolean) => void;\n setApiError: (message: string | null) => void;\n}\n\nconst predictionRequest = (\n input: string,\n restrictions: Restrictions,\n): google.maps.places.AutocompletionRequest => ({\n input: input.trim(),\n componentRestrictions: restrictions?.country ? { country: restrictions.country } : undefined,\n types: restrictions?.types || [],\n});\n\nconst fetchMockPredictions = (input: string, sink: PredictionSink) => {\n window.setTimeout(() => {\n sink.setLoading(false);\n sink.setOptions(searchMockAddresses(input));\n sink.setApiError(null);\n }, MOCK_PREDICTION_DELAY_MS);\n};\n\nconst fetchLivePredictions = (\n service: google.maps.places.AutocompleteService,\n input: string,\n restrictions: Restrictions,\n sink: PredictionSink,\n) => {\n service.getPlacePredictions(predictionRequest(input, restrictions), (predictions, status) => {\n sink.setLoading(false);\n\n if (status === google.maps.places.PlacesServiceStatus.OK && predictions) {\n sink.setOptions(predictions);\n sink.setApiError(null);\n return;\n }\n\n // No matches is a normal outcome, not something to complain about.\n sink.setOptions([]);\n sink.setApiError(\n status === google.maps.places.PlacesServiceStatus.ZERO_RESULTS\n ? null\n : 'Failed to fetch address suggestions',\n );\n });\n};\n\nexport const useAddressPredictions = ({\n isLoaded,\n services,\n restrictions,\n useMockData,\n setInputValue,\n setLoading,\n setApiError,\n}: {\n isLoaded: boolean;\n services: GoogleMapsService;\n restrictions: Restrictions;\n useMockData: boolean;\n setInputValue: (value: string) => void;\n setLoading: (loading: boolean) => void;\n setApiError: (message: string | null) => void;\n}) => {\n const [options, setOptions] = useState<AddressOptionValue[]>([]);\n const debounceTimeoutRef = useRef<number | undefined>(undefined);\n\n const sink = useMemo<PredictionSink>(\n () => ({ setOptions, setLoading, setApiError }),\n [setLoading, setApiError],\n );\n\n const debouncedAutocomplete = useCallback(\n (input: string) => {\n window.clearTimeout(debounceTimeoutRef.current);\n\n debounceTimeoutRef.current = window.setTimeout(() => {\n if (!input.trim() || !isLoaded) {\n setOptions([]);\n setLoading(false);\n return;\n }\n\n if (useMockData) {\n fetchMockPredictions(input, sink);\n return;\n }\n\n if (!services.autocompleteService) {\n setOptions([]);\n setLoading(false);\n return;\n }\n\n fetchLivePredictions(services.autocompleteService, input, restrictions, sink);\n }, DEBOUNCE_MS);\n },\n [isLoaded, services, restrictions, useMockData, sink, setLoading],\n );\n\n useEffect(() => () => window.clearTimeout(debounceTimeoutRef.current), []);\n\n const handleInputChange = useCallback(\n (_event: React.SyntheticEvent, value: string) => {\n setInputValue(value);\n setApiError(null);\n\n if (value.length > MIN_QUERY_LENGTH) {\n setLoading(true);\n debouncedAutocomplete(value);\n return;\n }\n\n setOptions([]);\n setLoading(false);\n },\n [debouncedAutocomplete, setInputValue, setApiError, setLoading],\n );\n\n return { options, handleInputChange };\n};\n"],"mappings":";;;;;;;;AACA,SAAS,aAAa,WAAW,SAAS,QAAQ,gBAAgB;AAOlE,IAAM,cAAc;AAEpB,IAAM,2BAA2B;AAUjC,IAAM,oBAAoB,CACxB,OACA,kBAC8C;AAAA,EAC9C,OAAO,MAAM,KAAK;AAAA,EAClB,uBAAuB,cAAc,UAAU,EAAE,SAAS,aAAa,QAAQ,IAAI;AAAA,EACnF,OAAO,cAAc,SAAS,CAAC;AACjC;AAEA,IAAM,uBAAuB,CAAC,OAAe,SAAyB;AACpE,SAAO,WAAW,MAAM;AACtB,SAAK,WAAW,KAAK;AACrB,SAAK,WAAW,oBAAoB,KAAK,CAAC;AAC1C,SAAK,YAAY,IAAI;AAAA,EACvB,GAAG,wBAAwB;AAC7B;AAEA,IAAM,uBAAuB,CAC3B,SACA,OACA,cACA,SACG;AACH,UAAQ,oBAAoB,kBAAkB,OAAO,YAAY,GAAG,CAAC,aAAa,WAAW;AAC3F,SAAK,WAAW,KAAK;AAErB,QAAI,WAAW,OAAO,KAAK,OAAO,oBAAoB,MAAM,aAAa;AACvE,WAAK,WAAW,WAAW;AAC3B,WAAK,YAAY,IAAI;AACrB;AAAA,IACF;AAGA,SAAK,WAAW,CAAC,CAAC;AAClB,SAAK;AAAA,MACH,WAAW,OAAO,KAAK,OAAO,oBAAoB,eAC9C,OACA;AAAA,IACN;AAAA,EACF,CAAC;AACH;AAEO,IAAM,wBAAwB,CAAC;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAQM;AACJ,QAAM,CAAC,SAAS,UAAU,IAAI,SAA+B,CAAC,CAAC;AAC/D,QAAM,qBAAqB,OAA2B,MAAS;AAE/D,QAAM,OAAO;AAAA,IACX,OAAO,EAAE,YAAY,YAAY,YAAY;AAAA,IAC7C,CAAC,YAAY,WAAW;AAAA,EAC1B;AAEA,QAAM,wBAAwB;AAAA,IAC5B,CAAC,UAAkB;AACjB,aAAO,aAAa,mBAAmB,OAAO;AAE9C,yBAAmB,UAAU,OAAO,WAAW,MAAM;AACnD,YAAI,CAAC,MAAM,KAAK,KAAK,CAAC,UAAU;AAC9B,qBAAW,CAAC,CAAC;AACb,qBAAW,KAAK;AAChB;AAAA,QACF;AAEA,YAAI,aAAa;AACf,+BAAqB,OAAO,IAAI;AAChC;AAAA,QACF;AAEA,YAAI,CAAC,SAAS,qBAAqB;AACjC,qBAAW,CAAC,CAAC;AACb,qBAAW,KAAK;AAChB;AAAA,QACF;AAEA,6BAAqB,SAAS,qBAAqB,OAAO,cAAc,IAAI;AAAA,MAC9E,GAAG,WAAW;AAAA,IAChB;AAAA,IACA,CAAC,UAAU,UAAU,cAAc,aAAa,MAAM,UAAU;AAAA,EAClE;AAEA,YAAU,MAAM,MAAM,OAAO,aAAa,mBAAmB,OAAO,GAAG,CAAC,CAAC;AAEzE,QAAM,oBAAoB;AAAA,IACxB,CAAC,QAA8B,UAAkB;AAC/C,oBAAc,KAAK;AACnB,kBAAY,IAAI;AAEhB,UAAI,MAAM,SAAS,kBAAkB;AACnC,mBAAW,IAAI;AACf,8BAAsB,KAAK;AAC3B;AAAA,MACF;AAEA,iBAAW,CAAC,CAAC;AACb,iBAAW,KAAK;AAAA,IAClB;AAAA,IACA,CAAC,uBAAuB,eAAe,aAAa,UAAU;AAAA,EAChE;AAEA,SAAO,EAAE,SAAS,kBAAkB;AACtC;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/utility/WorkflowStep/WorkflowStep.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport { styled } from '@mui/material/styles/index.js';\nimport React, { forwardRef, useCallback, useMemo } from 'react';\n\nimport { progressValueRange, progressValueText, resolveWorkflowStepProps, withDerivedStatus } from './WorkflowStep.helpers';\nimport { StepRow } from './WorkflowStepRow';\nimport type { WorkflowStepItem, WorkflowStepProps } from './WorkflowStep.types';\n\n// Styled Components\nconst StepContainer = styled(Box, {\n shouldForwardProp: (prop) => !['orientation', 'variant'].includes(prop as string),\n})<{\n orientation: WorkflowStepProps['orientation'];\n variant: WorkflowStepProps['variant'];\n}>(({ theme, orientation, variant }) => ({\n display: 'flex',\n flexDirection: orientation === 'vertical' ? 'column' : 'row',\n alignItems: orientation === 'vertical' ? 'flex-start' : 'center',\n gap: orientation === 'vertical' ? theme.spacing(2) : theme.spacing(1),\n width: '100%',\n position: 'relative',\n \n // Variant-specific styles\n ...(variant === 'minimal' && {\n gap: orientation === 'vertical' ? theme.spacing(1) : theme.spacing(0.5),\n }),\n}));\n\n/**\n * WorkflowStep component for displaying multi-step workflows with visual progression\n */\nexport const WorkflowStep = forwardRef<HTMLDivElement, WorkflowStepProps>((rawProps, ref) => {\n const {\n steps,\n currentStep,\n variant,\n orientation,\n color,\n size,\n showProgress,\n animated,\n interactive,\n showNumbers,\n showIcons,\n completedIcon,\n errorIcon,\n onStepClick,\n disabled,\n className,\n style,\n 'data-testid': dataTestId,\n ...other\n } = resolveWorkflowStepProps(rawProps);\n const handleStepClick = useCallback((stepIndex: number, step: WorkflowStepItem) => {\n if (onStepClick && !disabled && !step.disabled) {\n onStepClick(stepIndex, step);\n }\n }, [onStepClick, disabled]);\n\n const stepsWithStatus = useMemo(\n () => withDerivedStatus(steps, currentStep),\n [steps, currentStep],\n );\n\n const { max: valueMax, now: valueNow } = progressValueRange(steps, currentStep);\n\n return (\n <StepContainer\n ref={ref}\n orientation={orientation}\n variant={variant}\n className={className}\n style={style}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={valueMax}\n aria-valuenow={valueNow}\n aria-valuetext={progressValueText(steps, currentStep)}\n data-testid={dataTestId}\n {...other}\n >\n {stepsWithStatus.map((step, index) => (\n <StepRow\n key={index}\n step={step}\n index={index}\n isLast={index === steps.length - 1}\n orientation={orientation}\n variant={variant}\n color={color}\n size={size}\n showNumbers={showNumbers}\n showIcons={showIcons}\n showProgress={showProgress}\n completedIcon={completedIcon}\n errorIcon={errorIcon}\n interactive={interactive}\n animated={animated}\n disabled={disabled}\n onClick={handleStepClick}\n dataTestId={dataTestId}\n />\n ))}\n </StepContainer>\n );\n});\n\nWorkflowStep.displayName = 'WorkflowStep';\n\nexport default WorkflowStep;"],"mappings":";;;;;;;;;;;AAAA,OAAO,SAAS;AAChB,SAAS,cAAc;AACvB,SAAgB,YAAY,aAAa,eAAe;AAgFhD;AAzER,IAAM,gBAAgB,OAAO,KAAK;AAAA,EAChC,mBAAmB,CAAC,SAAS,CAAC,CAAC,eAAe,SAAS,EAAE,SAAS,IAAc;AAClF,CAAC,EAGE,CAAC,EAAE,OAAO,aAAa,QAAQ,OAAO;AAAA,EACvC,SAAS;AAAA,EACT,eAAe,gBAAgB,aAAa,WAAW;AAAA,EACvD,YAAY,gBAAgB,aAAa,eAAe;AAAA,EACxD,KAAK,gBAAgB,aAAa,MAAM,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC;AAAA,EACpE,OAAO;AAAA,EACP,UAAU;AAAA;AAAA,EAGV,GAAI,YAAY,aAAa;AAAA,IAC3B,KAAK,gBAAgB,aAAa,MAAM,QAAQ,CAAC,IAAI,MAAM,QAAQ,GAAG;AAAA,EACxE;AACF,EAAE;AAKK,IAAM,eAAe,WAA8C,CAAC,UAAU,QAAQ;AAC3F,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,GAAG;AAAA,EACL,IAAI,yBAAyB,QAAQ;AACrC,QAAM,kBAAkB,YAAY,CAAC,WAAmB,SAA2B;AACjF,QAAI,eAAe,CAAC,YAAY,CAAC,KAAK,UAAU;AAC9C,kBAAY,WAAW,IAAI;AAAA,IAC7B;AAAA,EACF,GAAG,CAAC,aAAa,QAAQ,CAAC;AAE1B,QAAM,kBAAkB;AAAA,IACtB,MAAM,kBAAkB,OAAO,WAAW;AAAA,IAC1C,CAAC,OAAO,WAAW;AAAA,EACrB;AAEA,QAAM,EAAE,KAAK,UAAU,KAAK,SAAS,IAAI,mBAAmB,OAAO,WAAW;AAE9E,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAK;AAAA,MACL,iBAAe;AAAA,MACf,iBAAe;AAAA,MACf,iBAAe;AAAA,MACf,kBAAgB,kBAAkB,OAAO,WAAW;AAAA,MACpD,eAAa;AAAA,MACZ,GAAG;AAAA,MAEH,0BAAgB,IAAI,CAAC,MAAM,UAC1B;AAAA,QAAC;AAAA;AAAA,UAEC;AAAA,UACA;AAAA,UACA,QAAQ,UAAU,MAAM,SAAS;AAAA,UACjC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAS;AAAA,UACT;AAAA;AAAA,QAjBK;AAAA,MAkBP,CACD;AAAA;AAAA,EACH;AAEJ,CAAC;AAED,aAAa,cAAc;AAE3B,IAAO,uBAAQ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/layout/ContentToolbar/FilterTrigger.tsx"],"sourcesContent":["'use client';\n\nimport FilterIcon from '@mui/icons-material/FilterListRounded';\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport React from 'react';\n\nimport type { FilterTriggerProps } from './ContentToolbar.types';\nimport { fieldRadiusPx } from '../../../tokens/field-radius';\nimport { fieldHeight } from '../../../tokens/field-height';\nimport { sxRem } from '../../../tokens/relative';\n\n/**\n * Labeled filter toggle: a \"Filtros\" button (styled like the sibling toolbar\n * controls) with a funnel icon and, when filters are active, a count badge — so\n * it's obvious that the list is filtered and by how many facets. The panel itself\n * is supplied by the consumer.\n */\nexport function FilterTrigger({\n open,\n onOpenChange,\n hasActiveFilters = false,\n activeCount = 0,\n label = 'Filtros',\n 'data-testid': testId = 'toggle-filters-btn',\n}: FilterTriggerProps): React.JSX.Element {\n const active = activeCount > 0 || hasActiveFilters;\n return (\n <Button\n variant=\"text\"\n size=\"small\"\n color=\"inherit\"\n data-testid={testId}\n aria-expanded={open}\n aria-label={open ? 'Close filters' : 'Open filters'}\n onClick={() => onOpenChange(!open)}\n startIcon={<FilterIcon sx={{ fontSize: sxRem(16) }} />}\n sx={{\n minWidth: 0,\n height: fieldHeight,\n px: 1,\n gap: 0.25,\n borderRadius: fieldRadiusPx,\n textTransform: 'none',\n fontWeight: 600,\n color: active ? 'primary.main' : 'text.primary',\n bgcolor: open ? 'action.selected' : 'transparent',\n }}\n >\n {label}\n {activeCount > 0 && (\n <Box\n component=\"span\"\n data-testid={`${testId}-count`}\n sx={{\n ml: 0.5,\n minWidth: sxRem(18),\n height: sxRem(18),\n px: 0.5,\n borderRadius: 999,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: sxRem(11.2),\n fontWeight: 700,\n lineHeight: 1,\n bgcolor: 'primary.main',\n color: 'primary.contrastText',\n }}\n >\n {activeCount}\n </Box>\n )}\n </Button>\n );\n}\n"],"mappings":";;;;;;;;;;;AAEA,OAAO,gBAAgB;AACvB,OAAO,SAAS;AAChB,OAAO,YAAY;AAwBf,SAQa,KARb;AAVG,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,eAAe,SAAS;AAC1B,GAA0C;AACxC,QAAM,SAAS,cAAc,KAAK;AAClC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,eAAa;AAAA,MACb,iBAAe;AAAA,MACf,cAAY,OAAO,kBAAkB;AAAA,MACrC,SAAS,MAAM,aAAa,CAAC,IAAI;AAAA,MACjC,WAAW,oBAAC,cAAW,IAAI,EAAE,UAAU,MAAM,EAAE,EAAE,GAAG;AAAA,MACpD,IAAI;AAAA,QACF,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,cAAc;AAAA,QACd,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,OAAO,SAAS,iBAAiB;AAAA,QACjC,SAAS,OAAO,oBAAoB;AAAA,MACtC;AAAA,MAEC;AAAA;AAAA,QACA,cAAc,KACb;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAa,GAAG,MAAM;AAAA,YACtB,IAAI;AAAA,cACF,IAAI;AAAA,cACJ,UAAU,MAAM,EAAE;AAAA,cAClB,QAAQ,MAAM,EAAE;AAAA,cAChB,IAAI;AAAA,cACJ,cAAc;AAAA,cACd,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,UAAU,MAAM,IAAI;AAAA,cACpB,YAAY;AAAA,cACZ,YAAY;AAAA,cACZ,SAAS;AAAA,cACT,OAAO;AAAA,YACT;AAAA,YAEC;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/en-US.form.ts"],"sourcesContent":["/**\n * The en-US pack for the form family. Split the same way `pt-BR.form.ts` is —\n * see `en-US.ts` for why.\n */\nimport type {\n AddressAutocompleteCopy,\n AutocompleteCopy,\n CodeEditorCopy,\n PasswordStrengthCopy,\n PhoneInputCopy,\n RichEditorToolbarCopy,\n SocialLoginCopy,\n UploadButtonCopy,\n} from './copy';\n\nexport const EN_US_ADDRESS_AUTOCOMPLETE_COPY: AddressAutocompleteCopy = {\n loadingMaps: \"Loading Google Maps…\",\n mapsLoadFailed:\n \"Could not load the Google Maps API. Check the API key and the internet connection.\",\n useCurrentLocation: \"Use my current location\",\n};\n\nexport const EN_US_AUTOCOMPLETE_COPY: AutocompleteCopy = {\n loading: \"Loading…\",\n noResults: \"No results found\",\n placeholder: \"Type to search…\",\n};\n\nexport const EN_US_CODE_EDITOR_COPY: CodeEditorCopy = {\n loading: \"Loading the editor…\",\n readOnly: \"Read only\",\n // The shortcut is the editor's own binding and is not translated — it is what\n // the reader must press, not something they read.\n formatCode: \"Format code (Ctrl+Shift+F)\",\n enableWrap: \"Wrap lines\",\n disableWrap: \"Do not wrap lines\",\n copyToClipboard: \"Copy to clipboard\",\n copied: \"Copied!\",\n enterFullscreen: \"Full screen\",\n exitFullscreen: \"Leave full screen\",\n};\n\nexport const EN_US_PASSWORD_STRENGTH_COPY: PasswordStrengthCopy = {\n strengthHeading: \"Password strength\",\n requirementsHeading: \"Requirements:\",\n suggestionsHeading: \"Suggestions:\",\n bands: {\n veryWeak: \"Very weak\",\n weak: \"Weak\",\n fair: \"Fair\",\n good: \"Good\",\n strong: \"Strong\",\n },\n requirements: {\n // The count is the HOST's configured minimum, interpolated rather than\n // written out: a host raising it must not end up with a requirement naming\n // the old number.\n minLength: (count) => `At least ${count} characters`,\n uppercase: \"One uppercase letter\",\n lowercase: \"One lowercase letter\",\n numbers: \"One number\",\n special: \"One special character\",\n },\n suggestions: {\n minLength: (count) => `Use at least ${count} characters`,\n uppercase: \"Add uppercase letters\",\n lowercase: \"Add lowercase letters\",\n numbers: \"Include numbers\",\n special: \"Add special characters\",\n },\n};\n\nexport const EN_US_RICH_EDITOR_TOOLBAR_COPY: RichEditorToolbarCopy = {\n bold: \"Bold\",\n italic: \"Italic\",\n underline: \"Underline\",\n bulletList: \"Bulleted list\",\n numberedList: \"Numbered list\",\n quote: \"Quote\",\n code: \"Code\",\n insertLink: \"Insert link\",\n textColor: \"Text colour\",\n backgroundColor: \"Background colour\",\n linkPrompt: \"Enter the URL:\",\n};\n\nexport const EN_US_PHONE_INPUT_COPY: PhoneInputCopy = {\n selectCountry: \"Select country\",\n invalidNumber: (countryName) => `Not a valid phone number for ${countryName}`,\n // Substituted into the sentence above when no country is chosen, so it has to\n // read as a noun phrase inside it rather than as a sentence of its own.\n unknownCountry: \"the selected country\",\n};\n\nexport const EN_US_UPLOAD_BUTTON_COPY: UploadButtonCopy = {\n buttonLabel: \"Upload a file\",\n dropzoneHint: \"Drop the file here, or click to choose one\",\n dropzoneRole: (label) => `File upload area. ${label}`,\n uploading: \"Uploading…\",\n dropReady: \"File ready to drop\",\n percentUploaded: (percent) => `${percent}% uploaded`,\n uploadInProgress: (percent) => `Upload in progress: ${percent}%`,\n errorAnnouncement: (message) => `Error: ${message}`,\n};\n\nexport const EN_US_SOCIAL_LOGIN_COPY: SocialLoginCopy = {\n google: \"Continue with Google\",\n facebook: \"Continue with Facebook\",\n apple: \"Continue with Apple\",\n};\n"],"mappings":";AAeO,IAAM,kCAA2D;AAAA,EACtE,aAAa;AAAA,EACb,gBACE;AAAA,EACF,oBAAoB;AACtB;AAEO,IAAM,0BAA4C;AAAA,EACvD,SAAS;AAAA,EACT,WAAW;AAAA,EACX,aAAa;AACf;AAEO,IAAM,yBAAyC;AAAA,EACpD,SAAS;AAAA,EACT,UAAU;AAAA;AAAA;AAAA,EAGV,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,gBAAgB;AAClB;AAEO,IAAM,+BAAqD;AAAA,EAChE,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,OAAO;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA,cAAc;AAAA;AAAA;AAAA;AAAA,IAIZ,WAAW,CAAC,UAAU,YAAY,KAAK;AAAA,IACvC,WAAW;AAAA,IACX,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EACA,aAAa;AAAA,IACX,WAAW,CAAC,UAAU,gBAAgB,KAAK;AAAA,IAC3C,WAAW;AAAA,IACX,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AACF;AAEO,IAAM,iCAAwD;AAAA,EACnE,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,OAAO;AAAA,EACP,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,YAAY;AACd;AAEO,IAAM,yBAAyC;AAAA,EACpD,eAAe;AAAA,EACf,eAAe,CAAC,gBAAgB,gCAAgC,WAAW;AAAA;AAAA;AAAA,EAG3E,gBAAgB;AAClB;AAEO,IAAM,2BAA6C;AAAA,EACxD,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc,CAAC,UAAU,qBAAqB,KAAK;AAAA,EACnD,WAAW;AAAA,EACX,WAAW;AAAA,EACX,iBAAiB,CAAC,YAAY,GAAG,OAAO;AAAA,EACxC,kBAAkB,CAAC,YAAY,uBAAuB,OAAO;AAAA,EAC7D,mBAAmB,CAAC,YAAY,UAAU,OAAO;AACnD;AAEO,IAAM,0BAA2C;AAAA,EACtD,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AACT;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/navigation/CommandPalette/CommandPalette.tsx"],"sourcesContent":["import CloseIcon from '@mui/icons-material/Close';\nimport EnterIcon from '@mui/icons-material/KeyboardReturn';\nimport SearchIcon from '@mui/icons-material/Search';\nimport Box from '@mui/material/Box/index.js';\nimport Dialog from '@mui/material/Dialog/index.js';\nimport DialogContent from '@mui/material/DialogContent/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport InputBase from '@mui/material/InputBase/index.js';\nimport Paper from '@mui/material/Paper/index.js';\nimport Slide from '@mui/material/Slide/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, styled, useTheme } from '@mui/material/styles/index.js';\nimport type { TransitionProps } from '@mui/material/transitions/index.js';\nimport type { FC} from 'react';\nimport React, { } from 'react';\n\nimport { useCommandPalette } from './CommandPalette.hooks';\nimport { PaletteResults } from './CommandPaletteResults';\nimport { ShortcutChip } from './ShortcutChip';\nimport type { CommandPaletteProps } from './CommandPalette.types';\nimport type { CommandPaletteCopy } from '../../../copy';\nimport { scrim } from '../../../tokens/ink';\nimport { rem, sxRem } from '../../../tokens/relative';\n\n// Styled components\nconst StyledDialog = styled(Dialog)(({ theme }) => ({\n '& .MuiBackdrop-root': {\n backgroundColor: scrim(theme, 0.6),\n backdropFilter: `blur(${rem(theme, 4)})` },\n '& .MuiDialog-paper': {\n position: 'fixed',\n top: '20%',\n margin: 0,\n maxHeight: 'none',\n background: 'transparent',\n boxShadow: 'none',\n overflow: 'visible' } }));\n\nconst PaletteContainer = styled(Paper)(({ theme }) => ({\n width: '100%',\n maxWidth: rem(theme, 640),\n background: `linear-gradient(135deg, ${alpha(theme.palette.background.paper, 0.98)} 0%, ${alpha(theme.palette.background.paper, 0.95)} 100%)`,\n backdropFilter: `blur(${rem(theme, 20)})`,\n WebkitBackdropFilter: `blur(${rem(theme, 20)})`,\n border: `1px solid ${alpha(theme.palette.divider, 0.18)}`,\n borderRadius: theme.shape.borderRadius * 2,\n overflow: 'hidden',\n boxShadow: theme.shadows[24] }));\n\nconst SearchContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(2),\n borderBottom: `1px solid ${alpha(theme.palette.divider, 0.12)}`,\n background: alpha(theme.palette.background.default, 0.4) }));\n\nconst SearchInput = styled(InputBase)(({ theme }) => ({\n flex: 1,\n fontSize: rem(theme, 18),\n fontWeight: 400,\n '& input': {\n padding: theme.spacing(0, 1),\n '&::placeholder': {\n color: theme.palette.text.secondary,\n opacity: 0.8 } } }));\n\nconst Transition = React.forwardRef<unknown, TransitionProps & { children: React.ReactElement }>(\n function Transition(props, ref) {\n return <Slide direction=\"down\" ref={ref} {...props} />;\n },\n);\n\n// Main component\nconst PaletteSearch: React.FC<{\n inputRef: React.Ref<HTMLInputElement>;\n placeholder?: string;\n value: string;\n dataTestId?: string;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n onClose: () => void;\n}> = ({ inputRef, placeholder, value, dataTestId, onChange, onClose }) => (\n <SearchContainer>\n <SearchIcon sx={{ color: 'text.secondary', mr: 1 }} />\n <SearchInput\n ref={inputRef}\n placeholder={placeholder}\n value={value}\n onChange={onChange}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck=\"false\"\n inputProps={{ 'data-testid': `${dataTestId}-input` }}\n />\n <IconButton size=\"small\" onClick={onClose} sx={{ ml: 1 }}>\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n </SearchContainer>\n);\n\nconst PaletteFooter: React.FC<{ commandCount: number; copy: CommandPaletteCopy }> = ({\n commandCount,\n copy,\n}) => {\n const theme = useTheme();\n\n return (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: 1,\n borderTop: `1px solid ${alpha(theme.palette.divider, 0.12)}`,\n background: alpha(theme.palette.background.default, 0.4) }}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n <ShortcutChip\n icon={<EnterIcon sx={{ fontSize: sxRem(12) }} />}\n label={copy.execute}\n size=\"small\"\n />\n <ShortcutChip label={copy.navigate} size=\"small\" />\n <ShortcutChip label={copy.close} size=\"small\" />\n </Box>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {commandCount} commands\n </Typography>\n </Box>\n );\n};\n\nexport const CommandPalette: FC<CommandPaletteProps> = ({\n copy,\n open,\n onClose,\n commands,\n placeholder = 'Type a command or search...',\n width,\n maxHeight,\n showRecent = true,\n recentCommands = [],\n onCommandExecute,\n dataTestId = 'command-palette' }) => {\n const {\n searchQuery,\n setSearchQuery,\n selectedIndex,\n setSelectedIndex,\n searchInputRef,\n listRef,\n filteredCommands,\n groupedCommands,\n executeCommand,\n recentCommandIds } = useCommandPalette({\n open,\n commands,\n showRecent,\n recentCommands,\n onCommandExecute,\n onClose });\n\n const handleSearchChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setSearchQuery(event.target.value);\n };\n\n return (\n <StyledDialog\n open={open}\n onClose={onClose}\n TransitionComponent={Transition}\n maxWidth={false}\n fullWidth\n data-testid={dataTestId}\n >\n <DialogContent sx={{ overflow: 'visible', p: 0 }}>\n <PaletteContainer elevation={24} sx={{ width: width ?? sxRem(640), maxHeight: maxHeight ?? sxRem(400) }}>\n <PaletteSearch\n inputRef={searchInputRef}\n placeholder={placeholder}\n value={searchQuery}\n dataTestId={dataTestId}\n onChange={handleSearchChange}\n onClose={onClose}\n />\n\n <PaletteResults\n copy={copy}\n listRef={listRef}\n dataTestId={dataTestId}\n searchQuery={searchQuery}\n showRecent={showRecent}\n commands={commands}\n recentCommandIds={recentCommandIds}\n filteredCommands={filteredCommands}\n groupedCommands={groupedCommands}\n selectedIndex={selectedIndex}\n onSelect={setSelectedIndex}\n onExecute={executeCommand}\n />\n\n <PaletteFooter copy={copy} commandCount={filteredCommands.length} />\n </PaletteContainer>\n </DialogContent>\n </StyledDialog>\n );\n};\n\n// Export default\nexport default CommandPalette;\n"],"mappings":"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","names":["Transition"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/pt-BR.navigation.ts"],"sourcesContent":["/**\n * The pt-BR pack for the navigation family. Split out of `pt-BR.ts`, which is a\n * barrel over this folder — see that file for why.\n */\nimport type {\n BreadcrumbCopy,\n CommandPaletteCopy,\n SectionNavCopy,\n} from './copy';\n\nexport const PT_BR_COMMAND_PALETTE_COPY: CommandPaletteCopy = {\n execute: \"Executar\",\n navigate: \"↑↓ Navegar\",\n close: \"ESC Fechar\",\n recent: \"Recentes\",\n tryAnotherTerm: \"Tente outro termo\",\n};\n\nexport const PT_BR_BREADCRUMB_COPY: BreadcrumbCopy = {\n showMore: \"Mostrar mais\",\n moreItems: \"Mais itens\",\n};\n\nexport const PT_BR_SECTION_NAV_COPY: SectionNavCopy = {\n close: \"Fechar\",\n badge: (count) => (count === 1 ? \"1 pendente\" : `${count} pendentes`),\n attention: \"Precisa de atenção\",\n};\n"],"mappings":";AAUO,IAAM,6BAAiD;AAAA,EAC5D,SAAS;AAAA,EACT,UAAU;AAAA,EACV,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,gBAAgB;AAClB;AAEO,IAAM,wBAAwC;AAAA,EACnD,UAAU;AAAA,EACV,WAAW;AACb;AAEO,IAAM,yBAAyC;AAAA,EACpD,OAAO;AAAA,EACP,OAAO,CAAC,UAAW,UAAU,IAAI,eAAe,GAAG,KAAK;AAAA,EACxD,WAAW;AACb;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/feedback/StackedModal/StackedModal.tsx"],"sourcesContent":["import Dialog from '@mui/material/Dialog/index.js';\nimport Slide from '@mui/material/Slide/index.js';\nimport { styled } from '@mui/material/styles/index.js';\nimport type { TransitionProps } from '@mui/material/transitions/index.js';\nimport type { FC } from 'react';\nimport React, { forwardRef, useEffect, useId } from 'react';\nimport { usePanelChrome } from './StackedModal.hooks';\nimport { modalAriaIds, ModalPanelContents, resolveModalContent } from './StackedModal.parts';\nimport type { PanelStyleProps } from './StackedModal.styles';\nimport { dialogRootStyles, STYLE_ONLY_PROPS } from './StackedModal.styles';\nimport type { StackedModalProps } from './StackedModal.types';\n\nconst StyledDialog = styled(Dialog, {\n shouldForwardProp: (prop) => !STYLE_ONLY_PROPS.includes(prop as string),\n})<PanelStyleProps>(({ theme, ...props }) => dialogRootStyles(theme, props));\n\n/** Panels slide in from the right on every device. */\nconst SlideTransition = forwardRef<HTMLDivElement, TransitionProps>(\n function SlideTransition(props, ref) {\n return (\n <Slide direction=\"left\" ref={ref} {...props}>\n {props.children as React.ReactElement}\n </Slide>\n );\n },\n);\n\nconst DEFAULTS: Partial<StackedModalProps> = {\n open: false,\n glass: false,\n navigationTitle: '',\n closeOnClickOutside: true,\n closeOnEsc: true,\n loading: false,\n loadingText: 'Loading...',\n maxWidth: false,\n disableBackdrop: false,\n disableFocusTrap: false,\n keepMounted: false,\n rtl: false,\n};\n\n/**\n * Fills in the defaults for props the caller left `undefined`. A table plus one\n * loop, rather than a default per destructured prop — each of those is a branch,\n * and fifteen of them put the component over the complexity bar on their own.\n */\nconst withDefaults = (props: StackedModalProps): StackedModalProps => {\n const resolved = { ...props };\n for (const [key, value] of Object.entries(DEFAULTS)) {\n const prop = key as keyof StackedModalProps;\n if (resolved[prop] === undefined) {\n Object.assign(resolved, { [prop]: value });\n }\n }\n return resolved;\n};\n\n/** The modal's props once defaults are applied and its stack identity is settled. */\ntype ResolvedProps = StackedModalProps & { modalId: string };\n\n/**\n * `hideHeader` removes the bar that names the dialog; without an\n * `aria-labelledby` of the caller's own, the dialog has no accessible name.\n */\nconst useUnnamedDialogWarning = (unnamed: boolean): void => {\n useEffect(() => {\n const development = typeof process !== 'undefined' && process.env?.NODE_ENV !== 'production';\n if (unnamed && development) {\n // eslint-disable-next-line no-console -- a config warning has no other channel.\n console.warn(\n 'StackedModal: `hideHeader` without `aria-labelledby` leaves the dialog unnamed. ' +\n \"Point `aria-labelledby` at your content header's title.\",\n );\n }\n }, [unnamed]);\n};\n\nconst StackedModalPanel: FC<ResolvedProps> = (props) => {\n const {\n open, onClose, glass, navigationTitle, backLabel, hideClose, hideHeader, children, actions, modalId,\n closeOnClickOutside, closeOnEsc, loading, loadingText, fullScreen, maxWidth, size, panelWidth, disableBackdrop,\n disableFocusTrap, keepMounted, rtl, dataTestId,\n 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, ...otherProps\n } = props;\n\n const {\n dialogRef, modalRole, isAnimating, showSkeleton, zIndex, isMobile, canGoBack, isRoot,\n handleBack, handleClose,\n } = usePanelChrome({\n open, modalId, loading, closeOnEsc, closeOnClickOutside, disableFocusTrap, onClose,\n });\n\n // Don't render if in background (performance optimization)\n if (modalRole === 'background' && !keepMounted) return null;\n\n const { content, modalActions, headerActions, hasMobileActions } = resolveModalContent(\n children,\n actions,\n isMobile,\n );\n const { titleId, descId } = modalAriaIds(modalId, ariaLabelledBy, ariaDescribedBy);\n useUnnamedDialogWarning(Boolean(hideHeader) && !ariaLabelledBy);\n\n return (\n <StyledDialog\n ref={dialogRef}\n open={Boolean(open)}\n onClose={handleClose}\n fullScreen={fullScreen ?? isMobile}\n modalRole={modalRole}\n isAnimating={isAnimating}\n glass={glass}\n rtl={rtl}\n customMaxWidth={maxWidth}\n panelSize={size}\n panelWidth={panelWidth}\n TransitionComponent={SlideTransition}\n maxWidth={maxWidth}\n disableEscapeKeyDown={!closeOnEsc}\n hideBackdrop={disableBackdrop}\n keepMounted={keepMounted}\n aria-labelledby={titleId}\n aria-describedby={descId}\n data-testid={dataTestId}\n sx={{ zIndex }}\n {...otherProps}\n >\n <ModalPanelContents\n backLabel={backLabel}\n showSkeleton={showSkeleton}\n loadingText={loadingText}\n titleId={titleId}\n descId={descId}\n navigationTitle={navigationTitle}\n hideClose={hideClose}\n hideHeader={Boolean(hideHeader) && isRoot}\n canGoBack={canGoBack}\n onBack={handleBack}\n onClose={onClose}\n headerActions={headerActions}\n content={content}\n modalActions={modalActions}\n hasMobileActions={hasMobileActions}\n rtl={rtl}\n dataTestId={dataTestId}\n />\n </StyledDialog>\n );\n};\n\nexport const StackedModal: FC<StackedModalProps> = (props) => {\n // A modal with no caller-supplied id still needs a STABLE one — it keys this\n // panel's entry in the stack, so a value that changed per render (as a\n // `Math.random()` default does) would re-register it on every pass.\n const fallbackId = useId();\n const resolved = withDefaults(props);\n return <StackedModalPanel {...resolved} modalId={resolved.modalId ?? fallbackId} />;\n};\n\n// Re-exported so `./StackedModal` stays the single public entry point for the\n// component and its stack primitives, as the barrel and existing imports expect.\nexport {\n ModalStackProvider,\n ModalStackProvider as StackedModalProvider,\n useModalStack,\n useModalStack as useStackedModal,\n} from './modal-stack';\nexport { StackedModalActions, StackedModalContent } from './StackedModal.parts';\n"],"mappings":"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","names":["SlideTransition"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Stepper/Stepper.tsx"],"sourcesContent":["import CheckCircle from '@mui/icons-material/CheckCircle';\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { styled } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport type { Step, StepItemProps, StepperProps } from './Stepper.types';\nimport { neutralTones } from '../../../tokens/ink';\nimport { rem, sxRem } from '../../../tokens/relative';\nimport type { SizeValue } from '../../../tokens/scales';\n\n/**\n * The five house stops, drawn rather than collapsed.\n *\n * These were two-way ternaries on `sm`, which is what a two-value size prop\n * allows; with the full scale they have to be real values or the three new\n * stops would render identically to `md` and the prop would be a lie.\n */\nconst STEP_MIN_WIDTH: Record<SizeValue, number> = { xs: 44, sm: 56, md: 80, lg: 96, xl: 112 };\nconst STEP_ICON_SIZE: Record<SizeValue, number> = { xs: 14, sm: 18, md: 24, lg: 30, xl: 36 };\n\n\nconst StepperRoot = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'orientation',\n})<{ orientation: 'horizontal' | 'vertical'; component?: React.ElementType }>(({ orientation }) => ({\n display: 'flex',\n flexDirection: orientation === 'horizontal' ? 'row' : 'column',\n // Use flex-start to align all step circles at the same vertical position\n alignItems: 'flex-start',\n}));\n\nconst StepItem = styled(Box, {\n shouldForwardProp: (prop) => !['orientation', 'isLast'].includes(prop as string),\n})<{ orientation: 'horizontal' | 'vertical'; isLast: boolean }>(({ orientation, isLast }) => ({\n display: 'flex',\n // For horizontal: row layout so connector appears beside step content\n // For vertical: column layout so connector appears below step content\n flexDirection: orientation === 'horizontal' ? 'row' : 'column',\n // For horizontal: flex-start to keep circles aligned at top\n // For vertical: center to align connector with centered circle\n alignItems: orientation === 'horizontal' ? 'flex-start' : 'center',\n flex: orientation === 'horizontal' && !isLast ? 1 : 'none',\n position: 'relative',\n // For vertical: ensure consistent width for proper centering\n ...(orientation === 'vertical' && {\n width: '100%',\n }),\n}));\n\n/** Circle diameter per size. */\nconst CIRCLE_SIZE: Record<SizeValue, number> = { xs: 24, sm: 32, md: 48, lg: 60, xl: 72 };\n\nconst StepButton = styled(Button, {\n shouldForwardProp: (prop) =>\n !['isActive', 'isCompleted', 'clickable', 'stepSize'].includes(prop as string),\n})<{ isActive: boolean; isCompleted: boolean; clickable: boolean; stepSize: SizeValue }>(\n ({ theme, isActive, isCompleted, clickable, stepSize }) => ({\n minWidth: rem(theme, CIRCLE_SIZE[stepSize]),\n width: rem(theme, CIRCLE_SIZE[stepSize]),\n height: rem(theme, CIRCLE_SIZE[stepSize]),\n borderRadius: '50%',\n padding: 0,\n backgroundColor: isCompleted\n ? theme.palette.primary.main\n : isActive\n ? theme.palette.primary.main\n : neutralTones(theme).track,\n color: isCompleted || isActive ? theme.palette.primary.contrastText : theme.palette.text.primary,\n cursor: clickable ? 'pointer' : 'default',\n pointerEvents: clickable ? 'auto' : 'none',\n transition: theme.transitions.create(['background-color', 'transform'], {\n duration: theme.transitions.duration.short,\n }),\n '&:hover': clickable\n ? {\n backgroundColor: isCompleted\n ? theme.palette.primary.dark\n : isActive\n ? theme.palette.primary.dark\n : neutralTones(theme).subtle,\n transform: 'scale(1.05)',\n }\n : {},\n '&:disabled': {\n backgroundColor: neutralTones(theme).track,\n color: theme.palette.text.disabled,\n },\n }),\n);\n\nconst StepConnector = styled(Box, {\n shouldForwardProp: (prop) =>\n !['orientation', 'isCompleted', 'size'].includes(prop as string),\n})<{ orientation: 'horizontal' | 'vertical'; isCompleted: boolean; size: SizeValue }>(\n ({ theme, orientation, isCompleted, size }) => ({\n backgroundColor: isCompleted ? theme.palette.primary.main : neutralTones(theme).track,\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.short,\n }),\n ...(orientation === 'horizontal'\n ? {\n flex: 1,\n height: rem(theme, 2),\n // Vertically centered on the circle (circle/2 - 1 for the 2px line).\n marginTop: rem(theme, CIRCLE_SIZE[size] / 2 - 1),\n marginLeft: rem(theme, 8),\n marginRight: rem(theme, 8),\n minWidth: rem(theme, 24),\n }\n : {\n width: rem(theme, 2),\n height: rem(theme, 32),\n marginTop: rem(theme, 8),\n marginBottom: rem(theme, 8),\n // Use margin auto to center horizontally\n marginLeft: 'auto',\n marginRight: 'auto',\n }),\n }),\n);\n\nconst StepLabel = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'orientation',\n})<{ orientation: 'horizontal' | 'vertical' }>(({ theme, orientation }) => ({\n textAlign: 'center',\n marginTop: orientation === 'horizontal' ? rem(theme, 8) : 0,\n}));\n\ntype StepSize = SizeValue;\ntype LabelVariant = 'caption' | 'body2';\n\n/** Space-joined state classes for a step (active / completed / optional). */\nfunction stepClasses(isActive: boolean, isCompleted: boolean, optional?: boolean): string {\n return [\n isActive && 'stepper-step-active',\n isCompleted && 'stepper-step-completed',\n optional && 'stepper-step-optional',\n ]\n .filter(Boolean)\n .join(' ');\n}\n\n/** The circle content-column width per orientation/size. */\nfunction contentSx(orientation: 'horizontal' | 'vertical', size: StepSize) {\n return orientation === 'horizontal'\n ? { minWidth: sxRem(STEP_MIN_WIDTH[size]), maxWidth: sxRem(150), flex: '0 1 auto' }\n : { flexShrink: 0 };\n}\n\ninterface StepPartProps {\n step: Step;\n index: number;\n isActive: boolean;\n size: StepSize;\n labelVariant: LabelVariant;\n}\n\n/** The step circle: a check when completed, otherwise the 1-based index. */\nconst StepCircle: React.FC<\n StepPartProps & { isCompleted: boolean; isClickable: boolean; onClick: () => void }\n> = ({ step, index, isActive, isCompleted, isClickable, size, labelVariant, onClick }) => {\n const state = isCompleted ? ' (completed)' : isActive ? ' (current)' : '';\n return (\n <StepButton\n isActive={isActive}\n isCompleted={isCompleted}\n clickable={isClickable}\n stepSize={size}\n onClick={onClick}\n disabled={step.disabled}\n aria-current={isActive ? 'step' : undefined}\n aria-label={`Step ${index + 1}: ${step.label}${step.optional ? ' (optional)' : ''}${state}`}\n data-testid={`stepper-step-icon-${index}`}\n >\n {isCompleted ? (\n <CheckCircle sx={{ fontSize: sxRem(STEP_ICON_SIZE[size]) }} />\n ) : (\n <Typography variant={labelVariant} fontWeight=\"bold\">\n {index + 1}\n </Typography>\n )}\n </StepButton>\n );\n};\n\n/** The step label block: title, optional marker, and description. */\nconst StepLabelBlock: React.FC<StepPartProps & { orientation: 'horizontal' | 'vertical' }> = ({\n step,\n index,\n isActive,\n orientation,\n size,\n labelVariant,\n}) => (\n <StepLabel\n orientation={orientation}\n data-testid={`stepper-step-label-${index}`}\n sx={size === 'sm' && orientation === 'horizontal' ? { mt: sxRem(2) } : undefined}\n >\n <Typography\n variant={labelVariant}\n fontWeight={isActive ? 'bold' : 'normal'}\n color={isActive ? 'primary' : 'textPrimary'}\n >\n {step.label}\n {step.optional && (\n <Typography component=\"span\" variant=\"caption\" color=\"textSecondary\" sx={{ ml: 1 }}>\n (optional)\n </Typography>\n )}\n </Typography>\n {step.description && (\n <Typography variant=\"caption\" color=\"textSecondary\" display=\"block\">\n {step.description}\n </Typography>\n )}\n </StepLabel>\n);\n\nconst StepperItem: React.FC<StepItemProps> = ({\n step,\n index,\n isActive,\n isCompleted,\n isLast,\n orientation,\n size,\n variant,\n clickable,\n onStepClick,\n renderConnector,\n nextStep,\n}) => {\n const labelVariant: LabelVariant = size === 'sm' ? 'caption' : 'body2';\n const isClickable = Boolean(clickable) && !step.disabled && (variant === 'non-linear' || !isActive);\n const handleStepClick = () => {\n if (isClickable && onStepClick) onStepClick(step.id);\n };\n const connector =\n renderConnector && nextStep ? (\n renderConnector(step, nextStep, { completed: isCompleted, active: isActive })\n ) : (\n <StepConnector orientation={orientation} isCompleted={isCompleted} size={size} data-testid={`stepper-connector-${index}`} />\n );\n\n return (\n <StepItem\n orientation={orientation}\n isLast={isLast}\n role=\"listitem\"\n data-testid={`stepper-step-${index}`}\n className={stepClasses(isActive, isCompleted, step.optional)}\n >\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"center\"\n data-testid={`stepper-step-content-${index}`}\n sx={contentSx(orientation, size)}\n >\n <StepCircle\n step={step}\n index={index}\n isActive={isActive}\n isCompleted={isCompleted}\n isClickable={isClickable}\n size={size}\n labelVariant={labelVariant}\n onClick={handleStepClick}\n />\n <StepLabelBlock\n step={step}\n index={index}\n isActive={isActive}\n orientation={orientation}\n size={size}\n labelVariant={labelVariant}\n />\n </Box>\n {!isLast && connector}\n </StepItem>\n );\n};\n\nexport const Stepper: React.FC<StepperProps> = ({\n steps,\n activeId,\n completed = new Set(),\n orientation = 'horizontal',\n size = 'md',\n variant = 'linear',\n onStepChange,\n clickable,\n renderConnector,\n className,\n 'data-testid': dataTestId,\n}) => {\n // Determine clickable behavior\n const isClickable = clickable ?? variant === 'non-linear';\n\n return (\n <StepperRoot\n component=\"ol\"\n orientation={orientation}\n className={className}\n data-testid={dataTestId || 'stepper-container'}\n sx={{\n listStyle: 'none',\n padding: 0,\n margin: 0,\n }}\n >\n {steps.map((step, index) => {\n const isActive = step.id === activeId;\n const isCompleted = completed.has(step.id);\n const isLast = index === steps.length - 1;\n const nextStep = !isLast ? steps[index + 1] : undefined;\n\n return (\n <StepperItem\n key={step.id}\n step={step}\n index={index}\n isActive={isActive}\n isCompleted={isCompleted}\n isLast={isLast}\n orientation={orientation}\n size={size}\n variant={variant}\n clickable={isClickable}\n onStepClick={onStepChange}\n renderConnector={renderConnector}\n nextStep={nextStep}\n />\n );\n })}\n </StepperRoot>\n );\n};"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/layout/ContentToolbar/ViewSelector.tsx"],"sourcesContent":["'use client';\n\nimport CheckIcon from '@mui/icons-material/Check';\nimport ChevronDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport GridIcon from '@mui/icons-material/GridViewOutlined';\nimport ListIcon from '@mui/icons-material/FormatListBulletedRounded';\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport ListItemIcon from '@mui/material/ListItemIcon/index.js';\nimport ListItemText from '@mui/material/ListItemText/index.js';\nimport Menu from '@mui/material/Menu/index.js';\nimport MenuItem from '@mui/material/MenuItem/index.js';\nimport Slider from '@mui/material/Slider/index.js';\n// `SvgIconComponent` is declared inline in @mui/icons-material's barrel and has\n// no module of its own, so the deep-import equivalent is its own definition:\n// `type SvgIconComponent = typeof SvgIcon`.\nimport type SvgIcon from '@mui/material/SvgIcon/index.js';\nimport React, { useState } from 'react';\n\nimport type { ViewMode, ViewSelectorProps } from './ContentToolbar.types';\nimport { fieldRadiusPx } from '../../../tokens/field-radius';\nimport { fieldHeight } from '../../../tokens/field-height';\nimport { sxRem } from '../../../tokens/relative';\n\nconst VIEW_OPTIONS: { value: ViewMode; label: string; icon: typeof SvgIcon }[] = [\n { value: 'grid', label: 'Grid View', icon: GridIcon },\n { value: 'list', label: 'List View', icon: ListIcon },\n];\n\n/**\n * View selector: a grid/list dropdown plus a card-size zoom slider (grid mode\n * only). Faithful MUI port of the reference toolbar's view control.\n */\nexport function ViewSelector({\n viewMode,\n onViewModeChange,\n zoom,\n onZoomChange,\n cardSizeLabel,\n}: ViewSelectorProps): React.JSX.Element {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n const activeOption = VIEW_OPTIONS.find((option) => option.value === viewMode) ?? VIEW_OPTIONS[0]!;\n const ActiveIcon = activeOption.icon;\n\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1.5 }}>\n {viewMode === 'grid' && (\n <Box sx={{ width: sxRem(96), display: 'flex', alignItems: 'center' }}>\n <Slider\n data-testid=\"resize-card-slider\"\n aria-label={cardSizeLabel}\n value={zoom[0] ?? 0}\n onChange={(_, value) => onZoomChange([value as number])}\n min={0}\n max={100}\n step={1}\n size=\"small\"\n />\n </Box>\n )}\n\n <Button\n data-testid=\"view-mode-btn\"\n variant=\"text\"\n size=\"small\"\n color=\"inherit\"\n aria-label={activeOption.label}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n onClick={(event) => setAnchorEl(event.currentTarget)}\n sx={{ minWidth: 0, height: fieldHeight, px: 1, gap: 1, borderRadius: fieldRadiusPx, color: 'text.secondary' }}\n >\n <ActiveIcon sx={{ fontSize: sxRem(16) }} />\n <ChevronDownIcon sx={{ fontSize: sxRem(14) }} />\n </Button>\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={() => setAnchorEl(null)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n slotProps={{ paper: { sx: { minWidth: sxRem(180) } } }}\n >\n {VIEW_OPTIONS.map((option) => {\n const OptionIcon = option.icon;\n const selected = viewMode === option.value;\n return (\n <MenuItem\n key={option.value}\n data-testid={`view-mode-${option.value}`}\n onClick={() => {\n onViewModeChange(option.value);\n setAnchorEl(null);\n }}\n sx={{ gap: 1.5 }}\n >\n <ListItemText>{option.label}</ListItemText>\n <OptionIcon sx={{ fontSize: sxRem(16), color: 'text.secondary' }} />\n <ListItemIcon sx={{ minWidth: 'auto !important' }}>\n <CheckIcon sx={{ fontSize: sxRem(16), color: selected ? 'text.primary' : 'transparent' }} />\n </ListItemIcon>\n </MenuItem>\n );\n })}\n </Menu>\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Timeline/TimelineRow.tsx"],"sourcesContent":["import DotIcon from '@mui/icons-material/Circle';\nimport ExpandIcon from '@mui/icons-material/ExpandMore';\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport Card from '@mui/material/Card/index.js';\nimport CardContent from '@mui/material/CardContent/index.js';\nimport Chip from '@mui/material/Chip/index.js';\nimport Collapse from '@mui/material/Collapse/index.js';\nimport Fade from '@mui/material/Fade/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Stack from '@mui/material/Stack/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, keyframes, styled, type Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport type { TimelineItem, TimelineProps } from './Timeline.types';\nimport { onMedia, uiInk } from '../../../tokens/ink';\nimport { rem, rems } from '../../../tokens/relative';\n\nconst slideInAnimation = (theme: Theme) =>\n keyframes`from { opacity: 0; transform: translateX(${rem(theme, -20)}); } to { opacity: 1; transform: translateX(0); }`;\nconst pulseAnimation = keyframes`0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.1); opacity: 0.8; }`;\n\nconst TimelineItemContainer = styled(Box, {\n shouldForwardProp: (prop) => !['animated', 'alternating', 'index'].includes(prop as string),\n})<{\n animated: boolean;\n alternating: boolean;\n index: number;\n orientation: 'vertical' | 'horizontal';\n}>(({ theme, animated, alternating, index, orientation }) => ({\n display: 'flex',\n gap: theme.spacing(2),\n position: 'relative',\n ...(animated && {\n animation: `${slideInAnimation(theme)} 0.5s ease ${index * 0.1}s both`,\n }),\n ...(orientation === 'vertical' &&\n alternating && {\n flexDirection: index % 2 === 0 ? 'row' : 'row-reverse',\n textAlign: index % 2 === 0 ? 'left' : 'right',\n }),\n ...(orientation === 'horizontal' && {\n flexDirection: 'column',\n alignItems: 'center',\n minWidth: rem(theme, 280),\n }),\n}));\n\nconst TimelineConnector = styled(Box, {\n shouldForwardProp: (prop) => !['isLast'].includes(prop as string),\n})<{\n orientation: 'vertical' | 'horizontal';\n isLast: boolean;\n}>(({ theme, orientation, isLast }) => ({\n position: 'absolute',\n background: `linear-gradient(180deg, ${theme.palette.primary.main} 0%, ${alpha(theme.palette.primary.main, 0.3)} 100%)`,\n ...(orientation === 'vertical'\n ? {\n width: rem(theme, 2),\n height: isLast ? 0 : `calc(100% + ${rem(theme, 16)})`,\n left: rem(theme, 19),\n top: rem(theme, 40),\n }\n : {\n height: rem(theme, 2),\n width: isLast ? 0 : rem(theme, 240),\n top: rem(theme, 19),\n left: rem(theme, 40),\n }),\n}));\n\nconst TimelineDot = styled(Box, {\n shouldForwardProp: (prop) => !['dotColor', 'hasIcon', 'animated'].includes(prop as string),\n})<{ dotColor?: string; hasIcon: boolean; animated: boolean }>(({ theme, dotColor, hasIcon, animated }) => ({\n width: rem(theme, 40),\n height: rem(theme, 40),\n borderRadius: '50%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: dotColor\n ? `linear-gradient(135deg, ${dotColor} 0%, ${alpha(dotColor, 0.8)} 100%)`\n : `linear-gradient(135deg, ${theme.palette.primary.main} 0%, ${theme.palette.primary.light} 100%)`,\n boxShadow: `${rems(theme, 0, 4, 12)} ${alpha(dotColor || theme.palette.primary.main, 0.3)}`,\n border: `${rem(theme, 2)} solid ${theme.palette.background.paper}`,\n zIndex: 1,\n flexShrink: 0,\n ...(animated && {\n animation: `${pulseAnimation} 2s ease infinite`,\n }),\n '& svg': {\n fontSize: rem(theme, hasIcon ? 19.2 : 12.8),\n color: theme.palette.background.paper,\n },\n}));\n\nconst TimelineCard = styled(Card, {\n shouldForwardProp: (prop) => !['timelineVariant', 'isClickable'].includes(prop as string),\n})<{ timelineVariant: 'default' | 'compact' | 'detailed'; isClickable: boolean }>(\n ({ theme, timelineVariant, isClickable }) => ({\n flex: 1,\n background: `linear-gradient(135deg, ${alpha(theme.palette.background.paper, 0.9)} 0%, ${alpha(theme.palette.background.paper, 0.8)} 100%)`,\n backdropFilter: `blur(${rem(theme, 10)})`,\n WebkitBackdropFilter: `blur(${rem(theme, 10)})`,\n border: `1px solid ${alpha(theme.palette.divider, 0.18)}`,\n transition: theme.transitions.create(['transform', 'box-shadow']),\n ...(isClickable && {\n cursor: 'pointer',\n '&:hover': {\n transform: `translateY(${rem(theme, -2)})`,\n boxShadow: theme.shadows[8],\n },\n }),\n ...(timelineVariant === 'compact' && {\n padding: theme.spacing(1.5),\n '& .MuiCardContent-root': {\n padding: 0,\n '&:last-child': {\n paddingBottom: 0,\n },\n },\n }),\n }),\n);\n\nconst TimelineTimestamp = styled(Typography)(({ theme }) => ({\n color: theme.palette.text.secondary,\n fontSize: rem(theme, 12),\n fontWeight: 500,\n letterSpacing: rem(theme, 0.5),\n textTransform: 'uppercase',\n}));\n\nconst MetadataChip = styled(Chip)(({ theme }) => ({\n height: rem(theme, 24),\n fontSize: rem(theme, 12),\n background: alpha(theme.palette.primary.main, 0.08),\n border: `1px solid ${alpha(theme.palette.primary.main, 0.2)}`,\n}));\n\n// Description, metadata chips and the action button, revealed on expand — or\n// always, in the detailed variant.\nconst TimelineDetails: React.FC<{\n item: TimelineItem;\n isExpanded: boolean;\n variant: NonNullable<TimelineProps['variant']>;\n}> = ({ item, isExpanded, variant }) => {\n const open = isExpanded || variant === 'detailed';\n\n return (\n <Collapse in={open}>\n <Fade in={open}>\n <Stack spacing={1.5} sx={{ mt: 1 }}>\n {item.description && (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {item.description}\n </Typography>\n )}\n\n {item.metadata && (\n <Box sx={{ display: 'flex', flexWrap: 'wrap', gap: 1 }}>\n {Object.entries(item.metadata).map(([key, value]) => (\n <MetadataChip key={key} label={`${key}: ${value}`} size=\"small\" />\n ))}\n </Box>\n )}\n\n {item.action && (\n <Box>\n <Button\n size=\"small\"\n variant=\"contained\"\n onClick={(e) => {\n e.stopPropagation();\n item.action!.onClick();\n }}\n sx={(theme) => ({\n background: `linear-gradient(135deg, ${uiInk(theme).celebration.violet[0]} 0%, ${uiInk(theme).celebration.violet[1]} 100%)`,\n color: onMedia(theme),\n })}\n >\n {item.action.label}\n </Button>\n </Box>\n )}\n </Stack>\n </Fade>\n </Collapse>\n );\n};\n\n// Timestamp, title and the expand toggle.\nconst TimelineCardHeader: React.FC<{\n item: TimelineItem;\n variant: NonNullable<TimelineProps['variant']>;\n isExpanded: boolean;\n onExpandClick: (itemId: string, event: React.MouseEvent) => void;\n}> = ({ item, variant, isExpanded, onExpandClick }) => (\n <Box\n sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start' }}\n >\n <Box sx={{ flex: 1 }}>\n <TimelineTimestamp data-testid=\"timeline-timestamp\">\n {item.timestamp}\n </TimelineTimestamp>\n <Typography\n variant={variant === 'compact' ? 'body2' : 'h6'}\n fontWeight={variant === 'compact' ? 500 : 600}\n sx={{ mt: 0.5 }}\n >\n {item.title}\n </Typography>\n </Box>\n {item.description && variant !== 'compact' && (\n <IconButton\n size=\"small\"\n onClick={(e) => onExpandClick(item.id, e)}\n aria-label={isExpanded ? 'Collapse item details' : 'Expand item details'}\n sx={{\n transform: isExpanded ? 'rotate(180deg)' : 'rotate(0deg)',\n transition: 'transform 0.3s ease',\n }}\n >\n <ExpandIcon />\n </IconButton>\n )}\n </Box>\n);\n\n// The card beside the rail: timestamp, title, expand toggle and the collapsible\n// detail body.\nconst TimelineRowCard: React.FC<{\n item: TimelineItem;\n variant: NonNullable<TimelineProps['variant']>;\n isClickable: boolean;\n isExpanded: boolean;\n onItemClick?: (item: TimelineItem) => void;\n onExpandClick: (itemId: string, event: React.MouseEvent) => void;\n}> = ({ item, variant, isClickable, isExpanded, onItemClick, onExpandClick }) => (\n <TimelineCard\n timelineVariant={variant}\n isClickable={isClickable}\n onClick={isClickable ? () => onItemClick?.(item) : undefined}\n role=\"article\"\n aria-label={`Timeline item: ${item.title}`}\n data-testid=\"timeline-card\"\n >\n <CardContent>\n <Stack spacing={1}>\n <TimelineCardHeader\n item={item}\n variant={variant}\n isExpanded={isExpanded}\n onExpandClick={onExpandClick}\n />\n\n {variant === 'compact' && item.description && (\n <Typography variant=\"caption\" color=\"text.secondary\">\n {item.description}\n </Typography>\n )}\n\n {variant !== 'compact' && (\n <TimelineDetails item={item} isExpanded={isExpanded} variant={variant} />\n )}\n </Stack>\n </CardContent>\n </TimelineCard>\n);\n\n// One entry: the dot and connector on the rail, and the card beside it.\nexport const TimelineRow: React.FC<{\n item: TimelineItem;\n index: number;\n isLast: boolean;\n variant: NonNullable<TimelineProps['variant']>;\n orientation: 'vertical' | 'horizontal';\n showConnector: boolean;\n animated: boolean;\n alternating: boolean;\n isExpanded: boolean;\n onItemClick?: (item: TimelineItem) => void;\n onExpandClick: (itemId: string, event: React.MouseEvent) => void;\n}> = ({\n item,\n index,\n isLast,\n variant,\n orientation,\n showConnector,\n animated,\n alternating,\n isExpanded,\n onItemClick,\n onExpandClick,\n}) => {\n\n \n // Determine if item should be clickable:\n // - Has onItemClick callback, OR\n // - Has description and variant is not compact (so it can be expanded)\n const hasExpandableContent = item.description && variant !== 'compact';\n const isClickable = !!onItemClick || !!hasExpandableContent;\n\n return (\n <TimelineItemContainer\n key={item.id}\n animated={animated}\n alternating={alternating && orientation === 'vertical'}\n index={index}\n orientation={orientation}\n data-testid=\"timeline-item-container\"\n >\n <Box sx={{ position: 'relative' }}>\n <TimelineDot\n dotColor={item.color}\n hasIcon={!!item.icon}\n animated={animated}\n data-testid=\"timeline-dot\"\n >\n {item.icon ? (\n <Box data-testid=\"item-icon\">{item.icon}</Box>\n ) : (\n <DotIcon data-testid=\"item-icon-default\" />\n )}\n </TimelineDot>\n {showConnector && !isLast && (\n <TimelineConnector\n orientation={orientation}\n isLast={isLast}\n data-testid=\"timeline-connector\"\n />\n )}\n </Box>\n\n <TimelineRowCard\n item={item}\n variant={variant}\n isClickable={isClickable}\n isExpanded={isExpanded}\n onItemClick={onItemClick}\n onExpandClick={onExpandClick}\n />\n </TimelineItemContainer>\n );\n};\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/pt-BR.feedback.ts"],"sourcesContent":["/**\n * The pt-BR pack for the feedback family. Split out of `pt-BR.ts`, which is a\n * barrel over this folder — see that file for why.\n */\nimport type {\n ChromeCopy,\n NotificationUnblockCopy,\n TutorialCopy,\n} from './copy';\n\nexport const PT_BR_TUTORIAL_COPY: TutorialCopy = {\n skip: \"Pular\",\n previous: \"Anterior\",\n next: \"Próximo\",\n restart: \"Recomeçar\",\n complete: \"Concluir\",\n finish: \"Finalizar\",\n requiresAction: \"Conclua a ação obrigatória primeiro\",\n};\n\nexport const PT_BR_CHROME_COPY: ChromeCopy = {\n dismissToast: \"Fechar o aviso\",\n goBack: \"Voltar\",\n closePanel: \"Fechar\",\n closeTab: \"Fechar a aba\",\n scrollRegion: \"Conteúdo rolável\",\n scrollToTop: \"Voltar ao topo\",\n share: \"Compartilhar\",\n};\n\nconst PT_BR_CHROMIUM_DESKTOP = [\n \"Clique no ícone à esquerda do endereço do site.\",\n \"Abra \\\"Configurações do site\\\".\",\n \"Em \\\"Notificações\\\", escolha \\\"Permitir\\\".\",\n \"Volte a esta página e recarregue.\",\n] as const;\n\nconst PT_BR_CHROMIUM_ANDROID = [\n \"Toque no ícone à esquerda do endereço do site.\",\n \"Toque em \\\"Permissões\\\".\",\n \"Toque em \\\"Notificações\\\" e escolha \\\"Permitir\\\".\",\n \"Volte a esta página e recarregue.\",\n] as const;\n\nexport const PT_BR_NOTIFICATION_UNBLOCK_COPY: NotificationUnblockCopy = {\n ios: [\n \"Abra os Ajustes do iPhone.\",\n \"Toque em \\\"Notificações\\\".\",\n \"Encontre este app na lista e ative \\\"Permitir Notificações\\\".\",\n ],\n chrome: { desktop: PT_BR_CHROMIUM_DESKTOP, android: PT_BR_CHROMIUM_ANDROID },\n edge: {\n desktop: [\n \"Clique no cadeado à esquerda do endereço do site.\",\n \"Abra \\\"Permissões para este site\\\".\",\n \"Em \\\"Notificações\\\", escolha \\\"Permitir\\\".\",\n \"Volte a esta página e recarregue.\",\n ],\n android: PT_BR_CHROMIUM_ANDROID,\n },\n firefox: {\n desktop: [\n \"Clique no ícone de permissões à esquerda do endereço do site.\",\n \"Ao lado de \\\"Enviar notificações\\\", clique no X para tirar o bloqueio.\",\n \"Recarregue a página e ative as notificações de novo.\",\n ],\n android: [\n \"Abra o menu do navegador e toque em \\\"Configurações\\\".\",\n \"Toque em \\\"Permissões de sites\\\" e depois em \\\"Notificações\\\".\",\n \"Encontre este site e escolha \\\"Permitir\\\".\",\n \"Volte a esta página e recarregue.\",\n ],\n },\n opera: { desktop: PT_BR_CHROMIUM_DESKTOP, android: PT_BR_CHROMIUM_ANDROID },\n safari: {\n desktop: [\n \"No menu Safari, abra \\\"Ajustes\\\".\",\n \"Vá na aba \\\"Sites\\\" e, na lateral, em \\\"Notificações\\\".\",\n \"Encontre este site e escolha \\\"Permitir\\\".\",\n \"Volte a esta página e recarregue.\",\n ],\n },\n samsung: {\n android: [\n \"Abra o menu do navegador e toque em \\\"Configurações\\\".\",\n \"Toque em \\\"Sites e downloads\\\" e depois em \\\"Notificações\\\".\",\n \"Encontre este site e permita as notificações.\",\n \"Volte a esta página e recarregue.\",\n ],\n },\n other: [\n \"Abra as configurações do navegador.\",\n \"Procure as permissões dos sites e depois \\\"Notificações\\\".\",\n \"Permita as notificações para este site.\",\n \"Volte a esta página e recarregue.\",\n ],\n};\n"],"mappings":";AAUO,IAAM,sBAAoC;AAAA,EAC/C,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,gBAAgB;AAClB;AAEO,IAAM,oBAAgC;AAAA,EAC3C,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,cAAc;AAAA,EACd,aAAa;AAAA,EACb,OAAO;AACT;AAEA,IAAM,yBAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,yBAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,kCAA2D;AAAA,EACtE,KAAK;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,QAAQ,EAAE,SAAS,wBAAwB,SAAS,uBAAuB;AAAA,EAC3E,MAAM;AAAA,IACJ,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,SAAS;AAAA,EACX;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO,EAAE,SAAS,wBAAwB,SAAS,uBAAuB;AAAA,EAC1E,QAAQ;AAAA,IACN,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/feedback/TutorialOverlay/TutorialOverlay.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport Fade from '@mui/material/Fade/index.js';\nimport LinearProgress from '@mui/material/LinearProgress/index.js';\nimport Paper from '@mui/material/Paper/index.js';\nimport Portal from '@mui/material/Portal/index.js';\nimport { alpha, keyframes, styled } from '@mui/material/styles/index.js';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport type { FC} from 'react';\nimport React, { } from 'react';\n\nimport { scrim, sheen } from '../../../tokens/ink';\nimport { ABSOLUTE_INK } from '../../../tokens/ink.core';\nimport { rem, remPx, rems } from '../../../tokens/relative';\n\nimport { useTutorialOverlay } from './TutorialOverlay.hooks';\nimport { TutorialStepBody } from './TutorialStepBody';\nimport type { TutorialOverlayProps } from './TutorialOverlay.types';\n\n// Animation keyframes — the ring's sheen is the absolute white; its reach follows the type scale.\nconst pulseAnimation = (theme: Theme) => keyframes`\n 0% {\n box-shadow: 0 0 0 0 ${alpha(ABSOLUTE_INK.white, 0.7)};\n }\n 70% {\n box-shadow: 0 0 0 ${rem(theme, 20)} ${alpha(ABSOLUTE_INK.white, 0)};\n }\n 100% {\n box-shadow: 0 0 0 0 ${alpha(ABSOLUTE_INK.white, 0)};\n }\n`;\n\nconst floatAnimation = (theme: Theme) => keyframes`\n 0%, 100% {\n transform: translateY(0);\n }\n 50% {\n transform: translateY(${rem(theme, -10)});\n }\n`;\n\n// Styled components\nconst Overlay = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'allowClickThrough' })<{ allowClickThrough?: boolean }>(({ theme, allowClickThrough }) => ({\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: theme.zIndex.modal + 100,\n pointerEvents: allowClickThrough ? 'none' : 'auto',\n transition: 'opacity 0.3s ease' }));\n\nconst Backdrop = styled(Box)(({ theme }) => ({\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n background: scrim(theme, 0.7),\n backdropFilter: `blur(${rem(theme, 2)})` }));\n\nconst Spotlight = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'bounds' && prop !== 'padding' })<{ bounds: globalThis.DOMRect; padding: number }>(({ theme, bounds, padding }) => {\n // `bounds` is the target's measured rect; the design-px clearance joins it as px.\n const clearance = remPx(theme, padding);\n return {\n position: 'absolute',\n top: bounds.top - clearance,\n left: bounds.left - clearance,\n width: bounds.width + clearance * 2,\n height: bounds.height + clearance * 2,\n borderRadius: rem(theme, 8),\n border: `${rem(theme, 2)} solid ${sheen(theme, 0.5)}`,\n animation: `${pulseAnimation(theme)} 2s infinite`,\n pointerEvents: 'none',\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n inset: rem(theme, -2),\n borderRadius: rem(theme, 8),\n background: 'transparent',\n boxShadow: `${rems(theme, 0, 0, 0, 9999)} ${scrim(theme, 0.7)}` } };\n});\n\nconst TooltipContainer = styled(Paper, {\n shouldForwardProp: (prop) => prop !== 'placement' })<{ placement: string }>(({ theme, placement }) => ({\n position: 'absolute',\n maxWidth: rem(theme, 360),\n padding: theme.spacing(3),\n background: `linear-gradient(135deg, ${alpha(theme.palette.background.paper, 0.98)} 0%, ${alpha(theme.palette.background.paper, 0.95)} 100%)`,\n backdropFilter: `blur(${rem(theme, 20)})`,\n WebkitBackdropFilter: `blur(${rem(theme, 20)})`,\n border: `1px solid ${alpha(theme.palette.divider, 0.18)}`,\n boxShadow: theme.shadows[12],\n animation: `${floatAnimation(theme)} 3s ease-in-out infinite`,\n pointerEvents: 'auto',\n zIndex: theme.zIndex.modal + 101,\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n width: rem(theme, 12),\n height: rem(theme, 12),\n background: 'inherit',\n transform: 'rotate(45deg)',\n border: 'inherit',\n ...(placement === 'top' && {\n bottom: rem(theme, -7),\n left: '50%',\n marginLeft: rem(theme, -6),\n borderTop: 'none',\n borderLeft: 'none' }),\n ...(placement === 'bottom' && {\n top: rem(theme, -7),\n left: '50%',\n marginLeft: rem(theme, -6),\n borderBottom: 'none',\n borderRight: 'none' }),\n ...(placement === 'left' && {\n right: rem(theme, -7),\n top: '50%',\n marginTop: rem(theme, -6),\n borderLeft: 'none',\n borderBottom: 'none' }),\n ...(placement === 'right' && {\n left: rem(theme, -7),\n top: '50%',\n marginTop: rem(theme, -6),\n borderRight: 'none',\n borderTop: 'none' }) } }));\n\nconst ProgressBar = styled(LinearProgress)(({ theme }) => ({\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n height: rem(theme, 4),\n zIndex: theme.zIndex.modal + 102,\n '& .MuiLinearProgress-bar': {\n background: `linear-gradient(90deg, ${theme.palette.primary.main} 0%, ${theme.palette.primary.light} 100%)` } }));\n\ntype TutorialDefaultedKeys =\n | 'initialStep'\n | 'active'\n | 'showProgress'\n | 'allowKeyboardNavigation'\n | 'allowClickThrough'\n | 'variant'\n | 'allowSkip'\n | 'animated';\n\ntype ResolvedTutorialProps = TutorialOverlayProps &\n Required<Pick<TutorialOverlayProps, TutorialDefaultedKeys>>;\n\nconst TUTORIAL_DEFAULTS: Pick<TutorialOverlayProps, TutorialDefaultedKeys> = {\n initialStep: 0,\n active: true,\n showProgress: true,\n allowKeyboardNavigation: true,\n allowClickThrough: false,\n variant: 'tooltip',\n allowSkip: false,\n animated: true };\n\n// Strips explicitly-undefined props before the merge, so `prop={undefined}` still\n// falls back to the default exactly as a destructuring default would. Applied as\n// a merge rather than destructuring defaults, which would otherwise put eight\n// branches into the component's own complexity budget.\nconst resolveProps = (props: TutorialOverlayProps): ResolvedTutorialProps =>\n ({\n ...TUTORIAL_DEFAULTS,\n ...(Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<TutorialOverlayProps>) }) as ResolvedTutorialProps;\n\n// The dimming layer and the cut-out over the highlighted element. Local because\n// Backdrop and Spotlight cannot cross a module boundary (TS2742).\nconst TutorialLayers: React.FC<{\n variant: string;\n targetBounds: globalThis.DOMRect | null;\n isVisible: boolean;\n spotlightPadding?: number;\n}> = ({ variant, targetBounds, isVisible, spotlightPadding }) => {\n const isSpotlight = variant === 'spotlight' || variant === 'highlight';\n const dimmed = variant === 'modal' || isSpotlight;\n\n return (\n <>\n {dimmed && <Backdrop />}\n {targetBounds && isVisible && isSpotlight && (\n <Spotlight\n bounds={targetBounds}\n padding={spotlightPadding || 8}\n data-testid=\"tutorial-highlight\"\n />\n )}\n </>\n );\n};\n\n// The positioned card. Local because TooltipContainer cannot cross a module\n// boundary (TS2742).\nconst TutorialTooltip: React.FC<{\n tutorial: ReturnType<typeof useTutorialOverlay> & {\n currentStepData: TutorialOverlayProps['steps'][number];\n };\n steps: TutorialOverlayProps['steps'];\n allowSkip: boolean;\n showProgress: boolean;\n animated: boolean;\n requiresActionBeforeNext: boolean;\n copy: TutorialOverlayProps['copy'];\n}> = ({\n tutorial,\n steps,\n allowSkip,\n showProgress,\n animated,\n requiresActionBeforeNext,\n copy,\n}) => (\n <Fade in={tutorial.isVisible} timeout={300}>\n <TooltipContainer\n ref={tutorial.tooltipRef}\n placement={tutorial.actualPlacement}\n elevation={12}\n style={{\n top: tutorial.tooltipPosition.top,\n left: tutorial.tooltipPosition.left,\n animation: animated ? undefined : 'none' }}\n role=\"dialog\"\n aria-labelledby={`tutorial-title-${tutorial.currentStep}`}\n aria-describedby={`tutorial-content-${tutorial.currentStep}`}\n data-testid={`tutorial-step-${tutorial.currentStep}`}\n >\n <TutorialStepBody\n copy={copy}\n step={tutorial.currentStepData}\n currentStep={tutorial.currentStep}\n stepCount={steps.length}\n progress={tutorial.progress}\n isLastStep={tutorial.isLastStep}\n allowSkip={allowSkip}\n showProgress={showProgress}\n requiresActionBeforeNext={requiresActionBeforeNext}\n onNext={tutorial.handleNext}\n onPrev={tutorial.handlePrev}\n onSkip={tutorial.handleSkip}\n onRestart={tutorial.handleRestart}\n />\n </TooltipContainer>\n </Fade>\n);\n\nexport const TutorialOverlay: FC<TutorialOverlayProps> = (componentProps) => {\n const {\n copy,\n steps,\n onComplete,\n onSkip,\n onStepComplete,\n initialStep,\n active,\n showProgress,\n allowKeyboardNavigation,\n allowClickThrough,\n variant,\n allowSkip,\n animated } = resolveProps(componentProps);\n\n const tutorial = useTutorialOverlay({\n steps,\n initialStep,\n active,\n allowKeyboardNavigation,\n onComplete,\n onSkip,\n onStepComplete });\n const { currentStepData, isLastStep, isVisible, targetBounds, progress } = tutorial;\n\n const requiresActionBeforeNext = Boolean(currentStepData?.requiresAction) && !isLastStep;\n\n if (!active || !currentStepData) return null;\n\n // Handle empty steps array\n if (steps.length === 0) return null;\n\n return (\n <Portal>\n <Overlay allowClickThrough={allowClickThrough} data-testid=\"tutorial-overlay\">\n {showProgress && <ProgressBar variant=\"determinate\" value={progress} />}\n\n <TutorialLayers\n variant={variant}\n targetBounds={targetBounds}\n isVisible={isVisible}\n spotlightPadding={currentStepData.spotlightPadding}\n />\n\n <TutorialTooltip\n copy={copy}\n tutorial={{ ...tutorial, currentStepData }}\n steps={steps}\n allowSkip={allowSkip}\n showProgress={showProgress}\n animated={animated}\n requiresActionBeforeNext={requiresActionBeforeNext}\n />\n </Overlay>\n </Portal>\n );\n};\n\n// Export default\nexport default TutorialOverlay;\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/AddressAutocomplete/AddressAutocomplete.helpers.ts"],"sourcesContent":["import type { AddressAutocompleteProps, AddressOptionValue } from './AddressAutocomplete.types';\n\n// Below this the field clears its options rather than querying Places.\nexport const MIN_QUERY_LENGTH = 2;\n\ntype DefaultedKeys =\n | 'variant'\n | 'label'\n | 'placeholder'\n | 'floating'\n | 'error'\n | 'disabled'\n | 'required'\n | 'fullWidth'\n | 'defaultValue'\n | 'getCurrentLocation';\n\nexport type ResolvedAddressProps = AddressAutocompleteProps &\n Required<Pick<AddressAutocompleteProps, DefaultedKeys>>;\n\nconst ADDRESS_AUTOCOMPLETE_DEFAULTS: Pick<AddressAutocompleteProps, DefaultedKeys> = {\n variant: 'outlined',\n label: 'Address',\n placeholder: 'Enter an address',\n floating: false,\n error: false,\n disabled: false,\n required: false,\n fullWidth: true,\n defaultValue: '',\n getCurrentLocation: false,\n};\n\n// Strips explicitly-undefined props before the merge, so `prop={undefined}` still\n// falls back to the default exactly as a destructuring default would.\nconst definedProps = (props: AddressAutocompleteProps): Partial<AddressAutocompleteProps> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<AddressAutocompleteProps>;\n\n// Applied as a merge rather than destructuring defaults, which would otherwise\n// put ten branches into the component's own complexity budget.\nexport const resolveAddressProps = (props: AddressAutocompleteProps): ResolvedAddressProps =>\n ({ ...ADDRESS_AUTOCOMPLETE_DEFAULTS, ...definedProps(props) }) as ResolvedAddressProps;\n\nexport const addressOptionLabel = (option: AddressOptionValue): string => {\n if (typeof option === 'string') return option;\n return option.description || '';\n};\n\n// A string only ever equals the same string, so a mixed pair is never a match.\nexport const isSameAddressOption = (\n option: AddressOptionValue,\n value: AddressOptionValue,\n): boolean => {\n if (typeof option === 'string' || typeof value === 'string') return option === value;\n return option.place_id === value.place_id;\n};\n"],"mappings":";AAGO,IAAM,mBAAmB;AAiBhC,IAAM,gCAA+E;AAAA,EACnF,SAAS;AAAA,EACT,OAAO;AAAA,EACP,aAAa;AAAA,EACb,UAAU;AAAA,EACV,OAAO;AAAA,EACP,UAAU;AAAA,EACV,UAAU;AAAA,EACV,WAAW;AAAA,EACX,cAAc;AAAA,EACd,oBAAoB;AACtB;AAIA,IAAM,eAAe,CAAC,UACpB,OAAO;AAAA,EACL,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS;AACjE;AAIK,IAAM,sBAAsB,CAAC,WACjC,EAAE,GAAG,+BAA+B,GAAG,aAAa,KAAK,EAAE;AAEvD,IAAM,qBAAqB,CAAC,WAAuC;AACxE,MAAI,OAAO,WAAW,SAAU,QAAO;AACvC,SAAO,OAAO,eAAe;AAC/B;AAGO,IAAM,sBAAsB,CACjC,QACA,UACY;AACZ,MAAI,OAAO,WAAW,YAAY,OAAO,UAAU,SAAU,QAAO,WAAW;AAC/E,SAAO,OAAO,aAAa,MAAM;AACnC;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/user-avatar/user-avatar.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from 'react';\nimport Box from '@mui/material/Box/index.js';\nimport Stack from '@mui/material/Stack/index.js';\nimport { Avatar } from '../components/data-display/Avatar';\nimport { Button } from '../components/form/Button';\nimport { Text } from '../components/typography/Text';\nimport { Card } from '../components/layout/Card';\nimport type { UserAvatarCopy } from '../copy';\n\n/**\n * Generate initials from a name\n */\nfunction getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/);\n if (parts.length === 1) {\n return parts[0]?.substring(0, 2).toUpperCase() ?? \"\";\n }\n return (\n (parts[0]?.charAt(0) ?? \"\") + (parts[parts.length - 1]?.charAt(0) ?? \"\")\n ).toUpperCase();\n}\n\nexport interface UserAvatarProps {\n src?: string | null;\n name?: string | null;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n onClick?: () => void;\n interactive?: boolean;\n}\n\n/**\n * User avatar using UI package Avatar component\n */\nexport function UserAvatar({\n src,\n name,\n size = 'md',\n onClick,\n interactive = false,\n}: UserAvatarProps): React.ReactElement {\n const fallbackText = name ? getInitials(name) : \"?\";\n\n return (\n <Avatar\n src={src ?? undefined}\n alt={name ?? \"User avatar\"}\n fallback={fallbackText}\n size={size}\n variant=\"circle\"\n interactive={interactive || !!onClick}\n onClick={onClick}\n />\n );\n}\n\nexport interface UserMenuProps {\n user: {\n name?: string | null;\n email?: string | null;\n image?: string | null;\n };\n onSignOut: () => void;\n /**\n * The card's one action. REQUIRED: this package ships no default copy, and\n * the button is the only thing on this card a host does not already supply.\n */\n copy: UserAvatarCopy;\n}\n\n/**\n * User menu with avatar, info, and sign out button\n */\nexport function UserMenu({ user, onSignOut, copy }: UserMenuProps): React.ReactElement {\n return (\n <Card variant=\"elevated\" borderRadius=\"md\">\n <Box sx={{ p: 2 }}>\n <Stack direction=\"row\" spacing={2} alignItems=\"center\">\n <UserAvatar\n src={user.image}\n name={user.name}\n size=\"md\"\n />\n\n <Stack spacing={0.5} sx={{ flex: 1, minWidth: 0 }}>\n <Text weight=\"semibold\" size=\"sm\">\n {user.name ?? \"User\"}\n </Text>\n {user.email && (\n <Text color=\"secondary\" size=\"xs\">\n {user.email}\n </Text>\n )}\n </Stack>\n\n <Button\n variant=\"outline\"\n color=\"danger\"\n size=\"sm\"\n onClick={onSignOut}\n >\n {copy.signOut}\n </Button>\n </Stack>\n </Box>\n </Card>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AAGA,OAAO,SAAS;AAChB,OAAO,WAAW;AAyCd,cAwCM,YAxCN;AA/BJ,SAAS,YAAY,MAAsB;AACzC,QAAM,QAAQ,KAAK,KAAK,EAAE,MAAM,KAAK;AACrC,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,MAAM,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,YAAY,KAAK;AAAA,EACpD;AACA,WACG,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,OAAO,MAAM,MAAM,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK,KACrE,YAAY;AAChB;AAaO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,cAAc;AAChB,GAAwC;AACtC,QAAM,eAAe,OAAO,YAAY,IAAI,IAAI;AAEhD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK,OAAO;AAAA,MACZ,KAAK,QAAQ;AAAA,MACb,UAAU;AAAA,MACV;AAAA,MACA,SAAQ;AAAA,MACR,aAAa,eAAe,CAAC,CAAC;AAAA,MAC9B;AAAA;AAAA,EACF;AAEJ;AAmBO,SAAS,SAAS,EAAE,MAAM,WAAW,KAAK,GAAsC;AACrF,SACE,oBAAC,QAAK,SAAQ,YAAW,cAAa,MACpC,8BAAC,OAAI,IAAI,EAAE,GAAG,EAAE,GACd,+BAAC,SAAM,WAAU,OAAM,SAAS,GAAG,YAAW,UAC5C;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,KAAK;AAAA,QACV,MAAM,KAAK;AAAA,QACX,MAAK;AAAA;AAAA,IACP;AAAA,IAEA,qBAAC,SAAM,SAAS,KAAK,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,GAC9C;AAAA,0BAAC,QAAK,QAAO,YAAW,MAAK,MAC1B,eAAK,QAAQ,QAChB;AAAA,MACC,KAAK,SACJ,oBAAC,QAAK,OAAM,aAAY,MAAK,MAC1B,eAAK,OACR;AAAA,OAEJ;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,MAAK;AAAA,QACL,SAAS;AAAA,QAER,eAAK;AAAA;AAAA,IACR;AAAA,KACF,GACF,GACF;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Timeline/Timeline.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport { alpha, styled } from '@mui/material/styles/index.js';\nimport type { FC } from 'react';\nimport React from 'react';\nimport { TimelineRow } from './TimelineRow';\nimport type { TimelineProps } from './Timeline.types';\nimport { rem } from '../../../tokens/relative';\n\n// ---\n\n// --- Styled Components ---\nconst TimelineContainer = styled(Box)<{ orientation: 'vertical' | 'horizontal' }>(\n ({ theme, orientation }) => ({\n display: 'flex',\n flexDirection: orientation === 'vertical' ? 'column' : 'row',\n gap: theme.spacing(2),\n position: 'relative',\n width: '100%',\n ...(orientation === 'horizontal' && {\n overflowX: 'auto',\n paddingBottom: theme.spacing(2),\n '&::-webkit-scrollbar': {\n height: rem(theme, 8) },\n '&::-webkit-scrollbar-track': {\n background: alpha(theme.palette.action.disabled, 0.1),\n borderRadius: rem(theme, 4) },\n '&::-webkit-scrollbar-thumb': {\n background: alpha(theme.palette.primary.main, 0.3),\n borderRadius: rem(theme, 4),\n '&:hover': {\n background: alpha(theme.palette.primary.main, 0.5) } } }) }),\n);\n\n\n// ---\n\n// Main component\nexport const Timeline: FC<TimelineProps> = ({\n items,\n variant = 'default',\n orientation = 'vertical',\n showConnector = true,\n animated = true,\n alternating = false,\n onItemClick }) => {\n const [expandedItems, setExpandedItems] = React.useState<Set<string>>(new Set());\n\n const handleExpandClick = (itemId: string, event: React.MouseEvent) => {\n event.stopPropagation();\n setExpandedItems((prev) => {\n const newSet = new Set(prev);\n if (newSet.has(itemId)) {\n newSet.delete(itemId);\n } else {\n newSet.add(itemId);\n }\n return newSet;\n });\n };\n\n return (\n <TimelineContainer\n orientation={orientation}\n data-testid=\"timeline-container\"\n >\n {items.map((item, index) => (\n <TimelineRow\n key={item.id}\n item={item}\n index={index}\n isLast={index === items.length - 1}\n variant={variant}\n orientation={orientation}\n showConnector={showConnector}\n animated={animated}\n alternating={alternating}\n isExpanded={expandedItems.has(item.id)}\n onItemClick={onItemClick}\n onExpandClick={handleExpandClick}\n />\n ))}\n </TimelineContainer>\n );\n};\n\nexport default Timeline;\n"],"mappings":";;;;;;;;AAAA,OAAO,SAAS;AAChB,SAAS,OAAO,cAAc;AAE9B,OAAO,WAAW;AA+DV;AAvDR,IAAM,oBAAoB,OAAO,GAAG;AAAA,EAClC,CAAC,EAAE,OAAO,YAAY,OAAO;AAAA,IAC3B,SAAS;AAAA,IACT,eAAe,gBAAgB,aAAa,WAAW;AAAA,IACvD,KAAK,MAAM,QAAQ,CAAC;AAAA,IACpB,UAAU;AAAA,IACV,OAAO;AAAA,IACP,GAAI,gBAAgB,gBAAgB;AAAA,MAClC,WAAW;AAAA,MACX,eAAe,MAAM,QAAQ,CAAC;AAAA,MAC9B,wBAAwB;AAAA,QACtB,QAAQ,IAAI,OAAO,CAAC;AAAA,MAAE;AAAA,MACxB,8BAA8B;AAAA,QAC5B,YAAY,MAAM,MAAM,QAAQ,OAAO,UAAU,GAAG;AAAA,QACpD,cAAc,IAAI,OAAO,CAAC;AAAA,MAAE;AAAA,MAC9B,8BAA8B;AAAA,QAC5B,YAAY,MAAM,MAAM,QAAQ,QAAQ,MAAM,GAAG;AAAA,QACjD,cAAc,IAAI,OAAO,CAAC;AAAA,QAC1B,WAAW;AAAA,UACT,YAAY,MAAM,MAAM,QAAQ,QAAQ,MAAM,GAAG;AAAA,QAAE;AAAA,MAAE;AAAA,IAAE;AAAA,EAAG;AACpE;AAMO,IAAM,WAA8B,CAAC;AAAA,EAC1C;AAAA,EACA,UAAU;AAAA,EACV,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,cAAc;AAAA,EACd;AAAY,MAAM;AAClB,QAAM,CAAC,eAAe,gBAAgB,IAAI,MAAM,SAAsB,oBAAI,IAAI,CAAC;AAE/E,QAAM,oBAAoB,CAAC,QAAgB,UAA4B;AACrE,UAAM,gBAAgB;AACtB,qBAAiB,CAAC,SAAS;AACzB,YAAM,SAAS,IAAI,IAAI,IAAI;AAC3B,UAAI,OAAO,IAAI,MAAM,GAAG;AACtB,eAAO,OAAO,MAAM;AAAA,MACtB,OAAO;AACL,eAAO,IAAI,MAAM;AAAA,MACnB;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,eAAY;AAAA,MAEX,gBAAM,IAAI,CAAC,MAAM,UAChB;AAAA,QAAC;AAAA;AAAA,UAEC;AAAA,UACA;AAAA,UACA,QAAQ,UAAU,MAAM,SAAS;AAAA,UACjC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,YAAY,cAAc,IAAI,KAAK,EAAE;AAAA,UACrC;AAAA,UACA,eAAe;AAAA;AAAA,QAXV,KAAK;AAAA,MAYZ,CACD;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,mBAAQ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Table/TableParts.hooks.tsx","../src/components/data-display/Table/TableParts.tsx"],"sourcesContent":["import type React from 'react';\nimport { useCallback } from 'react';\n\nimport { TableDataRow } from './TableParts';\nimport type { TableBodyProps } from './Table.types';\n\n// Row identity, selection and the row element itself. Split out of\n// EnhancedTableBody so that component is just the virtualised/plain choice.\n// A row's identity: the caller's extractor, else its id, else its position.\nconst useRowKey = (rowKeyExtractor: TableBodyProps['rowKeyExtractor']) =>\n useCallback(\n (rowData: Record<string, unknown>, index: number): string | number =>\n rowKeyExtractor ? rowKeyExtractor(rowData, index) : (rowData.id as string | number) || index,\n [rowKeyExtractor],\n );\n\nconst useRowSelection = ({\n selectedRows,\n onSelectionChange,\n}: {\n selectedRows: Array<string | number>;\n onSelectionChange: TableBodyProps['onSelectionChange'];\n}) =>\n useCallback(\n (event: React.MouseEvent | React.ChangeEvent, rowKey: string | number) => {\n // Stop propagation so selecting does not also fire the row click.\n event.stopPropagation();\n if (!onSelectionChange) return;\n onSelectionChange(rowKey, !selectedRows.includes(rowKey));\n },\n [onSelectionChange, selectedRows],\n );\n\ntype RowRendererProps = Pick<\n TableBodyProps,\n | 'columns'\n | 'onRowClick'\n | 'onRowFocus'\n | 'onRowBlur'\n | 'onSelectionChange'\n | 'rowKeyExtractor'\n | 'selectable'\n | 'renderRow'\n | 'renderCell'\n | 'rowHeight'\n> & {\n selectedRows: Array<string | number>;\n /** Whether the rows are a virtual window's, drawn at exactly `rowHeight`. */\n virtualised: boolean;\n};\n\nexport const useTableRowRenderer = ({\n columns,\n selectedRows,\n onRowClick,\n onRowFocus,\n onRowBlur,\n onSelectionChange,\n rowKeyExtractor,\n selectable,\n renderRow,\n renderCell,\n virtualised,\n rowHeight,\n}: RowRendererProps) => {\n const getRowKey = useRowKey(rowKeyExtractor);\n const isRowSelected = useCallback(\n (rowKey: string | number) => selectedRows.includes(rowKey),\n [selectedRows],\n );\n const handleRowSelection = useRowSelection({ selectedRows, onSelectionChange });\n\n const renderTableRow = useCallback(\n (rowData: Record<string, unknown>, index: number) => {\n const rowKey = getRowKey(rowData, index);\n const selected = isRowSelected(rowKey);\n\n if (renderRow) return renderRow(rowData, index, selected);\n\n return (\n <TableDataRow\n key={rowKey}\n rowData={rowData}\n rowKey={rowKey}\n index={index}\n columns={columns}\n selected={selected}\n selectable={selectable}\n rowHeight={rowHeight}\n onRowClick={onRowClick}\n onRowFocus={onRowFocus}\n onRowBlur={onRowBlur}\n onSelect={handleRowSelection}\n virtualised={virtualised}\n renderCell={renderCell}\n />\n );\n },\n [\n columns,\n getRowKey,\n isRowSelected,\n handleRowSelection,\n onRowClick,\n onRowFocus,\n onRowBlur,\n renderRow,\n renderCell,\n rowHeight,\n selectable,\n virtualised,\n ],\n );\n\n return renderTableRow;\n};\n","import Checkbox from '@mui/material/Checkbox/index.js';\nimport TableBody from '@mui/material/TableBody/index.js';\nimport TableCell from '@mui/material/TableCell/index.js';\nimport TableHead from '@mui/material/TableHead/index.js';\nimport TableRow from '@mui/material/TableRow/index.js';\nimport TableSortLabel from '@mui/material/TableSortLabel/index.js';\nimport { useTheme, type Theme } from '@mui/material/styles/index.js';\nimport React, { useCallback } from 'react';\n\nimport { FIELD_BORDER_WIDTH } from '../../../tokens/field-height.core';\nimport { rem } from '../../../tokens/relative';\n\nimport { tableRowHeight } from './Table.helpers';\nimport { useTableRowRenderer } from './TableParts.hooks';\nimport type { ColumnConfig, TableBodyProps, TableHeaderProps, VirtualWindow } from './Table.types';\n\n// Mirrors the visible sort indicator for assistive technology; undefined when\n// the column is not sorted, which is what removes the attribute entirely.\nconst ariaSortFor = (\n canSort: boolean,\n isSorted: boolean,\n direction?: 'asc' | 'desc',\n): 'ascending' | 'descending' | undefined => {\n if (!canSort || !isSorted) return undefined;\n\n return direction === 'asc' ? 'ascending' : 'descending';\n};\n\n/** A column's `width`/`minWidth` as CSS: a number is design px, a string as given. */\nconst columnLength = (theme: Theme, value: number | string | undefined): string | undefined =>\n typeof value === 'number' ? rem(theme, value) : value;\n\n// One header cell. Sorting is offered when the table is sortable and the column\n// has not opted out; aria-sort mirrors the visible indicator.\nconst HeaderCell: React.FC<{\n column: ColumnConfig;\n sortable?: boolean;\n sortConfig?: { key: string; direction: 'asc' | 'desc' };\n onSort: (columnKey: string) => void;\n}> = ({ column, sortable, sortConfig, onSort }) => {\n const theme = useTheme();\n const canSort = Boolean(sortable) && column.sortable !== false;\n const isSorted = sortConfig?.key === column.key;\n\n return (\n <TableCell\n align={column.align || 'left'}\n style={{\n minWidth: columnLength(theme, column.minWidth),\n width: columnLength(theme, column.width),\n }}\n aria-sort={ariaSortFor(canSort, isSorted, sortConfig?.direction)}\n >\n {canSort ? (\n <TableSortLabel\n active={isSorted}\n direction={isSorted ? sortConfig?.direction : 'asc'}\n onClick={() => onSort(column.key)}\n data-testid=\"sort-indicator\"\n aria-label={`Sort by ${column.label}`}\n >\n {column.label}\n </TableSortLabel>\n ) : (\n column.label\n )}\n </TableCell>\n );\n};\n\nexport const EnhancedTableHeader: React.FC<TableHeaderProps> = React.memo(({\n columns,\n data,\n sortable,\n sortConfig,\n onSortChange,\n selectable,\n selectedRows = [],\n onSelectAll,\n headRef }) => {\n const handleSort = useCallback(\n (columnKey: string) => {\n if (!sortable || !onSortChange) return;\n \n const direction = \n sortConfig?.key === columnKey && sortConfig.direction === 'asc' ? 'desc' : 'asc';\n onSortChange(columnKey, direction);\n },\n [sortable, onSortChange, sortConfig]\n );\n\n const handleSelectAll = useCallback(\n (event: React.ChangeEvent<globalThis.HTMLInputElement>) => {\n if (!onSelectAll) return;\n onSelectAll(event.target.checked);\n },\n [onSelectAll]\n );\n\n return (\n <TableHead ref={headRef}>\n <TableRow>\n {selectable && (\n <TableCell padding=\"checkbox\">\n <Checkbox\n indeterminate={selectedRows.length > 0 && selectedRows.length < data.length}\n checked={selectedRows.length === data.length && data.length > 0}\n onChange={handleSelectAll}\n inputProps={{ 'aria-label': 'select all' }}\n />\n </TableCell>\n )}\n {columns.map((column) => (\n <HeaderCell\n key={column.key}\n column={column}\n sortable={sortable}\n sortConfig={sortConfig}\n onSort={handleSort}\n />\n ))}\n </TableRow>\n </TableHead>\n );\n});\n\nEnhancedTableHeader.displayName = 'EnhancedTableHeader';\n\n/** How a virtual cell's wrapper places its content along the row, per `align`. */\nconst JUSTIFY: Record<NonNullable<ColumnConfig['align']>, React.CSSProperties['justifyContent']> = {\n left: 'flex-start',\n center: 'center',\n right: 'flex-end',\n};\n\n/**\n * A virtual cell's content (FUT-2668). The cell has no vertical padding, and\n * this fills its content box — the pitch less the cell's bottom rule, the one\n * hairline every variant draws — so the cell's border box is exactly the pitch\n * whatever it holds. Centred vertically, placed by the column's `align`, and\n * clipped rather than allowed to grow the row.\n */\nconst VirtualCellContent: React.FC<{\n rowHeight: number;\n align: NonNullable<ColumnConfig['align']>;\n children: React.ReactNode;\n}> = ({ rowHeight, align, children }) => {\n const theme = useTheme();\n return (\n <div\n style={{\n height: `calc(${rem(theme, rowHeight)} - ${FIELD_BORDER_WIDTH}px)`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: JUSTIFY[align],\n overflow: 'hidden',\n }}\n >\n {children}\n </div>\n );\n};\n\n/** What one cell shows: the caller's `renderCell`, else the column's `render`, else the value. */\nconst cellContent = (\n column: ColumnConfig,\n rowData: Record<string, unknown>,\n index: number,\n renderCell: TableBodyProps['renderCell'],\n): React.ReactNode => {\n const value = rowData[column.key];\n if (renderCell) return renderCell(value, column, rowData, index);\n return column.render ? column.render(value, rowData) : (value as React.ReactNode);\n};\n\n// One data row. Split out of the memoised renderTableRow callback so the\n// callback stays a short dispatch and the row markup is readable on its own.\n// A virtualised row stays in the table's flow at `rowHeight`, and each of its\n// cells holds its content in a `VirtualCellContent` (FUT-2668); a plain row is\n// drawn as MUI draws it.\nexport const TableDataRow: React.FC<{\n rowData: Record<string, unknown>;\n rowKey: string | number;\n index: number;\n columns: ColumnConfig[];\n selected: boolean;\n selectable?: boolean;\n /** Design px; 52 when unset (`tableRowHeight`). */\n rowHeight?: number;\n onRowClick?: TableBodyProps['onRowClick'];\n onRowFocus?: TableBodyProps['onRowFocus'];\n onRowBlur?: TableBodyProps['onRowBlur'];\n onSelect: (event: React.MouseEvent | React.ChangeEvent, rowKey: string | number) => void;\n /** Whether the row is one of a virtual window's. */\n virtualised: boolean;\n renderCell?: TableBodyProps['renderCell'];\n}> = ({\n rowData,\n rowKey,\n index,\n columns,\n selected,\n selectable,\n rowHeight,\n onRowClick,\n onRowFocus,\n onRowBlur,\n onSelect,\n virtualised,\n renderCell }) => {\n const theme = useTheme();\n const pitch = tableRowHeight(rowHeight);\n const fit = (align: NonNullable<ColumnConfig['align']>, content: React.ReactNode) =>\n virtualised ? (\n <VirtualCellContent rowHeight={pitch} align={align}>\n {content}\n </VirtualCellContent>\n ) : (\n content\n );\n\n return (\n <TableRow\n key={String(rowKey)}\n selected={selected}\n className={selected ? 'selected' : ''}\n onClick={(event: React.MouseEvent<globalThis.HTMLTableRowElement>) => onRowClick?.(event, rowData)}\n onFocus={(event: React.FocusEvent<globalThis.HTMLTableRowElement>) => onRowFocus?.(event, rowData)}\n onBlur={(event: React.FocusEvent<globalThis.HTMLTableRowElement>) => onRowBlur?.(event, rowData)}\n style={virtualised ? { height: rem(theme, pitch) } : undefined}\n >\n {selectable && (\n <TableCell padding=\"checkbox\">\n {fit(\n 'left',\n <Checkbox\n checked={selected}\n onChange={(event) => onSelect(event, rowKey)}\n onClick={(event) => event.stopPropagation()}\n inputProps={{ 'aria-label': `select row ${index + 1}` }}\n />,\n )}\n </TableCell>\n )}\n {columns.map((column) => (\n <TableCell key={column.key} align={column.align || 'left'}>\n {fit(column.align || 'left', cellContent(column, rowData, index, renderCell))}\n </TableCell>\n ))}\n </TableRow>\n );\n};\n\n/**\n * A stand-in for the rows outside the window, `heightPx` design px tall. A bare\n * `<tr>` and `<td>` with no padding or border: none of MUI's row or cell\n * classes, so hover, striping and cell padding never reach it. Not rendered at\n * all when there is nothing to stand in for.\n */\nconst SpacerRow: React.FC<{ heightPx: number; colSpan: number }> = ({ heightPx, colSpan }) => {\n const theme = useTheme();\n if (heightPx <= 0) return null;\n return (\n <tr aria-hidden=\"true\" style={{ height: rem(theme, heightPx) }}>\n <td colSpan={colSpan} style={{ padding: 0, border: 0 }} />\n </tr>\n );\n};\n\n// Only the rows in view are rendered, in the table's own flow between two\n// spacer rows standing in for the rest (FUT-2668) — an absolutely positioned\n// `<tr>` is blockified and leaves the column grid. Every height is design px,\n// drawn through `rem`. The `<tbody>` sits directly in the `<table>`; the one\n// scroll container wraps the whole table, header included (FUT-2658).\nconst VirtualisedBody: React.FC<{\n visibleItems: VirtualWindow;\n colSpan: number;\n renderTableRow: (rowData: Record<string, unknown>, index: number) => React.ReactNode;\n}> = ({ visibleItems, colSpan, renderTableRow }) => (\n <TableBody>\n <SpacerRow heightPx={visibleItems.offsetY} colSpan={colSpan} />\n {visibleItems.items.map((rowData, index) =>\n renderTableRow(rowData, visibleItems.startIndex + index)\n )}\n <SpacerRow heightPx={visibleItems.trailingPx} colSpan={colSpan} />\n </TableBody>\n);\n\nconst PlainBody: React.FC<{\n data: TableBodyProps['data'];\n renderTableRow: (rowData: Record<string, unknown>, index: number) => React.ReactNode;\n}> = ({ data, renderTableRow }) => (\n\n <TableBody>\n {data.map((rowData, index) => renderTableRow(rowData, index))}\n </TableBody>\n);\n\n// Enhanced Table Body Component \nexport const EnhancedTableBody: React.FC<TableBodyProps> = React.memo((props) => {\n const { data, virtualWindow } = props;\n // The row renderer takes the body's own props; its `rowHeight` stays the\n // caller's design px, and the row resolves the default where it draws it.\n const renderTableRow = useTableRowRenderer({\n ...props,\n selectedRows: props.selectedRows ?? [],\n virtualised: Boolean(virtualWindow),\n });\n\n if (virtualWindow) {\n return (\n <VirtualisedBody\n visibleItems={virtualWindow}\n colSpan={props.columns.length + (props.selectable ? 1 : 0)}\n renderTableRow={renderTableRow}\n />\n );\n }\n\n return (\n <PlainBody data={data} renderTableRow={renderTableRow} />\n );\n});\n\nEnhancedTableBody.displayName = 'EnhancedTableBody';\n\n// Main Table Component\n"],"mappings":"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","names":["useCallback","jsx","useCallback"]}