@12-apps/ui 6.78.3 → 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 (1003) 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/CalendarDay.js +1 -1
  97. package/dist/_internal/components/form/Calendar/CalendarDayCell.js +2 -2
  98. package/dist/_internal/components/form/Calendar/CalendarMonth.js +3 -3
  99. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +5 -5
  100. package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +3 -3
  101. package/dist/_internal/components/form/CategorySelect/CategoryRows.js +2 -2
  102. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +9 -9
  103. package/dist/_internal/components/form/Checkbox/Checkbox.js +2 -2
  104. package/dist/_internal/components/form/CodeEditor/CodeEditor.js +3 -3
  105. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +9 -9
  106. package/dist/_internal/components/form/InputOTP/InputOTP.js +2 -2
  107. package/dist/_internal/components/form/Menubar/Menubar.js +2 -2
  108. package/dist/_internal/components/form/PhoneInput/PhoneInput.hooks.js +2 -2
  109. package/dist/_internal/components/form/PhoneInput/PhoneInput.js +3 -3
  110. package/dist/_internal/components/form/PhoneInput/countries.js +7 -3
  111. package/dist/_internal/components/form/PickerSheet/PickerSheet.js +4 -4
  112. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.dom.js +2 -1
  113. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.format.js +3 -2
  114. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.hooks.js +4 -3
  115. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +7 -5
  116. package/dist/_internal/components/form/RichTextEditor/RichTextEditorToolbar.js +1 -1
  117. package/dist/_internal/components/form/Switch/Switch.js +4 -4
  118. package/dist/_internal/components/form/Switch/Switch.parts.js +3 -3
  119. package/dist/_internal/components/form/Switch/Switch.styles.js +2 -2
  120. package/dist/_internal/components/form/Textarea/Textarea.js +1 -1
  121. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js +4 -1
  122. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js.map +1 -1
  123. package/dist/_internal/components/form/UploadButton/UploadButton.hooks.js +2 -1
  124. package/dist/_internal/components/form/UploadButton/UploadButton.js +3 -2
  125. package/dist/_internal/components/form/index.js +48 -45
  126. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +10 -10
  127. package/dist/_internal/components/form/total-form/Fields/index.js +13 -13
  128. package/dist/_internal/components/form/total-form/FormErrorSnackbar.js +3 -2
  129. package/dist/_internal/components/index.js +196 -188
  130. package/dist/_internal/components/layout/Card/Card.js +2 -2
  131. package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +2 -1
  132. package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +2 -1
  133. package/dist/_internal/components/layout/Dashboard/Dashboard.js +2 -1
  134. package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +3 -3
  135. package/dist/_internal/components/layout/SettingCard/SettingCard.js +4 -4
  136. package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js +3 -3
  137. package/dist/_internal/components/layout/SettingCard/SettingGroup.js +10 -10
  138. package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +8 -8
  139. package/dist/_internal/components/layout/SettingCard/SettingToggle.js +10 -10
  140. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +6 -6
  141. package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +3 -3
  142. package/dist/_internal/components/layout/SettingsLayout/SettingsSectionChips.js +2 -2
  143. package/dist/_internal/components/layout/index.js +34 -33
  144. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +8 -7
  145. package/dist/_internal/components/navigation/CommandPalette/CommandPalette.helpers.js +2 -1
  146. package/dist/_internal/components/navigation/CommandPalette/CommandPalette.hooks.js +3 -2
  147. package/dist/_internal/components/navigation/CommandPalette/CommandPalette.js +6 -4
  148. package/dist/_internal/components/navigation/CommandPalette/CommandPaletteResults.js +3 -1
  149. package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +4 -4
  150. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +7 -6
  151. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.shell.js +1 -1
  152. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenuItem.js +2 -2
  153. package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +5 -4
  154. package/dist/_internal/components/navigation/Pagination/Pagination.js +2 -2
  155. package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +2 -2
  156. package/dist/_internal/components/navigation/SectionNav/SectionNav.js +4 -4
  157. package/dist/_internal/components/navigation/index.js +29 -26
  158. package/dist/_internal/components/typography/Code/Code.js +2 -1
  159. package/dist/_internal/components/typography/index.js +2 -1
  160. package/dist/_internal/components/utility/InstallPrompt/InstallPrompt.js +2 -2
  161. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +7 -3
  162. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +6 -4
  163. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +4 -2
  164. package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +5 -3
  165. package/dist/_internal/components/utility/index.js +8 -6
  166. package/dist/_internal/copy/labels.js +1 -0
  167. package/dist/_internal/en-US.data-display.js +1 -1
  168. package/dist/_internal/en-US.feedback.js +1 -1
  169. package/dist/_internal/en-US.form.js +1 -1
  170. package/dist/_internal/en-US.labels.js +8 -0
  171. package/dist/_internal/en-US.navigation.js +1 -1
  172. package/dist/_internal/en-US.utility.js +1 -1
  173. package/dist/_internal/pt-BR.data-display.js +1 -1
  174. package/dist/_internal/pt-BR.feedback.js +1 -1
  175. package/dist/_internal/pt-BR.form.js +1 -1
  176. package/dist/_internal/pt-BR.labels.js +8 -0
  177. package/dist/_internal/pt-BR.labels.js.map +1 -0
  178. package/dist/_internal/pt-BR.navigation.js +1 -1
  179. package/dist/_internal/pt-BR.utility.js +1 -1
  180. package/dist/_internal/social-login-button/social-login-button.js +4 -4
  181. package/dist/_internal/user-avatar/user-avatar.js +8 -7
  182. package/dist/_internal/utils/resolve-labels.js +8 -0
  183. package/dist/_internal/utils/resolve-labels.js.map +1 -0
  184. package/dist/charts.js +11 -11
  185. package/dist/{chunk-2ILXXBMG.js → chunk-25HBYY4O.js} +12 -6
  186. package/dist/chunk-25HBYY4O.js.map +1 -0
  187. package/dist/{chunk-OPP6USJC.js → chunk-2FQF4CNE.js} +2 -2
  188. package/dist/{chunk-BWFQEASG.js → chunk-2P5ZBBTL.js} +5 -5
  189. package/dist/{chunk-QVO4SIS7.js → chunk-3W2B7IZG.js} +2 -2
  190. package/dist/{chunk-PMRLFNBT.js → chunk-3XLSA3YB.js} +4 -4
  191. package/dist/{chunk-7P5PNRBT.js → chunk-3YCV4EP7.js} +6 -6
  192. package/dist/{chunk-AYP6ICAY.js → chunk-44FY2YZL.js} +11 -10
  193. package/dist/chunk-44FY2YZL.js.map +1 -0
  194. package/dist/chunk-47IAX6PI.js +119 -0
  195. package/dist/chunk-47IAX6PI.js.map +1 -0
  196. package/dist/{chunk-Q6PRGXR2.js → chunk-4HBCWKIX.js} +4 -4
  197. package/dist/{chunk-HN3PZTUK.js → chunk-4MKVGSHX.js} +5 -5
  198. package/dist/{chunk-EERUSI52.js → chunk-4N3I7ZHQ.js} +2 -2
  199. package/dist/{chunk-O6SAU5JA.js → chunk-4OTJ66ID.js} +4 -4
  200. package/dist/{chunk-LG52LMAM.js → chunk-556LO6KA.js} +3 -3
  201. package/dist/{chunk-LBZEPWYK.js → chunk-5GLOEGOM.js} +4 -4
  202. package/dist/{chunk-KZXOIRUP.js → chunk-5MAD6ZEI.js} +43 -12
  203. package/dist/chunk-5MAD6ZEI.js.map +1 -0
  204. package/dist/{chunk-XICRCPEQ.js → chunk-5U7LBO2V.js} +5 -4
  205. package/dist/chunk-5U7LBO2V.js.map +1 -0
  206. package/dist/{chunk-JE6RZ5L6.js → chunk-5ZOJLYD2.js} +4 -4
  207. package/dist/{chunk-GSXYXMCV.js → chunk-66BRUS2M.js} +2 -2
  208. package/dist/{chunk-ALREWFRX.js → chunk-6DGNMASB.js} +4 -4
  209. package/dist/{chunk-MA6SUE7F.js → chunk-6EZQLNPK.js} +5 -3
  210. package/dist/chunk-6EZQLNPK.js.map +1 -0
  211. package/dist/{chunk-VRPCZ3IE.js → chunk-6JKECOZ2.js} +7 -6
  212. package/dist/chunk-6JKECOZ2.js.map +1 -0
  213. package/dist/{chunk-XKSA4L2X.js → chunk-6MGYPTAL.js} +11 -3
  214. package/dist/chunk-6MGYPTAL.js.map +1 -0
  215. package/dist/{chunk-5752357K.js → chunk-6N2U67KF.js} +4 -4
  216. package/dist/{chunk-UZOG6HNN.js → chunk-6SFJIW54.js} +5 -4
  217. package/dist/chunk-6SFJIW54.js.map +1 -0
  218. package/dist/{chunk-VD72JGHA.js → chunk-73OYC22L.js} +2 -2
  219. package/dist/{chunk-6PU3JYVY.js → chunk-775LIZXS.js} +4 -4
  220. package/dist/{chunk-C5JCARNE.js → chunk-7HKXTRTK.js} +7 -4
  221. package/dist/chunk-7HKXTRTK.js.map +1 -0
  222. package/dist/{chunk-S4JXSC4D.js → chunk-7HZ6TJRH.js} +6 -6
  223. package/dist/{chunk-33LAPBYB.js → chunk-7S25RDE4.js} +9 -5
  224. package/dist/chunk-7S25RDE4.js.map +1 -0
  225. package/dist/{chunk-CSD6SWBZ.js → chunk-A3Z7ZXLM.js} +6 -6
  226. package/dist/{chunk-LI6XSM5D.js → chunk-A6V7KE45.js} +3 -3
  227. package/dist/{chunk-YJBWDDW7.js → chunk-AAWVAQI2.js} +12 -12
  228. package/dist/{chunk-44PBCQ7E.js → chunk-ABQZFK7M.js} +6 -6
  229. package/dist/{chunk-EIMFA7KP.js → chunk-ANUO67JQ.js} +2 -2
  230. package/dist/{chunk-PTQRJEPN.js → chunk-AOBQ3KYY.js} +2 -2
  231. package/dist/{chunk-LODYTVOO.js → chunk-B25SHVWP.js} +4 -4
  232. package/dist/{chunk-GTT5UKKO.js → chunk-BDJIP4HG.js} +4 -4
  233. package/dist/{chunk-RS576GOH.js → chunk-BIUT3K6A.js} +4 -4
  234. package/dist/{chunk-4NQXHPQR.js → chunk-BJ7NWZWO.js} +11 -2
  235. package/dist/chunk-BJ7NWZWO.js.map +1 -0
  236. package/dist/{chunk-A5NXBOWS.js → chunk-BLHSLB5D.js} +5 -5
  237. package/dist/{chunk-DYHOBKPU.js → chunk-BLZDSCIZ.js} +6 -6
  238. package/dist/{chunk-E53MMMDA.js → chunk-BX6CF2UG.js} +3 -3
  239. package/dist/{chunk-WVZBYTIK.js → chunk-C465AAD5.js} +29 -19
  240. package/dist/chunk-C465AAD5.js.map +1 -0
  241. package/dist/{chunk-7HA7UH7O.js → chunk-C4OETF7K.js} +4 -4
  242. package/dist/{chunk-64AOS2WA.js → chunk-CAHN7AMY.js} +5 -5
  243. package/dist/{chunk-Z24VOTA7.js → chunk-CCWE6DBC.js} +4 -2
  244. package/dist/{chunk-Z24VOTA7.js.map → chunk-CCWE6DBC.js.map} +1 -1
  245. package/dist/{chunk-YLSDFW5O.js → chunk-CN4JS57H.js} +35 -5
  246. package/dist/chunk-CN4JS57H.js.map +1 -0
  247. package/dist/{chunk-MSC43MCJ.js → chunk-CRFOAKQL.js} +5 -5
  248. package/dist/{chunk-IQ2U5MVO.js → chunk-CSQWPDQV.js} +9 -9
  249. package/dist/{chunk-B2JYQBO4.js → chunk-CXTRDTNM.js} +11 -6
  250. package/dist/chunk-CXTRDTNM.js.map +1 -0
  251. package/dist/{chunk-TTCVYY2B.js → chunk-CYKINZKO.js} +22 -7
  252. package/dist/chunk-CYKINZKO.js.map +1 -0
  253. package/dist/{chunk-FT6HBP5E.js → chunk-DE7E2GBP.js} +11 -8
  254. package/dist/chunk-DE7E2GBP.js.map +1 -0
  255. package/dist/{chunk-QWVETTIY.js → chunk-DJMVBIFD.js} +21 -12
  256. package/dist/chunk-DJMVBIFD.js.map +1 -0
  257. package/dist/{chunk-3HLKTBEO.js → chunk-DQ22UKMZ.js} +4 -2
  258. package/dist/{chunk-3HLKTBEO.js.map → chunk-DQ22UKMZ.js.map} +1 -1
  259. package/dist/{chunk-INGPH3YQ.js → chunk-DVRNW33K.js} +28 -5
  260. package/dist/chunk-DVRNW33K.js.map +1 -0
  261. package/dist/{chunk-VQYR64QB.js → chunk-DX5PLJKN.js} +8 -3
  262. package/dist/chunk-DX5PLJKN.js.map +1 -0
  263. package/dist/{chunk-7XSCEHGA.js → chunk-EOQ6EKTS.js} +7 -7
  264. package/dist/{chunk-UGH2DDST.js → chunk-ETSASQXI.js} +4 -2
  265. package/dist/chunk-ETSASQXI.js.map +1 -0
  266. package/dist/{chunk-3VXS7O3X.js → chunk-EVYLJ5JB.js} +17 -3
  267. package/dist/chunk-EVYLJ5JB.js.map +1 -0
  268. package/dist/chunk-FB4GLQQO.js +102 -0
  269. package/dist/chunk-FB4GLQQO.js.map +1 -0
  270. package/dist/{chunk-WC3W36AM.js → chunk-FKUVFPQZ.js} +26 -12
  271. package/dist/chunk-FKUVFPQZ.js.map +1 -0
  272. package/dist/{chunk-VEKTKCSB.js → chunk-FLJ3RIRP.js} +5 -5
  273. package/dist/{chunk-LH4VKUZC.js → chunk-FLTXJWOC.js} +13 -7
  274. package/dist/chunk-FLTXJWOC.js.map +1 -0
  275. package/dist/{chunk-2ARVNCVU.js → chunk-FZUAB2KS.js} +8 -6
  276. package/dist/chunk-FZUAB2KS.js.map +1 -0
  277. package/dist/{chunk-PY3RW5LC.js → chunk-G2IVONJD.js} +24 -10
  278. package/dist/chunk-G2IVONJD.js.map +1 -0
  279. package/dist/{chunk-Z5WUSI47.js → chunk-G3JFESKD.js} +6 -6
  280. package/dist/{chunk-XRDH24J7.js → chunk-G6ET2DRL.js} +2 -2
  281. package/dist/{chunk-KIL3OVLI.js → chunk-G76PIGF7.js} +6 -2
  282. package/dist/chunk-G76PIGF7.js.map +1 -0
  283. package/dist/{chunk-XQWUVQ2F.js → chunk-GHGZI7PK.js} +6 -2
  284. package/dist/chunk-GHGZI7PK.js.map +1 -0
  285. package/dist/{chunk-4MQ6XTIJ.js → chunk-GJMWQUAD.js} +24 -13
  286. package/dist/chunk-GJMWQUAD.js.map +1 -0
  287. package/dist/{chunk-U4G3KY6L.js → chunk-GMU5AA3R.js} +8 -7
  288. package/dist/chunk-GMU5AA3R.js.map +1 -0
  289. package/dist/{chunk-ZFBFQK2Y.js → chunk-GPPUKDA6.js} +11 -12
  290. package/dist/chunk-GPPUKDA6.js.map +1 -0
  291. package/dist/{chunk-O36MIQIO.js → chunk-GPQ22MPR.js} +2 -2
  292. package/dist/{chunk-GRMBCJS6.js → chunk-H6R2L7VI.js} +4 -4
  293. package/dist/{chunk-AMLHEKSV.js → chunk-HI7JPDD6.js} +5 -5
  294. package/dist/{chunk-H3AQQOTI.js → chunk-HKGKQKQT.js} +9 -2
  295. package/dist/chunk-HKGKQKQT.js.map +1 -0
  296. package/dist/{chunk-CW6Y32N2.js → chunk-I2CT4XIP.js} +6 -6
  297. package/dist/{chunk-N34AOGK3.js → chunk-I3OKAQ5L.js} +7 -7
  298. package/dist/{chunk-AEYLFBZT.js → chunk-I4NDZFTB.js} +2 -2
  299. package/dist/{chunk-5J7SA4CZ.js → chunk-IASPZGYB.js} +28 -10
  300. package/dist/chunk-IASPZGYB.js.map +1 -0
  301. package/dist/{chunk-2ZRZTGWP.js → chunk-ISW5K72V.js} +5 -5
  302. package/dist/{chunk-KARMRTTM.js → chunk-J2RUDZVJ.js} +7 -7
  303. package/dist/{chunk-FTPTPASD.js → chunk-JBYFBPI6.js} +2 -5
  304. package/dist/{chunk-FTPTPASD.js.map → chunk-JBYFBPI6.js.map} +1 -1
  305. package/dist/{chunk-4M5GEKPM.js → chunk-JL4I7OQE.js} +4 -4
  306. package/dist/chunk-JQLQOIB3.js +1 -0
  307. package/dist/chunk-JQLQOIB3.js.map +1 -0
  308. package/dist/{chunk-NBXG3SQ3.js → chunk-JSY234NY.js} +5 -5
  309. package/dist/{chunk-HQCZT6TO.js → chunk-JVOEVTCZ.js} +5 -5
  310. package/dist/{chunk-MBMZNSBP.js → chunk-JW7MN4DG.js} +3 -3
  311. package/dist/{chunk-ZPACE34U.js → chunk-K53XSVQO.js} +10 -10
  312. package/dist/{chunk-RUF7TOAZ.js → chunk-KE74C2SM.js} +3 -2
  313. package/dist/{chunk-RUF7TOAZ.js.map → chunk-KE74C2SM.js.map} +1 -1
  314. package/dist/{chunk-GBVNY2LG.js → chunk-KTXJQ4YJ.js} +6 -6
  315. package/dist/{chunk-FCVPVEAS.js → chunk-KYE7I6NT.js} +7 -7
  316. package/dist/{chunk-MM7BPTVV.js → chunk-KYT5G4K7.js} +2 -2
  317. package/dist/{chunk-4VRDFZ4G.js → chunk-KYTFGW4R.js} +7 -3
  318. package/dist/chunk-KYTFGW4R.js.map +1 -0
  319. package/dist/chunk-L35TCXFA.js +74 -0
  320. package/dist/chunk-L35TCXFA.js.map +1 -0
  321. package/dist/{chunk-3V3Z4EML.js → chunk-L4FWEI2P.js} +5 -5
  322. package/dist/{chunk-7VRCGWQL.js → chunk-L7N4AFZD.js} +6 -5
  323. package/dist/chunk-L7N4AFZD.js.map +1 -0
  324. package/dist/{chunk-2TSGRQ2J.js → chunk-LHJJZ462.js} +4 -2
  325. package/dist/chunk-LHJJZ462.js.map +1 -0
  326. package/dist/{chunk-SV6IQ2YO.js → chunk-LIWONEAU.js} +6 -4
  327. package/dist/chunk-LIWONEAU.js.map +1 -0
  328. package/dist/chunk-LL2BWQPM.js +11 -0
  329. package/dist/chunk-LL2BWQPM.js.map +1 -0
  330. package/dist/{chunk-XYFBJH6F.js → chunk-LR473BUT.js} +19 -9
  331. package/dist/chunk-LR473BUT.js.map +1 -0
  332. package/dist/{chunk-56JF5PZK.js → chunk-LYVTJLCF.js} +4 -4
  333. package/dist/{chunk-M3DSPEZ3.js → chunk-M3ZNQTS5.js} +5 -5
  334. package/dist/{chunk-AYJ44VTJ.js → chunk-MBY7DWGT.js} +15 -13
  335. package/dist/chunk-MBY7DWGT.js.map +1 -0
  336. package/dist/{chunk-GBKIGUNP.js → chunk-MGDCGNLC.js} +3 -3
  337. package/dist/{chunk-BGYLL467.js → chunk-N3W6FZOC.js} +4 -4
  338. package/dist/{chunk-BWFUZ4N2.js → chunk-NA3M7KDE.js} +4 -4
  339. package/dist/{chunk-MTGEJRE4.js → chunk-NNKIM73H.js} +17 -4
  340. package/dist/chunk-NNKIM73H.js.map +1 -0
  341. package/dist/{chunk-OHXAJUO5.js → chunk-NPPO7G2B.js} +5 -3
  342. package/dist/{chunk-OHXAJUO5.js.map → chunk-NPPO7G2B.js.map} +1 -1
  343. package/dist/{chunk-FIOBPQL2.js → chunk-NUUX4BBR.js} +10 -3
  344. package/dist/chunk-NUUX4BBR.js.map +1 -0
  345. package/dist/{chunk-7JOLSD2W.js → chunk-P3QFJJJY.js} +3 -3
  346. package/dist/{chunk-RCTHCXS6.js → chunk-PJNIJIE6.js} +2 -2
  347. package/dist/{chunk-DXFKPY2K.js → chunk-PU3FQG7T.js} +4 -4
  348. package/dist/{chunk-6ATXOJVQ.js → chunk-QADTI63U.js} +4 -4
  349. package/dist/{chunk-FRGNTTPA.js → chunk-QDRHIK2R.js} +15 -10
  350. package/dist/chunk-QDRHIK2R.js.map +1 -0
  351. package/dist/{chunk-SUZXPDUQ.js → chunk-QJLOWBFW.js} +12 -6
  352. package/dist/chunk-QJLOWBFW.js.map +1 -0
  353. package/dist/chunk-QNAB53N3.js +1 -0
  354. package/dist/chunk-QNAB53N3.js.map +1 -0
  355. package/dist/{chunk-7ZROYGUG.js → chunk-QOTMQLMW.js} +2 -2
  356. package/dist/{chunk-NQCTANF3.js → chunk-QVDEGBME.js} +7 -7
  357. package/dist/{chunk-HEBZ7Q7O.js → chunk-QVYBRD6U.js} +7 -6
  358. package/dist/chunk-QVYBRD6U.js.map +1 -0
  359. package/dist/{chunk-VNVV6Y2X.js → chunk-RECD3XOL.js} +4 -2
  360. package/dist/chunk-RECD3XOL.js.map +1 -0
  361. package/dist/{chunk-JJVIZR6C.js → chunk-RIPG3QIN.js} +24 -13
  362. package/dist/chunk-RIPG3QIN.js.map +1 -0
  363. package/dist/{chunk-T743IIER.js → chunk-RNQA7MDM.js} +8 -4
  364. package/dist/chunk-RNQA7MDM.js.map +1 -0
  365. package/dist/{chunk-YNDTLBOH.js → chunk-RQMYEPRR.js} +2 -2
  366. package/dist/{chunk-3JDP5OUR.js → chunk-RQY5ONSF.js} +6 -2
  367. package/dist/chunk-RQY5ONSF.js.map +1 -0
  368. package/dist/{chunk-Y7YJYUNV.js → chunk-RRSLH2FV.js} +10 -3
  369. package/dist/chunk-RRSLH2FV.js.map +1 -0
  370. package/dist/{chunk-3Z3WIQ5M.js → chunk-RZ3QMKM7.js} +5 -5
  371. package/dist/{chunk-WA6F4NOO.js → chunk-SMANO5OD.js} +4 -4
  372. package/dist/{chunk-5M2NWXN4.js → chunk-SRNBD6EV.js} +2 -2
  373. package/dist/{chunk-7SYYGXC7.js → chunk-SSCEX5NY.js} +6 -2
  374. package/dist/chunk-SSCEX5NY.js.map +1 -0
  375. package/dist/{chunk-PU3HEWSG.js → chunk-SYSR2K2M.js} +13 -4
  376. package/dist/chunk-SYSR2K2M.js.map +1 -0
  377. package/dist/{chunk-R53ZOW4B.js → chunk-TGMMUKOF.js} +3 -3
  378. package/dist/{chunk-SB2SEGR6.js → chunk-TIM4PXWN.js} +3 -3
  379. package/dist/{chunk-555TUQ7E.js → chunk-TPGFR24B.js} +5 -5
  380. package/dist/{chunk-MHLYX6QW.js → chunk-TRAMTVIO.js} +5 -5
  381. package/dist/{chunk-QO7UJXXO.js → chunk-TVMSXL3R.js} +2 -2
  382. package/dist/{chunk-OE3SQOZV.js → chunk-U6XXAVBO.js} +13 -7
  383. package/dist/chunk-U6XXAVBO.js.map +1 -0
  384. package/dist/{chunk-CZV6NVCA.js → chunk-UG4EMHMW.js} +10 -7
  385. package/dist/chunk-UG4EMHMW.js.map +1 -0
  386. package/dist/{chunk-VEBNL5MG.js → chunk-UGYBN6OO.js} +2 -2
  387. package/dist/{chunk-AG3DY5TH.js → chunk-UHQZ5XPW.js} +5 -4
  388. package/dist/chunk-UHQZ5XPW.js.map +1 -0
  389. package/dist/{chunk-2QO3BKUQ.js → chunk-UJT6AQHL.js} +4 -4
  390. package/dist/{chunk-FTDGFWB5.js → chunk-UK3DSFMK.js} +5 -5
  391. package/dist/{chunk-NYWAAXDX.js → chunk-URAXAKUI.js} +3 -3
  392. package/dist/{chunk-XODBYGTH.js → chunk-V37QIB7B.js} +2 -2
  393. package/dist/{chunk-7K23NEZO.js → chunk-V45JGJ3W.js} +8 -8
  394. package/dist/{chunk-RA6W37NZ.js → chunk-V64USPG3.js} +11 -8
  395. package/dist/chunk-V64USPG3.js.map +1 -0
  396. package/dist/{chunk-HZK4DRGF.js → chunk-V7INHV5V.js} +6 -4
  397. package/dist/chunk-V7INHV5V.js.map +1 -0
  398. package/dist/{chunk-RZCXYKY4.js → chunk-VFVATUC6.js} +6 -2
  399. package/dist/chunk-VFVATUC6.js.map +1 -0
  400. package/dist/{chunk-2MYSXWZQ.js → chunk-VKTF3GAP.js} +9 -9
  401. package/dist/{chunk-ICRVLGWD.js → chunk-VMU52I5D.js} +8 -2
  402. package/dist/chunk-VMU52I5D.js.map +1 -0
  403. package/dist/{chunk-KHIUYLKY.js → chunk-VQ6UB4MN.js} +8 -8
  404. package/dist/{chunk-LTTYUSJ2.js → chunk-VTDZUO2J.js} +4 -2
  405. package/dist/chunk-VTDZUO2J.js.map +1 -0
  406. package/dist/{chunk-4HUSG5MR.js → chunk-VZVAP2ZR.js} +2 -2
  407. package/dist/{chunk-4XBAEKQQ.js → chunk-W2RXXF7K.js} +4 -4
  408. package/dist/chunk-W5PRZHLU.js +74 -0
  409. package/dist/chunk-W5PRZHLU.js.map +1 -0
  410. package/dist/{chunk-A2YLFKQU.js → chunk-W5WYTVLS.js} +2 -2
  411. package/dist/{chunk-EUACQR6N.js → chunk-WE43PZ4P.js} +7 -5
  412. package/dist/chunk-WE43PZ4P.js.map +1 -0
  413. package/dist/{chunk-RHKQ2RSY.js → chunk-WUW6NDXC.js} +15 -15
  414. package/dist/{chunk-EBCEDBHX.js → chunk-XDDKRACZ.js} +3 -3
  415. package/dist/{chunk-SLSED46V.js → chunk-Y3DV7LGC.js} +2 -1
  416. package/dist/{chunk-SLSED46V.js.map → chunk-Y3DV7LGC.js.map} +1 -1
  417. package/dist/{chunk-ASZGMKB4.js → chunk-Y3TD7HOY.js} +2 -2
  418. package/dist/{chunk-HBHBRRSW.js → chunk-YBAK2WN5.js} +7 -7
  419. package/dist/{chunk-LOLYI6PS.js → chunk-YCZGYYUX.js} +11 -8
  420. package/dist/chunk-YCZGYYUX.js.map +1 -0
  421. package/dist/{chunk-KT3TF2LT.js → chunk-YJ6UQDA6.js} +7 -5
  422. package/dist/chunk-YJ6UQDA6.js.map +1 -0
  423. package/dist/{chunk-6RTE4UNO.js → chunk-YV4O7KDR.js} +1 -1
  424. package/dist/{chunk-Z5V5E3JW.js → chunk-ZIHSCBMN.js} +10 -10
  425. package/dist/data-display/Alert.js +3 -3
  426. package/dist/data-display/AlertDialog.js +2 -1
  427. package/dist/data-display/AsyncStateContainer.js +3 -3
  428. package/dist/data-display/Avatar.js +4 -4
  429. package/dist/data-display/CardKit.js +18 -17
  430. package/dist/data-display/Carousel.js +7 -4
  431. package/dist/data-display/Chart.js +11 -11
  432. package/dist/data-display/DataGrid.js +2 -2
  433. package/dist/data-display/DataViews.js +86 -85
  434. package/dist/data-display/EmptyState.js +2 -2
  435. package/dist/data-display/FleetMap.js +15 -12
  436. package/dist/data-display/HoverCard.js +2 -2
  437. package/dist/data-display/InteractiveTooltip.js +2 -2
  438. package/dist/data-display/LazyImage.js +3 -2
  439. package/dist/data-display/Lightbox.js +6 -6
  440. package/dist/data-display/MapPreview.js +9 -6
  441. package/dist/data-display/Progress.js +2 -2
  442. package/dist/data-display/SectionOnboarding.js +6 -4
  443. package/dist/data-display/Sheet.js +4 -4
  444. package/dist/data-display/Stepper.js +3 -1
  445. package/dist/data-display/Table.js +6 -4
  446. package/dist/data-display/Timeline.js +4 -2
  447. package/dist/en-US.js +16 -12
  448. package/dist/feedback/ConfirmAction.js +9 -8
  449. package/dist/feedback/Dialog.js +3 -2
  450. package/dist/feedback/NotificationStatusNotice.js +4 -4
  451. package/dist/feedback/SequenceResolver.js +12 -11
  452. package/dist/feedback/Sonner.js +3 -2
  453. package/dist/feedback/StackedModal.js +7 -6
  454. package/dist/feedback/Toast.js +2 -1
  455. package/dist/feedback/TutorialOverlay.js +3 -2
  456. package/dist/form/AddressAutocomplete.js +12 -10
  457. package/dist/form/Autocomplete.js +2 -2
  458. package/dist/form/Calendar.js +6 -6
  459. package/dist/form/CategorySelect.js +9 -9
  460. package/dist/form/Checkbox.js +2 -2
  461. package/dist/form/CodeEditor.js +3 -3
  462. package/dist/form/DateRangePicker.js +9 -9
  463. package/dist/form/InputOTP.js +2 -2
  464. package/dist/form/Menubar.js +2 -2
  465. package/dist/form/PhoneInput.js +3 -3
  466. package/dist/form/PickerSheet.js +4 -4
  467. package/dist/form/RichTextEditor.js +7 -5
  468. package/dist/form/Switch.js +4 -4
  469. package/dist/form/Textarea.js +1 -1
  470. package/dist/form/UploadButton.js +3 -2
  471. package/dist/form/total-form.js +18 -17
  472. package/dist/layout/Card.js +2 -2
  473. package/dist/layout/ContentToolbar.js +11 -10
  474. package/dist/layout/Dashboard.js +2 -1
  475. package/dist/layout/ScrollArea.js +3 -3
  476. package/dist/layout/SettingCard.js +17 -17
  477. package/dist/layout/SettingsLayout.js +6 -6
  478. package/dist/locales.js +36 -28
  479. package/dist/locales.js.map +1 -1
  480. package/dist/native/chunks/{chunk-BXNZHDXK.js → chunk-4SP3BDPZ.js} +12 -5
  481. package/dist/native/chunks/chunk-4SP3BDPZ.js.map +1 -0
  482. package/dist/native/chunks/{chunk-AVHGS66L.js → chunk-FGAX5BRS.js} +2 -2
  483. package/dist/native/chunks/chunk-SPK34J7Y.js +74 -0
  484. package/dist/native/chunks/chunk-SPK34J7Y.js.map +1 -0
  485. package/dist/native/data-display/Badge.js +9 -3
  486. package/dist/native/data-display/Badge.js.map +1 -1
  487. package/dist/native/data-display/Chip.js +9 -1
  488. package/dist/native/data-display/Chip.js.map +1 -1
  489. package/dist/native/data-display/EmptyState.js +3 -2
  490. package/dist/native/data-display/ErrorState.js +2 -1
  491. package/dist/native/data-display/ErrorState.js.map +1 -1
  492. package/dist/native/data-display/FleetMap.js +3 -2
  493. package/dist/native/data-display/FleetMap.js.map +1 -1
  494. package/dist/native/feedback/Dialog.js +20 -3
  495. package/dist/native/feedback/Dialog.js.map +1 -1
  496. package/dist/native/form/Button.js +2 -1
  497. package/dist/native/form/Checkbox.js +6 -1
  498. package/dist/native/form/Checkbox.js.map +1 -1
  499. package/dist/native/form/Input.js +11 -3
  500. package/dist/native/form/Input.js.map +1 -1
  501. package/dist/native/form/Switch.js +5 -1
  502. package/dist/native/form/Switch.js.map +1 -1
  503. package/dist/navigation/AppHeader.js +10 -9
  504. package/dist/navigation/CommandPalette.js +6 -4
  505. package/dist/navigation/NavigationMenu.js +7 -6
  506. package/dist/navigation/Pagination.js +2 -2
  507. package/dist/navigation/SectionNav.js +5 -5
  508. package/dist/pt-BR.js +10 -6
  509. package/dist/social-login-button.js +4 -4
  510. package/dist/types/components/data-display/AlertDialog/AlertDialog.d.ts.map +1 -1
  511. package/dist/types/components/data-display/AlertDialog/AlertDialog.types.d.ts +5 -0
  512. package/dist/types/components/data-display/AlertDialog/AlertDialog.types.d.ts.map +1 -1
  513. package/dist/types/components/data-display/Carousel/Carousel.chrome.d.ts.map +1 -1
  514. package/dist/types/components/data-display/Carousel/Carousel.parts.d.ts.map +1 -1
  515. package/dist/types/components/data-display/Carousel/Carousel.types.d.ts +2 -0
  516. package/dist/types/components/data-display/Carousel/Carousel.types.d.ts.map +1 -1
  517. package/dist/types/components/data-display/LazyImage/LazyImage.d.ts.map +1 -1
  518. package/dist/types/components/data-display/LazyImage/LazyImage.types.d.ts +10 -0
  519. package/dist/types/components/data-display/LazyImage/LazyImage.types.d.ts.map +1 -1
  520. package/dist/types/components/data-display/MapPreview/MapControlBar.d.ts.map +1 -1
  521. package/dist/types/components/data-display/MapPreview/MapLayers.d.ts +1 -1
  522. package/dist/types/components/data-display/MapPreview/MapLayers.d.ts.map +1 -1
  523. package/dist/types/components/data-display/MapPreview/MapMarkers.d.ts +2 -0
  524. package/dist/types/components/data-display/MapPreview/MapMarkers.d.ts.map +1 -1
  525. package/dist/types/components/data-display/MapPreview/MapPreview.d.ts.map +1 -1
  526. package/dist/types/components/data-display/MapPreview/MapPreview.helpers.d.ts +7 -1
  527. package/dist/types/components/data-display/MapPreview/MapPreview.helpers.d.ts.map +1 -1
  528. package/dist/types/components/data-display/Stepper/Stepper.d.ts.map +1 -1
  529. package/dist/types/components/data-display/Stepper/Stepper.types.d.ts +4 -0
  530. package/dist/types/components/data-display/Stepper/Stepper.types.d.ts.map +1 -1
  531. package/dist/types/components/data-display/Table/Table.d.ts.map +1 -1
  532. package/dist/types/components/data-display/Table/Table.helpers.d.ts.map +1 -1
  533. package/dist/types/components/data-display/Table/Table.types.d.ts +11 -0
  534. package/dist/types/components/data-display/Table/Table.types.d.ts.map +1 -1
  535. package/dist/types/components/data-display/Table/TableParts.d.ts +2 -1
  536. package/dist/types/components/data-display/Table/TableParts.d.ts.map +1 -1
  537. package/dist/types/components/data-display/Table/TableParts.hooks.d.ts +2 -2
  538. package/dist/types/components/data-display/Table/TableParts.hooks.d.ts.map +1 -1
  539. package/dist/types/components/data-display/Timeline/Timeline.d.ts.map +1 -1
  540. package/dist/types/components/data-display/Timeline/Timeline.types.d.ts +3 -0
  541. package/dist/types/components/data-display/Timeline/Timeline.types.d.ts.map +1 -1
  542. package/dist/types/components/data-display/Timeline/TimelineRow.d.ts +2 -0
  543. package/dist/types/components/data-display/Timeline/TimelineRow.d.ts.map +1 -1
  544. package/dist/types/components/feedback/Dialog/Dialog.base.d.ts +10 -0
  545. package/dist/types/components/feedback/Dialog/Dialog.base.d.ts.map +1 -1
  546. package/dist/types/components/feedback/Dialog/Dialog.d.ts.map +1 -1
  547. package/dist/types/components/feedback/Sonner/Sonner.d.ts +6 -0
  548. package/dist/types/components/feedback/Sonner/Sonner.d.ts.map +1 -1
  549. package/dist/types/components/feedback/Sonner/SonnerToast.d.ts.map +1 -1
  550. package/dist/types/components/feedback/StackedModal/StackedModal.d.ts.map +1 -1
  551. package/dist/types/components/feedback/StackedModal/StackedModal.parts.d.ts +2 -0
  552. package/dist/types/components/feedback/StackedModal/StackedModal.parts.d.ts.map +1 -1
  553. package/dist/types/components/feedback/StackedModal/StackedModal.types.d.ts +5 -0
  554. package/dist/types/components/feedback/StackedModal/StackedModal.types.d.ts.map +1 -1
  555. package/dist/types/components/feedback/Toast/Toast.d.ts.map +1 -1
  556. package/dist/types/components/feedback/Toast/Toast.types.d.ts +5 -0
  557. package/dist/types/components/feedback/Toast/Toast.types.d.ts.map +1 -1
  558. package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.d.ts.map +1 -1
  559. package/dist/types/components/feedback/TutorialOverlay/TutorialStepBody.d.ts.map +1 -1
  560. package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.d.ts.map +1 -1
  561. package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.helpers.d.ts +1 -1
  562. package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.helpers.d.ts.map +1 -1
  563. package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.hooks.d.ts +3 -1
  564. package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.hooks.d.ts.map +1 -1
  565. package/dist/types/components/form/AddressAutocomplete/AddressAutocompleteField.d.ts.map +1 -1
  566. package/dist/types/components/form/AddressAutocomplete/useAddressPredictions.d.ts +2 -1
  567. package/dist/types/components/form/AddressAutocomplete/useAddressPredictions.d.ts.map +1 -1
  568. package/dist/types/components/form/AddressAutocomplete/useAddressSelection.d.ts +3 -1
  569. package/dist/types/components/form/AddressAutocomplete/useAddressSelection.d.ts.map +1 -1
  570. package/dist/types/components/form/AddressAutocomplete/useCurrentLocation.d.ts +3 -1
  571. package/dist/types/components/form/AddressAutocomplete/useCurrentLocation.d.ts.map +1 -1
  572. package/dist/types/components/form/AddressAutocomplete/useGoogleMapsAPI.d.ts +4 -1
  573. package/dist/types/components/form/AddressAutocomplete/useGoogleMapsAPI.d.ts.map +1 -1
  574. package/dist/types/components/form/Button/Button.native.loading.d.ts +2 -1
  575. package/dist/types/components/form/Button/Button.native.loading.d.ts.map +1 -1
  576. package/dist/types/components/form/Calendar/CalendarDay.d.ts.map +1 -1
  577. package/dist/types/components/form/Calendar/CalendarMonth.d.ts.map +1 -1
  578. package/dist/types/components/form/PhoneInput/PhoneInput.d.ts.map +1 -1
  579. package/dist/types/components/form/PhoneInput/PhoneInput.types.d.ts +1 -0
  580. package/dist/types/components/form/PhoneInput/PhoneInput.types.d.ts.map +1 -1
  581. package/dist/types/components/form/PhoneInput/countries.d.ts +6 -0
  582. package/dist/types/components/form/PhoneInput/countries.d.ts.map +1 -1
  583. package/dist/types/components/form/RichTextEditor/RichTextEditor.d.ts.map +1 -1
  584. package/dist/types/components/form/RichTextEditor/RichTextEditor.dom.d.ts +1 -1
  585. package/dist/types/components/form/RichTextEditor/RichTextEditor.dom.d.ts.map +1 -1
  586. package/dist/types/components/form/RichTextEditor/RichTextEditor.format.d.ts +2 -1
  587. package/dist/types/components/form/RichTextEditor/RichTextEditor.format.d.ts.map +1 -1
  588. package/dist/types/components/form/RichTextEditor/RichTextEditor.hooks.d.ts +2 -1
  589. package/dist/types/components/form/RichTextEditor/RichTextEditor.hooks.d.ts.map +1 -1
  590. package/dist/types/components/form/RichTextEditor/RichTextEditor.types.d.ts +7 -1
  591. package/dist/types/components/form/RichTextEditor/RichTextEditor.types.d.ts.map +1 -1
  592. package/dist/types/components/form/RichTextEditor/RichTextEditorToolbar.d.ts +2 -0
  593. package/dist/types/components/form/RichTextEditor/RichTextEditorToolbar.d.ts.map +1 -1
  594. package/dist/types/components/form/Textarea/TextareaRichEditor.d.ts.map +1 -1
  595. package/dist/types/components/form/UploadButton/UploadButton.hooks.d.ts.map +1 -1
  596. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts +14 -0
  597. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts.map +1 -1
  598. package/dist/types/components/layout/ContentToolbar/FilterTrigger.d.ts +1 -1
  599. package/dist/types/components/layout/ContentToolbar/FilterTrigger.d.ts.map +1 -1
  600. package/dist/types/components/layout/ContentToolbar/ViewSelector.d.ts +1 -1
  601. package/dist/types/components/layout/ContentToolbar/ViewSelector.d.ts.map +1 -1
  602. package/dist/types/components/layout/Dashboard/Dashboard.d.ts +1 -1
  603. package/dist/types/components/layout/Dashboard/Dashboard.d.ts.map +1 -1
  604. package/dist/types/components/layout/Dashboard/Dashboard.types.d.ts +5 -0
  605. package/dist/types/components/layout/Dashboard/Dashboard.types.d.ts.map +1 -1
  606. package/dist/types/components/navigation/CommandPalette/CommandPalette.d.ts.map +1 -1
  607. package/dist/types/components/navigation/CommandPalette/CommandPalette.helpers.d.ts +1 -1
  608. package/dist/types/components/navigation/CommandPalette/CommandPalette.helpers.d.ts.map +1 -1
  609. package/dist/types/components/navigation/CommandPalette/CommandPalette.hooks.d.ts +2 -1
  610. package/dist/types/components/navigation/CommandPalette/CommandPalette.hooks.d.ts.map +1 -1
  611. package/dist/types/components/navigation/CommandPalette/CommandPaletteResults.d.ts.map +1 -1
  612. package/dist/types/components/navigation/NavigationMenu/NavigationMenu.d.ts.map +1 -1
  613. package/dist/types/components/navigation/NavigationMenu/NavigationMenu.shell.d.ts +1 -0
  614. package/dist/types/components/navigation/NavigationMenu/NavigationMenu.shell.d.ts.map +1 -1
  615. package/dist/types/components/navigation/NavigationMenu/NavigationMenu.types.d.ts +11 -0
  616. package/dist/types/components/navigation/NavigationMenu/NavigationMenu.types.d.ts.map +1 -1
  617. package/dist/types/components/navigation/NavigationMenu/NavigationMenuItem.d.ts.map +1 -1
  618. package/dist/types/components/navigation/NavigationMenu/NavigationStandardBody.d.ts +4 -0
  619. package/dist/types/components/navigation/NavigationMenu/NavigationStandardBody.d.ts.map +1 -1
  620. package/dist/types/components/typography/Code/Code.d.ts.map +1 -1
  621. package/dist/types/components/typography/Code/Code.types.d.ts +4 -0
  622. package/dist/types/components/typography/Code/Code.types.d.ts.map +1 -1
  623. package/dist/types/components/utility/WorkflowStep/WorkflowStep.d.ts.map +1 -1
  624. package/dist/types/components/utility/WorkflowStep/WorkflowStep.helpers.d.ts +4 -1
  625. package/dist/types/components/utility/WorkflowStep/WorkflowStep.helpers.d.ts.map +1 -1
  626. package/dist/types/components/utility/WorkflowStep/WorkflowStep.parts.d.ts.map +1 -1
  627. package/dist/types/components/utility/WorkflowStep/WorkflowStep.types.d.ts +9 -0
  628. package/dist/types/components/utility/WorkflowStep/WorkflowStep.types.d.ts.map +1 -1
  629. package/dist/types/components/utility/WorkflowStep/WorkflowStepRow.d.ts +1 -0
  630. package/dist/types/components/utility/WorkflowStep/WorkflowStepRow.d.ts.map +1 -1
  631. package/dist/types/copy/data-display.d.ts +24 -0
  632. package/dist/types/copy/data-display.d.ts.map +1 -1
  633. package/dist/types/copy/feedback.d.ts +4 -0
  634. package/dist/types/copy/feedback.d.ts.map +1 -1
  635. package/dist/types/copy/form.d.ts +58 -0
  636. package/dist/types/copy/form.d.ts.map +1 -1
  637. package/dist/types/copy/labels.d.ts +108 -0
  638. package/dist/types/copy/labels.d.ts.map +1 -0
  639. package/dist/types/copy/navigation.d.ts +12 -0
  640. package/dist/types/copy/navigation.d.ts.map +1 -1
  641. package/dist/types/copy/utility.d.ts +8 -1
  642. package/dist/types/copy/utility.d.ts.map +1 -1
  643. package/dist/types/copy.d.ts +1 -0
  644. package/dist/types/copy.d.ts.map +1 -1
  645. package/dist/types/en-US.d.ts +1 -0
  646. package/dist/types/en-US.d.ts.map +1 -1
  647. package/dist/types/en-US.data-display.d.ts +2 -2
  648. package/dist/types/en-US.data-display.d.ts.map +1 -1
  649. package/dist/types/en-US.feedback.d.ts +1 -1
  650. package/dist/types/en-US.feedback.d.ts.map +1 -1
  651. package/dist/types/en-US.form.d.ts +4 -4
  652. package/dist/types/en-US.form.d.ts.map +1 -1
  653. package/dist/types/en-US.labels.d.ts +9 -0
  654. package/dist/types/en-US.labels.d.ts.map +1 -0
  655. package/dist/types/en-US.navigation.d.ts +1 -1
  656. package/dist/types/en-US.navigation.d.ts.map +1 -1
  657. package/dist/types/en-US.utility.d.ts +1 -1
  658. package/dist/types/en-US.utility.d.ts.map +1 -1
  659. package/dist/types/locales.d.ts +2 -1
  660. package/dist/types/locales.d.ts.map +1 -1
  661. package/dist/types/pt-BR.d.ts +1 -0
  662. package/dist/types/pt-BR.d.ts.map +1 -1
  663. package/dist/types/pt-BR.data-display.d.ts +2 -2
  664. package/dist/types/pt-BR.data-display.d.ts.map +1 -1
  665. package/dist/types/pt-BR.feedback.d.ts +1 -1
  666. package/dist/types/pt-BR.feedback.d.ts.map +1 -1
  667. package/dist/types/pt-BR.form.d.ts +4 -4
  668. package/dist/types/pt-BR.form.d.ts.map +1 -1
  669. package/dist/types/pt-BR.labels.d.ts +8 -0
  670. package/dist/types/pt-BR.labels.d.ts.map +1 -0
  671. package/dist/types/pt-BR.navigation.d.ts +1 -1
  672. package/dist/types/pt-BR.navigation.d.ts.map +1 -1
  673. package/dist/types/pt-BR.utility.d.ts +1 -1
  674. package/dist/types/pt-BR.utility.d.ts.map +1 -1
  675. package/dist/types/user-avatar/user-avatar.d.ts +6 -1
  676. package/dist/types/user-avatar/user-avatar.d.ts.map +1 -1
  677. package/dist/types/utils/resolve-labels.d.ts +9 -0
  678. package/dist/types/utils/resolve-labels.d.ts.map +1 -0
  679. package/dist/types-native/components/data-display/Badge/Badge.native.d.ts +1 -0
  680. package/dist/types-native/components/data-display/Badge/Badge.native.d.ts.map +1 -1
  681. package/dist/types-native/components/data-display/Badge/Badge.types.native.d.ts +2 -0
  682. package/dist/types-native/components/data-display/Badge/Badge.types.native.d.ts.map +1 -1
  683. package/dist/types-native/components/data-display/Badge/BadgeContent.native.d.ts +2 -1
  684. package/dist/types-native/components/data-display/Badge/BadgeContent.native.d.ts.map +1 -1
  685. package/dist/types-native/components/data-display/Chip/Chip.native.d.ts +1 -0
  686. package/dist/types-native/components/data-display/Chip/Chip.native.d.ts.map +1 -1
  687. package/dist/types-native/components/data-display/Chip/Chip.types.native.d.ts +2 -0
  688. package/dist/types-native/components/data-display/Chip/Chip.types.native.d.ts.map +1 -1
  689. package/dist/types-native/components/feedback/Dialog/Dialog.base.d.ts +10 -0
  690. package/dist/types-native/components/feedback/Dialog/Dialog.base.d.ts.map +1 -1
  691. package/dist/types-native/components/feedback/Dialog/Dialog.native.d.ts.map +1 -1
  692. package/dist/types-native/components/feedback/Dialog/DialogParts.native.d.ts +1 -1
  693. package/dist/types-native/components/feedback/Dialog/DialogParts.native.d.ts.map +1 -1
  694. package/dist/types-native/components/form/Button/Button.native.d.ts +1 -0
  695. package/dist/types-native/components/form/Button/Button.native.d.ts.map +1 -1
  696. package/dist/types-native/components/form/Button/Button.native.loading.d.ts +2 -1
  697. package/dist/types-native/components/form/Button/Button.native.loading.d.ts.map +1 -1
  698. package/dist/types-native/components/form/Button/Button.types.native.d.ts +2 -0
  699. package/dist/types-native/components/form/Button/Button.types.native.d.ts.map +1 -1
  700. package/dist/types-native/components/form/Checkbox/Checkbox.native.d.ts +1 -0
  701. package/dist/types-native/components/form/Checkbox/Checkbox.native.d.ts.map +1 -1
  702. package/dist/types-native/components/form/Checkbox/Checkbox.types.native.d.ts +2 -0
  703. package/dist/types-native/components/form/Checkbox/Checkbox.types.native.d.ts.map +1 -1
  704. package/dist/types-native/components/form/Input/Input.native.d.ts +1 -0
  705. package/dist/types-native/components/form/Input/Input.native.d.ts.map +1 -1
  706. package/dist/types-native/components/form/Input/Input.types.native.d.ts +2 -0
  707. package/dist/types-native/components/form/Input/Input.types.native.d.ts.map +1 -1
  708. package/dist/types-native/components/form/Switch/Switch.native.d.ts +1 -0
  709. package/dist/types-native/components/form/Switch/Switch.native.d.ts.map +1 -1
  710. package/dist/types-native/components/form/Switch/Switch.types.native.d.ts +2 -0
  711. package/dist/types-native/components/form/Switch/Switch.types.native.d.ts.map +1 -1
  712. package/dist/types-native/copy/data-display.d.ts +119 -0
  713. package/dist/types-native/copy/data-display.d.ts.map +1 -0
  714. package/dist/types-native/copy/labels.d.ts +108 -0
  715. package/dist/types-native/copy/labels.d.ts.map +1 -0
  716. package/dist/types-native/en-US.labels.d.ts +9 -0
  717. package/dist/types-native/en-US.labels.d.ts.map +1 -0
  718. package/dist/typography/Code.js +2 -1
  719. package/dist/user-avatar.js +8 -7
  720. package/dist/utility/InstallPrompt.js +2 -2
  721. package/dist/utility/WorkflowStep.js +6 -4
  722. package/package.json +2 -2
  723. package/src/components/data-display/AlertDialog/AlertDialog.tsx +3 -1
  724. package/src/components/data-display/AlertDialog/AlertDialog.types.ts +6 -0
  725. package/src/components/data-display/Badge/Badge.native.tsx +2 -0
  726. package/src/components/data-display/Badge/Badge.types.native.ts +2 -0
  727. package/src/components/data-display/Badge/BadgeContent.native.tsx +4 -1
  728. package/src/components/data-display/Carousel/Carousel.chrome.tsx +1 -0
  729. package/src/components/data-display/Carousel/Carousel.parts.tsx +13 -9
  730. package/src/components/data-display/Carousel/Carousel.types.ts +2 -0
  731. package/src/components/data-display/Chip/Chip.native.tsx +9 -1
  732. package/src/components/data-display/Chip/Chip.types.native.ts +2 -0
  733. package/src/components/data-display/LazyImage/LazyImage.hooks.ts +1 -1
  734. package/src/components/data-display/LazyImage/LazyImage.tsx +4 -4
  735. package/src/components/data-display/LazyImage/LazyImage.types.ts +12 -0
  736. package/src/components/data-display/MapPreview/MapControlBar.tsx +7 -3
  737. package/src/components/data-display/MapPreview/MapLayers.tsx +2 -2
  738. package/src/components/data-display/MapPreview/MapMarkers.tsx +13 -4
  739. package/src/components/data-display/MapPreview/MapPreview.helpers.ts +13 -2
  740. package/src/components/data-display/MapPreview/MapPreview.tsx +7 -3
  741. package/src/components/data-display/Stepper/Stepper.tsx +41 -7
  742. package/src/components/data-display/Stepper/Stepper.types.ts +4 -0
  743. package/src/components/data-display/Table/Table.helpers.ts +1 -0
  744. package/src/components/data-display/Table/Table.tsx +4 -5
  745. package/src/components/data-display/Table/Table.types.ts +12 -0
  746. package/src/components/data-display/Table/TableParts.hooks.tsx +8 -1
  747. package/src/components/data-display/Table/TableParts.tsx +19 -5
  748. package/src/components/data-display/Timeline/Timeline.tsx +6 -1
  749. package/src/components/data-display/Timeline/Timeline.types.ts +3 -0
  750. package/src/components/data-display/Timeline/TimelineRow.tsx +11 -4
  751. package/src/components/feedback/Dialog/Dialog.base.ts +10 -0
  752. package/src/components/feedback/Dialog/Dialog.native.tsx +2 -0
  753. package/src/components/feedback/Dialog/Dialog.tsx +5 -1
  754. package/src/components/feedback/Dialog/DialogParts.native.tsx +17 -3
  755. package/src/components/feedback/Sonner/Sonner.tsx +16 -6
  756. package/src/components/feedback/Sonner/SonnerToast.tsx +4 -2
  757. package/src/components/feedback/StackedModal/StackedModal.parts.tsx +24 -3
  758. package/src/components/feedback/StackedModal/StackedModal.tsx +2 -1
  759. package/src/components/feedback/StackedModal/StackedModal.types.ts +5 -0
  760. package/src/components/feedback/Toast/Toast.tsx +5 -2
  761. package/src/components/feedback/Toast/Toast.types.ts +5 -0
  762. package/src/components/feedback/TutorialOverlay/TutorialOverlay.tsx +3 -1
  763. package/src/components/feedback/TutorialOverlay/TutorialStepBody.tsx +12 -3
  764. package/src/components/form/AddressAutocomplete/AddressAutocomplete.helpers.ts +12 -6
  765. package/src/components/form/AddressAutocomplete/AddressAutocomplete.hooks.ts +15 -2
  766. package/src/components/form/AddressAutocomplete/AddressAutocomplete.tsx +1 -0
  767. package/src/components/form/AddressAutocomplete/AddressAutocompleteField.tsx +9 -3
  768. package/src/components/form/AddressAutocomplete/useAddressPredictions.ts +6 -3
  769. package/src/components/form/AddressAutocomplete/useAddressSelection.ts +8 -4
  770. package/src/components/form/AddressAutocomplete/useCurrentLocation.ts +12 -8
  771. package/src/components/form/AddressAutocomplete/useGoogleMapsAPI.ts +8 -4
  772. package/src/components/form/Button/Button.native.loading.tsx +11 -2
  773. package/src/components/form/Button/Button.native.tsx +2 -2
  774. package/src/components/form/Button/Button.types.native.ts +2 -0
  775. package/src/components/form/Calendar/Calendar.md +7 -0
  776. package/src/components/form/Calendar/CalendarDay.tsx +13 -2
  777. package/src/components/form/Calendar/CalendarMonth.tsx +11 -2
  778. package/src/components/form/Checkbox/Checkbox.native.tsx +5 -2
  779. package/src/components/form/Checkbox/Checkbox.types.native.ts +2 -0
  780. package/src/components/form/Input/Input.native.tsx +13 -4
  781. package/src/components/form/Input/Input.types.native.ts +2 -0
  782. package/src/components/form/PhoneInput/PhoneInput.md +2 -2
  783. package/src/components/form/PhoneInput/PhoneInput.tsx +21 -10
  784. package/src/components/form/PhoneInput/PhoneInput.types.ts +1 -0
  785. package/src/components/form/PhoneInput/countries.ts +18 -1
  786. package/src/components/form/RichTextEditor/RichTextEditor.dom.ts +5 -3
  787. package/src/components/form/RichTextEditor/RichTextEditor.format.ts +3 -1
  788. package/src/components/form/RichTextEditor/RichTextEditor.hooks.ts +4 -1
  789. package/src/components/form/RichTextEditor/RichTextEditor.tsx +10 -4
  790. package/src/components/form/RichTextEditor/RichTextEditor.types.ts +7 -1
  791. package/src/components/form/RichTextEditor/RichTextEditorToolbar.tsx +29 -19
  792. package/src/components/form/Switch/Switch.native.tsx +4 -3
  793. package/src/components/form/Switch/Switch.types.native.ts +2 -0
  794. package/src/components/form/Textarea/TextareaRichEditor.tsx +2 -1
  795. package/src/components/form/UploadButton/UploadButton.hooks.ts +16 -6
  796. package/src/components/layout/ContentToolbar/ContentToolbar.types.ts +14 -0
  797. package/src/components/layout/ContentToolbar/FilterTrigger.tsx +10 -1
  798. package/src/components/layout/ContentToolbar/ViewSelector.tsx +15 -5
  799. package/src/components/layout/Dashboard/Dashboard.tsx +3 -1
  800. package/src/components/layout/Dashboard/Dashboard.types.ts +5 -0
  801. package/src/components/navigation/CommandPalette/CommandPalette.helpers.ts +6 -2
  802. package/src/components/navigation/CommandPalette/CommandPalette.hooks.ts +9 -1
  803. package/src/components/navigation/CommandPalette/CommandPalette.tsx +16 -6
  804. package/src/components/navigation/CommandPalette/CommandPaletteResults.tsx +3 -1
  805. package/src/components/navigation/NavigationMenu/NavigationMenu.shell.tsx +7 -4
  806. package/src/components/navigation/NavigationMenu/NavigationMenu.tsx +4 -0
  807. package/src/components/navigation/NavigationMenu/NavigationMenu.types.ts +13 -0
  808. package/src/components/navigation/NavigationMenu/NavigationMenuItem.tsx +2 -0
  809. package/src/components/navigation/NavigationMenu/NavigationStandardBody.tsx +24 -4
  810. package/src/components/typography/Code/Code.tsx +28 -6
  811. package/src/components/typography/Code/Code.types.ts +4 -0
  812. package/src/components/utility/WorkflowStep/WorkflowStep.helpers.ts +9 -1
  813. package/src/components/utility/WorkflowStep/WorkflowStep.parts.tsx +3 -2
  814. package/src/components/utility/WorkflowStep/WorkflowStep.tsx +3 -1
  815. package/src/components/utility/WorkflowStep/WorkflowStep.types.ts +10 -0
  816. package/src/components/utility/WorkflowStep/WorkflowStepRow.tsx +3 -0
  817. package/src/copy/data-display.ts +19 -0
  818. package/src/copy/feedback.ts +4 -0
  819. package/src/copy/form.ts +58 -0
  820. package/src/copy/labels.ts +120 -0
  821. package/src/copy/navigation.ts +12 -0
  822. package/src/copy/utility.ts +8 -1
  823. package/src/copy.ts +1 -0
  824. package/src/en-US.data-display.ts +9 -2
  825. package/src/en-US.feedback.ts +3 -1
  826. package/src/en-US.form.ts +27 -4
  827. package/src/en-US.labels.ts +76 -0
  828. package/src/en-US.navigation.ts +5 -1
  829. package/src/en-US.ts +1 -0
  830. package/src/en-US.utility.ts +3 -1
  831. package/src/locales.ts +4 -0
  832. package/src/pt-BR.data-display.ts +9 -2
  833. package/src/pt-BR.feedback.ts +3 -1
  834. package/src/pt-BR.form.ts +40 -4
  835. package/src/pt-BR.labels.ts +75 -0
  836. package/src/pt-BR.navigation.ts +5 -1
  837. package/src/pt-BR.ts +1 -0
  838. package/src/pt-BR.utility.ts +3 -1
  839. package/src/user-avatar/user-avatar.tsx +11 -2
  840. package/src/utils/resolve-labels.ts +12 -0
  841. package/dist/chunk-2ARVNCVU.js.map +0 -1
  842. package/dist/chunk-2ILXXBMG.js.map +0 -1
  843. package/dist/chunk-2TSGRQ2J.js.map +0 -1
  844. package/dist/chunk-33LAPBYB.js.map +0 -1
  845. package/dist/chunk-3JDP5OUR.js.map +0 -1
  846. package/dist/chunk-3VXS7O3X.js.map +0 -1
  847. package/dist/chunk-4MQ6XTIJ.js.map +0 -1
  848. package/dist/chunk-4NQXHPQR.js.map +0 -1
  849. package/dist/chunk-4VRDFZ4G.js.map +0 -1
  850. package/dist/chunk-5J7SA4CZ.js.map +0 -1
  851. package/dist/chunk-7QXEEZFO.js +0 -92
  852. package/dist/chunk-7QXEEZFO.js.map +0 -1
  853. package/dist/chunk-7SYYGXC7.js.map +0 -1
  854. package/dist/chunk-7VRCGWQL.js.map +0 -1
  855. package/dist/chunk-AG3DY5TH.js.map +0 -1
  856. package/dist/chunk-AYJ44VTJ.js.map +0 -1
  857. package/dist/chunk-AYP6ICAY.js.map +0 -1
  858. package/dist/chunk-B2JYQBO4.js.map +0 -1
  859. package/dist/chunk-BWZKLKDT.js +0 -1
  860. package/dist/chunk-C5JCARNE.js.map +0 -1
  861. package/dist/chunk-CZV6NVCA.js.map +0 -1
  862. package/dist/chunk-EUACQR6N.js.map +0 -1
  863. package/dist/chunk-FIOBPQL2.js.map +0 -1
  864. package/dist/chunk-FRGNTTPA.js.map +0 -1
  865. package/dist/chunk-FT6HBP5E.js.map +0 -1
  866. package/dist/chunk-H3AQQOTI.js.map +0 -1
  867. package/dist/chunk-HEBZ7Q7O.js.map +0 -1
  868. package/dist/chunk-HZK4DRGF.js.map +0 -1
  869. package/dist/chunk-ICRVLGWD.js.map +0 -1
  870. package/dist/chunk-INGPH3YQ.js.map +0 -1
  871. package/dist/chunk-JJVIZR6C.js.map +0 -1
  872. package/dist/chunk-KIL3OVLI.js.map +0 -1
  873. package/dist/chunk-KT3TF2LT.js.map +0 -1
  874. package/dist/chunk-KZXOIRUP.js.map +0 -1
  875. package/dist/chunk-LH4VKUZC.js.map +0 -1
  876. package/dist/chunk-LOLYI6PS.js.map +0 -1
  877. package/dist/chunk-LTTYUSJ2.js.map +0 -1
  878. package/dist/chunk-MA6SUE7F.js.map +0 -1
  879. package/dist/chunk-MTGEJRE4.js.map +0 -1
  880. package/dist/chunk-OE3SQOZV.js.map +0 -1
  881. package/dist/chunk-PU3HEWSG.js.map +0 -1
  882. package/dist/chunk-PY3RW5LC.js.map +0 -1
  883. package/dist/chunk-QWVETTIY.js.map +0 -1
  884. package/dist/chunk-RA6W37NZ.js.map +0 -1
  885. package/dist/chunk-RZCXYKY4.js.map +0 -1
  886. package/dist/chunk-SUZXPDUQ.js.map +0 -1
  887. package/dist/chunk-SV6IQ2YO.js.map +0 -1
  888. package/dist/chunk-T743IIER.js.map +0 -1
  889. package/dist/chunk-TTCVYY2B.js.map +0 -1
  890. package/dist/chunk-U4G3KY6L.js.map +0 -1
  891. package/dist/chunk-UGH2DDST.js.map +0 -1
  892. package/dist/chunk-UZOG6HNN.js.map +0 -1
  893. package/dist/chunk-VNOFFVRQ.js +0 -113
  894. package/dist/chunk-VNOFFVRQ.js.map +0 -1
  895. package/dist/chunk-VNVV6Y2X.js.map +0 -1
  896. package/dist/chunk-VQYR64QB.js.map +0 -1
  897. package/dist/chunk-VRPCZ3IE.js.map +0 -1
  898. package/dist/chunk-WC3W36AM.js.map +0 -1
  899. package/dist/chunk-WVZBYTIK.js.map +0 -1
  900. package/dist/chunk-XICRCPEQ.js.map +0 -1
  901. package/dist/chunk-XKSA4L2X.js.map +0 -1
  902. package/dist/chunk-XQWUVQ2F.js.map +0 -1
  903. package/dist/chunk-XYFBJH6F.js.map +0 -1
  904. package/dist/chunk-Y7YJYUNV.js.map +0 -1
  905. package/dist/chunk-YICNA5LG.js +0 -1
  906. package/dist/chunk-YLSDFW5O.js.map +0 -1
  907. package/dist/chunk-ZFBFQK2Y.js.map +0 -1
  908. package/dist/native/chunks/chunk-BXNZHDXK.js.map +0 -1
  909. /package/dist/{chunk-BWZKLKDT.js.map → _internal/copy/labels.js.map} +0 -0
  910. /package/dist/{chunk-YICNA5LG.js.map → _internal/en-US.labels.js.map} +0 -0
  911. /package/dist/{chunk-OPP6USJC.js.map → chunk-2FQF4CNE.js.map} +0 -0
  912. /package/dist/{chunk-BWFQEASG.js.map → chunk-2P5ZBBTL.js.map} +0 -0
  913. /package/dist/{chunk-QVO4SIS7.js.map → chunk-3W2B7IZG.js.map} +0 -0
  914. /package/dist/{chunk-PMRLFNBT.js.map → chunk-3XLSA3YB.js.map} +0 -0
  915. /package/dist/{chunk-7P5PNRBT.js.map → chunk-3YCV4EP7.js.map} +0 -0
  916. /package/dist/{chunk-Q6PRGXR2.js.map → chunk-4HBCWKIX.js.map} +0 -0
  917. /package/dist/{chunk-HN3PZTUK.js.map → chunk-4MKVGSHX.js.map} +0 -0
  918. /package/dist/{chunk-EERUSI52.js.map → chunk-4N3I7ZHQ.js.map} +0 -0
  919. /package/dist/{chunk-O6SAU5JA.js.map → chunk-4OTJ66ID.js.map} +0 -0
  920. /package/dist/{chunk-LG52LMAM.js.map → chunk-556LO6KA.js.map} +0 -0
  921. /package/dist/{chunk-LBZEPWYK.js.map → chunk-5GLOEGOM.js.map} +0 -0
  922. /package/dist/{chunk-JE6RZ5L6.js.map → chunk-5ZOJLYD2.js.map} +0 -0
  923. /package/dist/{chunk-GSXYXMCV.js.map → chunk-66BRUS2M.js.map} +0 -0
  924. /package/dist/{chunk-ALREWFRX.js.map → chunk-6DGNMASB.js.map} +0 -0
  925. /package/dist/{chunk-5752357K.js.map → chunk-6N2U67KF.js.map} +0 -0
  926. /package/dist/{chunk-VD72JGHA.js.map → chunk-73OYC22L.js.map} +0 -0
  927. /package/dist/{chunk-6PU3JYVY.js.map → chunk-775LIZXS.js.map} +0 -0
  928. /package/dist/{chunk-S4JXSC4D.js.map → chunk-7HZ6TJRH.js.map} +0 -0
  929. /package/dist/{chunk-CSD6SWBZ.js.map → chunk-A3Z7ZXLM.js.map} +0 -0
  930. /package/dist/{chunk-LI6XSM5D.js.map → chunk-A6V7KE45.js.map} +0 -0
  931. /package/dist/{chunk-YJBWDDW7.js.map → chunk-AAWVAQI2.js.map} +0 -0
  932. /package/dist/{chunk-44PBCQ7E.js.map → chunk-ABQZFK7M.js.map} +0 -0
  933. /package/dist/{chunk-EIMFA7KP.js.map → chunk-ANUO67JQ.js.map} +0 -0
  934. /package/dist/{chunk-PTQRJEPN.js.map → chunk-AOBQ3KYY.js.map} +0 -0
  935. /package/dist/{chunk-LODYTVOO.js.map → chunk-B25SHVWP.js.map} +0 -0
  936. /package/dist/{chunk-GTT5UKKO.js.map → chunk-BDJIP4HG.js.map} +0 -0
  937. /package/dist/{chunk-RS576GOH.js.map → chunk-BIUT3K6A.js.map} +0 -0
  938. /package/dist/{chunk-A5NXBOWS.js.map → chunk-BLHSLB5D.js.map} +0 -0
  939. /package/dist/{chunk-DYHOBKPU.js.map → chunk-BLZDSCIZ.js.map} +0 -0
  940. /package/dist/{chunk-E53MMMDA.js.map → chunk-BX6CF2UG.js.map} +0 -0
  941. /package/dist/{chunk-7HA7UH7O.js.map → chunk-C4OETF7K.js.map} +0 -0
  942. /package/dist/{chunk-64AOS2WA.js.map → chunk-CAHN7AMY.js.map} +0 -0
  943. /package/dist/{chunk-MSC43MCJ.js.map → chunk-CRFOAKQL.js.map} +0 -0
  944. /package/dist/{chunk-IQ2U5MVO.js.map → chunk-CSQWPDQV.js.map} +0 -0
  945. /package/dist/{chunk-7XSCEHGA.js.map → chunk-EOQ6EKTS.js.map} +0 -0
  946. /package/dist/{chunk-VEKTKCSB.js.map → chunk-FLJ3RIRP.js.map} +0 -0
  947. /package/dist/{chunk-Z5WUSI47.js.map → chunk-G3JFESKD.js.map} +0 -0
  948. /package/dist/{chunk-XRDH24J7.js.map → chunk-G6ET2DRL.js.map} +0 -0
  949. /package/dist/{chunk-O36MIQIO.js.map → chunk-GPQ22MPR.js.map} +0 -0
  950. /package/dist/{chunk-GRMBCJS6.js.map → chunk-H6R2L7VI.js.map} +0 -0
  951. /package/dist/{chunk-AMLHEKSV.js.map → chunk-HI7JPDD6.js.map} +0 -0
  952. /package/dist/{chunk-CW6Y32N2.js.map → chunk-I2CT4XIP.js.map} +0 -0
  953. /package/dist/{chunk-N34AOGK3.js.map → chunk-I3OKAQ5L.js.map} +0 -0
  954. /package/dist/{chunk-AEYLFBZT.js.map → chunk-I4NDZFTB.js.map} +0 -0
  955. /package/dist/{chunk-2ZRZTGWP.js.map → chunk-ISW5K72V.js.map} +0 -0
  956. /package/dist/{chunk-KARMRTTM.js.map → chunk-J2RUDZVJ.js.map} +0 -0
  957. /package/dist/{chunk-4M5GEKPM.js.map → chunk-JL4I7OQE.js.map} +0 -0
  958. /package/dist/{chunk-NBXG3SQ3.js.map → chunk-JSY234NY.js.map} +0 -0
  959. /package/dist/{chunk-HQCZT6TO.js.map → chunk-JVOEVTCZ.js.map} +0 -0
  960. /package/dist/{chunk-MBMZNSBP.js.map → chunk-JW7MN4DG.js.map} +0 -0
  961. /package/dist/{chunk-ZPACE34U.js.map → chunk-K53XSVQO.js.map} +0 -0
  962. /package/dist/{chunk-GBVNY2LG.js.map → chunk-KTXJQ4YJ.js.map} +0 -0
  963. /package/dist/{chunk-FCVPVEAS.js.map → chunk-KYE7I6NT.js.map} +0 -0
  964. /package/dist/{chunk-MM7BPTVV.js.map → chunk-KYT5G4K7.js.map} +0 -0
  965. /package/dist/{chunk-3V3Z4EML.js.map → chunk-L4FWEI2P.js.map} +0 -0
  966. /package/dist/{chunk-56JF5PZK.js.map → chunk-LYVTJLCF.js.map} +0 -0
  967. /package/dist/{chunk-M3DSPEZ3.js.map → chunk-M3ZNQTS5.js.map} +0 -0
  968. /package/dist/{chunk-GBKIGUNP.js.map → chunk-MGDCGNLC.js.map} +0 -0
  969. /package/dist/{chunk-BGYLL467.js.map → chunk-N3W6FZOC.js.map} +0 -0
  970. /package/dist/{chunk-BWFUZ4N2.js.map → chunk-NA3M7KDE.js.map} +0 -0
  971. /package/dist/{chunk-7JOLSD2W.js.map → chunk-P3QFJJJY.js.map} +0 -0
  972. /package/dist/{chunk-RCTHCXS6.js.map → chunk-PJNIJIE6.js.map} +0 -0
  973. /package/dist/{chunk-DXFKPY2K.js.map → chunk-PU3FQG7T.js.map} +0 -0
  974. /package/dist/{chunk-6ATXOJVQ.js.map → chunk-QADTI63U.js.map} +0 -0
  975. /package/dist/{chunk-7ZROYGUG.js.map → chunk-QOTMQLMW.js.map} +0 -0
  976. /package/dist/{chunk-NQCTANF3.js.map → chunk-QVDEGBME.js.map} +0 -0
  977. /package/dist/{chunk-YNDTLBOH.js.map → chunk-RQMYEPRR.js.map} +0 -0
  978. /package/dist/{chunk-3Z3WIQ5M.js.map → chunk-RZ3QMKM7.js.map} +0 -0
  979. /package/dist/{chunk-WA6F4NOO.js.map → chunk-SMANO5OD.js.map} +0 -0
  980. /package/dist/{chunk-5M2NWXN4.js.map → chunk-SRNBD6EV.js.map} +0 -0
  981. /package/dist/{chunk-R53ZOW4B.js.map → chunk-TGMMUKOF.js.map} +0 -0
  982. /package/dist/{chunk-SB2SEGR6.js.map → chunk-TIM4PXWN.js.map} +0 -0
  983. /package/dist/{chunk-555TUQ7E.js.map → chunk-TPGFR24B.js.map} +0 -0
  984. /package/dist/{chunk-MHLYX6QW.js.map → chunk-TRAMTVIO.js.map} +0 -0
  985. /package/dist/{chunk-QO7UJXXO.js.map → chunk-TVMSXL3R.js.map} +0 -0
  986. /package/dist/{chunk-VEBNL5MG.js.map → chunk-UGYBN6OO.js.map} +0 -0
  987. /package/dist/{chunk-2QO3BKUQ.js.map → chunk-UJT6AQHL.js.map} +0 -0
  988. /package/dist/{chunk-FTDGFWB5.js.map → chunk-UK3DSFMK.js.map} +0 -0
  989. /package/dist/{chunk-NYWAAXDX.js.map → chunk-URAXAKUI.js.map} +0 -0
  990. /package/dist/{chunk-XODBYGTH.js.map → chunk-V37QIB7B.js.map} +0 -0
  991. /package/dist/{chunk-7K23NEZO.js.map → chunk-V45JGJ3W.js.map} +0 -0
  992. /package/dist/{chunk-2MYSXWZQ.js.map → chunk-VKTF3GAP.js.map} +0 -0
  993. /package/dist/{chunk-KHIUYLKY.js.map → chunk-VQ6UB4MN.js.map} +0 -0
  994. /package/dist/{chunk-4HUSG5MR.js.map → chunk-VZVAP2ZR.js.map} +0 -0
  995. /package/dist/{chunk-4XBAEKQQ.js.map → chunk-W2RXXF7K.js.map} +0 -0
  996. /package/dist/{chunk-A2YLFKQU.js.map → chunk-W5WYTVLS.js.map} +0 -0
  997. /package/dist/{chunk-RHKQ2RSY.js.map → chunk-WUW6NDXC.js.map} +0 -0
  998. /package/dist/{chunk-EBCEDBHX.js.map → chunk-XDDKRACZ.js.map} +0 -0
  999. /package/dist/{chunk-ASZGMKB4.js.map → chunk-Y3TD7HOY.js.map} +0 -0
  1000. /package/dist/{chunk-HBHBRRSW.js.map → chunk-YBAK2WN5.js.map} +0 -0
  1001. /package/dist/{chunk-6RTE4UNO.js.map → chunk-YV4O7KDR.js.map} +0 -0
  1002. /package/dist/{chunk-Z5V5E3JW.js.map → chunk-ZIHSCBMN.js.map} +0 -0
  1003. /package/dist/native/chunks/{chunk-AVHGS66L.js.map → chunk-FGAX5BRS.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/RichTextEditor/RichTextEditorToolbar.tsx"],"sourcesContent":["import Code from '@mui/icons-material/Code';\nimport FormatBold from '@mui/icons-material/FormatBold';\nimport FormatItalic from '@mui/icons-material/FormatItalic';\nimport FormatListBulleted from '@mui/icons-material/FormatListBulleted';\nimport FormatListNumbered from '@mui/icons-material/FormatListNumbered';\nimport FormatQuote from '@mui/icons-material/FormatQuote';\nimport FormatStrikethrough from '@mui/icons-material/FormatStrikethrough';\nimport FormatUnderlined from '@mui/icons-material/FormatUnderlined';\nimport Image from '@mui/icons-material/Image';\nimport Link from '@mui/icons-material/Link';\nimport Box from '@mui/material/Box/index.js';\nimport Divider from '@mui/material/Divider/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Toolbar from '@mui/material/Toolbar/index.js';\nimport Tooltip from '@mui/material/Tooltip/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha } from '@mui/material/styles/index.js';\nimport type { FC, ReactElement } from 'react';\nimport React from 'react';\n\nimport type { ToolbarConfig } from './RichTextEditor.types';\n\nimport { sxRem } from '../../../tokens/relative';\n\ntype ResolvedToolbar = Required<Omit<ToolbarConfig, 'customItems'>> &\n Pick<ToolbarConfig, 'customItems'>;\n\n// The button groups, in render order. A separator is drawn between two groups\n// only when both actually have something switched on.\nconst GROUPS: Array<Array<{ key: keyof ResolvedToolbar; icon: ReactElement; tooltip: string; command: string; commandValue?: string }>> = [\n [\n { key: 'bold', icon: <FormatBold />, tooltip: 'Bold', command: 'bold' },\n { key: 'italic', icon: <FormatItalic />, tooltip: 'Italic', command: 'italic' },\n { key: 'underline', icon: <FormatUnderlined />, tooltip: 'Underline', command: 'underline' },\n {\n key: 'strikethrough',\n icon: <FormatStrikethrough />,\n tooltip: 'Strikethrough',\n command: 'strikethrough',\n },\n ],\n [\n {\n key: 'orderedList',\n icon: <FormatListNumbered />,\n tooltip: 'Numbered List',\n command: 'insertOrderedList',\n },\n {\n key: 'unorderedList',\n icon: <FormatListBulleted />,\n tooltip: 'Bulleted List',\n command: 'insertUnorderedList',\n },\n ],\n [\n { key: 'link', icon: <Link />, tooltip: 'Insert Link', command: 'createLink' },\n { key: 'image', icon: <Image />, tooltip: 'Insert Image', command: 'insertImage' },\n {\n key: 'codeBlock',\n icon: <Code />,\n tooltip: 'Code Block',\n command: 'formatBlock',\n commandValue: 'pre',\n },\n {\n key: 'quote',\n icon: <FormatQuote />,\n tooltip: 'Quote',\n command: 'formatBlock',\n commandValue: 'blockquote',\n },\n ],\n];\n\n// Link and image need a target before they can run.\nconst PROMPTS: Record<string, { message: string; initial?: string }> = {\n createLink: { message: 'Enter URL:', initial: 'https://' },\n insertImage: { message: 'Enter image URL:' },\n};\n\nconst Separator: FC = () => <Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />;\n\nexport interface RichTextEditorToolbarProps {\n config: ResolvedToolbar;\n disabled: boolean;\n readOnly: boolean;\n maxLength?: number;\n characterCount: number;\n editorRef: React.RefObject<HTMLDivElement | null>;\n onFormat: (command: string, value?: string) => void;\n}\n\nconst ToolbarGroups: FC<{\n config: ResolvedToolbar;\n disabled: boolean;\n readOnly: boolean;\n onRun: (command: string, commandValue?: string) => void;\n}> = ({ config, disabled, readOnly, onRun }) => {\n const groupIsActive = (group: (typeof GROUPS)[number]) => group.some((item) => config[item.key]);\n\n return (\n <>\n {GROUPS.map((group, groupIndex) => (\n <React.Fragment key={group[0]?.key ?? groupIndex}>\n {groupIsActive(group) && GROUPS.slice(0, groupIndex).some(groupIsActive) && <Separator />}\n {group\n .filter((item) => config[item.key])\n .map((item) => (\n <Tooltip key={item.key} title={item.tooltip}>\n <IconButton\n size=\"small\"\n onClick={() => onRun(item.command, item.commandValue)}\n disabled={disabled || readOnly}\n aria-label={item.tooltip}\n data-testid={`toolbar-${item.key}`}\n >\n {item.icon}\n </IconButton>\n </Tooltip>\n ))}\n </React.Fragment>\n ))}\n </>\n );\n};\n\nexport const RichTextEditorToolbar: FC<RichTextEditorToolbarProps> = ({\n config,\n disabled,\n readOnly,\n maxLength,\n characterCount,\n editorRef,\n onFormat,\n}) => {\n const run = (command: string, commandValue?: string) => {\n const prompt = PROMPTS[command];\n if (!prompt) {\n onFormat(command, commandValue);\n return;\n }\n\n const answer = window.prompt(prompt.message, prompt.initial);\n if (answer) onFormat(command, answer);\n };\n\n return (\n <Toolbar\n variant=\"dense\"\n data-testid=\"editor-toolbar\"\n sx={{\n minHeight: sxRem(48),\n px: 1,\n borderBottom: (theme) => `1px solid ${theme.palette.divider}`,\n backgroundColor: (theme) => alpha(theme.palette.background.paper, 0.8),\n }}\n >\n <ToolbarGroups config={config} disabled={disabled} readOnly={readOnly} onRun={run} />\n\n {config.customItems && config.customItems.length > 0 && (\n <>\n <Separator />\n {config.customItems.map((item) => (\n <Tooltip key={item.id} title={item.label}>\n <IconButton\n size=\"small\"\n onClick={() => item.action(editorRef.current)}\n disabled={item.disabled || disabled || readOnly}\n aria-label={item.label}\n data-testid={`toolbar-custom-${item.id}`}\n >\n {item.icon}\n </IconButton>\n </Tooltip>\n ))}\n </>\n )}\n\n <Box sx={{ flexGrow: 1 }} />\n\n {maxLength && (\n <Typography\n variant=\"caption\"\n // Turns red in the last fifth of the allowance.\n color={characterCount > maxLength * 0.8 ? 'error' : 'text.secondary'}\n sx={{ mr: 1 }}\n data-testid=\"editor-counter\"\n >\n {characterCount}/{maxLength}\n </Typography>\n )}\n </Toolbar>\n );\n};\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/navigation/NavigationMenu/NavigationMenuItem.tsx"],"sourcesContent":["import ChevronRight from '@mui/icons-material/ChevronRight';\nimport ExpandMore from '@mui/icons-material/ExpandMore';\nimport Box from '@mui/material/Box/index.js';\nimport Collapse from '@mui/material/Collapse/index.js';\nimport Fade from '@mui/material/Fade/index.js';\nimport Grow from '@mui/material/Grow/index.js';\nimport List from '@mui/material/List/index.js';\nimport ListItem from '@mui/material/ListItem/index.js';\nimport ListItemButton from '@mui/material/ListItemButton/index.js';\nimport ListItemIcon from '@mui/material/ListItemIcon/index.js';\nimport ListItemText from '@mui/material/ListItemText/index.js';\nimport Popover from '@mui/material/Popover/index.js';\nimport { alpha, styled } from '@mui/material/styles/index.js';\nimport React, { } from 'react';\n\nimport { useMenuItemState } from './NavigationMenuItem.hooks';\nimport { navItemButtonStyles, pulseGlow } from './NavigationMenu.styles';\nimport type { NavigationMenuItem } from './NavigationMenu.types';\nimport { onMedia, shadowInk, uiInk } from '../../../tokens/ink';\nimport { rem, rems, sxRem } from '../../../tokens/relative';\n\n// A numeric or empty-string zero is treated the way the package's own Badge\n// treats a zero count by default (`Badge.helpers.ts`'s `showZero: false`):\n// hidden. `badge && …` prints a bare \"0\" text node for `badge: 0`, because\n// `0 && …` evaluates to the falsy `0` itself rather than `false`. A caller\n// who wants a visible zero passes the string `'0'`, which is truthy here.\nconst hasBadge = (badge: NavigationMenuItem['badge']): boolean =>\n badge !== undefined && badge !== null && badge !== '' && badge !== 0;\n\nconst StyledListItem = styled(ListItem, {\n shouldForwardProp: (prop) => !['variant', 'active', 'size', 'level'].includes(prop as string) })<{ variant?: string; active?: boolean; size?: string; level?: number }>(\n ({ theme, variant, level = 0 }) => ({\n padding: 0,\n ...(variant === 'horizontal' && {\n width: 'auto' }),\n ...(level > 0 && {\n paddingLeft: theme.spacing(2 * level) }) }),\n);\n\nconst StyledListItemButton = styled(ListItemButton, {\n shouldForwardProp: (prop) => !['variant', 'active', 'size', 'collapsed', 'minimal'].includes(prop as string) })<{ variant?: string; active?: boolean; size?: string; collapsed?: boolean; minimal?: boolean }>(\n ({ theme, variant, active, size, collapsed, minimal }) => ({\n ...navItemButtonStyles({ theme, variant, active, size, collapsed, minimal }) }),\n);\n\ninterface MenuItemRendererProps {\n item: NavigationMenuItem;\n variant: string;\n size: string;\n collapsed: boolean;\n minimal: boolean;\n level: number;\n onItemClick?: (item: NavigationMenuItem) => void;\n}\n\n// Hover intent and open/anchor state live in NavigationMenuItem.hooks.\n\n// The flyout a horizontal menu opens on hover.\nconst MenuItemPopover: React.FC<{\n anchorEl: HTMLElement | null;\n item: NavigationMenuItem;\n size?: string;\n minimal?: boolean;\n onClose: () => void;\n onMouseEnter: () => void;\n onMouseLeave: () => void;\n onItemClick?: (item: NavigationMenuItem) => void;\n}> = ({ anchorEl, item, size, minimal, onClose, onMouseEnter, onMouseLeave, onItemClick }) => (\n <Popover\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={onClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left' }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left' }}\n disableRestoreFocus\n sx={{\n pointerEvents: 'none' }}\n slotProps={{\n paper: {\n onMouseEnter,\n onMouseLeave,\n sx: {\n pointerEvents: 'auto',\n mt: 0.5,\n borderRadius: 2,\n boxShadow: (theme) => `0 ${rems(theme, 12, 40)} ${shadowInk(theme, 0.15)}`,\n border: (theme) => `1px solid ${alpha(theme.palette.divider, 0.1)}`,\n background: (theme) =>\n `linear-gradient(145deg, ${theme.palette.background.paper} 0%, ${alpha(theme.palette.background.default, 0.95)} 100%)`,\n backdropFilter: (theme) => `blur(${rem(theme, 10)})`,\n minWidth: sxRem(200) } } }}\n >\n <List sx={{ p: 1 }}>\n {item.children?.map((child) => {\n const childHasChildren = child.children && child.children.length > 0;\n\n // Only close popover when clicking leaf nodes (items without children)\n if (childHasChildren) {\n return renderMenuItem(child, 'vertical', size, false, minimal, 0, onItemClick);\n }\n\n // For leaf nodes, wrap with onClick to close the popover\n return (\n <Box\n key={child.id}\n onClick={onClose}\n >\n {renderMenuItem(child, 'vertical', size, false, minimal, 0, onItemClick)}\n </Box>\n );\n })}\n </List>\n </Popover>\n);\n\n// Label, badge/chip and the expand chevron, faded out when the rail collapses.\nconst MenuItemLabel: React.FC<{\n item: NavigationMenuItem;\n collapsed?: boolean;\n minimal?: boolean;\n open: boolean;\n hasChildren?: boolean;\n size?: string;\n variant?: string;\n}> = ({ item, collapsed, open, hasChildren, size, variant }) => (\n <Fade in={!collapsed} timeout={400}>\n <Box sx={{ display: 'flex', alignItems: 'center', width: '100%', gap: 1 }}>\n <ListItemText\n primary={item.label}\n secondary={item.description}\n sx={{\n flex: 1,\n minWidth: 0, // Allows text truncation if needed\n }}\n slotProps={{\n primary: {\n variant: size === 'sm' ? 'body2' : size === 'lg' ? 'h6' : 'body1',\n sx: {\n fontWeight: item.active ? 600 : 400,\n transition: 'all 0.3s ease' } },\n secondary: {\n sx: {\n opacity: 0.7,\n transition: 'all 0.3s ease' } } }}\n />\n {hasBadge(item.badge) && (\n <Box\n component=\"span\"\n data-testid={`navigation-menu-badge-${item.id}`}\n sx={{\n flexShrink: 0,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: sxRem(20),\n height: sxRem(20),\n px: 0.75,\n borderRadius: sxRem(10),\n fontSize: sxRem(12),\n fontWeight: 600,\n color: (theme) => onMedia(theme),\n background: (theme) =>\n `linear-gradient(135deg, ${uiInk(theme).attention.from} 0%, ${uiInk(theme).attention.to} 100%)`,\n boxShadow: (theme) => `0 ${rems(theme, 2, 8)} ${alpha(uiInk(theme).attention.glow, 0.4)}`,\n animation: (theme) =>\n typeof item.badge === 'number' && item.badge > 0\n ? `${pulseGlow(theme)} 2s infinite`\n : 'none' }}\n >\n {item.badge}\n </Box>\n )}\n {hasChildren && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n flexShrink: 0, // Prevents expand icon from shrinking\n transition: 'transform 0.3s ease',\n transform: open ? 'rotate(180deg)' : 'rotate(0deg)' }}\n >\n {variant === 'horizontal' ? <ChevronRight fontSize=\"small\" /> : <ExpandMore />}\n </Box>\n )}\n </Box>\n </Fade>\n);\n\n// The row itself: icon, label, badge and the expand chevron.\nconst MenuItemContent: React.FC<{\n item: NavigationMenuItem;\n variant?: string;\n size?: string;\n active?: boolean;\n collapsed?: boolean;\n minimal?: boolean;\n level: number;\n open: boolean;\n hasChildren?: boolean;\n onClick: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseEnter: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseLeave: () => void;\n}> = ({\n item,\n variant,\n size,\n active: _active,\n collapsed,\n minimal,\n level,\n open,\n hasChildren,\n onClick,\n onMouseEnter,\n onMouseLeave }) => (\n<StyledListItem key={item.id} variant={variant} active={item.active} size={size} level={level}>\n <StyledListItemButton\n variant={variant}\n active={item.active}\n size={size}\n collapsed={collapsed}\n minimal={minimal}\n disabled={item.disabled}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n {...(item.href && !hasChildren\n ? {\n component: 'a' as React.ElementType,\n href: item.href,\n target: item.target }\n : {})}\n >\n {item.icon && (\n <ListItemIcon\n sx={{\n minWidth: collapsed ? 0 : sxRem(40),\n justifyContent: 'center',\n transition: 'all 0.3s ease',\n '& svg': {\n filter: (theme) => (item.active ? `drop-shadow(0 ${rems(theme, 2, 8)} ${shadowInk(theme, 0.15)})` : 'none'),\n transition: 'all 0.3s ease' } }}\n >\n <Grow in={true} timeout={600}>\n <Box>{item.icon}</Box>\n </Grow>\n </ListItemIcon>\n )}\n {!collapsed && (\n <MenuItemLabel\n item={item}\n collapsed={collapsed}\n minimal={minimal}\n open={open}\n hasChildren={hasChildren}\n size={size}\n variant={variant}\n />\n )}\n </StyledListItemButton>\n </StyledListItem>\n);\n\nconst MenuItemRenderer: React.FC<MenuItemRendererProps> = ({\n item,\n variant,\n size,\n collapsed,\n minimal,\n level,\n onItemClick }) => {\n const {\n open,\n anchorEl,\n hasChildren,\n handleClick,\n handleMouseEnter,\n handleMouseLeave,\n handlePopoverMouseEnter,\n handlePopoverMouseLeave,\n closePopover } = useMenuItemState({ item, variant, onItemClick });\n\n const itemContent = (\n <MenuItemContent\n item={item}\n variant={variant}\n size={size}\n active={item.active}\n collapsed={collapsed}\n minimal={minimal}\n level={level}\n open={open}\n hasChildren={hasChildren}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n />\n );\n\n // Horizontal variant with children - use Popover\n if (hasChildren && variant === 'horizontal') {\n return (\n <React.Fragment key={item.id}>\n {itemContent}\n <MenuItemPopover\n anchorEl={anchorEl}\n item={item}\n size={size}\n minimal={minimal}\n onClose={closePopover}\n onMouseEnter={handlePopoverMouseEnter}\n onMouseLeave={handlePopoverMouseLeave}\n onItemClick={onItemClick}\n />\n </React.Fragment>\n );\n }\n\n // Vertical variant with children - use Collapse\n if (hasChildren && variant !== 'horizontal') {\n return (\n <React.Fragment key={item.id}>\n {itemContent}\n {!collapsed && (\n <Collapse in={open} timeout=\"auto\" unmountOnExit>\n <List component=\"div\" disablePadding>\n {item.children?.map((child) =>\n renderMenuItem(child, variant, size, collapsed, minimal, level + 1, onItemClick),\n )}\n </List>\n </Collapse>\n )}\n </React.Fragment>\n );\n }\n\n return itemContent;\n};\n\nexport const renderMenuItem = (\n item: NavigationMenuItem,\n variant: string = 'vertical',\n size: string = 'md',\n collapsed: boolean = false,\n minimal: boolean = false,\n level: number = 0,\n onItemClick?: (item: NavigationMenuItem) => void,\n): React.ReactNode => (\n <MenuItemRenderer\n key={item.id}\n item={item}\n variant={variant}\n size={size}\n collapsed={collapsed}\n minimal={minimal}\n level={level}\n onItemClick={onItemClick}\n />\n );\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/utility/WorkflowStep/WorkflowStep.helpers.ts"],"sourcesContent":["import type { Theme } from '@mui/material/styles/index.js';\n\nimport type { WorkflowStepItem, WorkflowStepProps } from './WorkflowStep.types';\nimport { neutralTones } from '../../../tokens/ink';\nimport { paletteKey } from '../../../tokens/scales';\n\ntype StepColor = NonNullable<WorkflowStepProps['color']>;\ntype StepSize = NonNullable<WorkflowStepProps['size']>;\n\nconst INDICATOR_SIZE: Record<StepSize, number> = {\n xs: 20,\n sm: 24,\n md: 32,\n lg: 40,\n xl: 48,\n};\n\nexport const indicatorSizeFor = (size?: StepSize): number =>\n INDICATOR_SIZE[size as StepSize] ?? INDICATOR_SIZE.md;\n\ninterface StepPalette {\n main: string;\n contrastText: string;\n}\n\n/**\n * The step's colour pair, keyed through `paletteKey` so `danger` reads MUI's\n * `error` (the palette has no `danger`). `neutral` lands on `grey`, a ramp with\n * no `main`, so its pair is derived from the ramp — with the contrast computed,\n * not assumed.\n */\nexport const stepPalette = (theme: Theme, color?: StepColor): StepPalette => {\n const key = paletteKey(color || 'primary');\n if (key === 'grey') {\n const main = neutralTones(theme).emphasis;\n return {\n main,\n contrastText: theme.palette.getContrastText(main),\n };\n }\n\n return theme.palette[key];\n};\n\nexport interface StepColors {\n backgroundColor: string;\n borderColor: string;\n textColor: string;\n}\n\ninterface StepState {\n isActive: boolean;\n isCompleted: boolean;\n isError: boolean;\n variant?: WorkflowStepProps['variant'];\n}\n\n/**\n * An indicator is one of four things, in priority order: failed, done, the step\n * you are on, or still ahead. Only the active one respects `variant` — an active\n * outlined step stays hollow with a coloured rim.\n */\nexport const stepColors = (\n theme: Theme,\n palette: StepPalette,\n { isActive, isCompleted, isError, variant }: StepState,\n): StepColors => {\n if (isError) {\n return {\n backgroundColor: theme.palette.error.main,\n borderColor: theme.palette.error.main,\n textColor: theme.palette.error.contrastText,\n };\n }\n\n if (isCompleted) {\n return {\n backgroundColor: palette.main,\n borderColor: palette.main,\n textColor: palette.contrastText,\n };\n }\n\n if (isActive) {\n const filled = variant === 'filled';\n return {\n backgroundColor: filled ? palette.main : theme.palette.background.paper,\n borderColor: palette.main,\n textColor: filled ? palette.contrastText : palette.main,\n };\n }\n\n return {\n backgroundColor: neutralTones(theme).track,\n borderColor: neutralTones(theme).track,\n textColor: theme.palette.text.secondary,\n };\n};\n\n/**\n * A step that declares `error` keeps it; the rest are positioned against\n * `currentStep`, so a caller only has to move one number to advance the workflow.\n */\nexport const withDerivedStatus = (\n steps: WorkflowStepItem[],\n currentStep: number,\n): WorkflowStepItem[] =>\n steps.map((step, index) => {\n const derivable =\n step.status === 'pending' || step.status === 'current' || step.status === 'completed';\n\n if (!derivable) return { ...step, status: step.status };\n\n if (index < currentStep) return { ...step, status: 'completed' as const };\n if (index === currentStep) return { ...step, status: 'current' as const };\n return { ...step, status: 'pending' as const };\n });\n\ntype WorkflowDefaultedKeys =\n | 'currentStep'\n | 'variant'\n | 'orientation'\n | 'color'\n | 'size'\n | 'showProgress'\n | 'animated'\n | 'interactive'\n | 'showNumbers'\n | 'showIcons'\n | 'disabled';\n\ntype ResolvedWorkflowStepProps = WorkflowStepProps &\n Required<Pick<WorkflowStepProps, WorkflowDefaultedKeys>>;\n\nconst WORKFLOW_DEFAULTS: Pick<WorkflowStepProps, WorkflowDefaultedKeys> = {\n currentStep: 0,\n variant: 'default',\n orientation: 'horizontal',\n color: 'primary',\n size: 'md',\n showProgress: true,\n animated: true,\n interactive: false,\n showNumbers: true,\n showIcons: false,\n disabled: false,\n};\n\n// Strips explicitly-undefined props before the merge, so `size={undefined}` still\n// falls back to the default exactly as a destructuring default would.\nconst definedProps = (props: WorkflowStepProps): Partial<WorkflowStepProps> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<WorkflowStepProps>;\n\nexport const resolveWorkflowStepProps = (\n props: WorkflowStepProps,\n): ResolvedWorkflowStepProps =>\n ({ ...WORKFLOW_DEFAULTS, ...definedProps(props) }) as ResolvedWorkflowStepProps;\n\n/**\n * The progressbar's `aria-valuetext`: `Step N of M: <title>` while `currentStep`\n * names a step, and `Step N of M` when it does not (past the end, below zero, or\n * no steps at all), so a screen reader never reads a missing title as\n * \"undefined\". The index itself is not clamped (FUT-2671).\n */\nexport const progressValueText = (\n steps: readonly WorkflowStepItem[],\n currentStep: number,\n): string => {\n const position = `Step ${currentStep + 1} of ${steps.length}`;\n const step = steps[currentStep];\n return step === undefined ? position : `${position}: ${step.title}`;\n};\n\nexport interface ProgressValueRange {\n max?: number;\n now?: number;\n}\n\n/**\n * The progressbar's `aria-valuemax`/`aria-valuenow` pair (FUT-2773). With no\n * steps at all there is no meaningful range to report — a `role=\"progressbar\"`\n * with zero steps has nothing to measure, and WAI-ARIA's own value attributes\n * are optional for exactly this case (an indeterminate progressbar omits\n * `aria-valuenow`) — so both are left out rather than asserting the invalid\n * range `aria-valuemax={-1}` with `aria-valuenow={0}`. Otherwise `currentStep`\n * is clamped to `[0, steps.length - 1]` so the reported value never falls\n * outside `[aria-valuemin, aria-valuemax]`, however far `currentStep` strays.\n */\nexport const progressValueRange = (\n steps: readonly WorkflowStepItem[],\n currentStep: number,\n): ProgressValueRange => {\n if (steps.length === 0) return {};\n\n const max = steps.length - 1;\n return { max, now: Math.min(Math.max(currentStep, 0), max) };\n};\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/layout/Dashboard/Dashboard.tsx"],"sourcesContent":["'use client';\n\nimport ExpandLessIcon from '@mui/icons-material/ExpandLess';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport FilterIcon from '@mui/icons-material/FilterListRounded';\nimport NavigateNextIcon from '@mui/icons-material/NavigateNext';\nimport Box from '@mui/material/Box/index.js';\nimport MuiBreadcrumbs from '@mui/material/Breadcrumbs/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport Collapse from '@mui/material/Collapse/index.js';\nimport MuiLink from '@mui/material/Link/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { styled } from '@mui/material/styles/index.js';\nimport React, { useMemo, useState } from 'react';\n\nimport { DashboardContext, useDashboardContext } from './DashboardContext';\nimport {\n DashboardAction,\n DashboardActions,\n DashboardExport,\n DashboardFilterToggle,\n DashboardInfo,\n DashboardSettings,\n DashboardSpacer,\n} from './DashboardParts';\nimport type {\n DashboardBodyProps,\n DashboardBreadcrumbProps,\n DashboardFiltersProps,\n DashboardHeaderProps,\n DashboardMoreFiltersProps,\n DashboardProps,\n} from './Dashboard.types';\nimport { sxRem } from '../../../tokens/relative';\n\n/**\n * Ordered slot keys. The root reorders composed children into this sequence so\n * authoring order in JSX never matters — a `<Dashboard.Filters>` placed above\n * a `<Dashboard.Header>` still renders below it.\n */\nconst SLOT_ORDER = ['breadcrumb', 'header', 'filters', 'body'] as const;\n/** A slot a component can occupy in the canonical Dashboard order. */\nexport type DashboardSlot = (typeof SLOT_ORDER)[number];\n\n/** Marker attached to each sub-component so the root can rank it by slot. */\ntype SlottedComponent = { dashboardSlot?: DashboardSlot };\n\n/**\n * Tag a component with the Dashboard slot it occupies so the root ranks it in\n * canonical order. The root inspects only its DIRECT children's `type`, so a\n * page that wraps a `<Dashboard.Header>` (or any part) in its own component MUST\n * mark that wrapper — otherwise it counts as an unrecognised child and sinks\n * below the body. Returns the component for convenient inline use.\n *\n * @example\n * ```tsx\n * function ProductsHeader(props) {\n * return <Dashboard.Header title=\"Products\">{/* … *\\/}</Dashboard.Header>;\n * }\n * markDashboardSlot(ProductsHeader, 'header');\n * ```\n */\nexport function markDashboardSlot<T>(component: T, slot: DashboardSlot): T {\n (component as SlottedComponent).dashboardSlot = slot;\n return component;\n}\n\nconst Root = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n width: '100%',\n}));\n\nfunction slotRank(node: React.ReactNode): number {\n if (React.isValidElement(node)) {\n const slot = (node.type as SlottedComponent).dashboardSlot;\n if (slot) {\n const rank = SLOT_ORDER.indexOf(slot);\n if (rank >= 0) {\n return rank;\n }\n }\n }\n // Unknown / arbitrary children keep their relative position after the\n // recognised slots.\n return SLOT_ORDER.length;\n}\n\n/**\n * Composable page shell. `<Dashboard>` provides shared state through context\n * and renders whichever sub-components you compose — nothing is implied. Drop\n * in only the parts you need; omit `<Dashboard.Filters>` and there is simply no\n * filter UI.\n *\n * @example\n * ```tsx\n * <Dashboard activeFilterCount={2}>\n * <Dashboard.Breadcrumb items={[{ label: 'Admin', href: '/admin' }, { label: 'Products' }]} />\n * <Dashboard.Header title=\"Products\">\n * <Dashboard.Info>What this page does…</Dashboard.Info>\n * <Dashboard.FilterToggle />\n * <Dashboard.Settings>In development</Dashboard.Settings>\n * <Dashboard.Spacer />\n * <Dashboard.Export onExport={handleExport} />\n * <Dashboard.Action><Button variant=\"contained\">New product</Button></Dashboard.Action>\n * </Dashboard.Header>\n * <Dashboard.Filters>{/* search + pills *\\/}</Dashboard.Filters>\n * <Dashboard.Body>{table}</Dashboard.Body>\n * </Dashboard>\n * ```\n */\nexport const Dashboard = ({\n children,\n defaultFiltersVisible = true,\n activeFilterCount = 0,\n testIdPrefix = 'dashboard',\n className,\n}: DashboardProps): React.JSX.Element => {\n const [filtersVisible, setFiltersVisible] = useState(defaultFiltersVisible);\n const [moreFiltersOpen, setMoreFiltersOpen] = useState(false);\n\n const value = useMemo(\n () => ({\n filtersVisible,\n toggleFilters: () => setFiltersVisible((v) => !v),\n moreFiltersOpen,\n toggleMoreFilters: () => setMoreFiltersOpen((v) => !v),\n activeFilterCount,\n testIdPrefix,\n }),\n [filtersVisible, moreFiltersOpen, activeFilterCount, testIdPrefix],\n );\n\n // Stable sort recognised slots into canonical order, preserving the original\n // order of anything unrecognised.\n const ordered = useMemo(() => {\n const arr = React.Children.toArray(children);\n return arr\n .map((node, index) => ({ node, index, rank: slotRank(node) }))\n .sort((a, b) => (a.rank === b.rank ? a.index - b.index : a.rank - b.rank))\n .map((entry) => entry.node);\n }, [children]);\n\n return (\n <DashboardContext.Provider value={value}>\n <Root className={className} data-testid={testIdPrefix}>\n {ordered}\n </Root>\n </DashboardContext.Provider>\n );\n};\n\nDashboard.displayName = 'Dashboard';\n\n/* -------------------------------------------------------------------------- */\n/* Breadcrumb */\n/* -------------------------------------------------------------------------- */\n\nconst DashboardBreadcrumb = ({\n items,\n renderLink,\n className,\n}: DashboardBreadcrumbProps): React.JSX.Element => {\n const { testIdPrefix } = useDashboardContext();\n return (\n <MuiBreadcrumbs\n separator={<NavigateNextIcon fontSize=\"small\" />}\n className={className}\n aria-label=\"breadcrumb\"\n data-testid={`${testIdPrefix}-breadcrumb`}\n sx={{ fontSize: sxRem(14), color: 'text.secondary' }}\n >\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n if (isLast || !item.href) {\n return (\n <Typography\n key={`${item.label}-${index}`}\n component=\"span\"\n sx={{ fontSize: sxRem(14), color: isLast ? 'text.primary' : 'text.secondary' }}\n aria-current={isLast ? 'page' : undefined}\n >\n {item.label}\n </Typography>\n );\n }\n const linkContent = item.label;\n if (renderLink) {\n return <React.Fragment key={`${item.label}-${index}`}>{renderLink(item, linkContent)}</React.Fragment>;\n }\n return (\n <MuiLink\n key={`${item.label}-${index}`}\n href={item.href}\n underline=\"hover\"\n color=\"inherit\"\n sx={{ fontSize: sxRem(14) }}\n >\n {linkContent}\n </MuiLink>\n );\n })}\n </MuiBreadcrumbs>\n );\n};\nDashboardBreadcrumb.displayName = 'Dashboard.Breadcrumb';\n(DashboardBreadcrumb as SlottedComponent).dashboardSlot = 'breadcrumb';\n\n/* -------------------------------------------------------------------------- */\n/* Header + action parts */\n/* -------------------------------------------------------------------------- */\n\nconst DashboardHeader = ({ title, children, className }: DashboardHeaderProps): React.JSX.Element => {\n const { testIdPrefix } = useDashboardContext();\n return (\n <Box\n className={className}\n data-testid={`${testIdPrefix}-header`}\n sx={{ display: 'flex', alignItems: 'center', gap: 1, flexWrap: 'wrap', minHeight: sxRem(40) }}\n >\n <Typography variant=\"h5\" component=\"h1\" sx={{ fontWeight: 600, mr: 0.5 }}>\n {title}\n </Typography>\n {children}\n </Box>\n );\n};\nDashboardHeader.displayName = 'Dashboard.Header';\n(DashboardHeader as SlottedComponent).dashboardSlot = 'header';\n\n/** Flexible spacer — everything composed after it is pushed to the right. */\n/* -------------------------------------------------------------------------- */\n/* Filters */\n/* -------------------------------------------------------------------------- */\n\nconst DashboardFilters = ({ children, className }: DashboardFiltersProps): React.JSX.Element => {\n const { filtersVisible, testIdPrefix } = useDashboardContext();\n return (\n <Collapse in={filtersVisible} unmountOnExit data-testid={`${testIdPrefix}-filters`}>\n <Box\n className={className}\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 1.5,\n p: 2,\n borderRadius: 1,\n border: 1,\n borderColor: 'divider',\n bgcolor: 'action.hover',\n }}\n >\n {children}\n </Box>\n </Collapse>\n );\n};\nDashboardFilters.displayName = 'Dashboard.Filters';\n(DashboardFilters as SlottedComponent).dashboardSlot = 'filters';\n\nconst DashboardMoreFilters = ({ children, label = 'More filters' }: DashboardMoreFiltersProps): React.JSX.Element => {\n const { moreFiltersOpen, toggleMoreFilters, testIdPrefix } = useDashboardContext();\n return (\n <Box>\n <Button\n variant=\"text\"\n size=\"small\"\n startIcon={<FilterIcon fontSize=\"small\" />}\n endIcon={moreFiltersOpen ? <ExpandLessIcon fontSize=\"small\" /> : <ExpandMoreIcon fontSize=\"small\" />}\n onClick={toggleMoreFilters}\n aria-expanded={moreFiltersOpen}\n data-testid={`${testIdPrefix}-more-filters-toggle`}\n >\n {label}\n </Button>\n <Collapse in={moreFiltersOpen} unmountOnExit data-testid={`${testIdPrefix}-more-filters-panel`}>\n <Box sx={{ mt: 1.5, p: 2, borderRadius: 1, border: 1, borderColor: 'divider', bgcolor: 'background.paper' }}>\n {children}\n </Box>\n </Collapse>\n </Box>\n );\n};\nDashboardMoreFilters.displayName = 'Dashboard.MoreFilters';\n\n/* -------------------------------------------------------------------------- */\n/* Body */\n/* -------------------------------------------------------------------------- */\n\nconst DashboardBody = ({ children, className }: DashboardBodyProps): React.JSX.Element => {\n const { testIdPrefix } = useDashboardContext();\n return (\n <Box className={className} data-testid={`${testIdPrefix}-body`}>\n {children}\n </Box>\n );\n};\nDashboardBody.displayName = 'Dashboard.Body';\n(DashboardBody as SlottedComponent).dashboardSlot = 'body';\n\n/* -------------------------------------------------------------------------- */\n/* Attach sub-components as dot-notation parts */\n/* -------------------------------------------------------------------------- */\n\nDashboard.Breadcrumb = DashboardBreadcrumb;\nDashboard.Header = DashboardHeader;\nDashboard.Spacer = DashboardSpacer;\nDashboard.Info = DashboardInfo;\nDashboard.FilterToggle = DashboardFilterToggle;\nDashboard.Settings = DashboardSettings;\nDashboard.Export = DashboardExport;\nDashboard.Action = DashboardAction;\nDashboard.Actions = DashboardActions;\nDashboard.Filters = DashboardFilters;\nDashboard.MoreFilters = DashboardMoreFilters;\nDashboard.Body = DashboardBody;\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/RichTextEditor/RichTextEditor.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport Paper from '@mui/material/Paper/index.js';\nimport { alpha, useTheme } from '@mui/material/styles/index.js';\nimport React, { forwardRef } from 'react';\n\nimport type { Theme } from '@mui/material/styles/index.js';\nimport { useRichTextEditor } from './RichTextEditor.hooks';\nimport type { RichTextEditorProps, ToolbarConfig } from './RichTextEditor.types';\nimport { RichTextEditorToolbar } from './RichTextEditorToolbar';\n\nimport { fieldEdge } from '../../../tokens/field-edge';\nimport { fieldRadiusPx } from '../../../tokens/field-radius';\nimport { rem } from '../../../tokens/relative';\n\nconst DEFAULT_TOOLBAR: Required<Omit<ToolbarConfig, 'customItems'>> & Pick<ToolbarConfig, 'customItems'> = {\n bold: true,\n italic: true,\n underline: true,\n strikethrough: false,\n orderedList: true,\n unorderedList: true,\n link: true,\n image: false,\n codeBlock: false,\n quote: false,\n customItems: [] };\n\nconst RICH_TEXT_DEFAULTS: Partial<RichTextEditorProps> = {\n value: '',\n placeholder: 'Start typing...',\n disabled: false,\n readOnly: false,\n toolbar: {} };\n\n// Strips explicitly-undefined props before the merge, so `prop={undefined}`\n// still falls back to the default as a destructuring default would.\nconst definedProps = (props: RichTextEditorProps): Partial<RichTextEditorProps> =>\n Object.fromEntries(\n Object.entries(props).filter(([, v]) => v !== undefined),\n ) as Partial<RichTextEditorProps>;\n\n// Simple inline formats are a tag swap; lists and the value-carrying formats\n// need their own handling. This was one nine-case switch.\nconst editorContentSx = (theme: Theme, disabled: boolean, placeholder?: string, height?: string | number) => ({\n // A number is design px, converted here where it is read (300 when the\n // caller gives none); a string is any CSS length, used as-is.\n minHeight: typeof height === 'string' ? height : rem(theme, height ?? 300),\n p: 2,\n outline: 'none',\n cursor: disabled ? 'not-allowed' : 'text',\n '&:empty::before': {\n content: `\"${placeholder}\"`,\n color: theme.palette.text.disabled,\n pointerEvents: 'none' },\n '& p': {\n margin: `${rem(theme, 8)} 0`,\n '&:first-of-type': { marginTop: 0 },\n '&:last-of-type': { marginBottom: 0 } },\n '& ul, & ol': { marginLeft: theme.spacing(2) },\n '& blockquote': {\n borderLeft: `${rem(theme, 4)} solid ${theme.palette.primary.main}`,\n paddingLeft: theme.spacing(2),\n margin: `${theme.spacing(1)} 0`,\n fontStyle: 'italic',\n backgroundColor: alpha(theme.palette.primary.main, 0.05) },\n '& pre': {\n backgroundColor: alpha(theme.palette.text.primary, 0.08),\n padding: theme.spacing(1),\n borderRadius: 1,\n fontFamily: 'Monaco, Menlo, \"Ubuntu Mono\", monospace',\n fontSize: rem(theme, 14),\n overflow: 'auto' },\n '& a': { color: theme.palette.primary.main, textDecoration: 'underline' } });\n\nconst shellSx = (theme: Theme, isFocused: boolean, disabled: boolean) => ({\n border: `1px solid ${fieldEdge(theme)}`,\n borderRadius: fieldRadiusPx(theme),\n overflow: 'hidden',\n transition: 'border-color 0.2s ease-in-out',\n ...(isFocused && {\n borderColor: theme.palette.primary.main,\n boxShadow: `0 0 0 ${rem(theme, 2)} ${alpha(theme.palette.primary.main, 0.2)}` }),\n ...(disabled && {\n backgroundColor: theme.palette.action.disabledBackground,\n color: theme.palette.text.disabled }) });\n\nexport const RichTextEditor = forwardRef<HTMLDivElement, RichTextEditorProps>(\n (editorProps, ref) => {\n const {\n value,\n onChange,\n placeholder,\n disabled,\n readOnly,\n toolbar,\n height,\n maxLength,\n onFocus,\n onBlur,\n className,\n 'data-testid': testId,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedBy,\n ...props\n } = { ...RICH_TEXT_DEFAULTS, ...definedProps(editorProps) } as RichTextEditorProps;\n\n const theme = useTheme();\n const toolbarConfig = { ...DEFAULT_TOOLBAR, ...toolbar };\n const editor = useRichTextEditor({\n value,\n onChange,\n onFocus,\n onBlur,\n disabled,\n readOnly,\n maxLength });\n\n return (\n <Paper\n ref={ref}\n className={className}\n data-testid={testId || 'rich-text-editor'}\n elevation={1}\n sx={shellSx(theme, editor.isFocused, Boolean(disabled))}\n {...props}\n >\n <RichTextEditorToolbar\n config={toolbarConfig}\n disabled={Boolean(disabled)}\n readOnly={Boolean(readOnly)}\n maxLength={maxLength}\n characterCount={editor.characterCount}\n editorRef={editor.editorRef}\n onFormat={editor.applyFormat}\n />\n\n <Box\n ref={editor.editorRef}\n contentEditable={!disabled && !readOnly}\n onInput={editor.handleContentChange}\n onFocus={editor.handleFocus}\n onBlur={editor.handleBlur}\n role=\"textbox\"\n aria-label={ariaLabel || 'Rich text editor'}\n aria-describedby={ariaDescribedBy}\n aria-multiline=\"true\"\n tabIndex={disabled ? -1 : 0}\n data-testid=\"editor-content\"\n suppressContentEditableWarning\n sx={editorContentSx(theme, Boolean(disabled), placeholder, height)}\n />\n </Paper>\n );\n },\n);\n\nRichTextEditor.displayName = 'RichTextEditor';\n\nexport default RichTextEditor;"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/en-US.data-display.ts"],"sourcesContent":["/**\n * The en-US pack for the data-display family. Split the same way\n * `pt-BR.data-display.ts` is — see `en-US.ts` 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 { EN_US_TABLE_FILTER_COPY } from './en-US.layout';\nimport {\n EN_US_CATEGORY_SELECT_COPY,\n EN_US_CONFIRM_ACTION_COPY,\n EN_US_SAVED_VIEWS_LABELS,\n} from './en-US.shared';\n\nexport const EN_US_LIGHTBOX_COPY: LightboxCopy = {\n close: \"Close\",\n previous: \"Previous\",\n next: \"Next\",\n zoomIn: \"Zoom in\",\n zoomOut: \"Zoom out\",\n resetZoom: \"Reset zoom\",\n play: \"Start the slideshow\",\n pause: \"Pause the slideshow\",\n dialogLabel: \"Lightbox\",\n itemPosition: (index, total) => `Item ${index} of ${total}`,\n videoFallback: (index, total) => `Video ${index} of ${total}`,\n imageFallback: (index, total) => `Image ${index} of ${total}`,\n thumbnailFallback: (index) => `Thumbnail ${index}`,\n};\n\nexport const EN_US_DATA_GRID_COPY: DataGridCopy = {\n sortBy: (header) => `Sort by ${header}`,\n selectRow: (rowNumber) => `Select row ${rowNumber}`,\n selectAllRows: \"Select all rows\",\n expandRow: \"Expand row\",\n collapseRow: \"Collapse row\",\n gridLabel: \"Data grid\",\n};\n\nexport const EN_US_MAP_PREVIEW_COPY: MapPreviewCopy = {\n zoomIn: \"Zoom in\",\n zoomOut: \"Zoom out\",\n center: \"Centre the map\",\n mapType: \"Change the map type\",\n fullscreen: \"Full screen\",\n search: \"Search for an address\",\n};\n\nexport const EN_US_CAROUSEL_COPY: CarouselCopy = {\n previous: \"Previous\",\n next: \"Next\",\n};\n\nexport const EN_US_TIMING_DIAGRAM_COPY: TimingDiagramCopy = {\n regionLabel: \"Timing diagram\",\n heading: \"Request timing\",\n dns: \"DNS Lookup\",\n connect: \"Connection\",\n ssl: \"SSL/TLS\",\n request: \"Request\",\n response: \"Response\",\n total: (formatted) => `Total: ${formatted}`,\n totalTime: (formatted) => `Total Time: ${formatted}`,\n};\n\nexport const EN_US_DATA_STATE_COPY: DataStateCopy = {\n empty: \"Nothing here\",\n loading: \"Loading…\",\n endOfList: \"No more items to load\",\n dismissAlert: \"Dismiss\",\n dismissBanner: \"Dismiss this banner\",\n};\n\nexport const EN_US_DATA_VIEWS_COPY: DataViewsCopy = {\n savedViewsMenu: EN_US_SAVED_VIEWS_LABELS,\n confirmAction: EN_US_CONFIRM_ACTION_COPY,\n categorySelect: EN_US_CATEGORY_SELECT_COPY,\n board: {\n countOnPage: (label, count) => `${label}: ${count} on this page`,\n onThisPage: (count) => `${count} on this page`,\n pageSum: (sum) => `This page totals ${sum}`,\n emptyColumn: \"Nothing at this stage\",\n pageScopeNote: \"The counts and totals below cover only the items on this page.\",\n },\n deleteView: {\n title: \"Delete view\",\n target: (viewName) => `Delete \"${viewName}\"?`,\n sharedWarning: \"This view is shared — the team will lose access to it.\",\n // `entityLabel` is the HOST's word for what the rows are, so the sentence is\n // built around it rather than naming a noun of its own.\n rowsUnaffected: (entityLabel) =>\n `${entityLabel} are not affected; only the saved slice is removed.`,\n confirm: \"Delete view\",\n cancel: \"Cancel\",\n },\n manageViews: {\n title: \"Manage views\",\n empty: \"No saved views.\",\n edit: \"Edit\",\n defaultTag: \"Default\",\n otherUserTag: \"Another user's\",\n deleteTitle: \"Delete this saved view?\",\n deleteBody: \"The filters and columns it holds are lost. This cannot be undone.\",\n deleteConfirm: \"Delete\",\n },\n saveView: {\n sharedDescription: \"Anyone in the store will be able to open and use this view.\",\n setDefaultTitle: \"Set as default\",\n setDefaultDescription: \"This screen opens on this view instead of the Main view.\",\n previewHeading: \"What this view holds\",\n previewUnchanged: \"Nothing has changed — this view will match the Main view.\",\n sortRowLabel: \"Sorting\",\n saveFailed: \"Could not save the view.\",\n titleEditing: \"Edit view\",\n titleCreating: \"Save view\",\n descriptionLabel: \"Description — optional\",\n descriptionPlaceholder: \"What this view is for\",\n submitEditing: \"Save changes\",\n submitCreating: \"Save view\",\n nameLabel: \"Name\",\n cancel: \"Cancel\",\n pinnedTitle: \"Pin to the sidebar\",\n pinnedDescription: \"Appears as a shortcut in the menu, under this screen.\",\n sharedTitle: \"Share with the team\",\n namePlaceholder: \"e.g. Declined card payments this week\",\n previewFilters: \"Filters\",\n previewHiddenColumns: \"Hidden columns\",\n },\n columns: {\n visibleCount: (visible, total) => `${visible} of ${total} visible`,\n reset: \"Default\",\n showAll: \"Show all\",\n dragHint: \"Drag to reorder the columns.\",\n moveUp: (columnLabel) => `Move ${columnLabel} up`,\n moveDown: (columnLabel) => `Move ${columnLabel} down`,\n },\n display: {\n sortTab: \"Sort\",\n columnsTab: \"Columns\",\n panelTab: \"Display\",\n direction: \"Direction\",\n layoutHints: {\n table: \"Comparable columns, good for scanning numbers.\",\n list: \"One row per item, with the key fields.\",\n cards: \"Larger blocks, good for a handful of items.\",\n board: \"A column per stage, for tracking what is where.\",\n },\n densityHeadings: {\n table: \"Row height\",\n list: \"Row height\",\n cards: \"Cards per row\",\n board: \"Column width\",\n },\n densityLabels: {\n table: { compact: \"Low\", cozy: \"Medium\", comfortable: \"High\" },\n list: { compact: \"Low\", cozy: \"Medium\", comfortable: \"High\" },\n cards: { compact: \"Many\", cozy: \"Some\", comfortable: \"Few\" },\n board: { compact: \"Narrow\", cozy: \"Medium\", comfortable: \"Wide\" },\n },\n boardUnavailable: \"This screen declares no stages, so it offers no board.\",\n densityUnavailableNarrow:\n \"One card per row at this width — density returns on larger screens.\",\n trigger: \"Display\",\n fieldHeading: \"Field\",\n formatHeading: \"Format\",\n cardZoom: \"Card size\",\n },\n export: {\n formats: {\n // The extension is the file's, not a word: it stays as it is written on\n // disk in every language.\n json: { label: \"JSON (.json)\", hint: \"For integrations\" },\n },\n scopeLine: (selectedCount, totalCount) =>\n selectedCount > 0\n ? `Exporting ${selectedCount} selected ${selectedCount === 1 ? \"item\" : \"items\"}`\n : `Exporting ${totalCount} filtered ${totalCount === 1 ? \"item\" : \"items\"}`,\n visibleColumns: (columnCount) => `${columnCount} visible columns, in their current order`,\n trigger: \"Export\",\n triggerLabel: \"Export\",\n },\n tableFilter: EN_US_TABLE_FILTER_COPY,\n grid: {\n ...EN_US_DATA_GRID_COPY,\n rowActions: \"Actions\",\n bulkActions: (selectedCount) => `Actions (${selectedCount}) ▾`,\n emptyFilteredTitle: \"No results for these filters\",\n emptyFilteredHint: \"Adjust or remove the filters.\",\n emptyFilteredAction: \"Clear filters\",\n },\n filters: {\n moreFilters: (count) => `More filters: ${count} did not fit in the bar`,\n moreFiltersApplied: (count, appliedCount) =>\n `More filters: ${count} did not fit in the bar, ${appliedCount} applied`,\n moreTriggerLabel: \"More\",\n moreHeading: \"More filters\",\n overflowNote: \"did not fit in the bar\",\n rangeEnd: \"To\",\n rangeInvalid: \"The start must be earlier than the end.\",\n rangeInclusiveNote: \"Both dates are included in the result.\",\n rangeStart: \"From\",\n // The mask is what the reader TYPES, so it follows their own date order\n // rather than being carried over. A translated label above an unchanged\n // mask is the shape that gets a date entered backwards.\n dayMask: \"mm/dd/yyyy\",\n clearAllFilters: \"Clear all filters\",\n // The KEYS are the package's own preset ids and stay as they are — the\n // surface matches on them. Only the labels beside them are words.\n rangePresets: {\n hoje: \"Today\",\n ontem: \"Yesterday\",\n semana: \"This week\",\n mes: \"This month\",\n ano: \"This year\",\n },\n scopesLabel: \"Status\",\n panelTitle: \"Filters\",\n clear: \"Clear\",\n clearAll: \"Clear filters\",\n clearRange: (label) => `Clear ${label}`,\n allOption: \"All\",\n optionSearchPlaceholder: \"Search…\",\n optionsEmpty: \"No results\",\n optionsHeading: \"Options\",\n },\n selection: {\n selectAllOnPage: \"Select all on this page\",\n clearSelection: \"Clear selection\",\n selectAll: \"Select all\",\n onThisPage: (count) => `${count} on this page`,\n selectedCount: (count) => `${count} ${count === 1 ? \"item selected\" : \"items selected\"}`,\n selectRow: \"Select\",\n expandRow: \"Expand details\",\n collapseRow: \"Collapse details\",\n },\n nav: {\n mainView: \"Main view\",\n defaultTag: \"Default\",\n viewOptions: (viewName) => `${viewName} options`,\n emptyHint: \"No saved views. Adjust filters, columns or sorting and save below.\",\n setDefault: \"Set as default\",\n deleteView: \"Delete view\",\n unsavedChanges: \"Unsaved changes\",\n label: \"View\",\n update: \"Update view\",\n save: \"Save view\",\n saveAs: \"Save as new\",\n reset: \"Reset\",\n updateFailed: \"Could not update the view\",\n dismissError: \"Dismiss\",\n goBack: \"Back\",\n pageSize: \"Show:\",\n saveFailed: \"Could not save the change to the view.\",\n editView: \"Rename and edit\",\n pinToSidebar: \"Pin to the sidebar\",\n shareWithTeam: \"Share with the team\",\n },\n search: {\n placeholder: \"Search…\",\n allColumnsLabel: \"Search every column\",\n keywordPlaceholder: \"Press Enter to filter\",\n open: \"Search\",\n close: \"Close search\",\n clear: \"Clear search\",\n },\n};\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-YICNA5LG.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/pt-BR.form.ts"],"sourcesContent":["/**\n * The pt-BR pack for the form family. Split out of `pt-BR.ts`, which is a\n * barrel over this folder — see that file 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 PT_BR_ADDRESS_AUTOCOMPLETE_COPY: AddressAutocompleteCopy = {\n loadingMaps: \"Carregando o Google Maps…\",\n mapsLoadFailed:\n \"Não foi possível carregar a API do Google Maps. Verifique a chave da API e a conexão com a internet.\",\n useCurrentLocation: \"Usar a localização atual\",\n};\n\nexport const PT_BR_AUTOCOMPLETE_COPY: AutocompleteCopy = {\n loading: \"Carregando…\",\n noResults: \"Nenhum resultado encontrado\",\n placeholder: \"Digite para buscar…\",\n};\n\nexport const PT_BR_CODE_EDITOR_COPY: CodeEditorCopy = {\n loading: \"Carregando o editor…\",\n readOnly: \"Somente leitura\",\n formatCode: \"Formatar o código (Ctrl+Shift+F)\",\n enableWrap: \"Quebrar as linhas\",\n disableWrap: \"Não quebrar as linhas\",\n copyToClipboard: \"Copiar para a área de transferência\",\n copied: \"Copiado!\",\n enterFullscreen: \"Tela cheia\",\n exitFullscreen: \"Sair da tela cheia\",\n};\n\nexport const PT_BR_PASSWORD_STRENGTH_COPY: PasswordStrengthCopy = {\n strengthHeading: \"Força da senha\",\n requirementsHeading: \"Requisitos:\",\n suggestionsHeading: \"Sugestões:\",\n bands: {\n veryWeak: \"Muito fraca\",\n weak: \"Fraca\",\n fair: \"Razoável\",\n good: \"Boa\",\n strong: \"Forte\",\n },\n requirements: {\n minLength: (count) => `Pelo menos ${count} caracteres`,\n uppercase: \"Uma letra maiúscula\",\n lowercase: \"Uma letra minúscula\",\n numbers: \"Um número\",\n special: \"Um caractere especial\",\n },\n suggestions: {\n minLength: (count) => `Use pelo menos ${count} caracteres`,\n uppercase: \"Adicione letras maiúsculas\",\n lowercase: \"Adicione letras minúsculas\",\n numbers: \"Inclua números\",\n special: \"Adicione caracteres especiais\",\n },\n};\n\nexport const PT_BR_RICH_EDITOR_TOOLBAR_COPY: RichEditorToolbarCopy = {\n bold: \"Negrito\",\n italic: \"Itálico\",\n underline: \"Sublinhado\",\n bulletList: \"Lista com marcadores\",\n numberedList: \"Lista numerada\",\n quote: \"Citação\",\n code: \"Código\",\n insertLink: \"Inserir link\",\n textColor: \"Cor do texto\",\n backgroundColor: \"Cor de fundo\",\n linkPrompt: \"Informe a URL:\",\n};\n\nexport const PT_BR_PHONE_INPUT_COPY: PhoneInputCopy = {\n selectCountry: \"Selecionar o país\",\n invalidNumber: (countryName) => `Telefone inválido para ${countryName}`,\n unknownCountry: \"o país selecionado\",\n};\n\nexport const PT_BR_UPLOAD_BUTTON_COPY: UploadButtonCopy = {\n buttonLabel: \"Enviar arquivo\",\n dropzoneHint: \"Solte o arquivo aqui ou clique para escolher\",\n dropzoneRole: (label) => `Área de upload de arquivo. ${label}`,\n uploading: \"Enviando…\",\n dropReady: \"Arquivo pronto para soltar\",\n percentUploaded: (percent) => `${percent}% enviado`,\n uploadInProgress: (percent) => `Envio em andamento: ${percent}%`,\n errorAnnouncement: (message) => `Erro: ${message}`,\n};\n\nexport const PT_BR_SOCIAL_LOGIN_COPY: SocialLoginCopy = {\n google: \"Continuar com o Google\",\n facebook: \"Continuar com o Facebook\",\n apple: \"Continuar com a 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,EACV,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,IACZ,WAAW,CAAC,UAAU,cAAc,KAAK;AAAA,IACzC,WAAW;AAAA,IACX,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EACA,aAAa;AAAA,IACX,WAAW,CAAC,UAAU,kBAAkB,KAAK;AAAA,IAC7C,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,6BAA0B,WAAW;AAAA,EACrE,gBAAgB;AAClB;AAEO,IAAM,2BAA6C;AAAA,EACxD,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc,CAAC,UAAU,iCAA8B,KAAK;AAAA,EAC5D,WAAW;AAAA,EACX,WAAW;AAAA,EACX,iBAAiB,CAAC,YAAY,GAAG,OAAO;AAAA,EACxC,kBAAkB,CAAC,YAAY,uBAAuB,OAAO;AAAA,EAC7D,mBAAmB,CAAC,YAAY,SAAS,OAAO;AAClD;AAEO,IAAM,0BAA2C;AAAA,EACtD,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AACT;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/feedback/Sonner/Sonner.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport Portal from '@mui/material/Portal/index.js';\nimport React, { createContext, useCallback, useContext, useRef,useState, useMemo } from 'react';\n\nimport { rem, sxRem } from '../../../tokens/relative';\n\nimport type { SonnerContextType, SonnerItem,SonnerProps } from './Sonner.types';\n\nconst SonnerContext = createContext<SonnerContextType | null>(null);\n\nconst DEFAULT_DURATION_MS = 4000;\n\nconst buildToastItem = (\n toast: Omit<SonnerProps, 'id'>,\n id: string,\n type?: SonnerProps['type'],\n): SonnerItem => ({\n ...toast,\n id,\n type: type || toast.type || 'default',\n createdAt: Date.now(),\n visible: true });\n\n// Persistent toasts and `duration: 0` stay until dismissed explicitly.\nconst scheduleAutoDismiss = (\n toast: Omit<SonnerProps, 'id'>,\n id: string,\n dismiss: (id?: string) => void,\n) => {\n if (toast.persistent || toast.duration === 0) return;\n\n window.setTimeout(() => dismiss(id), toast.duration ?? DEFAULT_DURATION_MS);\n};\n\nconst EXIT_TRANSITION_MS = 300;\n\ntype SonnerPromiseOptions<T> = {\n loading: React.ReactNode;\n success: React.ReactNode | ((data: T) => React.ReactNode);\n error: React.ReactNode | ((error: Error) => React.ReactNode);\n};\n\nconst resolveMessage = <T,>(\n message: React.ReactNode | ((value: T) => React.ReactNode),\n value: T,\n): React.ReactNode => (typeof message === 'function' ? message(value) : message);\n\n// Shows a pinned loading toast for the life of a promise, then swaps it for a\n// success or error one. Takes the shortcuts it needs rather than reaching for\n// context, so it is testable on its own.\nconst trackPromiseWithToasts = async <T,>(\n promiseToResolve: Promise<T>,\n options: SonnerPromiseOptions<T>,\n toasts: {\n loading: (message: React.ReactNode) => string;\n success: (message: React.ReactNode) => string;\n error: (message: React.ReactNode) => string;\n dismiss: (id?: string) => void;\n },\n): Promise<T> => {\n const toastId = toasts.loading(options.loading);\n\n try {\n const data = await promiseToResolve;\n toasts.dismiss(toastId);\n toasts.success(resolveMessage(options.success, data));\n return data;\n } catch (err) {\n toasts.dismiss(toastId);\n toasts.error(resolveMessage(options.error, err instanceof Error ? err : new Error(String(err))));\n throw err;\n }\n};\n\nexport const SonnerProvider: React.FC<{\n children: React.ReactNode;\n /**\n * The dismiss button's accessible name, for every toast this provider\n * raises. REQUIRED and mounted ONCE — the shortcut helpers\n * (`sonner.success(…)`) take a message and nothing else by design, so the\n * word cannot be a per-call argument without changing what they are for.\n */\n dismissLabel: string;\n}> = ({ children, dismissLabel }) => {\n const [toasts, setToasts] = useState<SonnerItem[]>([]);\n const toastCounter = useRef(0);\n\n // Hide first, then drop after the exit transition. Passing no id targets every\n // toast; the two branches only differ in which toasts they match, so that is\n // the only thing that varies here.\n const dismiss = useCallback((id?: string) => {\n const matches = (toast: SonnerItem) => id === undefined || toast.id === id;\n\n setToasts((prev) =>\n prev.map((toast) => (matches(toast) ? { ...toast, visible: false } : toast)),\n );\n\n window.setTimeout(() => {\n setToasts((prev) => prev.filter((toast) => !matches(toast)));\n }, EXIT_TRANSITION_MS);\n }, []);\n\n const addToast = useCallback(\n (toast: Omit<SonnerProps, 'id'>, type?: SonnerProps['type']): string => {\n const id = `sonner-${++toastCounter.current}`;\n setToasts((prev) => [...prev, buildToastItem(toast, id, type)]);\n scheduleAutoDismiss(toast, id, dismiss);\n return id;\n },\n [dismiss],\n );\n\n // The six shortcuts differ only by the type they tag and, for loading, by\n // pinning persistent. Built from one factory rather than six near-identical\n // useCallback blocks.\n const makeShortcut = useCallback(\n (type: SonnerProps['type'], extra?: Partial<SonnerProps>) =>\n (message: React.ReactNode, options?: Partial<SonnerProps>) =>\n addToast({ dismissLabel, ...options, ...extra, title: message }, type),\n [addToast],\n );\n\n const toast = useMemo(() => makeShortcut('default'), [makeShortcut]);\n const success = useMemo(() => makeShortcut('success'), [makeShortcut]);\n const error = useMemo(() => makeShortcut('error'), [makeShortcut]);\n const warning = useMemo(() => makeShortcut('warning'), [makeShortcut]);\n const info = useMemo(() => makeShortcut('info'), [makeShortcut]);\n const loading = useMemo(\n () => makeShortcut('loading', { persistent: true }),\n [makeShortcut],\n );\n\n const promise = useCallback(\n <T,>(promiseToResolve: Promise<T>, options: SonnerPromiseOptions<T>): Promise<T> =>\n trackPromiseWithToasts(promiseToResolve, options, { loading, success, error, dismiss }),\n [loading, success, error, dismiss],\n );\n\n const contextValue: SonnerContextType = {\n toast,\n success,\n error,\n warning,\n info,\n loading,\n dismiss,\n promise };\n\n // Register this context globally for imperative API\n useRegisterGlobalToast(contextValue);\n\n return (\n <SonnerContext.Provider value={contextValue}>\n {children}\n <SonnerToaster toasts={toasts} onDismiss={dismiss} />\n </SonnerContext.Provider>\n );\n};\n\nexport const useSonner = (): SonnerContextType => {\n const context = useContext(SonnerContext);\n if (!context) {\n throw new Error('useSonner must be used within a SonnerProvider');\n }\n return context;\n};\n\n// A caller-supplied icon always wins; otherwise the type picks one.\nimport { SonnerToast } from './SonnerToast';\n\nconst SonnerToaster: React.FC<{\n toasts: SonnerItem[];\n onDismiss: (id: string) => void;\n}> = ({ toasts, onDismiss }) => {\n // Limit visible toasts to prevent overflow\n const MAX_VISIBLE_TOASTS = 5;\n const visibleToasts = toasts.slice(-MAX_VISIBLE_TOASTS);\n const hiddenCount = Math.max(0, toasts.length - MAX_VISIBLE_TOASTS);\n\n return (\n <Portal>\n <Box\n sx={{\n position: 'fixed',\n top: sxRem(16),\n right: sxRem(16),\n zIndex: 9999,\n display: 'flex',\n flexDirection: 'column',\n pointerEvents: 'none',\n maxHeight: (theme) => `calc(100vh - ${rem(theme, 32)})`,\n overflowY: 'auto',\n overflowX: 'hidden' }}\n >\n {hiddenCount > 0 && (\n <Box\n sx={{\n p: 1,\n mb: 0.5,\n textAlign: 'center',\n fontSize: sxRem(12),\n color: 'text.secondary',\n pointerEvents: 'none' }}\n >\n +{hiddenCount} more\n </Box>\n )}\n {visibleToasts.map((toast) => (\n <Box key={toast.id} sx={{ pointerEvents: 'auto' }}>\n <SonnerToast {...toast} onDismiss={onDismiss} />\n </Box>\n ))}\n </Box>\n </Portal>\n );\n};\n\n// Global toast instance for imperative API\nlet globalToastContext: SonnerContextType | null = null;\n\n// Hook to register the global context (used internally by SonnerProvider)\nexport const useRegisterGlobalToast = (context: SonnerContextType) => {\n React.useEffect(() => {\n globalToastContext = context;\n return () => {\n globalToastContext = null;\n };\n }, [context]);\n};\n\n// Create a production-ready toast instance for imperative usage\nconst createToastInstance = (): SonnerContextType => {\n const warnNoProvider = () => {\n // Use a more React-appropriate warning mechanism\n if (typeof window !== 'undefined' && window.console && window.console.warn) {\n window.console.warn('Sonner: No SonnerProvider found. Please wrap your app with SonnerProvider.');\n }\n };\n\n const methods: SonnerContextType = {\n toast: (message: React.ReactNode, options?: Partial<SonnerProps>) => {\n if (!globalToastContext) {\n warnNoProvider();\n return 'no-provider';\n }\n return globalToastContext.toast(message, options);\n },\n success: (message: React.ReactNode, options?: Partial<SonnerProps>) => {\n if (!globalToastContext) {\n warnNoProvider();\n return 'no-provider';\n }\n return globalToastContext.success(message, options);\n },\n error: (message: React.ReactNode, options?: Partial<SonnerProps>) => {\n if (!globalToastContext) {\n warnNoProvider();\n return 'no-provider';\n }\n return globalToastContext.error(message, options);\n },\n warning: (message: React.ReactNode, options?: Partial<SonnerProps>) => {\n if (!globalToastContext) {\n warnNoProvider();\n return 'no-provider';\n }\n return globalToastContext.warning(message, options);\n },\n info: (message: React.ReactNode, options?: Partial<SonnerProps>) => {\n if (!globalToastContext) {\n warnNoProvider();\n return 'no-provider';\n }\n return globalToastContext.info(message, options);\n },\n loading: (message: React.ReactNode, options?: Partial<SonnerProps>) => {\n if (!globalToastContext) {\n warnNoProvider();\n return 'no-provider';\n }\n return globalToastContext.loading(message, options);\n },\n dismiss: (id?: string) => {\n if (!globalToastContext) {\n warnNoProvider();\n return;\n }\n globalToastContext.dismiss(id);\n },\n promise: async <T,>(\n promiseToResolve: Promise<T>,\n options: {\n loading: React.ReactNode;\n success: React.ReactNode | ((data: T) => React.ReactNode);\n error: React.ReactNode | ((error: Error) => React.ReactNode);\n },\n ): Promise<T> => {\n if (!globalToastContext) {\n warnNoProvider();\n throw new Error('No SonnerProvider found');\n }\n return globalToastContext.promise(promiseToResolve, options);\n } };\n\n return methods;\n};\n\n// Export toast instance for imperative API usage\nexport const toast = createToastInstance();\n\n// Export Toaster as alias for SonnerProvider for stories compatibility\nexport const Toaster: React.FC<{\n children?: React.ReactNode;\n position?: string;\n theme?: string;\n expand?: boolean;\n richColors?: boolean;\n closeButton?: boolean;\n dismissLabel: string;\n}> = ({ children, dismissLabel }) => (\n <SonnerProvider dismissLabel={dismissLabel}>{children}</SonnerProvider>\n);\n"],"mappings":"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","names":["toast"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/form/Button/Button.native.tsx","../../../src/components/form/Button/Button.helpers.ts","../../../src/components/form/Button/Button.metrics.ts","../../../src/components/form/Button/Button.native.loading.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n Easing,\n Platform,\n Pressable,\n StyleSheet,\n View,\n type GestureResponderEvent,\n type PressableStateCallbackType,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from 'react-native';\n\nimport { resolveButtonProps } from './Button.helpers';\nimport {\n BUTTON_FONT_WEIGHT,\n BUTTON_ICON_GAP_UNITS,\n BUTTON_LINE_HEIGHT,\n BUTTON_SIZES,\n BUTTON_WASH_ALPHA,\n GLASS_BACKGROUND_ALPHA,\n GLASS_BACKGROUND_ALPHA_PRESSED,\n GLASS_BORDER_ALPHA,\n GLOW_INNER_ALPHA,\n GLOW_RADIUS,\n PULSE_ALPHA,\n PULSE_DURATION_MS,\n PULSE_SPREAD,\n buttonPalette,\n gradientStops,\n quietInk,\n} from './Button.metrics';\nimport type { ButtonProps, ButtonVariant } from './Button.types.native';\nimport { hiddenWhile, Label, loadingName, Spinner } from './Button.native.loading';\nimport { childTestId, resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport { resolveFieldEdge } from '../../../tokens/field-edge.core';\nimport { FIELD_BORDER_WIDTH, fieldHeightPx } from '../../../tokens/field-height.core';\nimport { alpha } from '../../../tokens/color';\nimport type { ColorValue, SizeValue } from '../../../tokens/vocabulary';\nimport type { UiPaletteColor, UiTheme } from '../../../tokens/theme';\n\n/** MUI's `min-width` for a button that carries a label. */\nconst MIN_WIDTH = 64;\n\ninterface Paint {\n container: ViewStyle;\n pressed: ViewStyle;\n label: TextStyle;\n}\n\n/**\n * What the web's `VARIANT_STYLES` paint, as three React Native styles: at rest,\n * while pressed (the web's `:hover`, which touch has no equivalent of), and the\n * label. Same palette arithmetic, same alphas.\n *\n * `gradient` is the one honest gap: React Native core has no gradient fill, so\n * it paints the gradient's first stop. A host wanting the real thing adds a\n * gradient library; the parity ledger records this.\n */\n/** A coloured outline: its colour for the border and the label, washed when pressed. */\nfunction outlineOf(palette: UiPaletteColor, wash: string): Paint {\n return {\n container: { backgroundColor: 'transparent', borderWidth: FIELD_BORDER_WIDTH, borderColor: palette.main },\n pressed: { backgroundColor: wash, borderColor: palette.dark },\n label: { color: palette.main },\n };\n}\n\n/**\n * A neutral outline, as on the web: it rests on the one field border and\n * writes in the theme's text ink, a role that turns with the mode — grey 700\n * was dark on a dark ground.\n */\nfunction neutralOutline(theme: UiTheme): Paint {\n const ink = theme.palette.text.primary;\n return {\n container: {\n backgroundColor: 'transparent',\n borderWidth: FIELD_BORDER_WIDTH,\n borderColor: resolveFieldEdge(theme.palette.divider, theme.palette.background.paper),\n },\n pressed: { backgroundColor: alpha(ink, BUTTON_WASH_ALPHA), borderColor: theme.palette.text.secondary },\n label: { color: ink },\n };\n}\n\nfunction paintFor(\n theme: UiTheme,\n variant: ButtonVariant,\n color: ColorValue,\n palette: UiPaletteColor,\n active: boolean,\n): Paint {\n const wash = alpha(palette.main, BUTTON_WASH_ALPHA);\n switch (variant) {\n case 'outline':\n return color === 'neutral' ? neutralOutline(theme) : outlineOf(palette, wash);\n case 'ghost':\n return {\n container: { backgroundColor: 'transparent' },\n pressed: { backgroundColor: wash },\n label: { color: quietInk(theme, palette) },\n };\n case 'text':\n return {\n container: { backgroundColor: active ? wash : 'transparent' },\n pressed: { backgroundColor: wash },\n label: { color: quietInk(theme, palette) },\n };\n case 'glass':\n return {\n container: {\n backgroundColor: alpha(theme.palette.background.paper, GLASS_BACKGROUND_ALPHA),\n borderWidth: 1,\n borderColor: alpha(theme.palette.divider, GLASS_BORDER_ALPHA),\n },\n pressed: { backgroundColor: alpha(theme.palette.background.paper, GLASS_BACKGROUND_ALPHA_PRESSED) },\n label: { color: palette.main },\n };\n case 'gradient': {\n const [from, to] = gradientStops(theme, color, palette);\n return {\n container: { backgroundColor: from },\n pressed: { backgroundColor: to },\n label: { color: '#fff' },\n };\n }\n default:\n return {\n container: { backgroundColor: palette.main },\n pressed: { backgroundColor: palette.dark },\n label: { color: palette.contrastText || '#fff' },\n };\n }\n}\n\n/** MUI's disabled treatment per variant family, so a disabled button reads as one on both sides. */\nfunction disabledPaint(theme: UiTheme, variant: ButtonVariant): Paint {\n const filled = variant === 'solid' || variant === 'gradient' || variant === 'glass';\n return {\n container: filled\n ? { backgroundColor: theme.palette.action.disabledBackground, borderWidth: 0 }\n : variant === 'outline'\n ? { backgroundColor: 'transparent', borderWidth: 1, borderColor: theme.palette.action.disabledBackground }\n : { backgroundColor: 'transparent' },\n pressed: {},\n label: { color: theme.palette.action.disabled },\n };\n}\n\nfunction sizeStyle(theme: UiTheme, size: SizeValue, iconOnly: boolean, hasIcon: boolean): ViewStyle {\n const metrics = BUTTON_SIZES[size];\n // The theme's field height for the size, as on the web: a button stands\n // level with the field beside it, and an icon-only one is that square.\n const height = fieldHeightPx(theme.fieldHeight, size);\n if (iconOnly) {\n return { padding: 0, minWidth: height, minHeight: height };\n }\n return {\n minHeight: height,\n paddingVertical: 0,\n paddingHorizontal: metrics.paddingHorizontal,\n minWidth: MIN_WIDTH,\n gap: hasIcon ? theme.spacing(BUTTON_ICON_GAP_UNITS) : undefined,\n };\n}\n\nfunction glowStyle(palette: UiPaletteColor): ViewStyle {\n return Platform.select<ViewStyle>({\n android: { elevation: 8 },\n default: {\n shadowColor: palette.main,\n shadowOpacity: GLOW_INNER_ALPHA,\n shadowRadius: GLOW_RADIUS,\n shadowOffset: { width: 0, height: 0 },\n },\n });\n}\n\n/** The web's `::after` pulse ring: a looped scale-and-fade behind the button. */\nfunction Pulse({ color, radius, testID }: { color: string; radius: number; testID: string }): React.JSX.Element {\n const progress = React.useRef(new Animated.Value(0)).current;\n\n React.useEffect(() => {\n const loop = Animated.loop(\n Animated.timing(progress, {\n toValue: 1,\n duration: PULSE_DURATION_MS,\n easing: Easing.out(Easing.ease),\n useNativeDriver: Platform.OS !== 'web',\n }),\n );\n loop.start();\n return () => loop.stop();\n }, [progress]);\n\n return (\n <Animated.View\n testID={testID}\n aria-hidden\n style={[\n StyleSheet.absoluteFill,\n {\n pointerEvents: 'none',\n borderRadius: radius,\n backgroundColor: color,\n opacity: progress.interpolate({ inputRange: [0, 0.7, 1], outputRange: [PULSE_ALPHA, 0, 0] }),\n transform: [\n { scale: progress.interpolate({ inputRange: [0, 0.7, 1], outputRange: [1, 1 + PULSE_SPREAD / 40, 1] }) },\n ],\n },\n ]}\n />\n );\n}\n\n\ntype ResolvedProps = ReturnType<typeof resolveButtonProps<ButtonProps>>;\n\ninterface ButtonLook {\n inactive: boolean;\n palette: UiPaletteColor;\n radius: number;\n label: TextStyle;\n container: (state: PressableStateCallbackType) => StyleProp<ViewStyle>;\n}\n\n/**\n * Whether the button clips what it draws.\n *\n * The web button is `overflow: hidden` (its ripple needs it) unless the pulse\n * ring turns it visible; on native the glow's shadow needs it visible too,\n * because a view's own shadow is clipped by its own overflow there.\n *\n * An Android button never clips (FUT-3775). There, a clipped solid button that\n * turned enabled — after a disable or a loading — painted its new fill and no\n * label: an adopter's cancel, help and delivery sheets showed a red block\n * with no text. The same button unclipped draws its label in every state\n * (measured on an Android emulator with a pixel check). Nothing else needs the\n * clip there: the label, icon and spinner sit inside the padding. The ripple\n * did, since its mask is a square, so a native press shows the variant's\n * pressed paint alone, as on iOS, and `ripple` only matters on the web.\n */\nexport function overflowOf(visible: boolean, os: typeof Platform.OS = Platform.OS): ViewStyle['overflow'] {\n return visible || os === 'android' ? 'visible' : 'hidden';\n}\n\n/**\n * Everything the button paints, decided once per render from the resolved\n * props and the theme. Kept out of the component so the component reads as\n * structure — what renders where — and this reads as arithmetic.\n */\nfunction buttonLook(theme: UiTheme, props: ResolvedProps): ButtonLook {\n const { variant, color, size, loading, icon, children, glow, pulse, active, disabled, style } = props;\n const palette = buttonPalette(theme, color);\n // Loading keeps the icon (transparent), so it changes neither the shape nor the gap (FUT-3646).\n const iconOnly = icon != null && children == null;\n const inactive = Boolean(disabled) || loading;\n const paint = inactive ? disabledPaint(theme, variant) : paintFor(theme, variant, color, palette, active);\n // The theme's one field radius, so a button and the input beside it agree.\n const radius = theme.radius.field;\n const metrics = BUTTON_SIZES[size];\n const overflow = overflowOf(Boolean(pulse || glow));\n const sized = sizeStyle(theme, size, iconOnly, icon != null);\n const glowing = glow && !inactive ? glowStyle(palette) : null;\n\n return {\n inactive,\n palette,\n radius,\n label: {\n fontFamily: theme.typography.fontFamily,\n fontSize: metrics.fontSize,\n lineHeight: metrics.fontSize * BUTTON_LINE_HEIGHT,\n fontWeight: String(BUTTON_FONT_WEIGHT) as TextStyle['fontWeight'],\n textAlign: 'center',\n ...paint.label,\n },\n container: (state) => [\n styles.base,\n { borderRadius: radius, overflow },\n sized,\n paint.container,\n state.pressed && !inactive ? paint.pressed : null,\n glowing,\n style,\n ],\n };\n}\n\nexport const Button = React.forwardRef<View, ButtonProps>((rawProps, ref) => {\n const resolved = resolveButtonProps(rawProps);\n // `ripple` is web-only: kept out of `others` so it never reaches the Pressable (see overflowOf).\n const { loading, icon, iconPosition, pulse, ripple: _ripple, children, onClick, onPress, ...others } = resolved;\n const theme = useUiTheme();\n const look = buttonLook(theme, resolved);\n\n // The shared stories pass `'data-testid'` as a plain prop; honour it here and\n // keep all three spellings off the element (react-native-web would drop them).\n const testId = resolveTestId(others, 'button');\n const idFor = (suffix: string) => childTestId(others, suffix, 'button');\n const rest = withoutTestIdProps(others);\n // `buttonLook` consumed these; they are not Pressable props.\n const { variant: _v, color: _c, size: _s, glow: _g, active: _a, disabled: _d, style: _st, ...pressable } = rest;\n\n const handlePress = (event: GestureResponderEvent): void => {\n onClick?.(event);\n onPress?.(event);\n };\n\n const iconNode = icon ? (\n <View style={[styles.icon, hiddenWhile(loading)]} testID={idFor('icon')}>\n {icon}\n </View>\n ) : null;\n\n return (\n <Pressable\n ref={ref}\n role=\"button\"\n aria-disabled={look.inactive}\n aria-busy={loading}\n aria-label={loadingName(loading, children)}\n disabled={look.inactive}\n onPress={handlePress}\n style={look.container}\n testID={testId}\n {...pressable}\n >\n {pulse && !look.inactive ? <Pulse color={look.palette.main} radius={look.radius} testID={idFor('pulse')} /> : null}\n {iconPosition === 'left' ? iconNode : null}\n <Label loading={loading} label={look.label} testID={idFor('busy-label')}>\n {children}\n </Label>\n {iconPosition === 'right' ? iconNode : null}\n {loading ? <Spinner color={look.label.color as string} testID={idFor('loading')} /> : null}\n </Pressable>\n );\n});\n\nButton.displayName = 'Button';\n\nconst styles = StyleSheet.create({\n base: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n alignSelf: 'flex-start',\n position: 'relative',\n },\n icon: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n","import type { ButtonBaseProps } from './Button.base';\n\ntype ButtonDefaultedKeys =\n | 'variant'\n | 'color'\n | 'size'\n | 'loading'\n | 'iconPosition'\n | 'glow'\n | 'pulse'\n | 'ripple'\n | 'active';\n\n/**\n * Generic over the renderer's own props: the web and the native `Button` pass\n * different handler types through, and both come back out untouched.\n */\ntype ResolvedButtonProps<P extends ButtonBaseProps> = P &\n Required<Pick<ButtonBaseProps, ButtonDefaultedKeys>>;\n\nconst BUTTON_DEFAULTS: Required<Pick<ButtonBaseProps, ButtonDefaultedKeys>> = {\n variant: 'solid',\n color: 'primary',\n size: 'md',\n loading: false,\n iconPosition: 'left',\n glow: false,\n pulse: false,\n ripple: true,\n active: false,\n};\n\n// Strips explicitly-undefined props before the merge, so `size={undefined}` still\n// falls back to the default exactly as a destructuring default would.\nconst definedProps = <P extends ButtonBaseProps>(props: P): Partial<P> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<P>;\n\nexport const resolveButtonProps = <P extends ButtonBaseProps>(props: P): ResolvedButtonProps<P> =>\n ({ ...BUTTON_DEFAULTS, ...definedProps(props) }) as ResolvedButtonProps<P>;\n","import { darken, lighten } from '../../../tokens/color';\nimport { ABSOLUTE_INK, NEUTRAL_RAMP } from '../../../tokens/ink.core';\nimport type { ColorValue, SizeValue } from '../../../tokens/vocabulary';\nimport type { UiPaletteColor, UiTheme } from '../../../tokens/theme';\n\n/**\n * THE NUMBERS BOTH `Button` RENDERERS DRAW WITH.\n *\n * `Button.styles.ts` (web, emotion) and `Button.native.tsx` (React Native)\n * read this one table. The web turns the px into rem and the padding into a\n * shorthand string; native uses the numbers as they are. Neither restates a\n * value, which is what keeps a native `md` button 16px tall of padding and\n * 16px of type exactly like the web one.\n */\nexport interface ButtonSizeMetrics {\n paddingVertical: number;\n paddingHorizontal: number;\n fontSize: number;\n}\n\nexport const BUTTON_SIZES: Record<SizeValue, ButtonSizeMetrics> = {\n xs: { paddingVertical: 2, paddingHorizontal: 8, fontSize: 12 },\n sm: { paddingVertical: 6, paddingHorizontal: 12, fontSize: 14 },\n md: { paddingVertical: 8, paddingHorizontal: 16, fontSize: 16 },\n lg: { paddingVertical: 10, paddingHorizontal: 20, fontSize: 18 },\n xl: { paddingVertical: 12, paddingHorizontal: 24, fontSize: 20 },\n};\n\n/** A button that is only an icon is square: uniform padding, no min-width. */\nexport const ICON_ONLY_PADDING: Record<SizeValue, number> = {\n xs: 2,\n sm: 5,\n md: 7,\n lg: 9,\n xl: 11,\n};\n\n/**\n * The start/end icon slot's font-size, in px — MUI's `medium` value, pinned\n * (12-74).\n *\n * MUI sizes that slot off its OWN `size` prop, writing 18/20/22 onto the first\n * child of `.MuiButton-startIcon`. We never passed a `size`, so every button in\n * every size has always drawn medium's 20px; now that `size` IS forwarded — so\n * the rendered class finally names the size the button actually is — the number\n * would start moving with it.\n *\n * WHAT THAT ACTUALLY REACHES, measured in a browser rather than assumed: this\n * Button renders its own wrapper span around the icon (it carries the child\n * test id), so MUI's rule lands on the WRAPPER and reaches the glyph only when\n * the glyph takes its size by inheritance — `fontSize=\"inherit\"`, an em-sized\n * SVG, a text or emoji glyph. With the pin removed, such a glyph measured 18px\n * at `xs`/`sm` and 22px at `lg`/`xl` against the 20px it has always been. An\n * icon carrying an absolute size of its own does not move at all: a default\n * `SvgIcon` stayed 24×24 across all five.\n *\n * A silent resize of the inherited case is still a design decision arriving as\n * a side effect of a class-name fix, so it is pinned to what shipped before —\n * `Button.tsx` puts it on that same wrapper. Scaling the glyph with the button\n * is a ticket of its own.\n */\nexport const BUTTON_ICON_GLYPH_SIZE = 20;\n\nexport const BUTTON_FONT_WEIGHT = 500;\n/** Between the icon and the label: `theme.spacing(0.5)`. */\nexport const BUTTON_ICON_GAP_UNITS = 0.5;\nexport const BUTTON_SPINNER_SIZE = 16;\n/** MUI's `line-height` for button text. */\nexport const BUTTON_LINE_HEIGHT = 1.75;\n\n/** The wash behind an outline, ghost or text button while it is hovered or pressed. */\nexport const BUTTON_WASH_ALPHA = 0.1;\nexport const GLASS_BACKGROUND_ALPHA = 0.1;\nexport const GLASS_BACKGROUND_ALPHA_PRESSED = 0.2;\nexport const GLASS_BORDER_ALPHA = 0.2;\nexport const GLOW_INNER_ALPHA = 0.6;\nexport const GLOW_OUTER_ALPHA = 0.3;\nexport const GLOW_RADIUS = 20;\nexport const PULSE_ALPHA = 0.3;\nexport const PULSE_DURATION_MS = 2000;\nexport const PULSE_SPREAD = 15;\n\n/**\n * `neutral` has no palette slot of its own in MUI, so `Button.styles.ts` has\n * always drawn it from three greys. Same three greys here.\n */\nexport function buttonPalette(theme: UiTheme, color: ColorValue): UiPaletteColor {\n if (color === 'neutral') {\n return {\n main: NEUTRAL_RAMP[700],\n dark: NEUTRAL_RAMP[800],\n light: NEUTRAL_RAMP[500],\n contrastText: ABSOLUTE_INK.white,\n };\n }\n return theme.palette[color];\n}\n\n/**\n * The label colour for `ghost` and `text`: one step darker than `main` in\n * light mode (lighter in dark), because `main` is chosen to sit UNDER white and\n * is not legible AS text on a tinted surface. See the web `quietInk`.\n */\nexport const quietInk = (theme: UiTheme, palette: UiPaletteColor): string =>\n theme.mode === 'dark' ? lighten(palette.main, 0.35) : darken(palette.main, 0.3);\n\n/** Gradients run between two related hues; the named colours pick a specific pair. */\nexport function gradientStops(\n theme: UiTheme,\n color: ColorValue,\n palette: UiPaletteColor,\n): [string, string] {\n switch (color) {\n case 'primary':\n return [theme.palette.primary.main, theme.palette.secondary.main];\n case 'secondary':\n return [theme.palette.secondary.main, theme.palette.primary.main];\n case 'success':\n case 'warning':\n return [theme.palette[color].light, theme.palette[color].dark];\n case 'danger':\n return [theme.palette.danger.light, theme.palette.danger.dark];\n default:\n return [palette.main, palette.dark];\n }\n}\n","import * as React from 'react';\nimport { ActivityIndicator, Platform, StyleSheet, View } from 'react-native';\nimport type { TextStyle } from 'react-native';\n\nimport { BUTTON_SPINNER_SIZE } from './Button.metrics';\nimport { renderTextChildren } from '../../../platform/text-children';\n\n/**\n * The native Button's loading state (FUT-3646): the label and icon stay laid\n * out under the spinner — so the button keeps its width and shape — and the\n * button keeps its name. Split from `Button.native.tsx` to keep that file\n * under the line ceiling.\n */\n\n/**\n * The spinner over the label while loading, across the whole button; `role`\n * comes from react-native's ActivityIndicator. It used to REPLACE the label, so\n * a loading button had no accessible name (FUT-3646).\n */\nexport function Spinner({ color, testID }: { color: string; testID: string }): React.JSX.Element {\n return (\n <View style={styles.spinner}>\n <ActivityIndicator\n size={Platform.OS === 'ios' ? 'small' : BUTTON_SPINNER_SIZE}\n color={color}\n testID={testID}\n accessibilityLabel=\"loading\"\n />\n </View>\n );\n}\n\n/**\n * The button's name while loading: its text label, said outright. The label\n * stays laid out (transparent) so the width holds, but a screen reader may skip\n * a view at opacity 0 — VoiceOver does — so the name cannot ride on it alone.\n * A caller's own `aria-label` still wins, being spread after this.\n */\nexport const loadingName = (loading: boolean | undefined, children: React.ReactNode): string | undefined =>\n loading ? textOf(children) : undefined;\n\n/**\n * The text of a label made only of strings and numbers — `Salvar`, or\n * `Salvar {n}`, which React hands over as an array. Anything else (an element)\n * has no text to say here, so the name is left to the label itself.\n */\nfunction textOf(children: React.ReactNode): string | undefined {\n const parts = React.Children.toArray(children);\n const textual = parts.every((part) => typeof part === 'string' || typeof part === 'number');\n return textual && parts.length > 0 ? parts.join('') : undefined;\n}\n\n/** Laid out but unseen under the spinner while loading, so the width holds. */\nexport const hiddenWhile = (loading: boolean | undefined) => (loading ? styles.hidden : null);\n\n/** The text label; while loading, kept laid out but unseen under the spinner. */\nexport function Label({\n loading,\n label,\n testID,\n children,\n}: {\n loading: boolean | undefined;\n label: TextStyle;\n testID: string;\n children: React.ReactNode;\n}): React.ReactNode {\n const text = renderTextChildren(children, label, 1);\n return loading ? (\n <View style={styles.hidden} testID={testID}>\n {text}\n </View>\n ) : (\n text\n );\n}\n\nconst styles = StyleSheet.create({\n // The label and icon under the spinner: laid out, so the width holds, but unseen.\n hidden: {\n opacity: 0,\n },\n spinner: {\n ...StyleSheet.absoluteFillObject,\n pointerEvents: 'none',\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,YAAYA,YAAW;AACvB;AAAA,EACE;AAAA,EACA;AAAA,EACA,YAAAC;AAAA,EACA;AAAA,EACA,cAAAC;AAAA,EACA,QAAAC;AAAA,OAMK;;;ACOP,IAAM,kBAAwE;AAAA,EAC5E,SAAS;AAAA,EACT,OAAO;AAAA,EACP,MAAM;AAAA,EACN,SAAS;AAAA,EACT,cAAc;AAAA,EACd,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AACV;AAIA,IAAM,eAAe,CAA4B,UAC/C,OAAO;AAAA,EACL,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS;AACjE;AAEK,IAAM,qBAAqB,CAA4B,WAC3D,EAAE,GAAG,iBAAiB,GAAG,aAAa,KAAK,EAAE;;;ACpBzC,IAAM,eAAqD;AAAA,EAChE,IAAI,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,UAAU,GAAG;AAAA,EAC7D,IAAI,EAAE,iBAAiB,GAAG,mBAAmB,IAAI,UAAU,GAAG;AAAA,EAC9D,IAAI,EAAE,iBAAiB,GAAG,mBAAmB,IAAI,UAAU,GAAG;AAAA,EAC9D,IAAI,EAAE,iBAAiB,IAAI,mBAAmB,IAAI,UAAU,GAAG;AAAA,EAC/D,IAAI,EAAE,iBAAiB,IAAI,mBAAmB,IAAI,UAAU,GAAG;AACjE;AAqCO,IAAM,qBAAqB;AAE3B,IAAM,wBAAwB;AAC9B,IAAM,sBAAsB;AAE5B,IAAM,qBAAqB;AAG3B,IAAM,oBAAoB;AAC1B,IAAM,yBAAyB;AAC/B,IAAM,iCAAiC;AACvC,IAAM,qBAAqB;AAC3B,IAAM,mBAAmB;AAEzB,IAAM,cAAc;AACpB,IAAM,cAAc;AACpB,IAAM,oBAAoB;AAC1B,IAAM,eAAe;AAMrB,SAAS,cAAc,OAAgB,OAAmC;AAC/E,MAAI,UAAU,WAAW;AACvB,WAAO;AAAA,MACL,MAAM,aAAa,GAAG;AAAA,MACtB,MAAM,aAAa,GAAG;AAAA,MACtB,OAAO,aAAa,GAAG;AAAA,MACvB,cAAc,aAAa;AAAA,IAC7B;AAAA,EACF;AACA,SAAO,MAAM,QAAQ,KAAK;AAC5B;AAOO,IAAM,WAAW,CAAC,OAAgB,YACvC,MAAM,SAAS,SAAS,QAAQ,QAAQ,MAAM,IAAI,IAAI,OAAO,QAAQ,MAAM,GAAG;AAGzE,SAAS,cACd,OACA,OACA,SACkB;AAClB,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO,CAAC,MAAM,QAAQ,QAAQ,MAAM,MAAM,QAAQ,UAAU,IAAI;AAAA,IAClE,KAAK;AACH,aAAO,CAAC,MAAM,QAAQ,UAAU,MAAM,MAAM,QAAQ,QAAQ,IAAI;AAAA,IAClE,KAAK;AAAA,IACL,KAAK;AACH,aAAO,CAAC,MAAM,QAAQ,KAAK,EAAE,OAAO,MAAM,QAAQ,KAAK,EAAE,IAAI;AAAA,IAC/D,KAAK;AACH,aAAO,CAAC,MAAM,QAAQ,OAAO,OAAO,MAAM,QAAQ,OAAO,IAAI;AAAA,IAC/D;AACE,aAAO,CAAC,QAAQ,MAAM,QAAQ,IAAI;AAAA,EACtC;AACF;;;AC7HA,YAAY,WAAW;AACvB,SAAS,mBAAmB,UAAU,YAAY,YAAY;AAqBxD;AAHC,SAAS,QAAQ,EAAE,OAAO,OAAO,GAAyD;AAC/F,SACE,oBAAC,QAAK,OAAO,OAAO,SAClB;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,SAAS,OAAO,QAAQ,UAAU;AAAA,MACxC;AAAA,MACA;AAAA,MACA,oBAAmB;AAAA;AAAA,EACrB,GACF;AAEJ;AAQO,IAAM,cAAc,CAAC,SAA8B,aACxD,UAAU,OAAO,QAAQ,IAAI;AAO/B,SAAS,OAAO,UAA+C;AAC7D,QAAM,QAAc,eAAS,QAAQ,QAAQ;AAC7C,QAAM,UAAU,MAAM,MAAM,CAAC,SAAS,OAAO,SAAS,YAAY,OAAO,SAAS,QAAQ;AAC1F,SAAO,WAAW,MAAM,SAAS,IAAI,MAAM,KAAK,EAAE,IAAI;AACxD;AAGO,IAAM,cAAc,CAAC,YAAkC,UAAU,OAAO,SAAS;AAGjF,SAAS,MAAM;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKoB;AAClB,QAAM,OAAO,mBAAmB,UAAU,OAAO,CAAC;AAClD,SAAO,UACL,oBAAC,QAAK,OAAO,OAAO,QAAQ,QACzB,gBACH,IAEA;AAEJ;AAEA,IAAM,SAAS,WAAW,OAAO;AAAA;AAAA,EAE/B,QAAQ;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA,SAAS;AAAA,IACP,GAAG,WAAW;AAAA,IACd,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,gBAAgB;AAAA,EAClB;AACF,CAAC;;;AHgHG,gBAAAC,MAwHA,YAxHA;AA3JJ,IAAM,YAAY;AAkBlB,SAAS,UAAU,SAAyB,MAAqB;AAC/D,SAAO;AAAA,IACL,WAAW,EAAE,iBAAiB,eAAe,aAAa,oBAAoB,aAAa,QAAQ,KAAK;AAAA,IACxG,SAAS,EAAE,iBAAiB,MAAM,aAAa,QAAQ,KAAK;AAAA,IAC5D,OAAO,EAAE,OAAO,QAAQ,KAAK;AAAA,EAC/B;AACF;AAOA,SAAS,eAAe,OAAuB;AAC7C,QAAM,MAAM,MAAM,QAAQ,KAAK;AAC/B,SAAO;AAAA,IACL,WAAW;AAAA,MACT,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb,aAAa,iBAAiB,MAAM,QAAQ,SAAS,MAAM,QAAQ,WAAW,KAAK;AAAA,IACrF;AAAA,IACA,SAAS,EAAE,iBAAiB,MAAM,KAAK,iBAAiB,GAAG,aAAa,MAAM,QAAQ,KAAK,UAAU;AAAA,IACrG,OAAO,EAAE,OAAO,IAAI;AAAA,EACtB;AACF;AAEA,SAAS,SACP,OACA,SACA,OACA,SACA,QACO;AACP,QAAM,OAAO,MAAM,QAAQ,MAAM,iBAAiB;AAClD,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO,UAAU,YAAY,eAAe,KAAK,IAAI,UAAU,SAAS,IAAI;AAAA,IAC9E,KAAK;AACH,aAAO;AAAA,QACL,WAAW,EAAE,iBAAiB,cAAc;AAAA,QAC5C,SAAS,EAAE,iBAAiB,KAAK;AAAA,QACjC,OAAO,EAAE,OAAO,SAAS,OAAO,OAAO,EAAE;AAAA,MAC3C;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,WAAW,EAAE,iBAAiB,SAAS,OAAO,cAAc;AAAA,QAC5D,SAAS,EAAE,iBAAiB,KAAK;AAAA,QACjC,OAAO,EAAE,OAAO,SAAS,OAAO,OAAO,EAAE;AAAA,MAC3C;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,WAAW;AAAA,UACT,iBAAiB,MAAM,MAAM,QAAQ,WAAW,OAAO,sBAAsB;AAAA,UAC7E,aAAa;AAAA,UACb,aAAa,MAAM,MAAM,QAAQ,SAAS,kBAAkB;AAAA,QAC9D;AAAA,QACA,SAAS,EAAE,iBAAiB,MAAM,MAAM,QAAQ,WAAW,OAAO,8BAA8B,EAAE;AAAA,QAClG,OAAO,EAAE,OAAO,QAAQ,KAAK;AAAA,MAC/B;AAAA,IACF,KAAK,YAAY;AACf,YAAM,CAAC,MAAM,EAAE,IAAI,cAAc,OAAO,OAAO,OAAO;AACtD,aAAO;AAAA,QACL,WAAW,EAAE,iBAAiB,KAAK;AAAA,QACnC,SAAS,EAAE,iBAAiB,GAAG;AAAA,QAC/B,OAAO,EAAE,OAAO,OAAO;AAAA,MACzB;AAAA,IACF;AAAA,IACA;AACE,aAAO;AAAA,QACL,WAAW,EAAE,iBAAiB,QAAQ,KAAK;AAAA,QAC3C,SAAS,EAAE,iBAAiB,QAAQ,KAAK;AAAA,QACzC,OAAO,EAAE,OAAO,QAAQ,gBAAgB,OAAO;AAAA,MACjD;AAAA,EACJ;AACF;AAGA,SAAS,cAAc,OAAgB,SAA+B;AACpE,QAAM,SAAS,YAAY,WAAW,YAAY,cAAc,YAAY;AAC5E,SAAO;AAAA,IACL,WAAW,SACP,EAAE,iBAAiB,MAAM,QAAQ,OAAO,oBAAoB,aAAa,EAAE,IAC3E,YAAY,YACV,EAAE,iBAAiB,eAAe,aAAa,GAAG,aAAa,MAAM,QAAQ,OAAO,mBAAmB,IACvG,EAAE,iBAAiB,cAAc;AAAA,IACvC,SAAS,CAAC;AAAA,IACV,OAAO,EAAE,OAAO,MAAM,QAAQ,OAAO,SAAS;AAAA,EAChD;AACF;AAEA,SAAS,UAAU,OAAgB,MAAiB,UAAmB,SAA6B;AAClG,QAAM,UAAU,aAAa,IAAI;AAGjC,QAAM,SAAS,cAAc,MAAM,aAAa,IAAI;AACpD,MAAI,UAAU;AACZ,WAAO,EAAE,SAAS,GAAG,UAAU,QAAQ,WAAW,OAAO;AAAA,EAC3D;AACA,SAAO;AAAA,IACL,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,mBAAmB,QAAQ;AAAA,IAC3B,UAAU;AAAA,IACV,KAAK,UAAU,MAAM,QAAQ,qBAAqB,IAAI;AAAA,EACxD;AACF;AAEA,SAAS,UAAU,SAAoC;AACrD,SAAOC,UAAS,OAAkB;AAAA,IAChC,SAAS,EAAE,WAAW,EAAE;AAAA,IACxB,SAAS;AAAA,MACP,aAAa,QAAQ;AAAA,MACrB,eAAe;AAAA,MACf,cAAc;AAAA,MACd,cAAc,EAAE,OAAO,GAAG,QAAQ,EAAE;AAAA,IACtC;AAAA,EACF,CAAC;AACH;AAGA,SAAS,MAAM,EAAE,OAAO,QAAQ,OAAO,GAAyE;AAC9G,QAAM,WAAiB,cAAO,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE;AAErD,EAAM,iBAAU,MAAM;AACpB,UAAM,OAAO,SAAS;AAAA,MACpB,SAAS,OAAO,UAAU;AAAA,QACxB,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ,OAAO,IAAI,OAAO,IAAI;AAAA,QAC9B,iBAAiBA,UAAS,OAAO;AAAA,MACnC,CAAC;AAAA,IACH;AACA,SAAK,MAAM;AACX,WAAO,MAAM,KAAK,KAAK;AAAA,EACzB,GAAG,CAAC,QAAQ,CAAC;AAEb,SACE,gBAAAD;AAAA,IAAC,SAAS;AAAA,IAAT;AAAA,MACC;AAAA,MACA,eAAW;AAAA,MACX,OAAO;AAAA,QACLE,YAAW;AAAA,QACX;AAAA,UACE,eAAe;AAAA,UACf,cAAc;AAAA,UACd,iBAAiB;AAAA,UACjB,SAAS,SAAS,YAAY,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,GAAG,aAAa,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;AAAA,UAC3F,WAAW;AAAA,YACT,EAAE,OAAO,SAAS,YAAY,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,GAAG,aAAa,CAAC,GAAG,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC,EAAE;AAAA,UACzG;AAAA,QACF;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AA6BO,SAAS,WAAW,SAAkB,KAAyBD,UAAS,IAA2B;AACxG,SAAO,WAAW,OAAO,YAAY,YAAY;AACnD;AAOA,SAAS,WAAW,OAAgB,OAAkC;AACpE,QAAM,EAAE,SAAS,OAAO,MAAM,SAAS,MAAM,UAAU,MAAM,OAAO,QAAQ,UAAU,MAAM,IAAI;AAChG,QAAM,UAAU,cAAc,OAAO,KAAK;AAE1C,QAAM,WAAW,QAAQ,QAAQ,YAAY;AAC7C,QAAM,WAAW,QAAQ,QAAQ,KAAK;AACtC,QAAM,QAAQ,WAAW,cAAc,OAAO,OAAO,IAAI,SAAS,OAAO,SAAS,OAAO,SAAS,MAAM;AAExG,QAAM,SAAS,MAAM,OAAO;AAC5B,QAAM,UAAU,aAAa,IAAI;AACjC,QAAM,WAAW,WAAW,QAAQ,SAAS,IAAI,CAAC;AAClD,QAAM,QAAQ,UAAU,OAAO,MAAM,UAAU,QAAQ,IAAI;AAC3D,QAAM,UAAU,QAAQ,CAAC,WAAW,UAAU,OAAO,IAAI;AAEzD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,MACL,YAAY,MAAM,WAAW;AAAA,MAC7B,UAAU,QAAQ;AAAA,MAClB,YAAY,QAAQ,WAAW;AAAA,MAC/B,YAAY,OAAO,kBAAkB;AAAA,MACrC,WAAW;AAAA,MACX,GAAG,MAAM;AAAA,IACX;AAAA,IACA,WAAW,CAAC,UAAU;AAAA,MACpBE,QAAO;AAAA,MACP,EAAE,cAAc,QAAQ,SAAS;AAAA,MACjC;AAAA,MACA,MAAM;AAAA,MACN,MAAM,WAAW,CAAC,WAAW,MAAM,UAAU;AAAA,MAC7C;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,SAAe,kBAA8B,CAAC,UAAU,QAAQ;AAC3E,QAAM,WAAW,mBAAmB,QAAQ;AAE5C,QAAM,EAAE,SAAS,MAAM,cAAc,OAAO,QAAQ,SAAS,UAAU,SAAS,SAAS,GAAG,OAAO,IAAI;AACvG,QAAM,QAAQ,WAAW;AACzB,QAAM,OAAO,WAAW,OAAO,QAAQ;AAIvC,QAAM,SAAS,cAAc,QAAQ,QAAQ;AAC7C,QAAM,QAAQ,CAAC,WAAmB,YAAY,QAAQ,QAAQ,QAAQ;AACtE,QAAM,OAAO,mBAAmB,MAAM;AAEtC,QAAM,EAAE,SAAS,IAAI,OAAO,IAAI,MAAM,IAAI,MAAM,IAAI,QAAQ,IAAI,UAAU,IAAI,OAAO,KAAK,GAAG,UAAU,IAAI;AAE3G,QAAM,cAAc,CAAC,UAAuC;AAC1D,cAAU,KAAK;AACf,cAAU,KAAK;AAAA,EACjB;AAEA,QAAM,WAAW,OACf,gBAAAH,KAACI,OAAA,EAAK,OAAO,CAACD,QAAO,MAAM,YAAY,OAAO,CAAC,GAAG,QAAQ,MAAM,MAAM,GACnE,gBACH,IACE;AAEJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL,iBAAe,KAAK;AAAA,MACpB,aAAW;AAAA,MACX,cAAY,YAAY,SAAS,QAAQ;AAAA,MACzC,UAAU,KAAK;AAAA,MACf,SAAS;AAAA,MACT,OAAO,KAAK;AAAA,MACZ,QAAQ;AAAA,MACP,GAAG;AAAA,MAEH;AAAA,iBAAS,CAAC,KAAK,WAAW,gBAAAH,KAAC,SAAM,OAAO,KAAK,QAAQ,MAAM,QAAQ,KAAK,QAAQ,QAAQ,MAAM,OAAO,GAAG,IAAK;AAAA,QAC7G,iBAAiB,SAAS,WAAW;AAAA,QACtC,gBAAAA,KAAC,SAAM,SAAkB,OAAO,KAAK,OAAO,QAAQ,MAAM,YAAY,GACnE,UACH;AAAA,QACC,iBAAiB,UAAU,WAAW;AAAA,QACtC,UAAU,gBAAAA,KAAC,WAAQ,OAAO,KAAK,MAAM,OAAiB,QAAQ,MAAM,SAAS,GAAG,IAAK;AAAA;AAAA;AAAA,EACxF;AAEJ,CAAC;AAED,OAAO,cAAc;AAErB,IAAMG,UAASD,YAAW,OAAO;AAAA,EAC/B,MAAM;AAAA,IACJ,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,UAAU;AAAA,EACZ;AAAA,EACA,MAAM;AAAA,IACJ,YAAY;AAAA,IACZ,gBAAgB;AAAA,EAClB;AACF,CAAC;","names":["React","Platform","StyleSheet","View","jsx","Platform","StyleSheet","styles","View"]}