@12-apps/ui 6.78.3 → 6.79.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_internal/components/data-display/Alert/Alert.js +3 -3
- package/dist/_internal/components/data-display/AlertDialog/AlertDialog.js +2 -1
- package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +3 -3
- package/dist/_internal/components/data-display/Avatar/Avatar.js +4 -4
- package/dist/_internal/components/data-display/Avatar/Avatar.view.js +2 -2
- package/dist/_internal/components/data-display/CardKit/card-actions-context.js +4 -4
- package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +11 -10
- package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +7 -6
- package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +5 -2
- package/dist/_internal/components/data-display/Carousel/Carousel.js +7 -4
- package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +4 -1
- package/dist/_internal/components/data-display/Chart/Chart.js +3 -3
- package/dist/_internal/components/data-display/Chart/SpecChart.js +6 -6
- package/dist/_internal/components/data-display/Chart/chart-renderers.js +2 -2
- package/dist/_internal/components/data-display/Chart/chart-spec.js +2 -2
- package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +50 -49
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +70 -69
- package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +4 -3
- package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +9 -8
- package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +8 -7
- package/dist/_internal/components/data-display/DataViews/base-card.js +5 -5
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card-gutters.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +2 -2
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +10 -10
- package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +15 -14
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +21 -20
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +45 -44
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +22 -21
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +19 -18
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +20 -19
- package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +9 -8
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +22 -21
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +8 -7
- package/dist/_internal/components/data-display/DataViews/list-card-rails.js +2 -2
- package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +4 -4
- package/dist/_internal/components/data-display/EmptyState/EmptyState.js +2 -2
- package/dist/_internal/components/data-display/FleetMap/FleetBody.js +11 -8
- package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +10 -7
- package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +1 -1
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js +15 -12
- package/dist/_internal/components/data-display/HoverCard/HoverCard.js +2 -2
- package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.js +2 -2
- package/dist/_internal/components/data-display/LazyImage/LazyImage.hooks.js +1 -1
- package/dist/_internal/components/data-display/LazyImage/LazyImage.js +3 -2
- package/dist/_internal/components/data-display/Lightbox/Lightbox.js +6 -6
- package/dist/_internal/components/data-display/MapPreview/MapControlBar.js +5 -1
- package/dist/_internal/components/data-display/MapPreview/MapLayers.js +7 -3
- package/dist/_internal/components/data-display/MapPreview/MapMarkers.js +5 -1
- package/dist/_internal/components/data-display/MapPreview/MapPreview.helpers.js +6 -1
- package/dist/_internal/components/data-display/MapPreview/MapPreview.js +9 -6
- package/dist/_internal/components/data-display/Progress/Progress.js +2 -2
- package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +6 -4
- package/dist/_internal/components/data-display/Sheet/Sheet.hooks.js +2 -2
- package/dist/_internal/components/data-display/Sheet/Sheet.js +4 -4
- package/dist/_internal/components/data-display/Stepper/Stepper.js +3 -1
- package/dist/_internal/components/data-display/Table/Table.helpers.js +1 -1
- package/dist/_internal/components/data-display/Table/Table.js +6 -4
- package/dist/_internal/components/data-display/Table/TableParts.hooks.js +4 -2
- package/dist/_internal/components/data-display/Table/TableParts.js +4 -2
- package/dist/_internal/components/data-display/Timeline/Timeline.js +4 -2
- package/dist/_internal/components/data-display/Timeline/TimelineRow.js +1 -1
- package/dist/_internal/components/data-display/index.js +69 -64
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +4 -3
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.parts.js +3 -2
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +5 -4
- package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +4 -3
- package/dist/_internal/components/feedback/Dialog/Dialog.js +3 -2
- package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +4 -4
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +12 -11
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +6 -6
- package/dist/_internal/components/feedback/Sonner/Sonner.js +3 -2
- package/dist/_internal/components/feedback/Sonner/SonnerToast.js +1 -1
- package/dist/_internal/components/feedback/StackedModal/StackedModal.js +7 -6
- package/dist/_internal/components/feedback/StackedModal/StackedModal.parts.js +2 -1
- package/dist/_internal/components/feedback/Toast/Toast.js +2 -1
- package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +3 -2
- package/dist/_internal/components/feedback/TutorialOverlay/TutorialStepBody.js +2 -1
- package/dist/_internal/components/feedback/index.js +33 -31
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.helpers.js +3 -1
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.hooks.js +8 -6
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +12 -10
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +4 -2
- package/dist/_internal/components/form/AddressAutocomplete/useAddressPredictions.js +4 -2
- package/dist/_internal/components/form/AddressAutocomplete/useAddressSelection.js +1 -1
- package/dist/_internal/components/form/AddressAutocomplete/useCurrentLocation.js +1 -1
- package/dist/_internal/components/form/AddressAutocomplete/useGoogleMapsAPI.js +1 -1
- package/dist/_internal/components/form/Autocomplete/Autocomplete.js +2 -2
- package/dist/_internal/components/form/Calendar/Calendar.hooks.js +2 -2
- package/dist/_internal/components/form/Calendar/Calendar.js +6 -6
- package/dist/_internal/components/form/Calendar/CalendarDay.js +1 -1
- package/dist/_internal/components/form/Calendar/CalendarDayCell.js +2 -2
- package/dist/_internal/components/form/Calendar/CalendarMonth.js +3 -3
- package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +5 -5
- package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +3 -3
- package/dist/_internal/components/form/CategorySelect/CategoryRows.js +2 -2
- package/dist/_internal/components/form/CategorySelect/CategorySelect.js +9 -9
- package/dist/_internal/components/form/Checkbox/Checkbox.js +2 -2
- package/dist/_internal/components/form/CodeEditor/CodeEditor.js +3 -3
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +9 -9
- package/dist/_internal/components/form/InputOTP/InputOTP.js +2 -2
- package/dist/_internal/components/form/Menubar/Menubar.js +2 -2
- package/dist/_internal/components/form/PhoneInput/PhoneInput.hooks.js +2 -2
- package/dist/_internal/components/form/PhoneInput/PhoneInput.js +3 -3
- package/dist/_internal/components/form/PhoneInput/countries.js +7 -3
- package/dist/_internal/components/form/PickerSheet/PickerSheet.js +4 -4
- package/dist/_internal/components/form/RichTextEditor/RichTextEditor.dom.js +2 -1
- package/dist/_internal/components/form/RichTextEditor/RichTextEditor.format.js +3 -2
- package/dist/_internal/components/form/RichTextEditor/RichTextEditor.hooks.js +4 -3
- package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +7 -5
- package/dist/_internal/components/form/RichTextEditor/RichTextEditorToolbar.js +1 -1
- package/dist/_internal/components/form/Switch/Switch.js +4 -4
- package/dist/_internal/components/form/Switch/Switch.parts.js +3 -3
- package/dist/_internal/components/form/Switch/Switch.styles.js +2 -2
- package/dist/_internal/components/form/Textarea/Textarea.js +1 -1
- package/dist/_internal/components/form/Textarea/TextareaRichEditor.js +4 -1
- package/dist/_internal/components/form/Textarea/TextareaRichEditor.js.map +1 -1
- package/dist/_internal/components/form/UploadButton/UploadButton.hooks.js +2 -1
- package/dist/_internal/components/form/UploadButton/UploadButton.js +3 -2
- package/dist/_internal/components/form/index.js +48 -45
- package/dist/_internal/components/form/total-form/Fields/CategoryField.js +10 -10
- package/dist/_internal/components/form/total-form/Fields/index.js +13 -13
- package/dist/_internal/components/form/total-form/FormErrorSnackbar.js +3 -2
- package/dist/_internal/components/index.js +196 -188
- package/dist/_internal/components/layout/Card/Card.js +2 -2
- package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +2 -1
- package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +2 -1
- package/dist/_internal/components/layout/Dashboard/Dashboard.js +2 -1
- package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +3 -3
- package/dist/_internal/components/layout/SettingCard/SettingCard.js +4 -4
- package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js +3 -3
- package/dist/_internal/components/layout/SettingCard/SettingGroup.js +10 -10
- package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +8 -8
- package/dist/_internal/components/layout/SettingCard/SettingToggle.js +10 -10
- package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +6 -6
- package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +3 -3
- package/dist/_internal/components/layout/SettingsLayout/SettingsSectionChips.js +2 -2
- package/dist/_internal/components/layout/index.js +34 -33
- package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +8 -7
- package/dist/_internal/components/navigation/CommandPalette/CommandPalette.helpers.js +2 -1
- package/dist/_internal/components/navigation/CommandPalette/CommandPalette.hooks.js +3 -2
- package/dist/_internal/components/navigation/CommandPalette/CommandPalette.js +6 -4
- package/dist/_internal/components/navigation/CommandPalette/CommandPaletteResults.js +3 -1
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +4 -4
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +7 -6
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.shell.js +1 -1
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMenuItem.js +2 -2
- package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +5 -4
- package/dist/_internal/components/navigation/Pagination/Pagination.js +2 -2
- package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +2 -2
- package/dist/_internal/components/navigation/SectionNav/SectionNav.js +4 -4
- package/dist/_internal/components/navigation/index.js +29 -26
- package/dist/_internal/components/typography/Code/Code.js +2 -1
- package/dist/_internal/components/typography/index.js +2 -1
- package/dist/_internal/components/utility/InstallPrompt/InstallPrompt.js +2 -2
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +7 -3
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +6 -4
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +4 -2
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +5 -3
- package/dist/_internal/components/utility/index.js +8 -6
- package/dist/_internal/copy/labels.js +1 -0
- package/dist/_internal/en-US.data-display.js +1 -1
- package/dist/_internal/en-US.feedback.js +1 -1
- package/dist/_internal/en-US.form.js +1 -1
- package/dist/_internal/en-US.labels.js +8 -0
- package/dist/_internal/en-US.navigation.js +1 -1
- package/dist/_internal/en-US.utility.js +1 -1
- package/dist/_internal/pt-BR.data-display.js +1 -1
- package/dist/_internal/pt-BR.feedback.js +1 -1
- package/dist/_internal/pt-BR.form.js +1 -1
- package/dist/_internal/pt-BR.labels.js +8 -0
- package/dist/_internal/pt-BR.labels.js.map +1 -0
- package/dist/_internal/pt-BR.navigation.js +1 -1
- package/dist/_internal/pt-BR.utility.js +1 -1
- package/dist/_internal/social-login-button/social-login-button.js +4 -4
- package/dist/_internal/user-avatar/user-avatar.js +8 -7
- package/dist/_internal/utils/resolve-labels.js +8 -0
- package/dist/_internal/utils/resolve-labels.js.map +1 -0
- package/dist/charts.js +11 -11
- package/dist/{chunk-2ILXXBMG.js → chunk-25HBYY4O.js} +12 -6
- package/dist/chunk-25HBYY4O.js.map +1 -0
- package/dist/{chunk-OPP6USJC.js → chunk-2FQF4CNE.js} +2 -2
- package/dist/{chunk-BWFQEASG.js → chunk-2P5ZBBTL.js} +5 -5
- package/dist/{chunk-QVO4SIS7.js → chunk-3W2B7IZG.js} +2 -2
- package/dist/{chunk-PMRLFNBT.js → chunk-3XLSA3YB.js} +4 -4
- package/dist/{chunk-7P5PNRBT.js → chunk-3YCV4EP7.js} +6 -6
- package/dist/{chunk-AYP6ICAY.js → chunk-44FY2YZL.js} +11 -10
- package/dist/chunk-44FY2YZL.js.map +1 -0
- package/dist/chunk-47IAX6PI.js +119 -0
- package/dist/chunk-47IAX6PI.js.map +1 -0
- package/dist/{chunk-Q6PRGXR2.js → chunk-4HBCWKIX.js} +4 -4
- package/dist/{chunk-HN3PZTUK.js → chunk-4MKVGSHX.js} +5 -5
- package/dist/{chunk-EERUSI52.js → chunk-4N3I7ZHQ.js} +2 -2
- package/dist/{chunk-O6SAU5JA.js → chunk-4OTJ66ID.js} +4 -4
- package/dist/{chunk-LG52LMAM.js → chunk-556LO6KA.js} +3 -3
- package/dist/{chunk-LBZEPWYK.js → chunk-5GLOEGOM.js} +4 -4
- package/dist/{chunk-KZXOIRUP.js → chunk-5MAD6ZEI.js} +43 -12
- package/dist/chunk-5MAD6ZEI.js.map +1 -0
- package/dist/{chunk-XICRCPEQ.js → chunk-5U7LBO2V.js} +5 -4
- package/dist/chunk-5U7LBO2V.js.map +1 -0
- package/dist/{chunk-JE6RZ5L6.js → chunk-5ZOJLYD2.js} +4 -4
- package/dist/{chunk-GSXYXMCV.js → chunk-66BRUS2M.js} +2 -2
- package/dist/{chunk-ALREWFRX.js → chunk-6DGNMASB.js} +4 -4
- package/dist/{chunk-MA6SUE7F.js → chunk-6EZQLNPK.js} +5 -3
- package/dist/chunk-6EZQLNPK.js.map +1 -0
- package/dist/{chunk-VRPCZ3IE.js → chunk-6JKECOZ2.js} +7 -6
- package/dist/chunk-6JKECOZ2.js.map +1 -0
- package/dist/{chunk-XKSA4L2X.js → chunk-6MGYPTAL.js} +11 -3
- package/dist/chunk-6MGYPTAL.js.map +1 -0
- package/dist/{chunk-5752357K.js → chunk-6N2U67KF.js} +4 -4
- package/dist/{chunk-UZOG6HNN.js → chunk-6SFJIW54.js} +5 -4
- package/dist/chunk-6SFJIW54.js.map +1 -0
- package/dist/{chunk-VD72JGHA.js → chunk-73OYC22L.js} +2 -2
- package/dist/{chunk-6PU3JYVY.js → chunk-775LIZXS.js} +4 -4
- package/dist/{chunk-C5JCARNE.js → chunk-7HKXTRTK.js} +7 -4
- package/dist/chunk-7HKXTRTK.js.map +1 -0
- package/dist/{chunk-S4JXSC4D.js → chunk-7HZ6TJRH.js} +6 -6
- package/dist/{chunk-33LAPBYB.js → chunk-7S25RDE4.js} +9 -5
- package/dist/chunk-7S25RDE4.js.map +1 -0
- package/dist/{chunk-CSD6SWBZ.js → chunk-A3Z7ZXLM.js} +6 -6
- package/dist/{chunk-LI6XSM5D.js → chunk-A6V7KE45.js} +3 -3
- package/dist/{chunk-YJBWDDW7.js → chunk-AAWVAQI2.js} +12 -12
- package/dist/{chunk-44PBCQ7E.js → chunk-ABQZFK7M.js} +6 -6
- package/dist/{chunk-EIMFA7KP.js → chunk-ANUO67JQ.js} +2 -2
- package/dist/{chunk-PTQRJEPN.js → chunk-AOBQ3KYY.js} +2 -2
- package/dist/{chunk-LODYTVOO.js → chunk-B25SHVWP.js} +4 -4
- package/dist/{chunk-GTT5UKKO.js → chunk-BDJIP4HG.js} +4 -4
- package/dist/{chunk-RS576GOH.js → chunk-BIUT3K6A.js} +4 -4
- package/dist/{chunk-4NQXHPQR.js → chunk-BJ7NWZWO.js} +11 -2
- package/dist/chunk-BJ7NWZWO.js.map +1 -0
- package/dist/{chunk-A5NXBOWS.js → chunk-BLHSLB5D.js} +5 -5
- package/dist/{chunk-DYHOBKPU.js → chunk-BLZDSCIZ.js} +6 -6
- package/dist/{chunk-E53MMMDA.js → chunk-BX6CF2UG.js} +3 -3
- package/dist/{chunk-WVZBYTIK.js → chunk-C465AAD5.js} +29 -19
- package/dist/chunk-C465AAD5.js.map +1 -0
- package/dist/{chunk-7HA7UH7O.js → chunk-C4OETF7K.js} +4 -4
- package/dist/{chunk-64AOS2WA.js → chunk-CAHN7AMY.js} +5 -5
- package/dist/{chunk-Z24VOTA7.js → chunk-CCWE6DBC.js} +4 -2
- package/dist/{chunk-Z24VOTA7.js.map → chunk-CCWE6DBC.js.map} +1 -1
- package/dist/{chunk-YLSDFW5O.js → chunk-CN4JS57H.js} +35 -5
- package/dist/chunk-CN4JS57H.js.map +1 -0
- package/dist/{chunk-MSC43MCJ.js → chunk-CRFOAKQL.js} +5 -5
- package/dist/{chunk-IQ2U5MVO.js → chunk-CSQWPDQV.js} +9 -9
- package/dist/{chunk-B2JYQBO4.js → chunk-CXTRDTNM.js} +11 -6
- package/dist/chunk-CXTRDTNM.js.map +1 -0
- package/dist/{chunk-TTCVYY2B.js → chunk-CYKINZKO.js} +22 -7
- package/dist/chunk-CYKINZKO.js.map +1 -0
- package/dist/{chunk-FT6HBP5E.js → chunk-DE7E2GBP.js} +11 -8
- package/dist/chunk-DE7E2GBP.js.map +1 -0
- package/dist/{chunk-QWVETTIY.js → chunk-DJMVBIFD.js} +21 -12
- package/dist/chunk-DJMVBIFD.js.map +1 -0
- package/dist/{chunk-3HLKTBEO.js → chunk-DQ22UKMZ.js} +4 -2
- package/dist/{chunk-3HLKTBEO.js.map → chunk-DQ22UKMZ.js.map} +1 -1
- package/dist/{chunk-INGPH3YQ.js → chunk-DVRNW33K.js} +28 -5
- package/dist/chunk-DVRNW33K.js.map +1 -0
- package/dist/{chunk-VQYR64QB.js → chunk-DX5PLJKN.js} +8 -3
- package/dist/chunk-DX5PLJKN.js.map +1 -0
- package/dist/{chunk-7XSCEHGA.js → chunk-EOQ6EKTS.js} +7 -7
- package/dist/{chunk-UGH2DDST.js → chunk-ETSASQXI.js} +4 -2
- package/dist/chunk-ETSASQXI.js.map +1 -0
- package/dist/{chunk-3VXS7O3X.js → chunk-EVYLJ5JB.js} +17 -3
- package/dist/chunk-EVYLJ5JB.js.map +1 -0
- package/dist/chunk-FB4GLQQO.js +102 -0
- package/dist/chunk-FB4GLQQO.js.map +1 -0
- package/dist/{chunk-WC3W36AM.js → chunk-FKUVFPQZ.js} +26 -12
- package/dist/chunk-FKUVFPQZ.js.map +1 -0
- package/dist/{chunk-VEKTKCSB.js → chunk-FLJ3RIRP.js} +5 -5
- package/dist/{chunk-LH4VKUZC.js → chunk-FLTXJWOC.js} +13 -7
- package/dist/chunk-FLTXJWOC.js.map +1 -0
- package/dist/{chunk-2ARVNCVU.js → chunk-FZUAB2KS.js} +8 -6
- package/dist/chunk-FZUAB2KS.js.map +1 -0
- package/dist/{chunk-PY3RW5LC.js → chunk-G2IVONJD.js} +24 -10
- package/dist/chunk-G2IVONJD.js.map +1 -0
- package/dist/{chunk-Z5WUSI47.js → chunk-G3JFESKD.js} +6 -6
- package/dist/{chunk-XRDH24J7.js → chunk-G6ET2DRL.js} +2 -2
- package/dist/{chunk-KIL3OVLI.js → chunk-G76PIGF7.js} +6 -2
- package/dist/chunk-G76PIGF7.js.map +1 -0
- package/dist/{chunk-XQWUVQ2F.js → chunk-GHGZI7PK.js} +6 -2
- package/dist/chunk-GHGZI7PK.js.map +1 -0
- package/dist/{chunk-4MQ6XTIJ.js → chunk-GJMWQUAD.js} +24 -13
- package/dist/chunk-GJMWQUAD.js.map +1 -0
- package/dist/{chunk-U4G3KY6L.js → chunk-GMU5AA3R.js} +8 -7
- package/dist/chunk-GMU5AA3R.js.map +1 -0
- package/dist/{chunk-ZFBFQK2Y.js → chunk-GPPUKDA6.js} +11 -12
- package/dist/chunk-GPPUKDA6.js.map +1 -0
- package/dist/{chunk-O36MIQIO.js → chunk-GPQ22MPR.js} +2 -2
- package/dist/{chunk-GRMBCJS6.js → chunk-H6R2L7VI.js} +4 -4
- package/dist/{chunk-AMLHEKSV.js → chunk-HI7JPDD6.js} +5 -5
- package/dist/{chunk-H3AQQOTI.js → chunk-HKGKQKQT.js} +9 -2
- package/dist/chunk-HKGKQKQT.js.map +1 -0
- package/dist/{chunk-CW6Y32N2.js → chunk-I2CT4XIP.js} +6 -6
- package/dist/{chunk-N34AOGK3.js → chunk-I3OKAQ5L.js} +7 -7
- package/dist/{chunk-AEYLFBZT.js → chunk-I4NDZFTB.js} +2 -2
- package/dist/{chunk-5J7SA4CZ.js → chunk-IASPZGYB.js} +28 -10
- package/dist/chunk-IASPZGYB.js.map +1 -0
- package/dist/{chunk-2ZRZTGWP.js → chunk-ISW5K72V.js} +5 -5
- package/dist/{chunk-KARMRTTM.js → chunk-J2RUDZVJ.js} +7 -7
- package/dist/{chunk-FTPTPASD.js → chunk-JBYFBPI6.js} +2 -5
- package/dist/{chunk-FTPTPASD.js.map → chunk-JBYFBPI6.js.map} +1 -1
- package/dist/{chunk-4M5GEKPM.js → chunk-JL4I7OQE.js} +4 -4
- package/dist/chunk-JQLQOIB3.js +1 -0
- package/dist/chunk-JQLQOIB3.js.map +1 -0
- package/dist/{chunk-NBXG3SQ3.js → chunk-JSY234NY.js} +5 -5
- package/dist/{chunk-HQCZT6TO.js → chunk-JVOEVTCZ.js} +5 -5
- package/dist/{chunk-MBMZNSBP.js → chunk-JW7MN4DG.js} +3 -3
- package/dist/{chunk-ZPACE34U.js → chunk-K53XSVQO.js} +10 -10
- package/dist/{chunk-RUF7TOAZ.js → chunk-KE74C2SM.js} +3 -2
- package/dist/{chunk-RUF7TOAZ.js.map → chunk-KE74C2SM.js.map} +1 -1
- package/dist/{chunk-GBVNY2LG.js → chunk-KTXJQ4YJ.js} +6 -6
- package/dist/{chunk-FCVPVEAS.js → chunk-KYE7I6NT.js} +7 -7
- package/dist/{chunk-MM7BPTVV.js → chunk-KYT5G4K7.js} +2 -2
- package/dist/{chunk-4VRDFZ4G.js → chunk-KYTFGW4R.js} +7 -3
- package/dist/chunk-KYTFGW4R.js.map +1 -0
- package/dist/chunk-L35TCXFA.js +74 -0
- package/dist/chunk-L35TCXFA.js.map +1 -0
- package/dist/{chunk-3V3Z4EML.js → chunk-L4FWEI2P.js} +5 -5
- package/dist/{chunk-7VRCGWQL.js → chunk-L7N4AFZD.js} +6 -5
- package/dist/chunk-L7N4AFZD.js.map +1 -0
- package/dist/{chunk-2TSGRQ2J.js → chunk-LHJJZ462.js} +4 -2
- package/dist/chunk-LHJJZ462.js.map +1 -0
- package/dist/{chunk-SV6IQ2YO.js → chunk-LIWONEAU.js} +6 -4
- package/dist/chunk-LIWONEAU.js.map +1 -0
- package/dist/chunk-LL2BWQPM.js +11 -0
- package/dist/chunk-LL2BWQPM.js.map +1 -0
- package/dist/{chunk-XYFBJH6F.js → chunk-LR473BUT.js} +19 -9
- package/dist/chunk-LR473BUT.js.map +1 -0
- package/dist/{chunk-56JF5PZK.js → chunk-LYVTJLCF.js} +4 -4
- package/dist/{chunk-M3DSPEZ3.js → chunk-M3ZNQTS5.js} +5 -5
- package/dist/{chunk-AYJ44VTJ.js → chunk-MBY7DWGT.js} +15 -13
- package/dist/chunk-MBY7DWGT.js.map +1 -0
- package/dist/{chunk-GBKIGUNP.js → chunk-MGDCGNLC.js} +3 -3
- package/dist/{chunk-BGYLL467.js → chunk-N3W6FZOC.js} +4 -4
- package/dist/{chunk-BWFUZ4N2.js → chunk-NA3M7KDE.js} +4 -4
- package/dist/{chunk-MTGEJRE4.js → chunk-NNKIM73H.js} +17 -4
- package/dist/chunk-NNKIM73H.js.map +1 -0
- package/dist/{chunk-OHXAJUO5.js → chunk-NPPO7G2B.js} +5 -3
- package/dist/{chunk-OHXAJUO5.js.map → chunk-NPPO7G2B.js.map} +1 -1
- package/dist/{chunk-FIOBPQL2.js → chunk-NUUX4BBR.js} +10 -3
- package/dist/chunk-NUUX4BBR.js.map +1 -0
- package/dist/{chunk-7JOLSD2W.js → chunk-P3QFJJJY.js} +3 -3
- package/dist/{chunk-RCTHCXS6.js → chunk-PJNIJIE6.js} +2 -2
- package/dist/{chunk-DXFKPY2K.js → chunk-PU3FQG7T.js} +4 -4
- package/dist/{chunk-6ATXOJVQ.js → chunk-QADTI63U.js} +4 -4
- package/dist/{chunk-FRGNTTPA.js → chunk-QDRHIK2R.js} +15 -10
- package/dist/chunk-QDRHIK2R.js.map +1 -0
- package/dist/{chunk-SUZXPDUQ.js → chunk-QJLOWBFW.js} +12 -6
- package/dist/chunk-QJLOWBFW.js.map +1 -0
- package/dist/chunk-QNAB53N3.js +1 -0
- package/dist/chunk-QNAB53N3.js.map +1 -0
- package/dist/{chunk-7ZROYGUG.js → chunk-QOTMQLMW.js} +2 -2
- package/dist/{chunk-NQCTANF3.js → chunk-QVDEGBME.js} +7 -7
- package/dist/{chunk-HEBZ7Q7O.js → chunk-QVYBRD6U.js} +7 -6
- package/dist/chunk-QVYBRD6U.js.map +1 -0
- package/dist/{chunk-VNVV6Y2X.js → chunk-RECD3XOL.js} +4 -2
- package/dist/chunk-RECD3XOL.js.map +1 -0
- package/dist/{chunk-JJVIZR6C.js → chunk-RIPG3QIN.js} +24 -13
- package/dist/chunk-RIPG3QIN.js.map +1 -0
- package/dist/{chunk-T743IIER.js → chunk-RNQA7MDM.js} +8 -4
- package/dist/chunk-RNQA7MDM.js.map +1 -0
- package/dist/{chunk-YNDTLBOH.js → chunk-RQMYEPRR.js} +2 -2
- package/dist/{chunk-3JDP5OUR.js → chunk-RQY5ONSF.js} +6 -2
- package/dist/chunk-RQY5ONSF.js.map +1 -0
- package/dist/{chunk-Y7YJYUNV.js → chunk-RRSLH2FV.js} +10 -3
- package/dist/chunk-RRSLH2FV.js.map +1 -0
- package/dist/{chunk-3Z3WIQ5M.js → chunk-RZ3QMKM7.js} +5 -5
- package/dist/{chunk-WA6F4NOO.js → chunk-SMANO5OD.js} +4 -4
- package/dist/{chunk-5M2NWXN4.js → chunk-SRNBD6EV.js} +2 -2
- package/dist/{chunk-7SYYGXC7.js → chunk-SSCEX5NY.js} +6 -2
- package/dist/chunk-SSCEX5NY.js.map +1 -0
- package/dist/{chunk-PU3HEWSG.js → chunk-SYSR2K2M.js} +13 -4
- package/dist/chunk-SYSR2K2M.js.map +1 -0
- package/dist/{chunk-R53ZOW4B.js → chunk-TGMMUKOF.js} +3 -3
- package/dist/{chunk-SB2SEGR6.js → chunk-TIM4PXWN.js} +3 -3
- package/dist/{chunk-555TUQ7E.js → chunk-TPGFR24B.js} +5 -5
- package/dist/{chunk-MHLYX6QW.js → chunk-TRAMTVIO.js} +5 -5
- package/dist/{chunk-QO7UJXXO.js → chunk-TVMSXL3R.js} +2 -2
- package/dist/{chunk-OE3SQOZV.js → chunk-U6XXAVBO.js} +13 -7
- package/dist/chunk-U6XXAVBO.js.map +1 -0
- package/dist/{chunk-CZV6NVCA.js → chunk-UG4EMHMW.js} +10 -7
- package/dist/chunk-UG4EMHMW.js.map +1 -0
- package/dist/{chunk-VEBNL5MG.js → chunk-UGYBN6OO.js} +2 -2
- package/dist/{chunk-AG3DY5TH.js → chunk-UHQZ5XPW.js} +5 -4
- package/dist/chunk-UHQZ5XPW.js.map +1 -0
- package/dist/{chunk-2QO3BKUQ.js → chunk-UJT6AQHL.js} +4 -4
- package/dist/{chunk-FTDGFWB5.js → chunk-UK3DSFMK.js} +5 -5
- package/dist/{chunk-NYWAAXDX.js → chunk-URAXAKUI.js} +3 -3
- package/dist/{chunk-XODBYGTH.js → chunk-V37QIB7B.js} +2 -2
- package/dist/{chunk-7K23NEZO.js → chunk-V45JGJ3W.js} +8 -8
- package/dist/{chunk-RA6W37NZ.js → chunk-V64USPG3.js} +11 -8
- package/dist/chunk-V64USPG3.js.map +1 -0
- package/dist/{chunk-HZK4DRGF.js → chunk-V7INHV5V.js} +6 -4
- package/dist/chunk-V7INHV5V.js.map +1 -0
- package/dist/{chunk-RZCXYKY4.js → chunk-VFVATUC6.js} +6 -2
- package/dist/chunk-VFVATUC6.js.map +1 -0
- package/dist/{chunk-2MYSXWZQ.js → chunk-VKTF3GAP.js} +9 -9
- package/dist/{chunk-ICRVLGWD.js → chunk-VMU52I5D.js} +8 -2
- package/dist/chunk-VMU52I5D.js.map +1 -0
- package/dist/{chunk-KHIUYLKY.js → chunk-VQ6UB4MN.js} +8 -8
- package/dist/{chunk-LTTYUSJ2.js → chunk-VTDZUO2J.js} +4 -2
- package/dist/chunk-VTDZUO2J.js.map +1 -0
- package/dist/{chunk-4HUSG5MR.js → chunk-VZVAP2ZR.js} +2 -2
- package/dist/{chunk-4XBAEKQQ.js → chunk-W2RXXF7K.js} +4 -4
- package/dist/chunk-W5PRZHLU.js +74 -0
- package/dist/chunk-W5PRZHLU.js.map +1 -0
- package/dist/{chunk-A2YLFKQU.js → chunk-W5WYTVLS.js} +2 -2
- package/dist/{chunk-EUACQR6N.js → chunk-WE43PZ4P.js} +7 -5
- package/dist/chunk-WE43PZ4P.js.map +1 -0
- package/dist/{chunk-RHKQ2RSY.js → chunk-WUW6NDXC.js} +15 -15
- package/dist/{chunk-EBCEDBHX.js → chunk-XDDKRACZ.js} +3 -3
- package/dist/{chunk-SLSED46V.js → chunk-Y3DV7LGC.js} +2 -1
- package/dist/{chunk-SLSED46V.js.map → chunk-Y3DV7LGC.js.map} +1 -1
- package/dist/{chunk-ASZGMKB4.js → chunk-Y3TD7HOY.js} +2 -2
- package/dist/{chunk-HBHBRRSW.js → chunk-YBAK2WN5.js} +7 -7
- package/dist/{chunk-LOLYI6PS.js → chunk-YCZGYYUX.js} +11 -8
- package/dist/chunk-YCZGYYUX.js.map +1 -0
- package/dist/{chunk-KT3TF2LT.js → chunk-YJ6UQDA6.js} +7 -5
- package/dist/chunk-YJ6UQDA6.js.map +1 -0
- package/dist/{chunk-6RTE4UNO.js → chunk-YV4O7KDR.js} +1 -1
- package/dist/{chunk-Z5V5E3JW.js → chunk-ZIHSCBMN.js} +10 -10
- package/dist/data-display/Alert.js +3 -3
- package/dist/data-display/AlertDialog.js +2 -1
- package/dist/data-display/AsyncStateContainer.js +3 -3
- package/dist/data-display/Avatar.js +4 -4
- package/dist/data-display/CardKit.js +18 -17
- package/dist/data-display/Carousel.js +7 -4
- package/dist/data-display/Chart.js +11 -11
- package/dist/data-display/DataGrid.js +2 -2
- package/dist/data-display/DataViews.js +86 -85
- package/dist/data-display/EmptyState.js +2 -2
- package/dist/data-display/FleetMap.js +15 -12
- package/dist/data-display/HoverCard.js +2 -2
- package/dist/data-display/InteractiveTooltip.js +2 -2
- package/dist/data-display/LazyImage.js +3 -2
- package/dist/data-display/Lightbox.js +6 -6
- package/dist/data-display/MapPreview.js +9 -6
- package/dist/data-display/Progress.js +2 -2
- package/dist/data-display/SectionOnboarding.js +6 -4
- package/dist/data-display/Sheet.js +4 -4
- package/dist/data-display/Stepper.js +3 -1
- package/dist/data-display/Table.js +6 -4
- package/dist/data-display/Timeline.js +4 -2
- package/dist/en-US.js +16 -12
- package/dist/feedback/ConfirmAction.js +9 -8
- package/dist/feedback/Dialog.js +3 -2
- package/dist/feedback/NotificationStatusNotice.js +4 -4
- package/dist/feedback/SequenceResolver.js +12 -11
- package/dist/feedback/Sonner.js +3 -2
- package/dist/feedback/StackedModal.js +7 -6
- package/dist/feedback/Toast.js +2 -1
- package/dist/feedback/TutorialOverlay.js +3 -2
- package/dist/form/AddressAutocomplete.js +12 -10
- package/dist/form/Autocomplete.js +2 -2
- package/dist/form/Calendar.js +6 -6
- package/dist/form/CategorySelect.js +9 -9
- package/dist/form/Checkbox.js +2 -2
- package/dist/form/CodeEditor.js +3 -3
- package/dist/form/DateRangePicker.js +9 -9
- package/dist/form/InputOTP.js +2 -2
- package/dist/form/Menubar.js +2 -2
- package/dist/form/PhoneInput.js +3 -3
- package/dist/form/PickerSheet.js +4 -4
- package/dist/form/RichTextEditor.js +7 -5
- package/dist/form/Switch.js +4 -4
- package/dist/form/Textarea.js +1 -1
- package/dist/form/UploadButton.js +3 -2
- package/dist/form/total-form.js +18 -17
- package/dist/layout/Card.js +2 -2
- package/dist/layout/ContentToolbar.js +11 -10
- package/dist/layout/Dashboard.js +2 -1
- package/dist/layout/ScrollArea.js +3 -3
- package/dist/layout/SettingCard.js +17 -17
- package/dist/layout/SettingsLayout.js +6 -6
- package/dist/locales.js +36 -28
- package/dist/locales.js.map +1 -1
- package/dist/native/chunks/{chunk-BXNZHDXK.js → chunk-4SP3BDPZ.js} +12 -5
- package/dist/native/chunks/chunk-4SP3BDPZ.js.map +1 -0
- package/dist/native/chunks/{chunk-AVHGS66L.js → chunk-FGAX5BRS.js} +2 -2
- package/dist/native/chunks/chunk-SPK34J7Y.js +74 -0
- package/dist/native/chunks/chunk-SPK34J7Y.js.map +1 -0
- package/dist/native/data-display/Badge.js +9 -3
- package/dist/native/data-display/Badge.js.map +1 -1
- package/dist/native/data-display/Chip.js +9 -1
- package/dist/native/data-display/Chip.js.map +1 -1
- package/dist/native/data-display/EmptyState.js +3 -2
- package/dist/native/data-display/ErrorState.js +2 -1
- package/dist/native/data-display/ErrorState.js.map +1 -1
- package/dist/native/data-display/FleetMap.js +3 -2
- package/dist/native/data-display/FleetMap.js.map +1 -1
- package/dist/native/feedback/Dialog.js +20 -3
- package/dist/native/feedback/Dialog.js.map +1 -1
- package/dist/native/form/Button.js +2 -1
- package/dist/native/form/Checkbox.js +6 -1
- package/dist/native/form/Checkbox.js.map +1 -1
- package/dist/native/form/Input.js +11 -3
- package/dist/native/form/Input.js.map +1 -1
- package/dist/native/form/Switch.js +5 -1
- package/dist/native/form/Switch.js.map +1 -1
- package/dist/navigation/AppHeader.js +10 -9
- package/dist/navigation/CommandPalette.js +6 -4
- package/dist/navigation/NavigationMenu.js +7 -6
- package/dist/navigation/Pagination.js +2 -2
- package/dist/navigation/SectionNav.js +5 -5
- package/dist/pt-BR.js +10 -6
- package/dist/social-login-button.js +4 -4
- package/dist/types/components/data-display/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/types/components/data-display/AlertDialog/AlertDialog.types.d.ts +5 -0
- package/dist/types/components/data-display/AlertDialog/AlertDialog.types.d.ts.map +1 -1
- package/dist/types/components/data-display/Carousel/Carousel.chrome.d.ts.map +1 -1
- package/dist/types/components/data-display/Carousel/Carousel.parts.d.ts.map +1 -1
- package/dist/types/components/data-display/Carousel/Carousel.types.d.ts +2 -0
- package/dist/types/components/data-display/Carousel/Carousel.types.d.ts.map +1 -1
- package/dist/types/components/data-display/LazyImage/LazyImage.d.ts.map +1 -1
- package/dist/types/components/data-display/LazyImage/LazyImage.types.d.ts +10 -0
- package/dist/types/components/data-display/LazyImage/LazyImage.types.d.ts.map +1 -1
- package/dist/types/components/data-display/MapPreview/MapControlBar.d.ts.map +1 -1
- package/dist/types/components/data-display/MapPreview/MapLayers.d.ts +1 -1
- package/dist/types/components/data-display/MapPreview/MapLayers.d.ts.map +1 -1
- package/dist/types/components/data-display/MapPreview/MapMarkers.d.ts +2 -0
- package/dist/types/components/data-display/MapPreview/MapMarkers.d.ts.map +1 -1
- package/dist/types/components/data-display/MapPreview/MapPreview.d.ts.map +1 -1
- package/dist/types/components/data-display/MapPreview/MapPreview.helpers.d.ts +7 -1
- package/dist/types/components/data-display/MapPreview/MapPreview.helpers.d.ts.map +1 -1
- package/dist/types/components/data-display/Stepper/Stepper.d.ts.map +1 -1
- package/dist/types/components/data-display/Stepper/Stepper.types.d.ts +4 -0
- package/dist/types/components/data-display/Stepper/Stepper.types.d.ts.map +1 -1
- package/dist/types/components/data-display/Table/Table.d.ts.map +1 -1
- package/dist/types/components/data-display/Table/Table.helpers.d.ts.map +1 -1
- package/dist/types/components/data-display/Table/Table.types.d.ts +11 -0
- package/dist/types/components/data-display/Table/Table.types.d.ts.map +1 -1
- package/dist/types/components/data-display/Table/TableParts.d.ts +2 -1
- package/dist/types/components/data-display/Table/TableParts.d.ts.map +1 -1
- package/dist/types/components/data-display/Table/TableParts.hooks.d.ts +2 -2
- package/dist/types/components/data-display/Table/TableParts.hooks.d.ts.map +1 -1
- package/dist/types/components/data-display/Timeline/Timeline.d.ts.map +1 -1
- package/dist/types/components/data-display/Timeline/Timeline.types.d.ts +3 -0
- package/dist/types/components/data-display/Timeline/Timeline.types.d.ts.map +1 -1
- package/dist/types/components/data-display/Timeline/TimelineRow.d.ts +2 -0
- package/dist/types/components/data-display/Timeline/TimelineRow.d.ts.map +1 -1
- package/dist/types/components/feedback/Dialog/Dialog.base.d.ts +10 -0
- package/dist/types/components/feedback/Dialog/Dialog.base.d.ts.map +1 -1
- package/dist/types/components/feedback/Dialog/Dialog.d.ts.map +1 -1
- package/dist/types/components/feedback/Sonner/Sonner.d.ts +6 -0
- package/dist/types/components/feedback/Sonner/Sonner.d.ts.map +1 -1
- package/dist/types/components/feedback/Sonner/SonnerToast.d.ts.map +1 -1
- package/dist/types/components/feedback/StackedModal/StackedModal.d.ts.map +1 -1
- package/dist/types/components/feedback/StackedModal/StackedModal.parts.d.ts +2 -0
- package/dist/types/components/feedback/StackedModal/StackedModal.parts.d.ts.map +1 -1
- package/dist/types/components/feedback/StackedModal/StackedModal.types.d.ts +5 -0
- package/dist/types/components/feedback/StackedModal/StackedModal.types.d.ts.map +1 -1
- package/dist/types/components/feedback/Toast/Toast.d.ts.map +1 -1
- package/dist/types/components/feedback/Toast/Toast.types.d.ts +5 -0
- package/dist/types/components/feedback/Toast/Toast.types.d.ts.map +1 -1
- package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.d.ts.map +1 -1
- package/dist/types/components/feedback/TutorialOverlay/TutorialStepBody.d.ts.map +1 -1
- package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.d.ts.map +1 -1
- package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.helpers.d.ts +1 -1
- package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.helpers.d.ts.map +1 -1
- package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.hooks.d.ts +3 -1
- package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.hooks.d.ts.map +1 -1
- package/dist/types/components/form/AddressAutocomplete/AddressAutocompleteField.d.ts.map +1 -1
- package/dist/types/components/form/AddressAutocomplete/useAddressPredictions.d.ts +2 -1
- package/dist/types/components/form/AddressAutocomplete/useAddressPredictions.d.ts.map +1 -1
- package/dist/types/components/form/AddressAutocomplete/useAddressSelection.d.ts +3 -1
- package/dist/types/components/form/AddressAutocomplete/useAddressSelection.d.ts.map +1 -1
- package/dist/types/components/form/AddressAutocomplete/useCurrentLocation.d.ts +3 -1
- package/dist/types/components/form/AddressAutocomplete/useCurrentLocation.d.ts.map +1 -1
- package/dist/types/components/form/AddressAutocomplete/useGoogleMapsAPI.d.ts +4 -1
- package/dist/types/components/form/AddressAutocomplete/useGoogleMapsAPI.d.ts.map +1 -1
- package/dist/types/components/form/Button/Button.native.loading.d.ts +2 -1
- package/dist/types/components/form/Button/Button.native.loading.d.ts.map +1 -1
- package/dist/types/components/form/Calendar/CalendarDay.d.ts.map +1 -1
- package/dist/types/components/form/Calendar/CalendarMonth.d.ts.map +1 -1
- package/dist/types/components/form/PhoneInput/PhoneInput.d.ts.map +1 -1
- package/dist/types/components/form/PhoneInput/PhoneInput.types.d.ts +1 -0
- package/dist/types/components/form/PhoneInput/PhoneInput.types.d.ts.map +1 -1
- package/dist/types/components/form/PhoneInput/countries.d.ts +6 -0
- package/dist/types/components/form/PhoneInput/countries.d.ts.map +1 -1
- package/dist/types/components/form/RichTextEditor/RichTextEditor.d.ts.map +1 -1
- package/dist/types/components/form/RichTextEditor/RichTextEditor.dom.d.ts +1 -1
- package/dist/types/components/form/RichTextEditor/RichTextEditor.dom.d.ts.map +1 -1
- package/dist/types/components/form/RichTextEditor/RichTextEditor.format.d.ts +2 -1
- package/dist/types/components/form/RichTextEditor/RichTextEditor.format.d.ts.map +1 -1
- package/dist/types/components/form/RichTextEditor/RichTextEditor.hooks.d.ts +2 -1
- package/dist/types/components/form/RichTextEditor/RichTextEditor.hooks.d.ts.map +1 -1
- package/dist/types/components/form/RichTextEditor/RichTextEditor.types.d.ts +7 -1
- package/dist/types/components/form/RichTextEditor/RichTextEditor.types.d.ts.map +1 -1
- package/dist/types/components/form/RichTextEditor/RichTextEditorToolbar.d.ts +2 -0
- package/dist/types/components/form/RichTextEditor/RichTextEditorToolbar.d.ts.map +1 -1
- package/dist/types/components/form/Textarea/TextareaRichEditor.d.ts.map +1 -1
- package/dist/types/components/form/UploadButton/UploadButton.hooks.d.ts.map +1 -1
- package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts +14 -0
- package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts.map +1 -1
- package/dist/types/components/layout/ContentToolbar/FilterTrigger.d.ts +1 -1
- package/dist/types/components/layout/ContentToolbar/FilterTrigger.d.ts.map +1 -1
- package/dist/types/components/layout/ContentToolbar/ViewSelector.d.ts +1 -1
- package/dist/types/components/layout/ContentToolbar/ViewSelector.d.ts.map +1 -1
- package/dist/types/components/layout/Dashboard/Dashboard.d.ts +1 -1
- package/dist/types/components/layout/Dashboard/Dashboard.d.ts.map +1 -1
- package/dist/types/components/layout/Dashboard/Dashboard.types.d.ts +5 -0
- package/dist/types/components/layout/Dashboard/Dashboard.types.d.ts.map +1 -1
- package/dist/types/components/navigation/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/types/components/navigation/CommandPalette/CommandPalette.helpers.d.ts +1 -1
- package/dist/types/components/navigation/CommandPalette/CommandPalette.helpers.d.ts.map +1 -1
- package/dist/types/components/navigation/CommandPalette/CommandPalette.hooks.d.ts +2 -1
- package/dist/types/components/navigation/CommandPalette/CommandPalette.hooks.d.ts.map +1 -1
- package/dist/types/components/navigation/CommandPalette/CommandPaletteResults.d.ts.map +1 -1
- package/dist/types/components/navigation/NavigationMenu/NavigationMenu.d.ts.map +1 -1
- package/dist/types/components/navigation/NavigationMenu/NavigationMenu.shell.d.ts +1 -0
- package/dist/types/components/navigation/NavigationMenu/NavigationMenu.shell.d.ts.map +1 -1
- package/dist/types/components/navigation/NavigationMenu/NavigationMenu.types.d.ts +11 -0
- package/dist/types/components/navigation/NavigationMenu/NavigationMenu.types.d.ts.map +1 -1
- package/dist/types/components/navigation/NavigationMenu/NavigationMenuItem.d.ts.map +1 -1
- package/dist/types/components/navigation/NavigationMenu/NavigationStandardBody.d.ts +4 -0
- package/dist/types/components/navigation/NavigationMenu/NavigationStandardBody.d.ts.map +1 -1
- package/dist/types/components/typography/Code/Code.d.ts.map +1 -1
- package/dist/types/components/typography/Code/Code.types.d.ts +4 -0
- package/dist/types/components/typography/Code/Code.types.d.ts.map +1 -1
- package/dist/types/components/utility/WorkflowStep/WorkflowStep.d.ts.map +1 -1
- package/dist/types/components/utility/WorkflowStep/WorkflowStep.helpers.d.ts +4 -1
- package/dist/types/components/utility/WorkflowStep/WorkflowStep.helpers.d.ts.map +1 -1
- package/dist/types/components/utility/WorkflowStep/WorkflowStep.parts.d.ts.map +1 -1
- package/dist/types/components/utility/WorkflowStep/WorkflowStep.types.d.ts +9 -0
- package/dist/types/components/utility/WorkflowStep/WorkflowStep.types.d.ts.map +1 -1
- package/dist/types/components/utility/WorkflowStep/WorkflowStepRow.d.ts +1 -0
- package/dist/types/components/utility/WorkflowStep/WorkflowStepRow.d.ts.map +1 -1
- package/dist/types/copy/data-display.d.ts +24 -0
- package/dist/types/copy/data-display.d.ts.map +1 -1
- package/dist/types/copy/feedback.d.ts +4 -0
- package/dist/types/copy/feedback.d.ts.map +1 -1
- package/dist/types/copy/form.d.ts +58 -0
- package/dist/types/copy/form.d.ts.map +1 -1
- package/dist/types/copy/labels.d.ts +108 -0
- package/dist/types/copy/labels.d.ts.map +1 -0
- package/dist/types/copy/navigation.d.ts +12 -0
- package/dist/types/copy/navigation.d.ts.map +1 -1
- package/dist/types/copy/utility.d.ts +8 -1
- package/dist/types/copy/utility.d.ts.map +1 -1
- package/dist/types/copy.d.ts +1 -0
- package/dist/types/copy.d.ts.map +1 -1
- package/dist/types/en-US.d.ts +1 -0
- package/dist/types/en-US.d.ts.map +1 -1
- package/dist/types/en-US.data-display.d.ts +2 -2
- package/dist/types/en-US.data-display.d.ts.map +1 -1
- package/dist/types/en-US.feedback.d.ts +1 -1
- package/dist/types/en-US.feedback.d.ts.map +1 -1
- package/dist/types/en-US.form.d.ts +4 -4
- package/dist/types/en-US.form.d.ts.map +1 -1
- package/dist/types/en-US.labels.d.ts +9 -0
- package/dist/types/en-US.labels.d.ts.map +1 -0
- package/dist/types/en-US.navigation.d.ts +1 -1
- package/dist/types/en-US.navigation.d.ts.map +1 -1
- package/dist/types/en-US.utility.d.ts +1 -1
- package/dist/types/en-US.utility.d.ts.map +1 -1
- package/dist/types/locales.d.ts +2 -1
- package/dist/types/locales.d.ts.map +1 -1
- package/dist/types/pt-BR.d.ts +1 -0
- package/dist/types/pt-BR.d.ts.map +1 -1
- package/dist/types/pt-BR.data-display.d.ts +2 -2
- package/dist/types/pt-BR.data-display.d.ts.map +1 -1
- package/dist/types/pt-BR.feedback.d.ts +1 -1
- package/dist/types/pt-BR.feedback.d.ts.map +1 -1
- package/dist/types/pt-BR.form.d.ts +4 -4
- package/dist/types/pt-BR.form.d.ts.map +1 -1
- package/dist/types/pt-BR.labels.d.ts +8 -0
- package/dist/types/pt-BR.labels.d.ts.map +1 -0
- package/dist/types/pt-BR.navigation.d.ts +1 -1
- package/dist/types/pt-BR.navigation.d.ts.map +1 -1
- package/dist/types/pt-BR.utility.d.ts +1 -1
- package/dist/types/pt-BR.utility.d.ts.map +1 -1
- package/dist/types/user-avatar/user-avatar.d.ts +6 -1
- package/dist/types/user-avatar/user-avatar.d.ts.map +1 -1
- package/dist/types/utils/resolve-labels.d.ts +9 -0
- package/dist/types/utils/resolve-labels.d.ts.map +1 -0
- package/dist/types-native/components/data-display/Badge/Badge.native.d.ts +1 -0
- package/dist/types-native/components/data-display/Badge/Badge.native.d.ts.map +1 -1
- package/dist/types-native/components/data-display/Badge/Badge.types.native.d.ts +2 -0
- package/dist/types-native/components/data-display/Badge/Badge.types.native.d.ts.map +1 -1
- package/dist/types-native/components/data-display/Badge/BadgeContent.native.d.ts +2 -1
- package/dist/types-native/components/data-display/Badge/BadgeContent.native.d.ts.map +1 -1
- package/dist/types-native/components/data-display/Chip/Chip.native.d.ts +1 -0
- package/dist/types-native/components/data-display/Chip/Chip.native.d.ts.map +1 -1
- package/dist/types-native/components/data-display/Chip/Chip.types.native.d.ts +2 -0
- package/dist/types-native/components/data-display/Chip/Chip.types.native.d.ts.map +1 -1
- package/dist/types-native/components/feedback/Dialog/Dialog.base.d.ts +10 -0
- package/dist/types-native/components/feedback/Dialog/Dialog.base.d.ts.map +1 -1
- package/dist/types-native/components/feedback/Dialog/Dialog.native.d.ts.map +1 -1
- package/dist/types-native/components/feedback/Dialog/DialogParts.native.d.ts +1 -1
- package/dist/types-native/components/feedback/Dialog/DialogParts.native.d.ts.map +1 -1
- package/dist/types-native/components/form/Button/Button.native.d.ts +1 -0
- package/dist/types-native/components/form/Button/Button.native.d.ts.map +1 -1
- package/dist/types-native/components/form/Button/Button.native.loading.d.ts +2 -1
- package/dist/types-native/components/form/Button/Button.native.loading.d.ts.map +1 -1
- package/dist/types-native/components/form/Button/Button.types.native.d.ts +2 -0
- package/dist/types-native/components/form/Button/Button.types.native.d.ts.map +1 -1
- package/dist/types-native/components/form/Checkbox/Checkbox.native.d.ts +1 -0
- package/dist/types-native/components/form/Checkbox/Checkbox.native.d.ts.map +1 -1
- package/dist/types-native/components/form/Checkbox/Checkbox.types.native.d.ts +2 -0
- package/dist/types-native/components/form/Checkbox/Checkbox.types.native.d.ts.map +1 -1
- package/dist/types-native/components/form/Input/Input.native.d.ts +1 -0
- package/dist/types-native/components/form/Input/Input.native.d.ts.map +1 -1
- package/dist/types-native/components/form/Input/Input.types.native.d.ts +2 -0
- package/dist/types-native/components/form/Input/Input.types.native.d.ts.map +1 -1
- package/dist/types-native/components/form/Switch/Switch.native.d.ts +1 -0
- package/dist/types-native/components/form/Switch/Switch.native.d.ts.map +1 -1
- package/dist/types-native/components/form/Switch/Switch.types.native.d.ts +2 -0
- package/dist/types-native/components/form/Switch/Switch.types.native.d.ts.map +1 -1
- package/dist/types-native/copy/data-display.d.ts +119 -0
- package/dist/types-native/copy/data-display.d.ts.map +1 -0
- package/dist/types-native/copy/labels.d.ts +108 -0
- package/dist/types-native/copy/labels.d.ts.map +1 -0
- package/dist/types-native/en-US.labels.d.ts +9 -0
- package/dist/types-native/en-US.labels.d.ts.map +1 -0
- package/dist/typography/Code.js +2 -1
- package/dist/user-avatar.js +8 -7
- package/dist/utility/InstallPrompt.js +2 -2
- package/dist/utility/WorkflowStep.js +6 -4
- package/package.json +2 -2
- package/src/components/data-display/AlertDialog/AlertDialog.tsx +3 -1
- package/src/components/data-display/AlertDialog/AlertDialog.types.ts +6 -0
- package/src/components/data-display/Badge/Badge.native.tsx +2 -0
- package/src/components/data-display/Badge/Badge.types.native.ts +2 -0
- package/src/components/data-display/Badge/BadgeContent.native.tsx +4 -1
- package/src/components/data-display/Carousel/Carousel.chrome.tsx +1 -0
- package/src/components/data-display/Carousel/Carousel.parts.tsx +13 -9
- package/src/components/data-display/Carousel/Carousel.types.ts +2 -0
- package/src/components/data-display/Chip/Chip.native.tsx +9 -1
- package/src/components/data-display/Chip/Chip.types.native.ts +2 -0
- package/src/components/data-display/LazyImage/LazyImage.hooks.ts +1 -1
- package/src/components/data-display/LazyImage/LazyImage.tsx +4 -4
- package/src/components/data-display/LazyImage/LazyImage.types.ts +12 -0
- package/src/components/data-display/MapPreview/MapControlBar.tsx +7 -3
- package/src/components/data-display/MapPreview/MapLayers.tsx +2 -2
- package/src/components/data-display/MapPreview/MapMarkers.tsx +13 -4
- package/src/components/data-display/MapPreview/MapPreview.helpers.ts +13 -2
- package/src/components/data-display/MapPreview/MapPreview.tsx +7 -3
- package/src/components/data-display/Stepper/Stepper.tsx +41 -7
- package/src/components/data-display/Stepper/Stepper.types.ts +4 -0
- package/src/components/data-display/Table/Table.helpers.ts +1 -0
- package/src/components/data-display/Table/Table.tsx +4 -5
- package/src/components/data-display/Table/Table.types.ts +12 -0
- package/src/components/data-display/Table/TableParts.hooks.tsx +8 -1
- package/src/components/data-display/Table/TableParts.tsx +19 -5
- package/src/components/data-display/Timeline/Timeline.tsx +6 -1
- package/src/components/data-display/Timeline/Timeline.types.ts +3 -0
- package/src/components/data-display/Timeline/TimelineRow.tsx +11 -4
- package/src/components/feedback/Dialog/Dialog.base.ts +10 -0
- package/src/components/feedback/Dialog/Dialog.native.tsx +2 -0
- package/src/components/feedback/Dialog/Dialog.tsx +5 -1
- package/src/components/feedback/Dialog/DialogParts.native.tsx +17 -3
- package/src/components/feedback/Sonner/Sonner.tsx +16 -6
- package/src/components/feedback/Sonner/SonnerToast.tsx +4 -2
- package/src/components/feedback/StackedModal/StackedModal.parts.tsx +24 -3
- package/src/components/feedback/StackedModal/StackedModal.tsx +2 -1
- package/src/components/feedback/StackedModal/StackedModal.types.ts +5 -0
- package/src/components/feedback/Toast/Toast.tsx +5 -2
- package/src/components/feedback/Toast/Toast.types.ts +5 -0
- package/src/components/feedback/TutorialOverlay/TutorialOverlay.tsx +3 -1
- package/src/components/feedback/TutorialOverlay/TutorialStepBody.tsx +12 -3
- package/src/components/form/AddressAutocomplete/AddressAutocomplete.helpers.ts +12 -6
- package/src/components/form/AddressAutocomplete/AddressAutocomplete.hooks.ts +15 -2
- package/src/components/form/AddressAutocomplete/AddressAutocomplete.tsx +1 -0
- package/src/components/form/AddressAutocomplete/AddressAutocompleteField.tsx +9 -3
- package/src/components/form/AddressAutocomplete/useAddressPredictions.ts +6 -3
- package/src/components/form/AddressAutocomplete/useAddressSelection.ts +8 -4
- package/src/components/form/AddressAutocomplete/useCurrentLocation.ts +12 -8
- package/src/components/form/AddressAutocomplete/useGoogleMapsAPI.ts +8 -4
- package/src/components/form/Button/Button.native.loading.tsx +11 -2
- package/src/components/form/Button/Button.native.tsx +2 -2
- package/src/components/form/Button/Button.types.native.ts +2 -0
- package/src/components/form/Calendar/Calendar.md +7 -0
- package/src/components/form/Calendar/CalendarDay.tsx +13 -2
- package/src/components/form/Calendar/CalendarMonth.tsx +11 -2
- package/src/components/form/Checkbox/Checkbox.native.tsx +5 -2
- package/src/components/form/Checkbox/Checkbox.types.native.ts +2 -0
- package/src/components/form/Input/Input.native.tsx +13 -4
- package/src/components/form/Input/Input.types.native.ts +2 -0
- package/src/components/form/PhoneInput/PhoneInput.md +2 -2
- package/src/components/form/PhoneInput/PhoneInput.tsx +21 -10
- package/src/components/form/PhoneInput/PhoneInput.types.ts +1 -0
- package/src/components/form/PhoneInput/countries.ts +18 -1
- package/src/components/form/RichTextEditor/RichTextEditor.dom.ts +5 -3
- package/src/components/form/RichTextEditor/RichTextEditor.format.ts +3 -1
- package/src/components/form/RichTextEditor/RichTextEditor.hooks.ts +4 -1
- package/src/components/form/RichTextEditor/RichTextEditor.tsx +10 -4
- package/src/components/form/RichTextEditor/RichTextEditor.types.ts +7 -1
- package/src/components/form/RichTextEditor/RichTextEditorToolbar.tsx +29 -19
- package/src/components/form/Switch/Switch.native.tsx +4 -3
- package/src/components/form/Switch/Switch.types.native.ts +2 -0
- package/src/components/form/Textarea/TextareaRichEditor.tsx +2 -1
- package/src/components/form/UploadButton/UploadButton.hooks.ts +16 -6
- package/src/components/layout/ContentToolbar/ContentToolbar.types.ts +14 -0
- package/src/components/layout/ContentToolbar/FilterTrigger.tsx +10 -1
- package/src/components/layout/ContentToolbar/ViewSelector.tsx +15 -5
- package/src/components/layout/Dashboard/Dashboard.tsx +3 -1
- package/src/components/layout/Dashboard/Dashboard.types.ts +5 -0
- package/src/components/navigation/CommandPalette/CommandPalette.helpers.ts +6 -2
- package/src/components/navigation/CommandPalette/CommandPalette.hooks.ts +9 -1
- package/src/components/navigation/CommandPalette/CommandPalette.tsx +16 -6
- package/src/components/navigation/CommandPalette/CommandPaletteResults.tsx +3 -1
- package/src/components/navigation/NavigationMenu/NavigationMenu.shell.tsx +7 -4
- package/src/components/navigation/NavigationMenu/NavigationMenu.tsx +4 -0
- package/src/components/navigation/NavigationMenu/NavigationMenu.types.ts +13 -0
- package/src/components/navigation/NavigationMenu/NavigationMenuItem.tsx +2 -0
- package/src/components/navigation/NavigationMenu/NavigationStandardBody.tsx +24 -4
- package/src/components/typography/Code/Code.tsx +28 -6
- package/src/components/typography/Code/Code.types.ts +4 -0
- package/src/components/utility/WorkflowStep/WorkflowStep.helpers.ts +9 -1
- package/src/components/utility/WorkflowStep/WorkflowStep.parts.tsx +3 -2
- package/src/components/utility/WorkflowStep/WorkflowStep.tsx +3 -1
- package/src/components/utility/WorkflowStep/WorkflowStep.types.ts +10 -0
- package/src/components/utility/WorkflowStep/WorkflowStepRow.tsx +3 -0
- package/src/copy/data-display.ts +19 -0
- package/src/copy/feedback.ts +4 -0
- package/src/copy/form.ts +58 -0
- package/src/copy/labels.ts +120 -0
- package/src/copy/navigation.ts +12 -0
- package/src/copy/utility.ts +8 -1
- package/src/copy.ts +1 -0
- package/src/en-US.data-display.ts +9 -2
- package/src/en-US.feedback.ts +3 -1
- package/src/en-US.form.ts +27 -4
- package/src/en-US.labels.ts +76 -0
- package/src/en-US.navigation.ts +5 -1
- package/src/en-US.ts +1 -0
- package/src/en-US.utility.ts +3 -1
- package/src/locales.ts +4 -0
- package/src/pt-BR.data-display.ts +9 -2
- package/src/pt-BR.feedback.ts +3 -1
- package/src/pt-BR.form.ts +40 -4
- package/src/pt-BR.labels.ts +75 -0
- package/src/pt-BR.navigation.ts +5 -1
- package/src/pt-BR.ts +1 -0
- package/src/pt-BR.utility.ts +3 -1
- package/src/user-avatar/user-avatar.tsx +11 -2
- package/src/utils/resolve-labels.ts +12 -0
- package/dist/chunk-2ARVNCVU.js.map +0 -1
- package/dist/chunk-2ILXXBMG.js.map +0 -1
- package/dist/chunk-2TSGRQ2J.js.map +0 -1
- package/dist/chunk-33LAPBYB.js.map +0 -1
- package/dist/chunk-3JDP5OUR.js.map +0 -1
- package/dist/chunk-3VXS7O3X.js.map +0 -1
- package/dist/chunk-4MQ6XTIJ.js.map +0 -1
- package/dist/chunk-4NQXHPQR.js.map +0 -1
- package/dist/chunk-4VRDFZ4G.js.map +0 -1
- package/dist/chunk-5J7SA4CZ.js.map +0 -1
- package/dist/chunk-7QXEEZFO.js +0 -92
- package/dist/chunk-7QXEEZFO.js.map +0 -1
- package/dist/chunk-7SYYGXC7.js.map +0 -1
- package/dist/chunk-7VRCGWQL.js.map +0 -1
- package/dist/chunk-AG3DY5TH.js.map +0 -1
- package/dist/chunk-AYJ44VTJ.js.map +0 -1
- package/dist/chunk-AYP6ICAY.js.map +0 -1
- package/dist/chunk-B2JYQBO4.js.map +0 -1
- package/dist/chunk-BWZKLKDT.js +0 -1
- package/dist/chunk-C5JCARNE.js.map +0 -1
- package/dist/chunk-CZV6NVCA.js.map +0 -1
- package/dist/chunk-EUACQR6N.js.map +0 -1
- package/dist/chunk-FIOBPQL2.js.map +0 -1
- package/dist/chunk-FRGNTTPA.js.map +0 -1
- package/dist/chunk-FT6HBP5E.js.map +0 -1
- package/dist/chunk-H3AQQOTI.js.map +0 -1
- package/dist/chunk-HEBZ7Q7O.js.map +0 -1
- package/dist/chunk-HZK4DRGF.js.map +0 -1
- package/dist/chunk-ICRVLGWD.js.map +0 -1
- package/dist/chunk-INGPH3YQ.js.map +0 -1
- package/dist/chunk-JJVIZR6C.js.map +0 -1
- package/dist/chunk-KIL3OVLI.js.map +0 -1
- package/dist/chunk-KT3TF2LT.js.map +0 -1
- package/dist/chunk-KZXOIRUP.js.map +0 -1
- package/dist/chunk-LH4VKUZC.js.map +0 -1
- package/dist/chunk-LOLYI6PS.js.map +0 -1
- package/dist/chunk-LTTYUSJ2.js.map +0 -1
- package/dist/chunk-MA6SUE7F.js.map +0 -1
- package/dist/chunk-MTGEJRE4.js.map +0 -1
- package/dist/chunk-OE3SQOZV.js.map +0 -1
- package/dist/chunk-PU3HEWSG.js.map +0 -1
- package/dist/chunk-PY3RW5LC.js.map +0 -1
- package/dist/chunk-QWVETTIY.js.map +0 -1
- package/dist/chunk-RA6W37NZ.js.map +0 -1
- package/dist/chunk-RZCXYKY4.js.map +0 -1
- package/dist/chunk-SUZXPDUQ.js.map +0 -1
- package/dist/chunk-SV6IQ2YO.js.map +0 -1
- package/dist/chunk-T743IIER.js.map +0 -1
- package/dist/chunk-TTCVYY2B.js.map +0 -1
- package/dist/chunk-U4G3KY6L.js.map +0 -1
- package/dist/chunk-UGH2DDST.js.map +0 -1
- package/dist/chunk-UZOG6HNN.js.map +0 -1
- package/dist/chunk-VNOFFVRQ.js +0 -113
- package/dist/chunk-VNOFFVRQ.js.map +0 -1
- package/dist/chunk-VNVV6Y2X.js.map +0 -1
- package/dist/chunk-VQYR64QB.js.map +0 -1
- package/dist/chunk-VRPCZ3IE.js.map +0 -1
- package/dist/chunk-WC3W36AM.js.map +0 -1
- package/dist/chunk-WVZBYTIK.js.map +0 -1
- package/dist/chunk-XICRCPEQ.js.map +0 -1
- package/dist/chunk-XKSA4L2X.js.map +0 -1
- package/dist/chunk-XQWUVQ2F.js.map +0 -1
- package/dist/chunk-XYFBJH6F.js.map +0 -1
- package/dist/chunk-Y7YJYUNV.js.map +0 -1
- package/dist/chunk-YICNA5LG.js +0 -1
- package/dist/chunk-YLSDFW5O.js.map +0 -1
- package/dist/chunk-ZFBFQK2Y.js.map +0 -1
- package/dist/native/chunks/chunk-BXNZHDXK.js.map +0 -1
- /package/dist/{chunk-BWZKLKDT.js.map → _internal/copy/labels.js.map} +0 -0
- /package/dist/{chunk-YICNA5LG.js.map → _internal/en-US.labels.js.map} +0 -0
- /package/dist/{chunk-OPP6USJC.js.map → chunk-2FQF4CNE.js.map} +0 -0
- /package/dist/{chunk-BWFQEASG.js.map → chunk-2P5ZBBTL.js.map} +0 -0
- /package/dist/{chunk-QVO4SIS7.js.map → chunk-3W2B7IZG.js.map} +0 -0
- /package/dist/{chunk-PMRLFNBT.js.map → chunk-3XLSA3YB.js.map} +0 -0
- /package/dist/{chunk-7P5PNRBT.js.map → chunk-3YCV4EP7.js.map} +0 -0
- /package/dist/{chunk-Q6PRGXR2.js.map → chunk-4HBCWKIX.js.map} +0 -0
- /package/dist/{chunk-HN3PZTUK.js.map → chunk-4MKVGSHX.js.map} +0 -0
- /package/dist/{chunk-EERUSI52.js.map → chunk-4N3I7ZHQ.js.map} +0 -0
- /package/dist/{chunk-O6SAU5JA.js.map → chunk-4OTJ66ID.js.map} +0 -0
- /package/dist/{chunk-LG52LMAM.js.map → chunk-556LO6KA.js.map} +0 -0
- /package/dist/{chunk-LBZEPWYK.js.map → chunk-5GLOEGOM.js.map} +0 -0
- /package/dist/{chunk-JE6RZ5L6.js.map → chunk-5ZOJLYD2.js.map} +0 -0
- /package/dist/{chunk-GSXYXMCV.js.map → chunk-66BRUS2M.js.map} +0 -0
- /package/dist/{chunk-ALREWFRX.js.map → chunk-6DGNMASB.js.map} +0 -0
- /package/dist/{chunk-5752357K.js.map → chunk-6N2U67KF.js.map} +0 -0
- /package/dist/{chunk-VD72JGHA.js.map → chunk-73OYC22L.js.map} +0 -0
- /package/dist/{chunk-6PU3JYVY.js.map → chunk-775LIZXS.js.map} +0 -0
- /package/dist/{chunk-S4JXSC4D.js.map → chunk-7HZ6TJRH.js.map} +0 -0
- /package/dist/{chunk-CSD6SWBZ.js.map → chunk-A3Z7ZXLM.js.map} +0 -0
- /package/dist/{chunk-LI6XSM5D.js.map → chunk-A6V7KE45.js.map} +0 -0
- /package/dist/{chunk-YJBWDDW7.js.map → chunk-AAWVAQI2.js.map} +0 -0
- /package/dist/{chunk-44PBCQ7E.js.map → chunk-ABQZFK7M.js.map} +0 -0
- /package/dist/{chunk-EIMFA7KP.js.map → chunk-ANUO67JQ.js.map} +0 -0
- /package/dist/{chunk-PTQRJEPN.js.map → chunk-AOBQ3KYY.js.map} +0 -0
- /package/dist/{chunk-LODYTVOO.js.map → chunk-B25SHVWP.js.map} +0 -0
- /package/dist/{chunk-GTT5UKKO.js.map → chunk-BDJIP4HG.js.map} +0 -0
- /package/dist/{chunk-RS576GOH.js.map → chunk-BIUT3K6A.js.map} +0 -0
- /package/dist/{chunk-A5NXBOWS.js.map → chunk-BLHSLB5D.js.map} +0 -0
- /package/dist/{chunk-DYHOBKPU.js.map → chunk-BLZDSCIZ.js.map} +0 -0
- /package/dist/{chunk-E53MMMDA.js.map → chunk-BX6CF2UG.js.map} +0 -0
- /package/dist/{chunk-7HA7UH7O.js.map → chunk-C4OETF7K.js.map} +0 -0
- /package/dist/{chunk-64AOS2WA.js.map → chunk-CAHN7AMY.js.map} +0 -0
- /package/dist/{chunk-MSC43MCJ.js.map → chunk-CRFOAKQL.js.map} +0 -0
- /package/dist/{chunk-IQ2U5MVO.js.map → chunk-CSQWPDQV.js.map} +0 -0
- /package/dist/{chunk-7XSCEHGA.js.map → chunk-EOQ6EKTS.js.map} +0 -0
- /package/dist/{chunk-VEKTKCSB.js.map → chunk-FLJ3RIRP.js.map} +0 -0
- /package/dist/{chunk-Z5WUSI47.js.map → chunk-G3JFESKD.js.map} +0 -0
- /package/dist/{chunk-XRDH24J7.js.map → chunk-G6ET2DRL.js.map} +0 -0
- /package/dist/{chunk-O36MIQIO.js.map → chunk-GPQ22MPR.js.map} +0 -0
- /package/dist/{chunk-GRMBCJS6.js.map → chunk-H6R2L7VI.js.map} +0 -0
- /package/dist/{chunk-AMLHEKSV.js.map → chunk-HI7JPDD6.js.map} +0 -0
- /package/dist/{chunk-CW6Y32N2.js.map → chunk-I2CT4XIP.js.map} +0 -0
- /package/dist/{chunk-N34AOGK3.js.map → chunk-I3OKAQ5L.js.map} +0 -0
- /package/dist/{chunk-AEYLFBZT.js.map → chunk-I4NDZFTB.js.map} +0 -0
- /package/dist/{chunk-2ZRZTGWP.js.map → chunk-ISW5K72V.js.map} +0 -0
- /package/dist/{chunk-KARMRTTM.js.map → chunk-J2RUDZVJ.js.map} +0 -0
- /package/dist/{chunk-4M5GEKPM.js.map → chunk-JL4I7OQE.js.map} +0 -0
- /package/dist/{chunk-NBXG3SQ3.js.map → chunk-JSY234NY.js.map} +0 -0
- /package/dist/{chunk-HQCZT6TO.js.map → chunk-JVOEVTCZ.js.map} +0 -0
- /package/dist/{chunk-MBMZNSBP.js.map → chunk-JW7MN4DG.js.map} +0 -0
- /package/dist/{chunk-ZPACE34U.js.map → chunk-K53XSVQO.js.map} +0 -0
- /package/dist/{chunk-GBVNY2LG.js.map → chunk-KTXJQ4YJ.js.map} +0 -0
- /package/dist/{chunk-FCVPVEAS.js.map → chunk-KYE7I6NT.js.map} +0 -0
- /package/dist/{chunk-MM7BPTVV.js.map → chunk-KYT5G4K7.js.map} +0 -0
- /package/dist/{chunk-3V3Z4EML.js.map → chunk-L4FWEI2P.js.map} +0 -0
- /package/dist/{chunk-56JF5PZK.js.map → chunk-LYVTJLCF.js.map} +0 -0
- /package/dist/{chunk-M3DSPEZ3.js.map → chunk-M3ZNQTS5.js.map} +0 -0
- /package/dist/{chunk-GBKIGUNP.js.map → chunk-MGDCGNLC.js.map} +0 -0
- /package/dist/{chunk-BGYLL467.js.map → chunk-N3W6FZOC.js.map} +0 -0
- /package/dist/{chunk-BWFUZ4N2.js.map → chunk-NA3M7KDE.js.map} +0 -0
- /package/dist/{chunk-7JOLSD2W.js.map → chunk-P3QFJJJY.js.map} +0 -0
- /package/dist/{chunk-RCTHCXS6.js.map → chunk-PJNIJIE6.js.map} +0 -0
- /package/dist/{chunk-DXFKPY2K.js.map → chunk-PU3FQG7T.js.map} +0 -0
- /package/dist/{chunk-6ATXOJVQ.js.map → chunk-QADTI63U.js.map} +0 -0
- /package/dist/{chunk-7ZROYGUG.js.map → chunk-QOTMQLMW.js.map} +0 -0
- /package/dist/{chunk-NQCTANF3.js.map → chunk-QVDEGBME.js.map} +0 -0
- /package/dist/{chunk-YNDTLBOH.js.map → chunk-RQMYEPRR.js.map} +0 -0
- /package/dist/{chunk-3Z3WIQ5M.js.map → chunk-RZ3QMKM7.js.map} +0 -0
- /package/dist/{chunk-WA6F4NOO.js.map → chunk-SMANO5OD.js.map} +0 -0
- /package/dist/{chunk-5M2NWXN4.js.map → chunk-SRNBD6EV.js.map} +0 -0
- /package/dist/{chunk-R53ZOW4B.js.map → chunk-TGMMUKOF.js.map} +0 -0
- /package/dist/{chunk-SB2SEGR6.js.map → chunk-TIM4PXWN.js.map} +0 -0
- /package/dist/{chunk-555TUQ7E.js.map → chunk-TPGFR24B.js.map} +0 -0
- /package/dist/{chunk-MHLYX6QW.js.map → chunk-TRAMTVIO.js.map} +0 -0
- /package/dist/{chunk-QO7UJXXO.js.map → chunk-TVMSXL3R.js.map} +0 -0
- /package/dist/{chunk-VEBNL5MG.js.map → chunk-UGYBN6OO.js.map} +0 -0
- /package/dist/{chunk-2QO3BKUQ.js.map → chunk-UJT6AQHL.js.map} +0 -0
- /package/dist/{chunk-FTDGFWB5.js.map → chunk-UK3DSFMK.js.map} +0 -0
- /package/dist/{chunk-NYWAAXDX.js.map → chunk-URAXAKUI.js.map} +0 -0
- /package/dist/{chunk-XODBYGTH.js.map → chunk-V37QIB7B.js.map} +0 -0
- /package/dist/{chunk-7K23NEZO.js.map → chunk-V45JGJ3W.js.map} +0 -0
- /package/dist/{chunk-2MYSXWZQ.js.map → chunk-VKTF3GAP.js.map} +0 -0
- /package/dist/{chunk-KHIUYLKY.js.map → chunk-VQ6UB4MN.js.map} +0 -0
- /package/dist/{chunk-4HUSG5MR.js.map → chunk-VZVAP2ZR.js.map} +0 -0
- /package/dist/{chunk-4XBAEKQQ.js.map → chunk-W2RXXF7K.js.map} +0 -0
- /package/dist/{chunk-A2YLFKQU.js.map → chunk-W5WYTVLS.js.map} +0 -0
- /package/dist/{chunk-RHKQ2RSY.js.map → chunk-WUW6NDXC.js.map} +0 -0
- /package/dist/{chunk-EBCEDBHX.js.map → chunk-XDDKRACZ.js.map} +0 -0
- /package/dist/{chunk-ASZGMKB4.js.map → chunk-Y3TD7HOY.js.map} +0 -0
- /package/dist/{chunk-HBHBRRSW.js.map → chunk-YBAK2WN5.js.map} +0 -0
- /package/dist/{chunk-6RTE4UNO.js.map → chunk-YV4O7KDR.js.map} +0 -0
- /package/dist/{chunk-Z5V5E3JW.js.map → chunk-ZIHSCBMN.js.map} +0 -0
- /package/dist/native/chunks/{chunk-AVHGS66L.js.map → chunk-FGAX5BRS.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/MapPreview/MapMarkers.tsx"],"sourcesContent":["import LocationIcon from '@mui/icons-material/LocationOn';\nimport Box from '@mui/material/Box/index.js';\nimport Tooltip from '@mui/material/Tooltip/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, styled, useTheme } from '@mui/material/styles/index.js';\nimport type { FC } from 'react';\nimport React from 'react';\n\nimport { MARKER_PIXELS_PER_DEGREE } from './MapPreview.constants';\nimport type { LatLng, MapMarker } from './MapPreview.types';\nimport { bounceKeyframes } from './mapSurface';\nimport { shadowInk } from '../../../tokens/ink';\nimport { rem, rems } from '../../../tokens/relative';\n\n// Kept module-local: styled() components cannot be exported across a module\n// boundary here without tripping TS2742.\nconst CoordinatesDisplay = styled(Box)(({ theme }) => ({\n position: 'absolute',\n bottom: theme.spacing(2),\n left: theme.spacing(2),\n padding: theme.spacing(1, 1.5),\n background: alpha(theme.palette.background.paper, 0.95),\n backdropFilter: `blur(${rem(theme, 10)})`,\n WebkitBackdropFilter: `blur(${rem(theme, 10)})`,\n border: `1px solid ${alpha(theme.palette.divider, 0.2)}`,\n borderRadius: theme.shape.borderRadius,\n zIndex: 1,\n}));\n\nexport interface MapMarkersProps {\n markers: MapMarker[];\n centre: LatLng;\n animated: boolean;\n}\n\n// Markers are placed relative to the current centre, so panning moves them with\n// the surface.\nexport const MapMarkers: FC<MapMarkersProps> = ({ markers, centre, animated }) => {\n const theme = useTheme();\n\n return (\n <>\n {markers.map((markerItem, index) => (\n <Box\n key={`${markerItem.position.lat}-${markerItem.position.lng}-${index}`}\n data-testid={`map-marker-${index}`}\n sx={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: `translate(\n ${rem(theme, (markerItem.position.lng - centre.lng) * MARKER_PIXELS_PER_DEGREE)},\n ${rem(theme, -(markerItem.position.lat - centre.lat) * MARKER_PIXELS_PER_DEGREE)}\n )`,\n zIndex: 3,\n cursor: markerItem.onClick ? 'pointer' : 'default',\n }}\n onClick={markerItem.onClick}\n title={markerItem.title}\n >\n <Tooltip title={markerItem.description || markerItem.title || ''}>\n <LocationIcon\n sx={{\n fontSize: rem(theme, 32),\n color: theme.palette.error.main,\n filter: `drop-shadow(${rems(theme, 0, 2, 4)} ${shadowInk(theme, 0.3)})`,\n animation: animated ? 'bounce 2s infinite' : 'none',\n '@keyframes bounce': bounceKeyframes(theme),\n }}\n />\n </Tooltip>\n </Box>\n ))}\n </>\n );\n};\n\nexport const MapCoordinates: FC<{ position: LatLng; zoom: number }> = ({ position, zoom }) => (\n <CoordinatesDisplay data-testid=\"coordinates-display\">\n <Typography variant=\"caption\" sx={{ fontFamily: 'monospace' }}>\n Lat: {position.lat.toFixed(6)}, Lng: {position.lng.toFixed(6)}\n </Typography>\n {zoom > 0 && (\n <Typography variant=\"caption\" sx={{ fontFamily: 'monospace', display: 'block' }}>\n Zoom: {zoom}\n </Typography>\n )}\n </CoordinatesDisplay>\n);\n"],"mappings":";;;;;;;;;;;;;;;AAAA,OAAO,kBAAkB;AACzB,OAAO,SAAS;AAChB,OAAO,aAAa;AACpB,OAAO,gBAAgB;AACvB,SAAS,OAAO,QAAQ,gBAAgB;AAqCpC,mBAoBQ,KAkBR,YAtCA;AAzBJ,IAAM,qBAAqB,OAAO,GAAG,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EACrD,UAAU;AAAA,EACV,QAAQ,MAAM,QAAQ,CAAC;AAAA,EACvB,MAAM,MAAM,QAAQ,CAAC;AAAA,EACrB,SAAS,MAAM,QAAQ,GAAG,GAAG;AAAA,EAC7B,YAAY,MAAM,MAAM,QAAQ,WAAW,OAAO,IAAI;AAAA,EACtD,gBAAgB,QAAQ,IAAI,OAAO,EAAE,CAAC;AAAA,EACtC,sBAAsB,QAAQ,IAAI,OAAO,EAAE,CAAC;AAAA,EAC5C,QAAQ,aAAa,MAAM,MAAM,QAAQ,SAAS,GAAG,CAAC;AAAA,EACtD,cAAc,MAAM,MAAM;AAAA,EAC1B,QAAQ;AACV,EAAE;AAUK,IAAM,aAAkC,CAAC,EAAE,SAAS,QAAQ,SAAS,MAAM;AAChF,QAAM,QAAQ,SAAS;AAEvB,SACE,gCACG,kBAAQ,IAAI,CAAC,YAAY,UACxB;AAAA,IAAC;AAAA;AAAA,MAEC,eAAa,cAAc,KAAK;AAAA,MAChC,IAAI;AAAA,QACF,UAAU;AAAA,QACV,KAAK;AAAA,QACL,MAAM;AAAA,QACN,WAAW;AAAA,gBACP,IAAI,QAAQ,WAAW,SAAS,MAAM,OAAO,OAAO,wBAAwB,CAAC;AAAA,gBAC7E,IAAI,OAAO,EAAE,WAAW,SAAS,MAAM,OAAO,OAAO,wBAAwB,CAAC;AAAA;AAAA,QAElF,QAAQ;AAAA,QACR,QAAQ,WAAW,UAAU,YAAY;AAAA,MAC3C;AAAA,MACA,SAAS,WAAW;AAAA,MACpB,OAAO,WAAW;AAAA,MAElB,8BAAC,WAAQ,OAAO,WAAW,eAAe,WAAW,SAAS,IAC5D;AAAA,QAAC;AAAA;AAAA,UACC,IAAI;AAAA,YACF,UAAU,IAAI,OAAO,EAAE;AAAA,YACvB,OAAO,MAAM,QAAQ,MAAM;AAAA,YAC3B,QAAQ,eAAe,KAAK,OAAO,GAAG,GAAG,CAAC,CAAC,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,YACpE,WAAW,WAAW,uBAAuB;AAAA,YAC7C,qBAAqB,gBAAgB,KAAK;AAAA,UAC5C;AAAA;AAAA,MACF,GACF;AAAA;AAAA,IA1BK,GAAG,WAAW,SAAS,GAAG,IAAI,WAAW,SAAS,GAAG,IAAI,KAAK;AAAA,EA2BrE,CACD,GACH;AAEJ;AAEO,IAAM,iBAAyD,CAAC,EAAE,UAAU,KAAK,MACtF,qBAAC,sBAAmB,eAAY,uBAC9B;AAAA,uBAAC,cAAW,SAAQ,WAAU,IAAI,EAAE,YAAY,YAAY,GAAG;AAAA;AAAA,IACvD,SAAS,IAAI,QAAQ,CAAC;AAAA,IAAE;AAAA,IAAQ,SAAS,IAAI,QAAQ,CAAC;AAAA,KAC9D;AAAA,EACC,OAAO,KACN,qBAAC,cAAW,SAAQ,WAAU,IAAI,EAAE,YAAY,aAAa,SAAS,QAAQ,GAAG;AAAA;AAAA,IACxE;AAAA,KACT;AAAA,GAEJ;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/AddressAutocomplete/useCurrentLocation.ts"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { coordinatesOf, toAddressDetails } from './AddressAutocomplete.mapper';\nimport type { AddressDetails } from './AddressAutocomplete.types';\nimport { MOCK_ADDRESSES, MOCK_PLACE_DETAILS } from './mockPlaces';\nimport type { GoogleMapsService } from './useGoogleMapsAPI';\n\nconst MOCK_GEOLOCATION_DELAY_MS = 500;\n\nconst GEOLOCATION_OPTIONS: PositionOptions = {\n enableHighAccuracy: true,\n timeout: 10_000,\n maximumAge: 600_000, // 10 minutes\n};\n\ninterface LocationSink {\n setLoading: (loading: boolean) => void;\n setApiError: (message: string | null) => void;\n applyAddress: (address: AddressDetails) => void;\n}\n\n// Mock mode answers with the first canned address after a pause, so the button\n// behaves like a real geolocation round trip.\nconst resolveMockLocation = (sink: LocationSink) => {\n window.setTimeout(() => {\n sink.setLoading(false);\n\n const mockLocation = MOCK_ADDRESSES[0];\n if (!mockLocation) {\n sink.setApiError('No mock location available');\n return;\n }\n\n const mockDetails = MOCK_PLACE_DETAILS[mockLocation.place_id];\n if (!mockDetails) {\n sink.setApiError('Mock location details not found');\n return;\n }\n\n sink.applyAddress(\n toAddressDetails({\n components: mockDetails.address_components,\n formatted: mockDetails.formatted_address,\n coordinates: coordinatesOf(mockDetails.geometry),\n }),\n );\n }, MOCK_GEOLOCATION_DELAY_MS);\n};\n\nconst geocodePosition =\n (geocoder: google.maps.Geocoder, sink: LocationSink) => (position: GeolocationPosition) => {\n const { latitude, longitude } = position.coords;\n const location = new google.maps.LatLng(latitude, longitude);\n\n geocoder.geocode({ location }, (results, status) => {\n sink.setLoading(false);\n\n const place = status === 'OK' ? results?.[0] : undefined;\n if (!place) {\n sink.setApiError('Unable to retrieve address for current location');\n return;\n }\n\n sink.applyAddress(\n toAddressDetails({\n components: place.address_components,\n formatted: place.formatted_address,\n // The device's own fix is more precise than the geocoded place's.\n coordinates: { lat: latitude, lng: longitude },\n }),\n );\n });\n };\n\nexport const useCurrentLocation = ({\n services,\n useMockData,\n setLoading,\n setApiError,\n applyAddress,\n}: {\n services: GoogleMapsService;\n useMockData: boolean;\n setLoading: (loading: boolean) => void;\n setApiError: (message: string | null) => void;\n applyAddress: (address: AddressDetails) => void;\n}) =>\n useCallback(() => {\n if (!navigator.geolocation) {\n setApiError('Geolocation is not supported by this browser');\n return;\n }\n\n const sink: LocationSink = { setLoading, setApiError, applyAddress };\n\n if (useMockData) {\n setLoading(true);\n resolveMockLocation(sink);\n return;\n }\n\n if (!services.geocoder) {\n setApiError('Geocoding service not available');\n return;\n }\n\n setLoading(true);\n navigator.geolocation.getCurrentPosition(\n geocodePosition(services.geocoder, sink),\n () => {\n setLoading(false);\n setApiError('Unable to retrieve your location');\n },\n GEOLOCATION_OPTIONS,\n );\n }, [services, useMockData, setLoading, setApiError, applyAddress]);\n"],"mappings":";;;;;;;;;;AAAA,SAAS,mBAAmB;AAO5B,IAAM,4BAA4B;AAElC,IAAM,sBAAuC;AAAA,EAC3C,oBAAoB;AAAA,EACpB,SAAS;AAAA,EACT,YAAY;AAAA;AACd;AAUA,IAAM,sBAAsB,CAAC,SAAuB;AAClD,SAAO,WAAW,MAAM;AACtB,SAAK,WAAW,KAAK;AAErB,UAAM,eAAe,eAAe,CAAC;AACrC,QAAI,CAAC,cAAc;AACjB,WAAK,YAAY,4BAA4B;AAC7C;AAAA,IACF;AAEA,UAAM,cAAc,mBAAmB,aAAa,QAAQ;AAC5D,QAAI,CAAC,aAAa;AAChB,WAAK,YAAY,iCAAiC;AAClD;AAAA,IACF;AAEA,SAAK;AAAA,MACH,iBAAiB;AAAA,QACf,YAAY,YAAY;AAAA,QACxB,WAAW,YAAY;AAAA,QACvB,aAAa,cAAc,YAAY,QAAQ;AAAA,MACjD,CAAC;AAAA,IACH;AAAA,EACF,GAAG,yBAAyB;AAC9B;AAEA,IAAM,kBACJ,CAAC,UAAgC,SAAuB,CAAC,aAAkC;AACzF,QAAM,EAAE,UAAU,UAAU,IAAI,SAAS;AACzC,QAAM,WAAW,IAAI,OAAO,KAAK,OAAO,UAAU,SAAS;AAE3D,WAAS,QAAQ,EAAE,SAAS,GAAG,CAAC,SAAS,WAAW;AAClD,SAAK,WAAW,KAAK;AAErB,UAAM,QAAQ,WAAW,OAAO,UAAU,CAAC,IAAI;AAC/C,QAAI,CAAC,OAAO;AACV,WAAK,YAAY,iDAAiD;AAClE;AAAA,IACF;AAEA,SAAK;AAAA,MACH,iBAAiB;AAAA,QACf,YAAY,MAAM;AAAA,QAClB,WAAW,MAAM;AAAA;AAAA,QAEjB,aAAa,EAAE,KAAK,UAAU,KAAK,UAAU;AAAA,MAC/C,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAEK,IAAM,qBAAqB,CAAC;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAOE,YAAY,MAAM;AAChB,MAAI,CAAC,UAAU,aAAa;AAC1B,gBAAY,8CAA8C;AAC1D;AAAA,EACF;AAEA,QAAM,OAAqB,EAAE,YAAY,aAAa,aAAa;AAEnE,MAAI,aAAa;AACf,eAAW,IAAI;AACf,wBAAoB,IAAI;AACxB;AAAA,EACF;AAEA,MAAI,CAAC,SAAS,UAAU;AACtB,gBAAY,iCAAiC;AAC7C;AAAA,EACF;AAEA,aAAW,IAAI;AACf,YAAU,YAAY;AAAA,IACpB,gBAAgB,SAAS,UAAU,IAAI;AAAA,IACvC,MAAM;AACJ,iBAAW,KAAK;AAChB,kBAAY,kCAAkC;AAAA,IAChD;AAAA,IACA;AAAA,EACF;AACF,GAAG,CAAC,UAAU,aAAa,YAAY,aAAa,YAAY,CAAC;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/MapPreview/MapPreview.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport Paper from '@mui/material/Paper/index.js';\nimport { alpha, styled, useTheme } from '@mui/material/styles/index.js';\nimport type { FC } from 'react';\nimport React from 'react';\n\nimport { glassStyles, resolveMapPreviewProps } from './MapPreview.helpers';\nimport type { MapPreviewProps } from './MapPreview.types';\nimport { MapLayers } from './MapLayers';\nimport { MapCoordinates, MapMarkers } from './MapMarkers';\nimport { StaticMapView } from './StaticMapView';\nimport { useMapPreview } from './useMapPreview';\nimport { rem } from '../../../tokens/relative';\n\n// Kept module-local: styled() components cannot be exported across a module\n// boundary here without tripping TS2742.\nconst MapContainer = styled(Paper)(({ theme }) => ({\n position: 'relative',\n width: '100%',\n borderRadius: theme.shape.borderRadius * 2,\n overflow: 'hidden',\n background: `linear-gradient(135deg, ${alpha(theme.palette.background.paper, 0.9)} 0%, ${alpha(theme.palette.background.paper, 0.8)} 100%)`,\n border: `1px solid ${alpha(theme.palette.divider, 0.18)}`,\n}));\n\nconst MapWrapper = styled(Box)<{ height: string }>(({ height }) => ({\n width: '100%',\n height,\n position: 'relative',\n}));\n\nconst cursorFor = (grabbing: boolean, interactive: boolean): string => {\n if (grabbing) return 'grabbing';\n return interactive ? 'grab' : 'default';\n};\n\nexport const MapPreview: FC<MapPreviewProps> = (componentProps) => {\n const props = resolveMapPreviewProps(componentProps);\n const theme = useTheme();\n const { containerRef, view, controls, pointer, search, handleMapClick } = useMapPreview(props);\n\n // The map's own default height is 400 design px, through the theme's type scale.\n const height = controls.isFullscreen ? '100vh' : (props.height ?? rem(theme, 400));\n const grabbing = pointer.isDragging || pointer.isPanning;\n\n return (\n <MapContainer\n ref={containerRef}\n elevation={props.variant === 'glass' ? 0 : 2}\n data-testid=\"map-preview-container\"\n role=\"img\"\n aria-label={`Map preview centered at ${view.markerPosition.lat.toFixed(4)}, ${view.markerPosition.lng.toFixed(4)} with zoom level ${view.zoom}`}\n tabIndex={0}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n sx={glassStyles(props.variant, theme)}\n >\n <MapWrapper\n height={height}\n onClick={handleMapClick}\n onMouseDown={pointer.handleMouseDown}\n onMouseMove={pointer.handleMouseMove}\n onMouseUp={pointer.handleMouseUp}\n onMouseLeave={pointer.handleMouseUp}\n style={{\n cursor: cursorFor(grabbing, props.interactive),\n transition: props.animated ? 'all 0.3s ease' : 'none',\n }}\n >\n <StaticMapView\n height={height}\n zoom={view.zoom}\n mapType={view.mapType}\n // The built-in centre marker steps aside for an explicit marker list.\n marker={props.marker && props.markers.length === 0}\n markerPosition={view.markerPosition}\n panOffset={view.panOffset}\n />\n\n <MapMarkers markers={props.markers} centre={view.markerPosition} animated={props.animated} />\n\n <MapLayers\n settings={props}\n zoom={view.zoom}\n mapType={view.mapType}\n search={search}\n controls={controls}\n />\n\n <MapCoordinates position={view.markerPosition} zoom={view.zoom} />\n </MapWrapper>\n </MapContainer>\n );\n};\n\nexport default MapPreview;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,SAAS;AAChB,OAAO,WAAW;AAClB,SAAS,OAAO,QAAQ,gBAAgB;AAuDlC,SAYE,KAZF;AAzCN,IAAM,eAAe,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EACjD,UAAU;AAAA,EACV,OAAO;AAAA,EACP,cAAc,MAAM,MAAM,eAAe;AAAA,EACzC,UAAU;AAAA,EACV,YAAY,2BAA2B,MAAM,MAAM,QAAQ,WAAW,OAAO,GAAG,CAAC,QAAQ,MAAM,MAAM,QAAQ,WAAW,OAAO,GAAG,CAAC;AAAA,EACnI,QAAQ,aAAa,MAAM,MAAM,QAAQ,SAAS,IAAI,CAAC;AACzD,EAAE;AAEF,IAAM,aAAa,OAAO,GAAG,EAAsB,CAAC,EAAE,OAAO,OAAO;AAAA,EAClE,OAAO;AAAA,EACP;AAAA,EACA,UAAU;AACZ,EAAE;AAEF,IAAM,YAAY,CAAC,UAAmB,gBAAiC;AACrE,MAAI,SAAU,QAAO;AACrB,SAAO,cAAc,SAAS;AAChC;AAEO,IAAM,aAAkC,CAAC,mBAAmB;AACjE,QAAM,QAAQ,uBAAuB,cAAc;AACnD,QAAM,QAAQ,SAAS;AACvB,QAAM,EAAE,cAAc,MAAM,UAAU,SAAS,QAAQ,eAAe,IAAI,cAAc,KAAK;AAG7F,QAAM,SAAS,SAAS,eAAe,UAAW,MAAM,UAAU,IAAI,OAAO,GAAG;AAChF,QAAM,WAAW,QAAQ,cAAc,QAAQ;AAE/C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAW,MAAM,YAAY,UAAU,IAAI;AAAA,MAC3C,eAAY;AAAA,MACZ,MAAK;AAAA,MACL,cAAY,2BAA2B,KAAK,eAAe,IAAI,QAAQ,CAAC,CAAC,KAAK,KAAK,eAAe,IAAI,QAAQ,CAAC,CAAC,oBAAoB,KAAK,IAAI;AAAA,MAC7I,UAAU;AAAA,MACV,aAAU;AAAA,MACV,eAAY;AAAA,MACZ,IAAI,YAAY,MAAM,SAAS,KAAK;AAAA,MAEpC;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,SAAS;AAAA,UACT,aAAa,QAAQ;AAAA,UACrB,aAAa,QAAQ;AAAA,UACrB,WAAW,QAAQ;AAAA,UACnB,cAAc,QAAQ;AAAA,UACtB,OAAO;AAAA,YACL,QAAQ,UAAU,UAAU,MAAM,WAAW;AAAA,YAC7C,YAAY,MAAM,WAAW,kBAAkB;AAAA,UACjD;AAAA,UAEA;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA,MAAM,KAAK;AAAA,gBACX,SAAS,KAAK;AAAA,gBAEd,QAAQ,MAAM,UAAU,MAAM,QAAQ,WAAW;AAAA,gBACjD,gBAAgB,KAAK;AAAA,gBACrB,WAAW,KAAK;AAAA;AAAA,YAClB;AAAA,YAEA,oBAAC,cAAW,SAAS,MAAM,SAAS,QAAQ,KAAK,gBAAgB,UAAU,MAAM,UAAU;AAAA,YAE3F;AAAA,cAAC;AAAA;AAAA,gBACC,UAAU;AAAA,gBACV,MAAM,KAAK;AAAA,gBACX,SAAS,KAAK;AAAA,gBACd;AAAA,gBACA;AAAA;AAAA,YACF;AAAA,YAEA,oBAAC,kBAAe,UAAU,KAAK,gBAAgB,MAAM,KAAK,MAAM;AAAA;AAAA;AAAA,MAClE;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,qBAAQ;","names":[]}
|
package/dist/chunk-BWZKLKDT.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=chunk-BWZKLKDT.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/LazyImage/LazyImage.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport { styled, useTheme, type Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\nimport { Skeleton } from '../../layout/Skeleton';\nimport type { ResolvedLazyImageProps } from './LazyImage.hooks';\nimport { imgPassThrough, resolveLazyImageProps, useLazyImage } from './LazyImage.hooks';\nimport type { LazyImageProps } from './LazyImage.types';\nimport { sheen } from '../../../tokens/ink';\nimport { rem } from '../../../tokens/relative';\nimport { fieldHeight } from '../../../tokens/field-height';\n\nconst ImageContainer = styled(Box)(() => ({\n position: 'relative',\n display: 'inline-block',\n overflow: 'hidden',\n}));\n\nconst StyledImage = styled('img')<{\n fadeIn?: boolean;\n fadeInDuration?: number;\n isLoaded?: boolean;\n}>(({ fadeIn, fadeInDuration = 300, isLoaded }) => ({\n display: 'block',\n maxWidth: '100%',\n height: 'auto',\n opacity: fadeIn ? (isLoaded ? 1 : 0) : 1,\n transition: fadeIn ? `opacity ${fadeInDuration}ms ease-in-out` : 'none',\n}));\n\nconst SpinnerOverlay = styled(Box)(({ theme }) => ({\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: sheen(theme, 0.8),\n borderRadius: '50%',\n padding: theme.spacing(1),\n}));\n\nconst FallbackContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.palette.action.disabledBackground,\n color: theme.palette.text.secondary,\n width: '100%',\n height: '100%',\n position: 'absolute',\n top: 0,\n left: 0,\n}));\n\ntype Length = number | string | undefined;\n\n/** A length prop as React `style` and MUI's `Skeleton` read it: a number is design px. */\nconst styleLength = (theme: Theme, value: Length): string | undefined =>\n typeof value === 'number' ? rem(theme, value) : value;\n\n/**\n * A width or height above 0 and up to 1 is a fraction of the container's parent, as in `sx`.\n * A negative number is no fraction: it stays a (negative, so invalid) length.\n */\nconst isFraction = (value: Length): value is number =>\n typeof value === 'number' && value > 0 && value <= 1;\n\n/**\n * A length prop as `sx` reads it on a width or height: a number of 1 or less is\n * a fraction of the parent, and that stays so; any other number is design px.\n */\nconst sxLength = (theme: Theme, value: Length): string | undefined =>\n isFraction(value) ? `${value * 100}%` : styleLength(theme, value);\n\n/**\n * A width or height for what is drawn inside the container. The container alone\n * takes a fraction, so everything in it fills it: a percentage here is measured\n * against the container and would stack (FUT-2666). Otherwise the same as `styleLength`.\n */\nconst innerLength = (theme: Theme, value: Length): string | undefined =>\n isFraction(value) ? '100%' : styleLength(theme, value);\n\n/**\n * A width or height with its default. Only an unset or empty size takes it: `0`\n * is a size, which `||` read as unset (FUT-2669), and `sx` reads `''` as `0%`.\n */\nconst orDefault = (value: Length, fallback: number | string): number | string =>\n value === undefined || value === '' ? fallback : value;\n\n/**\n * A width/height as `metrics` and the `ReactNode` `ErrorFallback` read it\n * (FUT-2774 #4): an explicit empty string is normalized to \"as if unset\"\n * rather than mapped to a component-wide default. Unlike `SkeletonIndicator`\n * (a content-less box with nothing else to size by, hence its own deliberate\n * `'100%'`/`'auto'` fallback), these draw the real image or a `ReactNode`\n * fallback — both have their own intrinsic size, so leaving an unset width\n * unset lets it size naturally (`brand-link.tsx`'s logo relies on exactly\n * this: an unset width capped by its own `sx.maxWidth`).\n */\nconst emptyToUnset = (value: Length): Length => (value === '' ? undefined : value);\n\n/** A length, already resolved to CSS — {@link innerLength} or {@link sxLength}. */\ntype LengthResolver = (theme: Theme, value: Length) => string | undefined;\n\n// A number + `%`, a (small/large/dynamic) viewport unit, or a container-query\n// unit, anywhere in a string, even nested in `calc()`/`min()`/`max()`/`clamp()`.\nconst RELATIVE_LENGTH_UNIT = /[\\d.]+(?:%|[dsl]?v(?:w|h|i|b|min|max)|cq(?:w|h|i|b|min|max))(?![a-zA-Z])/;\n// RELATIVE: {@link isFraction}, or that unit anywhere — borrowing it onto the\n// OTHER axis re-creates this collapse (all these units square, `LazyImage.md`).\nconst isRelativeLength = (value: Length): boolean =>\n isFraction(value) || (typeof value === 'string' && RELATIVE_LENGTH_UNIT.test(value));\n\n/** A resolved axis pair; `aspectRatio` is set when the OTHER axis comes from CSS, not a length. */\ntype AxisPair = { width: string | undefined; height: string | undefined; aspectRatio?: string };\n\n/**\n * The unset-axis DEFAULT for a PLACEHOLDER only (skeleton, `ReactNode`\n * fallback) — never the real image/`metrics` (an unset width sizes it\n * naturally; `brand-link.tsx`'s logo relies on that). Decision (FUT-2805): an\n * unset axis borrows the set one (a square); neither set, both take the\n * theme's field height; both set stays unchanged. `resolve` is `innerLength`\n * (skeleton) or `sxLength` (the container). A RELATIVE single axis\n * ({@link isRelativeLength}) cannot borrow the same way: it keeps its value\n * and squares up via `aspectRatio: '1 / 1'`, the other axis explicitly\n * `'auto'` (never `undefined` — `Skeleton`'s own default, a fixed `40`,\n * would silently win otherwise).\n */\nconst placeholderAxis = (theme: Theme, width: Length, height: Length, resolve: LengthResolver): AxisPair => {\n const w = emptyToUnset(width);\n // `height` always arrives defaulted to the literal `'auto'` when unset\n // (`LAZY_IMAGE_DEFAULTS`) — indistinguishable from an explicit `\"auto\"`,\n // and no distinction is needed: both mean \"no fixed height requested\".\n const h = height === 'auto' ? undefined : emptyToUnset(height);\n\n if (w === undefined && h === undefined) {\n const field = fieldHeight(theme);\n return { width: field, height: field };\n }\n if (h === undefined) {\n if (isRelativeLength(w)) return { width: resolve(theme, w), height: 'auto', aspectRatio: '1 / 1' };\n const resolved = resolve(theme, w);\n return { width: resolved, height: resolved };\n }\n if (w === undefined) {\n if (isRelativeLength(h)) return { width: 'auto', height: resolve(theme, h), aspectRatio: '1 / 1' };\n const resolved = resolve(theme, h);\n return { width: resolved, height: resolved };\n }\n return { width: resolve(theme, w), height: resolve(theme, h) };\n};\n\n/**\n * `ImageContainer`'s own axis: the ordinary `orDefault(...,'auto')` in every\n * state, except a ReactNode `fallback` while showing — the one case where\n * the container is the only thing that CAN fix its own collapse\n * (`FallbackContainer` is `position: absolute`, never feeding shrink-to-fit).\n */\nconst containerAxisFor = (theme: Theme, props: ResolvedLazyImageProps, hasError: boolean): AxisPair => {\n const { width, height, fallback } = props;\n const needsPlaceholderSize = hasError && Boolean(fallback) && typeof fallback !== 'string';\n return needsPlaceholderSize\n ? placeholderAxis(theme, width, height, sxLength)\n : { width: sxLength(theme, orDefault(width, 'auto')), height: sxLength(theme, orDefault(height, 'auto')) };\n};\n\n/** The box the image occupies, as CSS, shared by the real image and every stand-in for it. */\ninterface BoxMetrics {\n width?: string;\n height?: string;\n objectFit: NonNullable<LazyImageProps['objectFit']>;\n objectPosition: string;\n borderRadius?: string;\n}\n\ninterface IndicatorProps {\n props: ResolvedLazyImageProps;\n metrics: BoxMetrics;\n}\n\nconst SkeletonIndicator: React.FC<IndicatorProps> = ({ props }) => {\n const theme = useTheme();\n // FUT-2805: replaces the old literal `'100%'`/`'auto'` fallbacks, which\n // collapsed to 0 in a shrink-to-fit `ImageContainer` with nothing to\n // resolve against.\n const { width, height, aspectRatio } = placeholderAxis(theme, props.width, props.height, innerLength);\n return (\n <Skeleton\n // FUT-2774 #5: `skeletonProps.variant` was typed but never read — the\n // variant was hard-coded regardless of what a caller passed.\n variant={props.skeletonProps.variant ?? 'rectangular'}\n width={width}\n height={height}\n style={aspectRatio ? { aspectRatio } : undefined}\n // FUT-2774 #5: `||` reads a caller's `false` the same as \"unset\", so\n // `skeletonProps.animation={false}` could never turn the animation off.\n animation={props.skeletonProps.animation ?? 'pulse'}\n intensity={props.skeletonProps.intensity}\n borderRadius={styleLength(theme, props.borderRadius)}\n data-testid={`${props['data-testid']}-skeleton`}\n />\n );\n};\n\nconst SpinnerIndicator: React.FC<IndicatorProps> = ({ props }) => {\n const theme = useTheme();\n const { spinnerProps } = props;\n\n return (\n <SpinnerOverlay>\n <CircularProgress\n // FUT-2774 #5: `||` read `spinnerProps.size`/`thickness` of `0` the\n // same as unset — the same class of bug FUT-2669 fixed for\n // `width`/`height`, missed here.\n size={styleLength(theme, spinnerProps.size ?? 40)}\n thickness={spinnerProps.thickness ?? 4}\n sx={{ color: spinnerProps.color || theme.palette.primary.main }}\n data-testid={`${props['data-testid']}-spinner`}\n />\n </SpinnerOverlay>\n );\n};\n\n/**\n * The placeholder sits in the box's flow and gives the box its size: the box's\n * own when one is set, the placeholder's when not. The real image is drawn over\n * it (`OVER_PLACEHOLDER`) until it has faded in. Its load and error are not the\n * image's, so neither reaches the caller; a failing one just retires.\n */\nconst PlaceholderIndicator: React.FC<IndicatorProps & { onError: () => void }> = ({\n props,\n metrics,\n onError,\n}) => {\n if (!props.placeholder) return null;\n\n return (\n <StyledImage\n src={props.placeholder}\n alt={`${props.alt} (loading)`}\n style={metrics}\n decoding={props.decoding}\n loading={props.lazy ? 'lazy' : props.loading}\n onError={onError}\n data-testid={`${props['data-testid']}-placeholder`}\n />\n );\n};\n\nconst LoadingIndicator: React.FC<\n IndicatorProps & { kind: NonNullable<LazyImageProps['loadingState']>; onPlaceholderError: () => void }\n> = ({ kind, onPlaceholderError, ...rest }) => {\n switch (kind) {\n case 'skeleton':\n return <SkeletonIndicator {...rest} />;\n case 'spinner':\n return <SpinnerIndicator {...rest} />;\n case 'placeholder':\n return <PlaceholderIndicator {...rest} onError={onPlaceholderError} />;\n default:\n return null;\n }\n};\n\n/**\n * The real image while the placeholder is up: laid over it and cropped by\n * `objectFit`, so the box never grows to hold both. It takes the flow back\n * when the placeholder goes.\n */\nconst OVER_PLACEHOLDER: React.CSSProperties = {\n position: 'absolute',\n inset: 0,\n width: '100%',\n height: '100%',\n};\n\nconst ErrorFallback: React.FC<IndicatorProps> = ({ props, metrics }) => {\n const theme = useTheme();\n const { alt, fallback, width, height, borderRadius } = props;\n const testId = props['data-testid'];\n\n if (!fallback) return null;\n\n if (typeof fallback === 'string') {\n return (\n <StyledImage\n src={fallback}\n alt={`${alt} (fallback)`}\n style={metrics}\n fadeIn={false}\n isLoaded={true}\n data-testid={`${testId}-fallback`}\n />\n );\n }\n\n return (\n <FallbackContainer\n sx={{\n // FUT-2774 #4 (see `emptyToUnset`); the collapse is fixed by\n // `LazyImage` giving `ImageContainer` ITSELF a size now\n // (`containerAxisFor`) — this `position: absolute` box just fills it.\n width: innerLength(theme, emptyToUnset(width)),\n height: innerLength(theme, orDefault(height, 'auto')),\n borderRadius: styleLength(theme, borderRadius),\n }}\n data-testid={`${testId}-fallback`}\n >\n {fallback}\n </FallbackContainer>\n );\n};\n\n/**\n * LazyImage component with enhanced features for optimized image loading\n * Supports lazy loading, placeholders, error handling, and various loading states\n */\nexport const LazyImage = React.memo<LazyImageProps>(function LazyImage(rawProps) {\n const props = resolveLazyImageProps(rawProps);\n const theme = useTheme();\n const {\n state,\n containerRef,\n effectiveLoadingState,\n handleImageLoad,\n handleImageError,\n handlePlaceholderError,\n showImage,\n showLoading,\n showPlaceholder,\n } = useLazyImage(props);\n\n const { width, height, borderRadius, alt } = props;\n const testId = props['data-testid'];\n const metrics: BoxMetrics = {\n // FUT-2774 #4 (see `emptyToUnset`): `metrics` also sizes the REAL `<img>`,\n // where an unset width means \"the image's own intrinsic size\" —\n // `brand-link.tsx`'s logo relies on exactly that. `height`'s `'auto'`\n // fallback has no such live case to protect: a percentage height against\n // an auto-height containing block computes to `auto` regardless, so\n // sharing `SkeletonIndicator`'s fallback changes nothing observable.\n width: innerLength(theme, emptyToUnset(width)),\n height: innerLength(theme, orDefault(height, 'auto')),\n objectFit: props.objectFit,\n objectPosition: props.objectPosition,\n borderRadius: styleLength(theme, borderRadius),\n };\n\n const containerAxis = containerAxisFor(theme, props, state.hasError);\n\n return (\n <ImageContainer\n ref={containerRef}\n className={props.className}\n sx={{\n width: containerAxis.width,\n height: containerAxis.height,\n aspectRatio: containerAxis.aspectRatio,\n // The same px length the image gets (`metrics`): in `sx` a bare number\n // would be a multiple of `shape.borderRadius`, and this box clips (FUT-2656).\n borderRadius: metrics.borderRadius,\n }}\n data-testid={testId}\n >\n {showLoading && (\n <LoadingIndicator\n kind={effectiveLoadingState}\n props={props}\n metrics={metrics}\n onPlaceholderError={handlePlaceholderError}\n />\n )}\n\n {showImage && (\n <StyledImage\n src={state.currentSrc || undefined}\n alt={alt}\n onLoad={handleImageLoad}\n onError={handleImageError}\n fadeIn={props.fadeIn}\n fadeInDuration={props.fadeInDuration}\n isLoaded={!state.isLoading}\n decoding={props.decoding}\n loading={props.lazy ? 'lazy' : props.loading}\n style={{ ...metrics, ...props.sx, ...(showPlaceholder && OVER_PLACEHOLDER) }}\n aria-label={props['aria-label'] || alt}\n aria-describedby={props['aria-describedby']}\n role={props.role}\n data-testid={`${testId}-img`}\n {...imgPassThrough(props)}\n />\n )}\n\n {state.hasError && <ErrorFallback props={props} metrics={metrics} />}\n </ImageContainer>\n );\n});\n\nLazyImage.displayName = 'LazyImage';\n"],"mappings":"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","names":["LazyImage"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/Table/Table.tsx"],"sourcesContent":["import MoreVertIcon from '@mui/icons-material/MoreVert';\nimport Box from '@mui/material/Box/index.js';\nimport FormControlLabel from '@mui/material/FormControlLabel/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Menu from '@mui/material/Menu/index.js';\nimport MenuItem from '@mui/material/MenuItem/index.js';\nimport Skeleton from '@mui/material/Skeleton/index.js';\nimport Switch from '@mui/material/Switch/index.js';\nimport MuiTable from '@mui/material/Table/index.js';\nimport TableBody from '@mui/material/TableBody/index.js';\nimport TableCell from '@mui/material/TableCell/index.js';\nimport TableContainer from '@mui/material/TableContainer/index.js';\nimport TableRow from '@mui/material/TableRow/index.js';\nimport { styled, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport type {\n ColumnConfig,\n TableDensity,\n TableProps,\n TableStripeColor} from './Table.types';\nimport {\n TABLE_DEFAULTS,\n containerStyle,\n definedProps,\n headerRefFor,\n resolveTableDensity,\n scrollerRadiusStyle,\n tableDomProps,\n tableRowHeight,\n virtualHeight,\n} from './Table.helpers';\nimport { useTableSelection, useVirtualScrolling } from './Table.hooks';\nimport { EnhancedTableBody, EnhancedTableHeader } from './TableParts';\nimport { EmptyRow, NoDataPlaceholder } from './TableStates';\nimport { tableStyles } from './Table.styles';\nimport { rem } from '../../../tokens/relative';\n\n// Helper function to get stripe color from theme\nconst StyledTable = styled(MuiTable, {\n shouldForwardProp: (prop) =>\n !['customVariant', 'glow', 'pulse', 'hoverable', 'density', 'stickyHeader', 'stripeColor', 'virtualised'].includes(prop as string) })<{\n customVariant?: string;\n glow?: boolean;\n pulse?: boolean;\n hoverable?: boolean;\n density?: TableDensity;\n stickyHeader?: boolean;\n stripeColor?: TableStripeColor;\n virtualised?: boolean;\n}>(({ theme, customVariant, glow, pulse, hoverable, density, stickyHeader, stripeColor = 'neutral', virtualised }) => {\n return tableStyles({\n theme,\n customVariant,\n glow,\n pulse,\n hoverable,\n density,\n stickyHeader,\n stripeColor,\n virtualised });\n});\n\n// Virtual Scrolling Hook\nconst TableShell: React.FC<{\n innerRef: React.Ref<globalThis.HTMLTableElement>;\n variant?: string;\n stripeColor?: TableStripeColor;\n glow?: boolean;\n pulse?: boolean;\n hoverable?: boolean;\n density?: TableDensity;\n stickyHeader?: boolean;\n header: React.ReactNode;\n rest: Record<string, unknown>;\n children: React.ReactNode;\n}> = ({\n innerRef,\n variant,\n stripeColor,\n glow,\n pulse,\n hoverable,\n density,\n stickyHeader,\n header,\n rest,\n children }) => (\n // The loading and empty shells are not scrollers (no `containerHeight`), so\n // they get only the rounded clip `stickyHeader` moves off the `<table>`,\n // never a height (FUT-2677).\n <TableContainer style={scrollerRadiusStyle(useTheme(), stickyHeader)}>\n <StyledTable\n ref={innerRef}\n customVariant={variant}\n stripeColor={stripeColor}\n glow={glow}\n pulse={pulse}\n hoverable={hoverable}\n density={density}\n stickyHeader={stickyHeader}\n {...rest}\n >\n {header}\n {children}\n </StyledTable>\n </TableContainer>\n);\n\nconst SKELETON_ROW_COUNT = 5;\n\nconst LoadingSkeletonRows: React.FC<{ columns?: ColumnConfig[] }> = ({ columns }) => {\n const theme = useTheme();\n return (\n <>\n {Array.from({ length: SKELETON_ROW_COUNT }, (_, index) => (\n <TableRow key={index}>\n {columns?.map((column) => (\n <TableCell key={column.key}>\n <Skeleton height={rem(theme, 20)} />\n </TableCell>\n ))}\n </TableRow>\n ))}\n </>\n );\n};\n\nexport type TableShellProps = Omit<React.ComponentProps<typeof TableShell>, 'children'>;\n\ntype Selection = ReturnType<typeof useTableSelection>;\n\ninterface RendererProps {\n resolved: TableProps;\n selection: Selection;\n innerRef: React.Ref<globalThis.HTMLTableElement>;\n rest: Record<string, unknown>;\n}\n\n// The column-visibility control, shown only when responsive mode has actually\n// hidden something on a narrow viewport.\nconst ColumnToggleMenu: React.FC<{\n columns: ColumnConfig[];\n hiddenColumns: number[];\n anchor: HTMLElement | null;\n setAnchor: (element: HTMLElement | null) => void;\n setHiddenColumns: (next: number[]) => void;\n}> = ({ columns, hiddenColumns, anchor, setAnchor, setHiddenColumns }) => (\n <Box position=\"absolute\" top={8} right={8}>\n <IconButton onClick={(event) => setAnchor(event.currentTarget)} size=\"small\">\n <MoreVertIcon />\n </IconButton>\n <Menu anchorEl={anchor} open={Boolean(anchor)} onClose={() => setAnchor(null)}>\n {columns.map((column, index) => (\n <MenuItem key={column.key}>\n <FormControlLabel\n control={\n <Switch\n checked={!hiddenColumns.includes(index)}\n onChange={(event) =>\n setHiddenColumns(\n event.target.checked\n ? hiddenColumns.filter((i: number) => i !== index)\n : [...hiddenColumns, index],\n )\n }\n size=\"small\"\n />\n }\n label={column.label}\n />\n </MenuItem>\n ))}\n </Menu>\n </Box>\n);\n\n// The populated table. Local because StyledTable cannot cross a module\n// boundary (TS2742).\nconst columnsFor = (resolved: TableProps, selection: Selection): ColumnConfig[] =>\n (resolved.responsive ? selection.visibleColumns : resolved.columns) ?? [];\n\n// The toggle only earns its place when responsive mode has actually hidden\n// something on a narrow viewport.\nconst showsColumnToggle = (resolved: TableProps, selection: Selection): boolean =>\n Boolean(\n resolved.responsive &&\n selection.isMobile &&\n resolved.showColumnToggle &&\n selection.hiddenColumns.length > 0,\n );\n\n// The virtual window lives here, with the one scroller whose offset drives it;\n// the header's ref lets it subtract the height the `<thead>` pushes the body down.\nconst AdvancedTable: React.FC<RendererProps> = ({ resolved: p, selection, innerRef, rest }) => {\n const theme = useTheme();\n const finalColumns = columnsFor(p, selection);\n const showToggle = showsColumnToggle(p, selection);\n const headRef = React.useRef<globalThis.HTMLTableSectionElement>(null);\n const windowHeight = virtualHeight(p);\n const { visibleItems, handleScroll } = useVirtualScrolling(\n p.data ?? [],\n tableRowHeight(p.rowHeight) || 40,\n windowHeight ?? 400,\n p.overscan,\n headerRefFor(windowHeight, headRef),\n );\n\n return (\n <Box position=\"relative\">\n <TableContainer\n style={containerStyle(theme, p)}\n onScroll={windowHeight ? handleScroll : undefined}\n >\n <StyledTable\n ref={innerRef}\n customVariant={p.variant}\n stripeColor={p.stripeColor}\n glow={p.glow}\n pulse={p.pulse}\n hoverable={p.hoverable}\n density={p.density}\n stickyHeader={p.stickyHeader}\n virtualised={Boolean(windowHeight)}\n {...rest}\n >\n <EnhancedTableHeader\n columns={finalColumns}\n data={p.data ?? []}\n sortable={p.sortable}\n sortConfig={p.sortConfig}\n onSortChange={p.onSortChange}\n selectable={p.selectable}\n selectedRows={p.selectedRows}\n onSelectAll={selection.handleSelectAll}\n density={p.density}\n stickyHeader={p.stickyHeader}\n headRef={headRef}\n />\n <EnhancedTableBody\n data={p.data ?? []}\n columns={finalColumns}\n selectedRows={p.selectedRows}\n onRowClick={p.onRowClick}\n onRowFocus={p.onRowFocus}\n onRowBlur={p.onRowBlur}\n onSelectionChange={selection.handleSelectionChange}\n rowKeyExtractor={p.rowKeyExtractor}\n density={p.density}\n selectable={p.selectable}\n hoverable={p.hoverable}\n renderRow={p.renderRow}\n renderCell={p.renderCell}\n virtualWindow={windowHeight ? visibleItems : undefined}\n rowHeight={p.rowHeight}\n />\n </StyledTable>\n </TableContainer>\n\n {showToggle && (\n <ColumnToggleMenu\n columns={p.columns ?? []}\n hiddenColumns={selection.hiddenColumns}\n anchor={selection.columnMenuAnchor}\n setAnchor={selection.setColumnMenuAnchor}\n setHiddenColumns={selection.setHiddenColumns}\n />\n )}\n </Box>\n );\n};\n\n// The loading and empty states render the same shell as the populated table, so\n// they share TableShell rather than repeating it three times.\nconst buildShell = ({\n resolved,\n selection,\n innerRef,\n rest,\n finalColumns }: RendererProps & { finalColumns?: ColumnConfig[] }) => ({\n innerRef,\n variant: resolved.variant,\n stripeColor: resolved.stripeColor,\n glow: resolved.glow,\n pulse: resolved.pulse,\n hoverable: resolved.hoverable,\n density: resolved.density,\n stickyHeader: resolved.stickyHeader,\n header: resolved.columns ? (\n <EnhancedTableHeader\n columns={finalColumns ?? []}\n data={[]}\n sortable={resolved.sortable}\n sortConfig={resolved.sortConfig}\n onSortChange={resolved.onSortChange}\n selectable={resolved.selectable}\n selectedRows={resolved.selectedRows}\n onSelectAll={selection.handleSelectAll}\n density={resolved.density}\n stickyHeader={resolved.stickyHeader}\n />\n ) : null,\n rest: rest as Record<string, unknown> });\n\nconst TableLoadingState: React.FC<{\n shell: TableShellProps;\n loadingComponent?: React.ReactNode;\n columns?: ColumnConfig[];\n}> = ({ shell, loadingComponent, columns }) => (\n <TableShell {...shell}>\n <TableBody data-testid=\"table-loading\">\n {loadingComponent || <LoadingSkeletonRows columns={columns} />}\n </TableBody>\n </TableShell>\n);\n\nconst TableEmptyState: React.FC<{\n shell: TableShellProps;\n emptyStateComponent?: React.ReactNode;\n emptyText: string;\n colSpan: number;\n}> = ({ shell, emptyStateComponent, emptyText, colSpan }) => (\n <TableShell {...shell}>\n <EmptyRow colSpan={colSpan}>\n {emptyStateComponent || <NoDataPlaceholder emptyText={emptyText} />}\n </EmptyRow>\n </TableShell>\n);\n\nexport const Table = React.forwardRef<globalThis.HTMLTableElement, TableProps>(\n (tableProps, ref) => {\n const resolved = { ...TABLE_DEFAULTS, ...definedProps(tableProps) } as TableProps;\n // Never from the theme (FUT-2886) — see `resolveTableDensity`.\n resolved.density = resolveTableDensity(resolved.density);\n const {\n columns,\n data,\n responsive,\n loading,\n loadingComponent,\n emptyStateComponent,\n emptyText,\n children,\n } = resolved;\n\n const selection = useTableSelection({\n columns,\n data,\n responsive,\n columnPriorities: resolved.columnPriorities,\n selectedRows: resolved.selectedRows ?? [],\n rowKeyExtractor: resolved.rowKeyExtractor,\n onSelectionChange: resolved.onSelectionChange });\n\n // Only MUI's and the DOM's own props reach the `<table>` (FUT-2658).\n const rest = tableDomProps(tableProps);\n const renderer: RendererProps = { resolved, selection, innerRef: ref, rest };\n const finalColumns = responsive ? selection.visibleColumns : columns;\n const shell = buildShell({ ...renderer, finalColumns });\n\n if (loading) {\n return (\n <TableLoadingState shell={shell} loadingComponent={loadingComponent} columns={columns} />\n );\n }\n\n if (data && data.length === 0) {\n return (\n <TableEmptyState\n shell={shell}\n emptyStateComponent={emptyStateComponent}\n emptyText={emptyText}\n colSpan={finalColumns?.length || 1}\n />\n );\n }\n\n if (columns && data) return <AdvancedTable {...renderer} />;\n\n // Basic table (backward compatibility)\n return (\n <StyledTable\n ref={ref}\n customVariant={resolved.variant}\n stripeColor={resolved.stripeColor}\n glow={resolved.glow}\n pulse={resolved.pulse}\n hoverable={resolved.hoverable}\n density={resolved.density}\n stickyHeader={resolved.stickyHeader}\n {...rest}\n >\n {children}\n </StyledTable>\n );\n },\n);\n\nTable.displayName = 'Table';"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/RichTextEditor/RichTextEditor.hooks.ts"],"sourcesContent":["import DOMPurify from 'dompurify';\nimport type React from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { applyFormatToRange } from './RichTextEditor.format';\n\n// Deliberately narrow: anything not listed is stripped, and no data-* attributes\n// survive, so pasted markup cannot smuggle in behaviour.\nconst SANITIZE_CONFIG = {\n ALLOWED_TAGS: [\n 'p', 'br', 'strong', 'em', 'u', 's', 'a', 'img', 'ul', 'ol', 'li',\n 'blockquote', 'pre', 'code', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span', 'div',\n ],\n ALLOWED_ATTR: ['href', 'src', 'alt', 'target', 'rel', 'style', 'class'],\n ALLOW_DATA_ATTR: false,\n KEEP_CONTENT: true,\n};\n\n// The one way editor html reaches the DOM. Both writes (the render-path effect\n// and the over-limit restore) use it, so they cannot drift to different configs.\nconst sanitize = (html: string): string => DOMPurify.sanitize(html, SANITIZE_CONFIG);\n\n// INVARIANT: only ever pass SANITISED html here. Assigning innerHTML to a\n// detached element still fetches `<img src>` and fires its `onerror`, so raw\n// markup would execute. Its one caller passes `sanitizedContent`.\nconst textLengthOf = (html: string): number => {\n const probe = document.createElement('div');\n probe.innerHTML = html;\n return probe.textContent?.length || 0;\n};\n\n// The editable content and the limit that guards it.\nconst useEditorContent = ({\n editorRef,\n value,\n onChange,\n maxLength,\n}: {\n editorRef: React.RefObject<HTMLDivElement | null>;\n value?: string;\n onChange?: (value: string) => void;\n maxLength?: number;\n}) => {\n // `content` holds UNSANITISED html: the caller's raw `value` (read once, at\n // mount) until the first accepted input, and the editor's raw live innerHTML\n // after it. Every write of it to the DOM must go through `sanitize` below.\n // INVARIANT: if syncing a later `value` is ever added, the new value reaches\n // the DOM through the same sanitiser, never by a direct innerHTML write.\n const [content, setContent] = useState(value ?? '');\n\n const handleContentChange = useCallback(() => {\n if (!editorRef.current) return;\n\n const newContent = editorRef.current.innerHTML;\n\n // Over the limit, put the last accepted content back rather than truncating\n // mid-markup. `content` may be the caller's raw `value`, so the restore is\n // sanitised exactly as the render path is: writing it raw ran an `onerror`\n // handler carried in `value` (FUT-2685).\n if (maxLength && (editorRef.current.textContent || '').length > maxLength) {\n editorRef.current.innerHTML = sanitize(content);\n return;\n }\n\n // Emitting the live DOM is safe only because nothing but `sanitize()` ever\n // writes it: the editor renders empty and the effect below fills it. Give\n // the first render its own markup and this must emit `sanitize(newContent)`.\n setContent(newContent);\n onChange?.(newContent);\n }, [maxLength, onChange, content, editorRef]);\n\n return { content, handleContentChange };\n};\n\nconst useFocusState = ({ onFocus, onBlur }: { onFocus?: () => void; onBlur?: () => void }) => {\n const [isFocused, setIsFocused] = useState(false);\n\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n onFocus?.();\n }, [onFocus]);\n\n const handleBlur = useCallback(() => {\n setIsFocused(false);\n onBlur?.();\n }, [onBlur]);\n\n return { isFocused, handleFocus, handleBlur };\n};\n\nexport const useRichTextEditor = ({\n value,\n onChange,\n onFocus,\n onBlur,\n disabled,\n readOnly,\n maxLength,\n}: {\n value?: string;\n onChange?: (value: string) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n disabled?: boolean;\n readOnly?: boolean;\n maxLength?: number;\n}) => {\n const editorRef = useRef<HTMLDivElement>(null);\n const { content, handleContentChange } = useEditorContent({\n editorRef,\n value,\n onChange,\n maxLength,\n });\n const { isFocused, handleFocus, handleBlur } = useFocusState({ onFocus, onBlur });\n\n const applyFormat = useCallback(\n (formatType: string, formatValue?: string) => {\n if (disabled || readOnly || !editorRef.current) return;\n\n const selection = window.getSelection();\n // Nothing selected: give the editor focus so the next keystroke lands.\n if (!selection || selection.rangeCount === 0) {\n editorRef.current.focus();\n return;\n }\n\n applyFormatToRange({\n formatType,\n value: formatValue,\n range: selection.getRangeAt(0),\n editor: editorRef.current,\n });\n\n handleContentChange();\n editorRef.current.focus();\n },\n [disabled, readOnly, handleContentChange],\n );\n\n const sanitizedContent = sanitize(content);\n\n // Reflect the sanitized result back when it differs from what is on screen.\n useEffect(() => {\n if (editorRef.current && editorRef.current.innerHTML !== sanitizedContent) {\n editorRef.current.innerHTML = sanitizedContent;\n }\n }, [sanitizedContent]);\n\n return {\n editorRef,\n isFocused,\n characterCount: textLengthOf(sanitizedContent),\n handleContentChange,\n handleFocus,\n handleBlur,\n applyFormat,\n };\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/pt-BR.data-display.ts"],"sourcesContent":["/**\n * The pt-BR pack for the data-display family. Split out of `pt-BR.ts`, which is a\n * barrel over this folder — see that file for why.\n */\nimport type { DataViewsCopy } from \"./components/data-display/DataViews/data-views-copy\";\nimport type {\n CarouselCopy,\n DataGridCopy,\n DataStateCopy,\n LightboxCopy,\n MapPreviewCopy,\n TimingDiagramCopy,\n} from './copy';\nimport { PT_BR_TABLE_FILTER_COPY } from './pt-BR.layout';\nimport {\n PT_BR_CATEGORY_SELECT_COPY,\n PT_BR_CONFIRM_ACTION_COPY,\n PT_BR_SAVED_VIEWS_LABELS,\n} from './pt-BR.shared';\n\nexport const PT_BR_LIGHTBOX_COPY: LightboxCopy = {\n close: \"Fechar\",\n previous: \"Anterior\",\n next: \"Próximo\",\n zoomIn: \"Aproximar\",\n zoomOut: \"Afastar\",\n resetZoom: \"Restaurar o zoom\",\n play: \"Iniciar a apresentação\",\n pause: \"Pausar a apresentação\",\n dialogLabel: \"Galeria de imagens\",\n itemPosition: (index, total) => `Item ${index} de ${total}`,\n videoFallback: (index, total) => `Vídeo ${index} de ${total}`,\n imageFallback: (index, total) => `Imagem ${index} de ${total}`,\n thumbnailFallback: (index) => `Miniatura ${index}`,\n};\n\nexport const PT_BR_DATA_GRID_COPY: DataGridCopy = {\n sortBy: (header) => `Ordenar por ${header}`,\n selectRow: (rowNumber) => `Selecionar linha ${rowNumber}`,\n selectAllRows: \"Selecionar todas as linhas\",\n expandRow: \"Expandir linha\",\n collapseRow: \"Recolher linha\",\n gridLabel: \"Grade de dados\",\n};\n\nexport const PT_BR_MAP_PREVIEW_COPY: MapPreviewCopy = {\n zoomIn: \"Aproximar\",\n zoomOut: \"Afastar\",\n center: \"Centralizar o mapa\",\n mapType: \"Trocar o tipo de mapa\",\n fullscreen: \"Tela cheia\",\n search: \"Buscar endereço\",\n};\n\nexport const PT_BR_CAROUSEL_COPY: CarouselCopy = {\n previous: \"Anterior\",\n next: \"Próximo\",\n};\n\nexport const PT_BR_TIMING_DIAGRAM_COPY: TimingDiagramCopy = {\n regionLabel: \"Diagrama de tempos\",\n heading: \"Tempo da requisição\",\n dns: \"Busca de DNS\",\n connect: \"Conexão\",\n ssl: \"SSL/TLS\",\n request: \"Requisição\",\n response: \"Resposta\",\n total: (formatted) => `Total: ${formatted}`,\n totalTime: (formatted) => `Tempo total: ${formatted}`,\n};\n\nexport const PT_BR_DATA_STATE_COPY: DataStateCopy = {\n empty: \"Nenhum dado por aqui\",\n loading: \"Carregando…\",\n endOfList: \"Não há mais itens para carregar\",\n dismissAlert: \"Fechar o aviso\",\n dismissBanner: \"Fechar a faixa\",\n};\n\nexport const PT_BR_DATA_VIEWS_COPY: DataViewsCopy = {\n savedViewsMenu: PT_BR_SAVED_VIEWS_LABELS,\n confirmAction: PT_BR_CONFIRM_ACTION_COPY,\n categorySelect: PT_BR_CATEGORY_SELECT_COPY,\n board: {\n countOnPage: (label, count) => `${label}: ${count} nesta página`,\n onThisPage: (count) => `${count} nesta página`,\n pageSum: (sum) => `Soma desta página: ${sum}`,\n emptyColumn: \"Nada nesta etapa\",\n pageScopeNote:\n \"As contagens e somas abaixo referem-se apenas aos itens desta página.\",\n },\n deleteView: {\n title: \"Excluir visão\",\n target: (viewName) => `Excluir \"${viewName}\"?`,\n sharedWarning: \"Esta visão está compartilhada — a equipe perderá o acesso a ela.\",\n rowsUnaffected: (entityLabel) =>\n `${entityLabel} não são afetados; apenas o recorte salvo é removido.`,\n confirm: \"Excluir visão\",\n cancel: \"Cancelar\",\n },\n manageViews: {\n title: \"Gerenciar visões\",\n empty: \"Nenhuma visão salva.\",\n edit: \"Editar\",\n defaultTag: \"Padrão\",\n otherUserTag: \"De outro usuário\",\n deleteTitle: \"Excluir a visão salva?\",\n deleteBody: \"Os filtros e colunas guardados nela são perdidos. Não é possível restaurar.\",\n deleteConfirm: \"Excluir\",\n },\n saveView: {\n sharedDescription: \"Qualquer pessoa da loja poderá abrir e usar esta visão.\",\n setDefaultTitle: \"Definir como padrão\",\n setDefaultDescription: \"Esta tela abre nesta visão em vez da Visão principal.\",\n previewHeading: \"O que esta visão guarda\",\n previewUnchanged: \"Nada foi alterado — esta visão ficará igual à Visão principal.\",\n sortRowLabel: \"Ordenação\",\n saveFailed: \"Não foi possível salvar a visão.\",\n titleEditing: \"Editar visão\",\n titleCreating: \"Salvar visão\",\n descriptionLabel: \"Descrição — opcional\",\n descriptionPlaceholder: \"Para que serve esta visão\",\n submitEditing: \"Salvar alterações\",\n submitCreating: \"Salvar visão\",\n nameLabel: \"Nome\",\n cancel: \"Cancelar\",\n pinnedTitle: \"Fixar na barra lateral\",\n pinnedDescription: \"Aparece como atalho no menu, abaixo desta tela.\",\n sharedTitle: \"Compartilhar com a equipe\",\n namePlaceholder: \"Ex.: Recusados no PIX desta semana\",\n previewFilters: \"Filtros\",\n previewHiddenColumns: \"Colunas ocultas\",\n },\n columns: {\n visibleCount: (visible, total) => `${visible} de ${total} visíveis`,\n reset: \"Padrão\",\n showAll: \"Mostrar todas\",\n dragHint: \"Arraste para reordenar as colunas.\",\n moveUp: (columnLabel) => `Mover ${columnLabel} para cima`,\n moveDown: (columnLabel) => `Mover ${columnLabel} para baixo`,\n },\n display: {\n sortTab: \"Ordenar\",\n columnsTab: \"Colunas\",\n panelTab: \"Exibição\",\n direction: \"Direção\",\n layoutHints: {\n table: \"Colunas comparáveis, boa para varrer números.\",\n list: \"Uma linha por item, com os dados principais.\",\n cards: \"Blocos maiores, bom para poucos itens.\",\n board: \"Colunas por etapa, para acompanhar o que está onde.\",\n },\n densityHeadings: {\n table: \"Altura das linhas\",\n list: \"Altura das linhas\",\n cards: \"Cards por linha\",\n board: \"Largura das colunas\",\n },\n densityLabels: {\n table: { compact: \"Baixa\", cozy: \"Média\", comfortable: \"Alta\" },\n list: { compact: \"Baixa\", cozy: \"Média\", comfortable: \"Alta\" },\n cards: { compact: \"Muitos\", cozy: \"Médio\", comfortable: \"Poucos\" },\n board: { compact: \"Estreita\", cozy: \"Média\", comfortable: \"Larga\" },\n },\n boardUnavailable: \"Esta tela não declara etapas, então não oferece quadro.\",\n densityUnavailableNarrow:\n \"Um card por linha nesta largura — a densidade volta em telas maiores.\",\n trigger: \"Exibir\",\n fieldHeading: \"Campo\",\n formatHeading: \"Formato\",\n cardZoom: \"Tamanho dos cards\",\n },\n export: {\n formats: {\n json: { label: \"JSON (.json)\", hint: \"Para integrações\" },\n },\n scopeLine: (selectedCount, totalCount) =>\n selectedCount > 0\n ? `Exportando ${selectedCount} ${selectedCount === 1 ? \"item selecionado\" : \"itens selecionados\"}`\n : `Exportando ${totalCount} ${totalCount === 1 ? \"item filtrado\" : \"itens filtrados\"}`,\n visibleColumns: (columnCount) => `${columnCount} colunas visíveis, na ordem atual`,\n trigger: \"Exportar\",\n triggerLabel: \"Exportar\",\n },\n tableFilter: PT_BR_TABLE_FILTER_COPY,\n grid: {\n ...PT_BR_DATA_GRID_COPY,\n rowActions: \"Ações\",\n bulkActions: (selectedCount) => `Ações (${selectedCount}) ▾`,\n emptyFilteredTitle: \"Nenhum resultado para esses filtros\",\n emptyFilteredHint: \"Ajuste ou remova os filtros.\",\n emptyFilteredAction: \"Limpar filtros\",\n },\n filters: {\n moreFilters: (count) => `Mais filtros: ${count} sem espaço na barra`,\n moreFiltersApplied: (count, appliedCount) =>\n `Mais filtros: ${count} sem espaço na barra, ${appliedCount} aplicado(s)`,\n moreTriggerLabel: \"Mais\",\n moreHeading: \"Mais filtros\",\n overflowNote: \"sem espaço na barra\",\n rangeEnd: \"Até\",\n rangeInvalid: \"O início precisa ser menor que o fim.\",\n rangeInclusiveNote: \"Ambas as datas entram no resultado.\",\n rangeStart: \"De\",\n dayMask: \"dd/mm/aaaa\",\n clearAllFilters: \"Limpar todos os filtros\",\n rangePresets: {\n hoje: \"Hoje\",\n ontem: \"Ontem\",\n semana: \"Esta semana\",\n mes: \"Este mês\",\n ano: \"Este ano\",\n },\n scopesLabel: \"Situação\",\n panelTitle: \"Filtros\",\n clear: \"Limpar\",\n clearAll: \"Limpar filtros\",\n clearRange: (label) => `Limpar ${label}`,\n allOption: \"Todas\",\n optionSearchPlaceholder: \"Buscar…\",\n optionsEmpty: \"Nenhum resultado\",\n optionsHeading: \"Opções\",\n },\n selection: {\n selectAllOnPage: \"Selecionar todos nesta página\",\n clearSelection: \"Limpar seleção\",\n selectAll: \"Selecionar tudo\",\n onThisPage: (count) => `${count} nesta página`,\n selectedCount: (count) => `${count} ${count === 1 ? \"selecionado\" : \"selecionados\"}`,\n selectRow: \"Selecionar\",\n expandRow: \"Expandir detalhes\",\n collapseRow: \"Recolher detalhes\",\n },\n nav: {\n mainView: \"Visão principal\",\n defaultTag: \"Padrão\",\n viewOptions: (viewName) => `Opções de ${viewName}`,\n emptyHint: \"Nenhuma visão salva. Ajuste filtros, colunas ou ordenação e salve abaixo.\",\n setDefault: \"Definir como padrão\",\n deleteView: \"Excluir visão\",\n unsavedChanges: \"Alterações não salvas\",\n label: \"Visão\",\n update: \"Atualizar visão\",\n save: \"Salvar visão\",\n saveAs: \"Salvar como nova\",\n reset: \"Redefinir\",\n updateFailed: \"Não foi possível atualizar a visão\",\n dismissError: \"Fechar o aviso\",\n goBack: \"Voltar\",\n pageSize: \"Mostrar:\",\n saveFailed: \"Não foi possível salvar a alteração da visão.\",\n editView: \"Renomear e editar\",\n pinToSidebar: \"Fixar na barra lateral\",\n shareWithTeam: \"Compartilhar com a equipe\",\n },\n search: {\n placeholder: \"Buscar…\",\n allColumnsLabel: \"Buscar em todas as colunas\",\n keywordPlaceholder: \"Pressione Enter para filtrar\",\n open: \"Buscar\",\n close: \"Fechar busca\",\n clear: \"Limpar busca\",\n },\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/Carousel/Carousel.parts.tsx"],"sourcesContent":["import ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos';\nimport ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';\nimport FiberManualRecordIcon from '@mui/icons-material/FiberManualRecord';\nimport Box from '@mui/material/Box/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, useTheme } from '@mui/material/styles/index.js';\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { withDefaults } from '../../../utils/withDefaults';\n\nimport { neutralTones } from '../../../tokens/ink';\nimport { accentFor, muiSize, rem } from '../../../tokens/scales';\n\nimport type {\n CarouselArrowsProps,\n CarouselIndicatorsProps,\n CarouselItem,\n CarouselThumbnailsProps,\n} from './Carousel.types';\n\ntype IndicatorPosition = NonNullable<CarouselIndicatorsProps['position']>;\ntype IndicatorVariant = NonNullable<CarouselIndicatorsProps['variant']>;\ntype Color = NonNullable<CarouselIndicatorsProps['color']>;\n\n/** Fires `onSelect` for the keys a native button would treat as activation. */\nconst activateOnKey = (onSelect: () => void) => (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSelect();\n }\n};\n\nconst INDICATOR_POSITIONS = (theme: Theme): Record<IndicatorPosition, CSSObject> => ({\n top: { top: theme.spacing(2), left: '50%', transform: 'translateX(-50%)' },\n bottom: { bottom: theme.spacing(2), left: '50%', transform: 'translateX(-50%)' },\n left: {\n left: theme.spacing(2),\n top: '50%',\n transform: 'translateY(-50%)',\n flexDirection: 'column',\n },\n right: {\n right: theme.spacing(2),\n top: '50%',\n transform: 'translateY(-50%)',\n flexDirection: 'column',\n },\n});\n\ninterface IndicatorProps {\n index: number;\n isActive: boolean;\n color: Color;\n onSelect: () => void;\n}\n\n/** Attributes every indicator variant carries, whatever it draws. */\nconst indicatorAttrs = (index: number, isActive: boolean) => ({\n 'aria-label': `Go to slide ${index + 1}`,\n 'data-testid': `carousel-indicator-${index}`,\n 'data-active': isActive,\n});\n\nconst LineIndicator: React.FC<IndicatorProps> = ({ index, isActive, color, onSelect }) => {\n const theme = useTheme();\n\n return (\n <Box\n role=\"button\"\n tabIndex={0}\n {...indicatorAttrs(index, isActive)}\n sx={{\n width: rem(theme, isActive ? 30 : 20),\n height: rem(theme, 3),\n backgroundColor: isActive\n ? accentFor(theme, color).main\n : alpha(accentFor(theme, color).main, 0.3),\n borderRadius: 1.5,\n transition: theme.transitions.create(['width', 'background-color']),\n cursor: 'pointer',\n }}\n onClick={onSelect}\n onKeyDown={activateOnKey(onSelect)}\n />\n );\n};\n\nconst NumberIndicator: React.FC<IndicatorProps> = ({ index, isActive, color, onSelect }) => {\n const theme = useTheme();\n\n return (\n <Box\n role=\"button\"\n tabIndex={0}\n {...indicatorAttrs(index, isActive)}\n sx={{\n width: rem(theme, 24),\n height: rem(theme, 24),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '50%',\n backgroundColor: isActive ? accentFor(theme, color).main : 'transparent',\n color: isActive ? accentFor(theme, color).contrastText : accentFor(theme, color).main,\n border: `1px solid ${accentFor(theme, color).main}`,\n fontSize: rem(theme, 12),\n fontWeight: isActive ? 'bold' : 'normal',\n cursor: 'pointer',\n transition: theme.transitions.create(['all']),\n }}\n onClick={onSelect}\n onKeyDown={activateOnKey(onSelect)}\n >\n {index + 1}\n </Box>\n );\n};\n\nconst DotIndicator: React.FC<IndicatorProps> = ({ index, isActive, color, onSelect }) => {\n const theme = useTheme();\n\n return (\n <IconButton\n size=\"small\"\n {...indicatorAttrs(index, isActive)}\n onClick={onSelect}\n sx={{\n p: 0.5,\n color: isActive ? accentFor(theme, color).main : alpha(accentFor(theme, color).main, 0.3),\n transform: isActive ? 'scale(1.2)' : 'scale(1)',\n transition: theme.transitions.create(['transform', 'color']),\n }}\n >\n <FiberManualRecordIcon fontSize=\"small\" />\n </IconButton>\n );\n};\n\nconst INDICATORS: Record<IndicatorVariant, React.FC<IndicatorProps>> = {\n lines: LineIndicator,\n numbers: NumberIndicator,\n dots: DotIndicator,\n};\n\nconst INDICATORS_DEFAULTS = {\n position: 'bottom',\n color: 'primary',\n variant: 'dots',\n} satisfies Partial<CarouselIndicatorsProps>;\n\nexport const CarouselIndicators: React.FC<CarouselIndicatorsProps> = (props) => {\n const { count, activeIndex, onSelect, position, color, variant, className, style } = withDefaults(\n props,\n INDICATORS_DEFAULTS,\n ) as CarouselIndicatorsProps & Required<Pick<CarouselIndicatorsProps, keyof typeof INDICATORS_DEFAULTS>>;\n\n const theme = useTheme();\n const Indicator = INDICATORS[variant] ?? DotIndicator;\n\n return (\n <Box\n className={className}\n data-testid=\"carousel-indicators\"\n sx={{\n position: 'absolute',\n display: 'flex',\n gap: 1,\n zIndex: 2,\n ...(INDICATOR_POSITIONS(theme)[position] ?? INDICATOR_POSITIONS(theme).bottom),\n ...style,\n }}\n >\n {Array.from({ length: count }).map((_, index) => (\n <Indicator\n key={index}\n index={index}\n isActive={index === activeIndex}\n color={color}\n onSelect={() => onSelect(index)}\n />\n ))}\n </Box>\n );\n};\n\nconst ARROWS_DEFAULTS = {\n position: 'overlay',\n disabled: false,\n disablePrev: false,\n disableNext: false,\n color: 'primary',\n size: 'md',\n} satisfies Partial<CarouselArrowsProps>;\n\n/**\n * All three positions place the arrow the same way; only `overlay` fades it back\n * until hovered, and only `outside` sits it clear of the frame.\n */\nconst arrowSx = (theme: Theme, color: Color, isOverlay: boolean): CSSObject => ({\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n zIndex: 3,\n backgroundColor: alpha(theme.palette.background.paper, 0.8),\n color: accentFor(theme, color).main,\n '&:disabled': { opacity: 0.3 },\n ...(isOverlay\n ? {\n opacity: 0.7,\n '&:hover': { backgroundColor: theme.palette.background.paper, opacity: 1 },\n }\n : { '&:hover': { backgroundColor: theme.palette.background.paper } }),\n});\n\nexport const CarouselArrows: React.FC<CarouselArrowsProps> = (props) => {\n const {\n copy, onPrev, onNext, position, disabled, disablePrev, disableNext, color, size, className,\n style,\n } = withDefaults(props, ARROWS_DEFAULTS) as CarouselArrowsProps &\n Required<Pick<CarouselArrowsProps, keyof typeof ARROWS_DEFAULTS>>;\n\n const theme = useTheme();\n const sx = arrowSx(theme, color, position === 'overlay');\n const offset = rem(theme, position === 'outside' ? -40 : 8);\n\n return (\n <Box data-testid=\"carousel-navigation\">\n <IconButton\n onClick={onPrev}\n disabled={disabled || disablePrev}\n size={muiSize(size)}\n className={className}\n aria-label={copy.previous}\n data-testid=\"carousel-prev-button\"\n sx={{ ...sx, left: offset, ...style }}\n >\n <ArrowBackIosIcon />\n </IconButton>\n\n <IconButton\n onClick={onNext}\n disabled={disabled || disableNext}\n aria-label={copy.next}\n size={muiSize(size)}\n className={className}\n data-testid=\"carousel-next-button\"\n sx={{ ...sx, right: offset, ...style }}\n >\n <ArrowForwardIosIcon />\n </IconButton>\n </Box>\n );\n};\n\nconst THUMBNAIL_SIZES = { xs: 40, sm: 60, md: 80, lg: 100, xl: 120 } as const;\n/** A thumbnail's side in design px — 60 for a size the table does not know. */\nconst thumbnailSidePx = (size: string): number =>\n THUMBNAIL_SIZES[size as keyof typeof THUMBNAIL_SIZES] ?? 60;\n\nconst Thumbnail: React.FC<{\n item: CarouselItem;\n index: number;\n isActive: boolean;\n side: number;\n onSelect: () => void;\n}> = ({ item, index, isActive, side, onSelect }) => {\n const theme = useTheme();\n\n return (\n <Box\n onClick={onSelect}\n data-testid={`carousel-thumbnail-${index}`}\n data-active={isActive}\n sx={{\n width: rem(theme, side),\n height: rem(theme, side),\n border: `${rem(theme, 2)} solid ${isActive ? theme.palette.primary.main : 'transparent'}`,\n borderRadius: 1,\n overflow: 'hidden',\n cursor: 'pointer',\n opacity: isActive ? 1 : 0.6,\n transition: theme.transitions.create(['opacity', 'border-color']),\n '&:hover': { opacity: 1 },\n }}\n >\n {item.image ? (\n <Box\n component=\"img\"\n src={item.image}\n alt={item.alt || item.title}\n sx={{ width: '100%', height: '100%', objectFit: 'cover' }}\n />\n ) : (\n // No image to show, so the slide's number stands in for it.\n <Box\n sx={{\n width: '100%',\n height: '100%',\n backgroundColor: neutralTones(theme).track,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Typography variant=\"caption\">{index + 1}</Typography>\n </Box>\n )}\n </Box>\n );\n};\n\nexport const CarouselThumbnails: React.FC<CarouselThumbnailsProps> = ({\n items,\n activeIndex,\n onSelect,\n size = 'sm',\n className,\n style,\n}) => {\n const theme = useTheme();\n const side = thumbnailSidePx(size);\n\n return (\n <Box\n className={className}\n data-testid=\"carousel-thumbnails\"\n sx={{\n position: 'absolute',\n // Hung below the frame, clear of its own height plus a gap.\n bottom: rem(theme, -side - 16),\n left: '50%',\n transform: 'translateX(-50%)',\n display: 'flex',\n gap: 1,\n p: 1,\n backgroundColor: alpha(theme.palette.background.paper, 0.9),\n borderRadius: 1,\n ...style,\n }}\n >\n {items.map((item, index) => (\n <Thumbnail\n key={item.id}\n item={item}\n index={index}\n isActive={index === activeIndex}\n side={side}\n onSelect={() => onSelect(index)}\n />\n ))}\n </Box>\n );\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/feedback/TutorialOverlay/TutorialStepBody.tsx"],"sourcesContent":["import CompleteIcon from '@mui/icons-material/CheckCircle';\nimport CloseIcon from '@mui/icons-material/Close';\nimport PrevIcon from '@mui/icons-material/NavigateBefore';\nimport NextIcon from '@mui/icons-material/NavigateNext';\nimport RestartIcon from '@mui/icons-material/Refresh';\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Stack from '@mui/material/Stack/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, styled } from '@mui/material/styles/index.js';\nimport React, { } from 'react';\n\nimport { onMedia, uiInk } from '../../../tokens/ink';\nimport { rem } from '../../../tokens/relative';\n\nimport type { TutorialOverlayProps } from './TutorialOverlay.types';\nimport type { TutorialCopy } from '../../../copy';\n\n// Animation keyframes\n\nconst StepIndicator = styled(Box)(({ theme }) => ({\n display: 'flex',\n gap: theme.spacing(1),\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2) }));\n\n\nconst StepDot = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'active' && prop !== 'completed' })<{ active?: boolean; completed?: boolean }>(({ theme, active, completed }) => ({\n width: rem(theme, 8),\n height: rem(theme, 8),\n borderRadius: '50%',\n background: completed\n ? theme.palette.success.main\n : active\n ? theme.palette.primary.main\n : alpha(theme.palette.text.primary, 0.3),\n transition: 'all 0.3s ease',\n ...(active && {\n transform: 'scale(1.5)' }) }));\n\n// Title, body copy, the step dots and the navigation row.\n\n// The step's controls: skip/restart on the left, previous/next on the right.\nconst TutorialStepNav: React.FC<{\n copy: TutorialCopy;\n currentStep: number;\n stepCount: number;\n isLastStep: boolean;\n allowSkip: boolean;\n requiresActionBeforeNext?: boolean;\n onNext: () => void;\n onPrev: () => void;\n onSkip: () => void;\n onRestart: () => void;\n}> = ({\n copy,\n currentStep,\n stepCount,\n isLastStep,\n allowSkip,\n requiresActionBeforeNext,\n onNext,\n onPrev,\n onSkip,\n onRestart }) => (\n <Stack\n direction=\"row\"\n spacing={1}\n justifyContent=\"space-between\"\n data-testid=\"tutorial-navigation\"\n >\n <Stack direction=\"row\" spacing={1}>\n {allowSkip && (\n <Button size=\"small\" onClick={onSkip} variant=\"text\">\n {copy.skip}\n </Button>\n )}\n {stepCount > 1 && (\n <IconButton\n size=\"small\"\n onClick={onRestart}\n disabled={currentStep === 0}\n title={copy.restart}\n >\n <RestartIcon fontSize=\"small\" />\n </IconButton>\n )}\n </Stack>\n\n <Stack direction=\"row\" spacing={1}>\n {stepCount > 1 && currentStep > 0 && (\n <Button\n size=\"small\"\n startIcon={<PrevIcon />}\n onClick={onPrev}\n disabled={currentStep === 0}\n data-testid=\"tutorial-prev-button\"\n >\n {copy.previous}\n </Button>\n )}\n\n {!isLastStep ? (\n <Button\n variant=\"contained\"\n size=\"small\"\n endIcon={<NextIcon />}\n onClick={onNext}\n disabled={requiresActionBeforeNext}\n title={requiresActionBeforeNext ? copy.requiresAction : ''}\n data-testid=\"tutorial-next-button\"\n >\n {copy.next}\n </Button>\n ) : (\n <Button\n variant=\"contained\"\n size=\"small\"\n endIcon={<CompleteIcon />}\n onClick={onNext}\n sx={(theme) => {\n const [from, to] = uiInk(theme).celebration.mint;\n return { background: `linear-gradient(135deg, ${from} 0%, ${to} 100%)` };\n }}\n data-testid=\"tutorial-finish-button\"\n >\n {stepCount === 1 ? copy.complete : copy.finish}\n </Button>\n )}\n </Stack>\n </Stack>\n);\n\nconst StepDots: React.FC<{ currentStep: number; stepCount: number }> = ({\n currentStep,\n stepCount }) => (\n <StepIndicator data-testid=\"tutorial-step-indicators\">\n {Array.from({ length: stepCount }).map((_, index) => (\n <StepDot\n key={index}\n active={index === currentStep}\n completed={index < currentStep}\n data-testid={`tutorial-indicator-${index}`}\n />\n ))}\n </StepIndicator>\n);\n\n// Title, and the close button when skipping is allowed.\nconst TutorialStepHeader: React.FC<{\n title: React.ReactNode;\n currentStep: number;\n allowSkip: boolean;\n onSkip: () => void;\n}> = ({ title, currentStep, allowSkip, onSkip }) => (\n <Box\n sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start' }}\n >\n <Typography\n id={`tutorial-title-${currentStep}`}\n variant=\"h6\"\n fontWeight=\"bold\"\n sx={{ flex: 1 }}\n data-testid=\"tutorial-step-title\"\n >\n {title}\n </Typography>\n {allowSkip && (\n <IconButton\n size=\"small\"\n onClick={onSkip}\n sx={{ ml: 1, mt: -1, mr: -1 }}\n data-testid=\"tutorial-close-button\"\n >\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n )}\n </Box>\n);\n\nexport const TutorialStepBody: React.FC<{\n copy: TutorialCopy;\n step: TutorialOverlayProps['steps'][number];\n currentStep: number;\n stepCount: number;\n progress: number;\n isLastStep: boolean;\n allowSkip: boolean;\n showProgress: boolean;\n requiresActionBeforeNext?: boolean;\n onNext: () => void;\n onPrev: () => void;\n onSkip: () => void;\n onRestart: () => void;\n}> = ({\n copy,\n step,\n currentStep,\n stepCount,\n progress: _progress,\n isLastStep,\n allowSkip,\n showProgress,\n requiresActionBeforeNext,\n onNext,\n onPrev,\n onSkip,\n onRestart }) => (\n <Stack spacing={2}>\n <TutorialStepHeader\n title={step.title}\n currentStep={currentStep}\n allowSkip={allowSkip}\n onSkip={onSkip}\n />\n\n <Typography\n id={`tutorial-content-${currentStep}`}\n variant=\"body2\"\n color=\"text.secondary\"\n data-testid=\"tutorial-step-content\"\n >\n {step.content}\n </Typography>\n\n {showProgress && (\n <Typography variant=\"caption\" color=\"text.secondary\" align=\"center\">\n {currentStep + 1} of {stepCount}\n </Typography>\n )}\n\n {step.action && (\n <Button\n variant=\"contained\"\n size=\"small\"\n onClick={step.action.onClick}\n sx={(theme) => {\n const [from, to] = uiInk(theme).celebration.violet;\n return { background: `linear-gradient(135deg, ${from} 0%, ${to} 100%)`, color: onMedia(theme) };\n }}\n >\n {step.action.label}\n </Button>\n )}\n\n <StepDots currentStep={currentStep} stepCount={stepCount} />\n\n <TutorialStepNav\n copy={copy}\n currentStep={currentStep}\n stepCount={stepCount}\n isLastStep={isLastStep}\n allowSkip={allowSkip}\n requiresActionBeforeNext={requiresActionBeforeNext}\n onNext={onNext}\n onPrev={onPrev}\n onSkip={onSkip}\n onRestart={onRestart}\n />\n </Stack>\n);\n\n// Main component\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/Calendar/CalendarDay.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles/index.js';\nimport Box from '@mui/material/Box/index.js';\nimport type { FC } from 'react';\nimport React from 'react';\n\nimport { rem, sxRem } from '../../../tokens/relative';\n\nimport type { DayRenderArgs } from './Calendar.types';\n\n/** A day cell's edge, 40 design px through the theme's type scale. */\nconst CELL_SIZE = sxRem(40);\n\ninterface DayState extends DayRenderArgs {\n outside: boolean;\n focused: boolean;\n}\n\n// Order matters: these land on the element in the order listed.\nconst CLASS_FLAGS: Array<[keyof DayState, string]> = [\n ['selected', 'selected'],\n ['inRange', 'in-range'],\n ['rangeStart', 'range-start'],\n ['rangeEnd', 'range-end'],\n ['disabled', 'disabled'],\n ['today', 'today'],\n ['outside', 'outside'],\n ['hovered', 'hovered'],\n ['focused', 'focused'],\n];\n\nconst dayClassNames = (state: DayState, custom?: string): string =>\n [\n 'calendar-day',\n ...CLASS_FLAGS.filter(([flag]) => state[flag]).map(([, name]) => name),\n ...(custom ? [custom] : []),\n ].join(' ');\n\nconst isEndpoint = (day: DayRenderArgs): boolean =>\n day.selected || day.rangeStart || day.rangeEnd;\n\nconst backgroundFor = (day: DayRenderArgs): string => {\n if (isEndpoint(day)) return 'primary.main';\n if (day.inRange || day.hovered) return 'primary.light';\n return 'transparent';\n};\n\nconst colorFor = (day: DayRenderArgs, visible: boolean): string => {\n if (isEndpoint(day)) return 'primary.contrastText';\n if (day.disabled) return 'text.disabled';\n // Outside days that are switched off still occupy the grid, they just have\n // nothing to show.\n if (!visible) return 'transparent';\n return 'text.primary';\n};\n\nconst hoverBackgroundFor = (day: DayRenderArgs): string | undefined => {\n if (day.disabled) return undefined;\n return day.selected ? 'primary.dark' : 'action.hover';\n};\n\nconst dayCellSx = (day: DayRenderArgs, visible: boolean): SxProps<Theme> => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: CELL_SIZE,\n height: CELL_SIZE,\n border: 'none',\n borderRadius: 1,\n cursor: day.disabled ? 'not-allowed' : 'pointer',\n backgroundColor: backgroundFor(day),\n color: colorFor(day, visible),\n opacity: !day.inCurrentMonth && visible ? 0.5 : 1,\n fontWeight: day.today ? 'bold' : 'normal',\n '&:hover': {\n backgroundColor: hoverBackgroundFor(day),\n },\n '&:focus': {\n outline: (theme: Theme) => `${rem(theme, 2)} solid`,\n outlineColor: 'primary.main',\n outlineOffset: sxRem(1),\n },\n});\n\nexport interface CalendarDayProps {\n day: DayRenderArgs;\n focused: boolean;\n showOutsideDays: boolean;\n dayClassName?: (args: DayRenderArgs) => string;\n onSelect: (date: Date) => void;\n onHover: (date: Date) => void;\n onHoverEnd: () => void;\n}\n\nexport const CalendarDay: FC<CalendarDayProps> = ({\n day,\n focused,\n showOutsideDays,\n dayClassName,\n onSelect,\n onHover,\n onHoverEnd,\n}) => {\n const visible = day.inCurrentMonth || showOutsideDays;\n const state: DayState = { ...day, outside: !day.inCurrentMonth, focused };\n\n return (\n <Box\n component=\"button\"\n role=\"gridcell\"\n tabIndex={focused ? 0 : -1}\n aria-selected={day.selected}\n aria-disabled={day.disabled}\n aria-current={day.today ? 'date' : undefined}\n className={dayClassNames(state, dayClassName?.(day))}\n data-testid={`calendar-date-${day.date.getDate()}`}\n onClick={() => onSelect(day.date)}\n onMouseEnter={() => onHover(day.date)}\n onMouseLeave={onHoverEnd}\n sx={dayCellSx(day, visible)}\n >\n {day.selected && (\n <Box component=\"span\" data-testid=\"calendar-selected-date\" sx={{ display: 'none' }} />\n )}\n {day.today && (\n <Box component=\"span\" data-testid=\"calendar-today\" sx={{ display: 'none' }} />\n )}\n {visible ? day.date.getDate() : ''}\n </Box>\n );\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/AddressAutocomplete/useAddressPredictions.ts"],"sourcesContent":["import type React from 'react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { MIN_QUERY_LENGTH } from './AddressAutocomplete.helpers';\nimport type { AddressAutocompleteProps, AddressOptionValue } from './AddressAutocomplete.types';\nimport { searchMockAddresses } from './mockPlaces';\nimport type { GoogleMapsService } from './useGoogleMapsAPI';\n\nconst DEBOUNCE_MS = 300;\n// Long enough to exercise the loading state, short enough not to slow tests down.\nconst MOCK_PREDICTION_DELAY_MS = 100;\n\ntype Restrictions = AddressAutocompleteProps['restrictions'];\n\ninterface PredictionSink {\n setOptions: (options: AddressOptionValue[]) => void;\n setLoading: (loading: boolean) => void;\n setApiError: (message: string | null) => void;\n}\n\nconst predictionRequest = (\n input: string,\n restrictions: Restrictions,\n): google.maps.places.AutocompletionRequest => ({\n input: input.trim(),\n componentRestrictions: restrictions?.country ? { country: restrictions.country } : undefined,\n types: restrictions?.types || [],\n});\n\nconst fetchMockPredictions = (input: string, sink: PredictionSink) => {\n window.setTimeout(() => {\n sink.setLoading(false);\n sink.setOptions(searchMockAddresses(input));\n sink.setApiError(null);\n }, MOCK_PREDICTION_DELAY_MS);\n};\n\nconst fetchLivePredictions = (\n service: google.maps.places.AutocompleteService,\n input: string,\n restrictions: Restrictions,\n sink: PredictionSink,\n) => {\n service.getPlacePredictions(predictionRequest(input, restrictions), (predictions, status) => {\n sink.setLoading(false);\n\n if (status === google.maps.places.PlacesServiceStatus.OK && predictions) {\n sink.setOptions(predictions);\n sink.setApiError(null);\n return;\n }\n\n // No matches is a normal outcome, not something to complain about.\n sink.setOptions([]);\n sink.setApiError(\n status === google.maps.places.PlacesServiceStatus.ZERO_RESULTS\n ? null\n : 'Failed to fetch address suggestions',\n );\n });\n};\n\nexport const useAddressPredictions = ({\n isLoaded,\n services,\n restrictions,\n useMockData,\n setInputValue,\n setLoading,\n setApiError,\n}: {\n isLoaded: boolean;\n services: GoogleMapsService;\n restrictions: Restrictions;\n useMockData: boolean;\n setInputValue: (value: string) => void;\n setLoading: (loading: boolean) => void;\n setApiError: (message: string | null) => void;\n}) => {\n const [options, setOptions] = useState<AddressOptionValue[]>([]);\n const debounceTimeoutRef = useRef<number | undefined>(undefined);\n\n const sink = useMemo<PredictionSink>(\n () => ({ setOptions, setLoading, setApiError }),\n [setLoading, setApiError],\n );\n\n const debouncedAutocomplete = useCallback(\n (input: string) => {\n window.clearTimeout(debounceTimeoutRef.current);\n\n debounceTimeoutRef.current = window.setTimeout(() => {\n if (!input.trim() || !isLoaded) {\n setOptions([]);\n setLoading(false);\n return;\n }\n\n if (useMockData) {\n fetchMockPredictions(input, sink);\n return;\n }\n\n if (!services.autocompleteService) {\n setOptions([]);\n setLoading(false);\n return;\n }\n\n fetchLivePredictions(services.autocompleteService, input, restrictions, sink);\n }, DEBOUNCE_MS);\n },\n [isLoaded, services, restrictions, useMockData, sink, setLoading],\n );\n\n useEffect(() => () => window.clearTimeout(debounceTimeoutRef.current), []);\n\n const handleInputChange = useCallback(\n (_event: React.SyntheticEvent, value: string) => {\n setInputValue(value);\n setApiError(null);\n\n if (value.length > MIN_QUERY_LENGTH) {\n setLoading(true);\n debouncedAutocomplete(value);\n return;\n }\n\n setOptions([]);\n setLoading(false);\n },\n [debouncedAutocomplete, setInputValue, setApiError, setLoading],\n );\n\n return { options, handleInputChange };\n};\n"],"mappings":";;;;;;;;AACA,SAAS,aAAa,WAAW,SAAS,QAAQ,gBAAgB;AAOlE,IAAM,cAAc;AAEpB,IAAM,2BAA2B;AAUjC,IAAM,oBAAoB,CACxB,OACA,kBAC8C;AAAA,EAC9C,OAAO,MAAM,KAAK;AAAA,EAClB,uBAAuB,cAAc,UAAU,EAAE,SAAS,aAAa,QAAQ,IAAI;AAAA,EACnF,OAAO,cAAc,SAAS,CAAC;AACjC;AAEA,IAAM,uBAAuB,CAAC,OAAe,SAAyB;AACpE,SAAO,WAAW,MAAM;AACtB,SAAK,WAAW,KAAK;AACrB,SAAK,WAAW,oBAAoB,KAAK,CAAC;AAC1C,SAAK,YAAY,IAAI;AAAA,EACvB,GAAG,wBAAwB;AAC7B;AAEA,IAAM,uBAAuB,CAC3B,SACA,OACA,cACA,SACG;AACH,UAAQ,oBAAoB,kBAAkB,OAAO,YAAY,GAAG,CAAC,aAAa,WAAW;AAC3F,SAAK,WAAW,KAAK;AAErB,QAAI,WAAW,OAAO,KAAK,OAAO,oBAAoB,MAAM,aAAa;AACvE,WAAK,WAAW,WAAW;AAC3B,WAAK,YAAY,IAAI;AACrB;AAAA,IACF;AAGA,SAAK,WAAW,CAAC,CAAC;AAClB,SAAK;AAAA,MACH,WAAW,OAAO,KAAK,OAAO,oBAAoB,eAC9C,OACA;AAAA,IACN;AAAA,EACF,CAAC;AACH;AAEO,IAAM,wBAAwB,CAAC;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAQM;AACJ,QAAM,CAAC,SAAS,UAAU,IAAI,SAA+B,CAAC,CAAC;AAC/D,QAAM,qBAAqB,OAA2B,MAAS;AAE/D,QAAM,OAAO;AAAA,IACX,OAAO,EAAE,YAAY,YAAY,YAAY;AAAA,IAC7C,CAAC,YAAY,WAAW;AAAA,EAC1B;AAEA,QAAM,wBAAwB;AAAA,IAC5B,CAAC,UAAkB;AACjB,aAAO,aAAa,mBAAmB,OAAO;AAE9C,yBAAmB,UAAU,OAAO,WAAW,MAAM;AACnD,YAAI,CAAC,MAAM,KAAK,KAAK,CAAC,UAAU;AAC9B,qBAAW,CAAC,CAAC;AACb,qBAAW,KAAK;AAChB;AAAA,QACF;AAEA,YAAI,aAAa;AACf,+BAAqB,OAAO,IAAI;AAChC;AAAA,QACF;AAEA,YAAI,CAAC,SAAS,qBAAqB;AACjC,qBAAW,CAAC,CAAC;AACb,qBAAW,KAAK;AAChB;AAAA,QACF;AAEA,6BAAqB,SAAS,qBAAqB,OAAO,cAAc,IAAI;AAAA,MAC9E,GAAG,WAAW;AAAA,IAChB;AAAA,IACA,CAAC,UAAU,UAAU,cAAc,aAAa,MAAM,UAAU;AAAA,EAClE;AAEA,YAAU,MAAM,MAAM,OAAO,aAAa,mBAAmB,OAAO,GAAG,CAAC,CAAC;AAEzE,QAAM,oBAAoB;AAAA,IACxB,CAAC,QAA8B,UAAkB;AAC/C,oBAAc,KAAK;AACnB,kBAAY,IAAI;AAEhB,UAAI,MAAM,SAAS,kBAAkB;AACnC,mBAAW,IAAI;AACf,8BAAsB,KAAK;AAC3B;AAAA,MACF;AAEA,iBAAW,CAAC,CAAC;AACb,iBAAW,KAAK;AAAA,IAClB;AAAA,IACA,CAAC,uBAAuB,eAAe,aAAa,UAAU;AAAA,EAChE;AAEA,SAAO,EAAE,SAAS,kBAAkB;AACtC;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/utility/WorkflowStep/WorkflowStep.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport { styled } from '@mui/material/styles/index.js';\nimport React, { forwardRef, useCallback, useMemo } from 'react';\n\nimport { progressValueRange, progressValueText, resolveWorkflowStepProps, withDerivedStatus } from './WorkflowStep.helpers';\nimport { StepRow } from './WorkflowStepRow';\nimport type { WorkflowStepItem, WorkflowStepProps } from './WorkflowStep.types';\n\n// Styled Components\nconst StepContainer = styled(Box, {\n shouldForwardProp: (prop) => !['orientation', 'variant'].includes(prop as string),\n})<{\n orientation: WorkflowStepProps['orientation'];\n variant: WorkflowStepProps['variant'];\n}>(({ theme, orientation, variant }) => ({\n display: 'flex',\n flexDirection: orientation === 'vertical' ? 'column' : 'row',\n alignItems: orientation === 'vertical' ? 'flex-start' : 'center',\n gap: orientation === 'vertical' ? theme.spacing(2) : theme.spacing(1),\n width: '100%',\n position: 'relative',\n \n // Variant-specific styles\n ...(variant === 'minimal' && {\n gap: orientation === 'vertical' ? theme.spacing(1) : theme.spacing(0.5),\n }),\n}));\n\n/**\n * WorkflowStep component for displaying multi-step workflows with visual progression\n */\nexport const WorkflowStep = forwardRef<HTMLDivElement, WorkflowStepProps>((rawProps, ref) => {\n const {\n steps,\n currentStep,\n variant,\n orientation,\n color,\n size,\n showProgress,\n animated,\n interactive,\n showNumbers,\n showIcons,\n completedIcon,\n errorIcon,\n onStepClick,\n disabled,\n className,\n style,\n 'data-testid': dataTestId,\n ...other\n } = resolveWorkflowStepProps(rawProps);\n const handleStepClick = useCallback((stepIndex: number, step: WorkflowStepItem) => {\n if (onStepClick && !disabled && !step.disabled) {\n onStepClick(stepIndex, step);\n }\n }, [onStepClick, disabled]);\n\n const stepsWithStatus = useMemo(\n () => withDerivedStatus(steps, currentStep),\n [steps, currentStep],\n );\n\n const { max: valueMax, now: valueNow } = progressValueRange(steps, currentStep);\n\n return (\n <StepContainer\n ref={ref}\n orientation={orientation}\n variant={variant}\n className={className}\n style={style}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={valueMax}\n aria-valuenow={valueNow}\n aria-valuetext={progressValueText(steps, currentStep)}\n data-testid={dataTestId}\n {...other}\n >\n {stepsWithStatus.map((step, index) => (\n <StepRow\n key={index}\n step={step}\n index={index}\n isLast={index === steps.length - 1}\n orientation={orientation}\n variant={variant}\n color={color}\n size={size}\n showNumbers={showNumbers}\n showIcons={showIcons}\n showProgress={showProgress}\n completedIcon={completedIcon}\n errorIcon={errorIcon}\n interactive={interactive}\n animated={animated}\n disabled={disabled}\n onClick={handleStepClick}\n dataTestId={dataTestId}\n />\n ))}\n </StepContainer>\n );\n});\n\nWorkflowStep.displayName = 'WorkflowStep';\n\nexport default WorkflowStep;"],"mappings":";;;;;;;;;;;AAAA,OAAO,SAAS;AAChB,SAAS,cAAc;AACvB,SAAgB,YAAY,aAAa,eAAe;AAgFhD;AAzER,IAAM,gBAAgB,OAAO,KAAK;AAAA,EAChC,mBAAmB,CAAC,SAAS,CAAC,CAAC,eAAe,SAAS,EAAE,SAAS,IAAc;AAClF,CAAC,EAGE,CAAC,EAAE,OAAO,aAAa,QAAQ,OAAO;AAAA,EACvC,SAAS;AAAA,EACT,eAAe,gBAAgB,aAAa,WAAW;AAAA,EACvD,YAAY,gBAAgB,aAAa,eAAe;AAAA,EACxD,KAAK,gBAAgB,aAAa,MAAM,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC;AAAA,EACpE,OAAO;AAAA,EACP,UAAU;AAAA;AAAA,EAGV,GAAI,YAAY,aAAa;AAAA,IAC3B,KAAK,gBAAgB,aAAa,MAAM,QAAQ,CAAC,IAAI,MAAM,QAAQ,GAAG;AAAA,EACxE;AACF,EAAE;AAKK,IAAM,eAAe,WAA8C,CAAC,UAAU,QAAQ;AAC3F,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,GAAG;AAAA,EACL,IAAI,yBAAyB,QAAQ;AACrC,QAAM,kBAAkB,YAAY,CAAC,WAAmB,SAA2B;AACjF,QAAI,eAAe,CAAC,YAAY,CAAC,KAAK,UAAU;AAC9C,kBAAY,WAAW,IAAI;AAAA,IAC7B;AAAA,EACF,GAAG,CAAC,aAAa,QAAQ,CAAC;AAE1B,QAAM,kBAAkB;AAAA,IACtB,MAAM,kBAAkB,OAAO,WAAW;AAAA,IAC1C,CAAC,OAAO,WAAW;AAAA,EACrB;AAEA,QAAM,EAAE,KAAK,UAAU,KAAK,SAAS,IAAI,mBAAmB,OAAO,WAAW;AAE9E,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAK;AAAA,MACL,iBAAe;AAAA,MACf,iBAAe;AAAA,MACf,iBAAe;AAAA,MACf,kBAAgB,kBAAkB,OAAO,WAAW;AAAA,MACpD,eAAa;AAAA,MACZ,GAAG;AAAA,MAEH,0BAAgB,IAAI,CAAC,MAAM,UAC1B;AAAA,QAAC;AAAA;AAAA,UAEC;AAAA,UACA;AAAA,UACA,QAAQ,UAAU,MAAM,SAAS;AAAA,UACjC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAS;AAAA,UACT;AAAA;AAAA,QAjBK;AAAA,MAkBP,CACD;AAAA;AAAA,EACH;AAEJ,CAAC;AAED,aAAa,cAAc;AAE3B,IAAO,uBAAQ;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/layout/ContentToolbar/FilterTrigger.tsx"],"sourcesContent":["'use client';\n\nimport FilterIcon from '@mui/icons-material/FilterListRounded';\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport React from 'react';\n\nimport type { FilterTriggerProps } from './ContentToolbar.types';\nimport { fieldRadiusPx } from '../../../tokens/field-radius';\nimport { fieldHeight } from '../../../tokens/field-height';\nimport { sxRem } from '../../../tokens/relative';\n\n/**\n * Labeled filter toggle: a \"Filtros\" button (styled like the sibling toolbar\n * controls) with a funnel icon and, when filters are active, a count badge — so\n * it's obvious that the list is filtered and by how many facets. The panel itself\n * is supplied by the consumer.\n */\nexport function FilterTrigger({\n open,\n onOpenChange,\n hasActiveFilters = false,\n activeCount = 0,\n label = 'Filtros',\n 'data-testid': testId = 'toggle-filters-btn',\n}: FilterTriggerProps): React.JSX.Element {\n const active = activeCount > 0 || hasActiveFilters;\n return (\n <Button\n variant=\"text\"\n size=\"small\"\n color=\"inherit\"\n data-testid={testId}\n aria-expanded={open}\n aria-label={open ? 'Close filters' : 'Open filters'}\n onClick={() => onOpenChange(!open)}\n startIcon={<FilterIcon sx={{ fontSize: sxRem(16) }} />}\n sx={{\n minWidth: 0,\n height: fieldHeight,\n px: 1,\n gap: 0.25,\n borderRadius: fieldRadiusPx,\n textTransform: 'none',\n fontWeight: 600,\n color: active ? 'primary.main' : 'text.primary',\n bgcolor: open ? 'action.selected' : 'transparent',\n }}\n >\n {label}\n {activeCount > 0 && (\n <Box\n component=\"span\"\n data-testid={`${testId}-count`}\n sx={{\n ml: 0.5,\n minWidth: sxRem(18),\n height: sxRem(18),\n px: 0.5,\n borderRadius: 999,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: sxRem(11.2),\n fontWeight: 700,\n lineHeight: 1,\n bgcolor: 'primary.main',\n color: 'primary.contrastText',\n }}\n >\n {activeCount}\n </Box>\n )}\n </Button>\n );\n}\n"],"mappings":";;;;;;;;;;;AAEA,OAAO,gBAAgB;AACvB,OAAO,SAAS;AAChB,OAAO,YAAY;AAwBf,SAQa,KARb;AAVG,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,eAAe,SAAS;AAC1B,GAA0C;AACxC,QAAM,SAAS,cAAc,KAAK;AAClC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,eAAa;AAAA,MACb,iBAAe;AAAA,MACf,cAAY,OAAO,kBAAkB;AAAA,MACrC,SAAS,MAAM,aAAa,CAAC,IAAI;AAAA,MACjC,WAAW,oBAAC,cAAW,IAAI,EAAE,UAAU,MAAM,EAAE,EAAE,GAAG;AAAA,MACpD,IAAI;AAAA,QACF,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,cAAc;AAAA,QACd,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,OAAO,SAAS,iBAAiB;AAAA,QACjC,SAAS,OAAO,oBAAoB;AAAA,MACtC;AAAA,MAEC;AAAA;AAAA,QACA,cAAc,KACb;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAa,GAAG,MAAM;AAAA,YACtB,IAAI;AAAA,cACF,IAAI;AAAA,cACJ,UAAU,MAAM,EAAE;AAAA,cAClB,QAAQ,MAAM,EAAE;AAAA,cAChB,IAAI;AAAA,cACJ,cAAc;AAAA,cACd,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,UAAU,MAAM,IAAI;AAAA,cACpB,YAAY;AAAA,cACZ,YAAY;AAAA,cACZ,SAAS;AAAA,cACT,OAAO;AAAA,YACT;AAAA,YAEC;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/en-US.form.ts"],"sourcesContent":["/**\n * The en-US pack for the form family. Split the same way `pt-BR.form.ts` is —\n * see `en-US.ts` for why.\n */\nimport type {\n AddressAutocompleteCopy,\n AutocompleteCopy,\n CodeEditorCopy,\n PasswordStrengthCopy,\n PhoneInputCopy,\n RichEditorToolbarCopy,\n SocialLoginCopy,\n UploadButtonCopy,\n} from './copy';\n\nexport const EN_US_ADDRESS_AUTOCOMPLETE_COPY: AddressAutocompleteCopy = {\n loadingMaps: \"Loading Google Maps…\",\n mapsLoadFailed:\n \"Could not load the Google Maps API. Check the API key and the internet connection.\",\n useCurrentLocation: \"Use my current location\",\n};\n\nexport const EN_US_AUTOCOMPLETE_COPY: AutocompleteCopy = {\n loading: \"Loading…\",\n noResults: \"No results found\",\n placeholder: \"Type to search…\",\n};\n\nexport const EN_US_CODE_EDITOR_COPY: CodeEditorCopy = {\n loading: \"Loading the editor…\",\n readOnly: \"Read only\",\n // The shortcut is the editor's own binding and is not translated — it is what\n // the reader must press, not something they read.\n formatCode: \"Format code (Ctrl+Shift+F)\",\n enableWrap: \"Wrap lines\",\n disableWrap: \"Do not wrap lines\",\n copyToClipboard: \"Copy to clipboard\",\n copied: \"Copied!\",\n enterFullscreen: \"Full screen\",\n exitFullscreen: \"Leave full screen\",\n};\n\nexport const EN_US_PASSWORD_STRENGTH_COPY: PasswordStrengthCopy = {\n strengthHeading: \"Password strength\",\n requirementsHeading: \"Requirements:\",\n suggestionsHeading: \"Suggestions:\",\n bands: {\n veryWeak: \"Very weak\",\n weak: \"Weak\",\n fair: \"Fair\",\n good: \"Good\",\n strong: \"Strong\",\n },\n requirements: {\n // The count is the HOST's configured minimum, interpolated rather than\n // written out: a host raising it must not end up with a requirement naming\n // the old number.\n minLength: (count) => `At least ${count} characters`,\n uppercase: \"One uppercase letter\",\n lowercase: \"One lowercase letter\",\n numbers: \"One number\",\n special: \"One special character\",\n },\n suggestions: {\n minLength: (count) => `Use at least ${count} characters`,\n uppercase: \"Add uppercase letters\",\n lowercase: \"Add lowercase letters\",\n numbers: \"Include numbers\",\n special: \"Add special characters\",\n },\n};\n\nexport const EN_US_RICH_EDITOR_TOOLBAR_COPY: RichEditorToolbarCopy = {\n bold: \"Bold\",\n italic: \"Italic\",\n underline: \"Underline\",\n bulletList: \"Bulleted list\",\n numberedList: \"Numbered list\",\n quote: \"Quote\",\n code: \"Code\",\n insertLink: \"Insert link\",\n textColor: \"Text colour\",\n backgroundColor: \"Background colour\",\n linkPrompt: \"Enter the URL:\",\n};\n\nexport const EN_US_PHONE_INPUT_COPY: PhoneInputCopy = {\n selectCountry: \"Select country\",\n invalidNumber: (countryName) => `Not a valid phone number for ${countryName}`,\n // Substituted into the sentence above when no country is chosen, so it has to\n // read as a noun phrase inside it rather than as a sentence of its own.\n unknownCountry: \"the selected country\",\n};\n\nexport const EN_US_UPLOAD_BUTTON_COPY: UploadButtonCopy = {\n buttonLabel: \"Upload a file\",\n dropzoneHint: \"Drop the file here, or click to choose one\",\n dropzoneRole: (label) => `File upload area. ${label}`,\n uploading: \"Uploading…\",\n dropReady: \"File ready to drop\",\n percentUploaded: (percent) => `${percent}% uploaded`,\n uploadInProgress: (percent) => `Upload in progress: ${percent}%`,\n errorAnnouncement: (message) => `Error: ${message}`,\n};\n\nexport const EN_US_SOCIAL_LOGIN_COPY: SocialLoginCopy = {\n google: \"Continue with Google\",\n facebook: \"Continue with Facebook\",\n apple: \"Continue with Apple\",\n};\n"],"mappings":";AAeO,IAAM,kCAA2D;AAAA,EACtE,aAAa;AAAA,EACb,gBACE;AAAA,EACF,oBAAoB;AACtB;AAEO,IAAM,0BAA4C;AAAA,EACvD,SAAS;AAAA,EACT,WAAW;AAAA,EACX,aAAa;AACf;AAEO,IAAM,yBAAyC;AAAA,EACpD,SAAS;AAAA,EACT,UAAU;AAAA;AAAA;AAAA,EAGV,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,gBAAgB;AAClB;AAEO,IAAM,+BAAqD;AAAA,EAChE,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,OAAO;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA,cAAc;AAAA;AAAA;AAAA;AAAA,IAIZ,WAAW,CAAC,UAAU,YAAY,KAAK;AAAA,IACvC,WAAW;AAAA,IACX,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EACA,aAAa;AAAA,IACX,WAAW,CAAC,UAAU,gBAAgB,KAAK;AAAA,IAC3C,WAAW;AAAA,IACX,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AACF;AAEO,IAAM,iCAAwD;AAAA,EACnE,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,OAAO;AAAA,EACP,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,YAAY;AACd;AAEO,IAAM,yBAAyC;AAAA,EACpD,eAAe;AAAA,EACf,eAAe,CAAC,gBAAgB,gCAAgC,WAAW;AAAA;AAAA;AAAA,EAG3E,gBAAgB;AAClB;AAEO,IAAM,2BAA6C;AAAA,EACxD,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc,CAAC,UAAU,qBAAqB,KAAK;AAAA,EACnD,WAAW;AAAA,EACX,WAAW;AAAA,EACX,iBAAiB,CAAC,YAAY,GAAG,OAAO;AAAA,EACxC,kBAAkB,CAAC,YAAY,uBAAuB,OAAO;AAAA,EAC7D,mBAAmB,CAAC,YAAY,UAAU,OAAO;AACnD;AAEO,IAAM,0BAA2C;AAAA,EACtD,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AACT;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/navigation/CommandPalette/CommandPalette.tsx"],"sourcesContent":["import CloseIcon from '@mui/icons-material/Close';\nimport EnterIcon from '@mui/icons-material/KeyboardReturn';\nimport SearchIcon from '@mui/icons-material/Search';\nimport Box from '@mui/material/Box/index.js';\nimport Dialog from '@mui/material/Dialog/index.js';\nimport DialogContent from '@mui/material/DialogContent/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport InputBase from '@mui/material/InputBase/index.js';\nimport Paper from '@mui/material/Paper/index.js';\nimport Slide from '@mui/material/Slide/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, styled, useTheme } from '@mui/material/styles/index.js';\nimport type { TransitionProps } from '@mui/material/transitions/index.js';\nimport type { FC} from 'react';\nimport React, { } from 'react';\n\nimport { useCommandPalette } from './CommandPalette.hooks';\nimport { PaletteResults } from './CommandPaletteResults';\nimport { ShortcutChip } from './ShortcutChip';\nimport type { CommandPaletteProps } from './CommandPalette.types';\nimport type { CommandPaletteCopy } from '../../../copy';\nimport { scrim } from '../../../tokens/ink';\nimport { rem, sxRem } from '../../../tokens/relative';\n\n// Styled components\nconst StyledDialog = styled(Dialog)(({ theme }) => ({\n '& .MuiBackdrop-root': {\n backgroundColor: scrim(theme, 0.6),\n backdropFilter: `blur(${rem(theme, 4)})` },\n '& .MuiDialog-paper': {\n position: 'fixed',\n top: '20%',\n margin: 0,\n maxHeight: 'none',\n background: 'transparent',\n boxShadow: 'none',\n overflow: 'visible' } }));\n\nconst PaletteContainer = styled(Paper)(({ theme }) => ({\n width: '100%',\n maxWidth: rem(theme, 640),\n background: `linear-gradient(135deg, ${alpha(theme.palette.background.paper, 0.98)} 0%, ${alpha(theme.palette.background.paper, 0.95)} 100%)`,\n backdropFilter: `blur(${rem(theme, 20)})`,\n WebkitBackdropFilter: `blur(${rem(theme, 20)})`,\n border: `1px solid ${alpha(theme.palette.divider, 0.18)}`,\n borderRadius: theme.shape.borderRadius * 2,\n overflow: 'hidden',\n boxShadow: theme.shadows[24] }));\n\nconst SearchContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(2),\n borderBottom: `1px solid ${alpha(theme.palette.divider, 0.12)}`,\n background: alpha(theme.palette.background.default, 0.4) }));\n\nconst SearchInput = styled(InputBase)(({ theme }) => ({\n flex: 1,\n fontSize: rem(theme, 18),\n fontWeight: 400,\n '& input': {\n padding: theme.spacing(0, 1),\n '&::placeholder': {\n color: theme.palette.text.secondary,\n opacity: 0.8 } } }));\n\nconst Transition = React.forwardRef<unknown, TransitionProps & { children: React.ReactElement }>(\n function Transition(props, ref) {\n return <Slide direction=\"down\" ref={ref} {...props} />;\n },\n);\n\n// Main component\nconst PaletteSearch: React.FC<{\n inputRef: React.Ref<HTMLInputElement>;\n placeholder?: string;\n value: string;\n dataTestId?: string;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n onClose: () => void;\n}> = ({ inputRef, placeholder, value, dataTestId, onChange, onClose }) => (\n <SearchContainer>\n <SearchIcon sx={{ color: 'text.secondary', mr: 1 }} />\n <SearchInput\n ref={inputRef}\n placeholder={placeholder}\n value={value}\n onChange={onChange}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck=\"false\"\n inputProps={{ 'data-testid': `${dataTestId}-input` }}\n />\n <IconButton size=\"small\" onClick={onClose} sx={{ ml: 1 }}>\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n </SearchContainer>\n);\n\nconst PaletteFooter: React.FC<{ commandCount: number; copy: CommandPaletteCopy }> = ({\n commandCount,\n copy,\n}) => {\n const theme = useTheme();\n\n return (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: 1,\n borderTop: `1px solid ${alpha(theme.palette.divider, 0.12)}`,\n background: alpha(theme.palette.background.default, 0.4) }}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n <ShortcutChip\n icon={<EnterIcon sx={{ fontSize: sxRem(12) }} />}\n label={copy.execute}\n size=\"small\"\n />\n <ShortcutChip label={copy.navigate} size=\"small\" />\n <ShortcutChip label={copy.close} size=\"small\" />\n </Box>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {commandCount} commands\n </Typography>\n </Box>\n );\n};\n\nexport const CommandPalette: FC<CommandPaletteProps> = ({\n copy,\n open,\n onClose,\n commands,\n placeholder = 'Type a command or search...',\n width,\n maxHeight,\n showRecent = true,\n recentCommands = [],\n onCommandExecute,\n dataTestId = 'command-palette' }) => {\n const {\n searchQuery,\n setSearchQuery,\n selectedIndex,\n setSelectedIndex,\n searchInputRef,\n listRef,\n filteredCommands,\n groupedCommands,\n executeCommand,\n recentCommandIds } = useCommandPalette({\n open,\n commands,\n showRecent,\n recentCommands,\n onCommandExecute,\n onClose });\n\n const handleSearchChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setSearchQuery(event.target.value);\n };\n\n return (\n <StyledDialog\n open={open}\n onClose={onClose}\n TransitionComponent={Transition}\n maxWidth={false}\n fullWidth\n data-testid={dataTestId}\n >\n <DialogContent sx={{ overflow: 'visible', p: 0 }}>\n <PaletteContainer elevation={24} sx={{ width: width ?? sxRem(640), maxHeight: maxHeight ?? sxRem(400) }}>\n <PaletteSearch\n inputRef={searchInputRef}\n placeholder={placeholder}\n value={searchQuery}\n dataTestId={dataTestId}\n onChange={handleSearchChange}\n onClose={onClose}\n />\n\n <PaletteResults\n copy={copy}\n listRef={listRef}\n dataTestId={dataTestId}\n searchQuery={searchQuery}\n showRecent={showRecent}\n commands={commands}\n recentCommandIds={recentCommandIds}\n filteredCommands={filteredCommands}\n groupedCommands={groupedCommands}\n selectedIndex={selectedIndex}\n onSelect={setSelectedIndex}\n onExecute={executeCommand}\n />\n\n <PaletteFooter copy={copy} commandCount={filteredCommands.length} />\n </PaletteContainer>\n </DialogContent>\n </StyledDialog>\n );\n};\n\n// Export default\nexport default CommandPalette;\n"],"mappings":"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","names":["Transition"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/pt-BR.navigation.ts"],"sourcesContent":["/**\n * The pt-BR pack for the navigation family. Split out of `pt-BR.ts`, which is a\n * barrel over this folder — see that file for why.\n */\nimport type {\n BreadcrumbCopy,\n CommandPaletteCopy,\n SectionNavCopy,\n} from './copy';\n\nexport const PT_BR_COMMAND_PALETTE_COPY: CommandPaletteCopy = {\n execute: \"Executar\",\n navigate: \"↑↓ Navegar\",\n close: \"ESC Fechar\",\n recent: \"Recentes\",\n tryAnotherTerm: \"Tente outro termo\",\n};\n\nexport const PT_BR_BREADCRUMB_COPY: BreadcrumbCopy = {\n showMore: \"Mostrar mais\",\n moreItems: \"Mais itens\",\n};\n\nexport const PT_BR_SECTION_NAV_COPY: SectionNavCopy = {\n close: \"Fechar\",\n badge: (count) => (count === 1 ? \"1 pendente\" : `${count} pendentes`),\n attention: \"Precisa de atenção\",\n};\n"],"mappings":";AAUO,IAAM,6BAAiD;AAAA,EAC5D,SAAS;AAAA,EACT,UAAU;AAAA,EACV,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,gBAAgB;AAClB;AAEO,IAAM,wBAAwC;AAAA,EACnD,UAAU;AAAA,EACV,WAAW;AACb;AAEO,IAAM,yBAAyC;AAAA,EACpD,OAAO;AAAA,EACP,OAAO,CAAC,UAAW,UAAU,IAAI,eAAe,GAAG,KAAK;AAAA,EACxD,WAAW;AACb;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/feedback/StackedModal/StackedModal.tsx"],"sourcesContent":["import Dialog from '@mui/material/Dialog/index.js';\nimport Slide from '@mui/material/Slide/index.js';\nimport { styled } from '@mui/material/styles/index.js';\nimport type { TransitionProps } from '@mui/material/transitions/index.js';\nimport type { FC } from 'react';\nimport React, { forwardRef, useEffect, useId } from 'react';\nimport { usePanelChrome } from './StackedModal.hooks';\nimport { modalAriaIds, ModalPanelContents, resolveModalContent } from './StackedModal.parts';\nimport type { PanelStyleProps } from './StackedModal.styles';\nimport { dialogRootStyles, STYLE_ONLY_PROPS } from './StackedModal.styles';\nimport type { StackedModalProps } from './StackedModal.types';\n\nconst StyledDialog = styled(Dialog, {\n shouldForwardProp: (prop) => !STYLE_ONLY_PROPS.includes(prop as string),\n})<PanelStyleProps>(({ theme, ...props }) => dialogRootStyles(theme, props));\n\n/** Panels slide in from the right on every device. */\nconst SlideTransition = forwardRef<HTMLDivElement, TransitionProps>(\n function SlideTransition(props, ref) {\n return (\n <Slide direction=\"left\" ref={ref} {...props}>\n {props.children as React.ReactElement}\n </Slide>\n );\n },\n);\n\nconst DEFAULTS: Partial<StackedModalProps> = {\n open: false,\n glass: false,\n navigationTitle: '',\n closeOnClickOutside: true,\n closeOnEsc: true,\n loading: false,\n loadingText: 'Loading...',\n maxWidth: false,\n disableBackdrop: false,\n disableFocusTrap: false,\n keepMounted: false,\n rtl: false,\n};\n\n/**\n * Fills in the defaults for props the caller left `undefined`. A table plus one\n * loop, rather than a default per destructured prop — each of those is a branch,\n * and fifteen of them put the component over the complexity bar on their own.\n */\nconst withDefaults = (props: StackedModalProps): StackedModalProps => {\n const resolved = { ...props };\n for (const [key, value] of Object.entries(DEFAULTS)) {\n const prop = key as keyof StackedModalProps;\n if (resolved[prop] === undefined) {\n Object.assign(resolved, { [prop]: value });\n }\n }\n return resolved;\n};\n\n/** The modal's props once defaults are applied and its stack identity is settled. */\ntype ResolvedProps = StackedModalProps & { modalId: string };\n\n/**\n * `hideHeader` removes the bar that names the dialog; without an\n * `aria-labelledby` of the caller's own, the dialog has no accessible name.\n */\nconst useUnnamedDialogWarning = (unnamed: boolean): void => {\n useEffect(() => {\n const development = typeof process !== 'undefined' && process.env?.NODE_ENV !== 'production';\n if (unnamed && development) {\n // eslint-disable-next-line no-console -- a config warning has no other channel.\n console.warn(\n 'StackedModal: `hideHeader` without `aria-labelledby` leaves the dialog unnamed. ' +\n \"Point `aria-labelledby` at your content header's title.\",\n );\n }\n }, [unnamed]);\n};\n\nconst StackedModalPanel: FC<ResolvedProps> = (props) => {\n const {\n open, onClose, glass, navigationTitle, backLabel, hideClose, hideHeader, children, actions, modalId,\n closeOnClickOutside, closeOnEsc, loading, loadingText, fullScreen, maxWidth, size, panelWidth, disableBackdrop,\n disableFocusTrap, keepMounted, rtl, dataTestId,\n 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, ...otherProps\n } = props;\n\n const {\n dialogRef, modalRole, isAnimating, showSkeleton, zIndex, isMobile, canGoBack, isRoot,\n handleBack, handleClose,\n } = usePanelChrome({\n open, modalId, loading, closeOnEsc, closeOnClickOutside, disableFocusTrap, onClose,\n });\n\n // Don't render if in background (performance optimization)\n if (modalRole === 'background' && !keepMounted) return null;\n\n const { content, modalActions, headerActions, hasMobileActions } = resolveModalContent(\n children,\n actions,\n isMobile,\n );\n const { titleId, descId } = modalAriaIds(modalId, ariaLabelledBy, ariaDescribedBy);\n useUnnamedDialogWarning(Boolean(hideHeader) && !ariaLabelledBy);\n\n return (\n <StyledDialog\n ref={dialogRef}\n open={Boolean(open)}\n onClose={handleClose}\n fullScreen={fullScreen ?? isMobile}\n modalRole={modalRole}\n isAnimating={isAnimating}\n glass={glass}\n rtl={rtl}\n customMaxWidth={maxWidth}\n panelSize={size}\n panelWidth={panelWidth}\n TransitionComponent={SlideTransition}\n maxWidth={maxWidth}\n disableEscapeKeyDown={!closeOnEsc}\n hideBackdrop={disableBackdrop}\n keepMounted={keepMounted}\n aria-labelledby={titleId}\n aria-describedby={descId}\n data-testid={dataTestId}\n sx={{ zIndex }}\n {...otherProps}\n >\n <ModalPanelContents\n backLabel={backLabel}\n showSkeleton={showSkeleton}\n loadingText={loadingText}\n titleId={titleId}\n descId={descId}\n navigationTitle={navigationTitle}\n hideClose={hideClose}\n hideHeader={Boolean(hideHeader) && isRoot}\n canGoBack={canGoBack}\n onBack={handleBack}\n onClose={onClose}\n headerActions={headerActions}\n content={content}\n modalActions={modalActions}\n hasMobileActions={hasMobileActions}\n rtl={rtl}\n dataTestId={dataTestId}\n />\n </StyledDialog>\n );\n};\n\nexport const StackedModal: FC<StackedModalProps> = (props) => {\n // A modal with no caller-supplied id still needs a STABLE one — it keys this\n // panel's entry in the stack, so a value that changed per render (as a\n // `Math.random()` default does) would re-register it on every pass.\n const fallbackId = useId();\n const resolved = withDefaults(props);\n return <StackedModalPanel {...resolved} modalId={resolved.modalId ?? fallbackId} />;\n};\n\n// Re-exported so `./StackedModal` stays the single public entry point for the\n// component and its stack primitives, as the barrel and existing imports expect.\nexport {\n ModalStackProvider,\n ModalStackProvider as StackedModalProvider,\n useModalStack,\n useModalStack as useStackedModal,\n} from './modal-stack';\nexport { StackedModalActions, StackedModalContent } from './StackedModal.parts';\n"],"mappings":"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","names":["SlideTransition"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/Stepper/Stepper.tsx"],"sourcesContent":["import CheckCircle from '@mui/icons-material/CheckCircle';\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { styled } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport type { Step, StepItemProps, StepperProps } from './Stepper.types';\nimport { neutralTones } from '../../../tokens/ink';\nimport { rem, sxRem } from '../../../tokens/relative';\nimport type { SizeValue } from '../../../tokens/scales';\n\n/**\n * The five house stops, drawn rather than collapsed.\n *\n * These were two-way ternaries on `sm`, which is what a two-value size prop\n * allows; with the full scale they have to be real values or the three new\n * stops would render identically to `md` and the prop would be a lie.\n */\nconst STEP_MIN_WIDTH: Record<SizeValue, number> = { xs: 44, sm: 56, md: 80, lg: 96, xl: 112 };\nconst STEP_ICON_SIZE: Record<SizeValue, number> = { xs: 14, sm: 18, md: 24, lg: 30, xl: 36 };\n\n\nconst StepperRoot = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'orientation',\n})<{ orientation: 'horizontal' | 'vertical'; component?: React.ElementType }>(({ orientation }) => ({\n display: 'flex',\n flexDirection: orientation === 'horizontal' ? 'row' : 'column',\n // Use flex-start to align all step circles at the same vertical position\n alignItems: 'flex-start',\n}));\n\nconst StepItem = styled(Box, {\n shouldForwardProp: (prop) => !['orientation', 'isLast'].includes(prop as string),\n})<{ orientation: 'horizontal' | 'vertical'; isLast: boolean }>(({ orientation, isLast }) => ({\n display: 'flex',\n // For horizontal: row layout so connector appears beside step content\n // For vertical: column layout so connector appears below step content\n flexDirection: orientation === 'horizontal' ? 'row' : 'column',\n // For horizontal: flex-start to keep circles aligned at top\n // For vertical: center to align connector with centered circle\n alignItems: orientation === 'horizontal' ? 'flex-start' : 'center',\n flex: orientation === 'horizontal' && !isLast ? 1 : 'none',\n position: 'relative',\n // For vertical: ensure consistent width for proper centering\n ...(orientation === 'vertical' && {\n width: '100%',\n }),\n}));\n\n/** Circle diameter per size. */\nconst CIRCLE_SIZE: Record<SizeValue, number> = { xs: 24, sm: 32, md: 48, lg: 60, xl: 72 };\n\nconst StepButton = styled(Button, {\n shouldForwardProp: (prop) =>\n !['isActive', 'isCompleted', 'clickable', 'stepSize'].includes(prop as string),\n})<{ isActive: boolean; isCompleted: boolean; clickable: boolean; stepSize: SizeValue }>(\n ({ theme, isActive, isCompleted, clickable, stepSize }) => ({\n minWidth: rem(theme, CIRCLE_SIZE[stepSize]),\n width: rem(theme, CIRCLE_SIZE[stepSize]),\n height: rem(theme, CIRCLE_SIZE[stepSize]),\n borderRadius: '50%',\n padding: 0,\n backgroundColor: isCompleted\n ? theme.palette.primary.main\n : isActive\n ? theme.palette.primary.main\n : neutralTones(theme).track,\n color: isCompleted || isActive ? theme.palette.primary.contrastText : theme.palette.text.primary,\n cursor: clickable ? 'pointer' : 'default',\n pointerEvents: clickable ? 'auto' : 'none',\n transition: theme.transitions.create(['background-color', 'transform'], {\n duration: theme.transitions.duration.short,\n }),\n '&:hover': clickable\n ? {\n backgroundColor: isCompleted\n ? theme.palette.primary.dark\n : isActive\n ? theme.palette.primary.dark\n : neutralTones(theme).subtle,\n transform: 'scale(1.05)',\n }\n : {},\n '&:disabled': {\n backgroundColor: neutralTones(theme).track,\n color: theme.palette.text.disabled,\n },\n }),\n);\n\nconst StepConnector = styled(Box, {\n shouldForwardProp: (prop) =>\n !['orientation', 'isCompleted', 'size'].includes(prop as string),\n})<{ orientation: 'horizontal' | 'vertical'; isCompleted: boolean; size: SizeValue }>(\n ({ theme, orientation, isCompleted, size }) => ({\n backgroundColor: isCompleted ? theme.palette.primary.main : neutralTones(theme).track,\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.short,\n }),\n ...(orientation === 'horizontal'\n ? {\n flex: 1,\n height: rem(theme, 2),\n // Vertically centered on the circle (circle/2 - 1 for the 2px line).\n marginTop: rem(theme, CIRCLE_SIZE[size] / 2 - 1),\n marginLeft: rem(theme, 8),\n marginRight: rem(theme, 8),\n minWidth: rem(theme, 24),\n }\n : {\n width: rem(theme, 2),\n height: rem(theme, 32),\n marginTop: rem(theme, 8),\n marginBottom: rem(theme, 8),\n // Use margin auto to center horizontally\n marginLeft: 'auto',\n marginRight: 'auto',\n }),\n }),\n);\n\nconst StepLabel = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'orientation',\n})<{ orientation: 'horizontal' | 'vertical' }>(({ theme, orientation }) => ({\n textAlign: 'center',\n marginTop: orientation === 'horizontal' ? rem(theme, 8) : 0,\n}));\n\ntype StepSize = SizeValue;\ntype LabelVariant = 'caption' | 'body2';\n\n/** Space-joined state classes for a step (active / completed / optional). */\nfunction stepClasses(isActive: boolean, isCompleted: boolean, optional?: boolean): string {\n return [\n isActive && 'stepper-step-active',\n isCompleted && 'stepper-step-completed',\n optional && 'stepper-step-optional',\n ]\n .filter(Boolean)\n .join(' ');\n}\n\n/** The circle content-column width per orientation/size. */\nfunction contentSx(orientation: 'horizontal' | 'vertical', size: StepSize) {\n return orientation === 'horizontal'\n ? { minWidth: sxRem(STEP_MIN_WIDTH[size]), maxWidth: sxRem(150), flex: '0 1 auto' }\n : { flexShrink: 0 };\n}\n\ninterface StepPartProps {\n step: Step;\n index: number;\n isActive: boolean;\n size: StepSize;\n labelVariant: LabelVariant;\n}\n\n/** The step circle: a check when completed, otherwise the 1-based index. */\nconst StepCircle: React.FC<\n StepPartProps & { isCompleted: boolean; isClickable: boolean; onClick: () => void }\n> = ({ step, index, isActive, isCompleted, isClickable, size, labelVariant, onClick }) => {\n const state = isCompleted ? ' (completed)' : isActive ? ' (current)' : '';\n return (\n <StepButton\n isActive={isActive}\n isCompleted={isCompleted}\n clickable={isClickable}\n stepSize={size}\n onClick={onClick}\n disabled={step.disabled}\n aria-current={isActive ? 'step' : undefined}\n aria-label={`Step ${index + 1}: ${step.label}${step.optional ? ' (optional)' : ''}${state}`}\n data-testid={`stepper-step-icon-${index}`}\n >\n {isCompleted ? (\n <CheckCircle sx={{ fontSize: sxRem(STEP_ICON_SIZE[size]) }} />\n ) : (\n <Typography variant={labelVariant} fontWeight=\"bold\">\n {index + 1}\n </Typography>\n )}\n </StepButton>\n );\n};\n\n/** The step label block: title, optional marker, and description. */\nconst StepLabelBlock: React.FC<StepPartProps & { orientation: 'horizontal' | 'vertical' }> = ({\n step,\n index,\n isActive,\n orientation,\n size,\n labelVariant,\n}) => (\n <StepLabel\n orientation={orientation}\n data-testid={`stepper-step-label-${index}`}\n sx={size === 'sm' && orientation === 'horizontal' ? { mt: sxRem(2) } : undefined}\n >\n <Typography\n variant={labelVariant}\n fontWeight={isActive ? 'bold' : 'normal'}\n color={isActive ? 'primary' : 'textPrimary'}\n >\n {step.label}\n {step.optional && (\n <Typography component=\"span\" variant=\"caption\" color=\"textSecondary\" sx={{ ml: 1 }}>\n (optional)\n </Typography>\n )}\n </Typography>\n {step.description && (\n <Typography variant=\"caption\" color=\"textSecondary\" display=\"block\">\n {step.description}\n </Typography>\n )}\n </StepLabel>\n);\n\nconst StepperItem: React.FC<StepItemProps> = ({\n step,\n index,\n isActive,\n isCompleted,\n isLast,\n orientation,\n size,\n variant,\n clickable,\n onStepClick,\n renderConnector,\n nextStep,\n}) => {\n const labelVariant: LabelVariant = size === 'sm' ? 'caption' : 'body2';\n const isClickable = Boolean(clickable) && !step.disabled && (variant === 'non-linear' || !isActive);\n const handleStepClick = () => {\n if (isClickable && onStepClick) onStepClick(step.id);\n };\n const connector =\n renderConnector && nextStep ? (\n renderConnector(step, nextStep, { completed: isCompleted, active: isActive })\n ) : (\n <StepConnector orientation={orientation} isCompleted={isCompleted} size={size} data-testid={`stepper-connector-${index}`} />\n );\n\n return (\n <StepItem\n orientation={orientation}\n isLast={isLast}\n role=\"listitem\"\n data-testid={`stepper-step-${index}`}\n className={stepClasses(isActive, isCompleted, step.optional)}\n >\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"center\"\n data-testid={`stepper-step-content-${index}`}\n sx={contentSx(orientation, size)}\n >\n <StepCircle\n step={step}\n index={index}\n isActive={isActive}\n isCompleted={isCompleted}\n isClickable={isClickable}\n size={size}\n labelVariant={labelVariant}\n onClick={handleStepClick}\n />\n <StepLabelBlock\n step={step}\n index={index}\n isActive={isActive}\n orientation={orientation}\n size={size}\n labelVariant={labelVariant}\n />\n </Box>\n {!isLast && connector}\n </StepItem>\n );\n};\n\nexport const Stepper: React.FC<StepperProps> = ({\n steps,\n activeId,\n completed = new Set(),\n orientation = 'horizontal',\n size = 'md',\n variant = 'linear',\n onStepChange,\n clickable,\n renderConnector,\n className,\n 'data-testid': dataTestId,\n}) => {\n // Determine clickable behavior\n const isClickable = clickable ?? variant === 'non-linear';\n\n return (\n <StepperRoot\n component=\"ol\"\n orientation={orientation}\n className={className}\n data-testid={dataTestId || 'stepper-container'}\n sx={{\n listStyle: 'none',\n padding: 0,\n margin: 0,\n }}\n >\n {steps.map((step, index) => {\n const isActive = step.id === activeId;\n const isCompleted = completed.has(step.id);\n const isLast = index === steps.length - 1;\n const nextStep = !isLast ? steps[index + 1] : undefined;\n\n return (\n <StepperItem\n key={step.id}\n step={step}\n index={index}\n isActive={isActive}\n isCompleted={isCompleted}\n isLast={isLast}\n orientation={orientation}\n size={size}\n variant={variant}\n clickable={isClickable}\n onStepClick={onStepChange}\n renderConnector={renderConnector}\n nextStep={nextStep}\n />\n );\n })}\n </StepperRoot>\n );\n};"],"mappings":";;;;;;;;;AAAA,OAAO,iBAAiB;AACxB,OAAO,SAAS;AAChB,OAAO,YAAY;AACnB,OAAO,gBAAgB;AACvB,SAAS,cAAc;AA4Kf,cAwBJ,YAxBI;AA7JR,IAAM,iBAA4C,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAC5F,IAAM,iBAA4C,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG;AAG3F,IAAM,cAAc,OAAO,KAAK;AAAA,EAC9B,mBAAmB,CAAC,SAAS,SAAS;AACxC,CAAC,EAA6E,CAAC,EAAE,YAAY,OAAO;AAAA,EAClG,SAAS;AAAA,EACT,eAAe,gBAAgB,eAAe,QAAQ;AAAA;AAAA,EAEtD,YAAY;AACd,EAAE;AAEF,IAAM,WAAW,OAAO,KAAK;AAAA,EAC3B,mBAAmB,CAAC,SAAS,CAAC,CAAC,eAAe,QAAQ,EAAE,SAAS,IAAc;AACjF,CAAC,EAA+D,CAAC,EAAE,aAAa,OAAO,OAAO;AAAA,EAC5F,SAAS;AAAA;AAAA;AAAA,EAGT,eAAe,gBAAgB,eAAe,QAAQ;AAAA;AAAA;AAAA,EAGtD,YAAY,gBAAgB,eAAe,eAAe;AAAA,EAC1D,MAAM,gBAAgB,gBAAgB,CAAC,SAAS,IAAI;AAAA,EACpD,UAAU;AAAA;AAAA,EAEV,GAAI,gBAAgB,cAAc;AAAA,IAChC,OAAO;AAAA,EACT;AACF,EAAE;AAGF,IAAM,cAAyC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG;AAExF,IAAM,aAAa,OAAO,QAAQ;AAAA,EAChC,mBAAmB,CAAC,SAClB,CAAC,CAAC,YAAY,eAAe,aAAa,UAAU,EAAE,SAAS,IAAc;AACjF,CAAC;AAAA,EACC,CAAC,EAAE,OAAO,UAAU,aAAa,WAAW,SAAS,OAAO;AAAA,IAC1D,UAAU,IAAI,OAAO,YAAY,QAAQ,CAAC;AAAA,IAC1C,OAAO,IAAI,OAAO,YAAY,QAAQ,CAAC;AAAA,IACvC,QAAQ,IAAI,OAAO,YAAY,QAAQ,CAAC;AAAA,IACxC,cAAc;AAAA,IACd,SAAS;AAAA,IACT,iBAAiB,cACb,MAAM,QAAQ,QAAQ,OACtB,WACA,MAAM,QAAQ,QAAQ,OACtB,aAAa,KAAK,EAAE;AAAA,IACxB,OAAO,eAAe,WAAW,MAAM,QAAQ,QAAQ,eAAe,MAAM,QAAQ,KAAK;AAAA,IACzF,QAAQ,YAAY,YAAY;AAAA,IAChC,eAAe,YAAY,SAAS;AAAA,IACpC,YAAY,MAAM,YAAY,OAAO,CAAC,oBAAoB,WAAW,GAAG;AAAA,MACtE,UAAU,MAAM,YAAY,SAAS;AAAA,IACvC,CAAC;AAAA,IACD,WAAW,YACP;AAAA,MACE,iBAAiB,cACb,MAAM,QAAQ,QAAQ,OACtB,WACA,MAAM,QAAQ,QAAQ,OACtB,aAAa,KAAK,EAAE;AAAA,MACxB,WAAW;AAAA,IACb,IACA,CAAC;AAAA,IACL,cAAc;AAAA,MACZ,iBAAiB,aAAa,KAAK,EAAE;AAAA,MACrC,OAAO,MAAM,QAAQ,KAAK;AAAA,IAC5B;AAAA,EACF;AACF;AAEA,IAAM,gBAAgB,OAAO,KAAK;AAAA,EAChC,mBAAmB,CAAC,SAClB,CAAC,CAAC,eAAe,eAAe,MAAM,EAAE,SAAS,IAAc;AACnE,CAAC;AAAA,EACC,CAAC,EAAE,OAAO,aAAa,aAAa,KAAK,OAAO;AAAA,IAC9C,iBAAiB,cAAc,MAAM,QAAQ,QAAQ,OAAO,aAAa,KAAK,EAAE;AAAA,IAChF,YAAY,MAAM,YAAY,OAAO,oBAAoB;AAAA,MACvD,UAAU,MAAM,YAAY,SAAS;AAAA,IACvC,CAAC;AAAA,IACD,GAAI,gBAAgB,eAChB;AAAA,MACE,MAAM;AAAA,MACN,QAAQ,IAAI,OAAO,CAAC;AAAA;AAAA,MAEpB,WAAW,IAAI,OAAO,YAAY,IAAI,IAAI,IAAI,CAAC;AAAA,MAC/C,YAAY,IAAI,OAAO,CAAC;AAAA,MACxB,aAAa,IAAI,OAAO,CAAC;AAAA,MACzB,UAAU,IAAI,OAAO,EAAE;AAAA,IACzB,IACA;AAAA,MACE,OAAO,IAAI,OAAO,CAAC;AAAA,MACnB,QAAQ,IAAI,OAAO,EAAE;AAAA,MACrB,WAAW,IAAI,OAAO,CAAC;AAAA,MACvB,cAAc,IAAI,OAAO,CAAC;AAAA;AAAA,MAE1B,YAAY;AAAA,MACZ,aAAa;AAAA,IACf;AAAA,EACN;AACF;AAEA,IAAM,YAAY,OAAO,KAAK;AAAA,EAC5B,mBAAmB,CAAC,SAAS,SAAS;AACxC,CAAC,EAA8C,CAAC,EAAE,OAAO,YAAY,OAAO;AAAA,EAC1E,WAAW;AAAA,EACX,WAAW,gBAAgB,eAAe,IAAI,OAAO,CAAC,IAAI;AAC5D,EAAE;AAMF,SAAS,YAAY,UAAmB,aAAsB,UAA4B;AACxF,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY;AAAA,EACd,EACG,OAAO,OAAO,EACd,KAAK,GAAG;AACb;AAGA,SAAS,UAAU,aAAwC,MAAgB;AACzE,SAAO,gBAAgB,eACnB,EAAE,UAAU,MAAM,eAAe,IAAI,CAAC,GAAG,UAAU,MAAM,GAAG,GAAG,MAAM,WAAW,IAChF,EAAE,YAAY,EAAE;AACtB;AAWA,IAAM,aAEF,CAAC,EAAE,MAAM,OAAO,UAAU,aAAa,aAAa,MAAM,cAAc,QAAQ,MAAM;AACxF,QAAM,QAAQ,cAAc,iBAAiB,WAAW,eAAe;AACvE,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX,UAAU;AAAA,MACV;AAAA,MACA,UAAU,KAAK;AAAA,MACf,gBAAc,WAAW,SAAS;AAAA,MAClC,cAAY,QAAQ,QAAQ,CAAC,KAAK,KAAK,KAAK,GAAG,KAAK,WAAW,gBAAgB,EAAE,GAAG,KAAK;AAAA,MACzF,eAAa,qBAAqB,KAAK;AAAA,MAEtC,wBACC,oBAAC,eAAY,IAAI,EAAE,UAAU,MAAM,eAAe,IAAI,CAAC,EAAE,GAAG,IAE5D,oBAAC,cAAW,SAAS,cAAc,YAAW,QAC3C,kBAAQ,GACX;AAAA;AAAA,EAEJ;AAEJ;AAGA,IAAM,iBAAuF,CAAC;AAAA,EAC5F;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MACE;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,eAAa,sBAAsB,KAAK;AAAA,IACxC,IAAI,SAAS,QAAQ,gBAAgB,eAAe,EAAE,IAAI,MAAM,CAAC,EAAE,IAAI;AAAA,IAEvE;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,SAAS;AAAA,UACT,YAAY,WAAW,SAAS;AAAA,UAChC,OAAO,WAAW,YAAY;AAAA,UAE7B;AAAA,iBAAK;AAAA,YACL,KAAK,YACJ,oBAAC,cAAW,WAAU,QAAO,SAAQ,WAAU,OAAM,iBAAgB,IAAI,EAAE,IAAI,EAAE,GAAG,wBAEpF;AAAA;AAAA;AAAA,MAEJ;AAAA,MACC,KAAK,eACJ,oBAAC,cAAW,SAAQ,WAAU,OAAM,iBAAgB,SAAQ,SACzD,eAAK,aACR;AAAA;AAAA;AAEJ;AAGF,IAAM,cAAuC,CAAC;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,eAA6B,SAAS,OAAO,YAAY;AAC/D,QAAM,cAAc,QAAQ,SAAS,KAAK,CAAC,KAAK,aAAa,YAAY,gBAAgB,CAAC;AAC1F,QAAM,kBAAkB,MAAM;AAC5B,QAAI,eAAe,YAAa,aAAY,KAAK,EAAE;AAAA,EACrD;AACA,QAAM,YACJ,mBAAmB,WACjB,gBAAgB,MAAM,UAAU,EAAE,WAAW,aAAa,QAAQ,SAAS,CAAC,IAE5E,oBAAC,iBAAc,aAA0B,aAA0B,MAAY,eAAa,qBAAqB,KAAK,IAAI;AAG9H,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,MAAK;AAAA,MACL,eAAa,gBAAgB,KAAK;AAAA,MAClC,WAAW,YAAY,UAAU,aAAa,KAAK,QAAQ;AAAA,MAE3D;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,eAAc;AAAA,YACd,YAAW;AAAA,YACX,eAAa,wBAAwB,KAAK;AAAA,YAC1C,IAAI,UAAU,aAAa,IAAI;AAAA,YAE/B;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACC;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA,SAAS;AAAA;AAAA,cACX;AAAA,cACA;AAAA,gBAAC;AAAA;AAAA,kBACC;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA;AAAA,cACF;AAAA;AAAA;AAAA,QACF;AAAA,QACC,CAAC,UAAU;AAAA;AAAA;AAAA,EACd;AAEJ;AAEO,IAAM,UAAkC,CAAC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA,YAAY,oBAAI,IAAI;AAAA,EACpB,cAAc;AAAA,EACd,OAAO;AAAA,EACP,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AACjB,MAAM;AAEJ,QAAM,cAAc,aAAa,YAAY;AAE7C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,eAAa,cAAc;AAAA,MAC3B,IAAI;AAAA,QACF,WAAW;AAAA,QACX,SAAS;AAAA,QACT,QAAQ;AAAA,MACV;AAAA,MAEC,gBAAM,IAAI,CAAC,MAAM,UAAU;AAC1B,cAAM,WAAW,KAAK,OAAO;AAC7B,cAAM,cAAc,UAAU,IAAI,KAAK,EAAE;AACzC,cAAM,SAAS,UAAU,MAAM,SAAS;AACxC,cAAM,WAAW,CAAC,SAAS,MAAM,QAAQ,CAAC,IAAI;AAE9C,eACE;AAAA,UAAC;AAAA;AAAA,YAEC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,WAAW;AAAA,YACX,aAAa;AAAA,YACb;AAAA,YACA;AAAA;AAAA,UAZK,KAAK;AAAA,QAaZ;AAAA,MAEJ,CAAC;AAAA;AAAA,EACH;AAEJ;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/layout/ContentToolbar/ViewSelector.tsx"],"sourcesContent":["'use client';\n\nimport CheckIcon from '@mui/icons-material/Check';\nimport ChevronDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport GridIcon from '@mui/icons-material/GridViewOutlined';\nimport ListIcon from '@mui/icons-material/FormatListBulletedRounded';\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport ListItemIcon from '@mui/material/ListItemIcon/index.js';\nimport ListItemText from '@mui/material/ListItemText/index.js';\nimport Menu from '@mui/material/Menu/index.js';\nimport MenuItem from '@mui/material/MenuItem/index.js';\nimport Slider from '@mui/material/Slider/index.js';\n// `SvgIconComponent` is declared inline in @mui/icons-material's barrel and has\n// no module of its own, so the deep-import equivalent is its own definition:\n// `type SvgIconComponent = typeof SvgIcon`.\nimport type SvgIcon from '@mui/material/SvgIcon/index.js';\nimport React, { useState } from 'react';\n\nimport type { ViewMode, ViewSelectorProps } from './ContentToolbar.types';\nimport { fieldRadiusPx } from '../../../tokens/field-radius';\nimport { fieldHeight } from '../../../tokens/field-height';\nimport { sxRem } from '../../../tokens/relative';\n\nconst VIEW_OPTIONS: { value: ViewMode; label: string; icon: typeof SvgIcon }[] = [\n { value: 'grid', label: 'Grid View', icon: GridIcon },\n { value: 'list', label: 'List View', icon: ListIcon },\n];\n\n/**\n * View selector: a grid/list dropdown plus a card-size zoom slider (grid mode\n * only). Faithful MUI port of the reference toolbar's view control.\n */\nexport function ViewSelector({\n viewMode,\n onViewModeChange,\n zoom,\n onZoomChange,\n cardSizeLabel,\n}: ViewSelectorProps): React.JSX.Element {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n const activeOption = VIEW_OPTIONS.find((option) => option.value === viewMode) ?? VIEW_OPTIONS[0]!;\n const ActiveIcon = activeOption.icon;\n\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1.5 }}>\n {viewMode === 'grid' && (\n <Box sx={{ width: sxRem(96), display: 'flex', alignItems: 'center' }}>\n <Slider\n data-testid=\"resize-card-slider\"\n aria-label={cardSizeLabel}\n value={zoom[0] ?? 0}\n onChange={(_, value) => onZoomChange([value as number])}\n min={0}\n max={100}\n step={1}\n size=\"small\"\n />\n </Box>\n )}\n\n <Button\n data-testid=\"view-mode-btn\"\n variant=\"text\"\n size=\"small\"\n color=\"inherit\"\n aria-label={activeOption.label}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n onClick={(event) => setAnchorEl(event.currentTarget)}\n sx={{ minWidth: 0, height: fieldHeight, px: 1, gap: 1, borderRadius: fieldRadiusPx, color: 'text.secondary' }}\n >\n <ActiveIcon sx={{ fontSize: sxRem(16) }} />\n <ChevronDownIcon sx={{ fontSize: sxRem(14) }} />\n </Button>\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={() => setAnchorEl(null)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n slotProps={{ paper: { sx: { minWidth: sxRem(180) } } }}\n >\n {VIEW_OPTIONS.map((option) => {\n const OptionIcon = option.icon;\n const selected = viewMode === option.value;\n return (\n <MenuItem\n key={option.value}\n data-testid={`view-mode-${option.value}`}\n onClick={() => {\n onViewModeChange(option.value);\n setAnchorEl(null);\n }}\n sx={{ gap: 1.5 }}\n >\n <ListItemText>{option.label}</ListItemText>\n <OptionIcon sx={{ fontSize: sxRem(16), color: 'text.secondary' }} />\n <ListItemIcon sx={{ minWidth: 'auto !important' }}>\n <CheckIcon sx={{ fontSize: sxRem(16), color: selected ? 'text.primary' : 'transparent' }} />\n </ListItemIcon>\n </MenuItem>\n );\n })}\n </Menu>\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/Timeline/TimelineRow.tsx"],"sourcesContent":["import DotIcon from '@mui/icons-material/Circle';\nimport ExpandIcon from '@mui/icons-material/ExpandMore';\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport Card from '@mui/material/Card/index.js';\nimport CardContent from '@mui/material/CardContent/index.js';\nimport Chip from '@mui/material/Chip/index.js';\nimport Collapse from '@mui/material/Collapse/index.js';\nimport Fade from '@mui/material/Fade/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Stack from '@mui/material/Stack/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, keyframes, styled, type Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport type { TimelineItem, TimelineProps } from './Timeline.types';\nimport { onMedia, uiInk } from '../../../tokens/ink';\nimport { rem, rems } from '../../../tokens/relative';\n\nconst slideInAnimation = (theme: Theme) =>\n keyframes`from { opacity: 0; transform: translateX(${rem(theme, -20)}); } to { opacity: 1; transform: translateX(0); }`;\nconst pulseAnimation = keyframes`0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.1); opacity: 0.8; }`;\n\nconst TimelineItemContainer = styled(Box, {\n shouldForwardProp: (prop) => !['animated', 'alternating', 'index'].includes(prop as string),\n})<{\n animated: boolean;\n alternating: boolean;\n index: number;\n orientation: 'vertical' | 'horizontal';\n}>(({ theme, animated, alternating, index, orientation }) => ({\n display: 'flex',\n gap: theme.spacing(2),\n position: 'relative',\n ...(animated && {\n animation: `${slideInAnimation(theme)} 0.5s ease ${index * 0.1}s both`,\n }),\n ...(orientation === 'vertical' &&\n alternating && {\n flexDirection: index % 2 === 0 ? 'row' : 'row-reverse',\n textAlign: index % 2 === 0 ? 'left' : 'right',\n }),\n ...(orientation === 'horizontal' && {\n flexDirection: 'column',\n alignItems: 'center',\n minWidth: rem(theme, 280),\n }),\n}));\n\nconst TimelineConnector = styled(Box, {\n shouldForwardProp: (prop) => !['isLast'].includes(prop as string),\n})<{\n orientation: 'vertical' | 'horizontal';\n isLast: boolean;\n}>(({ theme, orientation, isLast }) => ({\n position: 'absolute',\n background: `linear-gradient(180deg, ${theme.palette.primary.main} 0%, ${alpha(theme.palette.primary.main, 0.3)} 100%)`,\n ...(orientation === 'vertical'\n ? {\n width: rem(theme, 2),\n height: isLast ? 0 : `calc(100% + ${rem(theme, 16)})`,\n left: rem(theme, 19),\n top: rem(theme, 40),\n }\n : {\n height: rem(theme, 2),\n width: isLast ? 0 : rem(theme, 240),\n top: rem(theme, 19),\n left: rem(theme, 40),\n }),\n}));\n\nconst TimelineDot = styled(Box, {\n shouldForwardProp: (prop) => !['dotColor', 'hasIcon', 'animated'].includes(prop as string),\n})<{ dotColor?: string; hasIcon: boolean; animated: boolean }>(({ theme, dotColor, hasIcon, animated }) => ({\n width: rem(theme, 40),\n height: rem(theme, 40),\n borderRadius: '50%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: dotColor\n ? `linear-gradient(135deg, ${dotColor} 0%, ${alpha(dotColor, 0.8)} 100%)`\n : `linear-gradient(135deg, ${theme.palette.primary.main} 0%, ${theme.palette.primary.light} 100%)`,\n boxShadow: `${rems(theme, 0, 4, 12)} ${alpha(dotColor || theme.palette.primary.main, 0.3)}`,\n border: `${rem(theme, 2)} solid ${theme.palette.background.paper}`,\n zIndex: 1,\n flexShrink: 0,\n ...(animated && {\n animation: `${pulseAnimation} 2s ease infinite`,\n }),\n '& svg': {\n fontSize: rem(theme, hasIcon ? 19.2 : 12.8),\n color: theme.palette.background.paper,\n },\n}));\n\nconst TimelineCard = styled(Card, {\n shouldForwardProp: (prop) => !['timelineVariant', 'isClickable'].includes(prop as string),\n})<{ timelineVariant: 'default' | 'compact' | 'detailed'; isClickable: boolean }>(\n ({ theme, timelineVariant, isClickable }) => ({\n flex: 1,\n background: `linear-gradient(135deg, ${alpha(theme.palette.background.paper, 0.9)} 0%, ${alpha(theme.palette.background.paper, 0.8)} 100%)`,\n backdropFilter: `blur(${rem(theme, 10)})`,\n WebkitBackdropFilter: `blur(${rem(theme, 10)})`,\n border: `1px solid ${alpha(theme.palette.divider, 0.18)}`,\n transition: theme.transitions.create(['transform', 'box-shadow']),\n ...(isClickable && {\n cursor: 'pointer',\n '&:hover': {\n transform: `translateY(${rem(theme, -2)})`,\n boxShadow: theme.shadows[8],\n },\n }),\n ...(timelineVariant === 'compact' && {\n padding: theme.spacing(1.5),\n '& .MuiCardContent-root': {\n padding: 0,\n '&:last-child': {\n paddingBottom: 0,\n },\n },\n }),\n }),\n);\n\nconst TimelineTimestamp = styled(Typography)(({ theme }) => ({\n color: theme.palette.text.secondary,\n fontSize: rem(theme, 12),\n fontWeight: 500,\n letterSpacing: rem(theme, 0.5),\n textTransform: 'uppercase',\n}));\n\nconst MetadataChip = styled(Chip)(({ theme }) => ({\n height: rem(theme, 24),\n fontSize: rem(theme, 12),\n background: alpha(theme.palette.primary.main, 0.08),\n border: `1px solid ${alpha(theme.palette.primary.main, 0.2)}`,\n}));\n\n// Description, metadata chips and the action button, revealed on expand — or\n// always, in the detailed variant.\nconst TimelineDetails: React.FC<{\n item: TimelineItem;\n isExpanded: boolean;\n variant: NonNullable<TimelineProps['variant']>;\n}> = ({ item, isExpanded, variant }) => {\n const open = isExpanded || variant === 'detailed';\n\n return (\n <Collapse in={open}>\n <Fade in={open}>\n <Stack spacing={1.5} sx={{ mt: 1 }}>\n {item.description && (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {item.description}\n </Typography>\n )}\n\n {item.metadata && (\n <Box sx={{ display: 'flex', flexWrap: 'wrap', gap: 1 }}>\n {Object.entries(item.metadata).map(([key, value]) => (\n <MetadataChip key={key} label={`${key}: ${value}`} size=\"small\" />\n ))}\n </Box>\n )}\n\n {item.action && (\n <Box>\n <Button\n size=\"small\"\n variant=\"contained\"\n onClick={(e) => {\n e.stopPropagation();\n item.action!.onClick();\n }}\n sx={(theme) => ({\n background: `linear-gradient(135deg, ${uiInk(theme).celebration.violet[0]} 0%, ${uiInk(theme).celebration.violet[1]} 100%)`,\n color: onMedia(theme),\n })}\n >\n {item.action.label}\n </Button>\n </Box>\n )}\n </Stack>\n </Fade>\n </Collapse>\n );\n};\n\n// Timestamp, title and the expand toggle.\nconst TimelineCardHeader: React.FC<{\n item: TimelineItem;\n variant: NonNullable<TimelineProps['variant']>;\n isExpanded: boolean;\n onExpandClick: (itemId: string, event: React.MouseEvent) => void;\n}> = ({ item, variant, isExpanded, onExpandClick }) => (\n <Box\n sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start' }}\n >\n <Box sx={{ flex: 1 }}>\n <TimelineTimestamp data-testid=\"timeline-timestamp\">\n {item.timestamp}\n </TimelineTimestamp>\n <Typography\n variant={variant === 'compact' ? 'body2' : 'h6'}\n fontWeight={variant === 'compact' ? 500 : 600}\n sx={{ mt: 0.5 }}\n >\n {item.title}\n </Typography>\n </Box>\n {item.description && variant !== 'compact' && (\n <IconButton\n size=\"small\"\n onClick={(e) => onExpandClick(item.id, e)}\n aria-label={isExpanded ? 'Collapse item details' : 'Expand item details'}\n sx={{\n transform: isExpanded ? 'rotate(180deg)' : 'rotate(0deg)',\n transition: 'transform 0.3s ease',\n }}\n >\n <ExpandIcon />\n </IconButton>\n )}\n </Box>\n);\n\n// The card beside the rail: timestamp, title, expand toggle and the collapsible\n// detail body.\nconst TimelineRowCard: React.FC<{\n item: TimelineItem;\n variant: NonNullable<TimelineProps['variant']>;\n isClickable: boolean;\n isExpanded: boolean;\n onItemClick?: (item: TimelineItem) => void;\n onExpandClick: (itemId: string, event: React.MouseEvent) => void;\n}> = ({ item, variant, isClickable, isExpanded, onItemClick, onExpandClick }) => (\n <TimelineCard\n timelineVariant={variant}\n isClickable={isClickable}\n onClick={isClickable ? () => onItemClick?.(item) : undefined}\n role=\"article\"\n aria-label={`Timeline item: ${item.title}`}\n data-testid=\"timeline-card\"\n >\n <CardContent>\n <Stack spacing={1}>\n <TimelineCardHeader\n item={item}\n variant={variant}\n isExpanded={isExpanded}\n onExpandClick={onExpandClick}\n />\n\n {variant === 'compact' && item.description && (\n <Typography variant=\"caption\" color=\"text.secondary\">\n {item.description}\n </Typography>\n )}\n\n {variant !== 'compact' && (\n <TimelineDetails item={item} isExpanded={isExpanded} variant={variant} />\n )}\n </Stack>\n </CardContent>\n </TimelineCard>\n);\n\n// One entry: the dot and connector on the rail, and the card beside it.\nexport const TimelineRow: React.FC<{\n item: TimelineItem;\n index: number;\n isLast: boolean;\n variant: NonNullable<TimelineProps['variant']>;\n orientation: 'vertical' | 'horizontal';\n showConnector: boolean;\n animated: boolean;\n alternating: boolean;\n isExpanded: boolean;\n onItemClick?: (item: TimelineItem) => void;\n onExpandClick: (itemId: string, event: React.MouseEvent) => void;\n}> = ({\n item,\n index,\n isLast,\n variant,\n orientation,\n showConnector,\n animated,\n alternating,\n isExpanded,\n onItemClick,\n onExpandClick,\n}) => {\n\n \n // Determine if item should be clickable:\n // - Has onItemClick callback, OR\n // - Has description and variant is not compact (so it can be expanded)\n const hasExpandableContent = item.description && variant !== 'compact';\n const isClickable = !!onItemClick || !!hasExpandableContent;\n\n return (\n <TimelineItemContainer\n key={item.id}\n animated={animated}\n alternating={alternating && orientation === 'vertical'}\n index={index}\n orientation={orientation}\n data-testid=\"timeline-item-container\"\n >\n <Box sx={{ position: 'relative' }}>\n <TimelineDot\n dotColor={item.color}\n hasIcon={!!item.icon}\n animated={animated}\n data-testid=\"timeline-dot\"\n >\n {item.icon ? (\n <Box data-testid=\"item-icon\">{item.icon}</Box>\n ) : (\n <DotIcon data-testid=\"item-icon-default\" />\n )}\n </TimelineDot>\n {showConnector && !isLast && (\n <TimelineConnector\n orientation={orientation}\n isLast={isLast}\n data-testid=\"timeline-connector\"\n />\n )}\n </Box>\n\n <TimelineRowCard\n item={item}\n variant={variant}\n isClickable={isClickable}\n isExpanded={isExpanded}\n onItemClick={onItemClick}\n onExpandClick={onExpandClick}\n />\n </TimelineItemContainer>\n );\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/pt-BR.feedback.ts"],"sourcesContent":["/**\n * The pt-BR pack for the feedback family. Split out of `pt-BR.ts`, which is a\n * barrel over this folder — see that file for why.\n */\nimport type {\n ChromeCopy,\n NotificationUnblockCopy,\n TutorialCopy,\n} from './copy';\n\nexport const PT_BR_TUTORIAL_COPY: TutorialCopy = {\n skip: \"Pular\",\n previous: \"Anterior\",\n next: \"Próximo\",\n restart: \"Recomeçar\",\n complete: \"Concluir\",\n finish: \"Finalizar\",\n requiresAction: \"Conclua a ação obrigatória primeiro\",\n};\n\nexport const PT_BR_CHROME_COPY: ChromeCopy = {\n dismissToast: \"Fechar o aviso\",\n goBack: \"Voltar\",\n closePanel: \"Fechar\",\n closeTab: \"Fechar a aba\",\n scrollRegion: \"Conteúdo rolável\",\n scrollToTop: \"Voltar ao topo\",\n share: \"Compartilhar\",\n};\n\nconst PT_BR_CHROMIUM_DESKTOP = [\n \"Clique no ícone à esquerda do endereço do site.\",\n \"Abra \\\"Configurações do site\\\".\",\n \"Em \\\"Notificações\\\", escolha \\\"Permitir\\\".\",\n \"Volte a esta página e recarregue.\",\n] as const;\n\nconst PT_BR_CHROMIUM_ANDROID = [\n \"Toque no ícone à esquerda do endereço do site.\",\n \"Toque em \\\"Permissões\\\".\",\n \"Toque em \\\"Notificações\\\" e escolha \\\"Permitir\\\".\",\n \"Volte a esta página e recarregue.\",\n] as const;\n\nexport const PT_BR_NOTIFICATION_UNBLOCK_COPY: NotificationUnblockCopy = {\n ios: [\n \"Abra os Ajustes do iPhone.\",\n \"Toque em \\\"Notificações\\\".\",\n \"Encontre este app na lista e ative \\\"Permitir Notificações\\\".\",\n ],\n chrome: { desktop: PT_BR_CHROMIUM_DESKTOP, android: PT_BR_CHROMIUM_ANDROID },\n edge: {\n desktop: [\n \"Clique no cadeado à esquerda do endereço do site.\",\n \"Abra \\\"Permissões para este site\\\".\",\n \"Em \\\"Notificações\\\", escolha \\\"Permitir\\\".\",\n \"Volte a esta página e recarregue.\",\n ],\n android: PT_BR_CHROMIUM_ANDROID,\n },\n firefox: {\n desktop: [\n \"Clique no ícone de permissões à esquerda do endereço do site.\",\n \"Ao lado de \\\"Enviar notificações\\\", clique no X para tirar o bloqueio.\",\n \"Recarregue a página e ative as notificações de novo.\",\n ],\n android: [\n \"Abra o menu do navegador e toque em \\\"Configurações\\\".\",\n \"Toque em \\\"Permissões de sites\\\" e depois em \\\"Notificações\\\".\",\n \"Encontre este site e escolha \\\"Permitir\\\".\",\n \"Volte a esta página e recarregue.\",\n ],\n },\n opera: { desktop: PT_BR_CHROMIUM_DESKTOP, android: PT_BR_CHROMIUM_ANDROID },\n safari: {\n desktop: [\n \"No menu Safari, abra \\\"Ajustes\\\".\",\n \"Vá na aba \\\"Sites\\\" e, na lateral, em \\\"Notificações\\\".\",\n \"Encontre este site e escolha \\\"Permitir\\\".\",\n \"Volte a esta página e recarregue.\",\n ],\n },\n samsung: {\n android: [\n \"Abra o menu do navegador e toque em \\\"Configurações\\\".\",\n \"Toque em \\\"Sites e downloads\\\" e depois em \\\"Notificações\\\".\",\n \"Encontre este site e permita as notificações.\",\n \"Volte a esta página e recarregue.\",\n ],\n },\n other: [\n \"Abra as configurações do navegador.\",\n \"Procure as permissões dos sites e depois \\\"Notificações\\\".\",\n \"Permita as notificações para este site.\",\n \"Volte a esta página e recarregue.\",\n ],\n};\n"],"mappings":";AAUO,IAAM,sBAAoC;AAAA,EAC/C,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,gBAAgB;AAClB;AAEO,IAAM,oBAAgC;AAAA,EAC3C,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,cAAc;AAAA,EACd,aAAa;AAAA,EACb,OAAO;AACT;AAEA,IAAM,yBAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,yBAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,kCAA2D;AAAA,EACtE,KAAK;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,QAAQ,EAAE,SAAS,wBAAwB,SAAS,uBAAuB;AAAA,EAC3E,MAAM;AAAA,IACJ,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,SAAS;AAAA,EACX;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO,EAAE,SAAS,wBAAwB,SAAS,uBAAuB;AAAA,EAC1E,QAAQ;AAAA,IACN,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
|