@12-apps/ui 6.35.0 → 6.36.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 (916) hide show
  1. package/dist/_internal/components/data-display/Alert/Alert.js +3 -3
  2. package/dist/_internal/components/data-display/Alert/Alert.styles.js +2 -2
  3. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.js +2 -2
  4. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +5 -5
  5. package/dist/_internal/components/data-display/Avatar/Avatar.animations.js +2 -1
  6. package/dist/_internal/components/data-display/Avatar/Avatar.js +4 -4
  7. package/dist/_internal/components/data-display/Avatar/Avatar.view.js +3 -3
  8. package/dist/_internal/components/data-display/Badge/Badge.animations.js +2 -1
  9. package/dist/_internal/components/data-display/Badge/Badge.js +6 -6
  10. package/dist/_internal/components/data-display/Badge/Badge.styles.js +4 -4
  11. package/dist/_internal/components/data-display/Badge/Badge.variants.js +2 -2
  12. package/dist/_internal/components/data-display/Badge/BadgeContent.js +5 -5
  13. package/dist/_internal/components/data-display/Banner/Banner.js +3 -3
  14. package/dist/_internal/components/data-display/Banner/Banner.styles.js +2 -2
  15. package/dist/_internal/components/data-display/CardKit/CardKebab.js +1 -1
  16. package/dist/_internal/components/data-display/CardKit/card-actions-context.js +4 -4
  17. package/dist/_internal/components/data-display/CardKit/list-card-parts.js +1 -1
  18. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +10 -10
  19. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +7 -7
  20. package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +3 -3
  21. package/dist/_internal/components/data-display/Carousel/Carousel.js +6 -6
  22. package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +2 -2
  23. package/dist/_internal/components/data-display/Carousel/Carousel.slide.js +2 -1
  24. package/dist/_internal/components/data-display/Carousel/Carousel.styles.js +6 -4
  25. package/dist/_internal/components/data-display/Chart/Chart.js +7 -7
  26. package/dist/_internal/components/data-display/Chart/ChartComposables.js +2 -1
  27. package/dist/_internal/components/data-display/Chart/SpecChart.js +8 -8
  28. package/dist/_internal/components/data-display/Chart/chart-axis.js +2 -1
  29. package/dist/_internal/components/data-display/Chart/chart-context.js +4 -4
  30. package/dist/_internal/components/data-display/Chart/chart-internals.js +4 -2
  31. package/dist/_internal/components/data-display/Chart/chart-renderers.js +6 -6
  32. package/dist/_internal/components/data-display/Chip/Chip.js +3 -2
  33. package/dist/_internal/components/data-display/Chip/Chip.styles.js +2 -1
  34. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +3 -2
  35. package/dist/_internal/components/data-display/DataGrid/DataGrid.states.js +2 -1
  36. package/dist/_internal/components/data-display/DataViews/DataViewsBoard.js +2 -2
  37. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +28 -28
  38. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +40 -40
  39. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +1 -1
  40. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +7 -7
  41. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +3 -3
  42. package/dist/_internal/components/data-display/DataViews/base-card.js +5 -5
  43. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +7 -7
  44. package/dist/_internal/components/data-display/DataViews/base-list-card-gutters.js +3 -3
  45. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +3 -3
  46. package/dist/_internal/components/data-display/DataViews/base-list-card.js +9 -9
  47. package/dist/_internal/components/data-display/DataViews/card-surface.js +3 -2
  48. package/dist/_internal/components/data-display/DataViews/data-views-bar-controls.js +1 -1
  49. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +1 -1
  50. package/dist/_internal/components/data-display/DataViews/data-views-columns-tab.js +1 -1
  51. package/dist/_internal/components/data-display/DataViews/data-views-columns.js +3 -3
  52. package/dist/_internal/components/data-display/DataViews/data-views-day-input.js +2 -1
  53. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +5 -5
  54. package/dist/_internal/components/data-display/DataViews/data-views-display-tabs.js +3 -3
  55. package/dist/_internal/components/data-display/DataViews/data-views-drag.js +2 -1
  56. package/dist/_internal/components/data-display/DataViews/data-views-empty.js +2 -2
  57. package/dist/_internal/components/data-display/DataViews/data-views-export.js +2 -2
  58. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +5 -5
  59. package/dist/_internal/components/data-display/DataViews/data-views-glyphs.js +2 -1
  60. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +6 -6
  61. package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +2 -2
  62. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +25 -25
  63. package/dist/_internal/components/data-display/DataViews/data-views-header-row.js +1 -1
  64. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +8 -8
  65. package/dist/_internal/components/data-display/DataViews/data-views-layout-context.js +1 -1
  66. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +5 -5
  67. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +6 -6
  68. package/dist/_internal/components/data-display/DataViews/data-views-number-input.js +2 -1
  69. package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +1 -1
  70. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +4 -4
  71. package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +3 -3
  72. package/dist/_internal/components/data-display/DataViews/data-views-scopes.js +1 -1
  73. package/dist/_internal/components/data-display/DataViews/data-views-search.js +2 -2
  74. package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +1 -1
  75. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +9 -9
  76. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +12 -12
  77. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +8 -8
  78. package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +2 -2
  79. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +1 -1
  80. package/dist/_internal/components/data-display/DataViews/save-view-preview.js +2 -2
  81. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +5 -5
  82. package/dist/_internal/components/data-display/DateTimeDisplay/DateTimeDisplay.js +2 -1
  83. package/dist/_internal/components/data-display/DateTimeDisplay/index.js +2 -1
  84. package/dist/_internal/components/data-display/DescriptionItem/DescriptionItem.js +2 -2
  85. package/dist/_internal/components/data-display/EmptyState/EmptyState.js +2 -1
  86. package/dist/_internal/components/data-display/ErrorState/ErrorState.js +1 -1
  87. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +15 -15
  88. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +13 -13
  89. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +17 -17
  90. package/dist/_internal/components/data-display/FleetMap/FleetRoster.js +2 -1
  91. package/dist/_internal/components/data-display/HoverCard/HoverCard.animations.js +2 -1
  92. package/dist/_internal/components/data-display/HoverCard/HoverCard.content.js +2 -1
  93. package/dist/_internal/components/data-display/HoverCard/HoverCard.js +5 -4
  94. package/dist/_internal/components/data-display/HoverCard/HoverCard.styles.js +3 -2
  95. package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.hooks.js +1 -1
  96. package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.js +4 -4
  97. package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.styles.js +4 -2
  98. package/dist/_internal/components/data-display/LazyImage/LazyImage.hooks.js +2 -1
  99. package/dist/_internal/components/data-display/LazyImage/LazyImage.js +3 -2
  100. package/dist/_internal/components/data-display/Lightbox/Lightbox.constants.js +4 -4
  101. package/dist/_internal/components/data-display/Lightbox/Lightbox.hooks.js +3 -3
  102. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +9 -9
  103. package/dist/_internal/components/data-display/Lightbox/LightboxControls.js +3 -3
  104. package/dist/_internal/components/data-display/Lightbox/LightboxOverlay.js +4 -4
  105. package/dist/_internal/components/data-display/Lightbox/LightboxStage.js +3 -3
  106. package/dist/_internal/components/data-display/Lightbox/LightboxThumbnails.js +3 -3
  107. package/dist/_internal/components/data-display/Lightbox/useLightbox.js +4 -4
  108. package/dist/_internal/components/data-display/LoadingState/LoadingState.js +2 -1
  109. package/dist/_internal/components/data-display/MapPreview/MapControlBar.js +2 -1
  110. package/dist/_internal/components/data-display/MapPreview/MapDecorations.js +3 -3
  111. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +5 -4
  112. package/dist/_internal/components/data-display/MapPreview/MapMarkers.js +3 -3
  113. package/dist/_internal/components/data-display/MapPreview/MapOverlays.js +1 -1
  114. package/dist/_internal/components/data-display/MapPreview/MapPreview.helpers.js +2 -1
  115. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +12 -12
  116. package/dist/_internal/components/data-display/MapPreview/MapSearchBar.js +2 -1
  117. package/dist/_internal/components/data-display/MapPreview/MapTiles.js +3 -2
  118. package/dist/_internal/components/data-display/MapPreview/StaticMapView.js +5 -5
  119. package/dist/_internal/components/data-display/MapPreview/mapSurface.js +4 -3
  120. package/dist/_internal/components/data-display/Popover/Popover.js +2 -1
  121. package/dist/_internal/components/data-display/Progress/Progress.js +3 -3
  122. package/dist/_internal/components/data-display/Progress/Progress.styles.js +2 -2
  123. package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +4 -4
  124. package/dist/_internal/components/data-display/Sheet/Sheet.animations.js +2 -1
  125. package/dist/_internal/components/data-display/Sheet/Sheet.body.js +4 -4
  126. package/dist/_internal/components/data-display/Sheet/Sheet.hooks.js +3 -2
  127. package/dist/_internal/components/data-display/Sheet/Sheet.js +7 -7
  128. package/dist/_internal/components/data-display/Sheet/Sheet.parts.js +3 -2
  129. package/dist/_internal/components/data-display/Sheet/Sheet.styles.js +3 -3
  130. package/dist/_internal/components/data-display/StatCard/StatCard.js +2 -2
  131. package/dist/_internal/components/data-display/Stepper/Stepper.js +2 -2
  132. package/dist/_internal/components/data-display/Table/Table.js +2 -2
  133. package/dist/_internal/components/data-display/Table/Table.styles.js +1 -1
  134. package/dist/_internal/components/data-display/Timeline/Timeline.js +3 -3
  135. package/dist/_internal/components/data-display/Timeline/TimelineRow.js +2 -2
  136. package/dist/_internal/components/data-display/TimingDiagram/TimingDiagram.js +3 -3
  137. package/dist/_internal/components/data-display/TimingDiagram/TimingDiagram.views.js +2 -2
  138. package/dist/_internal/components/data-display/Tooltip/Tooltip.js +2 -2
  139. package/dist/_internal/components/data-display/index.js +87 -87
  140. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +4 -4
  141. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.parts.js +3 -3
  142. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +5 -5
  143. package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +4 -4
  144. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +4 -4
  145. package/dist/_internal/components/feedback/Sonner/Sonner.js +1 -1
  146. package/dist/_internal/components/feedback/Sonner/SonnerToast.js +1 -1
  147. package/dist/_internal/components/feedback/index.js +9 -9
  148. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +1 -1
  149. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +1 -1
  150. package/dist/_internal/components/form/Button/Button.js +1 -1
  151. package/dist/_internal/components/form/Button/Button.styles.js +1 -1
  152. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +1 -1
  153. package/dist/_internal/components/form/CategorySelect/CategoryPanelFoot.js +1 -1
  154. package/dist/_internal/components/form/CategorySelect/CategoryPanelHead.js +1 -1
  155. package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +1 -1
  156. package/dist/_internal/components/form/CategorySelect/CategoryRows.js +1 -1
  157. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +1 -1
  158. package/dist/_internal/components/form/CategorySelect/CategorySelect.styles.js +1 -1
  159. package/dist/_internal/components/form/CategorySelect/CategoryTrigger.js +1 -1
  160. package/dist/_internal/components/form/CepField/CepField.js +1 -1
  161. package/dist/_internal/components/form/Checkbox/Checkbox.js +1 -1
  162. package/dist/_internal/components/form/CodeEditor/CodeEditor.js +1 -1
  163. package/dist/_internal/components/form/Command/Command.js +1 -1
  164. package/dist/_internal/components/form/Command/Command.styles.js +1 -1
  165. package/dist/_internal/components/form/CreatableSelect/CreatableSelect.js +1 -1
  166. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +4 -3
  167. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +6 -6
  168. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +3 -2
  169. package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +4 -3
  170. package/dist/_internal/components/form/InputOTP/InputOTP.js +1 -1
  171. package/dist/_internal/components/form/InputOTP/InputOTP.styles.js +1 -1
  172. package/dist/_internal/components/form/Label/Label.js +1 -1
  173. package/dist/_internal/components/form/Label/Label.styles.js +1 -1
  174. package/dist/_internal/components/form/Menubar/Menubar.item.js +1 -1
  175. package/dist/_internal/components/form/Menubar/Menubar.js +1 -1
  176. package/dist/_internal/components/form/Menubar/Menubar.styles.js +1 -1
  177. package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +1 -1
  178. package/dist/_internal/components/form/PhoneInput/PhoneInput.js +1 -1
  179. package/dist/_internal/components/form/RadioGroup/RadioGroup.js +1 -1
  180. package/dist/_internal/components/form/RadioGroup/RadioGroup.styles.js +1 -1
  181. package/dist/_internal/components/form/RadioGroup/RadioGroup.variants.js +1 -1
  182. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +1 -1
  183. package/dist/_internal/components/form/Slider/Slider.js +1 -1
  184. package/dist/_internal/components/form/Slider/Slider.styles.js +1 -1
  185. package/dist/_internal/components/form/Switch/Switch.js +1 -1
  186. package/dist/_internal/components/form/Switch/Switch.parts.js +1 -1
  187. package/dist/_internal/components/form/Switch/Switch.styles.js +1 -1
  188. package/dist/_internal/components/form/Textarea/Textarea.js +2 -2
  189. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js +2 -2
  190. package/dist/_internal/components/form/Toggle/Toggle.js +1 -1
  191. package/dist/_internal/components/form/Toggle/Toggle.styles.js +1 -1
  192. package/dist/_internal/components/form/ToggleGroup/ToggleGroup.js +1 -1
  193. package/dist/_internal/components/form/index.js +7 -7
  194. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +1 -1
  195. package/dist/_internal/components/form/total-form/Fields/CepField.js +1 -1
  196. package/dist/_internal/components/form/total-form/Fields/SelectField.js +1 -1
  197. package/dist/_internal/components/form/total-form/Fields/TextField.js +1 -1
  198. package/dist/_internal/components/form/total-form/Fields/ToggleField.js +1 -1
  199. package/dist/_internal/components/form/total-form/Fields/index.js +1 -1
  200. package/dist/_internal/components/form/total-form/SubmitButton.js +1 -1
  201. package/dist/_internal/components/index.js +108 -108
  202. package/dist/_internal/components/layout/Box/Box.js +1 -1
  203. package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +1 -1
  204. package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +1 -1
  205. package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +1 -1
  206. package/dist/_internal/components/layout/ContentToolbar/MultiSelectTriggers.js +1 -1
  207. package/dist/_internal/components/layout/ContentToolbar/SavedViewsMenu.js +1 -1
  208. package/dist/_internal/components/layout/ContentToolbar/SortByDropdown.js +1 -1
  209. package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +1 -1
  210. package/dist/_internal/components/layout/Stack/Stack.js +1 -1
  211. package/dist/_internal/components/layout/TableFilter/TableFilter.js +1 -1
  212. package/dist/_internal/components/layout/index.js +1 -1
  213. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +8 -8
  214. package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +1 -1
  215. package/dist/_internal/components/navigation/Breadcrumbs/BreadcrumbEntry.js +3 -3
  216. package/dist/_internal/components/navigation/Breadcrumbs/Breadcrumbs.js +4 -4
  217. package/dist/_internal/components/navigation/Breadcrumbs/Breadcrumbs.styles.js +2 -2
  218. package/dist/_internal/components/navigation/CommandPalette/CommandPalette.js +1 -1
  219. package/dist/_internal/components/navigation/ContextMenu/ContextMenu.js +1 -1
  220. package/dist/_internal/components/navigation/DropdownMenu/DropdownMenu.js +1 -1
  221. package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +5 -5
  222. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +7 -7
  223. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.shell.js +3 -3
  224. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.styles.js +2 -2
  225. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenuItem.js +3 -3
  226. package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +5 -5
  227. package/dist/_internal/components/navigation/Pagination/Pagination.js +1 -1
  228. package/dist/_internal/components/navigation/index.js +17 -17
  229. package/dist/_internal/components/typography/Blockquote/Blockquote.js +1 -1
  230. package/dist/_internal/components/typography/Code/Code.js +1 -1
  231. package/dist/_internal/components/typography/Text/Text.js +1 -1
  232. package/dist/_internal/components/typography/index.js +1 -1
  233. package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.js +1 -1
  234. package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.styles.js +1 -1
  235. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +1 -1
  236. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +1 -1
  237. package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +1 -1
  238. package/dist/_internal/components/utility/index.js +1 -1
  239. package/dist/_internal/icons/Icon.js +1 -1
  240. package/dist/_internal/provider/UiProvider.js +1 -1
  241. package/dist/_internal/provider/mui-bridge.js +1 -1
  242. package/dist/_internal/provider/use-ui-theme.js +1 -1
  243. package/dist/_internal/social-login-button/social-login-button.js +1 -1
  244. package/dist/_internal/user-avatar/user-avatar.js +5 -5
  245. package/dist/charts.js +8 -8
  246. package/dist/{chunk-BNU4RLEC.js → chunk-2FM5SUQV.js} +8 -4
  247. package/dist/chunk-2FM5SUQV.js.map +1 -0
  248. package/dist/{chunk-APT5L7V5.js → chunk-2LIRGFEK.js} +2 -2
  249. package/dist/{chunk-LDDN254Q.js → chunk-2UCLUDEB.js} +2 -2
  250. package/dist/{chunk-6SYFPRTT.js → chunk-343OLRFT.js} +2 -2
  251. package/dist/{chunk-VDGJV7MP.js → chunk-3AQD2EA6.js} +9 -9
  252. package/dist/chunk-3AQD2EA6.js.map +1 -0
  253. package/dist/{chunk-3GQ6PNEM.js → chunk-3GTMGPNQ.js} +20 -5
  254. package/dist/chunk-3GTMGPNQ.js.map +1 -0
  255. package/dist/{chunk-TFZI36UD.js → chunk-3KA6MYIR.js} +4 -3
  256. package/dist/chunk-3KA6MYIR.js.map +1 -0
  257. package/dist/{chunk-5VWYCVXF.js → chunk-3U3H3BZM.js} +6 -3
  258. package/dist/chunk-3U3H3BZM.js.map +1 -0
  259. package/dist/{chunk-H2YBVBPW.js → chunk-3UIDKLML.js} +15 -11
  260. package/dist/chunk-3UIDKLML.js.map +1 -0
  261. package/dist/{chunk-M5BTIIL7.js → chunk-4CHROSWR.js} +15 -14
  262. package/dist/chunk-4CHROSWR.js.map +1 -0
  263. package/dist/{chunk-VR3U4QA5.js → chunk-4CTLEUK3.js} +6 -5
  264. package/dist/chunk-4CTLEUK3.js.map +1 -0
  265. package/dist/{chunk-ACZH2NUW.js → chunk-4NQXHPQR.js} +6 -4
  266. package/dist/chunk-4NQXHPQR.js.map +1 -0
  267. package/dist/{chunk-QTWXVOPT.js → chunk-4OW4O4A2.js} +17 -11
  268. package/dist/chunk-4OW4O4A2.js.map +1 -0
  269. package/dist/{chunk-U2IRCTAR.js → chunk-4WCDMCIS.js} +2 -2
  270. package/dist/{chunk-2F4YEGYG.js → chunk-57FZM6GH.js} +5 -2
  271. package/dist/chunk-57FZM6GH.js.map +1 -0
  272. package/dist/{chunk-E6YBXAZN.js → chunk-5IAVC4BT.js} +6 -6
  273. package/dist/chunk-5IAVC4BT.js.map +1 -0
  274. package/dist/{chunk-OGTTJKHI.js → chunk-5QWQR7XT.js} +4 -4
  275. package/dist/{chunk-DRE6DSJ7.js → chunk-5TJRJSJY.js} +3 -3
  276. package/dist/{chunk-5ZQUJ7LT.js → chunk-5UTAEHSB.js} +5 -2
  277. package/dist/chunk-5UTAEHSB.js.map +1 -0
  278. package/dist/{chunk-XZBCPL4N.js → chunk-5W4BLTDI.js} +2 -2
  279. package/dist/{chunk-Z35J5B6D.js → chunk-62UAI62O.js} +9 -8
  280. package/dist/chunk-62UAI62O.js.map +1 -0
  281. package/dist/{chunk-YG2VQUZO.js → chunk-6BDYC4RA.js} +3 -3
  282. package/dist/{chunk-QHUTSAFG.js → chunk-6CTPDNNX.js} +4 -4
  283. package/dist/{chunk-CU4TF7C7.js → chunk-6GRZ77IS.js} +4 -4
  284. package/dist/{chunk-YLBRXDYH.js → chunk-7EIOXZWL.js} +2 -2
  285. package/dist/{chunk-BD2GGIGS.js → chunk-ADHMNIWS.js} +9 -5
  286. package/dist/chunk-ADHMNIWS.js.map +1 -0
  287. package/dist/{chunk-Y2E73IG2.js → chunk-AJ5SDHX5.js} +4 -4
  288. package/dist/chunk-AJ5SDHX5.js.map +1 -0
  289. package/dist/{chunk-ZHEZISMI.js → chunk-AK2HOD6B.js} +2 -2
  290. package/dist/{chunk-2PWVPTS3.js → chunk-AUHYR7ID.js} +11 -9
  291. package/dist/chunk-AUHYR7ID.js.map +1 -0
  292. package/dist/{chunk-QWHURFJ3.js → chunk-B2VXP2B2.js} +6 -3
  293. package/dist/chunk-B2VXP2B2.js.map +1 -0
  294. package/dist/{chunk-YSKGLU2V.js → chunk-B7BNNSM2.js} +8 -5
  295. package/dist/chunk-B7BNNSM2.js.map +1 -0
  296. package/dist/{chunk-7ZWC5CKA.js → chunk-BAFDSAWY.js} +10 -9
  297. package/dist/chunk-BAFDSAWY.js.map +1 -0
  298. package/dist/{chunk-VZAGBDZ2.js → chunk-BJZOBG24.js} +2 -2
  299. package/dist/{chunk-YDPUBGJ7.js → chunk-BNEWMFVB.js} +10 -6
  300. package/dist/chunk-BNEWMFVB.js.map +1 -0
  301. package/dist/{chunk-ZUQIOWLN.js → chunk-BSYPPO2I.js} +42 -38
  302. package/dist/chunk-BSYPPO2I.js.map +1 -0
  303. package/dist/{chunk-NXX3ZQKO.js → chunk-BYH5GPLT.js} +25 -20
  304. package/dist/chunk-BYH5GPLT.js.map +1 -0
  305. package/dist/{chunk-CS3RKXT5.js → chunk-CHFHILTM.js} +2 -2
  306. package/dist/{chunk-DMYBTD5Y.js → chunk-CPWWMGYR.js} +2 -2
  307. package/dist/{chunk-L4V2LRKH.js → chunk-CSN3F36H.js} +13 -8
  308. package/dist/chunk-CSN3F36H.js.map +1 -0
  309. package/dist/{chunk-XSMMFCMQ.js → chunk-CWDV64TD.js} +3 -3
  310. package/dist/{chunk-IUCTYNIR.js → chunk-CX66M55F.js} +18 -17
  311. package/dist/chunk-CX66M55F.js.map +1 -0
  312. package/dist/{chunk-PGNJCUDA.js → chunk-CZBND7AY.js} +38 -21
  313. package/dist/chunk-CZBND7AY.js.map +1 -0
  314. package/dist/{chunk-73HBIIRB.js → chunk-D2UDM2SU.js} +12 -8
  315. package/dist/chunk-D2UDM2SU.js.map +1 -0
  316. package/dist/{chunk-YU647YW4.js → chunk-DB2ZFZVW.js} +7 -4
  317. package/dist/chunk-DB2ZFZVW.js.map +1 -0
  318. package/dist/{chunk-GUVBR62X.js → chunk-DCJSHYE5.js} +4 -4
  319. package/dist/{chunk-VV7MGILP.js → chunk-DMWSXWCZ.js} +3 -3
  320. package/dist/{chunk-JYRQBZEV.js → chunk-DVAAUWTC.js} +2 -2
  321. package/dist/{chunk-C6NI3FAV.js → chunk-DVGBFT6O.js} +2 -2
  322. package/dist/{chunk-5RP3KXC7.js → chunk-DY4BP5WA.js} +7 -6
  323. package/dist/chunk-DY4BP5WA.js.map +1 -0
  324. package/dist/{chunk-W5ENK5CM.js → chunk-DZNMS2SH.js} +5 -5
  325. package/dist/{chunk-QO6QWBDI.js → chunk-E4TNDTWV.js} +7 -4
  326. package/dist/chunk-E4TNDTWV.js.map +1 -0
  327. package/dist/{chunk-IFSUKWE7.js → chunk-E7T3A4IR.js} +10 -6
  328. package/dist/chunk-E7T3A4IR.js.map +1 -0
  329. package/dist/{chunk-I6EVBLFX.js → chunk-EA2UNEL6.js} +20 -11
  330. package/dist/chunk-EA2UNEL6.js.map +1 -0
  331. package/dist/{chunk-5E3XZAED.js → chunk-EARWC6PD.js} +6 -2
  332. package/dist/chunk-EARWC6PD.js.map +1 -0
  333. package/dist/{chunk-NVNZFT5X.js → chunk-EIYTS5VZ.js} +23 -22
  334. package/dist/chunk-EIYTS5VZ.js.map +1 -0
  335. package/dist/{chunk-GN5EZPSL.js → chunk-EJYJLVPK.js} +37 -29
  336. package/dist/chunk-EJYJLVPK.js.map +1 -0
  337. package/dist/{chunk-F5KEWLZK.js → chunk-FC7NQ6XM.js} +4 -4
  338. package/dist/{chunk-MISZGWO7.js → chunk-FPVYD7BO.js} +13 -9
  339. package/dist/chunk-FPVYD7BO.js.map +1 -0
  340. package/dist/{chunk-NIS523UM.js → chunk-FWPFCK4D.js} +2 -2
  341. package/dist/{chunk-7VJH4FYU.js → chunk-FZ4YTEP2.js} +5 -5
  342. package/dist/chunk-FZ4YTEP2.js.map +1 -0
  343. package/dist/{chunk-UCTJJYVC.js → chunk-G4HBNILE.js} +2 -2
  344. package/dist/{chunk-2B76FIMN.js → chunk-GHTBUJ6E.js} +5 -3
  345. package/dist/chunk-GHTBUJ6E.js.map +1 -0
  346. package/dist/{chunk-5NFPO3YY.js → chunk-GJRKWDRR.js} +9 -4
  347. package/dist/chunk-GJRKWDRR.js.map +1 -0
  348. package/dist/{chunk-VDZQJBAV.js → chunk-GY4NBSCN.js} +5 -2
  349. package/dist/chunk-GY4NBSCN.js.map +1 -0
  350. package/dist/{chunk-57IB5NTM.js → chunk-HB7ISSLK.js} +2 -2
  351. package/dist/{chunk-WR7ELCIL.js → chunk-HCT5ELST.js} +9 -3
  352. package/dist/chunk-HCT5ELST.js.map +1 -0
  353. package/dist/{chunk-6Q5GZUQ5.js → chunk-HGMBY5LP.js} +2 -2
  354. package/dist/{chunk-2AKQPXSJ.js → chunk-HJPPNVCF.js} +2 -2
  355. package/dist/{chunk-MZMGQKT3.js → chunk-HN3PZTUK.js} +10 -6
  356. package/dist/chunk-HN3PZTUK.js.map +1 -0
  357. package/dist/{chunk-JOR6E23V.js → chunk-IGGXKT5B.js} +3 -3
  358. package/dist/{chunk-F52N6ACD.js → chunk-IM4DMKH4.js} +14 -9
  359. package/dist/chunk-IM4DMKH4.js.map +1 -0
  360. package/dist/{chunk-KLMP2BYC.js → chunk-IVJKILIX.js} +2 -2
  361. package/dist/{chunk-X7PVFAYJ.js → chunk-JGRE56GQ.js} +6 -3
  362. package/dist/chunk-JGRE56GQ.js.map +1 -0
  363. package/dist/{chunk-MRB6GROF.js → chunk-JJJM75XF.js} +12 -12
  364. package/dist/chunk-JJJM75XF.js.map +1 -0
  365. package/dist/{chunk-HJWOB62A.js → chunk-JJSZP3TW.js} +4 -4
  366. package/dist/{chunk-AI7NVWIG.js → chunk-JOKWTRWL.js} +2 -2
  367. package/dist/{chunk-AI7NVWIG.js.map → chunk-JOKWTRWL.js.map} +1 -1
  368. package/dist/{chunk-JCJGJX7V.js → chunk-K4EKTMTC.js} +10 -6
  369. package/dist/chunk-K4EKTMTC.js.map +1 -0
  370. package/dist/{chunk-UCA47HM7.js → chunk-KCAW6HRO.js} +2 -2
  371. package/dist/{chunk-7HFGVT3G.js → chunk-KJDBY2KN.js} +31 -27
  372. package/dist/chunk-KJDBY2KN.js.map +1 -0
  373. package/dist/{chunk-LOJK733T.js → chunk-KJK2Q35C.js} +9 -5
  374. package/dist/chunk-KJK2Q35C.js.map +1 -0
  375. package/dist/{chunk-VAGHW3K2.js → chunk-KREWQAEV.js} +9 -4
  376. package/dist/chunk-KREWQAEV.js.map +1 -0
  377. package/dist/{chunk-KE5MX4PI.js → chunk-L3B36HA5.js} +2 -2
  378. package/dist/{chunk-OLZTGVBT.js → chunk-LYVTJLCF.js} +2 -2
  379. package/dist/{chunk-4M34ALEP.js → chunk-M3MHYE2M.js} +7 -8
  380. package/dist/chunk-M3MHYE2M.js.map +1 -0
  381. package/dist/{chunk-2WGMMFGV.js → chunk-M5ZXL52T.js} +15 -14
  382. package/dist/chunk-M5ZXL52T.js.map +1 -0
  383. package/dist/{chunk-C6FRVGMC.js → chunk-M6PWPEAV.js} +10 -7
  384. package/dist/chunk-M6PWPEAV.js.map +1 -0
  385. package/dist/{chunk-WW4N2LRM.js → chunk-MBC55H6M.js} +4 -4
  386. package/dist/{chunk-AATIHNPI.js → chunk-MK4CH4VT.js} +2 -2
  387. package/dist/{chunk-RV4Y4O67.js → chunk-MLQYIJTO.js} +6 -5
  388. package/dist/chunk-MLQYIJTO.js.map +1 -0
  389. package/dist/{chunk-A2CTAEIS.js → chunk-MO47Y26B.js} +24 -23
  390. package/dist/chunk-MO47Y26B.js.map +1 -0
  391. package/dist/{chunk-XRMZMBE3.js → chunk-MTEQEPNY.js} +7 -3
  392. package/dist/chunk-MTEQEPNY.js.map +1 -0
  393. package/dist/{chunk-JWK4GI2I.js → chunk-N2GEKC4J.js} +32 -20
  394. package/dist/chunk-N2GEKC4J.js.map +1 -0
  395. package/dist/{chunk-AJSPLHG4.js → chunk-NNQCWXGY.js} +8 -5
  396. package/dist/chunk-NNQCWXGY.js.map +1 -0
  397. package/dist/{chunk-IDO4EV7T.js → chunk-NR5TW4AH.js} +3 -3
  398. package/dist/{chunk-O26MKGIC.js → chunk-NRIV2CQ2.js} +12 -6
  399. package/dist/chunk-NRIV2CQ2.js.map +1 -0
  400. package/dist/{chunk-6DC5SVHM.js → chunk-NSKQANRY.js} +2 -2
  401. package/dist/{chunk-24NXQG5F.js → chunk-ODFJTEIL.js} +11 -10
  402. package/dist/chunk-ODFJTEIL.js.map +1 -0
  403. package/dist/{chunk-MLBKACV6.js → chunk-OG6LYQ7C.js} +13 -11
  404. package/dist/chunk-OG6LYQ7C.js.map +1 -0
  405. package/dist/{chunk-H6YVO55T.js → chunk-OHZU4IT3.js} +17 -13
  406. package/dist/chunk-OHZU4IT3.js.map +1 -0
  407. package/dist/{chunk-EAE5Z5HL.js → chunk-OJ2XR3WH.js} +2 -2
  408. package/dist/{chunk-BR7RM3WR.js → chunk-OZPLAOI4.js} +2 -2
  409. package/dist/{chunk-DZHN5FFX.js → chunk-PBMCRDZI.js} +7 -6
  410. package/dist/chunk-PBMCRDZI.js.map +1 -0
  411. package/dist/{chunk-ZXSUWFQX.js → chunk-PGPPN63I.js} +8 -5
  412. package/dist/chunk-PGPPN63I.js.map +1 -0
  413. package/dist/{chunk-ZWSS3K4F.js → chunk-PL2AB5HJ.js} +11 -6
  414. package/dist/chunk-PL2AB5HJ.js.map +1 -0
  415. package/dist/{chunk-ZTKLKOOO.js → chunk-POV2KL2P.js} +21 -20
  416. package/dist/chunk-POV2KL2P.js.map +1 -0
  417. package/dist/{chunk-GIRRCEVH.js → chunk-PT2XADGH.js} +4 -4
  418. package/dist/{chunk-5ZTQTJAJ.js → chunk-PWF32ILG.js} +4 -4
  419. package/dist/{chunk-65YAR3OZ.js → chunk-Q2YNXJEL.js} +11 -7
  420. package/dist/chunk-Q2YNXJEL.js.map +1 -0
  421. package/dist/{chunk-DBCITC4P.js → chunk-QB3TVUPD.js} +6 -6
  422. package/dist/{chunk-I2CRLUS7.js → chunk-QIKPGMMO.js} +2 -2
  423. package/dist/{chunk-MXZ43UCQ.js → chunk-QOLIBVGS.js} +3 -3
  424. package/dist/{chunk-TPQVLBTY.js → chunk-R2WMSXQR.js} +3 -3
  425. package/dist/{chunk-ULIM42PE.js → chunk-RIF6L54B.js} +10 -8
  426. package/dist/chunk-RIF6L54B.js.map +1 -0
  427. package/dist/{chunk-M5T3COS2.js → chunk-RIRTW5EU.js} +17 -5
  428. package/dist/chunk-RIRTW5EU.js.map +1 -0
  429. package/dist/{chunk-JHEGDDZQ.js → chunk-RKI3MRKX.js} +6 -3
  430. package/dist/chunk-RKI3MRKX.js.map +1 -0
  431. package/dist/{chunk-SYNMQWT4.js → chunk-RL2UIC4E.js} +7 -4
  432. package/dist/chunk-RL2UIC4E.js.map +1 -0
  433. package/dist/{chunk-RORP6DWR.js → chunk-RZ2C5CAW.js} +13 -12
  434. package/dist/chunk-RZ2C5CAW.js.map +1 -0
  435. package/dist/{chunk-UO7ERXYX.js → chunk-S3D5VBHW.js} +16 -6
  436. package/dist/chunk-S3D5VBHW.js.map +1 -0
  437. package/dist/{chunk-SCRN2RE4.js → chunk-S5UY5U73.js} +1 -2
  438. package/dist/chunk-S5UY5U73.js.map +1 -0
  439. package/dist/{chunk-4V532JF6.js → chunk-SOHQPPYJ.js} +8 -6
  440. package/dist/chunk-SOHQPPYJ.js.map +1 -0
  441. package/dist/{chunk-XREYLKUX.js → chunk-SQYC57ZN.js} +12 -11
  442. package/dist/chunk-SQYC57ZN.js.map +1 -0
  443. package/dist/{chunk-F7HQVKIR.js → chunk-SYVNWXVW.js} +4 -4
  444. package/dist/{chunk-CMTR3WEA.js → chunk-TNQDSTIA.js} +30 -33
  445. package/dist/chunk-TNQDSTIA.js.map +1 -0
  446. package/dist/{chunk-MGC4QOMP.js → chunk-TQ2557I5.js} +1 -1
  447. package/dist/{chunk-C7TCBAVX.js → chunk-TQBRWZA4.js} +2 -2
  448. package/dist/{chunk-56QVP2MU.js → chunk-TQCQCW2P.js} +18 -11
  449. package/dist/chunk-TQCQCW2P.js.map +1 -0
  450. package/dist/{chunk-CZT3AV7I.js → chunk-TRHWA74K.js} +6 -3
  451. package/dist/chunk-TRHWA74K.js.map +1 -0
  452. package/dist/{chunk-EDO2WS5B.js → chunk-TXGB2WSW.js} +7 -4
  453. package/dist/chunk-TXGB2WSW.js.map +1 -0
  454. package/dist/{chunk-NNQLDFKG.js → chunk-TYBZ4XZZ.js} +15 -9
  455. package/dist/chunk-TYBZ4XZZ.js.map +1 -0
  456. package/dist/{chunk-TEUX42YW.js → chunk-TZASFX6G.js} +10 -7
  457. package/dist/chunk-TZASFX6G.js.map +1 -0
  458. package/dist/{chunk-BO2SDMNQ.js → chunk-U4QUDFPJ.js} +2 -2
  459. package/dist/{chunk-AQSX3YH2.js → chunk-UL7L6MFT.js} +18 -10
  460. package/dist/chunk-UL7L6MFT.js.map +1 -0
  461. package/dist/{chunk-SKX4NA6E.js → chunk-V74PXUQN.js} +8 -8
  462. package/dist/{chunk-A2DYU5WN.js → chunk-VIUDWOV6.js} +5 -6
  463. package/dist/chunk-VIUDWOV6.js.map +1 -0
  464. package/dist/{chunk-5ZT4ZIZB.js → chunk-VNOFFVRQ.js} +6 -3
  465. package/dist/chunk-VNOFFVRQ.js.map +1 -0
  466. package/dist/{chunk-UMP5MQ7X.js → chunk-WFAJTO2B.js} +27 -26
  467. package/dist/chunk-WFAJTO2B.js.map +1 -0
  468. package/dist/{chunk-OYP27CYE.js → chunk-WOAXKWAB.js} +2 -2
  469. package/dist/{chunk-W3CLJ7JE.js → chunk-WPA26LXA.js} +4 -4
  470. package/dist/{chunk-2X5OQDPH.js → chunk-WRCLYSTX.js} +7 -4
  471. package/dist/chunk-WRCLYSTX.js.map +1 -0
  472. package/dist/{chunk-X4PS3E3V.js → chunk-X6AIKCAV.js} +8 -5
  473. package/dist/chunk-X6AIKCAV.js.map +1 -0
  474. package/dist/{chunk-KTYZRAB7.js → chunk-XJPJ6ESI.js} +9 -6
  475. package/dist/chunk-XJPJ6ESI.js.map +1 -0
  476. package/dist/{chunk-GVLMG5WQ.js → chunk-XZW2U6KR.js} +9 -9
  477. package/dist/chunk-XZW2U6KR.js.map +1 -0
  478. package/dist/{chunk-LI6OLYUB.js → chunk-YBTC4XNO.js} +2 -2
  479. package/dist/chunk-YLGY3D52.js +62 -0
  480. package/dist/chunk-YLGY3D52.js.map +1 -0
  481. package/dist/{chunk-H3B5PIM3.js → chunk-YYVB7IWQ.js} +19 -11
  482. package/dist/chunk-YYVB7IWQ.js.map +1 -0
  483. package/dist/{chunk-OOSD7363.js → chunk-ZAFFKQQU.js} +6 -6
  484. package/dist/chunk-ZAFFKQQU.js.map +1 -0
  485. package/dist/{chunk-IT7ATXU7.js → chunk-ZHV7TCAC.js} +15 -11
  486. package/dist/chunk-ZHV7TCAC.js.map +1 -0
  487. package/dist/{chunk-KUVOMH5I.js → chunk-ZZ4MMUBY.js} +5 -4
  488. package/dist/chunk-ZZ4MMUBY.js.map +1 -0
  489. package/dist/data-display/Alert.js +3 -3
  490. package/dist/data-display/AlertDialog.js +2 -2
  491. package/dist/data-display/AsyncStateContainer.js +5 -5
  492. package/dist/data-display/Avatar.js +4 -4
  493. package/dist/data-display/Badge.js +6 -6
  494. package/dist/data-display/Banner.js +3 -3
  495. package/dist/data-display/CardKit.js +12 -12
  496. package/dist/data-display/Carousel.js +6 -6
  497. package/dist/data-display/Chart.js +8 -8
  498. package/dist/data-display/Chip.js +3 -2
  499. package/dist/data-display/DataGrid.js +3 -2
  500. package/dist/data-display/DataViews.js +49 -49
  501. package/dist/data-display/DescriptionItem.js +2 -2
  502. package/dist/data-display/EmptyState.js +2 -1
  503. package/dist/data-display/ErrorState.js +1 -1
  504. package/dist/data-display/FleetMap.js +17 -17
  505. package/dist/data-display/HoverCard.js +5 -4
  506. package/dist/data-display/InteractiveTooltip.js +4 -4
  507. package/dist/data-display/LazyImage.js +3 -2
  508. package/dist/data-display/Lightbox.js +9 -9
  509. package/dist/data-display/LoadingState.js +2 -1
  510. package/dist/data-display/MapPreview.js +12 -12
  511. package/dist/data-display/Popover.js +2 -1
  512. package/dist/data-display/Progress.js +3 -3
  513. package/dist/data-display/SectionOnboarding.js +4 -4
  514. package/dist/data-display/Sheet.js +7 -7
  515. package/dist/data-display/StatCard.js +2 -2
  516. package/dist/data-display/Stepper.js +2 -2
  517. package/dist/data-display/Table.js +2 -2
  518. package/dist/data-display/Timeline.js +3 -3
  519. package/dist/data-display/TimingDiagram.js +3 -3
  520. package/dist/data-display/Tooltip.js +2 -2
  521. package/dist/feedback/ConfirmAction.js +6 -6
  522. package/dist/feedback/NotificationStatusNotice.js +4 -4
  523. package/dist/feedback/Sonner.js +1 -1
  524. package/dist/form/AddressAutocomplete.js +1 -1
  525. package/dist/form/Button.js +1 -1
  526. package/dist/form/CategorySelect.js +1 -1
  527. package/dist/form/CepField.js +1 -1
  528. package/dist/form/Checkbox.js +1 -1
  529. package/dist/form/CodeEditor.js +1 -1
  530. package/dist/form/Command.js +1 -1
  531. package/dist/form/CreatableSelect.js +1 -1
  532. package/dist/form/DateRangePicker.js +6 -6
  533. package/dist/form/InputOTP.js +1 -1
  534. package/dist/form/Label.js +1 -1
  535. package/dist/form/Menubar.js +1 -1
  536. package/dist/form/PhoneInput.js +1 -1
  537. package/dist/form/RadioGroup.js +1 -1
  538. package/dist/form/RichTextEditor.js +1 -1
  539. package/dist/form/Slider.js +1 -1
  540. package/dist/form/Switch.js +1 -1
  541. package/dist/form/Textarea.js +2 -2
  542. package/dist/form/Toggle.js +1 -1
  543. package/dist/form/ToggleGroup.js +1 -1
  544. package/dist/form/total-form.js +1 -1
  545. package/dist/icons.js +1 -1
  546. package/dist/layout/Box.js +1 -1
  547. package/dist/layout/ContentToolbar.js +1 -1
  548. package/dist/layout/Stack.js +1 -1
  549. package/dist/layout/TableFilter.js +1 -1
  550. package/dist/navigation/AppHeader.js +8 -8
  551. package/dist/navigation/Breadcrumbs.js +4 -4
  552. package/dist/navigation/CommandPalette.js +1 -1
  553. package/dist/navigation/ContextMenu.js +1 -1
  554. package/dist/navigation/DropdownMenu.js +1 -1
  555. package/dist/navigation/NavigationMenu.js +7 -7
  556. package/dist/navigation/Pagination.js +1 -1
  557. package/dist/provider.js +1 -1
  558. package/dist/social-login-button.js +1 -1
  559. package/dist/tokens.js +7 -7
  560. package/dist/types/components/data-display/Alert/Alert.styles.d.ts +4 -4
  561. package/dist/types/components/data-display/Alert/Alert.styles.d.ts.map +1 -1
  562. package/dist/types/components/data-display/AlertDialog/AlertDialog.d.ts.map +1 -1
  563. package/dist/types/components/data-display/Avatar/Avatar.animations.d.ts +2 -1
  564. package/dist/types/components/data-display/Avatar/Avatar.animations.d.ts.map +1 -1
  565. package/dist/types/components/data-display/Avatar/Avatar.d.ts.map +1 -1
  566. package/dist/types/components/data-display/Avatar/Avatar.view.d.ts.map +1 -1
  567. package/dist/types/components/data-display/Badge/Badge.animations.d.ts +4 -3
  568. package/dist/types/components/data-display/Badge/Badge.animations.d.ts.map +1 -1
  569. package/dist/types/components/data-display/Badge/Badge.styles.d.ts +6 -5
  570. package/dist/types/components/data-display/Badge/Badge.styles.d.ts.map +1 -1
  571. package/dist/types/components/data-display/Badge/BadgeContent.d.ts.map +1 -1
  572. package/dist/types/components/data-display/Banner/Banner.styles.d.ts +1 -1
  573. package/dist/types/components/data-display/Banner/Banner.styles.d.ts.map +1 -1
  574. package/dist/types/components/data-display/Carousel/Carousel.d.ts.map +1 -1
  575. package/dist/types/components/data-display/Carousel/Carousel.parts.d.ts.map +1 -1
  576. package/dist/types/components/data-display/Carousel/Carousel.slide.d.ts.map +1 -1
  577. package/dist/types/components/data-display/Carousel/Carousel.styles.d.ts +14 -2
  578. package/dist/types/components/data-display/Carousel/Carousel.styles.d.ts.map +1 -1
  579. package/dist/types/components/data-display/Chart/ChartComposables.d.ts +3 -1
  580. package/dist/types/components/data-display/Chart/ChartComposables.d.ts.map +1 -1
  581. package/dist/types/components/data-display/Chart/chart-axis.d.ts +9 -3
  582. package/dist/types/components/data-display/Chart/chart-axis.d.ts.map +1 -1
  583. package/dist/types/components/data-display/Chart/chart-context.d.ts.map +1 -1
  584. package/dist/types/components/data-display/Chart/chart-internals.d.ts +5 -1
  585. package/dist/types/components/data-display/Chart/chart-internals.d.ts.map +1 -1
  586. package/dist/types/components/data-display/Chart/chart-renderers.d.ts.map +1 -1
  587. package/dist/types/components/data-display/Chip/Chip.styles.d.ts.map +1 -1
  588. package/dist/types/components/data-display/DataGrid/DataGrid.states.d.ts.map +1 -1
  589. package/dist/types/components/data-display/DataViews/DataViewsBoard.d.ts.map +1 -1
  590. package/dist/types/components/data-display/DataViews/base-card.d.ts.map +1 -1
  591. package/dist/types/components/data-display/DataViews/base-list-card-geometry.d.ts +21 -17
  592. package/dist/types/components/data-display/DataViews/base-list-card-geometry.d.ts.map +1 -1
  593. package/dist/types/components/data-display/DataViews/base-list-card-gutters.d.ts.map +1 -1
  594. package/dist/types/components/data-display/DataViews/base-list-card-slots.d.ts.map +1 -1
  595. package/dist/types/components/data-display/DataViews/card-surface.d.ts +1 -1
  596. package/dist/types/components/data-display/DataViews/card-surface.d.ts.map +1 -1
  597. package/dist/types/components/data-display/DataViews/data-views-day-input.d.ts.map +1 -1
  598. package/dist/types/components/data-display/DataViews/data-views-display-panel.d.ts.map +1 -1
  599. package/dist/types/components/data-display/DataViews/data-views-drag.d.ts.map +1 -1
  600. package/dist/types/components/data-display/DataViews/data-views-empty.d.ts.map +1 -1
  601. package/dist/types/components/data-display/DataViews/data-views-export.d.ts.map +1 -1
  602. package/dist/types/components/data-display/DataViews/data-views-glyphs.d.ts +3 -2
  603. package/dist/types/components/data-display/DataViews/data-views-glyphs.d.ts.map +1 -1
  604. package/dist/types/components/data-display/DataViews/data-views-grid-helpers.d.ts +2 -1
  605. package/dist/types/components/data-display/DataViews/data-views-grid-helpers.d.ts.map +1 -1
  606. package/dist/types/components/data-display/DataViews/data-views-more-filters.d.ts.map +1 -1
  607. package/dist/types/components/data-display/DataViews/data-views-number-input.d.ts.map +1 -1
  608. package/dist/types/components/data-display/DataViews/data-views-scopes.d.ts.map +1 -1
  609. package/dist/types/components/data-display/DataViews/data-views-search.d.ts.map +1 -1
  610. package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts.map +1 -1
  611. package/dist/types/components/data-display/DataViews/save-view-preview.d.ts.map +1 -1
  612. package/dist/types/components/data-display/DateTimeDisplay/DateTimeDisplay.d.ts.map +1 -1
  613. package/dist/types/components/data-display/DescriptionItem/DescriptionItem.d.ts.map +1 -1
  614. package/dist/types/components/data-display/EmptyState/EmptyState.d.ts.map +1 -1
  615. package/dist/types/components/data-display/FleetMap/FleetBody.d.ts.map +1 -1
  616. package/dist/types/components/data-display/FleetMap/FleetMap.d.ts.map +1 -1
  617. package/dist/types/components/data-display/FleetMap/FleetRoster.d.ts.map +1 -1
  618. package/dist/types/components/data-display/HoverCard/HoverCard.animations.d.ts +6 -5
  619. package/dist/types/components/data-display/HoverCard/HoverCard.animations.d.ts.map +1 -1
  620. package/dist/types/components/data-display/HoverCard/HoverCard.content.d.ts.map +1 -1
  621. package/dist/types/components/data-display/HoverCard/HoverCard.d.ts.map +1 -1
  622. package/dist/types/components/data-display/HoverCard/HoverCard.styles.d.ts.map +1 -1
  623. package/dist/types/components/data-display/InteractiveTooltip/InteractiveTooltip.d.ts.map +1 -1
  624. package/dist/types/components/data-display/InteractiveTooltip/InteractiveTooltip.hooks.d.ts +1 -1
  625. package/dist/types/components/data-display/InteractiveTooltip/InteractiveTooltip.hooks.d.ts.map +1 -1
  626. package/dist/types/components/data-display/InteractiveTooltip/InteractiveTooltip.styles.d.ts +6 -1
  627. package/dist/types/components/data-display/InteractiveTooltip/InteractiveTooltip.styles.d.ts.map +1 -1
  628. package/dist/types/components/data-display/LazyImage/LazyImage.d.ts.map +1 -1
  629. package/dist/types/components/data-display/LazyImage/LazyImage.hooks.d.ts +1 -1
  630. package/dist/types/components/data-display/LazyImage/LazyImage.hooks.d.ts.map +1 -1
  631. package/dist/types/components/data-display/Lightbox/Lightbox.constants.d.ts +5 -1
  632. package/dist/types/components/data-display/Lightbox/Lightbox.constants.d.ts.map +1 -1
  633. package/dist/types/components/data-display/Lightbox/Lightbox.d.ts.map +1 -1
  634. package/dist/types/components/data-display/Lightbox/Lightbox.hooks.d.ts.map +1 -1
  635. package/dist/types/components/data-display/Lightbox/LightboxControls.d.ts.map +1 -1
  636. package/dist/types/components/data-display/Lightbox/LightboxStage.d.ts.map +1 -1
  637. package/dist/types/components/data-display/Lightbox/LightboxThumbnails.d.ts.map +1 -1
  638. package/dist/types/components/data-display/LoadingState/LoadingState.d.ts.map +1 -1
  639. package/dist/types/components/data-display/MapPreview/MapControlBar.d.ts.map +1 -1
  640. package/dist/types/components/data-display/MapPreview/MapLayers.d.ts.map +1 -1
  641. package/dist/types/components/data-display/MapPreview/MapOverlays.d.ts +5 -2
  642. package/dist/types/components/data-display/MapPreview/MapOverlays.d.ts.map +1 -1
  643. package/dist/types/components/data-display/MapPreview/MapPreview.d.ts.map +1 -1
  644. package/dist/types/components/data-display/MapPreview/MapPreview.helpers.d.ts +1 -1
  645. package/dist/types/components/data-display/MapPreview/MapPreview.helpers.d.ts.map +1 -1
  646. package/dist/types/components/data-display/MapPreview/MapSearchBar.d.ts.map +1 -1
  647. package/dist/types/components/data-display/MapPreview/mapSurface.d.ts +2 -2
  648. package/dist/types/components/data-display/MapPreview/mapSurface.d.ts.map +1 -1
  649. package/dist/types/components/data-display/Popover/Popover.d.ts.map +1 -1
  650. package/dist/types/components/data-display/Progress/Progress.d.ts.map +1 -1
  651. package/dist/types/components/data-display/Progress/Progress.styles.d.ts +9 -7
  652. package/dist/types/components/data-display/Progress/Progress.styles.d.ts.map +1 -1
  653. package/dist/types/components/data-display/Sheet/Sheet.animations.d.ts +4 -3
  654. package/dist/types/components/data-display/Sheet/Sheet.animations.d.ts.map +1 -1
  655. package/dist/types/components/data-display/Sheet/Sheet.body.d.ts.map +1 -1
  656. package/dist/types/components/data-display/Sheet/Sheet.parts.d.ts.map +1 -1
  657. package/dist/types/components/data-display/Sheet/Sheet.styles.d.ts.map +1 -1
  658. package/dist/types/components/data-display/StatCard/StatCard.d.ts.map +1 -1
  659. package/dist/types/components/data-display/Table/Table.d.ts.map +1 -1
  660. package/dist/types/components/data-display/Table/Table.styles.d.ts.map +1 -1
  661. package/dist/types/components/data-display/Timeline/Timeline.d.ts.map +1 -1
  662. package/dist/types/components/data-display/Timeline/TimelineRow.d.ts.map +1 -1
  663. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.d.ts.map +1 -1
  664. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.views.d.ts +2 -1
  665. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.views.d.ts.map +1 -1
  666. package/dist/types/components/data-display/Tooltip/Tooltip.d.ts.map +1 -1
  667. package/dist/typography/Blockquote.js +1 -1
  668. package/dist/typography/Code.js +1 -1
  669. package/dist/typography/Text.js +1 -1
  670. package/dist/user-avatar.js +5 -5
  671. package/dist/utility/AnimatedIcon.js +1 -1
  672. package/dist/utility/WorkflowStep.js +1 -1
  673. package/package.json +1 -1
  674. package/src/components/data-display/Alert/Alert.styles.tsx +22 -21
  675. package/src/components/data-display/Alert/Alert.tsx +8 -8
  676. package/src/components/data-display/AlertDialog/AlertDialog.tsx +12 -10
  677. package/src/components/data-display/Avatar/Avatar.animations.ts +5 -2
  678. package/src/components/data-display/Avatar/Avatar.tsx +4 -3
  679. package/src/components/data-display/Avatar/Avatar.view.tsx +31 -37
  680. package/src/components/data-display/Badge/Badge.animations.ts +13 -10
  681. package/src/components/data-display/Badge/Badge.styles.ts +30 -40
  682. package/src/components/data-display/Badge/Badge.variants.ts +13 -13
  683. package/src/components/data-display/Badge/BadgeContent.tsx +10 -4
  684. package/src/components/data-display/Banner/Banner.styles.ts +8 -8
  685. package/src/components/data-display/Banner/Banner.tsx +4 -4
  686. package/src/components/data-display/CardKit/list-card-parts.tsx +1 -1
  687. package/src/components/data-display/Carousel/Carousel.parts.tsx +13 -11
  688. package/src/components/data-display/Carousel/Carousel.slide.tsx +3 -2
  689. package/src/components/data-display/Carousel/Carousel.styles.ts +34 -16
  690. package/src/components/data-display/Carousel/Carousel.tsx +2 -3
  691. package/src/components/data-display/Chart/Chart.tsx +4 -4
  692. package/src/components/data-display/Chart/ChartComposables.tsx +16 -5
  693. package/src/components/data-display/Chart/chart-axis.ts +13 -9
  694. package/src/components/data-display/Chart/chart-context.ts +17 -2
  695. package/src/components/data-display/Chart/chart-internals.ts +30 -13
  696. package/src/components/data-display/Chart/chart-renderers.tsx +2 -1
  697. package/src/components/data-display/Chip/Chip.styles.tsx +4 -3
  698. package/src/components/data-display/DataGrid/DataGrid.states.tsx +3 -1
  699. package/src/components/data-display/DataViews/DataViewsBoard.tsx +16 -8
  700. package/src/components/data-display/DataViews/base-card.tsx +12 -11
  701. package/src/components/data-display/DataViews/base-list-card-geometry.tsx +28 -19
  702. package/src/components/data-display/DataViews/base-list-card-gutters.tsx +2 -1
  703. package/src/components/data-display/DataViews/base-list-card-slots.tsx +13 -11
  704. package/src/components/data-display/DataViews/card-surface.ts +19 -18
  705. package/src/components/data-display/DataViews/data-views-day-input.tsx +2 -1
  706. package/src/components/data-display/DataViews/data-views-display-panel.tsx +5 -4
  707. package/src/components/data-display/DataViews/data-views-display-tabs.tsx +6 -6
  708. package/src/components/data-display/DataViews/data-views-drag.tsx +7 -5
  709. package/src/components/data-display/DataViews/data-views-empty.tsx +2 -1
  710. package/src/components/data-display/DataViews/data-views-export.tsx +5 -3
  711. package/src/components/data-display/DataViews/data-views-glyphs.tsx +17 -14
  712. package/src/components/data-display/DataViews/data-views-grid-helpers.tsx +8 -5
  713. package/src/components/data-display/DataViews/data-views-more-filters.tsx +5 -4
  714. package/src/components/data-display/DataViews/data-views-number-input.tsx +2 -1
  715. package/src/components/data-display/DataViews/data-views-range-pill.tsx +1 -1
  716. package/src/components/data-display/DataViews/data-views-scopes.tsx +12 -6
  717. package/src/components/data-display/DataViews/data-views-search.tsx +9 -8
  718. package/src/components/data-display/DataViews/data-views-toolbar.tsx +2 -1
  719. package/src/components/data-display/DataViews/data-views-view-nav.tsx +4 -4
  720. package/src/components/data-display/DataViews/save-view-preview.tsx +3 -2
  721. package/src/components/data-display/DateTimeDisplay/DateTimeDisplay.tsx +4 -3
  722. package/src/components/data-display/DescriptionItem/DescriptionItem.tsx +6 -3
  723. package/src/components/data-display/EmptyState/EmptyState.tsx +6 -5
  724. package/src/components/data-display/ErrorState/ErrorState.tsx +6 -6
  725. package/src/components/data-display/FleetMap/FleetBody.tsx +4 -1
  726. package/src/components/data-display/FleetMap/FleetMap.tsx +6 -4
  727. package/src/components/data-display/FleetMap/FleetRoster.tsx +7 -5
  728. package/src/components/data-display/HoverCard/HoverCard.animations.ts +13 -11
  729. package/src/components/data-display/HoverCard/HoverCard.content.tsx +8 -5
  730. package/src/components/data-display/HoverCard/HoverCard.styles.ts +40 -38
  731. package/src/components/data-display/HoverCard/HoverCard.tsx +19 -8
  732. package/src/components/data-display/InteractiveTooltip/InteractiveTooltip.hooks.ts +2 -2
  733. package/src/components/data-display/InteractiveTooltip/InteractiveTooltip.styles.ts +25 -12
  734. package/src/components/data-display/InteractiveTooltip/InteractiveTooltip.tsx +3 -2
  735. package/src/components/data-display/LazyImage/LazyImage.hooks.ts +8 -3
  736. package/src/components/data-display/LazyImage/LazyImage.tsx +48 -23
  737. package/src/components/data-display/Lightbox/Lightbox.constants.ts +7 -2
  738. package/src/components/data-display/Lightbox/Lightbox.hooks.ts +7 -4
  739. package/src/components/data-display/Lightbox/Lightbox.tsx +3 -2
  740. package/src/components/data-display/Lightbox/LightboxControls.tsx +6 -5
  741. package/src/components/data-display/Lightbox/LightboxStage.tsx +30 -18
  742. package/src/components/data-display/Lightbox/LightboxThumbnails.tsx +10 -8
  743. package/src/components/data-display/LoadingState/LoadingState.tsx +4 -3
  744. package/src/components/data-display/MapPreview/MapControlBar.tsx +3 -2
  745. package/src/components/data-display/MapPreview/MapDecorations.tsx +12 -12
  746. package/src/components/data-display/MapPreview/MapLayers.tsx +1 -2
  747. package/src/components/data-display/MapPreview/MapMarkers.tsx +8 -8
  748. package/src/components/data-display/MapPreview/MapOverlays.tsx +8 -5
  749. package/src/components/data-display/MapPreview/MapPreview.helpers.ts +3 -4
  750. package/src/components/data-display/MapPreview/MapPreview.tsx +3 -1
  751. package/src/components/data-display/MapPreview/MapSearchBar.tsx +4 -3
  752. package/src/components/data-display/MapPreview/mapSurface.ts +6 -4
  753. package/src/components/data-display/Popover/Popover.tsx +23 -11
  754. package/src/components/data-display/Progress/Progress.styles.ts +20 -11
  755. package/src/components/data-display/Progress/Progress.tsx +12 -9
  756. package/src/components/data-display/Sheet/Sheet.animations.ts +11 -9
  757. package/src/components/data-display/Sheet/Sheet.body.tsx +2 -1
  758. package/src/components/data-display/Sheet/Sheet.parts.tsx +8 -7
  759. package/src/components/data-display/Sheet/Sheet.styles.ts +35 -30
  760. package/src/components/data-display/StatCard/StatCard.tsx +4 -3
  761. package/src/components/data-display/Stepper/Stepper.tsx +17 -17
  762. package/src/components/data-display/Table/Table.styles.ts +21 -20
  763. package/src/components/data-display/Table/Table.tsx +26 -16
  764. package/src/components/data-display/Timeline/Timeline.tsx +4 -3
  765. package/src/components/data-display/Timeline/TimelineRow.tsx +23 -22
  766. package/src/components/data-display/TimingDiagram/TimingDiagram.tsx +8 -7
  767. package/src/components/data-display/TimingDiagram/TimingDiagram.views.tsx +29 -28
  768. package/src/components/data-display/Tooltip/Tooltip.tsx +23 -10
  769. package/dist/chunk-24NXQG5F.js.map +0 -1
  770. package/dist/chunk-2B76FIMN.js.map +0 -1
  771. package/dist/chunk-2F4YEGYG.js.map +0 -1
  772. package/dist/chunk-2PWVPTS3.js.map +0 -1
  773. package/dist/chunk-2WGMMFGV.js.map +0 -1
  774. package/dist/chunk-2X5OQDPH.js.map +0 -1
  775. package/dist/chunk-3GQ6PNEM.js.map +0 -1
  776. package/dist/chunk-4M34ALEP.js.map +0 -1
  777. package/dist/chunk-4V532JF6.js.map +0 -1
  778. package/dist/chunk-56QVP2MU.js.map +0 -1
  779. package/dist/chunk-5E3XZAED.js.map +0 -1
  780. package/dist/chunk-5NFPO3YY.js.map +0 -1
  781. package/dist/chunk-5RP3KXC7.js.map +0 -1
  782. package/dist/chunk-5VWYCVXF.js.map +0 -1
  783. package/dist/chunk-5ZQUJ7LT.js.map +0 -1
  784. package/dist/chunk-5ZT4ZIZB.js.map +0 -1
  785. package/dist/chunk-65YAR3OZ.js.map +0 -1
  786. package/dist/chunk-73HBIIRB.js.map +0 -1
  787. package/dist/chunk-7HFGVT3G.js.map +0 -1
  788. package/dist/chunk-7VJH4FYU.js.map +0 -1
  789. package/dist/chunk-7ZWC5CKA.js.map +0 -1
  790. package/dist/chunk-A2CTAEIS.js.map +0 -1
  791. package/dist/chunk-A2DYU5WN.js.map +0 -1
  792. package/dist/chunk-ACZH2NUW.js.map +0 -1
  793. package/dist/chunk-AJSPLHG4.js.map +0 -1
  794. package/dist/chunk-AQSX3YH2.js.map +0 -1
  795. package/dist/chunk-BD2GGIGS.js.map +0 -1
  796. package/dist/chunk-BNU4RLEC.js.map +0 -1
  797. package/dist/chunk-C6FRVGMC.js.map +0 -1
  798. package/dist/chunk-CMTR3WEA.js.map +0 -1
  799. package/dist/chunk-CZT3AV7I.js.map +0 -1
  800. package/dist/chunk-DZHN5FFX.js.map +0 -1
  801. package/dist/chunk-E6YBXAZN.js.map +0 -1
  802. package/dist/chunk-EDO2WS5B.js.map +0 -1
  803. package/dist/chunk-F52N6ACD.js.map +0 -1
  804. package/dist/chunk-GN5EZPSL.js.map +0 -1
  805. package/dist/chunk-GVLMG5WQ.js.map +0 -1
  806. package/dist/chunk-H2YBVBPW.js.map +0 -1
  807. package/dist/chunk-H3B5PIM3.js.map +0 -1
  808. package/dist/chunk-H6YVO55T.js.map +0 -1
  809. package/dist/chunk-I6EVBLFX.js.map +0 -1
  810. package/dist/chunk-IFSUKWE7.js.map +0 -1
  811. package/dist/chunk-IT7ATXU7.js.map +0 -1
  812. package/dist/chunk-IUCTYNIR.js.map +0 -1
  813. package/dist/chunk-JCJGJX7V.js.map +0 -1
  814. package/dist/chunk-JHEGDDZQ.js.map +0 -1
  815. package/dist/chunk-JWK4GI2I.js.map +0 -1
  816. package/dist/chunk-KTYZRAB7.js.map +0 -1
  817. package/dist/chunk-KUVOMH5I.js.map +0 -1
  818. package/dist/chunk-L4V2LRKH.js.map +0 -1
  819. package/dist/chunk-LOJK733T.js.map +0 -1
  820. package/dist/chunk-M5BTIIL7.js.map +0 -1
  821. package/dist/chunk-M5T3COS2.js.map +0 -1
  822. package/dist/chunk-MISZGWO7.js.map +0 -1
  823. package/dist/chunk-MLBKACV6.js.map +0 -1
  824. package/dist/chunk-MRB6GROF.js.map +0 -1
  825. package/dist/chunk-MZMGQKT3.js.map +0 -1
  826. package/dist/chunk-NNQLDFKG.js.map +0 -1
  827. package/dist/chunk-NVNZFT5X.js.map +0 -1
  828. package/dist/chunk-NXX3ZQKO.js.map +0 -1
  829. package/dist/chunk-O26MKGIC.js.map +0 -1
  830. package/dist/chunk-OOSD7363.js.map +0 -1
  831. package/dist/chunk-PGNJCUDA.js.map +0 -1
  832. package/dist/chunk-QO6QWBDI.js.map +0 -1
  833. package/dist/chunk-QTWXVOPT.js.map +0 -1
  834. package/dist/chunk-QWHURFJ3.js.map +0 -1
  835. package/dist/chunk-RORP6DWR.js.map +0 -1
  836. package/dist/chunk-RV4Y4O67.js.map +0 -1
  837. package/dist/chunk-SCRN2RE4.js.map +0 -1
  838. package/dist/chunk-SNR537TI.js +0 -59
  839. package/dist/chunk-SNR537TI.js.map +0 -1
  840. package/dist/chunk-SYNMQWT4.js.map +0 -1
  841. package/dist/chunk-TEUX42YW.js.map +0 -1
  842. package/dist/chunk-TFZI36UD.js.map +0 -1
  843. package/dist/chunk-ULIM42PE.js.map +0 -1
  844. package/dist/chunk-UMP5MQ7X.js.map +0 -1
  845. package/dist/chunk-UO7ERXYX.js.map +0 -1
  846. package/dist/chunk-VAGHW3K2.js.map +0 -1
  847. package/dist/chunk-VDGJV7MP.js.map +0 -1
  848. package/dist/chunk-VDZQJBAV.js.map +0 -1
  849. package/dist/chunk-VR3U4QA5.js.map +0 -1
  850. package/dist/chunk-WR7ELCIL.js.map +0 -1
  851. package/dist/chunk-X4PS3E3V.js.map +0 -1
  852. package/dist/chunk-X7PVFAYJ.js.map +0 -1
  853. package/dist/chunk-XREYLKUX.js.map +0 -1
  854. package/dist/chunk-XRMZMBE3.js.map +0 -1
  855. package/dist/chunk-Y2E73IG2.js.map +0 -1
  856. package/dist/chunk-YDPUBGJ7.js.map +0 -1
  857. package/dist/chunk-YSKGLU2V.js.map +0 -1
  858. package/dist/chunk-YU647YW4.js.map +0 -1
  859. package/dist/chunk-Z35J5B6D.js.map +0 -1
  860. package/dist/chunk-ZTKLKOOO.js.map +0 -1
  861. package/dist/chunk-ZUQIOWLN.js.map +0 -1
  862. package/dist/chunk-ZWSS3K4F.js.map +0 -1
  863. package/dist/chunk-ZXSUWFQX.js.map +0 -1
  864. /package/dist/{chunk-APT5L7V5.js.map → chunk-2LIRGFEK.js.map} +0 -0
  865. /package/dist/{chunk-LDDN254Q.js.map → chunk-2UCLUDEB.js.map} +0 -0
  866. /package/dist/{chunk-6SYFPRTT.js.map → chunk-343OLRFT.js.map} +0 -0
  867. /package/dist/{chunk-U2IRCTAR.js.map → chunk-4WCDMCIS.js.map} +0 -0
  868. /package/dist/{chunk-OGTTJKHI.js.map → chunk-5QWQR7XT.js.map} +0 -0
  869. /package/dist/{chunk-DRE6DSJ7.js.map → chunk-5TJRJSJY.js.map} +0 -0
  870. /package/dist/{chunk-XZBCPL4N.js.map → chunk-5W4BLTDI.js.map} +0 -0
  871. /package/dist/{chunk-YG2VQUZO.js.map → chunk-6BDYC4RA.js.map} +0 -0
  872. /package/dist/{chunk-QHUTSAFG.js.map → chunk-6CTPDNNX.js.map} +0 -0
  873. /package/dist/{chunk-CU4TF7C7.js.map → chunk-6GRZ77IS.js.map} +0 -0
  874. /package/dist/{chunk-YLBRXDYH.js.map → chunk-7EIOXZWL.js.map} +0 -0
  875. /package/dist/{chunk-ZHEZISMI.js.map → chunk-AK2HOD6B.js.map} +0 -0
  876. /package/dist/{chunk-VZAGBDZ2.js.map → chunk-BJZOBG24.js.map} +0 -0
  877. /package/dist/{chunk-CS3RKXT5.js.map → chunk-CHFHILTM.js.map} +0 -0
  878. /package/dist/{chunk-DMYBTD5Y.js.map → chunk-CPWWMGYR.js.map} +0 -0
  879. /package/dist/{chunk-XSMMFCMQ.js.map → chunk-CWDV64TD.js.map} +0 -0
  880. /package/dist/{chunk-GUVBR62X.js.map → chunk-DCJSHYE5.js.map} +0 -0
  881. /package/dist/{chunk-VV7MGILP.js.map → chunk-DMWSXWCZ.js.map} +0 -0
  882. /package/dist/{chunk-JYRQBZEV.js.map → chunk-DVAAUWTC.js.map} +0 -0
  883. /package/dist/{chunk-C6NI3FAV.js.map → chunk-DVGBFT6O.js.map} +0 -0
  884. /package/dist/{chunk-W5ENK5CM.js.map → chunk-DZNMS2SH.js.map} +0 -0
  885. /package/dist/{chunk-F5KEWLZK.js.map → chunk-FC7NQ6XM.js.map} +0 -0
  886. /package/dist/{chunk-NIS523UM.js.map → chunk-FWPFCK4D.js.map} +0 -0
  887. /package/dist/{chunk-UCTJJYVC.js.map → chunk-G4HBNILE.js.map} +0 -0
  888. /package/dist/{chunk-57IB5NTM.js.map → chunk-HB7ISSLK.js.map} +0 -0
  889. /package/dist/{chunk-6Q5GZUQ5.js.map → chunk-HGMBY5LP.js.map} +0 -0
  890. /package/dist/{chunk-2AKQPXSJ.js.map → chunk-HJPPNVCF.js.map} +0 -0
  891. /package/dist/{chunk-JOR6E23V.js.map → chunk-IGGXKT5B.js.map} +0 -0
  892. /package/dist/{chunk-KLMP2BYC.js.map → chunk-IVJKILIX.js.map} +0 -0
  893. /package/dist/{chunk-HJWOB62A.js.map → chunk-JJSZP3TW.js.map} +0 -0
  894. /package/dist/{chunk-UCA47HM7.js.map → chunk-KCAW6HRO.js.map} +0 -0
  895. /package/dist/{chunk-KE5MX4PI.js.map → chunk-L3B36HA5.js.map} +0 -0
  896. /package/dist/{chunk-OLZTGVBT.js.map → chunk-LYVTJLCF.js.map} +0 -0
  897. /package/dist/{chunk-WW4N2LRM.js.map → chunk-MBC55H6M.js.map} +0 -0
  898. /package/dist/{chunk-AATIHNPI.js.map → chunk-MK4CH4VT.js.map} +0 -0
  899. /package/dist/{chunk-IDO4EV7T.js.map → chunk-NR5TW4AH.js.map} +0 -0
  900. /package/dist/{chunk-6DC5SVHM.js.map → chunk-NSKQANRY.js.map} +0 -0
  901. /package/dist/{chunk-EAE5Z5HL.js.map → chunk-OJ2XR3WH.js.map} +0 -0
  902. /package/dist/{chunk-BR7RM3WR.js.map → chunk-OZPLAOI4.js.map} +0 -0
  903. /package/dist/{chunk-GIRRCEVH.js.map → chunk-PT2XADGH.js.map} +0 -0
  904. /package/dist/{chunk-5ZTQTJAJ.js.map → chunk-PWF32ILG.js.map} +0 -0
  905. /package/dist/{chunk-DBCITC4P.js.map → chunk-QB3TVUPD.js.map} +0 -0
  906. /package/dist/{chunk-I2CRLUS7.js.map → chunk-QIKPGMMO.js.map} +0 -0
  907. /package/dist/{chunk-MXZ43UCQ.js.map → chunk-QOLIBVGS.js.map} +0 -0
  908. /package/dist/{chunk-TPQVLBTY.js.map → chunk-R2WMSXQR.js.map} +0 -0
  909. /package/dist/{chunk-F7HQVKIR.js.map → chunk-SYVNWXVW.js.map} +0 -0
  910. /package/dist/{chunk-MGC4QOMP.js.map → chunk-TQ2557I5.js.map} +0 -0
  911. /package/dist/{chunk-C7TCBAVX.js.map → chunk-TQBRWZA4.js.map} +0 -0
  912. /package/dist/{chunk-BO2SDMNQ.js.map → chunk-U4QUDFPJ.js.map} +0 -0
  913. /package/dist/{chunk-SKX4NA6E.js.map → chunk-V74PXUQN.js.map} +0 -0
  914. /package/dist/{chunk-OYP27CYE.js.map → chunk-WOAXKWAB.js.map} +0 -0
  915. /package/dist/{chunk-W3CLJ7JE.js.map → chunk-WPA26LXA.js.map} +0 -0
  916. /package/dist/{chunk-LI6OLYUB.js.map → chunk-YBTC4XNO.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/StatCard/StatCard.tsx"],"sourcesContent":["import ArrowDownwardIcon from '@mui/icons-material/ArrowDownward';\nimport ArrowUpwardIcon from '@mui/icons-material/ArrowUpward';\nimport RemoveIcon from '@mui/icons-material/Remove';\nimport Box from '@mui/material/Box/index.js';\nimport Stack from '@mui/material/Stack/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { useTheme, type Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { Skeleton } from '../../layout/Skeleton/Skeleton';\n\nimport type {\n StatCardDelta,\n StatCardDeltaDirection,\n StatCardDeltaTone,\n StatCardProps,\n} from './StatCard.types';\nimport { sxRem } from '../../../tokens/relative';\n\n/** The arrow each direction renders (decorative — the text carries the meaning). */\nconst DIRECTION_ICON: Record<StatCardDeltaDirection, typeof ArrowUpwardIcon> = {\n up: ArrowUpwardIcon,\n down: ArrowDownwardIcon,\n neutral: RemoveIcon,\n};\n\n/** How each direction reads to a screen reader when no `ariaLabel` is given. */\nconst DIRECTION_WORD: Record<StatCardDeltaDirection, string> = {\n up: 'Increase of',\n down: 'Decrease of',\n neutral: 'Change of',\n};\n\n/** A direction's natural tone, used when the caller doesn't override it. */\nconst IMPLIED_TONE: Record<StatCardDeltaDirection, StatCardDeltaTone> = {\n up: 'positive',\n down: 'negative',\n neutral: 'neutral',\n};\n\n/** Resolve a tone to its semantic palette colour (never a hardcoded hex). */\nfunction toneColor(tone: StatCardDeltaTone, theme: Theme): string {\n if (tone === 'positive') return theme.palette.success.main;\n if (tone === 'negative') return theme.palette.error.main;\n return theme.palette.text.secondary;\n}\n\n/** The screen-reader sentence for a delta: caller override, else generated. */\nfunction deltaAriaLabel(delta: StatCardDelta): string {\n if (delta.ariaLabel) return delta.ariaLabel;\n const suffix = delta.label ? ` ${delta.label}` : '';\n return `${DIRECTION_WORD[delta.direction]} ${delta.value}${suffix}`;\n}\n\n/** The delta row: a decorative arrow plus the pre-formatted change and context. */\nfunction DeltaRow({ delta, testId }: { delta: StatCardDelta; testId: string }): React.JSX.Element {\n const theme = useTheme();\n const tone = delta.tone ?? IMPLIED_TONE[delta.direction];\n const Icon = DIRECTION_ICON[delta.direction];\n const color = toneColor(tone, theme);\n\n return (\n <Stack\n direction=\"row\"\n spacing={0.5}\n sx={{ alignItems: 'center', flexWrap: 'wrap' }}\n data-testid={testId}\n data-direction={delta.direction}\n data-tone={tone}\n >\n {/* The arrow duplicates what the aria-label already says, so it is hidden\n from assistive tech rather than read twice. */}\n <Icon aria-hidden=\"true\" sx={{ fontSize: sxRem(16), color }} />\n <Typography\n variant=\"body2\"\n component=\"span\"\n aria-label={deltaAriaLabel(delta)}\n sx={{ color, fontWeight: theme.typography.fontWeightMedium }}\n >\n {delta.value}\n </Typography>\n {delta.label && (\n <Typography variant=\"caption\" component=\"span\" sx={{ color: theme.palette.text.secondary }}>\n {delta.label}\n </Typography>\n )}\n </Stack>\n );\n}\n\n/** The label row: the optional decorative icon plus the metric's name. */\nfunction LabelRow({\n label,\n icon,\n labelId,\n testId,\n}: Pick<StatCardProps, 'label' | 'icon'> & {\n labelId: string;\n testId: string;\n}): React.JSX.Element {\n const theme = useTheme();\n return (\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'center' }}>\n {icon && (\n <Box\n aria-hidden=\"true\"\n data-testid={`${testId}-icon`}\n sx={{ display: 'flex', color: theme.palette.text.secondary }}\n >\n {icon}\n </Box>\n )}\n <Typography\n id={labelId}\n variant=\"caption\"\n component=\"p\"\n data-testid={`${testId}-label`}\n sx={{ color: theme.palette.text.secondary }}\n >\n {label}\n </Typography>\n </Stack>\n );\n}\n\n/** The figure itself, or its skeleton while the tile is loading. */\nfunction ValueRow({\n value,\n loading,\n testId,\n}: Pick<StatCardProps, 'value' | 'loading'> & { testId: string }): React.JSX.Element {\n const theme = useTheme();\n if (loading) {\n return (\n <Skeleton\n variant=\"rectangular\"\n height={28}\n width=\"60%\"\n borderRadius={4}\n data-testid={`${testId}-value-skeleton`}\n />\n );\n }\n return (\n <Typography\n variant=\"h6\"\n component=\"p\"\n data-testid={`${testId}-value`}\n sx={{\n fontWeight: theme.typography.fontWeightMedium,\n color: theme.palette.text.primary,\n overflowWrap: 'anywhere',\n }}\n >\n {value}\n </Typography>\n );\n}\n\n/** The delta slot: its skeleton while loading, the row once resolved, else nothing. */\nfunction DeltaSlot({\n delta,\n loading,\n testId,\n}: {\n delta?: StatCardDelta;\n loading: boolean;\n testId: string;\n}): React.JSX.Element | null {\n if (!delta) return null;\n if (loading) {\n return (\n <Skeleton\n variant=\"rectangular\"\n height={16}\n width=\"40%\"\n borderRadius={4}\n data-testid={`${testId}-delta-skeleton`}\n />\n );\n }\n return <DeltaRow delta={delta} testId={`${testId}-delta`} />;\n}\n\n/**\n * StatCard (KPI tile) — one labelled figure with an optional period-over-period\n * delta, leading icon, hint line and loading state. The single shared tile for\n * dashboards and summary bands, so surfaces stop hand-rolling the pattern.\n *\n * The tile is presentation only: `value` and `delta.value` arrive ALREADY\n * formatted, so locale/currency rules stay with the data owner. Colour comes\n * from the MUI palette (`success` / `error` / `text.secondary`), and the delta's\n * meaning is separable from its arrow via {@link StatCardDelta.tone} — a rise in\n * cost can render \"up\" while reading as negative.\n */\nexport const StatCard: React.FC<StatCardProps> = React.memo(\n ({ label, value, delta, icon, hint, loading = false, className, dataTestId }) => {\n const theme = useTheme();\n const labelId = React.useId();\n const testId = dataTestId || 'stat-card';\n\n return (\n <Box\n role=\"group\"\n aria-labelledby={labelId}\n aria-busy={loading || undefined}\n className={className}\n data-testid={testId}\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(0.5),\n padding: theme.spacing(2),\n borderRadius: theme.shape.borderRadius / 4,\n border: `1px solid ${theme.palette.divider}`,\n backgroundColor: theme.palette.background.paper,\n minWidth: 0,\n }}\n >\n <LabelRow label={label} icon={icon} labelId={labelId} testId={testId} />\n <ValueRow value={value} loading={loading} testId={testId} />\n <DeltaSlot delta={delta} loading={loading} testId={testId} />\n {hint && (\n <Typography\n variant=\"caption\"\n component=\"p\"\n data-testid={`${testId}-hint`}\n sx={{ color: theme.palette.text.secondary }}\n >\n {hint}\n </Typography>\n )}\n </Box>\n );\n },\n);\n\nStatCard.displayName = 'StatCard';\n\nexport default StatCard;\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/DataViews/data-views-number-input.tsx"],"sourcesContent":["'use client';\n\n/**\n * A numeric bound typed the way Brazilians write numbers, replacing\n * `<input type=\"number\">`.\n *\n * The native control parses in the BROWSER's locale, and it does not fail\n * loudly when the text does not match — it drops what it cannot read and keeps\n * the rest. Typing `50,00` into it, measured in Chromium:\n *\n * digitado \"50,00\" -> campo \"5000\" -> filtro R$ 5.000\n * digitado \"17,50\" -> campo \"1750\" -> filtro R$ 1.750\n * digitado \"50.00\" -> campo \"500\" -> filtro R$ 500\n *\n * The comma is deleted and the digits close ranks, so the merchant asks for\n * fifty reais and gets a filter a HUNDRED times larger. The list empties, the\n * chip reads `Valor: ≥ R$ 5000`, and nothing on screen connects that to the\n * `50,00` they typed. It reads as \"the value filter is broken\", which is how it\n * was reported.\n *\n * So the field parses pt-BR itself: `,` is the decimal separator and `.` groups\n * thousands, which is what `R$ 1.234,56` means to the person reading it. A\n * plain `50` still works, and so does `50.00` — a dot with exactly two digits\n * after it is far more likely to be a decimal typed on a numeric keypad than a\n * thousands group, and reading it as `5000` is the very failure this replaces.\n *\n * WHICH KEYPAD, and where the request has to be made. `inputMode` goes on the\n * `<input>`, via `inputProps` — set on the `TextField` it rides the spread onto\n * the root `FormControl` div, an element nothing types into, so the attribute\n * has no effect and a phone goes on offering letters for a field that accepts\n * none of them. It is `decimal` rather than `numeric` because the numeric pad\n * has no comma on iOS, and the comma is the separator this field exists to\n * accept — `numeric` here would reopen the bug above from the other side, with\n * `17,50` untypeable rather than misread. Autofill is off alongside it: its\n * saved-value strip covers the keypad to offer names and addresses, none of\n * which survive `ALLOWED` anyway.\n */\nimport Box from '@mui/material/Box/index.js';\nimport TextField from '@mui/material/TextField/index.js';\nimport React, { useEffect, useState } from 'react';\nimport { fieldTextFieldStyles } from '../../../tokens/field-height';\n\n/** Everything this field lets through: digits and the two separators. */\nconst ALLOWED = /[^\\d.,]/g;\n\n/**\n * pt-BR text → number, or `undefined` when it is not one (yet).\n *\n * `.` is a thousands group and `,` is the decimal point, EXCEPT when a lone dot\n * is followed by one or two digits and no comma is present — `50.00` and `1.5`\n * are decimals somebody typed, while `1.234` is a thousand.\n */\nexport function parsePtBrNumber(text: string): number | undefined {\n const cleaned = text.replace(ALLOWED, '');\n if (cleaned === '') return undefined;\n const hasComma = cleaned.includes(',');\n const dots = cleaned.split('.').length - 1;\n const lastDot = cleaned.lastIndexOf('.');\n const dotIsDecimal =\n !hasComma && dots === 1 && cleaned.length - lastDot - 1 > 0 && cleaned.length - lastDot - 1 <= 2;\n const normalized = dotIsDecimal\n ? cleaned\n : cleaned.replace(/\\./g, '').replace(',', '.');\n const amount = Number(normalized);\n return Number.isFinite(amount) ? amount : undefined;\n}\n\n/**\n * A stored bound → the text the merchant reads, with a comma for the decimal\n * point.\n *\n * It takes a STRING too, and that is not defensive typing: a range restored\n * from the URL arrives as one (`?totalCents_gte=5000`). Narrowing to `number`\n * and dropping the rest emptied the field on every reload — and then the next\n * keystroke wrote a bound built from nothing.\n */\nexport function formatPtBrNumber(amount: number | string | undefined): string {\n if (amount == null || amount === '') return '';\n return String(amount).replace('.', ',');\n}\n\n/** The same, as a number — `undefined` when the bound is unset or unusable. */\nfunction boundAsNumber(amount: number | string | undefined): number | undefined {\n if (amount == null || amount === '') return undefined;\n const parsed = typeof amount === 'number' ? amount : Number(amount);\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\n/**\n * One end of a numeric range. The BOUND stays a plain `number` — nothing\n * downstream learns that the typing surface changed.\n */\nexport function NumberBoundInput({\n label,\n value,\n unit,\n onChange,\n testId,\n}: {\n label: string;\n /** The applied bound. A range restored from the URL hands this over as a string. */\n value: number | string | undefined;\n /** Rendered as a start adornment (\"R$\"), not parsed out of the text. */\n unit?: string;\n onChange: (bound: number | undefined) => void;\n testId: string;\n}): React.JSX.Element {\n const applied = boundAsNumber(value);\n const [text, setText] = useState(() => formatPtBrNumber(value));\n\n // Re-sync only when the applied bound moved somewhere the text does not\n // already mean — a \"Limpar\", a saved view. Comparing through the PARSE rather\n // than the string keeps `50,` and `50,00` from being rewritten mid-edit.\n useEffect(() => {\n setText((current) => (parsePtBrNumber(current) === applied ? current : formatPtBrNumber(applied)));\n }, [applied]);\n\n return (\n <TextField\n size=\"small\"\n type=\"text\"\n label={label}\n value={text}\n onChange={(event) => {\n // Reject the characters rather than silently dropping them AFTER\n // parsing — a letter should not move the number.\n const next = event.target.value.replace(ALLOWED, '');\n setText(next);\n const amount = parsePtBrNumber(next);\n // A bare separator (`50,`) parses to nothing yet; leave the applied\n // bound alone rather than clearing it half-way through a decimal.\n if (next === '') return onChange(undefined);\n if (amount !== undefined) onChange(amount);\n }}\n // Blur TIDIES, it does not rewrite. Text that already means the applied\n // bound is left exactly as typed — `20`, `17,50` and `1.234,56` all stay\n // — and only something that does not (`50,,`) snaps back.\n //\n // Padding the field to the chip's precision was tried and is worse than\n // the mismatch it closed: settling `20` to `20,00` means the next edit\n // starts from text the merchant did not write, so appending a digit to\n // make it 200 produces `20,000`, which parses back to 20. The filter then\n // ignores the keystroke, which is exactly the \"não funciona\" this whole\n // control exists to end. An input must hold what was typed into it; the\n // CHIP is where the applied window gets written in full.\n onBlur={() =>\n setText((current) =>\n parsePtBrNumber(current) === applied ? current : formatPtBrNumber(applied),\n )\n }\n InputLabelProps={{ shrink: true }}\n // `inputMode` belongs on the `<input>`, never on the TextField — see the\n // keypad note at the top of this file for what goes wrong up there.\n inputProps={{ 'data-testid': testId, inputMode: 'decimal', autoComplete: 'off' }}\n InputProps={\n unit\n ? {\n startAdornment: (\n <Box component=\"span\" sx={{ mr: 0.5, color: 'text.secondary' }}>\n {unit}\n </Box>\n ),\n }\n : undefined\n }\n sx={[{ width: 140 }, fieldTextFieldStyles]}\n />\n );\n}\n"],"mappings":";;;;;AAqCA,OAAO,SAAS;AAChB,OAAO,eAAe;AACtB,SAAgB,WAAW,gBAAgB;AAuH3B;AAnHhB,IAAM,UAAU;AAST,SAAS,gBAAgB,MAAkC;AAChE,QAAM,UAAU,KAAK,QAAQ,SAAS,EAAE;AACxC,MAAI,YAAY,GAAI,QAAO;AAC3B,QAAM,WAAW,QAAQ,SAAS,GAAG;AACrC,QAAM,OAAO,QAAQ,MAAM,GAAG,EAAE,SAAS;AACzC,QAAM,UAAU,QAAQ,YAAY,GAAG;AACvC,QAAM,eACJ,CAAC,YAAY,SAAS,KAAK,QAAQ,SAAS,UAAU,IAAI,KAAK,QAAQ,SAAS,UAAU,KAAK;AACjG,QAAM,aAAa,eACf,UACA,QAAQ,QAAQ,OAAO,EAAE,EAAE,QAAQ,KAAK,GAAG;AAC/C,QAAM,SAAS,OAAO,UAAU;AAChC,SAAO,OAAO,SAAS,MAAM,IAAI,SAAS;AAC5C;AAWO,SAAS,iBAAiB,QAA6C;AAC5E,MAAI,UAAU,QAAQ,WAAW,GAAI,QAAO;AAC5C,SAAO,OAAO,MAAM,EAAE,QAAQ,KAAK,GAAG;AACxC;AAGA,SAAS,cAAc,QAAyD;AAC9E,MAAI,UAAU,QAAQ,WAAW,GAAI,QAAO;AAC5C,QAAM,SAAS,OAAO,WAAW,WAAW,SAAS,OAAO,MAAM;AAClE,SAAO,OAAO,SAAS,MAAM,IAAI,SAAS;AAC5C;AAMO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAQsB;AACpB,QAAM,UAAU,cAAc,KAAK;AACnC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,MAAM,iBAAiB,KAAK,CAAC;AAK9D,YAAU,MAAM;AACd,YAAQ,CAAC,YAAa,gBAAgB,OAAO,MAAM,UAAU,UAAU,iBAAiB,OAAO,CAAE;AAAA,EACnG,GAAG,CAAC,OAAO,CAAC;AAEZ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,MAAK;AAAA,MACL;AAAA,MACA,OAAO;AAAA,MACP,UAAU,CAAC,UAAU;AAGnB,cAAM,OAAO,MAAM,OAAO,MAAM,QAAQ,SAAS,EAAE;AACnD,gBAAQ,IAAI;AACZ,cAAM,SAAS,gBAAgB,IAAI;AAGnC,YAAI,SAAS,GAAI,QAAO,SAAS,MAAS;AAC1C,YAAI,WAAW,OAAW,UAAS,MAAM;AAAA,MAC3C;AAAA,MAYA,QAAQ,MACN;AAAA,QAAQ,CAAC,YACP,gBAAgB,OAAO,MAAM,UAAU,UAAU,iBAAiB,OAAO;AAAA,MAC3E;AAAA,MAEF,iBAAiB,EAAE,QAAQ,KAAK;AAAA,MAGhC,YAAY,EAAE,eAAe,QAAQ,WAAW,WAAW,cAAc,MAAM;AAAA,MAC/E,YACE,OACI;AAAA,QACE,gBACE,oBAAC,OAAI,WAAU,QAAO,IAAI,EAAE,IAAI,KAAK,OAAO,iBAAiB,GAC1D,gBACH;AAAA,MAEJ,IACA;AAAA,MAEN,IAAI,CAAC,EAAE,OAAO,IAAI,GAAG,oBAAoB;AAAA;AAAA,EAC3C;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Alert/Alert.tsx"],"sourcesContent":["import Close from '@mui/icons-material/Close';\nimport MuiAlert from '@mui/material/Alert/index.js';\nimport AlertTitle from '@mui/material/AlertTitle/index.js';\nimport Box from '@mui/material/Box/index.js';\nimport Collapse from '@mui/material/Collapse/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport { alpha, styled } from '@mui/material/styles/index.js';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { absoluteInk, modeInk } from '../../../tokens/ink';\n\nimport { resolveAlertProps, resolveAnnouncement, testIdFor } from './Alert.helpers';\nimport type { AlertPalette } from './Alert.metrics';\nimport {\n ACTIVE,\n GLOW,\n ALERT_EASING,\n ALERT_RADIUS_UNITS,\n ALERT_TRANSITION_MS,\n CLOSE_BUTTON,\n CLOSE_DELAY_MS,\n COLLAPSE_MS,\n DESCRIPTION,\n FADE_IN,\n FOCUS,\n HOVER,\n seconds,\n TITLE,\n} from './Alert.metrics';\nimport {\n alertEmphasisStyles,\n alertLayoutStyles,\n alertVariantStyles,\n fadeInScale,\n getColorFromTheme,\n getVariantIcon,\n} from './Alert.styles';\nimport type { AlertColor } from '@mui/material/Alert/index.js';\nimport type { AlertProps } from './Alert.types';\nimport { resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport { sxRem } from '../../../tokens/relative';\n\nconst transition = `all ${seconds(ALERT_TRANSITION_MS)} ${ALERT_EASING}`;\n\n// Define animations\n/**\n * The pointer states' shadow: a flat tint, plus the glow when the alert has one.\n *\n * The tint is an inset spread at 100vmax, which always exceeds the element, so\n * it covers the surface edge to edge. It paints ABOVE the background and BELOW\n * the content, which is what keeps the ink's own contrast out of these states\n * entirely — see `ACTIVE` in `Alert.metrics.ts` for why a layer replaced the\n * opacity dip and the brightness multiplier that each preceded it.\n *\n * The glow is COMPOSED rather than replaced, so hovering a glowing alert keeps\n * its glow; `glowStyles` gave up its `!important` for this.\n */\nfunction pointerShadow(\n theme: Theme,\n colorPalette: AlertPalette,\n glow: boolean,\n variant: string | undefined,\n): (alpha_: number) => string {\n // The tint moves the surface AWAY from its own ink, which is why this reads\n // the variant and not only the mode.\n //\n // `gradient` is the one variant where the two disagree: it paints a\n // mid-lightness sweep (L* 42–61) under WHITE ink in BOTH modes, so the\n // mode-keyed answer tinted it white in dark mode — toward the text. Measured:\n // white-on-gradient fell to 2.90:1 on hover and 2.41:1 pressed, under the 3:1\n // floor and below its own idle. Every other variant's surface tracks the mode,\n // so for them the two rules agree.\n const ink = variant === 'gradient' ? absoluteInk(theme).black : modeInk(theme);\n const glowShadow = glow\n ? `0 0 ${GLOW.blur}px ${GLOW.spread}px ${alpha(colorPalette.main, GLOW.alpha)}`\n : null;\n return (alpha_) =>\n [`inset 0 0 0 100vmax ${alpha(ink, alpha_)}`, glowShadow].filter(Boolean).join(', ');\n}\n\nconst StyledAlert = styled(MuiAlert, {\n shouldForwardProp: (prop) =>\n !['customVariant', 'customColor', 'glow', 'pulse', 'animate'].includes(prop as string),\n})<{\n customVariant?: string;\n customColor?: string;\n glow?: boolean;\n pulse?: boolean;\n animate?: boolean;\n}>(({ theme, customVariant, customColor, glow, pulse, animate }) => {\n const colorPalette = getColorFromTheme(theme, customColor || customVariant || 'info');\n\n const withTint = pointerShadow(theme, colorPalette, Boolean(glow), customVariant);\n\n return {\n borderRadius: theme.spacing(ALERT_RADIUS_UNITS),\n transition: `${transition}, box-shadow ${seconds(ACTIVE.ms)} ${ALERT_EASING}`,\n position: 'relative',\n overflow: 'hidden',\n animation: animate ? `${fadeInScale} ${seconds(FADE_IN.ms)} ease-out` : 'none',\n willChange: 'transform, opacity',\n\n ...alertLayoutStyles(theme, colorPalette, animate),\n\n // Hover: one tint step, and nothing that moves. An alert is a surface\n // rather than a control, so the pointer only needs telling it is here. The\n // icon keeps its own place for the same reason — it is the variant's\n // meaning, not an affordance to animate.\n '&:hover': {\n boxShadow: withTint(HOVER.tintAlpha),\n\n '&::before': {\n opacity: 1,\n },\n },\n\n // Press: a 20% tint, landing at once and easing back. Still no geometry.\n //\n // `transition: none` here is what makes the dip INSTANT: a click's\n // `:active` lasts about as long as the finger is down, so easing into it\n // would be cut off in its first tenth and read as a flicker. The ease is on\n // the way back, governed by the root.\n //\n // Neither `:hover` nor `:focus-visible` may declare `transition`, and that\n // is not a style preference. `:active` under a mouse ALWAYS implies\n // `:hover`, so a bare shorthand in the hover block outranks the root's\n // (0,2,0 beats 0,1,0) and silently resets the timing this state rests on.\n //\n // The `:not(:has(…))` names CONTROLS, not any descendant. `:active`\n // matches an ancestor of whatever is pressed, so dismissing an alert\n // dimmed the alert being dismissed and pressing a call to action dimmed\n // the message explaining it. Excluding `:has(:active)` wholesale does not\n // work and was the first attempt: pressing the TEXT makes that text\n // `:active` too, so the guard matched on every press and the state never\n // fired at all.\n '&:active:not(:has(button:active, a:active, [role=\"button\"]:active))': {\n boxShadow: withTint(ACTIVE.tintAlpha),\n transition: 'none',\n },\n\n // Focus: `:focus-visible`, not `:focus-within`.\n //\n // The alert carries `tabIndex={0}`, so a MOUSE CLICK focused it and painted\n // the ring — a keyboard affordance answering a pointer, which is what made\n // clicking one look like an error state. `:focus-visible` is the browser's\n // own answer to \"did this focus come from the keyboard\": the ring stays for\n // whoever tabs here and never fires on a click.\n //\n // One ring, not three. It was a 3px outline at 3px offset UNDER a 6px halo,\n // and stacking two rings on one edge is what read as unfinished rather than\n // as emphasis.\n // It declares no `transition`: `outline-style` is discrete, so the ring\n // arrives at full width with only its COLOUR easing — from `currentcolor`,\n // the near-black alert ink, to the blue. That is a visible dark flash on\n // every keyboard focus, and it would also outrank the root's opacity\n // transition the way the hover block did.\n '&:focus-visible': {\n outline: `${FOCUS.ringWidth}px solid ${alpha(colorPalette.main, FOCUS.ringAlpha)}`,\n outlineOffset: `${FOCUS.offset}px`,\n },\n\n ...alertVariantStyles(theme, customVariant, colorPalette),\n ...alertEmphasisStyles(colorPalette, Boolean(glow), Boolean(pulse)),\n };\n});\n\n// glass and gradient are our own looks with no MUI severity of their own; both\n// borrow info's. danger is MUI's error.\nconst MUI_SEVERITY: Record<string, AlertColor> = {\n danger: 'error',\n glass: 'info',\n gradient: 'info',\n};\n\nconst toMuiSeverity = (variant: string): AlertColor =>\n MUI_SEVERITY[variant] ?? (variant as AlertColor);\n\nconst AlertContent: React.FC<{\n title?: AlertProps['title'];\n description?: AlertProps['description'];\n dataTestId?: string;\n children?: React.ReactNode;\n}> = ({ title, description, dataTestId, children }) => (\n <>\n {title && (\n <AlertTitle\n data-testid={testIdFor(dataTestId, 'title')}\n sx={{\n fontWeight: TITLE.fontWeight,\n fontSize: sxRem(TITLE.fontSize),\n marginBottom: description ? TITLE.marginBottomUnits : 0,\n wordWrap: 'break-word',\n overflowWrap: 'break-word',\n wordBreak: 'break-word',\n }}\n >\n {title}\n </AlertTitle>\n )}\n {description && (\n <Box\n component=\"div\"\n data-testid={testIdFor(dataTestId, 'message')}\n sx={{\n opacity: DESCRIPTION.opacity,\n fontSize: sxRem(DESCRIPTION.fontSize),\n wordWrap: 'break-word',\n overflowWrap: 'break-word',\n wordBreak: 'break-word',\n }}\n >\n {description}\n </Box>\n )}\n {children}\n </>\n);\n\nconst AlertCloseButton: React.FC<{ dataTestId?: string; label: string; onClose: () => void }> = ({\n dataTestId,\n label,\n onClose,\n}) => (\n <IconButton\n data-testid={testIdFor(dataTestId, 'close')}\n aria-label={label}\n color=\"inherit\"\n size=\"small\"\n onClick={onClose}\n sx={(theme) => ({\n transition,\n opacity: CLOSE_BUTTON.opacity,\n // Opacity and a wash only: the button used to spin 90deg and grow 1.1,\n // which drew the eye to the dismiss rather than to the message.\n '&:hover': {\n opacity: 1,\n backgroundColor: alpha(theme.palette.action.hover, CLOSE_BUTTON.washAlpha),\n },\n // A REAL ring, on the keyboard-only selector.\n //\n // This used to be `&:focus` setting `outline: 'none'` over a\n // `rgba(0,0,0,0.1)` wash — 1.25:1 against the info surface, and MUI's\n // ButtonBase already sets `outline: 0`, so there was no UA fallback\n // either. It went unnoticed while the ROOT still matched `:focus-within`\n // and drew a ring around the whole alert; moving the root to\n // `:focus-visible` took that away and left this button with no visible\n // focus at all. `Banner`'s dismiss already draws its own outline, so\n // this is also what keeps the two surfaces telling a keyboard user the\n // same thing.\n '&:focus-visible': {\n opacity: 1,\n // `currentColor` is the alert's own ink, inherited through\n // `color=\"inherit\"`, so the ring is drawn in whatever colour was\n // already chosen to be READ on this surface. Measured 11.2:1 on the\n // semantic variants and 5.7:1 on `gradient`.\n //\n // That is a reasoned choice, not a test-backed one, and the difference\n // matters: `alert-contrast.test.tsx` covers the ink of the four\n // semantic variants only — its `glass` case asserts the pane's alpha\n // rather than its ink, and `gradient` it does not render at all. A\n // translucent surface's contrast depends on what sits behind it, which\n // is why that test stops where it does and why this comment does not\n // borrow a guarantee it never made.\n outline: `${FOCUS.ringWidth}px solid currentColor`,\n outlineOffset: `${FOCUS.offset}px`,\n backgroundColor: alpha(theme.palette.action.focus, CLOSE_BUTTON.washAlpha),\n },\n })}\n >\n <Close fontSize=\"inherit\" />\n </IconButton>\n);\n\n/**\n * The dismiss button, or nothing.\n *\n * Reads `closeLabel` straight off the props rather than through the\n * `definedProps` merge, which would widen it to `string | undefined` and hand\n * the button an empty name. The UNION in `AlertProps` guarantees the label\n * wherever `closable` is true — that narrowing is gone inside the component,\n * which is why the fallback below exists and why it is unreachable.\n */\nfunction dismissButton(\n props: AlertProps,\n dataTestId: string | undefined,\n onClose: () => void,\n): React.JSX.Element | null {\n if (!props.closable) return null;\n return <AlertCloseButton dataTestId={dataTestId} label={props.closeLabel} onClose={onClose} />;\n}\n\nexport const Alert = React.forwardRef<HTMLDivElement, AlertProps>((alertProps, ref) => {\n const {\n variant,\n color,\n glow,\n pulse,\n icon,\n showIcon,\n onClose,\n title,\n description,\n children,\n animate,\n role: _role, announce: _announce, // resolved from `alertProps` — see `resolveAnnouncement`\n 'aria-atomic': ariaAtomic,\n ...others\n } = resolveAlertProps(alertProps);\n\n // Every spelling of the test id the shared contract allows, mapped to the\n // one the DOM reads and defaulted to `alert`; the native Alert does the same.\n const dataTestId = resolveTestId(others, 'alert');\n // Then the dismiss union, which `dismissButton` reads off `alertProps` rather\n // than through this destructure — so without this strip it rides `...props`\n // onto the DOM. `ALERT_DEFAULTS` supplies `closable: false`, so that happened\n // on EVERY alert, not only the closable ones.\n const props = withoutAlertOnlyProps(withoutTestIdProps(others));\n\n // Depends on `variant`, so it cannot live in the static defaults above.\n const announcement = resolveAnnouncement(alertProps, variant);\n const [open, setOpen] = React.useState(true);\n const [isClosing, setIsClosing] = React.useState(false);\n\n const handleClose = () => {\n setIsClosing(true);\n window.setTimeout(() => {\n setOpen(false);\n onClose?.();\n }, CLOSE_DELAY_MS);\n };\n\n const severity = toMuiSeverity(variant);\n\n const displayIcon = showIcon ? (\n <Box component=\"span\" data-testid={testIdFor(dataTestId, 'icon')}>\n {icon || getVariantIcon(variant)}\n </Box>\n ) : (\n false\n );\n\n const content = (\n <AlertContent title={title} description={description} dataTestId={dataTestId}>\n {children}\n </AlertContent>\n );\n\n return (\n <Collapse in={open && !isClosing} timeout={COLLAPSE_MS}>\n <StyledAlert\n ref={ref}\n data-testid={dataTestId}\n severity={severity}\n customVariant={variant}\n customColor={color}\n glow={glow}\n pulse={pulse}\n animate={animate}\n icon={displayIcon}\n role={announcement.role}\n aria-live={announcement['aria-live']}\n aria-atomic={ariaAtomic}\n tabIndex={0}\n action={dismissButton(alertProps, dataTestId, handleClose)}\n {...props}\n >\n {content}\n </StyledAlert>\n </Collapse>\n );\n});\n\n/**\n * The props `Alert` OWNS, which must never reach the DOM.\n *\n * `AlertProps` extends MUI's, whose rest-spread is how a host's real HTML\n * attributes get onto the root — so the same spread carries the alert's own\n * configuration unless it is named here. Everything else the component consumes\n * leaves through the destructure above; these two do not, because\n * `dismissButton` reads them off the original props to keep the dismiss union's\n * narrowing intact.\n *\n * Exported so a test can render an alert carrying every name on it and assert\n * none reaches the DOM — the check that would have caught `closable`.\n */\nexport const ALERT_ONLY_PROPS = ['closable', 'closeLabel'] as const;\n\nfunction withoutAlertOnlyProps<P extends object>(rest: P): P {\n const html = { ...rest } as Record<string, unknown>;\n for (const key of ALERT_ONLY_PROPS) delete html[key];\n return html as P;\n}\n\nAlert.displayName = 'Alert';\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Badge/Badge.variants.ts"],"sourcesContent":["import type { CSSObject, Theme } from '@mui/material/styles/index.js';\nimport { alpha } from '@mui/material/styles/index.js';\n\nimport {\n BADGE_DESTRUCTIVE_FONT_WEIGHT,\n GLASS_BACKGROUND_ALPHA,\n GLASS_BLUR_PX,\n GLASS_BORDER_ALPHA,\n GLASS_INSET_HIGHLIGHT_ALPHA,\n GLASS_SATURATE,\n OUTLINE_BORDER_WIDTH,\n SECONDARY_BACKGROUND_ALPHA,\n SECONDARY_BORDER_ALPHA,\n} from './Badge.metrics';\nimport type { BadgePalette, BadgeSizeStyles } from './Badge.styles';\nimport { absoluteInk, onMedia, sheen } from '../../../tokens/ink';\nimport { rem } from '../../../tokens/relative';\n\nconst BADGE_VARIANTS: Record<\n string,\n (theme: Theme, colorPalette: BadgePalette, sizeStyles: BadgeSizeStyles) => CSSObject\n> = {\n default: (theme, colorPalette, sizeStyles) => ({\n backgroundColor: colorPalette.main,\n color:\n colorPalette.contrastText || theme.palette.getContrastText?.(colorPalette.main) || absoluteInk(theme).white,\n minWidth: sizeStyles.minWidth,\n height: sizeStyles.height,\n fontSize: rem(theme, sizeStyles.step.fontSize),\n padding: sizeStyles.padding,\n borderRadius: sizeStyles.height / 2 }),\n dot: (theme, colorPalette, sizeStyles) => ({\n backgroundColor: colorPalette.main,\n width: sizeStyles.dotSize,\n height: sizeStyles.dotSize,\n minWidth: sizeStyles.dotSize,\n borderRadius: '50%',\n padding: 0 }),\n count: (theme, colorPalette, sizeStyles) => ({\n backgroundColor: colorPalette.main,\n color:\n colorPalette.contrastText || theme.palette.getContrastText?.(colorPalette.main) || absoluteInk(theme).white,\n minWidth: sizeStyles.minWidth,\n height: sizeStyles.height,\n fontSize: rem(theme, sizeStyles.step.fontSize),\n padding: sizeStyles.padding,\n borderRadius: '50%' }),\n gradient: (theme, colorPalette, sizeStyles) => ({\n background: `linear-gradient(135deg, ${colorPalette.main} 0%, ${colorPalette.dark || colorPalette.main} 100%)`,\n color: onMedia(theme),\n minWidth: sizeStyles.minWidth,\n height: sizeStyles.height,\n fontSize: rem(theme, sizeStyles.step.fontSize),\n padding: sizeStyles.padding,\n borderRadius: sizeStyles.height / 2 }),\n glass: (theme, colorPalette, sizeStyles) => ({\n backgroundColor: alpha(colorPalette.main, GLASS_BACKGROUND_ALPHA),\n backdropFilter: `blur(${GLASS_BLUR_PX}px) saturate(${GLASS_SATURATE * 100}%)`,\n WebkitBackdropFilter: `blur(${GLASS_BLUR_PX}px) saturate(${GLASS_SATURATE * 100}%)`,\n border: `1px solid ${alpha(colorPalette.main, GLASS_BORDER_ALPHA)}`,\n color: colorPalette.main,\n minWidth: sizeStyles.minWidth,\n height: sizeStyles.height,\n fontSize: rem(theme, sizeStyles.step.fontSize),\n padding: sizeStyles.padding,\n borderRadius: sizeStyles.height / 2,\n boxShadow: `inset 0 1px 1px ${sheen(theme, GLASS_INSET_HIGHLIGHT_ALPHA)}` }),\n outline: (theme, colorPalette, sizeStyles) => ({\n backgroundColor: 'transparent',\n border: `${OUTLINE_BORDER_WIDTH}px solid ${colorPalette.main}`,\n color: colorPalette.main,\n minWidth: sizeStyles.minWidth,\n height: sizeStyles.height,\n fontSize: rem(theme, sizeStyles.step.fontSize),\n padding: sizeStyles.padding,\n borderRadius: sizeStyles.height / 2 }),\n secondary: (theme, colorPalette, sizeStyles) => ({\n backgroundColor: alpha(colorPalette.main, SECONDARY_BACKGROUND_ALPHA),\n color: colorPalette.main,\n border: `1px solid ${alpha(colorPalette.main, SECONDARY_BORDER_ALPHA)}`,\n minWidth: sizeStyles.minWidth,\n height: sizeStyles.height,\n fontSize: rem(theme, sizeStyles.step.fontSize),\n padding: sizeStyles.padding,\n borderRadius: sizeStyles.height / 2 }),\n destructive: (theme, colorPalette, sizeStyles) => ({\n backgroundColor: theme.palette.error.main,\n color: theme.palette.error.contrastText,\n minWidth: sizeStyles.minWidth,\n height: sizeStyles.height,\n fontSize: rem(theme, sizeStyles.step.fontSize),\n padding: sizeStyles.padding,\n borderRadius: sizeStyles.height / 2,\n fontWeight: BADGE_DESTRUCTIVE_FONT_WEIGHT }),\n success: (theme, colorPalette, sizeStyles) => ({\n backgroundColor: theme.palette.success.main,\n color: theme.palette.success.contrastText,\n minWidth: sizeStyles.minWidth,\n height: sizeStyles.height,\n fontSize: rem(theme, sizeStyles.step.fontSize),\n padding: sizeStyles.padding,\n borderRadius: sizeStyles.height / 2 }),\n warning: (theme, colorPalette, sizeStyles) => ({\n backgroundColor: theme.palette.warning.main,\n color: theme.palette.warning.contrastText,\n minWidth: sizeStyles.minWidth,\n height: sizeStyles.height,\n fontSize: rem(theme, sizeStyles.step.fontSize),\n padding: sizeStyles.padding,\n borderRadius: sizeStyles.height / 2 }) };\n\nexport const badgeVariantStyles = (\n theme: Theme,\n colorPalette: BadgePalette,\n sizeStyles: BadgeSizeStyles,\n customVariant?: string,\n): CSSObject =>\n customVariant ? (BADGE_VARIANTS[customVariant]?.(theme, colorPalette, sizeStyles) ?? {}) : {};\n\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/MapPreview/MapSearchBar.tsx"],"sourcesContent":["import SearchIcon from '@mui/icons-material/Search';\nimport Box from '@mui/material/Box/index.js';\nimport InputAdornment from '@mui/material/InputAdornment/index.js';\nimport TextField from '@mui/material/TextField/index.js';\nimport { alpha, styled } from '@mui/material/styles/index.js';\nimport type { FC } from 'react';\nimport React from 'react';\n\nimport { fieldRadius } from '../../../tokens/field-radius';\nimport { fieldControlStyles } from '../../../tokens/field-height';\n\n// Kept module-local: styled() components cannot be exported across a module\n// boundary here without tripping TS2742.\nconst SearchBar = styled(Box)(({ theme }) => ({\n position: 'absolute',\n top: theme.spacing(2),\n left: '50%',\n transform: 'translateX(-50%)',\n zIndex: 2,\n width: '90%',\n maxWidth: 400,\n}));\n\nconst SearchField = styled(TextField)(({ theme }) => ({\n ...fieldControlStyles(theme),\n '& .MuiOutlinedInput-root': {\n background: alpha(theme.palette.background.paper, 0.95),\n backdropFilter: 'blur(10px)',\n WebkitBackdropFilter: 'blur(10px)',\n borderRadius: fieldRadius(theme),\n '& fieldset': {\n borderColor: alpha(theme.palette.divider, 0.2),\n },\n },\n}));\n\nexport interface MapSearchBarProps {\n /** The field's accessible name — it renders no visible label. REQUIRED. */\n label: string;\n value: string;\n placeholder: string;\n isSearching: boolean;\n onChange: (value: string) => void;\n onSubmit: (event: React.KeyboardEvent<HTMLInputElement>) => void;\n}\n\nexport const MapSearchBar: FC<MapSearchBarProps> = ({\n label,\n value,\n placeholder,\n isSearching,\n onChange,\n onSubmit,\n}) => (\n <SearchBar>\n <SearchField\n fullWidth\n size=\"small\"\n placeholder={placeholder}\n value={value}\n onChange={(event) => onChange(event.target.value)}\n onKeyPress={onSubmit}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon fontSize=\"small\" sx={{ opacity: isSearching ? 0.5 : 1 }} />\n </InputAdornment>\n ),\n }}\n disabled={isSearching}\n aria-label={label}\n />\n </SearchBar>\n);\n"],"mappings":";;;;;;;;AAAA,OAAO,gBAAgB;AACvB,OAAO,SAAS;AAChB,OAAO,oBAAoB;AAC3B,OAAO,eAAe;AACtB,SAAS,OAAO,cAAc;AA6DlB;AApDZ,IAAM,YAAY,OAAO,GAAG,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EAC5C,UAAU;AAAA,EACV,KAAK,MAAM,QAAQ,CAAC;AAAA,EACpB,MAAM;AAAA,EACN,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,UAAU;AACZ,EAAE;AAEF,IAAM,cAAc,OAAO,SAAS,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EACpD,GAAG,mBAAmB,KAAK;AAAA,EAC3B,4BAA4B;AAAA,IAC1B,YAAY,MAAM,MAAM,QAAQ,WAAW,OAAO,IAAI;AAAA,IACtD,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,IACtB,cAAc,YAAY,KAAK;AAAA,IAC/B,cAAc;AAAA,MACZ,aAAa,MAAM,MAAM,QAAQ,SAAS,GAAG;AAAA,IAC/C;AAAA,EACF;AACF,EAAE;AAYK,IAAM,eAAsC,CAAC;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MACE,oBAAC,aACC;AAAA,EAAC;AAAA;AAAA,IACC,WAAS;AAAA,IACT,MAAK;AAAA,IACL;AAAA,IACA;AAAA,IACA,UAAU,CAAC,UAAU,SAAS,MAAM,OAAO,KAAK;AAAA,IAChD,YAAY;AAAA,IACZ,YAAY;AAAA,MACV,gBACE,oBAAC,kBAAe,UAAS,SACvB,8BAAC,cAAW,UAAS,SAAQ,IAAI,EAAE,SAAS,cAAc,MAAM,EAAE,GAAG,GACvE;AAAA,IAEJ;AAAA,IACA,UAAU;AAAA,IACV,cAAY;AAAA;AACd,GACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Chart/chart-context.ts"],"sourcesContent":["import type { Theme } from '@mui/material/styles/index.js';\nimport type { CSSProperties } from 'react';\n\nimport type { ChartDataPoint, ChartProps, ChartSeries } from './Chart.types';\nimport { resolveAxisConfig, resolveBarGeometry, type BarGeometry, type CartesianAxisConfig } from './chart-axis';\nimport {\n getAxisStyles,\n getDefaultColors,\n getSizeStyles,\n resolveSeries,\n type SizeStyles,\n} from './chart-internals';\n\n/**\n * Everything the per-type renderers in `chart-renderers.tsx` read, resolved\n * once from props + theme. Kept out of that file so each renderer is a small\n * JSX function over already-decided values — palette, series, axis geometry,\n * bar geometry — rather than a place where those decisions get made again\n * slightly differently.\n */\nexport interface ChartRenderContext {\n props: ChartProps;\n theme: Theme;\n sizeStyles: SizeStyles;\n chartColors: string[];\n chartSeries: ChartSeries[];\n strokeType: 'monotone' | 'linear';\n axisStyle: CSSProperties;\n gridStroke: string;\n /** Multiplier on `gridStroke`'s alpha — see `getAxisStyles`. */\n gridOpacity: number;\n axisConfig: CartesianAxisConfig;\n barGeometry: BarGeometry;\n animationDuration: number;\n commonProps: {\n data: ChartDataPoint[];\n margin: { top?: number; right?: number; bottom?: number; left?: number };\n onClick: (payload: unknown) => void;\n };\n}\n\nexport function buildChartContext(props: ChartProps, theme: Theme): ChartRenderContext {\n const sizeStyles = getSizeStyles(theme, props.size, props.height);\n const chartColors = getDefaultColors(theme, props.variant ?? 'default', props.colors);\n const { axisStyle, gridStroke, gridOpacity } = getAxisStyles(\n theme,\n props.variant ?? 'default',\n sizeStyles.fontSize,\n );\n const handleChartClick = (payload: unknown): void => {\n const chartData = payload as { activePayload?: Array<{ payload: ChartDataPoint }> };\n if (props.onClick && chartData?.activePayload?.[0]) {\n props.onClick(chartData.activePayload[0].payload);\n }\n };\n return {\n props,\n theme,\n sizeStyles,\n chartColors,\n chartSeries: resolveSeries(props.data, props.series, props.xAxisKey ?? 'name', chartColors),\n strokeType: (props.curved ?? true) ? 'monotone' : 'linear',\n axisStyle: { ...axisStyle, fontSize: sizeStyles.fontSize },\n gridStroke,\n gridOpacity,\n axisConfig: resolveAxisConfig(props, sizeStyles.tickMargin),\n barGeometry: resolveBarGeometry(props),\n animationDuration: (props.animate ?? true) ? (props.animationDuration ?? 1500) : 0,\n commonProps: {\n data: props.data,\n margin: { top: 20, right: 30, left: 20, bottom: 20, ...props.margin },\n onClick: handleChartClick,\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;AAyCO,SAAS,kBAAkB,OAAmB,OAAkC;AACrF,QAAM,aAAa,cAAc,OAAO,MAAM,MAAM,MAAM,MAAM;AAChE,QAAM,cAAc,iBAAiB,OAAO,MAAM,WAAW,WAAW,MAAM,MAAM;AACpF,QAAM,EAAE,WAAW,YAAY,YAAY,IAAI;AAAA,IAC7C;AAAA,IACA,MAAM,WAAW;AAAA,IACjB,WAAW;AAAA,EACb;AACA,QAAM,mBAAmB,CAAC,YAA2B;AACnD,UAAM,YAAY;AAClB,QAAI,MAAM,WAAW,WAAW,gBAAgB,CAAC,GAAG;AAClD,YAAM,QAAQ,UAAU,cAAc,CAAC,EAAE,OAAO;AAAA,IAClD;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,cAAc,MAAM,MAAM,MAAM,QAAQ,MAAM,YAAY,QAAQ,WAAW;AAAA,IAC1F,YAAa,MAAM,UAAU,OAAQ,aAAa;AAAA,IAClD,WAAW,EAAE,GAAG,WAAW,UAAU,WAAW,SAAS;AAAA,IACzD;AAAA,IACA;AAAA,IACA,YAAY,kBAAkB,OAAO,WAAW,UAAU;AAAA,IAC1D,aAAa,mBAAmB,KAAK;AAAA,IACrC,mBAAoB,MAAM,WAAW,OAAS,MAAM,qBAAqB,OAAQ;AAAA,IACjF,aAAa;AAAA,MACX,MAAM,MAAM;AAAA,MACZ,QAAQ,EAAE,KAAK,IAAI,OAAO,IAAI,MAAM,IAAI,QAAQ,IAAI,GAAG,MAAM,OAAO;AAAA,MACpE,SAAS;AAAA,IACX;AAAA,EACF;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Carousel/Carousel.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport Fade from '@mui/material/Fade/index.js';\nimport Slide from '@mui/material/Slide/index.js';\nimport Zoom from '@mui/material/Zoom/index.js';\nimport { useTheme } from '@mui/material/styles/index.js';\nimport React, { useCallback, useRef } from 'react';\n\nimport { withDefaults } from '../../../utils/withDefaults';\n\nimport { useCarouselNavigation } from './Carousel.hooks';\nimport { CarouselChrome } from './Carousel.chrome';\nimport { CarouselTrack } from './Carousel.slide';\nimport { containerStyles } from './Carousel.styles';\nimport type { CarouselItem, CarouselProps } from './Carousel.types';\nimport { muiColor } from '../../../tokens/scales';\n\nexport { CarouselArrows, CarouselIndicators, CarouselThumbnails } from './Carousel.parts';\n\nconst DEFAULTS = {\n variant: 'default',\n size: 'md',\n color: 'primary',\n autoPlay: false,\n autoPlayInterval: 3000,\n loop: true,\n showIndicators: true,\n showArrows: true,\n showThumbnails: false,\n glow: false,\n pulse: false,\n glass: false,\n gradient: false,\n loading: false,\n disabled: false,\n height: 400,\n width: '100%',\n pauseOnHover: true,\n indicatorPosition: 'bottom',\n arrowPosition: 'overlay',\n animation: 'slide',\n} satisfies Partial<CarouselProps>;\n\ntype ResolvedCarouselProps = CarouselProps & Required<Pick<CarouselProps, keyof typeof DEFAULTS>>;\n\n/**\n * `flip` reuses Slide with a fixed direction — MUI has no flip transition, and a\n * slide from one side reads closer to a flip than a fade does.\n */\nconst TRANSITIONS = { fade: Fade, zoom: Zoom, flip: Slide, slide: Slide } as const;\n\nexport const Carousel: React.FC<CarouselProps> = (props) => {\n const resolved = withDefaults(props, DEFAULTS) as ResolvedCarouselProps;\n const {\n items, variant, size, color, autoPlay, autoPlayInterval, loop, loading, disabled,\n className, style, height, width, pauseOnHover, onClick, onChange, onFocus, onBlur,\n animation, glow, pulse, glass, gradient,\n } = resolved;\n\n const theme = useTheme();\n const containerRef = useRef<HTMLDivElement>(null);\n\n const { activeIndex, handleNext, handlePrev, handleSelect, hoverProps } = useCarouselNavigation({\n count: items.length,\n loop,\n autoPlay,\n autoPlayInterval,\n pauseOnHover,\n disabled,\n onChange,\n });\n\n const handleItemClick = useCallback(\n (item: CarouselItem, index: number) => {\n if (!disabled) {\n onClick?.(item, index);\n }\n },\n [disabled, onClick],\n );\n\n const frameSx = containerStyles({\n theme, variant, size, color, height, width, glow, pulse, glass, gradient,\n });\n\n if (loading) {\n return (\n <Box sx={{ ...frameSx, display: 'flex', justifyContent: 'center', alignItems: 'center' }}>\n <CircularProgress color={muiColor(color, 'inherit')} />\n </Box>\n );\n }\n\n return (\n <Box\n ref={containerRef}\n className={className}\n data-testid=\"carousel-container\"\n sx={{ ...frameSx, ...style }}\n onFocus={onFocus}\n onBlur={onBlur}\n {...hoverProps}\n >\n <CarouselTrack\n items={items}\n activeIndex={activeIndex}\n variant={variant}\n animation={animation}\n transition={TRANSITIONS[animation] ?? Slide}\n clickable={Boolean(onClick)}\n onSelect={handleItemClick}\n />\n\n <CarouselChrome\n {...resolved}\n activeIndex={activeIndex}\n onPrev={handlePrev}\n onNext={handleNext}\n onSelect={handleSelect}\n />\n </Box>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,OAAO,SAAS;AAChB,OAAO,sBAAsB;AAC7B,OAAO,UAAU;AACjB,OAAO,WAAW;AAClB,OAAO,UAAU;AACjB,SAAS,gBAAgB;AACzB,SAAgB,aAAa,cAAc;AAkFnC,cAMJ,YANI;AArER,IAAM,WAAW;AAAA,EACf,SAAS;AAAA,EACT,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,WAAW;AACb;AAQA,IAAM,cAAc,EAAE,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,MAAM;AAEjE,IAAM,WAAoC,CAAC,UAAU;AAC1D,QAAM,WAAW,aAAa,OAAO,QAAQ;AAC7C,QAAM;AAAA,IACJ;AAAA,IAAO;AAAA,IAAS;AAAA,IAAM;AAAA,IAAO;AAAA,IAAU;AAAA,IAAkB;AAAA,IAAM;AAAA,IAAS;AAAA,IACxE;AAAA,IAAW;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAO;AAAA,IAAc;AAAA,IAAS;AAAA,IAAU;AAAA,IAAS;AAAA,IAC3E;AAAA,IAAW;AAAA,IAAM;AAAA,IAAO;AAAA,IAAO;AAAA,EACjC,IAAI;AAEJ,QAAM,QAAQ,SAAS;AACvB,QAAM,eAAe,OAAuB,IAAI;AAEhD,QAAM,EAAE,aAAa,YAAY,YAAY,cAAc,WAAW,IAAI,sBAAsB;AAAA,IAC9F,OAAO,MAAM;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,kBAAkB;AAAA,IACtB,CAAC,MAAoB,UAAkB;AACrC,UAAI,CAAC,UAAU;AACb,kBAAU,MAAM,KAAK;AAAA,MACvB;AAAA,IACF;AAAA,IACA,CAAC,UAAU,OAAO;AAAA,EACpB;AAEA,QAAM,UAAU,gBAAgB;AAAA,IAC9B;AAAA,IAAO;AAAA,IAAS;AAAA,IAAM;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAO;AAAA,IAAM;AAAA,IAAO;AAAA,IAAO;AAAA,EAClE,CAAC;AAED,MAAI,SAAS;AACX,WACE,oBAAC,OAAI,IAAI,EAAE,GAAG,SAAS,SAAS,QAAQ,gBAAgB,UAAU,YAAY,SAAS,GACrF,8BAAC,oBAAiB,OAAO,SAAS,OAAO,SAAS,GAAG,GACvD;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL;AAAA,MACA,eAAY;AAAA,MACZ,IAAI,EAAE,GAAG,SAAS,GAAG,MAAM;AAAA,MAC3B;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,YAAY,YAAY,SAAS,KAAK;AAAA,YACtC,WAAW,QAAQ,OAAO;AAAA,YAC1B,UAAU;AAAA;AAAA,QACZ;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ;AAAA,YACA,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,UAAU;AAAA;AAAA,QACZ;AAAA;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Chart/chart-axis.ts"],"sourcesContent":["import type { ChartDataPoint, ChartProps } from './Chart.types';\n\n/**\n * Cartesian axis + bar geometry: the rules that keep a chart readable rather\n * than merely correct (FUT-391 visual pass).\n *\n * Three of them are pass/fail by looking at the rendered chart:\n *\n * - **No overlapping text.** The bottom value tick sits ON the x-axis line and\n * the first category tick sits ON the y-axis line, so the two labels meet at\n * the corner. Recharts' default `tickMargin` of 2 leaves the category label's\n * cap height inside the value label's descender — a few px of overlap at\n * every viewport. The margin has to clear the value label's box, which grows\n * with the font, hence a per-size value ({@link SIZE_PRESETS}).\n * - **Skip every nth tick, always keep the last, truncate at ~12 chars.** With\n * more categories than fit, Recharts thins them only when it can measure text\n * (never server-side, where `getStringSize` returns 0 and every label renders\n * on top of its neighbour). Thinning here is deterministic and viewport-free.\n * - **Bars rounded, capped, never touching the frame.** A two-category bar\n * chart in a wide card draws 150px slabs flush against the axis; the cap is\n * what turns them back into bars.\n */\n\n/** Category ticks kept before thinning starts. */\nconst DEFAULT_MAX_CATEGORY_TICKS = 8;\n/** Category tick labels longer than this are truncated with an ellipsis. */\nconst DEFAULT_TICK_LABEL_MAX_CHARS = 12;\n/** Bar corner radius, px. */\nconst DEFAULT_BAR_RADIUS = 3;\n/** Cap on a single bar's thickness, px. */\nconst DEFAULT_MAX_BAR_WIDTH = 38;\n\n/**\n * Thin a category axis to at most `maxTicks` labels, keeping every nth.\n *\n * The walk runs from the END so the last category is always labelled — the\n * most recent day/bucket is the one a reader looks for first. Returns\n * `undefined` when everything already fits, which leaves Recharts' own\n * width-aware thinning in charge of the common small-data case.\n *\n * Also `undefined` when a value repeats: Recharts places an explicit tick by\n * looking its value up in the scale, so a duplicate would land the label on\n * the first row that carries it rather than on the row it was picked for.\n */\nexport function selectCategoryTicks(\n values: ReadonlyArray<string | number>,\n maxTicks: number,\n): Array<string | number> | undefined {\n if (maxTicks < 1 || values.length <= maxTicks) return undefined;\n if (new Set(values).size !== values.length) return undefined;\n const step = Math.ceil(values.length / maxTicks);\n const kept: Array<string | number> = [];\n for (let index = values.length - 1; index >= 0; index -= step) {\n const value = values[index];\n if (value !== undefined) kept.push(value);\n }\n return kept.reverse();\n}\n\n/** The category-axis values of `data`, in row order, skipping empty cells. */\nexport function categoryValues(\n data: ReadonlyArray<ChartDataPoint>,\n xAxisKey: string,\n): Array<string | number> {\n const values: Array<string | number> = [];\n for (const row of data) {\n const value = row[xAxisKey];\n if (value !== null && value !== undefined) values.push(value);\n }\n return values;\n}\n\n/** Shorten a tick label to `maxChars`, ellipsis included, never mid-render. */\nexport function truncateTickLabel(value: unknown, maxChars: number): string {\n const text = value === null || value === undefined ? '' : String(value);\n if (maxChars < 1 || text.length <= maxChars) return text;\n return `${text.slice(0, maxChars - 1)}…`;\n}\n\n/** Resolved geometry for the shared cartesian axes. */\nexport interface CartesianAxisConfig {\n /** Gap between an axis line and its tick labels, px. */\n tickMargin: number;\n /** Explicit category ticks once thinning applies; `undefined` = Recharts decides. */\n categoryTicks: Array<string | number> | undefined;\n /** Category tick label formatter (truncation). */\n tickFormatter: (value: unknown) => string;\n}\n\n/** Resolved geometry for bar series. */\nexport interface BarGeometry {\n /** Per-corner radius, top corners only; `0` for stacked segments. */\n radius: number | [number, number, number, number];\n /** Cap on a bar's thickness, px — also what keeps bars off the frame. */\n maxBarSize: number;\n}\n\nexport function resolveAxisConfig(props: ChartProps, tickMargin: number): CartesianAxisConfig {\n const maxChars = props.tickLabelMaxChars ?? DEFAULT_TICK_LABEL_MAX_CHARS;\n return {\n tickMargin,\n categoryTicks: selectCategoryTicks(\n categoryValues(props.data, props.xAxisKey ?? 'name'),\n props.maxCategoryTicks ?? DEFAULT_MAX_CATEGORY_TICKS,\n ),\n tickFormatter: (value: unknown) => truncateTickLabel(value, maxChars),\n };\n}\n\nexport function resolveBarGeometry(props: ChartProps): BarGeometry {\n const radius = props.barRadius ?? DEFAULT_BAR_RADIUS;\n return {\n // A stacked segment rounded on its top corners tears a notch out of the\n // segment above it, so stacks stay square.\n radius: props.stacked ? 0 : [radius, radius, 0, 0],\n maxBarSize: props.maxBarWidth ?? DEFAULT_MAX_BAR_WIDTH,\n };\n}\n"],"mappings":";AAwBA,IAAM,6BAA6B;AAEnC,IAAM,+BAA+B;AAErC,IAAM,qBAAqB;AAE3B,IAAM,wBAAwB;AAcvB,SAAS,oBACd,QACA,UACoC;AACpC,MAAI,WAAW,KAAK,OAAO,UAAU,SAAU,QAAO;AACtD,MAAI,IAAI,IAAI,MAAM,EAAE,SAAS,OAAO,OAAQ,QAAO;AACnD,QAAM,OAAO,KAAK,KAAK,OAAO,SAAS,QAAQ;AAC/C,QAAM,OAA+B,CAAC;AACtC,WAAS,QAAQ,OAAO,SAAS,GAAG,SAAS,GAAG,SAAS,MAAM;AAC7D,UAAM,QAAQ,OAAO,KAAK;AAC1B,QAAI,UAAU,OAAW,MAAK,KAAK,KAAK;AAAA,EAC1C;AACA,SAAO,KAAK,QAAQ;AACtB;AAGO,SAAS,eACd,MACA,UACwB;AACxB,QAAM,SAAiC,CAAC;AACxC,aAAW,OAAO,MAAM;AACtB,UAAM,QAAQ,IAAI,QAAQ;AAC1B,QAAI,UAAU,QAAQ,UAAU,OAAW,QAAO,KAAK,KAAK;AAAA,EAC9D;AACA,SAAO;AACT;AAGO,SAAS,kBAAkB,OAAgB,UAA0B;AAC1E,QAAM,OAAO,UAAU,QAAQ,UAAU,SAAY,KAAK,OAAO,KAAK;AACtE,MAAI,WAAW,KAAK,KAAK,UAAU,SAAU,QAAO;AACpD,SAAO,GAAG,KAAK,MAAM,GAAG,WAAW,CAAC,CAAC;AACvC;AAoBO,SAAS,kBAAkB,OAAmB,YAAyC;AAC5F,QAAM,WAAW,MAAM,qBAAqB;AAC5C,SAAO;AAAA,IACL;AAAA,IACA,eAAe;AAAA,MACb,eAAe,MAAM,MAAM,MAAM,YAAY,MAAM;AAAA,MACnD,MAAM,oBAAoB;AAAA,IAC5B;AAAA,IACA,eAAe,CAAC,UAAmB,kBAAkB,OAAO,QAAQ;AAAA,EACtE;AACF;AAEO,SAAS,mBAAmB,OAAgC;AACjE,QAAM,SAAS,MAAM,aAAa;AAClC,SAAO;AAAA;AAAA;AAAA,IAGL,QAAQ,MAAM,UAAU,IAAI,CAAC,QAAQ,QAAQ,GAAG,CAAC;AAAA,IACjD,YAAY,MAAM,eAAe;AAAA,EACnC;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/InteractiveTooltip/InteractiveTooltip.styles.ts"],"sourcesContent":["import { alpha, keyframes } from '@mui/material/styles/index.js';\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\n\nimport { absoluteInk, neutralTones, shadowInk, sheen } from '../../../tokens/ink';\nimport { sxRem } from '../../../tokens/relative';\n\nconst pulseAnimation = keyframes`\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 70% {\n transform: scale(1.05);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n`;\n\nconst SIZE_MAP = {\n sm: { fontSize: sxRem(12), padding: '4px 8px' },\n md: { fontSize: sxRem(14), padding: '6px 12px' },\n lg: { fontSize: sxRem(16), padding: '8px 16px' },\n} as const;\n\nexport const getSizeStyles = (size?: string): { fontSize: (theme: Theme) => string; padding: string } =>\n SIZE_MAP[size as keyof typeof SIZE_MAP] || SIZE_MAP.md;\n\nexport const variantStyles = (theme: Theme, variant?: string): CSSObject => {\n switch (variant) {\n case 'default':\n return {\n backgroundColor: alpha(neutralTones(theme).inverseSurface, 0.92),\n color: absoluteInk(theme).white,\n boxShadow: `0 4px 12px ${shadowInk(theme, 0.3)}`,\n };\n case 'dark':\n return {\n backgroundColor: absoluteInk(theme).black,\n color: absoluteInk(theme).white,\n boxShadow: `0 6px 16px ${shadowInk(theme, 0.5)}`,\n border: `1px solid ${sheen(theme, 0.1)}`,\n };\n case 'light':\n return {\n backgroundColor: absoluteInk(theme).white,\n color: neutralTones(theme).inverseSurface,\n border: `1px solid ${alpha(neutralTones(theme).subtle, 0.4)}`,\n boxShadow: `0 4px 16px ${shadowInk(theme, 0.15)}`,\n };\n case 'glass':\n return {\n backgroundColor: alpha(theme.palette.background.paper, 0.75),\n backdropFilter: 'blur(24px) saturate(180%)',\n WebkitBackdropFilter: 'blur(24px) saturate(180%)',\n border: `1px solid ${alpha(theme.palette.divider, 0.3)}`,\n color: theme.palette.text.primary,\n boxShadow: `0 8px 32px ${shadowInk(theme, 0.12)}`,\n };\n default:\n return {};\n }\n};\n\n// glow and pulse are independent flags. The three combinations used to be spelled\n// out one by one, but each is just the union of whichever flags are set.\nexport const emphasisStyles = (theme: Theme, glow?: boolean, pulse?: boolean): CSSObject => ({\n ...(glow && {\n boxShadow: `0 0 15px 3px ${alpha(theme.palette.primary.main, 0.4)} !important`,\n filter: 'brightness(1.05)',\n }),\n ...(pulse && {\n animation: `${pulseAnimation} 2s infinite`,\n }),\n});\n\nexport const arrowColor = (theme: Theme, variant?: string): string => {\n switch (variant) {\n case 'light':\n return absoluteInk(theme).white;\n case 'glass':\n return alpha(theme.palette.background.paper, 0.75);\n case 'dark':\n return absoluteInk(theme).black;\n default:\n return alpha(neutralTones(theme).inverseSurface, 0.92);\n }\n};\n"],"mappings":";;;;;;;;;;;AAAA,SAAS,OAAO,iBAAiB;AAMjC,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAevB,IAAM,WAAW;AAAA,EACf,IAAI,EAAE,UAAU,MAAM,EAAE,GAAG,SAAS,UAAU;AAAA,EAC9C,IAAI,EAAE,UAAU,MAAM,EAAE,GAAG,SAAS,WAAW;AAAA,EAC/C,IAAI,EAAE,UAAU,MAAM,EAAE,GAAG,SAAS,WAAW;AACjD;AAEO,IAAM,gBAAgB,CAAC,SAC5B,SAAS,IAA6B,KAAK,SAAS;AAE/C,IAAM,gBAAgB,CAAC,OAAc,YAAgC;AAC1E,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB,MAAM,aAAa,KAAK,EAAE,gBAAgB,IAAI;AAAA,QAC/D,OAAO,YAAY,KAAK,EAAE;AAAA,QAC1B,WAAW,cAAc,UAAU,OAAO,GAAG,CAAC;AAAA,MAChD;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB,YAAY,KAAK,EAAE;AAAA,QACpC,OAAO,YAAY,KAAK,EAAE;AAAA,QAC1B,WAAW,cAAc,UAAU,OAAO,GAAG,CAAC;AAAA,QAC9C,QAAQ,aAAa,MAAM,OAAO,GAAG,CAAC;AAAA,MACxC;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB,YAAY,KAAK,EAAE;AAAA,QACpC,OAAO,aAAa,KAAK,EAAE;AAAA,QAC3B,QAAQ,aAAa,MAAM,aAAa,KAAK,EAAE,QAAQ,GAAG,CAAC;AAAA,QAC3D,WAAW,cAAc,UAAU,OAAO,IAAI,CAAC;AAAA,MACjD;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB,MAAM,MAAM,QAAQ,WAAW,OAAO,IAAI;AAAA,QAC3D,gBAAgB;AAAA,QAChB,sBAAsB;AAAA,QACtB,QAAQ,aAAa,MAAM,MAAM,QAAQ,SAAS,GAAG,CAAC;AAAA,QACtD,OAAO,MAAM,QAAQ,KAAK;AAAA,QAC1B,WAAW,cAAc,UAAU,OAAO,IAAI,CAAC;AAAA,MACjD;AAAA,IACF;AACE,aAAO,CAAC;AAAA,EACZ;AACF;AAIO,IAAM,iBAAiB,CAAC,OAAc,MAAgB,WAAgC;AAAA,EAC3F,GAAI,QAAQ;AAAA,IACV,WAAW,gBAAgB,MAAM,MAAM,QAAQ,QAAQ,MAAM,GAAG,CAAC;AAAA,IACjE,QAAQ;AAAA,EACV;AAAA,EACA,GAAI,SAAS;AAAA,IACX,WAAW,GAAG,cAAc;AAAA,EAC9B;AACF;AAEO,IAAM,aAAa,CAAC,OAAc,YAA6B;AACpE,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO,YAAY,KAAK,EAAE;AAAA,IAC5B,KAAK;AACH,aAAO,MAAM,MAAM,QAAQ,WAAW,OAAO,IAAI;AAAA,IACnD,KAAK;AACH,aAAO,YAAY,KAAK,EAAE;AAAA,IAC5B;AACE,aAAO,MAAM,aAAa,KAAK,EAAE,gBAAgB,IAAI;AAAA,EACzD;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/DataGrid/DataGrid.states.tsx"],"sourcesContent":["/**\n * The DataGrid's three PLACEHOLDER states: loading, error, and empty.\n *\n * ## Why they carry `data-testid`\n *\n * They used to not, and it was invisible: `data-testid` is destructured out of\n * the props and was re-applied only on the populated render, so a grid whose\n * first paint was any of these three states rendered with NO test id at all.\n * The grid had booted perfectly and simply could not be found — every spec that\n * landed on a screen with no rows yet waited out its whole budget on an element\n * that would only appear once somebody created a row. `stations.e2e.ts` carries\n * a paragraph about working around exactly this.\n *\n * So all four renders now agree: the id names the GRID, not the grid's data.\n * A test that asks \"did the grid mount\" gets the same answer in every state,\n * and `data-loading` / `data-error` / `data-empty` say WHICH state it is.\n */\nimport Box from '@mui/material/Box/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport type React from 'react';\n\n/** Shared by all three: the same box, the same role, the same id. */\ninterface PlaceholderProps {\n dataTestId?: string;\n ariaLabel?: string;\n className?: string;\n style?: React.CSSProperties;\n htmlProps: React.HTMLAttributes<HTMLElement>;\n children: React.ReactNode;\n /** The single state flag this placeholder sets (`data-loading` etc.). */\n flag: 'data-loading' | 'data-error' | 'data-empty';\n}\n\nfunction Placeholder({\n dataTestId,\n ariaLabel,\n className,\n style,\n htmlProps,\n children,\n flag,\n}: PlaceholderProps): React.JSX.Element {\n return (\n <Box\n data-ui=\"datagrid\"\n {...{ [flag]: 'true' }}\n data-testid={dataTestId}\n className={className}\n style={style}\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n gap: 2,\n height: 200,\n }}\n aria-label={ariaLabel}\n role=\"grid\"\n {...htmlProps}\n >\n {children}\n </Box>\n );\n}\n\ntype StateProps = Omit<PlaceholderProps, 'children' | 'flag'>;\n\nexport function DataGridLoading(props: StateProps): React.JSX.Element {\n return (\n <Placeholder {...props} flag=\"data-loading\">\n <CircularProgress />\n </Placeholder>\n );\n}\n\nexport function DataGridError(\n props: StateProps & { error: React.ReactNode },\n): React.JSX.Element {\n const { error, ...rest } = props;\n return (\n <Placeholder {...rest} flag=\"data-error\">\n <Typography color=\"error\" variant=\"body1\">\n {error}\n </Typography>\n </Placeholder>\n );\n}\n\nexport function DataGridEmpty(\n props: StateProps & { emptyState?: React.ReactNode; emptyText: string },\n): React.JSX.Element {\n const { emptyState, emptyText, ...rest } = props;\n return (\n <Placeholder {...rest} flag=\"data-empty\">\n {emptyState ?? (\n <Typography variant=\"body1\" color=\"text.secondary\">\n {emptyText}\n </Typography>\n )}\n </Placeholder>\n );\n}\n"],"mappings":";AAiBA,OAAO,SAAS;AAChB,OAAO,sBAAsB;AAC7B,OAAO,gBAAgB;AAyBnB;AAVJ,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAwC;AACtC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAQ;AAAA,MACP,GAAG,EAAE,CAAC,IAAI,GAAG,OAAO;AAAA,MACrB,eAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA,IAAI;AAAA,QACF,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,KAAK;AAAA,QACL,QAAQ;AAAA,MACV;AAAA,MACA,cAAY;AAAA,MACZ,MAAK;AAAA,MACJ,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AAIO,SAAS,gBAAgB,OAAsC;AACpE,SACE,oBAAC,eAAa,GAAG,OAAO,MAAK,gBAC3B,8BAAC,oBAAiB,GACpB;AAEJ;AAEO,SAAS,cACd,OACmB;AACnB,QAAM,EAAE,OAAO,GAAG,KAAK,IAAI;AAC3B,SACE,oBAAC,eAAa,GAAG,MAAM,MAAK,cAC1B,8BAAC,cAAW,OAAM,SAAQ,SAAQ,SAC/B,iBACH,GACF;AAEJ;AAEO,SAAS,cACd,OACmB;AACnB,QAAM,EAAE,YAAY,WAAW,GAAG,KAAK,IAAI;AAC3C,SACE,oBAAC,eAAa,GAAG,MAAM,MAAK,cACzB,wBACC,oBAAC,cAAW,SAAQ,SAAQ,OAAM,kBAC/B,qBACH,GAEJ;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Chip/Chip.styles.tsx"],"sourcesContent":["import Avatar from '@mui/material/Avatar/index.js';\nimport type { SxProps, Theme } from '@mui/material/styles/index.js';\nimport type { KeyboardEvent, ReactElement } from 'react';\nimport React from 'react';\n\nimport { chipKeyAction, type ChipKeyArgs } from './Chip.helpers';\nimport { CHIP_SIZES, CHIP_TRANSITION_EASING, CHIP_TRANSITION_MS, HOVER_LIFT_PX, HOVER_SHADOW } from './Chip.metrics';\nimport type { ChipProps } from './Chip.types';\nimport { shadowInk } from '../../../tokens/ink';\n\n/**\n * A chip is not a native control, so the two keyboard conventions it stands in\n * for are wired by hand: Delete/Backspace removes it, Enter/Space activates it.\n * The DECISION is `chipKeyAction`, which the native half reads too.\n */\nexport const makeKeyDownHandler =\n (args: ChipKeyArgs & { onClick?: () => void; onDelete?: () => void }) =>\n (event: KeyboardEvent): void => {\n const action = chipKeyAction(event.key, args);\n if (action === null) return;\n event.preventDefault();\n if (action === 'delete') {\n args.onDelete?.();\n return;\n }\n args.onClick?.();\n };\n\nexport const avatarFor = (\n avatar: ChipProps['avatar'],\n avatarSrc?: string,\n): ReactElement | undefined => {\n if (avatar && React.isValidElement(avatar)) {\n return avatar;\n }\n if (avatarSrc) {\n const { avatarSize } = CHIP_SIZES.medium;\n return <Avatar src={avatarSrc} sx={{ width: avatarSize, height: avatarSize }} />;\n }\n return undefined;\n};\n\ninterface ChipStyleArgs {\n variant: ChipProps['variant'];\n selected?: boolean;\n clickable?: boolean;\n disabled?: boolean;\n}\n\n/** The lift's shadow, per mode — the same numbers the native chip reads. */\nconst hoverShadow = (theme: Theme): string =>\n `0 ${HOVER_SHADOW.offsetY}px ${HOVER_SHADOW.blur}px ${shadowInk(\n theme,\n theme.palette.mode === 'dark' ? HOVER_SHADOW.alphaDark : HOVER_SHADOW.alphaLight,\n )}`;\n\n/**\n * Selection styling uses SEMANTIC palette tokens (not hardcoded rgba). A filled\n * selected chip keeps MUI's solid `color.main` + contrast text (clear active\n * state); an outlined selected chip gets a subtle theme-driven `action.selected`\n * tint so it reads as active without muddying the fill.\n */\nexport const chipStyles = ({\n variant,\n selected,\n clickable,\n disabled,\n}: ChipStyleArgs): SxProps<Theme> => {\n const lifts = clickable && !disabled;\n\n return {\n // Enhanced styling for outlined variant\n ...(variant === 'outlined' && {\n borderWidth: '1px',\n borderStyle: 'solid',\n backgroundColor: 'transparent',\n }),\n ...(selected &&\n variant === 'outlined' && {\n backgroundColor: (theme: Theme) => theme.palette.action.selected,\n }),\n '&:hover': {\n ...(lifts && {\n transform: `translateY(-${HOVER_LIFT_PX}px)`,\n boxShadow: (theme: Theme) => hoverShadow(theme),\n }),\n },\n '&:active': {\n ...(lifts && {\n transform: 'translateY(0px)',\n }),\n },\n transition: `all ${CHIP_TRANSITION_MS / 1000}s ${CHIP_TRANSITION_EASING}`,\n };\n};\n\nexport const iconWithTestId = (\n icon: ChipProps['icon'],\n testId: string,\n): ReactElement | undefined =>\n icon && React.isValidElement(icon)\n ? React.cloneElement(icon as ReactElement, {\n 'data-testid': testId,\n } as Record<string, unknown>)\n : undefined;\n"],"mappings":";;;;;;;;;;;;;;;AAAA,OAAO,YAAY;AAGnB,OAAO,WAAW;AAkCP;AAtBJ,IAAM,qBACX,CAAC,SACD,CAAC,UAA+B;AAC9B,QAAM,SAAS,cAAc,MAAM,KAAK,IAAI;AAC5C,MAAI,WAAW,KAAM;AACrB,QAAM,eAAe;AACrB,MAAI,WAAW,UAAU;AACvB,SAAK,WAAW;AAChB;AAAA,EACF;AACA,OAAK,UAAU;AACjB;AAEK,IAAM,YAAY,CACvB,QACA,cAC6B;AAC7B,MAAI,UAAU,MAAM,eAAe,MAAM,GAAG;AAC1C,WAAO;AAAA,EACT;AACA,MAAI,WAAW;AACb,UAAM,EAAE,WAAW,IAAI,WAAW;AAClC,WAAO,oBAAC,UAAO,KAAK,WAAW,IAAI,EAAE,OAAO,YAAY,QAAQ,WAAW,GAAG;AAAA,EAChF;AACA,SAAO;AACT;AAUA,IAAM,cAAc,CAAC,UACnB,KAAK,aAAa,OAAO,MAAM,aAAa,IAAI,MAAM;AAAA,EACpD;AAAA,EACA,MAAM,QAAQ,SAAS,SAAS,aAAa,YAAY,aAAa;AACxE,CAAC;AAQI,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAqC;AACnC,QAAM,QAAQ,aAAa,CAAC;AAE5B,SAAO;AAAA;AAAA,IAEL,GAAI,YAAY,cAAc;AAAA,MAC5B,aAAa;AAAA,MACb,aAAa;AAAA,MACb,iBAAiB;AAAA,IACnB;AAAA,IACA,GAAI,YACF,YAAY,cAAc;AAAA,MACxB,iBAAiB,CAAC,UAAiB,MAAM,QAAQ,OAAO;AAAA,IAC1D;AAAA,IACF,WAAW;AAAA,MACT,GAAI,SAAS;AAAA,QACX,WAAW,eAAe,aAAa;AAAA,QACvC,WAAW,CAAC,UAAiB,YAAY,KAAK;AAAA,MAChD;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV,GAAI,SAAS;AAAA,QACX,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,YAAY,OAAO,qBAAqB,GAAI,KAAK,sBAAsB;AAAA,EACzE;AACF;AAEO,IAAM,iBAAiB,CAC5B,MACA,WAEA,QAAQ,MAAM,eAAe,IAAI,IAC7B,MAAM,aAAa,MAAsB;AAAA,EACvC,eAAe;AACjB,CAA4B,IAC5B;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/DataViews/data-views-display-panel.tsx"],"sourcesContent":["\"use client\";\n\nimport type { DataViewsCopy } from \"./data-views-copy\";\nimport KeyboardArrowDownRoundedIcon from \"@mui/icons-material/KeyboardArrowDownRounded\";\n// Says \"display settings\" rather than the generic tune sliders it used to\n// share with the \"Mais\" FILTER trigger — see the note there.\nimport DisplaySettingsRoundedIcon from \"@mui/icons-material/DisplaySettingsRounded\";\nimport Popover from \"@mui/material/Popover/index.js\";\nimport { useState } from \"react\";\n\nimport { useDataViewsCopy } from \"./data-views-copy-context\";\nimport { Button } from \"../../form/Button\";\nimport { Box } from \"../../../mui/Box\";\n\nimport { ColumnsTab } from \"./data-views-columns-tab\";\nimport {\n ViewActions,\n ViewFooter,\n ViewHeader,\n ViewsList,\n type ViewNavHandlers,\n} from \"./data-views-view-nav\";\nimport type { SavedViewSummary } from \"./data-views-types\";\nimport { DisplayTab, SortTab } from \"./data-views-display-tabs\";\nimport type { DataViewsController } from \"./use-data-views-state\";\nimport { sxRem } from \"../../../tokens/relative\";\n\n/**\n * \"EXIBIR\" — one panel for every question about how the list is READ.\n *\n * Sort, columns and format used to be three separate toolbar dropdowns, which\n * asked the operator to already know which one held what. They are one decision\n * (\"how do I want to read this?\") so they are one control with three tabs.\n *\n * A view BRACKETS the panel: its name pinned at the top, the save actions\n * pinned at the bottom, both visible on every tab — so a change made in Colunas\n * is one glance away from the button that saves it. A separate \"Visão\" button\n * in the toolbar would be the same concept twice, in two places, disagreeing\n * about whether there are unsaved changes.\n */\n\n/** Which tab is showing. `columns` first: it is what an operator opens this for. */\ntype DisplayTabKey = \"sort\" | \"columns\" | \"display\";\n\nfunction displayTabs(copy: DataViewsCopy): { key: DisplayTabKey; label: string }[] {\n return [\n { key: \"sort\", label: copy.display.sortTab },\n { key: \"columns\", label: copy.display.columnsTab },\n { key: \"display\", label: copy.display.panelTab },\n ];\n}\n\n/** The saved-view chrome the panel brackets its tabs with, when a host supplies it. */\nexport interface DisplayPanelView {\n /** The applied view's name, or undefined for the built-in \"Visão principal\". */\n activeViewName?: string;\n /** True when the live state differs from the applied view (or from pristine). */\n dirty: boolean;\n /** Restore the applied view (or the pristine default) — discards local changes. */\n onReset: () => void;\n /** Persist the live state over the applied view. Absent ⇒ no update affordance. */\n onUpdate?: () => void;\n /** Persist the live state as a NEW view. */\n onSaveAs: () => void;\n /**\n * The saved views themselves, rendered INLINE in this panel's body when the\n * VISÃO header is opened — not as a dropdown of their own. The panel stays\n * data-free: the host owns the views and every mutation, this only decides\n * where they appear.\n */\n nav?: ViewNavHandlers;\n}\n\ninterface DisplayPanelProps<T extends Record<string, unknown>> {\n c: DataViewsController<T>;\n testIdPrefix: string;\n /** Per-sort-field value kind, so directions read in the column's own terms. */\n sortKinds?: Record<string, string>;\n view?: DisplayPanelView;\n /** Icon only — step 2 of the toolbar's measured degradation ladder. */\n compact?: boolean;\n}\n\n/** The tab strip inside the panel. */\nfunction PanelTabs({\n tab,\n onChange,\n muted,\n testIdPrefix,\n}: {\n tab: DisplayTabKey;\n onChange: (tab: DisplayTabKey) => void;\n /** The views own the body — no tab is showing, so none reads as selected. */\n muted?: boolean;\n testIdPrefix: string;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n return (\n <Box sx={{ display: \"flex\", gap: 0.5, p: 0.75, bgcolor: \"action.hover\", borderBottom: 1, borderColor: \"divider\" }}>\n {displayTabs(copy).map((entry) => {\n const active = tab === entry.key && !muted;\n return (\n <Box\n key={entry.key}\n component=\"button\"\n type=\"button\"\n onClick={() => onChange(entry.key)}\n data-testid={`${testIdPrefix}-display-tab-${entry.key}`}\n aria-current={active}\n sx={{\n flex: 1,\n px: 1,\n py: 0.75,\n border: 0,\n borderRadius: 1,\n cursor: \"pointer\",\n font: \"inherit\",\n fontSize: sxRem(13),\n bgcolor: active ? \"background.paper\" : \"transparent\",\n boxShadow: active ? 1 : 0,\n fontWeight: active ? 600 : 400,\n color: active ? \"text.primary\" : \"text.secondary\",\n }}\n >\n {entry.label}\n </Box>\n );\n })}\n </Box>\n );\n}\n\n/** The active tab's body. */\nfunction PanelBody<T extends Record<string, unknown>>({\n tab,\n c,\n sortKinds,\n testIdPrefix,\n}: {\n tab: DisplayTabKey;\n c: DataViewsController<T>;\n sortKinds?: Record<string, string>;\n testIdPrefix: string;\n}): React.JSX.Element {\n if (tab === \"sort\") {\n return (\n <SortTab\n fields={c.resolvedSortFields}\n activeField={c.activeSortField}\n activeOrder={c.activeSortOrder}\n onChange={(field, order) => c.patch({ sortBy: [{ id: field, dir: order }] })}\n sortKinds={sortKinds}\n testIdPrefix={testIdPrefix}\n />\n );\n }\n if (tab === \"columns\") {\n return (\n <ColumnsTab\n columns={c.hideableColumns}\n order={c.columnOrder}\n visibleColumns={c.state.visibleColumns}\n onToggle={c.toggleColumn}\n onReorder={(order) => c.patch({ order })}\n onShowAll={() => c.patch({ visibleColumns: c.columnOrder })}\n // \"Padrão\" restores BOTH: the declared order and every column visible.\n onReset={() => c.patch({ visibleColumns: c.columnOrder, order: undefined })}\n testIdPrefix={testIdPrefix}\n />\n );\n }\n return <DisplayTab testIdPrefix={testIdPrefix} />;\n}\n\n/** Everything inside the popover: VISÃO header, tabs, body, save footer. */\nfunction PanelSurface<T extends Record<string, unknown>>({\n c, view, nav, tab, onTab, viewsOpen, onToggleViews, actionsFor, onOpenActions,\n onBack, sortKinds, onDone, testIdPrefix,\n}: {\n c: DataViewsController<T>;\n view?: DisplayPanelView;\n nav?: ViewNavHandlers;\n tab: DisplayTabKey;\n onTab: (tab: DisplayTabKey) => void;\n viewsOpen: boolean;\n onToggleViews: () => void;\n actionsFor: SavedViewSummary | null;\n onOpenActions: (view: SavedViewSummary) => void;\n onBack: () => void;\n sortKinds?: Record<string, string>;\n onDone: () => void;\n testIdPrefix: string;\n}): React.JSX.Element {\n return (\n <Box data-testid={`${testIdPrefix}-display-panel`}>\n {view && (\n <ViewHeader\n view={view}\n open={viewsOpen}\n onToggle={onToggleViews}\n testIdPrefix={testIdPrefix}\n />\n )}\n <PanelTabs\n tab={tab}\n onChange={onTab}\n muted={Boolean(nav)}\n testIdPrefix={testIdPrefix}\n />\n {/* Constrained + scrolled: the columns list is unbounded, and a panel\n taller than the viewport puts its own save button off screen. */}\n <Box sx={{ maxHeight: 320, minHeight: 220, overflowY: \"auto\" }}>\n {nav ? (\n <ViewsBody\n nav={nav}\n actionsFor={actionsFor}\n onOpenActions={onOpenActions}\n onBack={onBack}\n testIdPrefix={testIdPrefix}\n />\n ) : (\n <PanelBody tab={tab} c={c} sortKinds={sortKinds} testIdPrefix={testIdPrefix} />\n )}\n </Box>\n {view && <ViewFooter view={view} onDone={onDone} testIdPrefix={testIdPrefix} />}\n </Box>\n );\n}\n\n\n/** The views as the panel's body: the list, or one view's actions. */\nfunction ViewsBody({\n nav,\n actionsFor,\n onOpenActions,\n onBack,\n testIdPrefix,\n}: {\n nav: ViewNavHandlers;\n actionsFor: SavedViewSummary | null;\n onOpenActions: (view: SavedViewSummary) => void;\n onBack: () => void;\n testIdPrefix: string;\n}): React.JSX.Element {\n // Resolve against the LIVE list, not the object captured when the kebab was\n // clicked: toggling \"Fixar\" or \"Compartilhar\" replaces the view in `views`,\n // and a held snapshot would keep showing the state from before the click.\n const live = actionsFor ? nav.views.find((view) => view.id === actionsFor.id) : undefined;\n if (live) {\n return <ViewActions view={live} handlers={nav} onBack={onBack} testIdPrefix={testIdPrefix} />;\n }\n return <ViewsList handlers={nav} onOpenActions={onOpenActions} testIdPrefix={testIdPrefix} />;\n}\n\n/** The \"Exibir\" button, with the dot that says the view has unsaved changes. */\nfunction DisplayTrigger({\n dirty,\n compact,\n onOpen,\n testIdPrefix,\n}: {\n dirty: boolean;\n compact: boolean;\n onOpen: (anchor: HTMLElement) => void;\n testIdPrefix: string;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n return (\n <Button\n variant=\"outline\"\n size=\"sm\"\n color=\"neutral\"\n onClick={(event) => onOpen(event.currentTarget as HTMLElement)}\n dataTestId={`${testIdPrefix}-display-trigger`}\n aria-label={copy.display.trigger}\n title={compact ? copy.display.trigger : undefined}\n >\n <Box component=\"span\" sx={{ display: \"inline-flex\", alignItems: \"center\", gap: 0.5 }}>\n <DisplaySettingsRoundedIcon fontSize=\"small\" />\n {!compact && (\n <Box component=\"span\" sx={{ display: { xs: \"none\", sm: \"inline\" } }}>\n {copy.display.trigger}\n </Box>\n )}\n {dirty && (\n <Box component=\"span\" sx={{ height: 6, width: 6, borderRadius: \"50%\", bgcolor: \"primary.main\" }} />\n )}\n {/* The chevron goes with the label. Once the control is a bare icon it\n is already unmistakably a button, and on the rung where that happens\n the ~24px it costs is the difference between a row that fits and one\n that scrolls. */}\n {!compact && <KeyboardArrowDownRoundedIcon fontSize=\"small\" />}\n </Box>\n </Button>\n );\n}\n\n/**\n * The toolbar's \"Exibir\" control: one button, one popover, three tabs, and the\n * view bracketing all of it.\n */\nexport function DataViewsDisplayPanel<T extends Record<string, unknown>>({\n c,\n testIdPrefix,\n sortKinds,\n view,\n compact,\n}: DisplayPanelProps<T>): React.JSX.Element {\n const [anchor, setAnchor] = useState<HTMLElement | null>(null);\n const [tab, setTab] = useState<DisplayTabKey>(\"columns\");\n // The views REPLACE the tab body rather than opening over it — see\n // `data-views-view-nav`. `actionsFor` is the second level of that drill-down.\n const [viewsOpen, setViewsOpen] = useState(false);\n const [actionsFor, setActionsFor] = useState<SavedViewSummary | null>(null);\n // Non-null only while the views are the body — the one place that decides\n // whether this panel is showing tabs or views.\n const nav = viewsOpen ? view?.nav : undefined;\n const close = (): void => setAnchor(null);\n const leaveViews = (): void => {\n setViewsOpen(false);\n setActionsFor(null);\n };\n return (\n <>\n <DisplayTrigger\n dirty={Boolean(view?.dirty)}\n compact={Boolean(compact)}\n onOpen={setAnchor}\n testIdPrefix={testIdPrefix}\n />\n <Popover\n open={Boolean(anchor)}\n anchorEl={anchor}\n onClose={close}\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\n slotProps={{ paper: { sx: { width: 320, maxWidth: \"calc(100vw - 32px)\" } } }}\n >\n <PanelSurface\n c={c}\n view={view}\n nav={nav}\n tab={tab}\n onTab={(next) => {\n setTab(next);\n leaveViews();\n }}\n viewsOpen={viewsOpen}\n onToggleViews={() => {\n setViewsOpen((prev) => !prev);\n setActionsFor(null);\n }}\n actionsFor={actionsFor}\n onOpenActions={setActionsFor}\n onBack={() => setActionsFor(null)}\n sortKinds={sortKinds}\n onDone={close}\n testIdPrefix={testIdPrefix}\n />\n </Popover>\n </>\n );\n}\n"],"mappings":"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","names":["default"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Sheet/Sheet.body.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport React from 'react';\n\nimport { SheetContent, SheetFooter, SheetHeader } from './Sheet.parts';\nimport type { SheetProps } from './Sheet.types';\nimport { muiColor } from '../../../tokens/scales';\n\nexport interface SheetBodyProps extends Pick<\n SheetProps,\n | 'title'\n | 'description'\n | 'showCloseButton'\n | 'showHandle'\n | 'header'\n | 'footer'\n | 'loading'\n | 'color'\n | 'children'\n | 'onClick'\n | 'onFocus'\n | 'onBlur'\n> {\n testId: string;\n isDragging: boolean;\n isVerticalSheet: boolean;\n isDraggableVariant: boolean;\n onClose: () => void;\n onDragStart: (e: React.MouseEvent | React.TouchEvent) => void;\n}\n\n/**\n * The header earns its place if it would show anything at all — a grab handle,\n * either piece of text, the close button, or caller-supplied content.\n */\nconst needsHeader = (props: SheetBodyProps) =>\n Boolean(\n props.showHandle ||\n props.title ||\n props.description ||\n props.showCloseButton ||\n props.header,\n );\n\n/** The centred spinner shown in place of the children while `loading`. */\nconst SheetLoading: React.FC<Pick<SheetBodyProps, 'color'>> = ({ color }) => (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: 200,\n }}\n >\n <CircularProgress color={color === undefined ? undefined : muiColor(color, 'inherit')} />\n </Box>\n);\n\n/**\n * What the sheet contains, independent of which drawer is carrying it. The\n * swipeable and plain branches render exactly this — they differ only in the\n * MUI component and its swipe props, so the contents are built once.\n */\nexport const SheetBody: React.FC<SheetBodyProps> = (props) => {\n const {\n title,\n description,\n showCloseButton,\n showHandle,\n header,\n footer,\n loading,\n color,\n children,\n onClick,\n onFocus,\n onBlur,\n testId,\n isDragging,\n isVerticalSheet,\n isDraggableVariant,\n onClose,\n onDragStart,\n } = props;\n\n return (\n <Box\n onClick={onClick}\n onFocus={onFocus}\n onBlur={onBlur}\n data-testid={testId}\n sx={{\n // A vertical sheet's panel is a column whose height is its CONTENT, up\n // to the `size` ceiling — so this fills what the panel has rather than\n // asking for a percentage of it, and `minHeight: 0` is what lets it\n // shrink past its content so `SheetContent` scrolls instead of the\n // panel overflowing. A side sheet's panel is full-height already.\n ...(isVerticalSheet ? { flex: '1 1 auto', minHeight: 0 } : { height: '100%' }),\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n userSelect: isDragging ? 'none' : 'auto',\n }}\n >\n {needsHeader(props) && (\n <SheetHeader\n title={title}\n description={description}\n showCloseButton={showCloseButton}\n onClose={onClose}\n showHandle={showHandle && isVerticalSheet}\n isDraggable={isDraggableVariant && isVerticalSheet}\n onDragStart={onDragStart}\n dataTestId={`${testId}-header`}\n >\n {header}\n </SheetHeader>\n )}\n\n <SheetContent padded dataTestId={`${testId}-content`}>\n {loading ? <SheetLoading color={color} /> : children}\n </SheetContent>\n\n {footer && (\n <SheetFooter sticky divider dataTestId={`${testId}-footer`}>\n {footer}\n </SheetFooter>\n )}\n </Box>\n );\n};\n"],"mappings":";;;;;;;;;;AAAA,OAAO,SAAS;AAChB,OAAO,sBAAsB;AAqDzB,cAgCA,YAhCA;AAnBJ,IAAM,cAAc,CAAC,UACnB;AAAA,EACE,MAAM,cACN,MAAM,SACN,MAAM,eACN,MAAM,mBACN,MAAM;AACR;AAGF,IAAM,eAAwD,CAAC,EAAE,MAAM,MACrE;AAAA,EAAC;AAAA;AAAA,IACC,IAAI;AAAA,MACF,SAAS;AAAA,MACT,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,WAAW;AAAA,IACb;AAAA,IAEA,8BAAC,oBAAiB,OAAO,UAAU,SAAY,SAAY,SAAS,OAAO,SAAS,GAAG;AAAA;AACzF;AAQK,IAAM,YAAsC,CAAC,UAAU;AAC5D,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAa;AAAA,MACb,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMF,GAAI,kBAAkB,EAAE,MAAM,YAAY,WAAW,EAAE,IAAI,EAAE,QAAQ,OAAO;AAAA,QAC5E,SAAS;AAAA,QACT,eAAe;AAAA,QACf,UAAU;AAAA,QACV,YAAY,aAAa,SAAS;AAAA,MACpC;AAAA,MAEC;AAAA,oBAAY,KAAK,KAChB;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,YAAY,cAAc;AAAA,YAC1B,aAAa,sBAAsB;AAAA,YACnC;AAAA,YACA,YAAY,GAAG,MAAM;AAAA,YAEpB;AAAA;AAAA,QACH;AAAA,QAGF,oBAAC,gBAAa,QAAM,MAAC,YAAY,GAAG,MAAM,YACvC,oBAAU,oBAAC,gBAAa,OAAc,IAAK,UAC9C;AAAA,QAEC,UACC,oBAAC,eAAY,QAAM,MAAC,SAAO,MAAC,YAAY,GAAG,MAAM,WAC9C,kBACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/DataViews/data-views-empty.tsx"],"sourcesContent":["\"use client\";\n\nimport FilterAltOffRoundedIcon from \"@mui/icons-material/FilterAltOffRounded\";\nimport InboxRoundedIcon from \"@mui/icons-material/InboxRounded\";\n\nimport { Button } from \"../../form/Button\";\nimport { Box } from \"../../../mui/Box\";\nimport { Text } from \"../../typography/Text\";\n\nimport { useDataViewsCopy } from \"./data-views-copy-context\";\n\n/**\n * TWO EMPTY STATES, NOT ONE.\n *\n * \"Nenhum pagamento registrado\" under an active filter is a lie, and it is the\n * expensive kind: the operator reads it as \"this store has no payments\" and\n * goes looking for the bug somewhere else. The page's own empty copy answers\n * \"there is nothing here yet\"; it cannot answer \"nothing matches what you\n * typed\", because it does not know what was typed.\n *\n * So the grid renders the FILTERED variant itself — it is the only party that\n * knows a filter is applied — and defers to the host's `emptyState` only when\n * the list is genuinely empty. The filtered one carries the way out, which is\n * the whole point: the fix is one click, and it is right there.\n */\nexport function DataViewsEmpty({\n filtered,\n onClearFilters,\n emptyState,\n testIdPrefix,\n}: {\n /** Is anything narrowing the list right now (search, pills or ranges)? */\n filtered: boolean;\n onClearFilters: () => void;\n /** The page's own copy for a genuinely empty list. */\n emptyState?: React.ReactNode;\n testIdPrefix: string;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n const Icon = filtered ? FilterAltOffRoundedIcon : InboxRoundedIcon;\n return (\n <Box\n data-testid={`${testIdPrefix}-empty${filtered ? \"-filtered\" : \"\"}`}\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n textAlign: \"center\",\n py: 8,\n px: 2,\n }}\n >\n <Box\n sx={{\n display: \"inline-flex\",\n p: 2,\n mb: 1.5,\n borderRadius: \"50%\",\n bgcolor: \"action.hover\",\n color: \"text.disabled\",\n }}\n >\n <Icon />\n </Box>\n {filtered ? (\n <>\n <Text variant=\"body\" as=\"p\">\n <Box component=\"span\" sx={{ fontWeight: 600 }}>\n {copy.grid.emptyFilteredTitle}\n </Box>\n </Text>\n <Text variant=\"caption\" as=\"p\">\n <Box component=\"span\" sx={{ display: \"block\", mt: 0.5, mb: 2, color: \"text.secondary\", maxWidth: 380 }}>\n {copy.grid.emptyFilteredHint}\n </Box>\n </Text>\n <Button\n variant=\"outline\"\n size=\"sm\"\n color=\"secondary\"\n onClick={onClearFilters}\n dataTestId={`${testIdPrefix}-empty-clear`}\n >\n {copy.grid.emptyFilteredAction}\n </Button>\n </>\n ) : (\n // The page's own words for \"nothing here yet\" — it knows what the\n // entity is and how one comes to exist; this component does not.\n emptyState\n )}\n </Box>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AAEA,OAAO,6BAA6B;AACpC,OAAO,sBAAsB;AA2DrB,SAGA,UAHA,KAGA,YAHA;AArCD,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOsB;AACpB,QAAM,OAAO,iBAAiB;AAC9B,QAAM,OAAO,WAAW,0BAA0B;AAClD,SACE;AAAA,IAACA;AAAA,IAAA;AAAA,MACC,eAAa,GAAG,YAAY,SAAS,WAAW,cAAc,EAAE;AAAA,MAChE,IAAI;AAAA,QACF,SAAS;AAAA,QACT,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MAEA;AAAA;AAAA,UAACA;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,SAAS;AAAA,cACT,GAAG;AAAA,cACH,IAAI;AAAA,cACJ,cAAc;AAAA,cACd,SAAS;AAAA,cACT,OAAO;AAAA,YACT;AAAA,YAEA,8BAAC,QAAK;AAAA;AAAA,QACR;AAAA,QACC,WACC,iCACE;AAAA,8BAAC,QAAK,SAAQ,QAAO,IAAG,KACtB,8BAACA,UAAA,EAAI,WAAU,QAAO,IAAI,EAAE,YAAY,IAAI,GACzC,eAAK,KAAK,oBACb,GACF;AAAA,UACA,oBAAC,QAAK,SAAQ,WAAU,IAAG,KACzB,8BAACA,UAAA,EAAI,WAAU,QAAO,IAAI,EAAE,SAAS,SAAS,IAAI,KAAK,IAAI,GAAG,OAAO,kBAAkB,UAAU,IAAI,GAClG,eAAK,KAAK,mBACb,GACF;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,OAAM;AAAA,cACN,SAAS;AAAA,cACT,YAAY,GAAG,YAAY;AAAA,cAE1B,eAAK,KAAK;AAAA;AAAA,UACb;AAAA,WACF;AAAA;AAAA;AAAA,UAIA;AAAA;AAAA;AAAA;AAAA,EAEJ;AAEJ;","names":["default"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/MapPreview/MapControlBar.tsx"],"sourcesContent":["import FullscreenIcon from '@mui/icons-material/Fullscreen';\nimport LayersIcon from '@mui/icons-material/Layers';\nimport CenterIcon from '@mui/icons-material/MyLocation';\nimport ZoomInIcon from '@mui/icons-material/ZoomIn';\nimport ZoomOutIcon from '@mui/icons-material/ZoomOut';\nimport Box from '@mui/material/Box/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Tooltip from '@mui/material/Tooltip/index.js';\nimport { alpha, styled } from '@mui/material/styles/index.js';\nimport type { FC } from 'react';\nimport React from 'react';\n\nimport { MAX_ZOOM, MIN_ZOOM } from './MapPreview.constants';\nimport type { MapType } from './MapPreview.types';\nimport type { MapPreviewCopy } from '../../../copy';\n\n// Kept module-local: the inferred type of a styled() component cannot be named\n// across a module boundary here (TS2742).\nconst MapControls = styled(Box)(({ theme }) => ({\n position: 'absolute',\n top: theme.spacing(2),\n right: theme.spacing(2),\n zIndex: 1,\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n}));\n\nconst ControlButton = styled(IconButton)(({ theme }) => ({\n background: alpha(theme.palette.background.paper, 0.95),\n backdropFilter: 'blur(10px)',\n WebkitBackdropFilter: 'blur(10px)',\n border: `1px solid ${alpha(theme.palette.divider, 0.2)}`,\n boxShadow: theme.shadows[2],\n // Kept clickable while disabled so hover tooltips still work at the limits.\n pointerEvents: 'auto',\n '&:hover': {\n background: theme.palette.background.paper,\n transform: 'scale(1.05)',\n },\n '&:disabled': {\n opacity: 0.5,\n pointerEvents: 'auto',\n },\n}));\n\nexport interface MapControlBarProps {\n /**\n * The six controls' names. Every one is a glyph with a `title` AND an\n * `aria-label`, so this object is both the tooltip and what a screen reader\n * reads — REQUIRED, because a default is one language for every adopter.\n */\n copy: MapPreviewCopy;\n zoom: number;\n mapType: MapType;\n onZoomIn: () => void;\n onZoomOut: () => void;\n onCenter: () => void;\n onToggleMapType: () => void;\n onToggleFullscreen: () => void;\n}\n\nexport const MapControlBar: FC<MapControlBarProps> = ({\n copy,\n zoom,\n mapType,\n onZoomIn,\n onZoomOut,\n onCenter,\n onToggleMapType,\n onToggleFullscreen,\n}) => (\n <MapControls data-testid=\"map-controls\">\n <Tooltip title={copy.zoomIn} placement=\"left\">\n <ControlButton\n size=\"small\"\n onClick={onZoomIn}\n aria-label={copy.zoomIn}\n data-testid=\"zoom-in-button\"\n disabled={zoom >= MAX_ZOOM}\n >\n <ZoomInIcon fontSize=\"small\" />\n </ControlButton>\n </Tooltip>\n <Tooltip title={copy.zoomOut} placement=\"left\">\n <ControlButton\n size=\"small\"\n onClick={onZoomOut}\n aria-label={copy.zoomOut}\n data-testid=\"zoom-out-button\"\n disabled={zoom <= MIN_ZOOM}\n >\n <ZoomOutIcon fontSize=\"small\" />\n </ControlButton>\n </Tooltip>\n <Tooltip title={copy.center} placement=\"left\">\n <ControlButton\n size=\"small\"\n onClick={onCenter}\n aria-label={copy.center}\n data-testid=\"center-button\"\n >\n <CenterIcon fontSize=\"small\" />\n </ControlButton>\n </Tooltip>\n <Tooltip title={`Map type: ${mapType}`} placement=\"left\">\n <ControlButton\n size=\"small\"\n onClick={onToggleMapType}\n aria-label={copy.mapType}\n data-testid=\"map-type-button\"\n >\n <LayersIcon fontSize=\"small\" />\n </ControlButton>\n </Tooltip>\n <Tooltip title={copy.fullscreen} placement=\"left\">\n <ControlButton\n size=\"small\"\n onClick={onToggleFullscreen}\n aria-label={copy.fullscreen}\n data-testid=\"fullscreen-button\"\n >\n <FullscreenIcon fontSize=\"small\" />\n </ControlButton>\n </Tooltip>\n </MapControls>\n);\n"],"mappings":";;;;;;AAAA,OAAO,oBAAoB;AAC3B,OAAO,gBAAgB;AACvB,OAAO,gBAAgB;AACvB,OAAO,gBAAgB;AACvB,OAAO,iBAAiB;AACxB,OAAO,SAAS;AAChB,OAAO,gBAAgB;AACvB,OAAO,aAAa;AACpB,SAAS,OAAO,cAAc;AAgE5B,SASM,KATN;AAtDF,IAAM,cAAc,OAAO,GAAG,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EAC9C,UAAU;AAAA,EACV,KAAK,MAAM,QAAQ,CAAC;AAAA,EACpB,OAAO,MAAM,QAAQ,CAAC;AAAA,EACtB,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,eAAe;AAAA,EACf,KAAK,MAAM,QAAQ,CAAC;AACtB,EAAE;AAEF,IAAM,gBAAgB,OAAO,UAAU,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EACvD,YAAY,MAAM,MAAM,QAAQ,WAAW,OAAO,IAAI;AAAA,EACtD,gBAAgB;AAAA,EAChB,sBAAsB;AAAA,EACtB,QAAQ,aAAa,MAAM,MAAM,QAAQ,SAAS,GAAG,CAAC;AAAA,EACtD,WAAW,MAAM,QAAQ,CAAC;AAAA;AAAA,EAE1B,eAAe;AAAA,EACf,WAAW;AAAA,IACT,YAAY,MAAM,QAAQ,WAAW;AAAA,IACrC,WAAW;AAAA,EACb;AAAA,EACA,cAAc;AAAA,IACZ,SAAS;AAAA,IACT,eAAe;AAAA,EACjB;AACF,EAAE;AAkBK,IAAM,gBAAwC,CAAC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MACE,qBAAC,eAAY,eAAY,gBACvB;AAAA,sBAAC,WAAQ,OAAO,KAAK,QAAQ,WAAU,QACrC;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS;AAAA,MACT,cAAY,KAAK;AAAA,MACjB,eAAY;AAAA,MACZ,UAAU,QAAQ;AAAA,MAElB,8BAAC,cAAW,UAAS,SAAQ;AAAA;AAAA,EAC/B,GACF;AAAA,EACA,oBAAC,WAAQ,OAAO,KAAK,SAAS,WAAU,QACtC;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS;AAAA,MACT,cAAY,KAAK;AAAA,MACjB,eAAY;AAAA,MACZ,UAAU,QAAQ;AAAA,MAElB,8BAAC,eAAY,UAAS,SAAQ;AAAA;AAAA,EAChC,GACF;AAAA,EACA,oBAAC,WAAQ,OAAO,KAAK,QAAQ,WAAU,QACrC;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS;AAAA,MACT,cAAY,KAAK;AAAA,MACjB,eAAY;AAAA,MAEZ,8BAAC,cAAW,UAAS,SAAQ;AAAA;AAAA,EAC/B,GACF;AAAA,EACA,oBAAC,WAAQ,OAAO,aAAa,OAAO,IAAI,WAAU,QAChD;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS;AAAA,MACT,cAAY,KAAK;AAAA,MACjB,eAAY;AAAA,MAEZ,8BAAC,cAAW,UAAS,SAAQ;AAAA;AAAA,EAC/B,GACF;AAAA,EACA,oBAAC,WAAQ,OAAO,KAAK,YAAY,WAAU,QACzC;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS;AAAA,MACT,cAAY,KAAK;AAAA,MACjB,eAAY;AAAA,MAEZ,8BAAC,kBAAe,UAAS,SAAQ;AAAA;AAAA,EACnC,GACF;AAAA,GACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Chart/Chart.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport Paper from '@mui/material/Paper/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, useTheme, type Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport type { ChartProps } from './Chart.types';\nimport { ChartContainer } from './ChartComposables';\nimport { getSizeStyles, getVariantStyles } from './chart-internals';\nimport { renderChartByType } from './chart-renderers';\nimport { uiInk } from '../../../tokens/ink';\nimport { muiColor } from '../../../tokens/scales';\n\n/**\n * Prop-driven Recharts wrapper (line/bar/area/pie/radar/scatter/composed)\n * with MUI-themed chrome. The serializable-spec API (`SpecChart`) layers on\n * top of this component; type-specific rendering lives in\n * `chart-renderers.tsx` and styling in `chart-internals.ts`.\n */\n\nfunction variantSx(theme: Theme, props: ChartProps): Record<string, unknown> {\n return getVariantStyles(theme, {\n variant: props.variant ?? 'default',\n color: props.color ?? 'primary',\n glow: props.glow ?? false,\n pulse: props.pulse ?? false,\n glass: props.glass ?? false,\n gradient: props.gradient ?? false,\n disabled: props.disabled ?? false,\n });\n}\n\ninterface HeaderProps {\n title?: string;\n subtitle?: string;\n neon: boolean;\n dataTestId: string;\n}\n\nfunction ChartHeader({ title, subtitle, neon, dataTestId }: HeaderProps): React.ReactElement | null {\n if (!title && !subtitle) return null;\n return (\n <Box sx={{ mb: 2 }} data-testid={`${dataTestId}-header`}>\n {title && (\n <Typography\n variant=\"h6\"\n data-testid={`${dataTestId}-title`}\n sx={(theme) => ({ color: neon ? uiInk(theme).dataVizNeon.accent : 'text.primary', fontWeight: 600 })}\n >\n {title}\n </Typography>\n )}\n {subtitle && (\n <Typography\n variant=\"body2\"\n data-testid={`${dataTestId}-subtitle`}\n sx={(theme) => ({ color: neon ? alpha(uiInk(theme).dataVizNeon.accent, 0.7) : 'text.secondary' })}\n >\n {subtitle}\n </Typography>\n )}\n </Box>\n );\n}\n\nexport const Chart: React.FC<ChartProps> = (props) => {\n const theme = useTheme();\n const sizeStyles = getSizeStyles(theme, props.size, props.height);\n const styles = variantSx(theme, props);\n const dataTestId = props['data-testid'] ?? 'chart';\n\n if (props.loading) {\n return (\n <Paper\n data-testid={`${dataTestId}-loading`}\n sx={{ ...styles, ...sizeStyles, display: 'flex', justifyContent: 'center', alignItems: 'center' }}\n >\n <CircularProgress color={muiColor(props.color ?? 'primary', 'inherit')} data-testid={`${dataTestId}-loading-spinner`} />\n </Paper>\n );\n }\n\n return (\n <Paper\n data-testid={dataTestId}\n className={props.className}\n sx={{ p: 2, ...styles, ...props.style }}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n >\n <ChartHeader\n title={props.title}\n subtitle={props.subtitle}\n neon={props.variant === 'neon'}\n dataTestId={dataTestId}\n />\n <ChartContainer\n responsive={props.responsive ?? true}\n width={props.width ?? '100%'}\n height={props.fillHeight === true ? '100%' : sizeStyles.height}\n data-testid={`${dataTestId}-container`}\n >\n {renderChartByType(props, theme)}\n </ChartContainer>\n </Paper>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAO,SAAS;AAChB,OAAO,sBAAsB;AAC7B,OAAO,WAAW;AAClB,OAAO,gBAAgB;AACvB,SAAS,OAAO,gBAA4B;AAuCxC,SAEI,KAFJ;AAtBJ,SAAS,UAAU,OAAc,OAA4C;AAC3E,SAAO,iBAAiB,OAAO;AAAA,IAC7B,SAAS,MAAM,WAAW;AAAA,IAC1B,OAAO,MAAM,SAAS;AAAA,IACtB,MAAM,MAAM,QAAQ;AAAA,IACpB,OAAO,MAAM,SAAS;AAAA,IACtB,OAAO,MAAM,SAAS;AAAA,IACtB,UAAU,MAAM,YAAY;AAAA,IAC5B,UAAU,MAAM,YAAY;AAAA,EAC9B,CAAC;AACH;AASA,SAAS,YAAY,EAAE,OAAO,UAAU,MAAM,WAAW,GAA2C;AAClG,MAAI,CAAC,SAAS,CAAC,SAAU,QAAO;AAChC,SACE,qBAAC,OAAI,IAAI,EAAE,IAAI,EAAE,GAAG,eAAa,GAAG,UAAU,WAC3C;AAAA,aACC;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,eAAa,GAAG,UAAU;AAAA,QAC1B,IAAI,CAAC,WAAW,EAAE,OAAO,OAAO,MAAM,KAAK,EAAE,YAAY,SAAS,gBAAgB,YAAY,IAAI;AAAA,QAEjG;AAAA;AAAA,IACH;AAAA,IAED,YACC;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,eAAa,GAAG,UAAU;AAAA,QAC1B,IAAI,CAAC,WAAW,EAAE,OAAO,OAAO,MAAM,MAAM,KAAK,EAAE,YAAY,QAAQ,GAAG,IAAI,iBAAiB;AAAA,QAE9F;AAAA;AAAA,IACH;AAAA,KAEJ;AAEJ;AAEO,IAAM,QAA8B,CAAC,UAAU;AACpD,QAAM,QAAQ,SAAS;AACvB,QAAM,aAAa,cAAc,OAAO,MAAM,MAAM,MAAM,MAAM;AAChE,QAAM,SAAS,UAAU,OAAO,KAAK;AACrC,QAAM,aAAa,MAAM,aAAa,KAAK;AAE3C,MAAI,MAAM,SAAS;AACjB,WACE;AAAA,MAAC;AAAA;AAAA,QACC,eAAa,GAAG,UAAU;AAAA,QAC1B,IAAI,EAAE,GAAG,QAAQ,GAAG,YAAY,SAAS,QAAQ,gBAAgB,UAAU,YAAY,SAAS;AAAA,QAEhG,8BAAC,oBAAiB,OAAO,SAAS,MAAM,SAAS,WAAW,SAAS,GAAG,eAAa,GAAG,UAAU,oBAAoB;AAAA;AAAA,IACxH;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAa;AAAA,MACb,WAAW,MAAM;AAAA,MACjB,IAAI,EAAE,GAAG,GAAG,GAAG,QAAQ,GAAG,MAAM,MAAM;AAAA,MACtC,SAAS,MAAM;AAAA,MACf,QAAQ,MAAM;AAAA,MAEd;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,MAAM;AAAA,YACb,UAAU,MAAM;AAAA,YAChB,MAAM,MAAM,YAAY;AAAA,YACxB;AAAA;AAAA,QACF;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,YAAY,MAAM,cAAc;AAAA,YAChC,OAAO,MAAM,SAAS;AAAA,YACtB,QAAQ,MAAM,eAAe,OAAO,SAAS,WAAW;AAAA,YACxD,eAAa,GAAG,UAAU;AAAA,YAEzB,4BAAkB,OAAO,KAAK;AAAA;AAAA,QACjC;AAAA;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Lightbox/Lightbox.tsx"],"sourcesContent":["import Dialog from '@mui/material/Dialog/index.js';\nimport Fade from '@mui/material/Fade/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { makeTestId } from './Lightbox.constants';\nimport { resolveLightboxProps } from './Lightbox.helpers';\nimport { LightboxCopyProvider } from './lightbox-copy-context';\nimport type { LightboxProps, LightboxRef } from './Lightbox.types';\nimport { LightboxCurrentMedia } from './LightboxCurrentMedia';\nimport { LightboxOverlay } from './LightboxOverlay';\nimport { LightboxStage } from './LightboxStage';\nimport { LightboxThumbnails } from './LightboxThumbnails';\nimport { useLightbox } from './useLightbox';\nimport { scrim } from '../../../tokens/ink';\n\nconst DIALOG_STATIC_PROPS = {\n maxWidth: false,\n fullScreen: true,\n TransitionComponent: Fade,\n TransitionProps: { timeout: 300 },\n PaperProps: { sx: { background: (theme: Theme) => scrim(theme, 0.9), backdropFilter: 'blur(2px)' } },\n 'aria-label': 'Lightbox',\n 'aria-labelledby': 'lightbox-title',\n role: 'dialog',\n 'aria-modal': 'true',\n} as const;\n\nexport const Lightbox = React.forwardRef<LightboxRef, LightboxProps>((componentProps, ref) => {\n const props = resolveLightboxProps(componentProps);\n const { isOpen, items, loop, autoplay, showControls, showCaptions, thumbnails, zoomable } = props;\n const { className, style, dataTestId } = props;\n\n const testId = makeTestId(dataTestId);\n const lightbox = useLightbox(props, ref);\n const { currentIndex, currentItem, zoom } = lightbox;\n\n return (\n <LightboxCopyProvider copy={props.copy}>\n <Dialog\n open={isOpen}\n onClose={lightbox.close}\n {...DIALOG_STATIC_PROPS}\n className={className}\n style={style}\n onTouchStart={lightbox.handleTouchStart}\n onTouchEnd={lightbox.handleTouchEnd}\n data-testid={dataTestId || 'lightbox'}\n >\n {/* Visually hidden title for screen readers */}\n <Typography id=\"lightbox-title\" variant=\"h6\" sx={{ position: 'absolute', left: -10000 }}>\n Lightbox - {currentItem?.alt || `Item ${currentIndex + 1} of ${items.length}`}\n </Typography>\n\n <LightboxOverlay\n testId={testId}\n itemCount={items.length}\n currentIndex={currentIndex}\n showControls={showControls}\n loop={loop}\n autoplay={autoplay}\n canZoom={lightbox.canZoom}\n isAutoPlaying={lightbox.isAutoPlaying}\n onClose={lightbox.close}\n onPrev={lightbox.prev}\n onNext={lightbox.next}\n onZoomIn={zoom.zoomIn}\n onZoomOut={zoom.zoomOut}\n onResetZoom={zoom.resetZoom}\n onToggleAutoplay={() => lightbox.setIsAutoPlaying((playing) => !playing)}\n />\n\n <LightboxStage\n items={items}\n currentItem={currentItem}\n currentIndex={currentIndex}\n isLoading={lightbox.isLoading}\n showCaptions={showCaptions}\n thumbnails={thumbnails}\n testId={testId}\n media={\n <LightboxCurrentMedia\n item={currentItem}\n index={currentIndex}\n total={items.length}\n zoomable={zoomable}\n zoom={zoom}\n testId={testId}\n onLoadingChange={lightbox.setIsLoading}\n onWheel={lightbox.handleWheel}\n />\n }\n thumbnailStrip={\n thumbnails &&\n items.length > 1 && (\n <LightboxThumbnails\n items={items}\n currentIndex={currentIndex}\n testId={testId}\n onSelect={lightbox.goToIndex}\n />\n )\n }\n />\n </Dialog>\n </LightboxCopyProvider>\n );\n});\n\nLightbox.displayName = 'Lightbox';\n\nexport default Lightbox;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,YAAY;AACnB,OAAO,UAAU;AACjB,OAAO,gBAAgB;AAEvB,OAAO,WAAW;AA+CZ,SAIA,KAJA;AAlCN,IAAM,sBAAsB;AAAA,EAC1B,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,qBAAqB;AAAA,EACrB,iBAAiB,EAAE,SAAS,IAAI;AAAA,EAChC,YAAY,EAAE,IAAI,EAAE,YAAY,CAAC,UAAiB,MAAM,OAAO,GAAG,GAAG,gBAAgB,YAAY,EAAE;AAAA,EACnG,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,MAAM;AAAA,EACN,cAAc;AAChB;AAEO,IAAM,WAAW,MAAM,WAAuC,CAAC,gBAAgB,QAAQ;AAC5F,QAAM,QAAQ,qBAAqB,cAAc;AACjD,QAAM,EAAE,QAAQ,OAAO,MAAM,UAAU,cAAc,cAAc,YAAY,SAAS,IAAI;AAC5F,QAAM,EAAE,WAAW,OAAO,WAAW,IAAI;AAEzC,QAAM,SAAS,WAAW,UAAU;AACpC,QAAM,WAAW,YAAY,OAAO,GAAG;AACvC,QAAM,EAAE,cAAc,aAAa,KAAK,IAAI;AAE5C,SACE,oBAAC,wBAAqB,MAAM,MAAM,MAClC;AAAA,IAAC;AAAA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,SAAS;AAAA,MACjB,GAAG;AAAA,MACJ;AAAA,MACA;AAAA,MACA,cAAc,SAAS;AAAA,MACvB,YAAY,SAAS;AAAA,MACrB,eAAa,cAAc;AAAA,MAG3B;AAAA,6BAAC,cAAW,IAAG,kBAAiB,SAAQ,MAAK,IAAI,EAAE,UAAU,YAAY,MAAM,KAAO,GAAG;AAAA;AAAA,UAC3E,aAAa,OAAO,QAAQ,eAAe,CAAC,OAAO,MAAM,MAAM;AAAA,WAC7E;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,WAAW,MAAM;AAAA,YACjB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,SAAS,SAAS;AAAA,YAClB,eAAe,SAAS;AAAA,YACxB,SAAS,SAAS;AAAA,YAClB,QAAQ,SAAS;AAAA,YACjB,QAAQ,SAAS;AAAA,YACjB,UAAU,KAAK;AAAA,YACf,WAAW,KAAK;AAAA,YAChB,aAAa,KAAK;AAAA,YAClB,kBAAkB,MAAM,SAAS,iBAAiB,CAAC,YAAY,CAAC,OAAO;AAAA;AAAA,QACzE;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA,WAAW,SAAS;AAAA,YACpB;AAAA,YACA;AAAA,YACA;AAAA,YACA,OACE;AAAA,cAAC;AAAA;AAAA,gBACC,MAAM;AAAA,gBACN,OAAO;AAAA,gBACP,OAAO,MAAM;AAAA,gBACb;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,iBAAiB,SAAS;AAAA,gBAC1B,SAAS,SAAS;AAAA;AAAA,YACpB;AAAA,YAEF,gBACE,cACA,MAAM,SAAS,KACb;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,UAAU,SAAS;AAAA;AAAA,YACrB;AAAA;AAAA,QAGN;AAAA;AAAA;AAAA,EACF,GACA;AAEJ,CAAC;AAED,SAAS,cAAc;AAEvB,IAAO,mBAAQ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Badge/Badge.styles.ts"],"sourcesContent":["import { alpha } from '@mui/material/styles/index.js';\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\n\nimport {\n bounceAnimation,\n fadeInScaleAnimation,\n glowPulseAnimation,\n pulseAnimation,\n shimmerAnimation } from './Badge.animations';\nimport {\n BADGE_BORDER_WIDTH,\n BADGE_CONTENT_GAP,\n BADGE_FONT_WEIGHT,\n BADGE_LETTER_SPACING_EM,\n BADGE_SIZES,\n BADGE_TRANSITION_EASING,\n BADGE_TRANSITION_MS,\n BOUNCE,\n FADE_IN_SCALE,\n GLOW,\n HOVER_SCALE,\n PULSE,\n SHIMMER,\n badgeAnchor,\n} from './Badge.metrics';\nimport type { BadgeSizeMetrics } from './Badge.metrics';\nimport { badgeVariantStyles } from './Badge.variants';\nimport type { BadgeSize, BadgeVariant } from './Badge.types';\nimport { sheen } from '../../../tokens/ink';\nimport { accentFor } from '../../../tokens/scales';\n\nexport type BadgePalette = {\n main: string;\n light?: string;\n dark?: string;\n contrastText?: string;\n};\nexport type BadgeSizeStyles = ReturnType<typeof getSizeStyles>;\n\nconst getColorFromTheme = (theme: Theme, color: string) => {\n const colorMap: Record<string, ReturnType<typeof theme.palette.augmentColor>> = {\n primary: theme.palette.primary,\n secondary: theme.palette.secondary,\n success: theme.palette.success,\n warning: theme.palette.warning,\n info: theme.palette.info,\n // `danger`, the house word the prop actually takes. Keyed on MUI's `error`\n // it matched nothing and fell through to the default.\n danger: theme.palette.error,\n neutral: accentFor(theme, 'neutral') };\n\n return colorMap[color] || theme.palette.primary;\n};\n\n// Derived from the shared metrics, not restated: the native `Badge` reads the\n// same table, so the two renderers cannot disagree on a chip.\nconst sizeMap: Record<\n BadgeSize,\n {\n minWidth: number;\n height: number;\n /** The step itself: its `fontSize`/`iconSize` are design px, drawn through `rem(theme, …)`. */\n step: BadgeSizeMetrics;\n padding: string;\n dotSize: number;\n }\n> = Object.fromEntries(\n Object.entries(BADGE_SIZES).map(([size, metrics]) => [\n size,\n {\n minWidth: metrics.minWidth,\n height: metrics.height,\n step: metrics,\n padding: `0 ${metrics.paddingHorizontal}px`,\n dotSize: metrics.dotSize,\n },\n ]),\n) as Record<\n BadgeSize,\n { minWidth: number; height: number; step: BadgeSizeMetrics; padding: string; dotSize: number }\n>;\n\nexport const getSizeStyles = (size: BadgeSize) => sizeMap[size] || sizeMap.md;\n\nexport const getAnchorOrigin = (position: string) =>\n badgeAnchor((position || 'top-right') as Parameters<typeof badgeAnchor>[0]);\n\n// Exactly one variant applies, so a lookup replaces ten mutually exclusive\n// spreads inside the style object.\n// The glow effect needs the badge colour as bare RGB components for a CSS\n// variable, and the palette hands them over as hex or rgb().\nconst rgbValuesOf = (color: string): string => {\n if (color.startsWith('#')) {\n const hex = color.slice(1);\n const [r, g, b] = [0, 2, 4].map((offset) => parseInt(hex.slice(offset, offset + 2), 16));\n return `${r}, ${g}, ${b}`;\n }\n\n const match = color.match(/\\d+/g);\n if (match) return `${match[0]}, ${match[1]}, ${match[2]}`;\n return '255, 255, 255';\n};\n\n// Glow and pulse combine into a third, distinct treatment rather than stacking.\nconst badgeLightingStyles = ({\n glow,\n pulse,\n colorPalette }: {\n glow?: boolean;\n pulse?: boolean;\n colorPalette: BadgePalette;\n}): CSSObject => ({\n // Glow effect\n ...(glow &&\n !pulse && {\n boxShadow: `0 0 ${GLOW.blur}px ${GLOW.spread}px ${alpha(colorPalette.main, GLOW.alpha)}`,\n filter: `brightness(${GLOW.brightness})`,\n '&:hover': {\n boxShadow: `0 0 ${GLOW.hoverBlur}px ${GLOW.hoverSpread}px ${alpha(colorPalette.main, GLOW.hoverAlpha)}` } }),\n\n // Pulse animation\n ...(pulse &&\n !glow && {\n animation: `${pulseAnimation} ${PULSE.durationMs / 1000}s ease-in-out infinite` }),\n\n // Both glow and pulse\n ...(glow &&\n pulse && {\n animation: `${glowPulseAnimation} ${PULSE.durationMs / 1000}s ease-in-out infinite, ${pulseAnimation} ${PULSE.durationMs / 1000}s ease-in-out infinite`,\n filter: `brightness(${GLOW.brightness})`,\n }),\n\n});\n\nconst badgeAnimationStyles = ({\n animate,\n bounce,\n shimmer,\n glow: _glow,\n pulse: _pulse,\n customVariant,\n colorPalette,\n theme }: {\n animate?: boolean;\n bounce?: boolean;\n shimmer?: boolean;\n glow?: boolean;\n pulse?: boolean;\n customVariant?: BadgeVariant;\n colorPalette: BadgePalette;\n theme: Theme;\n}): CSSObject => ({\n ...(animate &&\n !bounce && {\n animation: `${fadeInScaleAnimation} ${FADE_IN_SCALE.durationMs / 1000}s cubic-bezier(0.68, -0.55, 0.265, 1.55)` }),\n\n // Bounce animation\n ...(bounce && {\n animation: `${bounceAnimation} ${BOUNCE.durationMs / 1000}s ease-in-out` }),\n\n // Shimmer effect\n ...(shimmer && {\n background:\n customVariant === 'gradient'\n ? `linear-gradient(135deg, ${colorPalette.main} 0%, ${colorPalette.dark || colorPalette.main} 100%)`\n : colorPalette.main,\n backgroundSize: shimmer ? '1000px 100%' : 'auto',\n position: 'relative',\n overflow: 'hidden',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n background: `linear-gradient(\n 90deg,\n transparent,\n ${sheen(theme, SHIMMER.alpha)},\n transparent\n )`,\n animation: `${shimmerAnimation} ${SHIMMER.durationMs / 1000}s infinite` } }) });\n\n// The badge chip's own styling, lifted out so the styled() callback just\n// forwards its props.\ninterface BadgeStyleArgs {\n theme: Theme;\n customVariant?: BadgeVariant;\n customSize?: BadgeSize;\n customColor?: string;\n glow?: boolean;\n pulse?: boolean;\n animate?: boolean;\n shimmer?: boolean;\n bounce?: boolean;\n hasIcon?: boolean;\n}\n\nexport const badgeStyles = ({\n theme,\n customVariant,\n customSize = 'md',\n customColor = 'primary',\n glow,\n pulse,\n animate,\n shimmer,\n bounce,\n hasIcon }: BadgeStyleArgs): CSSObject => {\n const colorPalette = getColorFromTheme(theme, customColor);\n const sizeStyles = getSizeStyles(customSize);\n\n return {\n '--glow-color': rgbValuesOf(colorPalette.main),\n '& .MuiBadge-badge': {\n transition: `all ${BADGE_TRANSITION_MS / 1000}s ${BADGE_TRANSITION_EASING}`,\n fontWeight: BADGE_FONT_WEIGHT,\n border: `${BADGE_BORDER_WIDTH}px solid ${theme.palette.background.paper}`,\n letterSpacing: `${BADGE_LETTER_SPACING_EM}em`,\n textTransform:\n customVariant === 'gradient' || customVariant === 'glass' ? 'uppercase' : 'none',\n willChange: 'transform, opacity',\n backfaceVisibility: 'hidden',\n\n // Outline variant\n\n // Destructive variant\n\n // Warning variant\n\n // Adjust padding when icon is present\n ...badgeVariantStyles(theme, colorPalette, sizeStyles, customVariant),\n ...(hasIcon && {\n paddingLeft: sizeStyles.padding.split(' ')[1],\n display: 'inline-flex',\n alignItems: 'center',\n gap: `${BADGE_CONTENT_GAP}px`,\n }),\n\n // Animation on mount\n ...badgeAnimationStyles({\n animate,\n bounce,\n shimmer,\n glow,\n pulse,\n customVariant,\n colorPalette,\n theme }),\n ...badgeLightingStyles({ glow, pulse, colorPalette }),\n\n '&:not(.MuiBadge-dot):hover': {\n transform: `scale(${HOVER_SCALE})`,\n zIndex: 1 } } };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,aAAa;AAuCtB,IAAM,oBAAoB,CAAC,OAAc,UAAkB;AACzD,QAAM,WAA0E;AAAA,IAC9E,SAAS,MAAM,QAAQ;AAAA,IACvB,WAAW,MAAM,QAAQ;AAAA,IACzB,SAAS,MAAM,QAAQ;AAAA,IACvB,SAAS,MAAM,QAAQ;AAAA,IACvB,MAAM,MAAM,QAAQ;AAAA;AAAA;AAAA,IAGpB,QAAQ,MAAM,QAAQ;AAAA,IACtB,SAAS,UAAU,OAAO,SAAS;AAAA,EAAE;AAEvC,SAAO,SAAS,KAAK,KAAK,MAAM,QAAQ;AAC1C;AAIA,IAAM,UAUF,OAAO;AAAA,EACT,OAAO,QAAQ,WAAW,EAAE,IAAI,CAAC,CAAC,MAAM,OAAO,MAAM;AAAA,IACnD;AAAA,IACA;AAAA,MACE,UAAU,QAAQ;AAAA,MAClB,QAAQ,QAAQ;AAAA,MAChB,MAAM;AAAA,MACN,SAAS,KAAK,QAAQ,iBAAiB;AAAA,MACvC,SAAS,QAAQ;AAAA,IACnB;AAAA,EACF,CAAC;AACH;AAKO,IAAM,gBAAgB,CAAC,SAAoB,QAAQ,IAAI,KAAK,QAAQ;AAEpE,IAAM,kBAAkB,CAAC,aAC9B,YAAa,YAAY,WAAiD;AAM5E,IAAM,cAAc,CAAC,UAA0B;AAC7C,MAAI,MAAM,WAAW,GAAG,GAAG;AACzB,UAAM,MAAM,MAAM,MAAM,CAAC;AACzB,UAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,SAAS,IAAI,MAAM,QAAQ,SAAS,CAAC,GAAG,EAAE,CAAC;AACvF,WAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;AAAA,EACzB;AAEA,QAAM,QAAQ,MAAM,MAAM,MAAM;AAChC,MAAI,MAAO,QAAO,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;AACvD,SAAO;AACT;AAGA,IAAM,sBAAsB,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAa,OAIG;AAAA;AAAA,EAEZ,GAAI,QACF,CAAC,SAAS;AAAA,IACR,WAAW,OAAO,KAAK,IAAI,MAAM,KAAK,MAAM,MAAM,MAAM,aAAa,MAAM,KAAK,KAAK,CAAC;AAAA,IACtF,QAAQ,cAAc,KAAK,UAAU;AAAA,IACrC,WAAW;AAAA,MACT,WAAW,OAAO,KAAK,SAAS,MAAM,KAAK,WAAW,MAAM,MAAM,aAAa,MAAM,KAAK,UAAU,CAAC;AAAA,IAAG;AAAA,EAAE;AAAA;AAAA,EAGhH,GAAI,SACF,CAAC,QAAQ;AAAA,IACP,WAAW,GAAG,cAAc,IAAI,MAAM,aAAa,GAAI;AAAA,EAAyB;AAAA;AAAA,EAGpF,GAAI,QACF,SAAS;AAAA,IACP,WAAW,GAAG,kBAAkB,IAAI,MAAM,aAAa,GAAI,2BAA2B,cAAc,IAAI,MAAM,aAAa,GAAI;AAAA,IAC/H,QAAQ,cAAc,KAAK,UAAU;AAAA,EACvC;AAER;AAEA,IAAM,uBAAuB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAM,OASU;AAAA,EACZ,GAAI,WACF,CAAC,UAAU;AAAA,IACT,WAAW,GAAG,oBAAoB,IAAI,cAAc,aAAa,GAAI;AAAA,EAA2C;AAAA;AAAA,EAGpH,GAAI,UAAU;AAAA,IACZ,WAAW,GAAG,eAAe,IAAI,OAAO,aAAa,GAAI;AAAA,EAAgB;AAAA;AAAA,EAG3E,GAAI,WAAW;AAAA,IACb,YACE,kBAAkB,aACd,2BAA2B,aAAa,IAAI,QAAQ,aAAa,QAAQ,aAAa,IAAI,WAC1F,aAAa;AAAA,IACnB,gBAAgB,UAAU,gBAAgB;AAAA,IAC1C,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,YAAY;AAAA;AAAA;AAAA,cAGR,MAAM,OAAO,QAAQ,KAAK,CAAC;AAAA;AAAA;AAAA,MAG/B,WAAW,GAAG,gBAAgB,IAAI,QAAQ,aAAa,GAAI;AAAA,IAAa;AAAA,EAAE;AAAG;AAiBhF,IAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAQ,MAAiC;AACzC,QAAM,eAAe,kBAAkB,OAAO,WAAW;AACzD,QAAM,aAAa,cAAc,UAAU;AAE3C,SAAO;AAAA,IACL,gBAAgB,YAAY,aAAa,IAAI;AAAA,IAC7C,qBAAqB;AAAA,MACnB,YAAY,OAAO,sBAAsB,GAAI,KAAK,uBAAuB;AAAA,MACzE,YAAY;AAAA,MACZ,QAAQ,GAAG,kBAAkB,YAAY,MAAM,QAAQ,WAAW,KAAK;AAAA,MACvE,eAAe,GAAG,uBAAuB;AAAA,MACzC,eACE,kBAAkB,cAAc,kBAAkB,UAAU,cAAc;AAAA,MAC5E,YAAY;AAAA,MACZ,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,MASpB,GAAG,mBAAmB,OAAO,cAAc,YAAY,aAAa;AAAA,MACpE,GAAI,WAAW;AAAA,QACb,aAAa,WAAW,QAAQ,MAAM,GAAG,EAAE,CAAC;AAAA,QAC5C,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,KAAK,GAAG,iBAAiB;AAAA,MAC3B;AAAA;AAAA,MAGA,GAAG,qBAAqB;AAAA,QACtB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAM,CAAC;AAAA,MACT,GAAG,oBAAoB,EAAE,MAAM,OAAO,aAAa,CAAC;AAAA,MAEpD,8BAA8B;AAAA,QAC5B,WAAW,SAAS,WAAW;AAAA,QAC/B,QAAQ;AAAA,MAAE;AAAA,IAAE;AAAA,EAAE;AACtB;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/DataViews/data-views-view-nav.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * The saved views, rendered INSIDE the Exibir panel rather than in a dropdown\n * of their own.\n *\n * Two levels, both of them replacing the panel's BODY (the tabs stay put):\n * the list of views, and one view's actions. It is a drill-down and not a\n * nested menu on purpose — an absolutely positioned popover inside the panel's\n * own scroll container gets clipped by it, which is how copy.nav.deleteView ends\n * up unreachable. One level, no clipping, and it works on touch.\n */\nimport ChevronLeftRoundedIcon from \"@mui/icons-material/ChevronLeftRounded\";\nimport CheckRoundedIcon from \"@mui/icons-material/CheckRounded\";\nimport DeleteOutlineRoundedIcon from \"@mui/icons-material/DeleteOutlineRounded\";\nimport EditOutlinedIcon from \"@mui/icons-material/EditOutlined\";\nimport GroupOutlinedIcon from \"@mui/icons-material/GroupOutlined\";\nimport MoreVertRoundedIcon from \"@mui/icons-material/MoreVertRounded\";\nimport PushPinOutlinedIcon from \"@mui/icons-material/PushPinOutlined\";\nimport StarOutlineRoundedIcon from \"@mui/icons-material/StarOutlined\";\nimport StarOutlineRoundedIcon2 from \"@mui/icons-material/StarOutlineRounded\";\nimport IconButton from \"@mui/material/IconButton/index.js\";\n\nimport KeyboardArrowDownRoundedIcon from \"@mui/icons-material/KeyboardArrowDownRounded\";\nimport RestartAltRoundedIcon from \"@mui/icons-material/RestartAltRounded\";\nimport SaveOutlinedIcon from \"@mui/icons-material/SaveOutlined\";\n\nimport { useDataViewsCopy } from \"./data-views-copy-context\";\nimport { Button } from \"../../form/Button\";\nimport { Box } from \"../../../mui/Box\";\nimport { Text } from \"../../typography/Text\";\n\nimport type { DisplayPanelView } from \"./data-views-display-panel\";\nimport type { SavedViewSummary } from \"./data-views-types\";\nimport { sxRem } from \"../../../tokens/relative\";\n\n/** What the panel needs to drive the views without owning any of them. */\nexport interface ViewNavHandlers {\n views: SavedViewSummary[];\n activeViewId?: string | null;\n /** `null` selects the built-in view named by `copy.nav.mainView`. */\n onSelectView: (id: string | null) => void;\n onEditView: (view: SavedViewSummary) => void;\n onPatchView: (\n view: SavedViewSummary,\n changes: Partial<Pick<SavedViewSummary, \"isDefault\" | \"pinned\" | \"shared\">>,\n ) => void;\n onDeleteView: (view: SavedViewSummary) => void;\n}\n\nconst rowSx = {\n display: \"flex\",\n alignItems: \"center\",\n gap: 1,\n width: \"100%\",\n px: 1.25,\n py: 1,\n border: 0,\n borderRadius: 1,\n bgcolor: \"transparent\",\n cursor: \"pointer\",\n font: \"inherit\",\n fontSize: sxRem(13),\n textAlign: \"left\",\n color: \"text.primary\",\n \"&:hover\": { bgcolor: \"action.hover\" },\n} as const;\n\n/** The list: the built-in view, then each saved one with its own \"⋮\". */\nexport function ViewsList({\n handlers,\n onOpenActions,\n testIdPrefix,\n}: {\n handlers: ViewNavHandlers;\n onOpenActions: (view: SavedViewSummary) => void;\n testIdPrefix: string;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n const { views, activeViewId, onSelectView } = handlers;\n const onMain = !activeViewId;\n return (\n <Box sx={{ p: 0.75 }} data-testid={`${testIdPrefix}-views-list`}>\n <Box\n component=\"button\"\n type=\"button\"\n onClick={() => onSelectView(null)}\n data-testid={`${testIdPrefix}-view-main`}\n sx={{ ...rowSx, color: onMain ? \"primary.main\" : \"text.primary\", fontWeight: onMain ? 600 : 400 }}\n >\n <Box component=\"span\" sx={{ flex: 1 }}>\n {copy.nav.mainView}\n </Box>\n {onMain && <CheckRoundedIcon fontSize=\"small\" />}\n </Box>\n\n {views.map((view) => {\n const active = view.id === activeViewId;\n return (\n <Box key={view.id} sx={{ display: \"flex\", alignItems: \"center\" }}>\n <Box\n component=\"button\"\n type=\"button\"\n onClick={() => onSelectView(view.id)}\n data-testid={`${testIdPrefix}-view-${view.id}`}\n sx={{ ...rowSx, minWidth: 0, color: active ? \"primary.main\" : \"text.primary\", fontWeight: active ? 600 : 400 }}\n >\n <Box component=\"span\" sx={{ flex: 1, minWidth: 0, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>\n {view.name}\n </Box>\n {/* What the row-menu toggles DID, readable without opening it:\n a view set as default, pinned or shared says so here. */}\n {view.isDefault && (\n <StarOutlineRoundedIcon fontSize=\"small\" sx={{ color: \"warning.main\" }} titleAccess={copy.nav.defaultTag} />\n )}\n {view.pinned && (\n <PushPinOutlinedIcon fontSize=\"small\" sx={{ color: \"text.disabled\" }} titleAccess=\"Fixada\" />\n )}\n {view.shared && (\n <GroupOutlinedIcon fontSize=\"small\" sx={{ color: \"text.disabled\" }} titleAccess=\"Compartilhada\" />\n )}\n {active && <CheckRoundedIcon fontSize=\"small\" />}\n </Box>\n <IconButton\n size=\"small\"\n onClick={() => onOpenActions(view)}\n aria-label={copy.nav.viewOptions(view.name)}\n data-testid={`${testIdPrefix}-view-${view.id}-menu`}\n >\n <MoreVertRoundedIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n );\n })}\n\n {views.length === 0 && (\n <Text variant=\"caption\" as=\"p\">\n <Box component=\"span\" sx={{ display: \"block\", px: 1.25, py: 1.5, color: \"text.secondary\", lineHeight: 1.6 }}>\n {copy.nav.emptyHint}\n </Box>\n </Text>\n )}\n </Box>\n );\n}\n\n/** One view's actions, reached from its \"⋮\" and left by the back row. */\nexport function ViewActions({\n view,\n handlers,\n onBack,\n testIdPrefix,\n}: {\n view: SavedViewSummary;\n handlers: ViewNavHandlers;\n onBack: () => void;\n testIdPrefix: string;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n const { onEditView, onPatchView, onDeleteView } = handlers;\n const action = (\n key: string,\n Icon: typeof StarOutlineRoundedIcon2,\n label: string,\n onClick: () => void,\n opts: { on?: boolean; danger?: boolean } = {},\n ): React.JSX.Element => (\n <Box\n component=\"button\"\n type=\"button\"\n onClick={onClick}\n data-testid={`${testIdPrefix}-view-action-${key}`}\n sx={{\n ...rowSx,\n color: opts.danger ? \"error.main\" : \"text.primary\",\n \"&:hover\": { bgcolor: opts.danger ? \"error.lighter\" : \"action.hover\" },\n }}\n >\n <Icon fontSize=\"small\" sx={{ color: opts.danger ? \"inherit\" : \"text.disabled\" }} />\n <Box component=\"span\" sx={{ flex: 1 }}>\n {label}\n </Box>\n {opts.on && <CheckRoundedIcon fontSize=\"small\" color=\"primary\" />}\n </Box>\n );\n\n return (\n <Box sx={{ p: 0.75 }} data-testid={`${testIdPrefix}-view-actions`}>\n <Box\n component=\"button\"\n type=\"button\"\n onClick={onBack}\n data-testid={`${testIdPrefix}-view-actions-back`}\n sx={{ ...rowSx, color: \"text.secondary\", fontSize: sxRem(12) }}\n >\n <ChevronLeftRoundedIcon fontSize=\"small\" />\n <Box component=\"span\" sx={{ flex: 1, fontWeight: 600, color: \"text.primary\" }}>\n {view.name}\n </Box>\n </Box>\n <Box sx={{ my: 0.5, borderTop: 1, borderColor: \"divider\" }} />\n {action(\"edit\", EditOutlinedIcon, copy.nav.editView, () => onEditView(view))}\n {action(\"default\", StarOutlineRoundedIcon2, copy.nav.setDefault, () => onPatchView(view, { isDefault: !view.isDefault }), { on: view.isDefault })}\n {action(\"pin\", PushPinOutlinedIcon, copy.nav.pinToSidebar, () => onPatchView(view, { pinned: !view.pinned }), { on: view.pinned })}\n {action(\"share\", GroupOutlinedIcon, copy.nav.shareWithTeam, () => onPatchView(view, { shared: !view.shared }), { on: view.shared })}\n <Box sx={{ my: 0.5, borderTop: 1, borderColor: \"divider\" }} />\n {action(\"delete\", DeleteOutlineRoundedIcon, copy.nav.deleteView, () => onDeleteView(view), { danger: true })}\n </Box>\n );\n}\n\n/** Name, unsaved dot, chevron — the parts, so the toggle has one decision. */\nfunction ToggleContents({\n view,\n open,\n interactive,\n testIdPrefix,\n}: {\n view: DisplayPanelView;\n open: boolean;\n interactive: boolean;\n testIdPrefix: string;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n return (\n <>\n <Box component=\"span\" sx={{ fontWeight: 600 }} data-testid={`${testIdPrefix}-display-view-name`}>\n {view.activeViewName ?? copy.nav.mainView}\n </Box>\n {view.dirty && (\n <Box\n component=\"span\"\n aria-label={copy.nav.unsavedChanges}\n data-testid={`${testIdPrefix}-display-dirty`}\n sx={{ height: 6, width: 6, borderRadius: \"50%\", bgcolor: \"primary.main\" }}\n />\n )}\n {interactive && (\n <KeyboardArrowDownRoundedIcon\n fontSize=\"small\"\n sx={{ color: \"text.disabled\", transform: open ? \"rotate(180deg)\" : \"none\" }}\n />\n )}\n </>\n );\n}\n\n/** The name + unsaved dot; a button only when there are views to open. */\nfunction ViewToggle({\n view,\n open,\n onToggle,\n testIdPrefix,\n}: {\n view: DisplayPanelView;\n open: boolean;\n onToggle: () => void;\n testIdPrefix: string;\n}): React.JSX.Element {\n const interactive = Boolean(view.nav);\n // One decision, not eight: a panel with no views renders the same row as\n // plain text rather than as a button that opens nothing.\n const affordance = interactive\n ? { px: 0.75, py: 0.25, cursor: \"pointer\", \"&:hover\": { bgcolor: \"action.hover\" } }\n : { px: 0, py: 0, cursor: \"default\" };\n return (\n <Box\n component={interactive ? \"button\" : \"div\"}\n type={interactive ? \"button\" : undefined}\n onClick={interactive ? onToggle : undefined}\n aria-expanded={interactive ? open : undefined}\n data-testid={`${testIdPrefix}-display-view-toggle`}\n sx={{\n ml: \"auto\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 0.75,\n minWidth: 0,\n border: 0,\n borderRadius: 1,\n font: \"inherit\",\n fontSize: sxRem(12),\n bgcolor: open ? \"action.selected\" : \"transparent\",\n ...affordance,\n }}\n >\n <ToggleContents view={view} open={open} interactive={interactive} testIdPrefix={testIdPrefix} />\n </Box>\n );\n}\n\n/** The VISÃO row above the tabs. */\nexport function ViewHeader(props: {\n view: DisplayPanelView;\n open: boolean;\n onToggle: () => void;\n testIdPrefix: string;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n return (\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1, px: 1.5, py: 1, borderBottom: 1, borderColor: \"divider\" }}>\n <Text variant=\"caption\" as=\"span\">\n <Box component=\"span\" sx={{ textTransform: \"uppercase\", letterSpacing: 0.5, color: \"text.disabled\" }}>\n {copy.nav.label}\n </Box>\n </Text>\n <ViewToggle {...props} />\n </Box>\n );\n}\n\n/** Redefinir / Salvar como nova / Atualizar, pinned below the tabs. */\nexport function ViewFooter({\n view,\n onDone,\n testIdPrefix,\n}: {\n view: DisplayPanelView;\n onDone: () => void;\n testIdPrefix: string;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n return (\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 1,\n px: 1.5,\n py: 1,\n borderTop: 1,\n borderColor: \"divider\",\n bgcolor: \"action.hover\",\n }}\n >\n <Button\n variant=\"text\"\n size=\"sm\"\n color=\"neutral\"\n disabled={!view.dirty}\n startIcon={<RestartAltRoundedIcon fontSize=\"small\" />}\n onClick={view.onReset}\n dataTestId={`${testIdPrefix}-display-reset`}\n >\n {copy.nav.reset}\n </Button>\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}>\n {/* Only meaningful with a view APPLIED: on the main view the single\n \"Salvar visão\" already is \"save as new\". */}\n {view.onUpdate && (\n <Button\n variant=\"text\"\n size=\"sm\"\n color=\"neutral\"\n onClick={() => {\n view.onSaveAs();\n onDone();\n }}\n dataTestId={`${testIdPrefix}-display-save-as`}\n >\n {copy.nav.saveAs}\n </Button>\n )}\n {/* Enabled only when something in Ordenar / Colunas / Exibição (or the\n filters the view also stores) differs from the applied view: the\n filled button is a STATE — \"there is something to save\" — not a\n permanent fixture. */}\n <Button\n size=\"sm\"\n disabled={!view.dirty}\n startIcon={<SaveOutlinedIcon fontSize=\"small\" />}\n onClick={() => {\n (view.onUpdate ?? view.onSaveAs)();\n onDone();\n }}\n dataTestId={`${testIdPrefix}-display-save`}\n >\n {view.onUpdate ? copy.nav.update : copy.nav.save}\n </Button>\n </Box>\n </Box>\n );\n}\n\n"],"mappings":"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","names":["default"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Lightbox/LightboxThumbnails.tsx"],"sourcesContent":["import PlayIcon from '@mui/icons-material/PlayArrow';\nimport Box from '@mui/material/Box/index.js';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport type { FC } from 'react';\nimport React from 'react';\n\nimport { thumbnailStripSx } from './Lightbox.constants';\nimport type { LightboxItem } from './Lightbox.types';\nimport { onMedia, sheen } from '../../../tokens/ink';\nimport { sxRem } from '../../../tokens/relative';\n\nconst THUMB_WIDTH = 60;\nconst THUMB_HEIGHT = 40;\n\nconst VideoThumbnail: FC = () => (\n <Box\n sx={{\n width: '100%',\n height: '100%',\n background: (theme: Theme) => sheen(theme, 0.1),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <PlayIcon sx={{ color: onMedia, fontSize: sxRem(16) }} />\n </Box>\n);\n\nexport interface LightboxThumbnailsProps {\n items: LightboxItem[];\n currentIndex: number;\n testId: (suffix: string) => string;\n onSelect: (index: number) => void;\n}\n\nexport const LightboxThumbnails: FC<LightboxThumbnailsProps> = ({\n items,\n currentIndex,\n testId,\n onSelect,\n}) => (\n <Box\n sx={{\n ...thumbnailStripSx,\n position: 'absolute',\n bottom: 16,\n left: '50%',\n transform: 'translateX(-50%)',\n display: 'flex',\n gap: 1,\n maxWidth: '90vw',\n overflowX: 'auto',\n padding: 1,\n }}\n data-testid={testId('thumbnails')}\n >\n {items.map((item, index) => (\n <Box\n key={`${item.src}-${index}`}\n onClick={() => onSelect(index)}\n sx={{\n width: THUMB_WIDTH,\n height: THUMB_HEIGHT,\n cursor: 'pointer',\n border: currentIndex === index ? (theme: Theme) => `2px solid ${onMedia(theme)}` : '2px solid transparent',\n borderRadius: 0.5,\n overflow: 'hidden',\n flexShrink: 0,\n '&:hover': { border: (theme: Theme) => `2px solid ${sheen(theme, 0.7)}` },\n }}\n data-testid={testId(`thumbnail-${index}`)}\n >\n {item.type === 'video' ? (\n <VideoThumbnail />\n ) : (\n <img\n src={item.src}\n alt={item.alt || `Thumbnail ${index + 1}`}\n style={{ width: '100%', height: '100%', objectFit: 'cover' }}\n />\n )}\n </Box>\n ))}\n </Box>\n);\n"],"mappings":";;;;;;;;;;;;AAAA,OAAO,cAAc;AACrB,OAAO,SAAS;AAwBZ;AAdJ,IAAM,cAAc;AACpB,IAAM,eAAe;AAErB,IAAM,iBAAqB,MACzB;AAAA,EAAC;AAAA;AAAA,IACC,IAAI;AAAA,MACF,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,YAAY,CAAC,UAAiB,MAAM,OAAO,GAAG;AAAA,MAC9C,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,IAClB;AAAA,IAEA,8BAAC,YAAS,IAAI,EAAE,OAAO,SAAS,UAAU,MAAM,EAAE,EAAE,GAAG;AAAA;AACzD;AAUK,IAAM,qBAAkD,CAAC;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MACE;AAAA,EAAC;AAAA;AAAA,IACC,IAAI;AAAA,MACF,GAAG;AAAA,MACH,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,WAAW;AAAA,MACX,SAAS;AAAA,MACT,KAAK;AAAA,MACL,UAAU;AAAA,MACV,WAAW;AAAA,MACX,SAAS;AAAA,IACX;AAAA,IACA,eAAa,OAAO,YAAY;AAAA,IAE/B,gBAAM,IAAI,CAAC,MAAM,UAChB;AAAA,MAAC;AAAA;AAAA,QAEC,SAAS,MAAM,SAAS,KAAK;AAAA,QAC7B,IAAI;AAAA,UACF,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,QAAQ,iBAAiB,QAAQ,CAAC,UAAiB,aAAa,QAAQ,KAAK,CAAC,KAAK;AAAA,UACnF,cAAc;AAAA,UACd,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,WAAW,EAAE,QAAQ,CAAC,UAAiB,aAAa,MAAM,OAAO,GAAG,CAAC,GAAG;AAAA,QAC1E;AAAA,QACA,eAAa,OAAO,aAAa,KAAK,EAAE;AAAA,QAEvC,eAAK,SAAS,UACb,oBAAC,kBAAe,IAEhB;AAAA,UAAC;AAAA;AAAA,YACC,KAAK,KAAK;AAAA,YACV,KAAK,KAAK,OAAO,aAAa,QAAQ,CAAC;AAAA,YACvC,OAAO,EAAE,OAAO,QAAQ,QAAQ,QAAQ,WAAW,QAAQ;AAAA;AAAA,QAC7D;AAAA;AAAA,MArBG,GAAG,KAAK,GAAG,IAAI,KAAK;AAAA,IAuB3B,CACD;AAAA;AACH;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Alert/Alert.styles.tsx"],"sourcesContent":["import Error from '@mui/icons-material/Error';\nimport Info from '@mui/icons-material/Info';\nimport CheckCircle from '@mui/icons-material/CheckCircle';\nimport Warning from '@mui/icons-material/Warning';\nimport { alpha, darken, keyframes, lighten } from '@mui/material/styles/index.js';\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { sheen, softNeutral } from '../../../tokens/ink';\n\nimport type { AlertVariant } from './Alert.base';\nimport { VARIANT_ICON } from './Alert.helpers';\nimport {\n ACTION_SLOT,\n ALERT_EASING,\n ALERT_PADDING_UNITS,\n ALERT_TRANSITION_MS,\n type AlertPalette,\n FADE_IN,\n GLASS,\n GLOW,\n GRADIENT,\n ICON_SLOT,\n ICON_SPIN,\n MESSAGE_BUTTON,\n MESSAGE_FONT_SIZE,\n MESSAGE_GAP_UNITS,\n MESSAGE_LINE_HEIGHT,\n PULSE,\n seconds,\n SEMANTIC_SURFACE,\n SEMANTIC_VARIANTS,\n} from './Alert.metrics';\nimport type { IconName } from '../../../icons/Icon.types';\nimport { rem } from '../../../tokens/relative';\n\nexport type { AlertPalette } from './Alert.metrics';\n\nexport const pulseAnimation = keyframes`\n 0% {\n box-shadow: 0 0 0 0 currentColor;\n opacity: 1;\n }\n 70% {\n box-shadow: 0 0 0 ${PULSE.spread}px currentColor;\n opacity: 0;\n }\n 100% {\n box-shadow: 0 0 0 0 currentColor;\n opacity: 0;\n }\n`;\n\n// Additional animations can be enabled as needed\n// const slideInAnimation = keyframes`\n// from {\n// transform: translateX(-100%);\n// opacity: 0;\n// }\n// to {\n// transform: translateX(0);\n// opacity: 1;\n// }\n// `;\n\n// const bounceIn = keyframes`\n// 0% {\n// transform: scale(0.3);\n// opacity: 0;\n// }\n// 50% {\n// transform: scale(1.05);\n// }\n// 70% {\n// transform: scale(0.9);\n// }\n// 100% {\n// transform: scale(1);\n// opacity: 1;\n// }\n// `;\n\n// Removed unused slideInAnimation - can be re-added if needed for future features\n\nexport const shimmerAnimation = keyframes`\n 0% {\n background-position: -${GRADIENT.shimmerTravel}px 0;\n }\n 100% {\n background-position: ${GRADIENT.shimmerTravel}px 0;\n }\n`;\n\nexport const fadeInScale = keyframes`\n from {\n opacity: 0;\n transform: scale(${FADE_IN.scale}) translateY(-${FADE_IN.lift}px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n`;\n\nexport const iconRotate = keyframes`\n 0% {\n transform: rotate(0deg) scale(${ICON_SPIN.from});\n }\n 50% {\n transform: rotate(180deg) scale(${ICON_SPIN.mid});\n }\n 100% {\n transform: rotate(360deg) scale(1);\n }\n`;\n\n// The MUI-themed twin of `alertPalette` in `Alert.metrics.ts`: same names,\n// same three greys for `neutral`, same fallback to `info`.\nexport const getColorFromTheme = (theme: Theme, variant: string): AlertPalette => {\n const soft = softNeutral(theme);\n const colorMap: Record<string, AlertPalette> = {\n info: theme.palette.info,\n success: theme.palette.success,\n warning: theme.palette.warning,\n danger: theme.palette.error,\n primary: theme.palette.primary,\n secondary: theme.palette.secondary,\n neutral: { main: soft.main, light: soft.light, dark: soft.dark },\n };\n\n return colorMap[variant] || theme.palette.info;\n};\n\n/** The shared glyph names drawn with MUI's icons; the native side draws the same names from the icon set. */\nconst VARIANT_ICONS: Partial<Record<IconName, React.ReactNode>> = {\n Info: <Info />,\n CheckCircle: <CheckCircle />,\n Warning: <Warning />,\n Error: <Error />,\n};\n\nexport const getVariantIcon = (variant: string): React.ReactNode => {\n const name = VARIANT_ICON[variant as AlertVariant];\n return name ? VARIANT_ICONS[name] : undefined;\n};\n\n/**\n * The room the message is given — padding, the stack's rhythm, and where the\n * icon and the close button sit relative to it.\n *\n * Extracted for the same reason {@link alertVariantStyles} and\n * {@link alertEmphasisStyles} were: `styled()`'s callback is one function, and\n * every block written inline is counted against its length by the complexity\n * gate. Keeping the layout here means the callback assembles four named pieces\n * instead of carrying all of them.\n */\nexport const alertLayoutStyles = (\n theme: Theme,\n colorPalette: AlertPalette,\n animate: boolean | undefined,\n): CSSObject => ({\n // ROOM TO READ.\n //\n // MUI's `6px 16px` is sized for one line of text and nothing else. This Alert\n // routinely carries three things stacked — a sentence, a smaller explanation,\n // then a control — and at 6px they touched top and bottom and ran together\n // vertically, so the whole card read as one dense block instead of as a\n // message with parts. The generosity is what makes the structure legible; it\n // is not decoration.\n //\n // Padding stays overridable by an `sx` (a full-bleed strip legitimately wants\n // it tight), because this is a default rather than a rule.\n padding: theme.spacing(ALERT_PADDING_UNITS.vertical, ALERT_PADDING_UNITS.horizontal),\n\n '.MuiAlert-message': {\n display: 'flex',\n flexDirection: 'column',\n // 0.5 put a title, its explanation and a button 4px apart, which reads as a\n // spacing bug rather than as a group. 1 separates the lines; the extra\n // margin below goes to whatever CONTROL sits at the end, because the gap\n // between prose and a thing you press has to be bigger than the gap between\n // two lines of prose or the button looks like part of the text.\n gap: theme.spacing(MESSAGE_GAP_UNITS),\n fontSize: rem(theme, MESSAGE_FONT_SIZE),\n lineHeight: MESSAGE_LINE_HEIGHT,\n // No padding of its own — the root's is now doing that job, and MUI's\n // default `8px 0` on top of it would double the vertical space.\n padding: 0,\n // A CONTROL ON A TINTED PANEL NEEDS AN EDGE.\n //\n // `ghost` and `text` paint no background and no border — bare labels, which\n // works on white where the surrounding page is obviously not clickable.\n // Inside a coloured Alert it stops working: the label is one more coloured\n // phrase among several, and a \"Cancelar\" beside two lines of prose reads as\n // part of the prose.\n //\n // Only the BORDER is set, never the background or the colour, and that is\n // what makes it safe to apply to every button rather than just the bare\n // ones: a `solid` keeps its fill and its light label and gains a hairline\n // in the same hue, while a `ghost` gains the whole affordance.\n '.MuiButton-root': {\n marginTop: theme.spacing(MESSAGE_BUTTON.marginTopUnits),\n border: `1px solid ${alpha(colorPalette.main, MESSAGE_BUTTON.borderAlpha)}`,\n },\n },\n\n '.MuiAlert-icon': {\n transition: `transform ${seconds(ALERT_TRANSITION_MS)} ${ALERT_EASING}`,\n alignItems: 'center',\n // Clear of the words rather than nearly touching them, and aligned to the\n // FIRST line instead of centred on the whole block — an icon floating\n // halfway down a three-line message points at nothing.\n alignSelf: 'flex-start',\n marginRight: theme.spacing(ICON_SLOT.marginRightUnits),\n paddingTop: theme.spacing(ICON_SLOT.paddingTopUnits),\n animation: animate ? `${iconRotate} ${seconds(ICON_SPIN.ms)} ease-out` : 'none',\n },\n\n // The close button, kept off the text it sits beside.\n '.MuiAlert-action': {\n alignItems: 'flex-start',\n paddingLeft: theme.spacing(ACTION_SLOT.paddingLeftUnits),\n },\n});\n\n/**\n * A semantic Alert's surface and ink.\n *\n * ## Why this is not `alpha(main, 0.1)`\n *\n * It used to be, four times over, with `color: main` for the text. Both halves\n * were wrong, and independently so.\n *\n * The fill was TRANSLUCENT. A 10% wash only reads as a banner when something\n * opaque is behind it, so the component silently depended on where a consumer\n * put it. Placed over content — a floating notice, an invite anchored above a\n * catalogue — the page came straight through and the sentence interleaved with\n * whatever it was over. That is not a faint banner; it is an unreadable one,\n * and nothing in the component said so.\n *\n * The ink was the SEVERITY HUE at body size. `#0288d1`, this library's info\n * blue, is 3.03:1 on white — under the 4.5:1 WCAG AA floor before any wash is\n * involved. So the text failed on a plain white page too, where the fill was\n * behaving exactly as intended.\n *\n * ## Why `lighten`/`darken` rather than a hand-picked pair\n *\n * These are the same transforms MUI's own `standard` Alert uses, at the same\n * ratios — the recipe this component overrode. Reusing it means an OPAQUE tint\n * with a dark ink of the same hue, contrast that holds on any surface because\n * it no longer depends on one, and a pairing already proven across MUI's\n * palette rather than eyeballed here. Both modes are handled: on a dark theme\n * the tint darkens and the ink lightens, which an alpha wash could never do\n * because it carries the seed's own lightness through unchanged.\n *\n * The border keeps an alpha — it is a hairline over the tint it belongs to, so\n * translucency there costs nothing and lets the edge follow the fill.\n *\n * The ratios live in `Alert.metrics.ts` (`SEMANTIC_SURFACE`), where the\n * native renderer reads the same three through the same colour arithmetic.\n */\nconst semanticSurface = (theme: Theme, colorPalette: AlertPalette): CSSObject => {\n const dark = theme.palette.mode === 'dark';\n return {\n backgroundColor: dark\n ? darken(colorPalette.main, SEMANTIC_SURFACE.tint.dark)\n : lighten(colorPalette.main, SEMANTIC_SURFACE.tint.light),\n color: dark\n ? lighten(colorPalette.main, SEMANTIC_SURFACE.ink)\n : darken(colorPalette.main, SEMANTIC_SURFACE.ink),\n border: `1px solid ${alpha(colorPalette.main, SEMANTIC_SURFACE.borderAlpha)}`,\n '.MuiAlert-icon': {\n color: colorPalette.main,\n },\n };\n};\n\n// The six visual variants. Each block is spread in only when it matches, which\n// is how the original inline version read; keeping that shape here means the\n// styled() callback carries one branch instead of six. The four semantics were\n// four IDENTICAL copies of the same block — they now share one, so the next\n// change to a banner's surface cannot land on three of them.\nexport const alertVariantStyles = (\n theme: Theme,\n customVariant: string | undefined,\n colorPalette: AlertPalette,\n): CSSObject => ({\n ...(customVariant !== undefined &&\n SEMANTIC_VARIANTS.has(customVariant as AlertVariant) &&\n semanticSurface(theme, colorPalette)),\n\n ...(customVariant === 'glass' && {\n // 85%, not 10%. This is the variant that is MEANT to be see-through, and it\n // was the same mistake in a costume: at 0.1 the blur had almost nothing to\n // sit on, so `glass` was not frosted, it was a window. A frosted pane has to\n // be mostly pane — the backdrop should be legible AS texture behind the\n // text, never as competition with it.\n backgroundColor: alpha(theme.palette.background.paper, GLASS.backgroundAlpha),\n backdropFilter: `blur(${GLASS.blur}px) saturate(${GLASS.saturatePercent}%)`,\n WebkitBackdropFilter: `blur(${GLASS.blur}px) saturate(${GLASS.saturatePercent}%)`,\n border: `1px solid ${alpha(theme.palette.divider, GLASS.borderAlpha)}`,\n color: theme.palette.text.primary,\n '.MuiAlert-icon': {\n color: theme.palette.primary.main,\n },\n // Safari before 18 and Firefox with the filter disabled paint the declared\n // alpha with nothing blurred behind it — the see-through banner this is\n // fixing. There is no degraded frost to fall back to, so it falls back to an\n // opaque pane: less pretty, still readable.\n '@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)))': {\n backgroundColor: theme.palette.background.paper,\n },\n }),\n\n ...(customVariant === 'gradient' && {\n background: `linear-gradient(${GRADIENT.angleDeg}deg, ${alpha(colorPalette.light || colorPalette.main, GRADIENT.stopAlpha)}, ${alpha(colorPalette.dark || colorPalette.main, GRADIENT.stopAlpha)})`,\n color: theme.palette.getContrastText(colorPalette.main),\n border: 'none',\n position: 'relative',\n overflow: 'hidden',\n '.MuiAlert-icon': {\n color: theme.palette.getContrastText(colorPalette.main),\n },\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: `-${GRADIENT.shimmerTravel}px`,\n width: '100%',\n height: '100%',\n background: `linear-gradient(90deg, transparent, ${sheen(theme, GRADIENT.shimmerAlpha)}, transparent)`,\n animation: `${shimmerAnimation} ${seconds(GRADIENT.shimmerMs)} infinite`,\n },\n }),\n});\n\n/** The web's glow: a soft shadow of the hue and a touch of brightness. */\nconst glowStyles = (colorPalette: AlertPalette): CSSObject => ({\n // No `!important`: the pointer states paint their tint as an INSET shadow on\n // the same property, and compose this one alongside it rather than fighting\n // it. `glowShadow` in `Alert.tsx` is the other half of that pair.\n boxShadow: `0 0 ${GLOW.blur}px ${GLOW.spread}px ${alpha(colorPalette.main, GLOW.alpha)}`,\n filter: `brightness(${GLOW.brightness})`,\n});\n\n/** The web's pulse: a wash of the hue over the whole card, fading out every two seconds. */\nconst pulseAfter = (colorPalette: AlertPalette): CSSObject => ({\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: 'inherit',\n backgroundColor: colorPalette.main,\n opacity: PULSE.alpha,\n animation: `${pulseAnimation} ${seconds(PULSE.ms)} infinite`,\n pointerEvents: 'none',\n zIndex: -1,\n});\n\n// glow and pulse combine into three distinct looks, so the combinations are\n// spelled out rather than layered — layering them would let the glow-only shadow\n// leak into the glow+pulse case. Declaration ORDER is kept as it has always\n// been, because emotion hashes the serialised block into the class name.\nexport const alertEmphasisStyles = (\n colorPalette: AlertPalette,\n glow: boolean,\n pulse: boolean,\n): CSSObject => ({\n ...(glow && !pulse && glowStyles(colorPalette)),\n\n // Pulse animation\n ...(pulse &&\n !glow && {\n position: 'relative',\n '&::after': pulseAfter(colorPalette),\n }),\n\n // Both glow and pulse\n ...(glow &&\n pulse && {\n position: 'relative',\n ...glowStyles(colorPalette),\n '&::after': pulseAfter(colorPalette),\n }),\n});\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/MapPreview/MapLayers.tsx"],"sourcesContent":["import { useTheme } from '@mui/material/styles/index.js';\nimport type { FC } from 'react';\nimport React from 'react';\n\nimport { HEATMAP_VIEWBOX } from './MapPreview.constants';\nimport type { ResolvedMapPreviewProps } from './MapPreview.helpers';\nimport type { MapType } from './MapPreview.types';\nimport { MapControlBar } from './MapControlBar';\nimport { HeatmapOverlay, RouteOverlay } from './MapOverlays';\nimport { MapSearchBar } from './MapSearchBar';\n\nexport interface MapLayersProps {\n settings: ResolvedMapPreviewProps;\n zoom: number;\n mapType: MapType;\n search: {\n searchValue: string;\n isSearching: boolean;\n setSearchValue: (value: string) => void;\n handleSearch: (event: React.KeyboardEvent<HTMLInputElement>) => void;\n };\n controls: {\n handleZoomIn: () => void;\n handleZoomOut: () => void;\n handleCenter: () => void;\n handleToggleMapType: () => void;\n handleToggleFullscreen: () => void;\n };\n}\n\n// Everything drawn over the map surface that is switched on by a prop.\nexport const MapLayers: FC<MapLayersProps> = ({ settings, zoom, mapType, search, controls }) => {\n const theme = useTheme();\n\n return (\n <>\n {settings.showHeatmap && settings.heatmapData.length > 0 && (\n <HeatmapOverlay\n points={settings.heatmapData}\n width={HEATMAP_VIEWBOX.width}\n height={HEATMAP_VIEWBOX.height}\n />\n )}\n\n {settings.showRoute && <RouteOverlay color={settings.routeColor || theme.palette.primary.main} />}\n\n {settings.showSearch && (\n <MapSearchBar\n label={settings.copy.search}\n value={search.searchValue}\n placeholder={settings.searchPlaceholder}\n isSearching={search.isSearching}\n onChange={search.setSearchValue}\n onSubmit={search.handleSearch}\n />\n )}\n\n {settings.showControls && (\n <MapControlBar\n copy={settings.copy}\n zoom={zoom}\n mapType={mapType}\n onZoomIn={controls.handleZoomIn}\n onZoomOut={controls.handleZoomOut}\n onCenter={controls.handleCenter}\n onToggleMapType={controls.handleToggleMapType}\n onToggleFullscreen={controls.handleToggleFullscreen}\n />\n )}\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;AAAA,SAAS,gBAAgB;AAmCrB,mBAEI,KAFJ;AAJG,IAAM,YAAgC,CAAC,EAAE,UAAU,MAAM,SAAS,QAAQ,SAAS,MAAM;AAC9F,QAAM,QAAQ,SAAS;AAEvB,SACE,iCACG;AAAA,aAAS,eAAe,SAAS,YAAY,SAAS,KACrD;AAAA,MAAC;AAAA;AAAA,QACC,QAAQ,SAAS;AAAA,QACjB,OAAO,gBAAgB;AAAA,QACvB,QAAQ,gBAAgB;AAAA;AAAA,IAC1B;AAAA,IAGD,SAAS,aAAa,oBAAC,gBAAa,OAAO,SAAS,cAAc,MAAM,QAAQ,QAAQ,MAAM;AAAA,IAE9F,SAAS,cACR;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,SAAS,KAAK;AAAA,QACrB,OAAO,OAAO;AAAA,QACd,aAAa,SAAS;AAAA,QACtB,aAAa,OAAO;AAAA,QACpB,UAAU,OAAO;AAAA,QACjB,UAAU,OAAO;AAAA;AAAA,IACnB;AAAA,IAGD,SAAS,gBACR;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,SAAS;AAAA,QACf;AAAA,QACA;AAAA,QACA,UAAU,SAAS;AAAA,QACnB,WAAW,SAAS;AAAA,QACpB,UAAU,SAAS;AAAA,QACnB,iBAAiB,SAAS;AAAA,QAC1B,oBAAoB,SAAS;AAAA;AAAA,IAC/B;AAAA,KAEJ;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/MapPreview/MapPreview.helpers.ts"],"sourcesContent":["import type { Theme } from '@mui/material/styles/index.js';\nimport { alpha } from '@mui/material/styles/index.js';\n\nimport { DEFAULT_ZOOM } from './MapPreview.constants';\nimport type { MapPreviewProps } from './MapPreview.types';\n\ntype MapDefaultedKeys =\n | 'markers'\n | 'marker'\n | 'height'\n | 'interactive'\n | 'zoom'\n | 'mapType'\n | 'variant'\n | 'showControls'\n | 'showSearch'\n | 'searchPlaceholder'\n | 'showRoute'\n | 'heatmapData'\n | 'showHeatmap'\n | 'animated';\n\nexport type ResolvedMapPreviewProps = MapPreviewProps &\n Required<Pick<MapPreviewProps, MapDefaultedKeys>>;\n\nconst MAP_PREVIEW_DEFAULTS: Pick<MapPreviewProps, MapDefaultedKeys> = {\n markers: [],\n marker: true,\n height: '400px',\n interactive: false,\n zoom: DEFAULT_ZOOM,\n mapType: 'roadmap',\n variant: 'default',\n showControls: true,\n showSearch: false,\n searchPlaceholder: 'Search location...',\n showRoute: false,\n heatmapData: [],\n showHeatmap: false,\n animated: true,\n};\n\n// Strips explicitly-undefined props before the merge, so `prop={undefined}` still\n// falls back to the default exactly as a destructuring default would.\nconst definedProps = (props: MapPreviewProps): Partial<MapPreviewProps> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<MapPreviewProps>;\n\n// Applied as a merge rather than destructuring defaults, which would otherwise\n// put fourteen branches into the component's own complexity budget.\nexport const resolveMapPreviewProps = (props: MapPreviewProps): ResolvedMapPreviewProps =>\n ({ ...MAP_PREVIEW_DEFAULTS, ...definedProps(props) }) as ResolvedMapPreviewProps;\n\nexport const glassStyles = (variant: MapPreviewProps['variant'], theme: Theme) =>\n variant === 'glass'\n ? {\n background: alpha(theme.palette.background.paper, 0.7),\n backdropFilter: 'blur(20px)',\n WebkitBackdropFilter: 'blur(20px)',\n border: `1px solid ${alpha(theme.palette.divider, 0.1)}`,\n }\n : {};\n"],"mappings":";;;;;AACA,SAAS,aAAa;AAwBtB,IAAM,uBAAgE;AAAA,EACpE,SAAS,CAAC;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,mBAAmB;AAAA,EACnB,WAAW;AAAA,EACX,aAAa,CAAC;AAAA,EACd,aAAa;AAAA,EACb,UAAU;AACZ;AAIA,IAAM,eAAe,CAAC,UACpB,OAAO;AAAA,EACL,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS;AACjE;AAIK,IAAM,yBAAyB,CAAC,WACpC,EAAE,GAAG,sBAAsB,GAAG,aAAa,KAAK,EAAE;AAE9C,IAAM,cAAc,CAAC,SAAqC,UAC/D,YAAY,UACR;AAAA,EACE,YAAY,MAAM,MAAM,QAAQ,WAAW,OAAO,GAAG;AAAA,EACrD,gBAAgB;AAAA,EAChB,sBAAsB;AAAA,EACtB,QAAQ,aAAa,MAAM,MAAM,QAAQ,SAAS,GAAG,CAAC;AACxD,IACA,CAAC;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/Timeline/Timeline.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport { alpha, styled } from '@mui/material/styles/index.js';\nimport type { FC } from 'react';\nimport React from 'react';\nimport { TimelineRow } from './TimelineRow';\nimport type { TimelineProps } from './Timeline.types';\n\n// ---\n\n// --- Styled Components ---\nconst TimelineContainer = styled(Box)<{ orientation: 'vertical' | 'horizontal' }>(\n ({ theme, orientation }) => ({\n display: 'flex',\n flexDirection: orientation === 'vertical' ? 'column' : 'row',\n gap: theme.spacing(2),\n position: 'relative',\n width: '100%',\n ...(orientation === 'horizontal' && {\n overflowX: 'auto',\n paddingBottom: theme.spacing(2),\n '&::-webkit-scrollbar': {\n height: 8 },\n '&::-webkit-scrollbar-track': {\n background: alpha(theme.palette.action.disabled, 0.1),\n borderRadius: 4 },\n '&::-webkit-scrollbar-thumb': {\n background: alpha(theme.palette.primary.main, 0.3),\n borderRadius: 4,\n '&:hover': {\n background: alpha(theme.palette.primary.main, 0.5) } } }) }),\n);\n\n\n// ---\n\n// Main component\nexport const Timeline: FC<TimelineProps> = ({\n items,\n variant = 'default',\n orientation = 'vertical',\n showConnector = true,\n animated = true,\n alternating = false,\n onItemClick }) => {\n const [expandedItems, setExpandedItems] = React.useState<Set<string>>(new Set());\n\n const handleExpandClick = (itemId: string, event: React.MouseEvent) => {\n event.stopPropagation();\n setExpandedItems((prev) => {\n const newSet = new Set(prev);\n if (newSet.has(itemId)) {\n newSet.delete(itemId);\n } else {\n newSet.add(itemId);\n }\n return newSet;\n });\n };\n\n return (\n <TimelineContainer\n orientation={orientation}\n data-testid=\"timeline-container\"\n >\n {items.map((item, index) => (\n <TimelineRow\n key={item.id}\n item={item}\n index={index}\n isLast={index === items.length - 1}\n variant={variant}\n orientation={orientation}\n showConnector={showConnector}\n animated={animated}\n alternating={alternating}\n isExpanded={expandedItems.has(item.id)}\n onItemClick={onItemClick}\n onExpandClick={handleExpandClick}\n />\n ))}\n </TimelineContainer>\n );\n};\n\nexport default Timeline;\n"],"mappings":";;;;;AAAA,OAAO,SAAS;AAChB,SAAS,OAAO,cAAc;AAE9B,OAAO,WAAW;AA8DV;AAvDR,IAAM,oBAAoB,OAAO,GAAG;AAAA,EAClC,CAAC,EAAE,OAAO,YAAY,OAAO;AAAA,IAC3B,SAAS;AAAA,IACT,eAAe,gBAAgB,aAAa,WAAW;AAAA,IACvD,KAAK,MAAM,QAAQ,CAAC;AAAA,IACpB,UAAU;AAAA,IACV,OAAO;AAAA,IACP,GAAI,gBAAgB,gBAAgB;AAAA,MAClC,WAAW;AAAA,MACX,eAAe,MAAM,QAAQ,CAAC;AAAA,MAC9B,wBAAwB;AAAA,QACtB,QAAQ;AAAA,MAAE;AAAA,MACZ,8BAA8B;AAAA,QAC5B,YAAY,MAAM,MAAM,QAAQ,OAAO,UAAU,GAAG;AAAA,QACpD,cAAc;AAAA,MAAE;AAAA,MAClB,8BAA8B;AAAA,QAC5B,YAAY,MAAM,MAAM,QAAQ,QAAQ,MAAM,GAAG;AAAA,QACjD,cAAc;AAAA,QACd,WAAW;AAAA,UACT,YAAY,MAAM,MAAM,QAAQ,QAAQ,MAAM,GAAG;AAAA,QAAE;AAAA,MAAE;AAAA,IAAE;AAAA,EAAG;AACpE;AAMO,IAAM,WAA8B,CAAC;AAAA,EAC1C;AAAA,EACA,UAAU;AAAA,EACV,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,cAAc;AAAA,EACd;AAAY,MAAM;AAClB,QAAM,CAAC,eAAe,gBAAgB,IAAI,MAAM,SAAsB,oBAAI,IAAI,CAAC;AAE/E,QAAM,oBAAoB,CAAC,QAAgB,UAA4B;AACrE,UAAM,gBAAgB;AACtB,qBAAiB,CAAC,SAAS;AACzB,YAAM,SAAS,IAAI,IAAI,IAAI;AAC3B,UAAI,OAAO,IAAI,MAAM,GAAG;AACtB,eAAO,OAAO,MAAM;AAAA,MACtB,OAAO;AACL,eAAO,IAAI,MAAM;AAAA,MACnB;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,eAAY;AAAA,MAEX,gBAAM,IAAI,CAAC,MAAM,UAChB;AAAA,QAAC;AAAA;AAAA,UAEC;AAAA,UACA;AAAA,UACA,QAAQ,UAAU,MAAM,SAAS;AAAA,UACjC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,YAAY,cAAc,IAAI,KAAK,EAAE;AAAA,UACrC;AAAA,UACA,eAAe;AAAA;AAAA,QAXV,KAAK;AAAA,MAYZ,CACD;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,mBAAQ;","names":[]}