@12-apps/ui 6.30.1 → 6.30.3
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/NATIVE.md +1 -1
- package/components-catalog.md +43 -5
- package/dist/_internal/components/data-display/Alert/Alert.js +4 -4
- package/dist/_internal/components/data-display/Alert/Alert.metrics.js +2 -2
- package/dist/_internal/components/data-display/Alert/Alert.styles.js +3 -3
- package/dist/_internal/components/data-display/Avatar/Avatar.js +5 -5
- package/dist/_internal/components/data-display/Avatar/Avatar.view.js +3 -3
- package/dist/_internal/components/data-display/Badge/Badge.animations.js +2 -2
- package/dist/_internal/components/data-display/Badge/Badge.js +6 -6
- package/dist/_internal/components/data-display/Badge/Badge.metrics.js +2 -2
- package/dist/_internal/components/data-display/Badge/Badge.styles.js +3 -3
- package/dist/_internal/components/data-display/Badge/Badge.variants.js +2 -2
- package/dist/_internal/components/data-display/Badge/BadgeContent.js +4 -4
- package/dist/_internal/components/data-display/Banner/Banner.js +2 -2
- package/dist/_internal/components/data-display/Banner/Banner.styles.js +2 -2
- package/dist/_internal/components/data-display/CardKit/CardKebab.js +6 -6
- package/dist/_internal/components/data-display/CardKit/card-actions-context.js +5 -5
- package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +11 -11
- package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +7 -7
- package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +2 -2
- package/dist/_internal/components/data-display/Carousel/Carousel.js +5 -5
- package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +2 -2
- package/dist/_internal/components/data-display/Carousel/Carousel.styles.js +2 -2
- package/dist/_internal/components/data-display/Chart/Chart.js +6 -6
- package/dist/_internal/components/data-display/Chart/SpecChart.js +9 -9
- package/dist/_internal/components/data-display/Chart/chart-context.js +4 -4
- package/dist/_internal/components/data-display/Chart/chart-internals.js +2 -2
- package/dist/_internal/components/data-display/Chart/chart-renderers.js +5 -5
- package/dist/_internal/components/data-display/DataViews/DataViewsBoard.js +5 -5
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +52 -52
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +68 -68
- package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +8 -8
- package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +10 -10
- package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +13 -13
- package/dist/_internal/components/data-display/DataViews/base-card.js +7 -7
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +10 -10
- package/dist/_internal/components/data-display/DataViews/base-list-card-gutters.js +4 -4
- package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +9 -9
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +14 -14
- package/dist/_internal/components/data-display/DataViews/card-surface.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +11 -11
- package/dist/_internal/components/data-display/DataViews/data-views-columns-tab.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-columns.js +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +13 -13
- package/dist/_internal/components/data-display/DataViews/data-views-display-tabs.js +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-empty.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-export.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +12 -12
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +14 -14
- package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +49 -49
- package/dist/_internal/components/data-display/DataViews/data-views-header-row.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +21 -21
- package/dist/_internal/components/data-display/DataViews/data-views-layout-context.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +29 -6
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +33 -10
- package/dist/_internal/components/data-display/DataViews/data-views-overflow.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +18 -18
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +20 -20
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +17 -17
- package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +8 -8
- package/dist/_internal/components/data-display/DataViews/list-card-rails.js +3 -3
- package/dist/_internal/components/data-display/DataViews/save-view-preview.js +5 -5
- package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +9 -9
- package/dist/_internal/components/data-display/DataViews/use-saved-views-controller.js +2 -2
- package/dist/_internal/components/data-display/DescriptionItem/DescriptionItem.js +5 -5
- package/dist/_internal/components/data-display/FleetMap/FleetBody.js +11 -11
- package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +10 -10
- package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +2 -2
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js +15 -15
- package/dist/_internal/components/data-display/HoverCard/HoverCard.js +2 -2
- package/dist/_internal/components/data-display/Lightbox/Lightbox.js +3 -3
- package/dist/_internal/components/data-display/MapPreview/MapDecorations.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapLayers.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapPreview.hooks.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapPreview.js +9 -9
- package/dist/_internal/components/data-display/MapPreview/MapTiles.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/StaticMapView.js +4 -4
- package/dist/_internal/components/data-display/MapPreview/useMapPreview.js +3 -3
- package/dist/_internal/components/data-display/Progress/Progress.js +5 -5
- package/dist/_internal/components/data-display/Progress/Progress.metrics.js +3 -3
- package/dist/_internal/components/data-display/Progress/Progress.styles.js +4 -4
- package/dist/_internal/components/data-display/Sheet/Sheet.body.js +2 -2
- package/dist/_internal/components/data-display/Sheet/Sheet.hooks.js +2 -2
- package/dist/_internal/components/data-display/Sheet/Sheet.js +5 -5
- package/dist/_internal/components/data-display/Sheet/Sheet.styles.js +2 -2
- package/dist/_internal/components/data-display/Table/Table.js +3 -3
- package/dist/_internal/components/data-display/index.js +57 -57
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +6 -6
- package/dist/_internal/components/feedback/Modal/Modal.js +2 -2
- package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +8 -8
- package/dist/_internal/components/feedback/index.js +14 -14
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +5 -5
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +3 -3
- package/dist/_internal/components/form/Autocomplete/Autocomplete.js +1 -1
- package/dist/_internal/components/form/Button/Button.js +5 -5
- package/dist/_internal/components/form/Button/Button.styles.js +3 -3
- package/dist/_internal/components/form/Calendar/Calendar.js +4 -4
- 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/CepField/CepField.js +2 -2
- package/dist/_internal/components/form/Checkbox/Checkbox.js +3 -3
- package/dist/_internal/components/form/CodeEditor/CodeEditor.js +1 -1
- package/dist/_internal/components/form/Command/Command.js +2 -2
- package/dist/_internal/components/form/Command/Command.styles.js +2 -2
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +7 -7
- package/dist/_internal/components/form/Input/Input.js +1 -1
- package/dist/_internal/components/form/InputOTP/InputOTP.js +2 -2
- package/dist/_internal/components/form/Label/Label.js +2 -2
- package/dist/_internal/components/form/Label/Label.styles.js +2 -2
- package/dist/_internal/components/form/Menubar/Menubar.item.js +2 -2
- package/dist/_internal/components/form/Menubar/Menubar.js +2 -2
- package/dist/_internal/components/form/Menubar/Menubar.styles.js +2 -2
- package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +2 -2
- package/dist/_internal/components/form/NumberField/NumberField.helpers.js +20 -0
- package/dist/_internal/components/form/NumberField/NumberField.js +21 -0
- package/dist/_internal/components/form/NumberField/NumberField.types.js +1 -0
- package/dist/_internal/components/form/NumberField/NumberField.types.js.map +1 -0
- package/dist/_internal/components/form/Switch/Switch.js +5 -5
- package/dist/_internal/components/form/Switch/Switch.parts.js +4 -4
- package/dist/_internal/components/form/Switch/Switch.styles.js +3 -3
- package/dist/_internal/components/form/UploadButton/UploadButton.js +2 -2
- package/dist/_internal/components/form/index.js +47 -41
- package/dist/_internal/components/form/total-form/Fields/CategoryField.js +10 -10
- package/dist/_internal/components/form/total-form/Fields/CepField.js +3 -3
- package/dist/_internal/components/form/total-form/Fields/TextField.js +2 -2
- package/dist/_internal/components/form/total-form/Fields/index.js +20 -20
- package/dist/_internal/components/form/total-form/SubmitButton.js +6 -6
- package/dist/_internal/components/index.js +194 -153
- package/dist/_internal/components/layout/Box/Box.js +5 -5
- package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +1 -1
- package/dist/_internal/components/layout/SettingCard/SettingCard.focus.js +8 -0
- package/dist/_internal/components/layout/SettingCard/SettingCard.focus.js.map +1 -0
- package/dist/_internal/components/layout/SettingCard/SettingCard.hooks.js +19 -0
- package/dist/_internal/components/layout/SettingCard/SettingCard.hooks.js.map +1 -0
- package/dist/_internal/components/layout/SettingCard/SettingCard.js +44 -0
- package/dist/_internal/components/layout/SettingCard/SettingCard.js.map +1 -0
- package/dist/_internal/components/layout/SettingCard/SettingCard.metrics.js +12 -0
- package/dist/_internal/components/layout/SettingCard/SettingCard.metrics.js.map +1 -0
- package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +49 -0
- package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js.map +1 -0
- package/dist/_internal/components/layout/SettingCard/SettingCard.rem.js +8 -0
- package/dist/_internal/components/layout/SettingCard/SettingCard.rem.js.map +1 -0
- package/dist/_internal/components/layout/SettingCard/SettingCard.styles.js +35 -0
- package/dist/_internal/components/layout/SettingCard/SettingCard.styles.js.map +1 -0
- package/dist/_internal/components/layout/SettingCard/SettingCard.types.js +1 -0
- package/dist/_internal/components/layout/SettingCard/SettingCard.types.js.map +1 -0
- package/dist/_internal/components/layout/SettingCard/SettingGrid.js +46 -0
- package/dist/_internal/components/layout/SettingCard/SettingGrid.js.map +1 -0
- package/dist/_internal/components/layout/SettingCard/SettingGroup.context.js +10 -0
- package/dist/_internal/components/layout/SettingCard/SettingGroup.context.js.map +1 -0
- package/dist/_internal/components/layout/SettingCard/SettingGroup.js +55 -0
- package/dist/_internal/components/layout/SettingCard/SettingGroup.js.map +1 -0
- package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +53 -0
- package/dist/_internal/components/layout/SettingCard/SettingSwitch.js.map +1 -0
- package/dist/_internal/components/layout/SettingCard/SettingToggle.js +55 -0
- package/dist/_internal/components/layout/SettingCard/SettingToggle.js.map +1 -0
- package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +3 -3
- package/dist/_internal/components/layout/Stack/Stack.js +6 -6
- package/dist/_internal/components/layout/index.js +74 -12
- package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +9 -9
- package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +2 -2
- package/dist/_internal/components/navigation/CommandPalette/CommandPalette.js +3 -3
- package/dist/_internal/components/navigation/Pagination/Pagination.js +2 -2
- package/dist/_internal/components/navigation/Tabs/Tabs.js +2 -2
- package/dist/_internal/components/navigation/index.js +26 -26
- package/dist/_internal/components/typography/Heading/Heading.js +5 -5
- package/dist/_internal/components/typography/Heading/Heading.metrics.js +3 -3
- package/dist/_internal/components/typography/Heading/Heading.styles.js +4 -4
- package/dist/_internal/components/typography/Paragraph/Paragraph.js +3 -3
- package/dist/_internal/components/typography/Text/Text.js +4 -4
- package/dist/_internal/components/typography/Text/Text.metrics.js +3 -3
- package/dist/_internal/components/typography/index.js +11 -11
- package/dist/_internal/components/utility/InstallPrompt/InstallPrompt.js +3 -3
- package/dist/_internal/components/utility/InstallPrompt/usePwaInstall.js +2 -2
- package/dist/_internal/components/utility/index.js +15 -15
- package/dist/_internal/en-US.data-display.js +2 -2
- package/dist/_internal/en-US.layout.js +5 -1
- package/dist/_internal/icons/Icon.js +6 -6
- package/dist/_internal/provider/UiProvider.js +4 -4
- package/dist/_internal/provider/mui-bridge.js +3 -3
- package/dist/_internal/provider/use-ui-theme.js +4 -4
- package/dist/_internal/pt-BR.data-display.js +2 -2
- package/dist/_internal/pt-BR.layout.js +5 -1
- package/dist/_internal/social-login-button/social-login-button.js +11 -11
- package/dist/_internal/tokens/theme.js +2 -2
- package/dist/_internal/user-avatar/user-avatar.js +11 -11
- package/dist/charts.js +15 -15
- package/dist/{chunk-TSEWUY4V.js → chunk-23LZNANO.js} +2 -2
- package/dist/{chunk-K2EHH7TC.js → chunk-2CJXYSOE.js} +7 -7
- package/dist/{chunk-HGJHZ5PE.js → chunk-2DHVWNTO.js} +7 -7
- package/dist/{chunk-K2JH7QPR.js → chunk-2F2HPQNQ.js} +3 -3
- package/dist/chunk-2GTORM5E.js +1 -0
- package/dist/chunk-2GTORM5E.js.map +1 -0
- package/dist/{chunk-C5YBXQTK.js → chunk-2QJKWH7Q.js} +3 -3
- package/dist/{chunk-W3FAKT3D.js → chunk-2SWQ6HIK.js} +4 -4
- package/dist/{chunk-IIUB4IOH.js → chunk-2XHIF3M3.js} +4 -4
- package/dist/chunk-33L26P4J.js +27 -0
- package/dist/chunk-33L26P4J.js.map +1 -0
- package/dist/{chunk-3PUOLOEP.js → chunk-37L6O266.js} +2 -2
- package/dist/{chunk-EVXFEXBS.js → chunk-3ELEPGCP.js} +2 -2
- package/dist/{chunk-RVGG5YJY.js → chunk-3HJLJFLA.js} +2 -2
- package/dist/chunk-3U7WKBMH.js +27 -0
- package/dist/chunk-3U7WKBMH.js.map +1 -0
- package/dist/{chunk-VESIQYBF.js → chunk-3ZTC2VEO.js} +9 -9
- package/dist/{chunk-46UPILLK.js → chunk-4ETQRBZC.js} +4 -4
- package/dist/chunk-4HDP2PZD.js +9 -0
- package/dist/chunk-4HDP2PZD.js.map +1 -0
- package/dist/{chunk-PFZAUMJA.js → chunk-4JGBWPG7.js} +2 -2
- package/dist/{chunk-7IKWIWWV.js → chunk-53LG7IT4.js} +11 -11
- package/dist/{chunk-S2GDYA6R.js → chunk-5GMHJ7Y5.js} +5 -5
- package/dist/{chunk-IABE56TG.js → chunk-5ZOJLYD2.js} +4 -4
- package/dist/{chunk-XXE6NTJB.js → chunk-5ZXVYKHU.js} +10 -5
- package/dist/chunk-5ZXVYKHU.js.map +1 -0
- package/dist/{chunk-4XVH6IWN.js → chunk-66KAONOC.js} +3 -3
- package/dist/{chunk-4MXFPDKL.js → chunk-6CAP4STN.js} +4 -4
- package/dist/{chunk-C5EFVSBN.js → chunk-6HJLYSBM.js} +2 -2
- package/dist/{chunk-CASZGBCA.js → chunk-6P3CRSAW.js} +5 -5
- package/dist/chunk-6PPF5WEN.js +30 -0
- package/dist/chunk-6PPF5WEN.js.map +1 -0
- package/dist/{chunk-Y5UCOBQN.js → chunk-6SK3MTYJ.js} +4 -4
- package/dist/{chunk-JQL4GG5L.js → chunk-6VMTF23F.js} +5 -5
- package/dist/{chunk-EPRA5QLB.js → chunk-6XUZDJZY.js} +2 -2
- package/dist/{chunk-B6IURHSZ.js → chunk-7DNQHMDO.js} +4 -4
- package/dist/{chunk-SLMA4UQS.js → chunk-A3TISECJ.js} +3 -3
- package/dist/{chunk-FVPN4YKW.js → chunk-ABSHD35E.js} +3 -3
- package/dist/chunk-AEMD6JHZ.js +1 -0
- package/dist/chunk-AEMD6JHZ.js.map +1 -0
- package/dist/{chunk-PQECNGDE.js → chunk-AGYGNNOM.js} +2 -2
- package/dist/{chunk-SUTNQG7E.js → chunk-ALU3BH37.js} +4 -4
- package/dist/{chunk-MGPA6KTM.js → chunk-AMFP64L3.js} +2 -2
- package/dist/{chunk-VEGT5PAD.js → chunk-BAISDZ3L.js} +21 -21
- package/dist/chunk-BOWS4U6W.js +1 -0
- package/dist/chunk-BOWS4U6W.js.map +1 -0
- package/dist/{chunk-CZJLWCEG.js → chunk-BPYPUEM5.js} +2 -2
- package/dist/{chunk-3MALHTZQ.js → chunk-C4J7PVVI.js} +3 -3
- package/dist/{chunk-7OZBOS75.js → chunk-CK2NTT4S.js} +6 -6
- package/dist/{chunk-Q5NAZ7TW.js → chunk-CSGUSHAO.js} +4 -4
- package/dist/{chunk-YTYROOLY.js → chunk-D22EGB3T.js} +3 -3
- package/dist/{chunk-VNGYJXAU.js → chunk-DBV6DDQI.js} +2 -2
- package/dist/{chunk-6PKVHFCK.js → chunk-DCRNBKMY.js} +9 -9
- package/dist/{chunk-PMS3H3OO.js → chunk-DF2FFYZ7.js} +4 -4
- package/dist/chunk-DG2A4DQU.js +118 -0
- package/dist/chunk-DG2A4DQU.js.map +1 -0
- package/dist/{chunk-RBGOGTT2.js → chunk-DWZ7FLA7.js} +4 -4
- package/dist/{chunk-237NDIT2.js → chunk-E3O72LBJ.js} +2 -2
- package/dist/{chunk-OH3YGJT5.js → chunk-EMNGIYH6.js} +5 -5
- package/dist/{chunk-XFUNJYFT.js → chunk-EPNUVSNK.js} +7 -7
- package/dist/{chunk-35UG2QDB.js → chunk-EUEUZI4L.js} +2 -2
- package/dist/{chunk-KUJLZFDW.js → chunk-FCG5YR6T.js} +3 -3
- package/dist/{chunk-2UBFDRL7.js → chunk-FCTURAZF.js} +2 -2
- package/dist/{chunk-UC6A6ASM.js → chunk-FFQKUTO6.js} +2 -2
- package/dist/{chunk-J3ZP6EUS.js → chunk-FNIHELAR.js} +2 -2
- package/dist/{chunk-SQV3HPTZ.js → chunk-G76H5PEM.js} +4 -4
- package/dist/{chunk-FLIMEQUA.js → chunk-GBX5ACPF.js} +5 -5
- package/dist/{chunk-22ZJH7RY.js → chunk-GN26LHNJ.js} +2 -2
- package/dist/{chunk-5KFZGB5U.js → chunk-GS7ESED2.js} +2 -2
- package/dist/{chunk-FGUK3D54.js → chunk-GZHZ7OTY.js} +3 -3
- package/dist/chunk-HALFOXSZ.js +1 -0
- package/dist/chunk-HALFOXSZ.js.map +1 -0
- package/dist/{chunk-BLBOYCOV.js → chunk-HKV4MQ2W.js} +5 -5
- package/dist/{chunk-K4JRHQMI.js → chunk-HMJM6DKA.js} +3 -3
- package/dist/{chunk-ZWIDQEJ4.js → chunk-HT7DWIR4.js} +5 -5
- package/dist/{chunk-UVD5NFRF.js → chunk-I3PGXMVJ.js} +2 -2
- package/dist/{chunk-Z52HVR4J.js → chunk-I4IPGIRF.js} +2 -2
- package/dist/{chunk-HR7YTBR7.js → chunk-IASDP44E.js} +4 -4
- package/dist/chunk-IAVQXQ3V.js +82 -0
- package/dist/chunk-IAVQXQ3V.js.map +1 -0
- package/dist/chunk-IC7GHPMK.js +22 -0
- package/dist/chunk-IC7GHPMK.js.map +1 -0
- package/dist/{chunk-VKH7AENA.js → chunk-IFNJWH55.js} +2 -2
- package/dist/{chunk-PUBPZOQJ.js → chunk-IPE5FFFD.js} +2 -2
- package/dist/{chunk-HP2ODXNA.js → chunk-IPS55KWK.js} +2 -2
- package/dist/{chunk-BILJU2DX.js → chunk-JFOATIMF.js} +5 -5
- package/dist/{chunk-MCBG6R5A.js → chunk-JH77UDWB.js} +3 -3
- package/dist/{chunk-XYDW5RQB.js → chunk-JTJR63WI.js} +2 -2
- package/dist/{chunk-IVVOIDE5.js → chunk-KHVKQPQ5.js} +3 -3
- package/dist/chunk-KRR6KK5J.js +117 -0
- package/dist/chunk-KRR6KK5J.js.map +1 -0
- package/dist/{chunk-T5WNNEP5.js → chunk-KVCS6IEI.js} +2 -2
- package/dist/{chunk-HZ6L7WXE.js → chunk-LGOIBC2C.js} +7 -7
- package/dist/chunk-LGPQVKHC.js +47 -0
- package/dist/chunk-LGPQVKHC.js.map +1 -0
- package/dist/{chunk-BKAB4KZK.js → chunk-LKAKYP42.js} +5 -5
- package/dist/{chunk-ZPIMPOHV.js → chunk-M7E66OSC.js} +4 -4
- package/dist/{chunk-VVXA7T2M.js → chunk-MG6XC5SK.js} +2 -2
- package/dist/{chunk-554SVTCN.js → chunk-MKZNP32D.js} +4 -4
- package/dist/chunk-MPRZDEKY.js +168 -0
- package/dist/chunk-MPRZDEKY.js.map +1 -0
- package/dist/{chunk-MSS6IU5X.js → chunk-N6V6BFKD.js} +3 -3
- package/dist/{chunk-OLQDB346.js → chunk-NH4XD62U.js} +2 -2
- package/dist/{chunk-GH2DC7PS.js → chunk-NPN7JTRM.js} +4 -4
- package/dist/{chunk-AIBNBWQU.js → chunk-NR7LSYLM.js} +2 -2
- package/dist/{chunk-3XLDTVLC.js → chunk-NU2HND2Y.js} +5 -5
- package/dist/{chunk-T2VO32Z2.js → chunk-OG5LJPI3.js} +2 -2
- package/dist/{chunk-REMK55JI.js → chunk-OLZTGVBT.js} +4 -4
- package/dist/{chunk-URVNHKM2.js → chunk-ON7PRAAC.js} +6 -6
- package/dist/{chunk-EZMCWRXO.js → chunk-OTMJBGJA.js} +24 -26
- package/dist/chunk-OTMJBGJA.js.map +1 -0
- package/dist/{chunk-3TFUAKWJ.js → chunk-OVOSDXFM.js} +2 -2
- package/dist/{chunk-SONWG2RT.js → chunk-OW4UEIXA.js} +5 -5
- package/dist/{chunk-23FCBIUN.js → chunk-P7FQUGED.js} +8 -8
- package/dist/{chunk-V7F53GEO.js → chunk-P7IVAMAU.js} +7 -7
- package/dist/{chunk-JYF3HT7M.js → chunk-PD6JRCUT.js} +8 -8
- package/dist/chunk-PGGGKYWG.js +1 -0
- package/dist/chunk-PGGGKYWG.js.map +1 -0
- package/dist/{chunk-B474PL5O.js → chunk-PKFFJAQ6.js} +2 -2
- package/dist/{chunk-EUKYQXYU.js → chunk-PLDVEJPR.js} +2 -2
- package/dist/{chunk-HT4B2DJU.js → chunk-PZEC5CQA.js} +4 -4
- package/dist/chunk-Q4JWWTL4.js +36 -0
- package/dist/chunk-Q4JWWTL4.js.map +1 -0
- package/dist/chunk-Q6FUSSLK.js +140 -0
- package/dist/chunk-Q6FUSSLK.js.map +1 -0
- package/dist/{chunk-6FUOUUYO.js → chunk-Q6STVEYJ.js} +4 -4
- package/dist/{chunk-6IKX5IIX.js → chunk-Q75SJ35X.js} +5 -5
- package/dist/{chunk-WC5XYWTE.js → chunk-QGJBNVC2.js} +2 -2
- package/dist/chunk-QGUNUXTT.js +1 -0
- package/dist/chunk-QGUNUXTT.js.map +1 -0
- package/dist/{chunk-KFZT3PHA.js → chunk-QHJ7FTZK.js} +4 -4
- package/dist/{chunk-NUB4T3RQ.js → chunk-QJ6KWJJH.js} +2 -2
- package/dist/chunk-R6XVOUNC.js +85 -0
- package/dist/chunk-R6XVOUNC.js.map +1 -0
- package/dist/{chunk-CZPU5TW3.js → chunk-RFZU5BTG.js} +2 -2
- package/dist/chunk-RH4QT7YT.js +74 -0
- package/dist/chunk-RH4QT7YT.js.map +1 -0
- package/dist/{chunk-JGV66VUK.js → chunk-RLCMVSJZ.js} +2 -2
- package/dist/chunk-RN7UJI7S.js +1 -0
- package/dist/chunk-RN7UJI7S.js.map +1 -0
- package/dist/{chunk-JB67KPGM.js → chunk-RRO2EOJB.js} +4 -4
- package/dist/{chunk-JJ3VR7WX.js → chunk-RZLWW3KC.js} +2 -2
- package/dist/{chunk-MZQTHSLN.js → chunk-S7HRED4D.js} +2 -2
- package/dist/{chunk-EXJBPKGW.js → chunk-SHDIZSN5.js} +5 -5
- package/dist/{chunk-GJQYM3PM.js → chunk-SHQWIDD5.js} +4 -4
- package/dist/{chunk-L6TCIZFR.js → chunk-SUAGBFYJ.js} +3 -3
- package/dist/{chunk-K5V3KCFI.js → chunk-SVBR3GWG.js} +6 -6
- package/dist/{chunk-DAPK3ADA.js → chunk-TC3EPGGJ.js} +4 -4
- package/dist/{chunk-DEE6IPGI.js → chunk-TJXNVREN.js} +2 -2
- package/dist/{chunk-WREIYOXN.js → chunk-TLMLEC4F.js} +7 -7
- package/dist/{chunk-57ZSQB5V.js → chunk-TLRTLYVT.js} +2 -2
- package/dist/{chunk-DUWF5LUK.js → chunk-TNCCCLLO.js} +4 -4
- package/dist/{chunk-TQ6FPOPD.js → chunk-TPKSOHB5.js} +5 -2
- package/dist/{chunk-TQ6FPOPD.js.map → chunk-TPKSOHB5.js.map} +1 -1
- package/dist/{chunk-JPVDZXXX.js → chunk-U5RQBHRY.js} +2 -2
- package/dist/{chunk-TU5EIKJA.js → chunk-U5SH3VRJ.js} +4 -4
- package/dist/chunk-V32X24SH.js +87 -0
- package/dist/chunk-V32X24SH.js.map +1 -0
- package/dist/{chunk-J4W4TQPC.js → chunk-V5P5Q6HM.js} +6 -6
- package/dist/{chunk-DQOLW4B5.js → chunk-VBMV2W4K.js} +3 -3
- package/dist/{chunk-57W2C7HY.js → chunk-VOHT6ZX3.js} +8 -8
- package/dist/{chunk-QYNCPS5W.js → chunk-WBKWIFXA.js} +6 -6
- package/dist/{chunk-VJFH2AXT.js → chunk-WG7HIXJ7.js} +8 -8
- package/dist/{chunk-VMXDTCYF.js → chunk-WMALDOF5.js} +4 -4
- package/dist/{chunk-I3FXTIKA.js → chunk-WP6Y2NJQ.js} +3 -3
- package/dist/chunk-WP6Y2NJQ.js.map +1 -0
- package/dist/{chunk-2L2NWXWJ.js → chunk-WRXD464C.js} +2 -2
- package/dist/{chunk-KT6HWAEN.js → chunk-WZUNBSS7.js} +2 -2
- package/dist/{chunk-NWQWUYOV.js → chunk-XGB3YF32.js} +2 -2
- package/dist/chunk-XJQNSMGA.js +10 -0
- package/dist/chunk-XJQNSMGA.js.map +1 -0
- package/dist/{chunk-QRX5BYUQ.js → chunk-Y6KPZQPI.js} +4 -4
- package/dist/{chunk-ZYKDPX3W.js → chunk-YY66AKSK.js} +2 -2
- package/dist/{chunk-62NA6IF3.js → chunk-ZBZ76VR7.js} +3 -3
- package/dist/{chunk-OXQP3N6X.js → chunk-ZTZ6S5Q6.js} +4 -4
- package/dist/data-display/Alert.js +4 -4
- package/dist/data-display/Avatar.js +5 -5
- package/dist/data-display/Badge.js +6 -6
- package/dist/data-display/Banner.js +2 -2
- package/dist/data-display/CardKit.js +15 -15
- package/dist/data-display/Carousel.js +5 -5
- package/dist/data-display/Chart.js +15 -15
- package/dist/data-display/Chip.js +1 -0
- package/dist/data-display/DataViews.js +88 -88
- package/dist/data-display/DescriptionItem.js +5 -5
- package/dist/data-display/FleetMap.js +15 -15
- package/dist/data-display/HoverCard.js +2 -2
- package/dist/data-display/Lightbox.js +3 -3
- package/dist/data-display/MapPreview.js +9 -9
- package/dist/data-display/Progress.js +5 -5
- package/dist/data-display/Sheet.js +5 -5
- package/dist/data-display/Table.js +3 -3
- package/dist/en-US.js +15 -11
- package/dist/feedback/ConfirmAction.js +9 -9
- package/dist/feedback/Modal.js +2 -2
- package/dist/feedback/NotificationStatusNotice.js +8 -8
- package/dist/form/AddressAutocomplete.js +5 -5
- package/dist/form/Autocomplete.js +1 -1
- package/dist/form/Button.js +5 -5
- package/dist/form/Calendar.js +4 -4
- package/dist/form/CategorySelect.js +9 -9
- package/dist/form/CepField.js +2 -2
- package/dist/form/Checkbox.js +3 -3
- package/dist/form/CodeEditor.js +1 -1
- package/dist/form/Command.js +2 -2
- package/dist/form/DateRangePicker.js +7 -7
- package/dist/form/Input.js +1 -1
- package/dist/form/InputOTP.js +2 -2
- package/dist/form/Label.js +2 -2
- package/dist/form/Menubar.js +2 -2
- package/dist/form/NumberField.js +22 -0
- package/dist/form/NumberField.js.map +1 -0
- package/dist/form/Switch.js +5 -5
- package/dist/form/UploadButton.js +2 -2
- package/dist/form/total-form.js +24 -24
- package/dist/icons.js +7 -6
- package/dist/layout/Box.js +5 -5
- package/dist/layout/Collapsible.js +1 -0
- package/dist/layout/ContentToolbar.js +3 -3
- package/dist/layout/ScrollArea.js +1 -1
- package/dist/layout/SettingCard.js +70 -0
- package/dist/layout/SettingCard.js.map +1 -0
- package/dist/layout/SettingsLayout.js +3 -3
- package/dist/layout/Stack.js +6 -6
- package/dist/locales.js +37 -23
- package/dist/locales.js.map +1 -1
- package/dist/navigation/AppHeader.js +11 -11
- package/dist/navigation/CommandPalette.js +3 -3
- package/dist/navigation/Pagination.js +2 -2
- package/dist/navigation/Tabs.js +2 -2
- package/dist/provider.js +5 -5
- package/dist/pt-BR.js +12 -8
- package/dist/social-login-button.js +11 -11
- package/dist/tokens.js +2 -2
- package/dist/types/components/data-display/DataViews/data-views-category-pill.d.ts +6 -1
- package/dist/types/components/data-display/DataViews/data-views-category-pill.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-more-fields.d.ts +0 -11
- package/dist/types/components/data-display/DataViews/data-views-more-fields.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-overflow.d.ts.map +1 -1
- package/dist/types/components/form/Input/Input.d.ts.map +1 -1
- package/dist/types/components/form/Input/Input.types.d.ts +10 -0
- package/dist/types/components/form/Input/Input.types.d.ts.map +1 -1
- package/dist/types/components/form/NumberField/NumberField.d.ts +21 -0
- package/dist/types/components/form/NumberField/NumberField.d.ts.map +1 -0
- package/dist/types/components/form/NumberField/NumberField.helpers.d.ts +48 -0
- package/dist/types/components/form/NumberField/NumberField.helpers.d.ts.map +1 -0
- package/dist/types/components/form/NumberField/NumberField.types.d.ts +31 -0
- package/dist/types/components/form/NumberField/NumberField.types.d.ts.map +1 -0
- package/dist/types/components/form/NumberField/index.d.ts +3 -0
- package/dist/types/components/form/NumberField/index.d.ts.map +1 -0
- package/dist/types/components/form/index.d.ts +1 -0
- package/dist/types/components/form/index.d.ts.map +1 -1
- package/dist/types/components/layout/SettingCard/SettingCard.d.ts +14 -0
- package/dist/types/components/layout/SettingCard/SettingCard.d.ts.map +1 -0
- package/dist/types/components/layout/SettingCard/SettingCard.focus.d.ts +19 -0
- package/dist/types/components/layout/SettingCard/SettingCard.focus.d.ts.map +1 -0
- package/dist/types/components/layout/SettingCard/SettingCard.hooks.d.ts +79 -0
- package/dist/types/components/layout/SettingCard/SettingCard.hooks.d.ts.map +1 -0
- package/dist/types/components/layout/SettingCard/SettingCard.metrics.d.ts +21 -0
- package/dist/types/components/layout/SettingCard/SettingCard.metrics.d.ts.map +1 -0
- package/dist/types/components/layout/SettingCard/SettingCard.parts.d.ts +49 -0
- package/dist/types/components/layout/SettingCard/SettingCard.parts.d.ts.map +1 -0
- package/dist/types/components/layout/SettingCard/SettingCard.rem.d.ts +12 -0
- package/dist/types/components/layout/SettingCard/SettingCard.rem.d.ts.map +1 -0
- package/dist/types/components/layout/SettingCard/SettingCard.styles.d.ts +48 -0
- package/dist/types/components/layout/SettingCard/SettingCard.styles.d.ts.map +1 -0
- package/dist/types/components/layout/SettingCard/SettingCard.types.d.ts +127 -0
- package/dist/types/components/layout/SettingCard/SettingCard.types.d.ts.map +1 -0
- package/dist/types/components/layout/SettingCard/SettingGrid.d.ts +33 -0
- package/dist/types/components/layout/SettingCard/SettingGrid.d.ts.map +1 -0
- package/dist/types/components/layout/SettingCard/SettingGroup.context.d.ts +13 -0
- package/dist/types/components/layout/SettingCard/SettingGroup.context.d.ts.map +1 -0
- package/dist/types/components/layout/SettingCard/SettingGroup.d.ts +18 -0
- package/dist/types/components/layout/SettingCard/SettingGroup.d.ts.map +1 -0
- package/dist/types/components/layout/SettingCard/SettingSwitch.d.ts +28 -0
- package/dist/types/components/layout/SettingCard/SettingSwitch.d.ts.map +1 -0
- package/dist/types/components/layout/SettingCard/SettingToggle.d.ts +13 -0
- package/dist/types/components/layout/SettingCard/SettingToggle.d.ts.map +1 -0
- package/dist/types/components/layout/SettingCard/index.d.ts +6 -0
- package/dist/types/components/layout/SettingCard/index.d.ts.map +1 -0
- package/dist/types/components/layout/index.d.ts +1 -0
- package/dist/types/components/layout/index.d.ts.map +1 -1
- package/dist/types/copy/layout.d.ts +27 -0
- package/dist/types/copy/layout.d.ts.map +1 -1
- package/dist/types/en-US.layout.d.ts +3 -1
- package/dist/types/en-US.layout.d.ts.map +1 -1
- package/dist/types/locales.d.ts +3 -1
- package/dist/types/locales.d.ts.map +1 -1
- package/dist/types/pt-BR.layout.d.ts +3 -1
- package/dist/types/pt-BR.layout.d.ts.map +1 -1
- package/dist/typography/Heading.js +5 -5
- package/dist/typography/Paragraph.js +3 -3
- package/dist/typography/Text.js +4 -4
- package/dist/user-avatar.js +11 -11
- package/dist/utility/InstallPrompt.js +4 -4
- package/package.json +9 -1
- package/src/components/data-display/DataViews/data-views-category-pill.tsx +6 -1
- package/src/components/data-display/DataViews/data-views-more-fields.tsx +43 -37
- package/src/components/data-display/DataViews/data-views-overflow.ts +12 -1
- package/src/components/form/Input/Input.tsx +25 -12
- package/src/components/form/Input/Input.types.ts +10 -0
- package/src/components/form/NumberField/NumberField.helpers.ts +77 -0
- package/src/components/form/NumberField/NumberField.md +86 -0
- package/src/components/form/NumberField/NumberField.tsx +88 -0
- package/src/components/form/NumberField/NumberField.types.ts +43 -0
- package/src/components/form/NumberField/index.ts +2 -0
- package/src/components/form/NumberField/tests.md +51 -0
- package/src/components/form/NumberField/track.md +48 -0
- package/src/components/form/index.ts +1 -0
- package/src/components/layout/SettingCard/SettingCard.focus.ts +49 -0
- package/src/components/layout/SettingCard/SettingCard.hooks.ts +191 -0
- package/src/components/layout/SettingCard/SettingCard.md +121 -0
- package/src/components/layout/SettingCard/SettingCard.metrics.ts +22 -0
- package/src/components/layout/SettingCard/SettingCard.parts.tsx +162 -0
- package/src/components/layout/SettingCard/SettingCard.rem.ts +14 -0
- package/src/components/layout/SettingCard/SettingCard.styles.ts +142 -0
- package/src/components/layout/SettingCard/SettingCard.tsx +197 -0
- package/src/components/layout/SettingCard/SettingCard.types.ts +140 -0
- package/src/components/layout/SettingCard/SettingGrid.md +65 -0
- package/src/components/layout/SettingCard/SettingGrid.tsx +105 -0
- package/src/components/layout/SettingCard/SettingGroup.context.ts +11 -0
- package/src/components/layout/SettingCard/SettingGroup.md +81 -0
- package/src/components/layout/SettingCard/SettingGroup.tsx +73 -0
- package/src/components/layout/SettingCard/SettingSwitch.tsx +92 -0
- package/src/components/layout/SettingCard/SettingToggle.md +61 -0
- package/src/components/layout/SettingCard/SettingToggle.tsx +43 -0
- package/src/components/layout/SettingCard/index.ts +18 -0
- package/src/components/layout/SettingCard/tests.md +68 -0
- package/src/components/layout/SettingCard/track.md +63 -0
- package/src/components/layout/index.ts +1 -0
- package/src/copy/layout.ts +29 -0
- package/src/en-US.layout.ts +16 -0
- package/src/locales.ts +10 -0
- package/src/pt-BR.layout.ts +16 -0
- package/dist/chunk-A7RIZOAL.js +0 -13
- package/dist/chunk-A7RIZOAL.js.map +0 -1
- package/dist/chunk-BY3JEK5T.js +0 -1
- package/dist/chunk-EZMCWRXO.js.map +0 -1
- package/dist/chunk-FZJ2FTGE.js +0 -1
- package/dist/chunk-GRHECKHU.js +0 -13
- package/dist/chunk-GRHECKHU.js.map +0 -1
- package/dist/chunk-I3FXTIKA.js.map +0 -1
- package/dist/chunk-XXE6NTJB.js.map +0 -1
- /package/dist/{chunk-BY3JEK5T.js.map → _internal/components/form/NumberField/NumberField.helpers.js.map} +0 -0
- /package/dist/{chunk-FZJ2FTGE.js.map → _internal/components/form/NumberField/NumberField.js.map} +0 -0
- /package/dist/{chunk-TSEWUY4V.js.map → chunk-23LZNANO.js.map} +0 -0
- /package/dist/{chunk-K2EHH7TC.js.map → chunk-2CJXYSOE.js.map} +0 -0
- /package/dist/{chunk-HGJHZ5PE.js.map → chunk-2DHVWNTO.js.map} +0 -0
- /package/dist/{chunk-K2JH7QPR.js.map → chunk-2F2HPQNQ.js.map} +0 -0
- /package/dist/{chunk-C5YBXQTK.js.map → chunk-2QJKWH7Q.js.map} +0 -0
- /package/dist/{chunk-W3FAKT3D.js.map → chunk-2SWQ6HIK.js.map} +0 -0
- /package/dist/{chunk-IIUB4IOH.js.map → chunk-2XHIF3M3.js.map} +0 -0
- /package/dist/{chunk-3PUOLOEP.js.map → chunk-37L6O266.js.map} +0 -0
- /package/dist/{chunk-EVXFEXBS.js.map → chunk-3ELEPGCP.js.map} +0 -0
- /package/dist/{chunk-RVGG5YJY.js.map → chunk-3HJLJFLA.js.map} +0 -0
- /package/dist/{chunk-VESIQYBF.js.map → chunk-3ZTC2VEO.js.map} +0 -0
- /package/dist/{chunk-46UPILLK.js.map → chunk-4ETQRBZC.js.map} +0 -0
- /package/dist/{chunk-PFZAUMJA.js.map → chunk-4JGBWPG7.js.map} +0 -0
- /package/dist/{chunk-7IKWIWWV.js.map → chunk-53LG7IT4.js.map} +0 -0
- /package/dist/{chunk-S2GDYA6R.js.map → chunk-5GMHJ7Y5.js.map} +0 -0
- /package/dist/{chunk-IABE56TG.js.map → chunk-5ZOJLYD2.js.map} +0 -0
- /package/dist/{chunk-4XVH6IWN.js.map → chunk-66KAONOC.js.map} +0 -0
- /package/dist/{chunk-4MXFPDKL.js.map → chunk-6CAP4STN.js.map} +0 -0
- /package/dist/{chunk-C5EFVSBN.js.map → chunk-6HJLYSBM.js.map} +0 -0
- /package/dist/{chunk-CASZGBCA.js.map → chunk-6P3CRSAW.js.map} +0 -0
- /package/dist/{chunk-Y5UCOBQN.js.map → chunk-6SK3MTYJ.js.map} +0 -0
- /package/dist/{chunk-JQL4GG5L.js.map → chunk-6VMTF23F.js.map} +0 -0
- /package/dist/{chunk-EPRA5QLB.js.map → chunk-6XUZDJZY.js.map} +0 -0
- /package/dist/{chunk-B6IURHSZ.js.map → chunk-7DNQHMDO.js.map} +0 -0
- /package/dist/{chunk-SLMA4UQS.js.map → chunk-A3TISECJ.js.map} +0 -0
- /package/dist/{chunk-FVPN4YKW.js.map → chunk-ABSHD35E.js.map} +0 -0
- /package/dist/{chunk-PQECNGDE.js.map → chunk-AGYGNNOM.js.map} +0 -0
- /package/dist/{chunk-SUTNQG7E.js.map → chunk-ALU3BH37.js.map} +0 -0
- /package/dist/{chunk-MGPA6KTM.js.map → chunk-AMFP64L3.js.map} +0 -0
- /package/dist/{chunk-VEGT5PAD.js.map → chunk-BAISDZ3L.js.map} +0 -0
- /package/dist/{chunk-CZJLWCEG.js.map → chunk-BPYPUEM5.js.map} +0 -0
- /package/dist/{chunk-3MALHTZQ.js.map → chunk-C4J7PVVI.js.map} +0 -0
- /package/dist/{chunk-7OZBOS75.js.map → chunk-CK2NTT4S.js.map} +0 -0
- /package/dist/{chunk-Q5NAZ7TW.js.map → chunk-CSGUSHAO.js.map} +0 -0
- /package/dist/{chunk-YTYROOLY.js.map → chunk-D22EGB3T.js.map} +0 -0
- /package/dist/{chunk-VNGYJXAU.js.map → chunk-DBV6DDQI.js.map} +0 -0
- /package/dist/{chunk-6PKVHFCK.js.map → chunk-DCRNBKMY.js.map} +0 -0
- /package/dist/{chunk-PMS3H3OO.js.map → chunk-DF2FFYZ7.js.map} +0 -0
- /package/dist/{chunk-RBGOGTT2.js.map → chunk-DWZ7FLA7.js.map} +0 -0
- /package/dist/{chunk-237NDIT2.js.map → chunk-E3O72LBJ.js.map} +0 -0
- /package/dist/{chunk-OH3YGJT5.js.map → chunk-EMNGIYH6.js.map} +0 -0
- /package/dist/{chunk-XFUNJYFT.js.map → chunk-EPNUVSNK.js.map} +0 -0
- /package/dist/{chunk-35UG2QDB.js.map → chunk-EUEUZI4L.js.map} +0 -0
- /package/dist/{chunk-KUJLZFDW.js.map → chunk-FCG5YR6T.js.map} +0 -0
- /package/dist/{chunk-2UBFDRL7.js.map → chunk-FCTURAZF.js.map} +0 -0
- /package/dist/{chunk-UC6A6ASM.js.map → chunk-FFQKUTO6.js.map} +0 -0
- /package/dist/{chunk-J3ZP6EUS.js.map → chunk-FNIHELAR.js.map} +0 -0
- /package/dist/{chunk-SQV3HPTZ.js.map → chunk-G76H5PEM.js.map} +0 -0
- /package/dist/{chunk-FLIMEQUA.js.map → chunk-GBX5ACPF.js.map} +0 -0
- /package/dist/{chunk-22ZJH7RY.js.map → chunk-GN26LHNJ.js.map} +0 -0
- /package/dist/{chunk-5KFZGB5U.js.map → chunk-GS7ESED2.js.map} +0 -0
- /package/dist/{chunk-FGUK3D54.js.map → chunk-GZHZ7OTY.js.map} +0 -0
- /package/dist/{chunk-BLBOYCOV.js.map → chunk-HKV4MQ2W.js.map} +0 -0
- /package/dist/{chunk-K4JRHQMI.js.map → chunk-HMJM6DKA.js.map} +0 -0
- /package/dist/{chunk-ZWIDQEJ4.js.map → chunk-HT7DWIR4.js.map} +0 -0
- /package/dist/{chunk-UVD5NFRF.js.map → chunk-I3PGXMVJ.js.map} +0 -0
- /package/dist/{chunk-Z52HVR4J.js.map → chunk-I4IPGIRF.js.map} +0 -0
- /package/dist/{chunk-HR7YTBR7.js.map → chunk-IASDP44E.js.map} +0 -0
- /package/dist/{chunk-VKH7AENA.js.map → chunk-IFNJWH55.js.map} +0 -0
- /package/dist/{chunk-PUBPZOQJ.js.map → chunk-IPE5FFFD.js.map} +0 -0
- /package/dist/{chunk-HP2ODXNA.js.map → chunk-IPS55KWK.js.map} +0 -0
- /package/dist/{chunk-BILJU2DX.js.map → chunk-JFOATIMF.js.map} +0 -0
- /package/dist/{chunk-MCBG6R5A.js.map → chunk-JH77UDWB.js.map} +0 -0
- /package/dist/{chunk-XYDW5RQB.js.map → chunk-JTJR63WI.js.map} +0 -0
- /package/dist/{chunk-IVVOIDE5.js.map → chunk-KHVKQPQ5.js.map} +0 -0
- /package/dist/{chunk-T5WNNEP5.js.map → chunk-KVCS6IEI.js.map} +0 -0
- /package/dist/{chunk-HZ6L7WXE.js.map → chunk-LGOIBC2C.js.map} +0 -0
- /package/dist/{chunk-BKAB4KZK.js.map → chunk-LKAKYP42.js.map} +0 -0
- /package/dist/{chunk-ZPIMPOHV.js.map → chunk-M7E66OSC.js.map} +0 -0
- /package/dist/{chunk-VVXA7T2M.js.map → chunk-MG6XC5SK.js.map} +0 -0
- /package/dist/{chunk-554SVTCN.js.map → chunk-MKZNP32D.js.map} +0 -0
- /package/dist/{chunk-MSS6IU5X.js.map → chunk-N6V6BFKD.js.map} +0 -0
- /package/dist/{chunk-OLQDB346.js.map → chunk-NH4XD62U.js.map} +0 -0
- /package/dist/{chunk-GH2DC7PS.js.map → chunk-NPN7JTRM.js.map} +0 -0
- /package/dist/{chunk-AIBNBWQU.js.map → chunk-NR7LSYLM.js.map} +0 -0
- /package/dist/{chunk-3XLDTVLC.js.map → chunk-NU2HND2Y.js.map} +0 -0
- /package/dist/{chunk-T2VO32Z2.js.map → chunk-OG5LJPI3.js.map} +0 -0
- /package/dist/{chunk-REMK55JI.js.map → chunk-OLZTGVBT.js.map} +0 -0
- /package/dist/{chunk-URVNHKM2.js.map → chunk-ON7PRAAC.js.map} +0 -0
- /package/dist/{chunk-3TFUAKWJ.js.map → chunk-OVOSDXFM.js.map} +0 -0
- /package/dist/{chunk-SONWG2RT.js.map → chunk-OW4UEIXA.js.map} +0 -0
- /package/dist/{chunk-23FCBIUN.js.map → chunk-P7FQUGED.js.map} +0 -0
- /package/dist/{chunk-V7F53GEO.js.map → chunk-P7IVAMAU.js.map} +0 -0
- /package/dist/{chunk-JYF3HT7M.js.map → chunk-PD6JRCUT.js.map} +0 -0
- /package/dist/{chunk-B474PL5O.js.map → chunk-PKFFJAQ6.js.map} +0 -0
- /package/dist/{chunk-EUKYQXYU.js.map → chunk-PLDVEJPR.js.map} +0 -0
- /package/dist/{chunk-HT4B2DJU.js.map → chunk-PZEC5CQA.js.map} +0 -0
- /package/dist/{chunk-6FUOUUYO.js.map → chunk-Q6STVEYJ.js.map} +0 -0
- /package/dist/{chunk-6IKX5IIX.js.map → chunk-Q75SJ35X.js.map} +0 -0
- /package/dist/{chunk-WC5XYWTE.js.map → chunk-QGJBNVC2.js.map} +0 -0
- /package/dist/{chunk-KFZT3PHA.js.map → chunk-QHJ7FTZK.js.map} +0 -0
- /package/dist/{chunk-NUB4T3RQ.js.map → chunk-QJ6KWJJH.js.map} +0 -0
- /package/dist/{chunk-CZPU5TW3.js.map → chunk-RFZU5BTG.js.map} +0 -0
- /package/dist/{chunk-JGV66VUK.js.map → chunk-RLCMVSJZ.js.map} +0 -0
- /package/dist/{chunk-JB67KPGM.js.map → chunk-RRO2EOJB.js.map} +0 -0
- /package/dist/{chunk-JJ3VR7WX.js.map → chunk-RZLWW3KC.js.map} +0 -0
- /package/dist/{chunk-MZQTHSLN.js.map → chunk-S7HRED4D.js.map} +0 -0
- /package/dist/{chunk-EXJBPKGW.js.map → chunk-SHDIZSN5.js.map} +0 -0
- /package/dist/{chunk-GJQYM3PM.js.map → chunk-SHQWIDD5.js.map} +0 -0
- /package/dist/{chunk-L6TCIZFR.js.map → chunk-SUAGBFYJ.js.map} +0 -0
- /package/dist/{chunk-K5V3KCFI.js.map → chunk-SVBR3GWG.js.map} +0 -0
- /package/dist/{chunk-DAPK3ADA.js.map → chunk-TC3EPGGJ.js.map} +0 -0
- /package/dist/{chunk-DEE6IPGI.js.map → chunk-TJXNVREN.js.map} +0 -0
- /package/dist/{chunk-WREIYOXN.js.map → chunk-TLMLEC4F.js.map} +0 -0
- /package/dist/{chunk-57ZSQB5V.js.map → chunk-TLRTLYVT.js.map} +0 -0
- /package/dist/{chunk-DUWF5LUK.js.map → chunk-TNCCCLLO.js.map} +0 -0
- /package/dist/{chunk-JPVDZXXX.js.map → chunk-U5RQBHRY.js.map} +0 -0
- /package/dist/{chunk-TU5EIKJA.js.map → chunk-U5SH3VRJ.js.map} +0 -0
- /package/dist/{chunk-J4W4TQPC.js.map → chunk-V5P5Q6HM.js.map} +0 -0
- /package/dist/{chunk-DQOLW4B5.js.map → chunk-VBMV2W4K.js.map} +0 -0
- /package/dist/{chunk-57W2C7HY.js.map → chunk-VOHT6ZX3.js.map} +0 -0
- /package/dist/{chunk-QYNCPS5W.js.map → chunk-WBKWIFXA.js.map} +0 -0
- /package/dist/{chunk-VJFH2AXT.js.map → chunk-WG7HIXJ7.js.map} +0 -0
- /package/dist/{chunk-VMXDTCYF.js.map → chunk-WMALDOF5.js.map} +0 -0
- /package/dist/{chunk-2L2NWXWJ.js.map → chunk-WRXD464C.js.map} +0 -0
- /package/dist/{chunk-KT6HWAEN.js.map → chunk-WZUNBSS7.js.map} +0 -0
- /package/dist/{chunk-NWQWUYOV.js.map → chunk-XGB3YF32.js.map} +0 -0
- /package/dist/{chunk-QRX5BYUQ.js.map → chunk-Y6KPZQPI.js.map} +0 -0
- /package/dist/{chunk-ZYKDPX3W.js.map → chunk-YY66AKSK.js.map} +0 -0
- /package/dist/{chunk-62NA6IF3.js.map → chunk-ZBZ76VR7.js.map} +0 -0
- /package/dist/{chunk-OXQP3N6X.js.map → chunk-ZTZ6S5Q6.js.map} +0 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# SettingGroup
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
**One subject**: a main switch, plus the settings that only mean something
|
|
6
|
+
while it is on, indented beneath it. "Notifications" on or off, and — while on —
|
|
7
|
+
which notifications and when.
|
|
8
|
+
|
|
9
|
+
When the main switch is off the dependent rows **stay where they are**: dimmed,
|
|
10
|
+
disabled, and explained by a short hint. They are not removed. A reader
|
|
11
|
+
deciding whether to turn a feature on is helped by seeing what it would let
|
|
12
|
+
them configure, and a layout that jumps when a switch flips moves the thing
|
|
13
|
+
they were about to press.
|
|
14
|
+
|
|
15
|
+
Part of the `layout/SettingCard` family.
|
|
16
|
+
|
|
17
|
+
## One group per subject — not a container for a page
|
|
18
|
+
|
|
19
|
+
A `SettingGroup` is for several settings of **the same subject**, where the
|
|
20
|
+
main switch decides whether the others apply at all. It is not a way to put
|
|
21
|
+
several unrelated settings in one box.
|
|
22
|
+
|
|
23
|
+
| these are… | use |
|
|
24
|
+
|---|---|
|
|
25
|
+
| Notifications (main switch) + digest, mentions, quiet hours | **one** `SettingGroup` — the rows mean nothing with notifications off |
|
|
26
|
+
| Session timeout, two-step sign-in, language | **three** cards — a `SettingCard`, a `SettingToggle`, a `SettingCard` — laid out by a `SettingGrid` |
|
|
27
|
+
| Backups (main switch) + frequency, retention | **one** `SettingGroup` |
|
|
28
|
+
| Backups and notifications | **two** groups, never one |
|
|
29
|
+
|
|
30
|
+
The test: if turning the main switch off would **not** make a row meaningless,
|
|
31
|
+
that row is a different subject and belongs in its own card. Squeezing two
|
|
32
|
+
subjects into one group gives one of them a main switch it does not have, and a
|
|
33
|
+
hint ("inactive until X is on") that is false for it.
|
|
34
|
+
|
|
35
|
+
## Usage
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
import { SettingGroup, SettingToggle } from '@12-apps/ui/layout/SettingCard';
|
|
39
|
+
|
|
40
|
+
<SettingGroup
|
|
41
|
+
copy={switchCopy}
|
|
42
|
+
title="Notifications"
|
|
43
|
+
summary="What we tell you about, and when."
|
|
44
|
+
inactiveHint="Turn notifications on to choose which ones you get."
|
|
45
|
+
checked={settings.notifications}
|
|
46
|
+
onChange={(next) => api.setNotifications(next)}
|
|
47
|
+
>
|
|
48
|
+
<SettingToggle variant="row" copy={switchCopy} title="Weekly digest" checked={settings.digest} onChange={api.setDigest} />
|
|
49
|
+
<SettingToggle variant="row" copy={switchCopy} title="Mentions" checked={settings.mentions} onChange={api.setMentions} />
|
|
50
|
+
<NumberField label="Quiet hours from" value={quietFrom} onChange={setQuietFrom} min={0} max={23} suffix="h" />
|
|
51
|
+
</SettingGroup>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Props
|
|
55
|
+
|
|
56
|
+
| prop | type | default | effect |
|
|
57
|
+
|---|---|---|---|
|
|
58
|
+
| `copy` | `SettingSwitchCopy` | **required** | The main switch's "saving" announcement and fallback error. |
|
|
59
|
+
| `title` | `string` | **required** | The subject. Names the main switch and the dependent rows' group. |
|
|
60
|
+
| `checked` | `boolean` | **required** | The main switch's persisted value. |
|
|
61
|
+
| `onChange` | `(checked: boolean) => void \| Promise<unknown>` | **required** | Persist the main switch — same async contract as [`SettingToggle`](./SettingToggle.md). |
|
|
62
|
+
| `inactiveHint` | `string` | **required** | Why the rows are inactive. Shown only while they are. |
|
|
63
|
+
| `children` | `ReactNode` | **required** | The dependent rows — `SettingToggle variant="row"`, fields, anything. |
|
|
64
|
+
| `summary` | `ReactNode` | — | Explanation under the title. |
|
|
65
|
+
| `disabled` | `boolean` | `false` | Disables the main switch; the rows are then inactive too. |
|
|
66
|
+
| `formatError`, `icon`, `dataTestId`, `className`, `sx` | | | As on `SettingToggle`. Parts add `-dependents` and `-hint`. |
|
|
67
|
+
|
|
68
|
+
## When the rows are active
|
|
69
|
+
|
|
70
|
+
Only while the main switch is on **and saved**: turning it on lights the rows
|
|
71
|
+
once the save lands (so nobody edits rows a failed save then disables), and
|
|
72
|
+
turning it off dims them at once.
|
|
73
|
+
|
|
74
|
+
## Accessibility
|
|
75
|
+
|
|
76
|
+
- The dependent rows are a `role="group"` named by the subject.
|
|
77
|
+
- Inactive, the group is `inert` — nothing in it is focusable or clickable,
|
|
78
|
+
whatever the host put there — and `aria-disabled`, described by the hint.
|
|
79
|
+
- The family's own rows (`SettingToggle`) also render `disabled`, so they read
|
|
80
|
+
as disabled rather than merely unreachable.
|
|
81
|
+
- Opacity alone never carries "inactive"; the hint says it in words.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import Box from '@mui/material/Box/index.js';
|
|
2
|
+
import { useTheme } from '@mui/material/styles/index.js';
|
|
3
|
+
import { forwardRef, useId, useMemo } from 'react';
|
|
4
|
+
|
|
5
|
+
import { Icon } from '../../../icons';
|
|
6
|
+
|
|
7
|
+
import { useAsyncSwitch } from './SettingCard.hooks';
|
|
8
|
+
import { partTestId } from './SettingCard.parts';
|
|
9
|
+
import { dependentsStyles, hintStyles, surfaceStyles, withCallerSx } from './SettingCard.styles';
|
|
10
|
+
import type { SettingGroupProps } from './SettingCard.types';
|
|
11
|
+
import { SettingGroupContext } from './SettingGroup.context';
|
|
12
|
+
import { SettingSwitchBlock, useSettingSwitchIds } from './SettingSwitch';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* ONE subject: a main switch, and the settings that only mean something while
|
|
16
|
+
* it is on, indented beneath it.
|
|
17
|
+
*
|
|
18
|
+
* With the main switch off the dependent rows stay where they are — dimmed,
|
|
19
|
+
* `inert`, and explained by `inactiveHint` — rather than disappearing. A
|
|
20
|
+
* reader deciding whether to turn a feature on is helped by seeing what it
|
|
21
|
+
* would let them configure, and a layout that jumps when a switch flips moves
|
|
22
|
+
* the thing they were about to press.
|
|
23
|
+
*
|
|
24
|
+
* The rows are active only while the main switch is on AND saved: turning it
|
|
25
|
+
* on lights them once the save lands; turning it off dims them at once.
|
|
26
|
+
*
|
|
27
|
+
* Several subjects are several cards, never one group — see `SettingGroup.md`.
|
|
28
|
+
*/
|
|
29
|
+
export const SettingGroup = forwardRef<HTMLElement, SettingGroupProps>(function SettingGroup(props, ref) {
|
|
30
|
+
const {
|
|
31
|
+
checked, onChange, copy, formatError, inactiveHint, children, disabled = false, dataTestId, className, sx,
|
|
32
|
+
} = props;
|
|
33
|
+
const theme = useTheme();
|
|
34
|
+
const ids = useSettingSwitchIds();
|
|
35
|
+
const hintId = `${useId()}-hint`;
|
|
36
|
+
const state = useAsyncSwitch({ checked, onChange, formatError, fallback: copy.saveFailed });
|
|
37
|
+
const active = checked && state.shown && !disabled;
|
|
38
|
+
const context = useMemo(() => ({ inactive: !active }), [active]);
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<Box
|
|
42
|
+
component="section"
|
|
43
|
+
ref={ref}
|
|
44
|
+
aria-labelledby={ids.titleId}
|
|
45
|
+
aria-busy={state.saving || undefined}
|
|
46
|
+
data-active={active}
|
|
47
|
+
data-testid={dataTestId}
|
|
48
|
+
className={className}
|
|
49
|
+
sx={withCallerSx((t) => surfaceStyles(t, false), sx)}
|
|
50
|
+
>
|
|
51
|
+
<SettingSwitchBlock {...props} disabled={disabled} ids={ids} state={state} />
|
|
52
|
+
{!active && (
|
|
53
|
+
<Box component="p" id={hintId} sx={hintStyles(theme)} data-testid={partTestId(dataTestId, 'hint')}>
|
|
54
|
+
<Icon name="InfoOutlined" size="xs" />
|
|
55
|
+
<span>{inactiveHint}</span>
|
|
56
|
+
</Box>
|
|
57
|
+
)}
|
|
58
|
+
<Box
|
|
59
|
+
role="group"
|
|
60
|
+
aria-labelledby={ids.titleId}
|
|
61
|
+
aria-describedby={active ? undefined : hintId}
|
|
62
|
+
aria-disabled={active ? undefined : true}
|
|
63
|
+
inert={!active}
|
|
64
|
+
sx={dependentsStyles(theme, active)}
|
|
65
|
+
data-testid={partTestId(dataTestId, 'dependents')}
|
|
66
|
+
>
|
|
67
|
+
<SettingGroupContext.Provider value={context}>{children}</SettingGroupContext.Provider>
|
|
68
|
+
</Box>
|
|
69
|
+
</Box>
|
|
70
|
+
);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
SettingGroup.displayName = 'SettingGroup';
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import Box from '@mui/material/Box/index.js';
|
|
2
|
+
import { useTheme } from '@mui/material/styles/index.js';
|
|
3
|
+
import React, { useId } from 'react';
|
|
4
|
+
|
|
5
|
+
import { Switch } from '../../form/Switch';
|
|
6
|
+
import { SR_ONLY_SX } from '../../form/Label/Label.styles';
|
|
7
|
+
|
|
8
|
+
import { useAsyncSwitch } from './SettingCard.hooks';
|
|
9
|
+
import { PendingSpinner, SaveError, SettingHeader, partTestId } from './SettingCard.parts';
|
|
10
|
+
import { descriptionStyles } from './SettingCard.styles';
|
|
11
|
+
import type { SettingToggleProps } from './SettingCard.types';
|
|
12
|
+
|
|
13
|
+
/** Everything the switch-driven cards share, minus the surface each draws around it. */
|
|
14
|
+
export type SettingSwitchBlockProps = Pick<
|
|
15
|
+
SettingToggleProps,
|
|
16
|
+
'title' | 'headingLevel' | 'icon' | 'summary' | 'checked' | 'onChange' | 'copy' | 'formatError' | 'dataTestId'
|
|
17
|
+
> & { disabled: boolean };
|
|
18
|
+
|
|
19
|
+
/** The ids one switch block wires its label, description and failure line with. */
|
|
20
|
+
export interface SettingSwitchIds {
|
|
21
|
+
titleId: string;
|
|
22
|
+
inputId: string;
|
|
23
|
+
summaryId: string;
|
|
24
|
+
errorId: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export const useSettingSwitchIds = (): SettingSwitchIds => {
|
|
28
|
+
const base = useId();
|
|
29
|
+
return {
|
|
30
|
+
titleId: `${base}-title`,
|
|
31
|
+
inputId: `${base}-switch`,
|
|
32
|
+
summaryId: `${base}-summary`,
|
|
33
|
+
errorId: `${base}-error`,
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Title-as-label, the switch, its explanation and the failure line.
|
|
39
|
+
*
|
|
40
|
+
* The switch is never `disabled` while it saves, for the reason Save is not
|
|
41
|
+
* (`SettingCard.tsx`): a disabled control drops keyboard focus. It says
|
|
42
|
+
* `aria-busy` instead, ignores flips until the save settles (see
|
|
43
|
+
* `useAsyncSwitch`), shows a spinner, and a polite live region says the words.
|
|
44
|
+
*/
|
|
45
|
+
export const SettingSwitchBlock: React.FC<
|
|
46
|
+
SettingSwitchBlockProps & { ids: SettingSwitchIds; state: ReturnType<typeof useAsyncSwitch> }
|
|
47
|
+
> = ({ title, headingLevel = 'h3', icon, summary, copy, disabled, dataTestId, ids, state }) => {
|
|
48
|
+
const theme = useTheme();
|
|
49
|
+
const { shown, saving, error, flip } = state;
|
|
50
|
+
const describedBy = [summary != null ? ids.summaryId : null, error ? ids.errorId : null]
|
|
51
|
+
.filter(Boolean)
|
|
52
|
+
.join(' ');
|
|
53
|
+
|
|
54
|
+
const control = (
|
|
55
|
+
<Box sx={{ display: 'inline-flex', alignItems: 'center', gap: 1, flexShrink: 0 }}>
|
|
56
|
+
{saving && <PendingSpinner dataTestId={dataTestId} />}
|
|
57
|
+
<Switch
|
|
58
|
+
id={ids.inputId}
|
|
59
|
+
checked={shown}
|
|
60
|
+
onChange={(event) => void flip(event.target.checked)}
|
|
61
|
+
disabled={disabled}
|
|
62
|
+
error={Boolean(error)}
|
|
63
|
+
aria-describedby={describedBy || undefined}
|
|
64
|
+
inputProps={{ role: 'switch', 'aria-busy': saving }}
|
|
65
|
+
dataTestId={partTestId(dataTestId, 'switch')}
|
|
66
|
+
/>
|
|
67
|
+
</Box>
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
return (
|
|
71
|
+
<>
|
|
72
|
+
<SettingHeader
|
|
73
|
+
titleId={ids.titleId}
|
|
74
|
+
title={title}
|
|
75
|
+
headingLevel={headingLevel}
|
|
76
|
+
icon={icon}
|
|
77
|
+
labelFor={ids.inputId}
|
|
78
|
+
trailing={control}
|
|
79
|
+
dataTestId={dataTestId}
|
|
80
|
+
/>
|
|
81
|
+
{summary != null && (
|
|
82
|
+
<Box component="p" id={ids.summaryId} sx={descriptionStyles(theme)} data-testid={partTestId(dataTestId, 'summary')}>
|
|
83
|
+
{summary}
|
|
84
|
+
</Box>
|
|
85
|
+
)}
|
|
86
|
+
<SaveError id={ids.errorId} message={error} dataTestId={dataTestId} />
|
|
87
|
+
<Box role="status" aria-live="polite" sx={SR_ONLY_SX}>
|
|
88
|
+
{saving ? copy.saving : ''}
|
|
89
|
+
</Box>
|
|
90
|
+
</>
|
|
91
|
+
);
|
|
92
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# SettingToggle
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
A setting that is **one switch and nothing else**. There is no edit state:
|
|
6
|
+
flipping the switch is the edit, and it saves at once. Part of the
|
|
7
|
+
`layout/SettingCard` family.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```tsx
|
|
12
|
+
import { SettingToggle } from '@12-apps/ui/layout/SettingCard';
|
|
13
|
+
|
|
14
|
+
<SettingToggle
|
|
15
|
+
copy={copy} // SettingSwitchCopy — saving + saveFailed
|
|
16
|
+
title="Two-step sign-in"
|
|
17
|
+
summary="Ask for a code on a new device."
|
|
18
|
+
checked={settings.twoStep}
|
|
19
|
+
onChange={(next) => api.setTwoStep(next)} // may return a promise
|
|
20
|
+
/>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Props
|
|
24
|
+
|
|
25
|
+
| prop | type | default | effect |
|
|
26
|
+
|---|---|---|---|
|
|
27
|
+
| `copy` | `SettingSwitchCopy` | **required** | The "saving" announcement and the fallback error. No shipped default. |
|
|
28
|
+
| `title` | `string` | **required** | The switch's `<label>` — its accessible name, and a tap target far larger than the track. |
|
|
29
|
+
| `checked` | `boolean` | **required** | The persisted value. |
|
|
30
|
+
| `onChange` | `(checked: boolean) => void \| Promise<unknown>` | **required** | Persist a flip. See below. |
|
|
31
|
+
| `summary` | `ReactNode` | — | Explanation under the title; the switch is `aria-describedby` it. |
|
|
32
|
+
| `variant` | `'card' \| 'row'` | `'card'` | `row` drops the surface — for a dependent row inside a [`SettingGroup`](./SettingGroup.md). |
|
|
33
|
+
| `disabled` | `boolean` | `false` | Disables the switch. Also disabled inside a `SettingGroup` whose main switch is off. |
|
|
34
|
+
| `formatError` | `(error: unknown) => string \| undefined` | — | The sentence for a rejected save; `undefined` falls back to `copy.saveFailed`. |
|
|
35
|
+
| `icon`, `dataTestId`, `className`, `sx` | | | As on `SettingCard`. Parts: `-switch`, `-title`, `-summary`, `-saving`, `-error`. |
|
|
36
|
+
|
|
37
|
+
## Saving
|
|
38
|
+
|
|
39
|
+
- The switch shows the new value **at once** and holds it while the promise is
|
|
40
|
+
pending, with a spinner beside it, `aria-busy` on the input, and
|
|
41
|
+
`copy.saving` in a polite live region.
|
|
42
|
+
- **Resolved:** the switch hands back to `checked`, which the host has updated.
|
|
43
|
+
- **Rejected:** the switch returns to `checked` (the value actually saved) and
|
|
44
|
+
the error appears under it in a `role="alert"` line the switch is described
|
|
45
|
+
by.
|
|
46
|
+
- A flip while a save is pending is **ignored**, not queued: two racing writes
|
|
47
|
+
of a boolean have no right answer.
|
|
48
|
+
- The switch is never `disabled` while saving, so keyboard focus stays on it.
|
|
49
|
+
|
|
50
|
+
## Accessibility
|
|
51
|
+
|
|
52
|
+
- `role="switch"` on the input, named by the title, described by the summary
|
|
53
|
+
(and the error, when there is one).
|
|
54
|
+
- The whole title is a `<label for>` the switch — clicking the words flips it.
|
|
55
|
+
|
|
56
|
+
## Best practices
|
|
57
|
+
|
|
58
|
+
- Use it only when the setting is **exactly** one boolean. Anything with a
|
|
59
|
+
value to type or pick is a [`SettingCard`](./SettingCard.md).
|
|
60
|
+
- Several switches about one subject belong in a
|
|
61
|
+
[`SettingGroup`](./SettingGroup.md) with `variant="row"`.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import Box from '@mui/material/Box/index.js';
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
|
+
|
|
4
|
+
import { useAsyncSwitch } from './SettingCard.hooks';
|
|
5
|
+
import { flatStyles, surfaceStyles, withCallerSx } from './SettingCard.styles';
|
|
6
|
+
import type { SettingToggleProps } from './SettingCard.types';
|
|
7
|
+
import { useSettingGroup } from './SettingGroup.context';
|
|
8
|
+
import { SettingSwitchBlock, useSettingSwitchIds } from './SettingSwitch';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* A setting that is one switch and nothing else. There is no edit state:
|
|
12
|
+
* flipping it IS the edit, and it saves at once.
|
|
13
|
+
*
|
|
14
|
+
* `onChange` may be async. The switch shows the new value while the promise is
|
|
15
|
+
* pending, with a spinner and an announced "saving"; a rejection flips it back
|
|
16
|
+
* to `checked` and shows the error under it.
|
|
17
|
+
*
|
|
18
|
+
* Inside a `SettingGroup` whose main switch is off, it renders disabled.
|
|
19
|
+
*/
|
|
20
|
+
export const SettingToggle = forwardRef<HTMLElement, SettingToggleProps>(function SettingToggle(props, ref) {
|
|
21
|
+
const { checked, onChange, copy, formatError, disabled = false, variant = 'card', dataTestId, className, sx } = props;
|
|
22
|
+
const group = useSettingGroup();
|
|
23
|
+
const ids = useSettingSwitchIds();
|
|
24
|
+
const state = useAsyncSwitch({ checked, onChange, formatError, fallback: copy.saveFailed });
|
|
25
|
+
const card = variant === 'card';
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<Box
|
|
29
|
+
component={card ? 'section' : 'div'}
|
|
30
|
+
ref={ref}
|
|
31
|
+
aria-labelledby={ids.titleId}
|
|
32
|
+
aria-busy={state.saving || undefined}
|
|
33
|
+
data-variant={variant}
|
|
34
|
+
data-testid={dataTestId}
|
|
35
|
+
className={className}
|
|
36
|
+
sx={withCallerSx((theme) => (card ? surfaceStyles(theme, false) : flatStyles(theme)), sx)}
|
|
37
|
+
>
|
|
38
|
+
<SettingSwitchBlock {...props} disabled={disabled || group.inactive} ids={ids} state={state} />
|
|
39
|
+
</Box>
|
|
40
|
+
);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
SettingToggle.displayName = 'SettingToggle';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { SettingCard } from './SettingCard';
|
|
2
|
+
export { SettingToggle } from './SettingToggle';
|
|
3
|
+
export { SettingGroup } from './SettingGroup';
|
|
4
|
+
export { SettingGrid, SETTING_GRID_CONTAINER } from './SettingGrid';
|
|
5
|
+
export type {
|
|
6
|
+
SettingCardCopy,
|
|
7
|
+
SettingCardProps,
|
|
8
|
+
SettingErrorFormatter,
|
|
9
|
+
SettingGridColumns,
|
|
10
|
+
SettingGridProps,
|
|
11
|
+
SettingGroupProps,
|
|
12
|
+
SettingHeadingLevel,
|
|
13
|
+
SettingSaveResult,
|
|
14
|
+
SettingStatus,
|
|
15
|
+
SettingSwitchCopy,
|
|
16
|
+
SettingToggleProps,
|
|
17
|
+
SettingToggleVariant,
|
|
18
|
+
} from './SettingCard.types';
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# SettingCard family Test Status Tracking
|
|
2
|
+
|
|
3
|
+
`SettingCard`, `SettingToggle`, `SettingGroup` and `SettingGrid` share this
|
|
4
|
+
folder and this file.
|
|
5
|
+
|
|
6
|
+
## Test Files Status
|
|
7
|
+
|
|
8
|
+
- [x] SettingCard.test.stories.tsx, SettingToggle.test.stories.tsx, SettingGroup.test.stories.tsx, SettingGrid.test.stories.tsx created
|
|
9
|
+
- [x] `__tests__/` Vitest suites for all four
|
|
10
|
+
- [x] Core categories implemented (interaction, keyboard, screen reader, focus, responsive/layout, visual states, edge cases)
|
|
11
|
+
|
|
12
|
+
## Storybook Tests Status
|
|
13
|
+
|
|
14
|
+
### Test Results
|
|
15
|
+
|
|
16
|
+
| Test Name | Status | Pass/Fail | Notes |
|
|
17
|
+
| ------------------------------------------- | ------ | --------- | ------------------------------------------------------ |
|
|
18
|
+
| SettingCard › Opens in place | PASS | Pass | form inside the same card; no dialog |
|
|
19
|
+
| SettingCard › Focus round trip | PASS | Pass | first field on open, Edit on close |
|
|
20
|
+
| SettingCard › Keyboard only | PASS | Pass | Tab to Edit, Enter opens, Escape cancels |
|
|
21
|
+
| SettingCard › Save resolves | PASS | Pass | "Saving…", `aria-busy`, then new summary + focus |
|
|
22
|
+
| SettingCard › Save rejects | PASS | Pass | stays open, draft intact, focus stays on Save |
|
|
23
|
+
| SettingCard › Cancel discards | PASS | Pass | reopened form shows the saved value |
|
|
24
|
+
| SettingCard › Accessible names | PASS | Pass | region, heading, "Edit <title>" |
|
|
25
|
+
| SettingCard › Learn more disclosure | PASS | Pass | `aria-expanded` toggles, content visible |
|
|
26
|
+
| SettingToggle › Flip saves | PASS | Pass | optimistic value, busy but enabled, then settles |
|
|
27
|
+
| SettingToggle › Reject reverts | PASS | Pass | back to saved value, error shown |
|
|
28
|
+
| SettingToggle › Keyboard flip | PASS | Pass | Space flips; focus stays on the switch while saving |
|
|
29
|
+
| SettingToggle › Label is the tap target | PASS | Pass | clicking the title flips |
|
|
30
|
+
| SettingGroup › Off dims and disables | PASS | Pass | rows rendered, `inert`, opacity < 1, hint shown |
|
|
31
|
+
| SettingGroup › Off rows skipped by Tab | PASS | Pass | focus never enters the inert rows |
|
|
32
|
+
| SettingGroup › Turn on activates | PASS | Pass | rows live, hint gone, fields accept input |
|
|
33
|
+
| SettingGrid › Columns follow the container | PASS | Pass | 1 / 2 / 3 columns at 360 / 720 / 1080 px containers |
|
|
34
|
+
| SettingGrid › Rows share height | PASS | Pass | three cards of different content, one height |
|
|
35
|
+
| SettingGrid › Open card spans the row | PASS | Pass | open card width equals the grid's; back on cancel |
|
|
36
|
+
|
|
37
|
+
Legend: Pending | Running | PASS | FAIL
|
|
38
|
+
|
|
39
|
+
## Static Stories Status
|
|
40
|
+
|
|
41
|
+
- [x] Default story (each component)
|
|
42
|
+
- [x] Open, Saving, SaveRejected, HostErrorMessage (SettingCard)
|
|
43
|
+
- [x] Saving, SaveRejected, Rows (SettingToggle)
|
|
44
|
+
- [x] Off (dimmed), On, Disabled, OneSubjectPerGroup (SettingGroup)
|
|
45
|
+
- [x] ResponsiveByContainer, OpenCardSpansRow, TwoColumnsMax, Empty (SettingGrid)
|
|
46
|
+
- [x] Disabled state stories
|
|
47
|
+
- [x] Loading (saving) state stories
|
|
48
|
+
- [x] Error state stories
|
|
49
|
+
- [x] Long content / edge cases
|
|
50
|
+
- [x] Dark theme (SettingCard)
|
|
51
|
+
|
|
52
|
+
## Lint Status
|
|
53
|
+
|
|
54
|
+
- [x] No lint errors
|
|
55
|
+
- [x] No warnings
|
|
56
|
+
|
|
57
|
+
## TypeCheck Status
|
|
58
|
+
|
|
59
|
+
- [x] No type errors
|
|
60
|
+
- [x] All props properly typed
|
|
61
|
+
|
|
62
|
+
## Overall Component Status
|
|
63
|
+
|
|
64
|
+
- [x] All tests passing
|
|
65
|
+
- [x] Lint clean
|
|
66
|
+
- [x] TypeCheck clean
|
|
67
|
+
- [x] Stories working
|
|
68
|
+
- [ ] Ready for production (pending review)
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# SettingCard family
|
|
2
|
+
|
|
3
|
+
Four settings-screen building blocks under one subpath,
|
|
4
|
+
`@12-apps/ui/layout/SettingCard` (FUT-2823). `SettingCard` summarises a setting
|
|
5
|
+
while closed and edits it in place, with an async save that stays open on
|
|
6
|
+
failure and a focus round trip. `SettingToggle` is a switch that saves as it
|
|
7
|
+
flips. `SettingGroup` is one subject's main switch with dependent rows that dim
|
|
8
|
+
(never vanish) while it is off. `SettingGrid` lays them out in 1–3 columns by
|
|
9
|
+
container query, with equal-height rows and a full-row span for an open card.
|
|
10
|
+
App-agnostic: every word comes in through props (`SettingCardCopy`,
|
|
11
|
+
`SettingSwitchCopy`, titles, summaries, hints).
|
|
12
|
+
|
|
13
|
+
## Props
|
|
14
|
+
|
|
15
|
+
- **SettingCard** — `copy`, `title`, `onSave` (may be async), `children` (the
|
|
16
|
+
form), `summary`, `status`, `learnMore`, `onCancel`, `open` / `defaultOpen` /
|
|
17
|
+
`onOpenChange`, `disabled`, `saveDisabled`, `formatError`, `headingLevel`,
|
|
18
|
+
`icon`, `dataTestId`, `className`, `sx`.
|
|
19
|
+
- **SettingToggle** — `copy`, `title`, `checked`, `onChange` (may be async),
|
|
20
|
+
`summary`, `variant` (`card` | `row`), `disabled`, `formatError`, `icon`,
|
|
21
|
+
`dataTestId`, `className`, `sx`.
|
|
22
|
+
- **SettingGroup** — `SettingToggle`'s switch props plus `inactiveHint` and
|
|
23
|
+
`children` (the dependent rows).
|
|
24
|
+
- **SettingGrid** — `children`, `minColumnWidth`, `maxColumns`, `gap`,
|
|
25
|
+
`aria-label`, `dataTestId`, `className`, `sx`.
|
|
26
|
+
|
|
27
|
+
## Lint
|
|
28
|
+
|
|
29
|
+
- Clean (`pnpm lint:files src/components/layout/SettingCard`), plus the
|
|
30
|
+
complexity and flakiness gates.
|
|
31
|
+
|
|
32
|
+
## Type Errors
|
|
33
|
+
|
|
34
|
+
- None (`pnpm typecheck`, `tsc -p tsconfig.stories.json`).
|
|
35
|
+
|
|
36
|
+
## Testing Scenarios
|
|
37
|
+
|
|
38
|
+
- Closed/open rendering, in-place open, Escape, controlled mode, no focus steal
|
|
39
|
+
on mount; save pending / resolved / rejected / thrown / double-press /
|
|
40
|
+
`saveDisabled`; cancel discarding uncontrolled drafts; toggle optimistic flip,
|
|
41
|
+
revert, ignored second flip; group inert rows, hint, activation only after
|
|
42
|
+
the save lands; grid container-query CSS, row sizing, open-card span; layout
|
|
43
|
+
measured in Chromium by the test stories.
|
|
44
|
+
|
|
45
|
+
## Storybook Tests List
|
|
46
|
+
|
|
47
|
+
- Layout/SettingCard/Tests → 8, Layout/SettingToggle/Tests → 4,
|
|
48
|
+
Layout/SettingGroup/Tests → 3, Layout/SettingGrid/Tests → 3.
|
|
49
|
+
|
|
50
|
+
## Current
|
|
51
|
+
|
|
52
|
+
- 2026-09-26 16:40 BRT — v1: all four components, copy packs in both locales,
|
|
53
|
+
docs per component. Remaining TODO: first host adoption in the origin host
|
|
54
|
+
(FUT-1659 is the admin screens that would fold onto it).
|
|
55
|
+
- 2026-09-26 21:33 BRT — backported onto the `ui-6.30.x` maintenance line
|
|
56
|
+
(FUT-2823). `SettingCard.hooks.ts`'s focus-on-open and `SettingCard.styles.ts`
|
|
57
|
+
/ `SettingCard.parts.tsx` / `SettingGrid.tsx`'s size tokens now use
|
|
58
|
+
`SettingCard.focus.ts` / `SettingCard.rem.ts`, private copies of
|
|
59
|
+
`feedback/Dialog`'s `focusFirstTabbable` and `tokens/relative`'s `rem()` —
|
|
60
|
+
both shipped on `main` after this line's fork point, and pulling either
|
|
61
|
+
module forward would drag its own unrelated fix (a Dialog focus-trap change,
|
|
62
|
+
a whole lint gate) onto a line that takes only security and backport fixes.
|
|
63
|
+
Behaviour is unchanged; only where the two helpers live differs from `main`.
|
package/src/copy/layout.ts
CHANGED
|
@@ -16,3 +16,32 @@ export interface TableFilterCopy {
|
|
|
16
16
|
rangeMin: string;
|
|
17
17
|
rangeMax: string;
|
|
18
18
|
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The chrome words of an editable `SettingCard`. The card's own title, summary
|
|
22
|
+
* and status are per-card props; these are the words every card repeats.
|
|
23
|
+
*/
|
|
24
|
+
export interface SettingCardCopy {
|
|
25
|
+
/** The closed card's trigger. Its accessible name also carries the card's title. */
|
|
26
|
+
edit: string;
|
|
27
|
+
/** Discard the draft and close. */
|
|
28
|
+
cancel: string;
|
|
29
|
+
save: string;
|
|
30
|
+
/** Announced (and shown to sighted users as the Save label) while the save is pending. */
|
|
31
|
+
saving: string;
|
|
32
|
+
/** The disclosure that reveals the card's longer explanation. */
|
|
33
|
+
learnMore: string;
|
|
34
|
+
/** Shown when the save rejected and the host's `formatError` gave no sentence of its own. */
|
|
35
|
+
saveFailed: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* What a switch that saves the moment it flips says about that save — shared
|
|
40
|
+
* by `SettingToggle` and `SettingGroup`'s main switch.
|
|
41
|
+
*/
|
|
42
|
+
export interface SettingSwitchCopy {
|
|
43
|
+
/** Announced while the flip is being saved. */
|
|
44
|
+
saving: string;
|
|
45
|
+
/** Shown when the save rejected and the host's `formatError` gave no sentence of its own. */
|
|
46
|
+
saveFailed: string;
|
|
47
|
+
}
|
package/src/en-US.layout.ts
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
* is — see `en-US.ts` for why the packs live in per-family files.
|
|
4
4
|
*/
|
|
5
5
|
import type {
|
|
6
|
+
SettingCardCopy,
|
|
7
|
+
SettingSwitchCopy,
|
|
6
8
|
TableFilterCopy,
|
|
7
9
|
} from './copy';
|
|
8
10
|
|
|
@@ -13,3 +15,17 @@ export const EN_US_TABLE_FILTER_COPY: TableFilterCopy = {
|
|
|
13
15
|
rangeMin: "Minimum",
|
|
14
16
|
rangeMax: "Maximum",
|
|
15
17
|
};
|
|
18
|
+
|
|
19
|
+
export const EN_US_SETTING_CARD_COPY: SettingCardCopy = {
|
|
20
|
+
edit: "Edit",
|
|
21
|
+
cancel: "Cancel",
|
|
22
|
+
save: "Save",
|
|
23
|
+
saving: "Saving…",
|
|
24
|
+
learnMore: "Learn more",
|
|
25
|
+
saveFailed: "Could not save. Please try again.",
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export const EN_US_SETTING_SWITCH_COPY: SettingSwitchCopy = {
|
|
29
|
+
saving: "Saving…",
|
|
30
|
+
saveFailed: "Could not save. Please try again.",
|
|
31
|
+
};
|
package/src/locales.ts
CHANGED
|
@@ -38,6 +38,8 @@ import type {
|
|
|
38
38
|
PhoneInputCopy,
|
|
39
39
|
RichEditorToolbarCopy,
|
|
40
40
|
SectionOnboardingCopy,
|
|
41
|
+
SettingCardCopy,
|
|
42
|
+
SettingSwitchCopy,
|
|
41
43
|
SocialLoginCopy,
|
|
42
44
|
TableFilterCopy,
|
|
43
45
|
TimingDiagramCopy,
|
|
@@ -115,6 +117,14 @@ export const TABLE_FILTER_COPY = pack<TableFilterCopy>(
|
|
|
115
117
|
pt.PT_BR_TABLE_FILTER_COPY,
|
|
116
118
|
en.EN_US_TABLE_FILTER_COPY,
|
|
117
119
|
);
|
|
120
|
+
export const SETTING_CARD_COPY = pack<SettingCardCopy>(
|
|
121
|
+
pt.PT_BR_SETTING_CARD_COPY,
|
|
122
|
+
en.EN_US_SETTING_CARD_COPY,
|
|
123
|
+
);
|
|
124
|
+
export const SETTING_SWITCH_COPY = pack<SettingSwitchCopy>(
|
|
125
|
+
pt.PT_BR_SETTING_SWITCH_COPY,
|
|
126
|
+
en.EN_US_SETTING_SWITCH_COPY,
|
|
127
|
+
);
|
|
118
128
|
|
|
119
129
|
// navigation
|
|
120
130
|
export const COMMAND_PALETTE_COPY = pack<CommandPaletteCopy>(
|
package/src/pt-BR.layout.ts
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
* barrel over this folder — see that file for why.
|
|
4
4
|
*/
|
|
5
5
|
import type {
|
|
6
|
+
SettingCardCopy,
|
|
7
|
+
SettingSwitchCopy,
|
|
6
8
|
TableFilterCopy,
|
|
7
9
|
} from './copy';
|
|
8
10
|
|
|
@@ -13,3 +15,17 @@ export const PT_BR_TABLE_FILTER_COPY: TableFilterCopy = {
|
|
|
13
15
|
rangeMin: "Mínimo",
|
|
14
16
|
rangeMax: "Máximo",
|
|
15
17
|
};
|
|
18
|
+
|
|
19
|
+
export const PT_BR_SETTING_CARD_COPY: SettingCardCopy = {
|
|
20
|
+
edit: "Editar",
|
|
21
|
+
cancel: "Cancelar",
|
|
22
|
+
save: "Salvar",
|
|
23
|
+
saving: "Salvando…",
|
|
24
|
+
learnMore: "Saiba mais",
|
|
25
|
+
saveFailed: "Não foi possível salvar. Tente novamente.",
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export const PT_BR_SETTING_SWITCH_COPY: SettingSwitchCopy = {
|
|
29
|
+
saving: "Salvando…",
|
|
30
|
+
saveFailed: "Não foi possível salvar. Tente novamente.",
|
|
31
|
+
};
|
package/dist/chunk-A7RIZOAL.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
// src/pt-BR.layout.ts
|
|
2
|
-
var PT_BR_TABLE_FILTER_COPY = {
|
|
3
|
-
clearAllFilters: "Limpar todos os filtros",
|
|
4
|
-
clearKeyword: "Limpar a busca",
|
|
5
|
-
invalidRange: "O m\xE1ximo deve ser maior ou igual ao m\xEDnimo.",
|
|
6
|
-
rangeMin: "M\xEDnimo",
|
|
7
|
-
rangeMax: "M\xE1ximo"
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
export {
|
|
11
|
-
PT_BR_TABLE_FILTER_COPY
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=chunk-A7RIZOAL.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/pt-BR.layout.ts"],"sourcesContent":["/**\n * The pt-BR pack for the layout family. Split out of `pt-BR.ts`, which is a\n * barrel over this folder — see that file for why.\n */\nimport type {\n TableFilterCopy,\n} from './copy';\n\nexport const PT_BR_TABLE_FILTER_COPY: TableFilterCopy = {\n clearAllFilters: \"Limpar todos os filtros\",\n clearKeyword: \"Limpar a busca\",\n invalidRange: \"O máximo deve ser maior ou igual ao mínimo.\",\n rangeMin: \"Mínimo\",\n rangeMax: \"Máximo\",\n};\n"],"mappings":";AAQO,IAAM,0BAA2C;AAAA,EACtD,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,cAAc;AAAA,EACd,UAAU;AAAA,EACV,UAAU;AACZ;","names":[]}
|
package/dist/chunk-BY3JEK5T.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=chunk-BY3JEK5T.js.map
|