@12-apps/ui 6.40.0 → 6.41.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/NATIVE.md +1 -1
- package/components-catalog.md +43 -5
- package/dist/_internal/components/data-display/Badge/Badge.js +3 -3
- package/dist/_internal/components/data-display/Badge/Badge.styles.js +3 -3
- package/dist/_internal/components/data-display/Badge/BadgeContent.js +3 -3
- package/dist/_internal/components/data-display/CardKit/CardKebab.js +5 -5
- package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +5 -5
- package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +5 -5
- package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +3 -3
- package/dist/_internal/components/data-display/Carousel/Carousel.js +3 -3
- package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +3 -3
- package/dist/_internal/components/data-display/Carousel/Carousel.styles.js +3 -3
- package/dist/_internal/components/data-display/Chart/Chart.js +3 -3
- package/dist/_internal/components/data-display/Chart/SpecChart.js +3 -3
- package/dist/_internal/components/data-display/Chart/chart-context.js +3 -3
- package/dist/_internal/components/data-display/Chart/chart-internals.js +3 -3
- package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +48 -48
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +63 -63
- package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +7 -7
- package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +8 -8
- package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +14 -14
- package/dist/_internal/components/data-display/DataViews/base-card.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-bar-controls.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +18 -18
- package/dist/_internal/components/data-display/DataViews/data-views-columns.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-day-input.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-empty.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-export.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +23 -23
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +45 -45
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +29 -29
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +14 -14
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +17 -17
- package/dist/_internal/components/data-display/DataViews/data-views-number-input.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-search.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +17 -17
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +24 -24
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +16 -16
- package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +5 -5
- package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +7 -7
- package/dist/_internal/components/data-display/FleetMap/FleetBody.js +7 -7
- package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +6 -6
- package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +2 -2
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js +9 -9
- package/dist/_internal/components/data-display/MapPreview/MapLayers.js +4 -4
- package/dist/_internal/components/data-display/MapPreview/MapPreview.js +5 -5
- package/dist/_internal/components/data-display/MapPreview/MapSearchBar.js +3 -3
- package/dist/_internal/components/data-display/Sheet/Sheet.body.js +3 -3
- package/dist/_internal/components/data-display/Sheet/Sheet.js +3 -3
- package/dist/_internal/components/data-display/Sheet/Sheet.styles.js +3 -3
- package/dist/_internal/components/data-display/index.js +9 -9
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +5 -5
- package/dist/_internal/components/feedback/Dialog/Dialog.js +2 -2
- package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +5 -5
- package/dist/_internal/components/feedback/index.js +8 -8
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +7 -7
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +5 -5
- package/dist/_internal/components/form/AddressAutocomplete/AddressFallbackField.js +4 -4
- package/dist/_internal/components/form/AddressAutocomplete/AddressInputField.js +4 -4
- package/dist/_internal/components/form/AddressAutocomplete/AddressTextField.js +3 -3
- package/dist/_internal/components/form/Autocomplete/Autocomplete.js +4 -4
- package/dist/_internal/components/form/Autocomplete/Autocomplete.parts.js +3 -3
- package/dist/_internal/components/form/Button/Button.js +4 -4
- package/dist/_internal/components/form/Button/Button.styles.js +3 -3
- package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +8 -8
- package/dist/_internal/components/form/CategorySelect/CategoryPanelFoot.js +4 -4
- package/dist/_internal/components/form/CategorySelect/CategoryPanelHead.js +4 -4
- package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +5 -5
- package/dist/_internal/components/form/CategorySelect/CategoryRows.js +4 -4
- package/dist/_internal/components/form/CategorySelect/CategorySelect.js +10 -10
- package/dist/_internal/components/form/CategorySelect/CategorySelect.styles.js +3 -3
- package/dist/_internal/components/form/CategorySelect/CategoryTrigger.js +4 -4
- package/dist/_internal/components/form/CepField/CepField.js +5 -5
- package/dist/_internal/components/form/CodeEditor/CodeEditor.js +2 -2
- package/dist/_internal/components/form/Command/Command.js +3 -3
- package/dist/_internal/components/form/Command/Command.styles.js +3 -3
- package/dist/_internal/components/form/CreatableSelect/CreatableSelect.js +3 -3
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +5 -5
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +7 -7
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +4 -4
- package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +5 -5
- package/dist/_internal/components/form/Input/Input.js +4 -4
- package/dist/_internal/components/form/Input/Input.styles.js +3 -3
- package/dist/_internal/components/form/InputOTP/InputOTP.js +4 -4
- package/dist/_internal/components/form/InputOTP/InputOTP.styles.js +3 -3
- package/dist/_internal/components/form/Label/Label.js +3 -3
- package/dist/_internal/components/form/Label/Label.styles.js +3 -3
- package/dist/_internal/components/form/Menubar/Menubar.item.js +3 -3
- package/dist/_internal/components/form/Menubar/Menubar.js +3 -3
- package/dist/_internal/components/form/Menubar/Menubar.styles.js +3 -3
- package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +3 -3
- package/dist/_internal/components/form/NumberField/NumberField.helpers.js +20 -0
- package/dist/_internal/components/form/NumberField/NumberField.js +28 -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/PhoneInput/PhoneInput.js +3 -3
- package/dist/_internal/components/form/RadioGroup/RadioGroup.js +5 -5
- package/dist/_internal/components/form/RadioGroup/RadioGroup.styles.js +3 -3
- package/dist/_internal/components/form/RadioGroup/RadioGroup.variants.js +4 -4
- package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +3 -3
- package/dist/_internal/components/form/Select/Select.js +3 -3
- package/dist/_internal/components/form/Switch/Switch.js +5 -5
- 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 +3 -3
- package/dist/_internal/components/form/Textarea/TextareaRichEditor.js +4 -4
- package/dist/_internal/components/form/Toggle/Toggle.js +4 -4
- package/dist/_internal/components/form/Toggle/Toggle.styles.js +3 -3
- package/dist/_internal/components/form/ToggleGroup/ToggleGroup.js +3 -3
- package/dist/_internal/components/form/index.js +53 -47
- package/dist/_internal/components/form/total-form/Fields/CategoryField.js +11 -11
- package/dist/_internal/components/form/total-form/Fields/CepField.js +6 -6
- package/dist/_internal/components/form/total-form/Fields/SelectField.js +4 -4
- package/dist/_internal/components/form/total-form/Fields/TextField.js +5 -5
- package/dist/_internal/components/form/total-form/Fields/ToggleField.js +4 -4
- package/dist/_internal/components/form/total-form/Fields/index.js +24 -24
- package/dist/_internal/components/form/total-form/SubmitButton.js +5 -5
- package/dist/_internal/components/index.js +155 -116
- package/dist/_internal/components/layout/Box/Box.js +6 -6
- package/dist/_internal/components/layout/Card/Card.js +2 -2
- package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +3 -3
- package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +3 -3
- package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +4 -4
- package/dist/_internal/components/layout/ContentToolbar/MultiSelectTriggers.js +3 -3
- package/dist/_internal/components/layout/ContentToolbar/SavedViewsMenu.js +3 -3
- package/dist/_internal/components/layout/ContentToolbar/SortByDropdown.js +3 -3
- package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +3 -3
- package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +2 -2
- 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 +54 -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 +59 -0
- package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js.map +1 -0
- package/dist/_internal/components/layout/SettingCard/SettingCard.styles.js +37 -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 +56 -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 +65 -0
- package/dist/_internal/components/layout/SettingCard/SettingGroup.js.map +1 -0
- package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +63 -0
- package/dist/_internal/components/layout/SettingCard/SettingSwitch.js.map +1 -0
- package/dist/_internal/components/layout/SettingCard/SettingToggle.js +65 -0
- package/dist/_internal/components/layout/SettingCard/SettingToggle.js.map +1 -0
- package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +4 -4
- 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/Stack/Stack.js +7 -7
- package/dist/_internal/components/layout/TableFilter/TableFilter.js +3 -3
- package/dist/_internal/components/layout/index.js +88 -26
- package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +8 -8
- package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +3 -3
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +2 -2
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +4 -4
- package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +2 -2
- package/dist/_internal/components/navigation/Pagination/Pagination.js +4 -4
- package/dist/_internal/components/navigation/Pagination/PaginationParts.js +3 -3
- package/dist/_internal/components/navigation/Tabs/Tabs.js +4 -4
- package/dist/_internal/components/navigation/Tabs/Tabs.styles.js +2 -2
- package/dist/_internal/components/navigation/index.js +27 -27
- package/dist/_internal/components/typography/index.js +4 -4
- package/dist/_internal/components/utility/InstallPrompt/InstallPrompt.js +2 -2
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +3 -3
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +3 -3
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +3 -3
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +3 -3
- package/dist/_internal/components/utility/index.js +16 -16
- 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 +5 -5
- package/dist/_internal/provider/mui-bridge.js +4 -4
- package/dist/_internal/provider/use-ui-theme.js +5 -5
- 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 +7 -7
- package/dist/_internal/tokens/density.js +3 -3
- package/dist/_internal/tokens/field-height.js +2 -2
- package/dist/_internal/user-avatar/user-avatar.js +7 -7
- package/dist/charts.js +3 -3
- package/dist/chunk-2GTORM5E.js +1 -0
- package/dist/chunk-2GTORM5E.js.map +1 -0
- package/dist/{chunk-3PGFMBEI.js → chunk-2LKWJV65.js} +5 -5
- 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-CKPFLEOL.js → chunk-3CUWQXTG.js} +3 -3
- package/dist/{chunk-GVFPOKJW.js → chunk-3CYTVX4T.js} +5 -5
- package/dist/chunk-3DO5AJCG.js +117 -0
- package/dist/chunk-3DO5AJCG.js.map +1 -0
- package/dist/{chunk-TJPQIFI4.js → chunk-3EPA2A4M.js} +8 -8
- package/dist/{chunk-HDELNMZC.js → chunk-3MJHHPRW.js} +2 -2
- package/dist/chunk-3U7WKBMH.js +27 -0
- package/dist/chunk-3U7WKBMH.js.map +1 -0
- package/dist/{chunk-RNC574FS.js → chunk-3UEZ6NUI.js} +2 -2
- package/dist/{chunk-OXLOC6TC.js → chunk-3XS37SQT.js} +3 -3
- package/dist/{chunk-2Q5QHSU2.js → chunk-44USLRMT.js} +8 -8
- package/dist/{chunk-O7OQZJ3D.js → chunk-4GN2RLYL.js} +2 -2
- package/dist/{chunk-QUFKPCWD.js → chunk-4S2LWZ7L.js} +2 -2
- package/dist/{chunk-LPWIAVGP.js → chunk-4UVFPORR.js} +5 -5
- package/dist/{chunk-3B4YMZD5.js → chunk-4Z7GEO2R.js} +2 -2
- package/dist/{chunk-XXPEFK4V.js → chunk-53O2TNSR.js} +5 -5
- package/dist/{chunk-G3SKAI6S.js → chunk-54HTXJJ2.js} +2 -2
- package/dist/{chunk-JE6RZ5L6.js → chunk-5ZOJLYD2.js} +4 -4
- package/dist/{chunk-JDUIWHJ3.js → chunk-6H4TPEMO.js} +2 -2
- package/dist/{chunk-FYZJEME4.js → chunk-6JGATEOF.js} +3 -3
- package/dist/{chunk-ZFUOLLZS.js → chunk-6L2FKTBO.js} +5 -5
- package/dist/{chunk-BDBI4W77.js → chunk-6MD5QXXJ.js} +3 -3
- package/dist/{chunk-LJSKF43D.js → chunk-6TPYT3UC.js} +5 -5
- package/dist/{chunk-KZT5JC3E.js → chunk-6ZD3FI5P.js} +2 -2
- package/dist/{chunk-SBV62CSC.js → chunk-72FPUWD6.js} +2 -2
- package/dist/{chunk-L75CZ3SI.js → chunk-72S2RGWD.js} +2 -2
- package/dist/{chunk-WUFTDJ2L.js → chunk-77BKKPCI.js} +2 -2
- package/dist/{chunk-5A4XPYNK.js → chunk-7FEXRMJE.js} +2 -2
- package/dist/{chunk-AW336SO7.js → chunk-7KKMZJFT.js} +2 -2
- package/dist/{chunk-4SSWJRC4.js → chunk-7TE4TMS3.js} +3 -3
- package/dist/chunk-AEMD6JHZ.js +1 -0
- package/dist/chunk-AEMD6JHZ.js.map +1 -0
- package/dist/{chunk-5XWCKCHP.js → chunk-ALOUJ3CE.js} +4 -4
- package/dist/{chunk-UFUMYNKS.js → chunk-AWG2AJHX.js} +5 -5
- package/dist/{chunk-DDVNYVJH.js → chunk-B3QWQG62.js} +2 -2
- package/dist/{chunk-CKI33CN2.js → chunk-BA6Z52QN.js} +2 -2
- package/dist/{chunk-RSWHKOUN.js → chunk-BM4KKGL7.js} +2 -2
- package/dist/chunk-BOWS4U6W.js +1 -0
- package/dist/chunk-BOWS4U6W.js.map +1 -0
- package/dist/{chunk-OZGJ3YCN.js → chunk-BVSSEOLI.js} +2 -2
- package/dist/{chunk-FI6BL4UU.js → chunk-C2TERIB4.js} +2 -2
- package/dist/{chunk-DUITNU72.js → chunk-C6OVO6AT.js} +2 -2
- package/dist/{chunk-WL2S2YB3.js → chunk-CKHFYTIX.js} +4 -4
- package/dist/{chunk-GBEHJBYM.js → chunk-CLK67TNH.js} +2 -2
- package/dist/{chunk-T2HZ3GVA.js → chunk-CM2Q7IH3.js} +4 -4
- package/dist/{chunk-GE26GVHM.js → chunk-CMFJQH6A.js} +2 -2
- package/dist/{chunk-6PPHALM3.js → chunk-CMLIWUBW.js} +4 -4
- package/dist/{chunk-AU3GV6UL.js → chunk-DH5UJD2I.js} +3 -3
- package/dist/{chunk-BKT2KJ56.js → chunk-DH6SL3SY.js} +2 -2
- package/dist/{chunk-TRTX4BDI.js → chunk-DJKVSUXH.js} +2 -2
- package/dist/{chunk-VE3P77TV.js → chunk-DLWLIPCP.js} +2 -2
- package/dist/{chunk-AJVFSUC4.js → chunk-EIII4QU4.js} +9 -9
- package/dist/{chunk-MWPXKZ7O.js → chunk-ERY6D2OV.js} +4 -4
- package/dist/{chunk-TJ7NQG7E.js → chunk-FBUCXTA4.js} +4 -4
- package/dist/{chunk-SE6TW72O.js → chunk-FDMQ7H22.js} +2 -2
- package/dist/{chunk-EKM7C4X2.js → chunk-FTQBVZ7V.js} +3 -3
- package/dist/{chunk-E2FMNY6B.js → chunk-FXWXBEOZ.js} +2 -2
- package/dist/{chunk-UI5O6J6R.js → chunk-FY6PONLA.js} +4 -4
- package/dist/{chunk-QUIHOPOC.js → chunk-G4TKMUOL.js} +2 -2
- package/dist/{chunk-6BS2RBW4.js → chunk-G7XHJPLO.js} +3 -3
- package/dist/{chunk-4RXPIHJG.js → chunk-GE2CCITY.js} +2 -2
- package/dist/{chunk-WRHBXOGN.js → chunk-GG62LKA3.js} +5 -5
- package/dist/{chunk-YQCRQHVU.js → chunk-GI63FQEJ.js} +4 -4
- package/dist/{chunk-WUQKXAYF.js → chunk-GPHURU2K.js} +5 -5
- package/dist/{chunk-GPT673YL.js → chunk-H72YKEGD.js} +2 -2
- package/dist/chunk-HALFOXSZ.js +1 -0
- package/dist/chunk-HALFOXSZ.js.map +1 -0
- package/dist/{chunk-UP6RO2PR.js → chunk-HKBJZX3C.js} +3 -3
- package/dist/chunk-IC7GHPMK.js +22 -0
- package/dist/chunk-IC7GHPMK.js.map +1 -0
- package/dist/{chunk-COUFRGD6.js → chunk-J6KLT7HP.js} +4 -4
- package/dist/{chunk-N4D5V3AA.js → chunk-JAGAFEZL.js} +2 -2
- package/dist/{chunk-CLTK76ZF.js → chunk-JE5GEWTG.js} +5 -5
- package/dist/{chunk-23XBBGWD.js → chunk-JFLFZLOA.js} +5 -5
- package/dist/{chunk-BLUURKCY.js → chunk-K6LNHHSH.js} +2 -2
- package/dist/{chunk-HSNOWYEE.js → chunk-K7FSTB2K.js} +2 -2
- package/dist/{chunk-SXVCXLKU.js → chunk-K7MQP2KT.js} +3 -3
- package/dist/{chunk-QQ46JX5H.js → chunk-KHOAXZW2.js} +4 -4
- package/dist/{chunk-SCVBGQFO.js → chunk-KQZGUHYZ.js} +2 -2
- package/dist/{chunk-GJ7GIGDS.js → chunk-LCWGNDTH.js} +2 -2
- package/dist/{chunk-4D2IVVHR.js → chunk-LF3EVXMF.js} +2 -2
- package/dist/{chunk-2XTBGZSR.js → chunk-LGCRL7DK.js} +2 -2
- package/dist/{chunk-WY35GCHY.js → chunk-LODMNSLR.js} +3 -3
- package/dist/{chunk-EXFX3JRN.js → chunk-M47ZOUGF.js} +4 -4
- package/dist/{chunk-AQCQ2USS.js → chunk-M65ZNPLO.js} +2 -2
- package/dist/{chunk-JZ5IGO5G.js → chunk-NCB4GBRL.js} +2 -2
- package/dist/{chunk-SE4WZIKD.js → chunk-NFGIA2ZV.js} +2 -2
- package/dist/{chunk-H772ZSAI.js → chunk-NQ7NMCRI.js} +2 -2
- package/dist/{chunk-P7JF6XT7.js → chunk-NRSVI23L.js} +2 -2
- package/dist/{chunk-FRTEU7ZO.js → chunk-NU55QUMO.js} +2 -2
- package/dist/chunk-OJUORFGO.js +87 -0
- package/dist/chunk-OJUORFGO.js.map +1 -0
- package/dist/{chunk-JB56E4XQ.js → chunk-PAICZOL5.js} +6 -6
- package/dist/chunk-PEOOCQ2T.js +140 -0
- package/dist/chunk-PEOOCQ2T.js.map +1 -0
- package/dist/chunk-PGGGKYWG.js +1 -0
- package/dist/chunk-PGGGKYWG.js.map +1 -0
- package/dist/{chunk-QX3CXOJ3.js → chunk-PTONBPZL.js} +2 -2
- package/dist/chunk-Q4JWWTL4.js +36 -0
- package/dist/chunk-Q4JWWTL4.js.map +1 -0
- package/dist/{chunk-4UASV6VL.js → chunk-QDELBNL3.js} +2 -2
- package/dist/{chunk-ZE56GK5C.js → chunk-QEI5DC6S.js} +5 -5
- package/dist/chunk-QGUNUXTT.js +1 -0
- package/dist/chunk-QGUNUXTT.js.map +1 -0
- package/dist/{chunk-3UXBIUJF.js → chunk-RDFPM2AQ.js} +5 -5
- package/dist/chunk-RDZGXJOD.js +74 -0
- package/dist/chunk-RDZGXJOD.js.map +1 -0
- package/dist/chunk-RN7UJI7S.js +1 -0
- package/dist/chunk-RN7UJI7S.js.map +1 -0
- package/dist/chunk-RPBGUWNF.js +168 -0
- package/dist/chunk-RPBGUWNF.js.map +1 -0
- package/dist/{chunk-BKHO4RSF.js → chunk-RZ2VZ7SL.js} +2 -2
- package/dist/{chunk-MT7QJRP7.js → chunk-S4IXC2V3.js} +3 -3
- package/dist/chunk-SALQ65SM.js +118 -0
- package/dist/chunk-SALQ65SM.js.map +1 -0
- package/dist/{chunk-XOZYUJQ5.js → chunk-SDKOOVEX.js} +5 -3
- package/dist/{chunk-XOZYUJQ5.js.map → chunk-SDKOOVEX.js.map} +1 -1
- package/dist/{chunk-5K4G2XYS.js → chunk-SNBAMWI5.js} +2 -2
- package/dist/{chunk-MKJHDHLF.js → chunk-TCNTIGMY.js} +2 -2
- package/dist/{chunk-RUZVK4FV.js → chunk-TPVSHO75.js} +3 -3
- package/dist/{chunk-I72PREY7.js → chunk-TTJTMDLI.js} +2 -2
- package/dist/{chunk-TU5EIKJA.js → chunk-U5SH3VRJ.js} +4 -4
- package/dist/chunk-U67ZQ6VM.js +82 -0
- package/dist/chunk-U67ZQ6VM.js.map +1 -0
- package/dist/{chunk-APPIPQFT.js → chunk-UGPRBJWB.js} +6 -6
- package/dist/{chunk-V3RQFWL6.js → chunk-VEEG4UXZ.js} +2 -2
- package/dist/{chunk-DOLDAAXH.js → chunk-VOJBLBXE.js} +3 -3
- package/dist/{chunk-WTXPGASQ.js → chunk-VWJEM2ER.js} +3 -3
- package/dist/chunk-VYM2GPR6.js +47 -0
- package/dist/chunk-VYM2GPR6.js.map +1 -0
- package/dist/{chunk-BXEMC4YH.js → chunk-VYV3JOV5.js} +2 -2
- package/dist/{chunk-OTWMG7B2.js → chunk-WN5PNP6F.js} +4 -4
- package/dist/chunk-X3C3VTYS.js +85 -0
- package/dist/chunk-X3C3VTYS.js.map +1 -0
- package/dist/{chunk-HZBRXLV7.js → chunk-XB7HYOMM.js} +2 -2
- package/dist/{chunk-C6FVXX7Y.js → chunk-XBLFK2FL.js} +2 -2
- package/dist/{chunk-EDBVMLNX.js → chunk-XHA2NXLD.js} +2 -2
- package/dist/chunk-XJQNSMGA.js +10 -0
- package/dist/chunk-XJQNSMGA.js.map +1 -0
- package/dist/{chunk-ZO4NO77T.js → chunk-XO4ZUHVH.js} +2 -2
- package/dist/{chunk-D455V3BW.js → chunk-XVZG52CM.js} +7 -7
- package/dist/{chunk-OPT7X3Y6.js → chunk-XXL4PM4M.js} +2 -2
- package/dist/{chunk-3HKUOLPD.js → chunk-XZY7O7JJ.js} +4 -4
- package/dist/{chunk-53TDQYA3.js → chunk-Y2UXX5IQ.js} +4 -4
- package/dist/{chunk-743SY4WQ.js → chunk-YLXQWYOG.js} +5 -5
- package/dist/{chunk-Q33JWFSA.js → chunk-YPIVLPXF.js} +2 -2
- package/dist/{chunk-T7UUP7VD.js → chunk-YRUX7XMQ.js} +2 -2
- package/dist/{chunk-4JEXYOSN.js → chunk-YTXZUTLF.js} +2 -2
- package/dist/{chunk-V7A5ZAAF.js → chunk-YWJDUJAR.js} +3 -3
- package/dist/{chunk-ZK7YERPQ.js → chunk-Z2NN53E5.js} +2 -2
- package/dist/{chunk-CLSC36JS.js → chunk-Z4DKVLYG.js} +3 -3
- package/dist/{chunk-NFJ3VVD3.js → chunk-Z6T5SXST.js} +5 -5
- package/dist/{chunk-IITZA6U2.js → chunk-ZBVU2YWV.js} +9 -9
- package/dist/{chunk-IEWAFD6L.js → chunk-ZC5HDBQO.js} +2 -2
- package/dist/{chunk-KQS4ZJGS.js → chunk-ZGCPDA3F.js} +5 -5
- package/dist/{chunk-AHDNANID.js → chunk-ZH2SZ6B3.js} +2 -2
- package/dist/{chunk-KOX2AEFW.js → chunk-ZKWVCSAB.js} +2 -2
- package/dist/{chunk-K2U4BNHQ.js → chunk-ZNBLGS66.js} +2 -2
- package/dist/{chunk-WGUY7EIB.js → chunk-ZUME25DS.js} +5 -5
- package/dist/data-display/Badge.js +3 -3
- package/dist/data-display/CardKit.js +6 -6
- package/dist/data-display/Carousel.js +3 -3
- package/dist/data-display/Chart.js +3 -3
- package/dist/data-display/Chip.js +1 -0
- package/dist/data-display/DataViews.js +67 -67
- package/dist/data-display/FleetMap.js +9 -9
- package/dist/data-display/MapPreview.js +5 -5
- package/dist/data-display/Sheet.js +3 -3
- package/dist/en-US.js +15 -11
- package/dist/feedback/ConfirmAction.js +5 -5
- package/dist/feedback/Dialog.js +2 -2
- package/dist/feedback/NotificationStatusNotice.js +5 -5
- package/dist/form/AddressAutocomplete.js +7 -7
- package/dist/form/Autocomplete.js +4 -4
- package/dist/form/Button.js +4 -4
- package/dist/form/CategorySelect.js +10 -10
- package/dist/form/CepField.js +5 -5
- package/dist/form/CodeEditor.js +2 -2
- package/dist/form/Command.js +3 -3
- package/dist/form/CreatableSelect.js +3 -3
- package/dist/form/DateRangePicker.js +7 -7
- package/dist/form/Input.js +4 -4
- package/dist/form/InputOTP.js +4 -4
- package/dist/form/Label.js +3 -3
- package/dist/form/Menubar.js +3 -3
- package/dist/form/NumberField.js +29 -0
- package/dist/form/NumberField.js.map +1 -0
- package/dist/form/PhoneInput.js +3 -3
- package/dist/form/RadioGroup.js +5 -5
- package/dist/form/RichTextEditor.js +3 -3
- package/dist/form/Select.js +3 -3
- package/dist/form/Switch.js +5 -5
- package/dist/form/Textarea.js +3 -3
- package/dist/form/Toggle.js +4 -4
- package/dist/form/ToggleGroup.js +3 -3
- package/dist/form/total-form.js +30 -30
- package/dist/icons.js +7 -6
- package/dist/layout/Box.js +6 -6
- package/dist/layout/Card.js +2 -2
- package/dist/layout/Collapsible.js +1 -0
- package/dist/layout/ContentToolbar.js +13 -13
- package/dist/layout/ScrollArea.js +2 -2
- package/dist/layout/SettingCard.js +80 -0
- package/dist/layout/SettingCard.js.map +1 -0
- package/dist/layout/SettingsLayout.js +4 -4
- package/dist/layout/Stack.js +7 -7
- package/dist/layout/TableFilter.js +3 -3
- package/dist/locales.js +37 -23
- package/dist/locales.js.map +1 -1
- package/dist/navigation/AppHeader.js +12 -12
- package/dist/navigation/NavigationMenu.js +4 -4
- package/dist/navigation/Pagination.js +4 -4
- package/dist/navigation/Tabs.js +4 -4
- package/dist/provider.js +6 -6
- package/dist/pt-BR.js +12 -8
- package/dist/social-login-button.js +7 -7
- package/dist/tokens.js +4 -4
- 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.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.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/user-avatar.js +7 -7
- package/dist/utility/InstallPrompt.js +2 -2
- package/dist/utility/WorkflowStep.js +3 -3
- package/package.json +9 -1
- package/src/components/form/Input/Input.tsx +2 -0
- 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 +42 -0
- package/src/components/form/index.ts +1 -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.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 +54 -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-FZJ2FTGE.js +0 -1
- package/dist/chunk-GRHECKHU.js +0 -13
- package/dist/chunk-GRHECKHU.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-3PGFMBEI.js.map → chunk-2LKWJV65.js.map} +0 -0
- /package/dist/{chunk-IIUB4IOH.js.map → chunk-2XHIF3M3.js.map} +0 -0
- /package/dist/{chunk-CKPFLEOL.js.map → chunk-3CUWQXTG.js.map} +0 -0
- /package/dist/{chunk-GVFPOKJW.js.map → chunk-3CYTVX4T.js.map} +0 -0
- /package/dist/{chunk-TJPQIFI4.js.map → chunk-3EPA2A4M.js.map} +0 -0
- /package/dist/{chunk-HDELNMZC.js.map → chunk-3MJHHPRW.js.map} +0 -0
- /package/dist/{chunk-RNC574FS.js.map → chunk-3UEZ6NUI.js.map} +0 -0
- /package/dist/{chunk-OXLOC6TC.js.map → chunk-3XS37SQT.js.map} +0 -0
- /package/dist/{chunk-2Q5QHSU2.js.map → chunk-44USLRMT.js.map} +0 -0
- /package/dist/{chunk-O7OQZJ3D.js.map → chunk-4GN2RLYL.js.map} +0 -0
- /package/dist/{chunk-QUFKPCWD.js.map → chunk-4S2LWZ7L.js.map} +0 -0
- /package/dist/{chunk-LPWIAVGP.js.map → chunk-4UVFPORR.js.map} +0 -0
- /package/dist/{chunk-3B4YMZD5.js.map → chunk-4Z7GEO2R.js.map} +0 -0
- /package/dist/{chunk-XXPEFK4V.js.map → chunk-53O2TNSR.js.map} +0 -0
- /package/dist/{chunk-G3SKAI6S.js.map → chunk-54HTXJJ2.js.map} +0 -0
- /package/dist/{chunk-JE6RZ5L6.js.map → chunk-5ZOJLYD2.js.map} +0 -0
- /package/dist/{chunk-JDUIWHJ3.js.map → chunk-6H4TPEMO.js.map} +0 -0
- /package/dist/{chunk-FYZJEME4.js.map → chunk-6JGATEOF.js.map} +0 -0
- /package/dist/{chunk-ZFUOLLZS.js.map → chunk-6L2FKTBO.js.map} +0 -0
- /package/dist/{chunk-BDBI4W77.js.map → chunk-6MD5QXXJ.js.map} +0 -0
- /package/dist/{chunk-LJSKF43D.js.map → chunk-6TPYT3UC.js.map} +0 -0
- /package/dist/{chunk-KZT5JC3E.js.map → chunk-6ZD3FI5P.js.map} +0 -0
- /package/dist/{chunk-SBV62CSC.js.map → chunk-72FPUWD6.js.map} +0 -0
- /package/dist/{chunk-L75CZ3SI.js.map → chunk-72S2RGWD.js.map} +0 -0
- /package/dist/{chunk-WUFTDJ2L.js.map → chunk-77BKKPCI.js.map} +0 -0
- /package/dist/{chunk-5A4XPYNK.js.map → chunk-7FEXRMJE.js.map} +0 -0
- /package/dist/{chunk-AW336SO7.js.map → chunk-7KKMZJFT.js.map} +0 -0
- /package/dist/{chunk-4SSWJRC4.js.map → chunk-7TE4TMS3.js.map} +0 -0
- /package/dist/{chunk-5XWCKCHP.js.map → chunk-ALOUJ3CE.js.map} +0 -0
- /package/dist/{chunk-UFUMYNKS.js.map → chunk-AWG2AJHX.js.map} +0 -0
- /package/dist/{chunk-DDVNYVJH.js.map → chunk-B3QWQG62.js.map} +0 -0
- /package/dist/{chunk-CKI33CN2.js.map → chunk-BA6Z52QN.js.map} +0 -0
- /package/dist/{chunk-RSWHKOUN.js.map → chunk-BM4KKGL7.js.map} +0 -0
- /package/dist/{chunk-OZGJ3YCN.js.map → chunk-BVSSEOLI.js.map} +0 -0
- /package/dist/{chunk-FI6BL4UU.js.map → chunk-C2TERIB4.js.map} +0 -0
- /package/dist/{chunk-DUITNU72.js.map → chunk-C6OVO6AT.js.map} +0 -0
- /package/dist/{chunk-WL2S2YB3.js.map → chunk-CKHFYTIX.js.map} +0 -0
- /package/dist/{chunk-GBEHJBYM.js.map → chunk-CLK67TNH.js.map} +0 -0
- /package/dist/{chunk-T2HZ3GVA.js.map → chunk-CM2Q7IH3.js.map} +0 -0
- /package/dist/{chunk-GE26GVHM.js.map → chunk-CMFJQH6A.js.map} +0 -0
- /package/dist/{chunk-6PPHALM3.js.map → chunk-CMLIWUBW.js.map} +0 -0
- /package/dist/{chunk-AU3GV6UL.js.map → chunk-DH5UJD2I.js.map} +0 -0
- /package/dist/{chunk-BKT2KJ56.js.map → chunk-DH6SL3SY.js.map} +0 -0
- /package/dist/{chunk-TRTX4BDI.js.map → chunk-DJKVSUXH.js.map} +0 -0
- /package/dist/{chunk-VE3P77TV.js.map → chunk-DLWLIPCP.js.map} +0 -0
- /package/dist/{chunk-AJVFSUC4.js.map → chunk-EIII4QU4.js.map} +0 -0
- /package/dist/{chunk-MWPXKZ7O.js.map → chunk-ERY6D2OV.js.map} +0 -0
- /package/dist/{chunk-TJ7NQG7E.js.map → chunk-FBUCXTA4.js.map} +0 -0
- /package/dist/{chunk-SE6TW72O.js.map → chunk-FDMQ7H22.js.map} +0 -0
- /package/dist/{chunk-EKM7C4X2.js.map → chunk-FTQBVZ7V.js.map} +0 -0
- /package/dist/{chunk-E2FMNY6B.js.map → chunk-FXWXBEOZ.js.map} +0 -0
- /package/dist/{chunk-UI5O6J6R.js.map → chunk-FY6PONLA.js.map} +0 -0
- /package/dist/{chunk-QUIHOPOC.js.map → chunk-G4TKMUOL.js.map} +0 -0
- /package/dist/{chunk-6BS2RBW4.js.map → chunk-G7XHJPLO.js.map} +0 -0
- /package/dist/{chunk-4RXPIHJG.js.map → chunk-GE2CCITY.js.map} +0 -0
- /package/dist/{chunk-WRHBXOGN.js.map → chunk-GG62LKA3.js.map} +0 -0
- /package/dist/{chunk-YQCRQHVU.js.map → chunk-GI63FQEJ.js.map} +0 -0
- /package/dist/{chunk-WUQKXAYF.js.map → chunk-GPHURU2K.js.map} +0 -0
- /package/dist/{chunk-GPT673YL.js.map → chunk-H72YKEGD.js.map} +0 -0
- /package/dist/{chunk-UP6RO2PR.js.map → chunk-HKBJZX3C.js.map} +0 -0
- /package/dist/{chunk-COUFRGD6.js.map → chunk-J6KLT7HP.js.map} +0 -0
- /package/dist/{chunk-N4D5V3AA.js.map → chunk-JAGAFEZL.js.map} +0 -0
- /package/dist/{chunk-CLTK76ZF.js.map → chunk-JE5GEWTG.js.map} +0 -0
- /package/dist/{chunk-23XBBGWD.js.map → chunk-JFLFZLOA.js.map} +0 -0
- /package/dist/{chunk-BLUURKCY.js.map → chunk-K6LNHHSH.js.map} +0 -0
- /package/dist/{chunk-HSNOWYEE.js.map → chunk-K7FSTB2K.js.map} +0 -0
- /package/dist/{chunk-SXVCXLKU.js.map → chunk-K7MQP2KT.js.map} +0 -0
- /package/dist/{chunk-QQ46JX5H.js.map → chunk-KHOAXZW2.js.map} +0 -0
- /package/dist/{chunk-SCVBGQFO.js.map → chunk-KQZGUHYZ.js.map} +0 -0
- /package/dist/{chunk-GJ7GIGDS.js.map → chunk-LCWGNDTH.js.map} +0 -0
- /package/dist/{chunk-4D2IVVHR.js.map → chunk-LF3EVXMF.js.map} +0 -0
- /package/dist/{chunk-2XTBGZSR.js.map → chunk-LGCRL7DK.js.map} +0 -0
- /package/dist/{chunk-WY35GCHY.js.map → chunk-LODMNSLR.js.map} +0 -0
- /package/dist/{chunk-EXFX3JRN.js.map → chunk-M47ZOUGF.js.map} +0 -0
- /package/dist/{chunk-AQCQ2USS.js.map → chunk-M65ZNPLO.js.map} +0 -0
- /package/dist/{chunk-JZ5IGO5G.js.map → chunk-NCB4GBRL.js.map} +0 -0
- /package/dist/{chunk-SE4WZIKD.js.map → chunk-NFGIA2ZV.js.map} +0 -0
- /package/dist/{chunk-H772ZSAI.js.map → chunk-NQ7NMCRI.js.map} +0 -0
- /package/dist/{chunk-P7JF6XT7.js.map → chunk-NRSVI23L.js.map} +0 -0
- /package/dist/{chunk-FRTEU7ZO.js.map → chunk-NU55QUMO.js.map} +0 -0
- /package/dist/{chunk-JB56E4XQ.js.map → chunk-PAICZOL5.js.map} +0 -0
- /package/dist/{chunk-QX3CXOJ3.js.map → chunk-PTONBPZL.js.map} +0 -0
- /package/dist/{chunk-4UASV6VL.js.map → chunk-QDELBNL3.js.map} +0 -0
- /package/dist/{chunk-ZE56GK5C.js.map → chunk-QEI5DC6S.js.map} +0 -0
- /package/dist/{chunk-3UXBIUJF.js.map → chunk-RDFPM2AQ.js.map} +0 -0
- /package/dist/{chunk-BKHO4RSF.js.map → chunk-RZ2VZ7SL.js.map} +0 -0
- /package/dist/{chunk-MT7QJRP7.js.map → chunk-S4IXC2V3.js.map} +0 -0
- /package/dist/{chunk-5K4G2XYS.js.map → chunk-SNBAMWI5.js.map} +0 -0
- /package/dist/{chunk-MKJHDHLF.js.map → chunk-TCNTIGMY.js.map} +0 -0
- /package/dist/{chunk-RUZVK4FV.js.map → chunk-TPVSHO75.js.map} +0 -0
- /package/dist/{chunk-I72PREY7.js.map → chunk-TTJTMDLI.js.map} +0 -0
- /package/dist/{chunk-TU5EIKJA.js.map → chunk-U5SH3VRJ.js.map} +0 -0
- /package/dist/{chunk-APPIPQFT.js.map → chunk-UGPRBJWB.js.map} +0 -0
- /package/dist/{chunk-V3RQFWL6.js.map → chunk-VEEG4UXZ.js.map} +0 -0
- /package/dist/{chunk-DOLDAAXH.js.map → chunk-VOJBLBXE.js.map} +0 -0
- /package/dist/{chunk-WTXPGASQ.js.map → chunk-VWJEM2ER.js.map} +0 -0
- /package/dist/{chunk-BXEMC4YH.js.map → chunk-VYV3JOV5.js.map} +0 -0
- /package/dist/{chunk-OTWMG7B2.js.map → chunk-WN5PNP6F.js.map} +0 -0
- /package/dist/{chunk-HZBRXLV7.js.map → chunk-XB7HYOMM.js.map} +0 -0
- /package/dist/{chunk-C6FVXX7Y.js.map → chunk-XBLFK2FL.js.map} +0 -0
- /package/dist/{chunk-EDBVMLNX.js.map → chunk-XHA2NXLD.js.map} +0 -0
- /package/dist/{chunk-ZO4NO77T.js.map → chunk-XO4ZUHVH.js.map} +0 -0
- /package/dist/{chunk-D455V3BW.js.map → chunk-XVZG52CM.js.map} +0 -0
- /package/dist/{chunk-OPT7X3Y6.js.map → chunk-XXL4PM4M.js.map} +0 -0
- /package/dist/{chunk-3HKUOLPD.js.map → chunk-XZY7O7JJ.js.map} +0 -0
- /package/dist/{chunk-53TDQYA3.js.map → chunk-Y2UXX5IQ.js.map} +0 -0
- /package/dist/{chunk-743SY4WQ.js.map → chunk-YLXQWYOG.js.map} +0 -0
- /package/dist/{chunk-Q33JWFSA.js.map → chunk-YPIVLPXF.js.map} +0 -0
- /package/dist/{chunk-T7UUP7VD.js.map → chunk-YRUX7XMQ.js.map} +0 -0
- /package/dist/{chunk-4JEXYOSN.js.map → chunk-YTXZUTLF.js.map} +0 -0
- /package/dist/{chunk-V7A5ZAAF.js.map → chunk-YWJDUJAR.js.map} +0 -0
- /package/dist/{chunk-ZK7YERPQ.js.map → chunk-Z2NN53E5.js.map} +0 -0
- /package/dist/{chunk-CLSC36JS.js.map → chunk-Z4DKVLYG.js.map} +0 -0
- /package/dist/{chunk-NFJ3VVD3.js.map → chunk-Z6T5SXST.js.map} +0 -0
- /package/dist/{chunk-IITZA6U2.js.map → chunk-ZBVU2YWV.js.map} +0 -0
- /package/dist/{chunk-IEWAFD6L.js.map → chunk-ZC5HDBQO.js.map} +0 -0
- /package/dist/{chunk-KQS4ZJGS.js.map → chunk-ZGCPDA3F.js.map} +0 -0
- /package/dist/{chunk-AHDNANID.js.map → chunk-ZH2SZ6B3.js.map} +0 -0
- /package/dist/{chunk-KOX2AEFW.js.map → chunk-ZKWVCSAB.js.map} +0 -0
- /package/dist/{chunk-K2U4BNHQ.js.map → chunk-ZNBLGS66.js.map} +0 -0
- /package/dist/{chunk-WGUY7EIB.js.map → chunk-ZUME25DS.js.map} +0 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PendingSpinner,
|
|
3
|
+
SaveError,
|
|
4
|
+
SettingHeader,
|
|
5
|
+
partTestId
|
|
6
|
+
} from "./chunk-PEOOCQ2T.js";
|
|
7
|
+
import {
|
|
8
|
+
descriptionStyles
|
|
9
|
+
} from "./chunk-3DO5AJCG.js";
|
|
10
|
+
import {
|
|
11
|
+
Switch
|
|
12
|
+
} from "./chunk-ZGCPDA3F.js";
|
|
13
|
+
import {
|
|
14
|
+
SR_ONLY_SX
|
|
15
|
+
} from "./chunk-ANYOSBNA.js";
|
|
16
|
+
|
|
17
|
+
// src/components/layout/SettingCard/SettingSwitch.tsx
|
|
18
|
+
import Box from "@mui/material/Box/index.js";
|
|
19
|
+
import { useTheme } from "@mui/material/styles/index.js";
|
|
20
|
+
import { useId } from "react";
|
|
21
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
22
|
+
var useSettingSwitchIds = () => {
|
|
23
|
+
const base = useId();
|
|
24
|
+
return {
|
|
25
|
+
titleId: `${base}-title`,
|
|
26
|
+
inputId: `${base}-switch`,
|
|
27
|
+
summaryId: `${base}-summary`,
|
|
28
|
+
errorId: `${base}-error`
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
var SettingSwitchBlock = ({ title, headingLevel = "h3", icon, summary, copy, disabled, dataTestId, ids, state }) => {
|
|
32
|
+
const theme = useTheme();
|
|
33
|
+
const { shown, saving, error, flip } = state;
|
|
34
|
+
const describedBy = [summary != null ? ids.summaryId : null, error ? ids.errorId : null].filter(Boolean).join(" ");
|
|
35
|
+
const control = /* @__PURE__ */ jsxs(Box, { sx: { display: "inline-flex", alignItems: "center", gap: 1, flexShrink: 0 }, children: [
|
|
36
|
+
saving && /* @__PURE__ */ jsx(PendingSpinner, { dataTestId }),
|
|
37
|
+
/* @__PURE__ */ jsx(
|
|
38
|
+
Switch,
|
|
39
|
+
{
|
|
40
|
+
id: ids.inputId,
|
|
41
|
+
checked: shown,
|
|
42
|
+
onChange: (event) => void flip(event.target.checked),
|
|
43
|
+
disabled,
|
|
44
|
+
error: Boolean(error),
|
|
45
|
+
"aria-describedby": describedBy || void 0,
|
|
46
|
+
inputProps: { role: "switch", "aria-busy": saving },
|
|
47
|
+
dataTestId: partTestId(dataTestId, "switch")
|
|
48
|
+
}
|
|
49
|
+
)
|
|
50
|
+
] });
|
|
51
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
52
|
+
/* @__PURE__ */ jsx(
|
|
53
|
+
SettingHeader,
|
|
54
|
+
{
|
|
55
|
+
titleId: ids.titleId,
|
|
56
|
+
title,
|
|
57
|
+
headingLevel,
|
|
58
|
+
icon,
|
|
59
|
+
labelFor: ids.inputId,
|
|
60
|
+
trailing: control,
|
|
61
|
+
dataTestId
|
|
62
|
+
}
|
|
63
|
+
),
|
|
64
|
+
summary != null && /* @__PURE__ */ jsx(Box, { component: "p", id: ids.summaryId, sx: descriptionStyles(theme), "data-testid": partTestId(dataTestId, "summary"), children: summary }),
|
|
65
|
+
/* @__PURE__ */ jsx(SaveError, { id: ids.errorId, message: error, dataTestId }),
|
|
66
|
+
/* @__PURE__ */ jsx(Box, { role: "status", "aria-live": "polite", sx: SR_ONLY_SX, children: saving ? copy.saving : "" })
|
|
67
|
+
] });
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export {
|
|
71
|
+
useSettingSwitchIds,
|
|
72
|
+
SettingSwitchBlock
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=chunk-RDZGXJOD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/layout/SettingCard/SettingSwitch.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport { useTheme } from '@mui/material/styles/index.js';\nimport React, { useId } from 'react';\n\nimport { Switch } from '../../form/Switch';\nimport { SR_ONLY_SX } from '../../form/Label/Label.styles';\n\nimport { useAsyncSwitch } from './SettingCard.hooks';\nimport { PendingSpinner, SaveError, SettingHeader, partTestId } from './SettingCard.parts';\nimport { descriptionStyles } from './SettingCard.styles';\nimport type { SettingToggleProps } from './SettingCard.types';\n\n/** Everything the switch-driven cards share, minus the surface each draws around it. */\nexport type SettingSwitchBlockProps = Pick<\n SettingToggleProps,\n 'title' | 'headingLevel' | 'icon' | 'summary' | 'checked' | 'onChange' | 'copy' | 'formatError' | 'dataTestId'\n> & { disabled: boolean };\n\n/** The ids one switch block wires its label, description and failure line with. */\nexport interface SettingSwitchIds {\n titleId: string;\n inputId: string;\n summaryId: string;\n errorId: string;\n}\n\nexport const useSettingSwitchIds = (): SettingSwitchIds => {\n const base = useId();\n return {\n titleId: `${base}-title`,\n inputId: `${base}-switch`,\n summaryId: `${base}-summary`,\n errorId: `${base}-error`,\n };\n};\n\n/**\n * Title-as-label, the switch, its explanation and the failure line.\n *\n * The switch is never `disabled` while it saves, for the reason Save is not\n * (`SettingCard.tsx`): a disabled control drops keyboard focus. It says\n * `aria-busy` instead, ignores flips until the save settles (see\n * `useAsyncSwitch`), shows a spinner, and a polite live region says the words.\n */\nexport const SettingSwitchBlock: React.FC<\n SettingSwitchBlockProps & { ids: SettingSwitchIds; state: ReturnType<typeof useAsyncSwitch> }\n> = ({ title, headingLevel = 'h3', icon, summary, copy, disabled, dataTestId, ids, state }) => {\n const theme = useTheme();\n const { shown, saving, error, flip } = state;\n const describedBy = [summary != null ? ids.summaryId : null, error ? ids.errorId : null]\n .filter(Boolean)\n .join(' ');\n\n const control = (\n <Box sx={{ display: 'inline-flex', alignItems: 'center', gap: 1, flexShrink: 0 }}>\n {saving && <PendingSpinner dataTestId={dataTestId} />}\n <Switch\n id={ids.inputId}\n checked={shown}\n onChange={(event) => void flip(event.target.checked)}\n disabled={disabled}\n error={Boolean(error)}\n aria-describedby={describedBy || undefined}\n inputProps={{ role: 'switch', 'aria-busy': saving }}\n dataTestId={partTestId(dataTestId, 'switch')}\n />\n </Box>\n );\n\n return (\n <>\n <SettingHeader\n titleId={ids.titleId}\n title={title}\n headingLevel={headingLevel}\n icon={icon}\n labelFor={ids.inputId}\n trailing={control}\n dataTestId={dataTestId}\n />\n {summary != null && (\n <Box component=\"p\" id={ids.summaryId} sx={descriptionStyles(theme)} data-testid={partTestId(dataTestId, 'summary')}>\n {summary}\n </Box>\n )}\n <SaveError id={ids.errorId} message={error} dataTestId={dataTestId} />\n <Box role=\"status\" aria-live=\"polite\" sx={SR_ONLY_SX}>\n {saving ? copy.saving : ''}\n </Box>\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,OAAO,SAAS;AAChB,SAAS,gBAAgB;AACzB,SAAgB,aAAa;AAoDzB,SAgBA,UAfa,KADb;AA5BG,IAAM,sBAAsB,MAAwB;AACzD,QAAM,OAAO,MAAM;AACnB,SAAO;AAAA,IACL,SAAS,GAAG,IAAI;AAAA,IAChB,SAAS,GAAG,IAAI;AAAA,IAChB,WAAW,GAAG,IAAI;AAAA,IAClB,SAAS,GAAG,IAAI;AAAA,EAClB;AACF;AAUO,IAAM,qBAET,CAAC,EAAE,OAAO,eAAe,MAAM,MAAM,SAAS,MAAM,UAAU,YAAY,KAAK,MAAM,MAAM;AAC7F,QAAM,QAAQ,SAAS;AACvB,QAAM,EAAE,OAAO,QAAQ,OAAO,KAAK,IAAI;AACvC,QAAM,cAAc,CAAC,WAAW,OAAO,IAAI,YAAY,MAAM,QAAQ,IAAI,UAAU,IAAI,EACpF,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,QAAM,UACJ,qBAAC,OAAI,IAAI,EAAE,SAAS,eAAe,YAAY,UAAU,KAAK,GAAG,YAAY,EAAE,GAC5E;AAAA,cAAU,oBAAC,kBAAe,YAAwB;AAAA,IACnD;AAAA,MAAC;AAAA;AAAA,QACC,IAAI,IAAI;AAAA,QACR,SAAS;AAAA,QACT,UAAU,CAAC,UAAU,KAAK,KAAK,MAAM,OAAO,OAAO;AAAA,QACnD;AAAA,QACA,OAAO,QAAQ,KAAK;AAAA,QACpB,oBAAkB,eAAe;AAAA,QACjC,YAAY,EAAE,MAAM,UAAU,aAAa,OAAO;AAAA,QAClD,YAAY,WAAW,YAAY,QAAQ;AAAA;AAAA,IAC7C;AAAA,KACF;AAGF,SACE,iCACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS,IAAI;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU,IAAI;AAAA,QACd,UAAU;AAAA,QACV;AAAA;AAAA,IACF;AAAA,IACC,WAAW,QACV,oBAAC,OAAI,WAAU,KAAI,IAAI,IAAI,WAAW,IAAI,kBAAkB,KAAK,GAAG,eAAa,WAAW,YAAY,SAAS,GAC9G,mBACH;AAAA,IAEF,oBAAC,aAAU,IAAI,IAAI,SAAS,SAAS,OAAO,YAAwB;AAAA,IACpE,oBAAC,OAAI,MAAK,UAAS,aAAU,UAAS,IAAI,YACvC,mBAAS,KAAK,SAAS,IAC1B;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=chunk-RN7UJI7S.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useSettingCard
|
|
3
|
+
} from "./chunk-SALQ65SM.js";
|
|
4
|
+
import {
|
|
5
|
+
LearnMore,
|
|
6
|
+
PendingSpinner,
|
|
7
|
+
SaveError,
|
|
8
|
+
SettingHeader,
|
|
9
|
+
partTestId
|
|
10
|
+
} from "./chunk-PEOOCQ2T.js";
|
|
11
|
+
import {
|
|
12
|
+
SETTING_CARD_OPEN_ATTR,
|
|
13
|
+
actionsStyles,
|
|
14
|
+
summaryStyles,
|
|
15
|
+
surfaceStyles,
|
|
16
|
+
withCallerSx
|
|
17
|
+
} from "./chunk-3DO5AJCG.js";
|
|
18
|
+
import {
|
|
19
|
+
Icon
|
|
20
|
+
} from "./chunk-JAGAFEZL.js";
|
|
21
|
+
import {
|
|
22
|
+
Button
|
|
23
|
+
} from "./chunk-K6LNHHSH.js";
|
|
24
|
+
|
|
25
|
+
// src/components/layout/SettingCard/SettingCard.tsx
|
|
26
|
+
import Box from "@mui/material/Box/index.js";
|
|
27
|
+
import { forwardRef, useId } from "react";
|
|
28
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
29
|
+
var OpenBody = ({
|
|
30
|
+
bodyRef,
|
|
31
|
+
titleId,
|
|
32
|
+
errorId,
|
|
33
|
+
copy,
|
|
34
|
+
learnMore,
|
|
35
|
+
children,
|
|
36
|
+
saving,
|
|
37
|
+
error,
|
|
38
|
+
saveDisabled,
|
|
39
|
+
onSave,
|
|
40
|
+
onCancel,
|
|
41
|
+
dataTestId
|
|
42
|
+
}) => {
|
|
43
|
+
const onKeyDown = (event) => {
|
|
44
|
+
if (event.key !== "Escape") return;
|
|
45
|
+
event.stopPropagation();
|
|
46
|
+
onCancel();
|
|
47
|
+
};
|
|
48
|
+
return /* @__PURE__ */ jsxs(
|
|
49
|
+
Box,
|
|
50
|
+
{
|
|
51
|
+
ref: bodyRef,
|
|
52
|
+
role: "group",
|
|
53
|
+
"aria-labelledby": titleId,
|
|
54
|
+
onKeyDown,
|
|
55
|
+
sx: { display: "flex", flexDirection: "column", gap: 2, flex: 1 },
|
|
56
|
+
"data-testid": partTestId(dataTestId, "body"),
|
|
57
|
+
children: [
|
|
58
|
+
/* @__PURE__ */ jsx(Box, { children }),
|
|
59
|
+
learnMore && /* @__PURE__ */ jsx(LearnMore, { label: copy.learnMore, dataTestId, children: learnMore }),
|
|
60
|
+
/* @__PURE__ */ jsx(SaveError, { id: errorId, message: error, dataTestId }),
|
|
61
|
+
/* @__PURE__ */ jsxs(Box, { sx: (theme) => actionsStyles(theme), children: [
|
|
62
|
+
/* @__PURE__ */ jsx(Button, { variant: "ghost", color: "neutral", onClick: onCancel, disabled: saving, dataTestId: partTestId(dataTestId, "cancel"), children: copy.cancel }),
|
|
63
|
+
/* @__PURE__ */ jsx(
|
|
64
|
+
Button,
|
|
65
|
+
{
|
|
66
|
+
variant: "solid",
|
|
67
|
+
onClick: onSave,
|
|
68
|
+
disabled: saveDisabled,
|
|
69
|
+
"aria-disabled": saving || void 0,
|
|
70
|
+
"aria-describedby": error ? errorId : void 0,
|
|
71
|
+
icon: saving ? /* @__PURE__ */ jsx(PendingSpinner, { dataTestId }) : void 0,
|
|
72
|
+
iconPosition: "left",
|
|
73
|
+
dataTestId: partTestId(dataTestId, "save"),
|
|
74
|
+
children: saving ? copy.saving : copy.save
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
] })
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
);
|
|
81
|
+
};
|
|
82
|
+
var EditTrigger = ({ triggerRef, id, titleId, label, disabled, onOpen, dataTestId }) => /* @__PURE__ */ jsx(
|
|
83
|
+
Button,
|
|
84
|
+
{
|
|
85
|
+
ref: triggerRef,
|
|
86
|
+
id,
|
|
87
|
+
variant: "outline",
|
|
88
|
+
color: "neutral",
|
|
89
|
+
size: "sm",
|
|
90
|
+
icon: /* @__PURE__ */ jsx(Icon, { name: "Edit", size: "xs" }),
|
|
91
|
+
iconPosition: "left",
|
|
92
|
+
disabled,
|
|
93
|
+
"aria-labelledby": `${id} ${titleId}`,
|
|
94
|
+
onClick: onOpen,
|
|
95
|
+
dataTestId: partTestId(dataTestId, "edit"),
|
|
96
|
+
children: label
|
|
97
|
+
}
|
|
98
|
+
);
|
|
99
|
+
var SettingCard = forwardRef(function SettingCard2(props, ref) {
|
|
100
|
+
const { title, headingLevel = "h3", icon, status, summary, children, learnMore, copy, dataTestId, className, sx } = props;
|
|
101
|
+
const baseId = useId();
|
|
102
|
+
const titleId = `${baseId}-title`;
|
|
103
|
+
const card = useSettingCard(props);
|
|
104
|
+
const { open } = card;
|
|
105
|
+
return /* @__PURE__ */ jsxs(
|
|
106
|
+
Box,
|
|
107
|
+
{
|
|
108
|
+
component: "section",
|
|
109
|
+
ref,
|
|
110
|
+
"aria-labelledby": titleId,
|
|
111
|
+
"aria-busy": card.saving || void 0,
|
|
112
|
+
"data-state": open ? "open" : "closed",
|
|
113
|
+
...{ [SETTING_CARD_OPEN_ATTR]: open ? "" : void 0 },
|
|
114
|
+
"data-testid": dataTestId,
|
|
115
|
+
className,
|
|
116
|
+
sx: withCallerSx((theme) => surfaceStyles(theme, open), sx),
|
|
117
|
+
children: [
|
|
118
|
+
/* @__PURE__ */ jsx(
|
|
119
|
+
SettingHeader,
|
|
120
|
+
{
|
|
121
|
+
titleId,
|
|
122
|
+
title,
|
|
123
|
+
headingLevel,
|
|
124
|
+
icon,
|
|
125
|
+
status,
|
|
126
|
+
trailing: open ? null : /* @__PURE__ */ jsx(
|
|
127
|
+
EditTrigger,
|
|
128
|
+
{
|
|
129
|
+
triggerRef: card.editRef,
|
|
130
|
+
id: `${baseId}-edit`,
|
|
131
|
+
titleId,
|
|
132
|
+
label: copy.edit,
|
|
133
|
+
disabled: card.disabled,
|
|
134
|
+
onOpen: card.openCard,
|
|
135
|
+
dataTestId
|
|
136
|
+
}
|
|
137
|
+
),
|
|
138
|
+
dataTestId
|
|
139
|
+
}
|
|
140
|
+
),
|
|
141
|
+
!open && summary != null && /* @__PURE__ */ jsx(Box, { component: "p", sx: summaryStyles, "data-testid": partTestId(dataTestId, "summary"), children: summary }),
|
|
142
|
+
open && /* @__PURE__ */ jsx(
|
|
143
|
+
OpenBody,
|
|
144
|
+
{
|
|
145
|
+
bodyRef: card.bodyRef,
|
|
146
|
+
titleId,
|
|
147
|
+
errorId: `${baseId}-error`,
|
|
148
|
+
copy,
|
|
149
|
+
learnMore,
|
|
150
|
+
saving: card.saving,
|
|
151
|
+
error: card.error,
|
|
152
|
+
saveDisabled: card.saveDisabled,
|
|
153
|
+
onSave: card.save,
|
|
154
|
+
onCancel: card.cancel,
|
|
155
|
+
dataTestId,
|
|
156
|
+
children
|
|
157
|
+
}
|
|
158
|
+
)
|
|
159
|
+
]
|
|
160
|
+
}
|
|
161
|
+
);
|
|
162
|
+
});
|
|
163
|
+
SettingCard.displayName = "SettingCard";
|
|
164
|
+
|
|
165
|
+
export {
|
|
166
|
+
SettingCard
|
|
167
|
+
};
|
|
168
|
+
//# sourceMappingURL=chunk-RPBGUWNF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/layout/SettingCard/SettingCard.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport React, { forwardRef, useId } from 'react';\n\nimport { Icon } from '../../../icons';\nimport { Button } from '../../form/Button';\n\nimport { useSettingCard } from './SettingCard.hooks';\nimport { LearnMore, PendingSpinner, SaveError, SettingHeader, partTestId } from './SettingCard.parts';\nimport { SETTING_CARD_OPEN_ATTR, actionsStyles, summaryStyles, surfaceStyles, withCallerSx } from './SettingCard.styles';\nimport type { SettingCardCopy, SettingCardProps } from './SettingCard.types';\n\ninterface OpenBodyProps {\n bodyRef: React.RefObject<HTMLDivElement | null>;\n titleId: string;\n errorId: string;\n copy: SettingCardCopy;\n learnMore?: React.ReactNode;\n children: React.ReactNode;\n saving: boolean;\n error: string | null;\n saveDisabled: boolean;\n onSave: () => void;\n onCancel: () => void;\n dataTestId?: string;\n}\n\n/**\n * The open card: the host's form, the disclosure, the failure line, and the\n * two actions.\n *\n * Save is NOT `disabled` while it saves — it is `aria-disabled` and ignores\n * the click. A disabled button drops the focus it holds, so a keyboard user\n * who pressed Save would land on `<body>` and, if the save then failed, have\n * to find their way back to the form from the top of the page.\n */\nconst OpenBody: React.FC<OpenBodyProps> = ({\n bodyRef, titleId, errorId, copy, learnMore, children, saving, error, saveDisabled, onSave, onCancel, dataTestId,\n}) => {\n const onKeyDown = (event: React.KeyboardEvent) => {\n if (event.key !== 'Escape') return;\n event.stopPropagation();\n onCancel();\n };\n\n return (\n <Box\n ref={bodyRef}\n role=\"group\"\n aria-labelledby={titleId}\n onKeyDown={onKeyDown}\n sx={{ display: 'flex', flexDirection: 'column', gap: 2, flex: 1 }}\n data-testid={partTestId(dataTestId, 'body')}\n >\n <Box>{children}</Box>\n {learnMore && (\n <LearnMore label={copy.learnMore} dataTestId={dataTestId}>\n {learnMore}\n </LearnMore>\n )}\n <SaveError id={errorId} message={error} dataTestId={dataTestId} />\n <Box sx={(theme) => actionsStyles(theme)}>\n <Button variant=\"ghost\" color=\"neutral\" onClick={onCancel} disabled={saving} dataTestId={partTestId(dataTestId, 'cancel')}>\n {copy.cancel}\n </Button>\n <Button\n variant=\"solid\"\n onClick={onSave}\n disabled={saveDisabled}\n aria-disabled={saving || undefined}\n aria-describedby={error ? errorId : undefined}\n icon={saving ? <PendingSpinner dataTestId={dataTestId} /> : undefined}\n iconPosition=\"left\"\n dataTestId={partTestId(dataTestId, 'save')}\n >\n {saving ? copy.saving : copy.save}\n </Button>\n </Box>\n </Box>\n );\n};\n\n/**\n * A setting, summarised while closed and edited in place.\n *\n * Closed: title, status pill, a one-line summary and Edit. Edit opens the card\n * where it is — no dialog, no route — around the host's form, a \"learn more\"\n * disclosure and Cancel / Save. Save may be async: the card holds its saving\n * state while the promise is pending, closes when it resolves, and stays open\n * with the error when it rejects. Focus moves into the card as it opens and\n * back to Edit as it closes.\n */\ninterface EditTriggerProps {\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n id: string;\n titleId: string;\n label: string;\n disabled: boolean;\n onOpen: () => void;\n dataTestId?: string;\n}\n\n/** Edit. Its accessible name is \"Edit\" AND the card's title, so a grid of them is not a list of \"Edit, Edit, Edit\". */\nconst EditTrigger: React.FC<EditTriggerProps> = ({ triggerRef, id, titleId, label, disabled, onOpen, dataTestId }) => (\n <Button\n ref={triggerRef}\n id={id}\n variant=\"outline\"\n color=\"neutral\"\n size=\"sm\"\n icon={<Icon name=\"Edit\" size=\"xs\" />}\n iconPosition=\"left\"\n disabled={disabled}\n aria-labelledby={`${id} ${titleId}`}\n onClick={onOpen}\n dataTestId={partTestId(dataTestId, 'edit')}\n >\n {label}\n </Button>\n);\n\n/**\n * A setting, summarised while closed and edited in place.\n *\n * Closed: title, status pill, a one-line summary and Edit. Edit opens the card\n * where it is — no dialog, no route — around the host's form, a \"learn more\"\n * disclosure and Cancel / Save. Save may be async: the card holds its saving\n * state while the promise is pending, closes when it resolves, and stays open\n * with the error when it rejects. Focus moves into the card as it opens and\n * back to Edit as it closes.\n */\nexport const SettingCard = forwardRef<HTMLElement, SettingCardProps>(function SettingCard(props, ref) {\n const { title, headingLevel = 'h3', icon, status, summary, children, learnMore, copy, dataTestId, className, sx } = props;\n const baseId = useId();\n const titleId = `${baseId}-title`;\n const card = useSettingCard(props);\n const { open } = card;\n\n return (\n <Box\n component=\"section\"\n ref={ref}\n aria-labelledby={titleId}\n aria-busy={card.saving || undefined}\n data-state={open ? 'open' : 'closed'}\n {...{ [SETTING_CARD_OPEN_ATTR]: open ? '' : undefined }}\n data-testid={dataTestId}\n className={className}\n sx={withCallerSx((theme) => surfaceStyles(theme, open), sx)}\n >\n <SettingHeader\n titleId={titleId}\n title={title}\n headingLevel={headingLevel}\n icon={icon}\n status={status}\n trailing={\n open ? null : (\n <EditTrigger\n triggerRef={card.editRef}\n id={`${baseId}-edit`}\n titleId={titleId}\n label={copy.edit}\n disabled={card.disabled}\n onOpen={card.openCard}\n dataTestId={dataTestId}\n />\n )\n }\n dataTestId={dataTestId}\n />\n {!open && summary != null && (\n <Box component=\"p\" sx={summaryStyles} data-testid={partTestId(dataTestId, 'summary')}>\n {summary}\n </Box>\n )}\n {open && (\n <OpenBody\n bodyRef={card.bodyRef}\n titleId={titleId}\n errorId={`${baseId}-error`}\n copy={copy}\n learnMore={learnMore}\n saving={card.saving}\n error={card.error}\n saveDisabled={card.saveDisabled}\n onSave={card.save}\n onCancel={card.cancel}\n dataTestId={dataTestId}\n >\n {children}\n </OpenBody>\n )}\n </Box>\n );\n});\n\nSettingCard.displayName = 'SettingCard';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,SAAS;AAChB,SAAgB,YAAY,aAAa;AAoDnC,cAOA,YAPA;AAlBN,IAAM,WAAoC,CAAC;AAAA,EACzC;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAM;AAAA,EAAW;AAAA,EAAU;AAAA,EAAQ;AAAA,EAAO;AAAA,EAAc;AAAA,EAAQ;AAAA,EAAU;AACvG,MAAM;AACJ,QAAM,YAAY,CAAC,UAA+B;AAChD,QAAI,MAAM,QAAQ,SAAU;AAC5B,UAAM,gBAAgB;AACtB,aAAS;AAAA,EACX;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,MAAK;AAAA,MACL,mBAAiB;AAAA,MACjB;AAAA,MACA,IAAI,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,GAAG,MAAM,EAAE;AAAA,MAChE,eAAa,WAAW,YAAY,MAAM;AAAA,MAE1C;AAAA,4BAAC,OAAK,UAAS;AAAA,QACd,aACC,oBAAC,aAAU,OAAO,KAAK,WAAW,YAC/B,qBACH;AAAA,QAEF,oBAAC,aAAU,IAAI,SAAS,SAAS,OAAO,YAAwB;AAAA,QAChE,qBAAC,OAAI,IAAI,CAAC,UAAU,cAAc,KAAK,GACrC;AAAA,8BAAC,UAAO,SAAQ,SAAQ,OAAM,WAAU,SAAS,UAAU,UAAU,QAAQ,YAAY,WAAW,YAAY,QAAQ,GACrH,eAAK,QACR;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,SAAQ;AAAA,cACR,SAAS;AAAA,cACT,UAAU;AAAA,cACV,iBAAe,UAAU;AAAA,cACzB,oBAAkB,QAAQ,UAAU;AAAA,cACpC,MAAM,SAAS,oBAAC,kBAAe,YAAwB,IAAK;AAAA,cAC5D,cAAa;AAAA,cACb,YAAY,WAAW,YAAY,MAAM;AAAA,cAExC,mBAAS,KAAK,SAAS,KAAK;AAAA;AAAA,UAC/B;AAAA,WACF;AAAA;AAAA;AAAA,EACF;AAEJ;AAuBA,IAAM,cAA0C,CAAC,EAAE,YAAY,IAAI,SAAS,OAAO,UAAU,QAAQ,WAAW,MAC9G;AAAA,EAAC;AAAA;AAAA,IACC,KAAK;AAAA,IACL;AAAA,IACA,SAAQ;AAAA,IACR,OAAM;AAAA,IACN,MAAK;AAAA,IACL,MAAM,oBAAC,QAAK,MAAK,QAAO,MAAK,MAAK;AAAA,IAClC,cAAa;AAAA,IACb;AAAA,IACA,mBAAiB,GAAG,EAAE,IAAI,OAAO;AAAA,IACjC,SAAS;AAAA,IACT,YAAY,WAAW,YAAY,MAAM;AAAA,IAExC;AAAA;AACH;AAaK,IAAM,cAAc,WAA0C,SAASA,aAAY,OAAO,KAAK;AACpG,QAAM,EAAE,OAAO,eAAe,MAAM,MAAM,QAAQ,SAAS,UAAU,WAAW,MAAM,YAAY,WAAW,GAAG,IAAI;AACpH,QAAM,SAAS,MAAM;AACrB,QAAM,UAAU,GAAG,MAAM;AACzB,QAAM,OAAO,eAAe,KAAK;AACjC,QAAM,EAAE,KAAK,IAAI;AAEjB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV;AAAA,MACA,mBAAiB;AAAA,MACjB,aAAW,KAAK,UAAU;AAAA,MAC1B,cAAY,OAAO,SAAS;AAAA,MAC3B,GAAG,EAAE,CAAC,sBAAsB,GAAG,OAAO,KAAK,OAAU;AAAA,MACtD,eAAa;AAAA,MACb;AAAA,MACA,IAAI,aAAa,CAAC,UAAU,cAAc,OAAO,IAAI,GAAG,EAAE;AAAA,MAE1D;AAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,UACE,OAAO,OACL;AAAA,cAAC;AAAA;AAAA,gBACC,YAAY,KAAK;AAAA,gBACjB,IAAI,GAAG,MAAM;AAAA,gBACb;AAAA,gBACA,OAAO,KAAK;AAAA,gBACZ,UAAU,KAAK;AAAA,gBACf,QAAQ,KAAK;AAAA,gBACb;AAAA;AAAA,YACF;AAAA,YAGJ;AAAA;AAAA,QACF;AAAA,QACC,CAAC,QAAQ,WAAW,QACnB,oBAAC,OAAI,WAAU,KAAI,IAAI,eAAe,eAAa,WAAW,YAAY,SAAS,GAChF,mBACH;AAAA,QAED,QACC;AAAA,UAAC;AAAA;AAAA,YACC,SAAS,KAAK;AAAA,YACd;AAAA,YACA,SAAS,GAAG,MAAM;AAAA,YAClB;AAAA,YACA;AAAA,YACA,QAAQ,KAAK;AAAA,YACb,OAAO,KAAK;AAAA,YACZ,cAAc,KAAK;AAAA,YACnB,QAAQ,KAAK;AAAA,YACb,UAAU,KAAK;AAAA,YACf;AAAA,YAEC;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EAEJ;AAEJ,CAAC;AAED,YAAY,cAAc;","names":["SettingCard"]}
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "./chunk-BXC6GRLE.js";
|
|
8
8
|
import {
|
|
9
9
|
SettingsPanel
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-TCNTIGMY.js";
|
|
11
11
|
import {
|
|
12
12
|
atLeastRail
|
|
13
13
|
} from "./chunk-NYFNF7I5.js";
|
|
@@ -135,4 +135,4 @@ SettingsLayout.displayName = "SettingsLayout";
|
|
|
135
135
|
export {
|
|
136
136
|
SettingsLayout
|
|
137
137
|
};
|
|
138
|
-
//# sourceMappingURL=chunk-
|
|
138
|
+
//# sourceMappingURL=chunk-RZ2VZ7SL.js.map
|
|
@@ -7,11 +7,11 @@ import {
|
|
|
7
7
|
panelHeadSx,
|
|
8
8
|
pinnedLabelSx,
|
|
9
9
|
pinnedSx
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-Z6T5SXST.js";
|
|
11
11
|
import {
|
|
12
12
|
fieldBorder,
|
|
13
13
|
fieldHeight
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-M47ZOUGF.js";
|
|
15
15
|
import {
|
|
16
16
|
fieldRadiusPx
|
|
17
17
|
} from "./chunk-GDN2LUTZ.js";
|
|
@@ -158,4 +158,4 @@ export {
|
|
|
158
158
|
CategoryPanelHead,
|
|
159
159
|
CategoryPinnedTray
|
|
160
160
|
};
|
|
161
|
-
//# sourceMappingURL=chunk-
|
|
161
|
+
//# sourceMappingURL=chunk-S4IXC2V3.js.map
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import {
|
|
2
|
+
focusFirstTabbable
|
|
3
|
+
} from "./chunk-LV7LSPBF.js";
|
|
4
|
+
|
|
5
|
+
// src/components/layout/SettingCard/SettingCard.hooks.ts
|
|
6
|
+
import { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react";
|
|
7
|
+
function saveErrorMessage(error, formatError, fallback) {
|
|
8
|
+
return formatError?.(error) ?? fallback;
|
|
9
|
+
}
|
|
10
|
+
function useControllableOpen(open, defaultOpen, onOpenChange) {
|
|
11
|
+
const [inner, setInner] = useState(defaultOpen);
|
|
12
|
+
const controlled = open !== void 0;
|
|
13
|
+
const value = controlled ? open : inner;
|
|
14
|
+
const setOpen = useCallback(
|
|
15
|
+
(next) => {
|
|
16
|
+
if (!controlled) setInner(next);
|
|
17
|
+
onOpenChange?.(next);
|
|
18
|
+
},
|
|
19
|
+
[controlled, onOpenChange]
|
|
20
|
+
);
|
|
21
|
+
return [value, setOpen];
|
|
22
|
+
}
|
|
23
|
+
function useSaveRunner(formatError, fallback) {
|
|
24
|
+
const [saving, setSaving] = useState(false);
|
|
25
|
+
const [error, setError] = useState(null);
|
|
26
|
+
const seq = useRef(0);
|
|
27
|
+
useEffect(
|
|
28
|
+
() => () => {
|
|
29
|
+
seq.current += 1;
|
|
30
|
+
},
|
|
31
|
+
[]
|
|
32
|
+
);
|
|
33
|
+
const run = useCallback(
|
|
34
|
+
async (save) => {
|
|
35
|
+
const mine = seq.current += 1;
|
|
36
|
+
setSaving(true);
|
|
37
|
+
setError(null);
|
|
38
|
+
try {
|
|
39
|
+
await Promise.resolve().then(save);
|
|
40
|
+
if (seq.current !== mine) return false;
|
|
41
|
+
setSaving(false);
|
|
42
|
+
return true;
|
|
43
|
+
} catch (cause) {
|
|
44
|
+
if (seq.current !== mine) return false;
|
|
45
|
+
setSaving(false);
|
|
46
|
+
setError(saveErrorMessage(cause, formatError, fallback));
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
[formatError, fallback]
|
|
51
|
+
);
|
|
52
|
+
const reset = useCallback(() => {
|
|
53
|
+
seq.current += 1;
|
|
54
|
+
setSaving(false);
|
|
55
|
+
setError(null);
|
|
56
|
+
}, []);
|
|
57
|
+
return { saving, error, run, reset };
|
|
58
|
+
}
|
|
59
|
+
function useAsyncSwitch(options) {
|
|
60
|
+
const { checked, onChange, formatError, fallback } = options;
|
|
61
|
+
const [pending, setPending] = useState(null);
|
|
62
|
+
const { saving, error, run } = useSaveRunner(formatError, fallback);
|
|
63
|
+
const flip = useCallback(
|
|
64
|
+
async (next) => {
|
|
65
|
+
if (saving) return;
|
|
66
|
+
setPending(next);
|
|
67
|
+
await run(() => onChange(next));
|
|
68
|
+
setPending(null);
|
|
69
|
+
},
|
|
70
|
+
[saving, run, onChange]
|
|
71
|
+
);
|
|
72
|
+
return { shown: pending ?? checked, saving, error, flip };
|
|
73
|
+
}
|
|
74
|
+
function useFocusHandoff(open, body, trigger) {
|
|
75
|
+
const previous = useRef(open);
|
|
76
|
+
useLayoutEffect(() => {
|
|
77
|
+
if (previous.current === open) return;
|
|
78
|
+
previous.current = open;
|
|
79
|
+
if (open && body.current) focusFirstTabbable(body.current);
|
|
80
|
+
if (!open) trigger.current?.focus();
|
|
81
|
+
}, [open, body, trigger]);
|
|
82
|
+
}
|
|
83
|
+
function useSettingCard(props) {
|
|
84
|
+
const { copy, onSave, onCancel, open: openProp, defaultOpen = false, onOpenChange, formatError } = props;
|
|
85
|
+
const disabled = props.disabled ?? false;
|
|
86
|
+
const saveDisabled = props.saveDisabled ?? false;
|
|
87
|
+
const [open, setOpen] = useControllableOpen(openProp, defaultOpen, onOpenChange);
|
|
88
|
+
const { saving, error, run, reset } = useSaveRunner(formatError, copy.saveFailed);
|
|
89
|
+
const bodyRef = useRef(null);
|
|
90
|
+
const editRef = useRef(null);
|
|
91
|
+
useFocusHandoff(open, bodyRef, editRef);
|
|
92
|
+
useEffect(() => {
|
|
93
|
+
if (!open) reset();
|
|
94
|
+
}, [open, reset]);
|
|
95
|
+
const openCard = useCallback(() => setOpen(true), [setOpen]);
|
|
96
|
+
const cancel = useCallback(() => {
|
|
97
|
+
if (saving) return;
|
|
98
|
+
setOpen(false);
|
|
99
|
+
onCancel?.();
|
|
100
|
+
}, [saving, setOpen, onCancel]);
|
|
101
|
+
const save = useCallback(() => {
|
|
102
|
+
if (saving || saveDisabled) return;
|
|
103
|
+
void run(onSave).then((saved) => {
|
|
104
|
+
if (saved) setOpen(false);
|
|
105
|
+
});
|
|
106
|
+
}, [saving, saveDisabled, run, onSave, setOpen]);
|
|
107
|
+
return { open, disabled, saveDisabled, saving, error, bodyRef, editRef, openCard, cancel, save };
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export {
|
|
111
|
+
saveErrorMessage,
|
|
112
|
+
useControllableOpen,
|
|
113
|
+
useSaveRunner,
|
|
114
|
+
useAsyncSwitch,
|
|
115
|
+
useFocusHandoff,
|
|
116
|
+
useSettingCard
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=chunk-SALQ65SM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/layout/SettingCard/SettingCard.hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useLayoutEffect, useRef, useState, type RefObject } from 'react';\n\nimport { focusFirstTabbable } from '../../feedback/Dialog/Dialog.focus';\n\nimport type { SettingCardProps, SettingErrorFormatter, SettingSaveResult } from './SettingCard.types';\n\n/** The sentence a rejected save shows: the host's, else the copy's fallback. */\nexport function saveErrorMessage(\n error: unknown,\n formatError: SettingErrorFormatter | undefined,\n fallback: string,\n): string {\n return formatError?.(error) ?? fallback;\n}\n\n/**\n * Open state that is controlled when `open` is passed and uncontrolled\n * otherwise — the shape MUI's own `useControlled` has, without its dev-only\n * warnings reaching into this package's surface.\n */\nexport function useControllableOpen(\n open: boolean | undefined,\n defaultOpen: boolean,\n onOpenChange: ((open: boolean) => void) | undefined,\n): [boolean, (next: boolean) => void] {\n const [inner, setInner] = useState(defaultOpen);\n const controlled = open !== undefined;\n const value = controlled ? open : inner;\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!controlled) setInner(next);\n onOpenChange?.(next);\n },\n [controlled, onOpenChange],\n );\n\n return [value, setOpen];\n}\n\n/**\n * Runs a save that may or may not be async and reports how it went.\n *\n * `Promise.resolve().then(save)` rather than `await save()`: it also catches a\n * handler that throws SYNCHRONOUSLY, which an `await` inside `try` would too —\n * but it keeps the pending state visible for one tick even when the handler\n * returns nothing, so a save never \"succeeds\" in the middle of the click that\n * started it. A sequence id drops the outcome of a run the card has since\n * abandoned (closed, or started again).\n */\nexport function useSaveRunner(formatError: SettingErrorFormatter | undefined, fallback: string) {\n const [saving, setSaving] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const seq = useRef(0);\n\n useEffect(\n () => () => {\n // Unmounted: whatever is still in flight has nobody left to report to.\n seq.current += 1;\n },\n [],\n );\n\n const run = useCallback(\n async (save: () => SettingSaveResult): Promise<boolean> => {\n const mine = (seq.current += 1);\n setSaving(true);\n setError(null);\n try {\n await Promise.resolve().then(save);\n if (seq.current !== mine) return false;\n setSaving(false);\n return true;\n } catch (cause) {\n if (seq.current !== mine) return false;\n setSaving(false);\n setError(saveErrorMessage(cause, formatError, fallback));\n return false;\n }\n },\n [formatError, fallback],\n );\n\n const reset = useCallback(() => {\n seq.current += 1;\n setSaving(false);\n setError(null);\n }, []);\n\n return { saving, error, run, reset };\n}\n\n/**\n * A switch that saves the moment it flips.\n *\n * It shows the flip at once (`pending`) and holds it while the save runs; a\n * success hands back to the host's `checked`, which by then says the same\n * thing, and a failure drops `pending` so the switch returns to what is\n * actually saved. A flip while one is in flight is ignored rather than queued:\n * two racing writes of a boolean have no right answer.\n */\nexport function useAsyncSwitch(options: {\n checked: boolean;\n onChange: (checked: boolean) => SettingSaveResult;\n formatError: SettingErrorFormatter | undefined;\n fallback: string;\n}) {\n const { checked, onChange, formatError, fallback } = options;\n const [pending, setPending] = useState<boolean | null>(null);\n const { saving, error, run } = useSaveRunner(formatError, fallback);\n\n const flip = useCallback(\n async (next: boolean) => {\n if (saving) return;\n setPending(next);\n await run(() => onChange(next));\n setPending(null);\n },\n [saving, run, onChange],\n );\n\n return { shown: pending ?? checked, saving, error, flip };\n}\n\n/**\n * Focus follows the card: into it when it opens, back to the trigger when it\n * closes.\n *\n * Inward, it is the Dialog's own rule (`focusFirstTabbable`, FUT-2696): the\n * first tabbable descendant, and a caller's `autoFocus` keeps winning. The\n * card is NOT a trap — it is inline, the rest of the page is still there, and\n * locking Tab inside it would strand a keyboard user who wants to leave\n * mid-edit. What it owes them is the round trip: the Edit trigger unmounts\n * while the card is open, so without the return focus would fall to <body>\n * and the reader would start again from the top of the page.\n *\n * Only a TRANSITION moves focus: a card mounted open (or closed) leaves focus\n * where the page put it.\n */\nexport function useFocusHandoff(\n open: boolean,\n body: RefObject<HTMLElement | null>,\n trigger: RefObject<HTMLElement | null>,\n): void {\n const previous = useRef(open);\n\n useLayoutEffect(() => {\n if (previous.current === open) return;\n previous.current = open;\n if (open && body.current) focusFirstTabbable(body.current);\n if (!open) trigger.current?.focus();\n }, [open, body, trigger]);\n}\n\n/**\n * Everything an editable card DOES, apart from how it looks: its open state,\n * the save and its outcome, Cancel, and where focus goes.\n */\nexport function useSettingCard(props: SettingCardProps) {\n const { copy, onSave, onCancel, open: openProp, defaultOpen = false, onOpenChange, formatError } = props;\n const disabled = props.disabled ?? false;\n const saveDisabled = props.saveDisabled ?? false;\n const [open, setOpen] = useControllableOpen(openProp, defaultOpen, onOpenChange);\n const { saving, error, run, reset } = useSaveRunner(formatError, copy.saveFailed);\n const bodyRef = useRef<HTMLDivElement>(null);\n const editRef = useRef<HTMLButtonElement>(null);\n useFocusHandoff(open, bodyRef, editRef);\n\n // However the card closed — Cancel, a save, or a controlling host — the\n // next opening starts without the last one's error.\n useEffect(() => {\n if (!open) reset();\n }, [open, reset]);\n\n const openCard = useCallback(() => setOpen(true), [setOpen]);\n\n const cancel = useCallback(() => {\n if (saving) return;\n setOpen(false);\n onCancel?.();\n }, [saving, setOpen, onCancel]);\n\n const save = useCallback(() => {\n if (saving || saveDisabled) return;\n void run(onSave).then((saved) => {\n if (saved) setOpen(false);\n });\n }, [saving, saveDisabled, run, onSave, setOpen]);\n\n return { open, disabled, saveDisabled, saving, error, bodyRef, editRef, openCard, cancel, save };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
inputRadiusStyles,
|
|
10
10
|
outlinedStyles,
|
|
11
11
|
pulseStyles
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-YLXQWYOG.js";
|
|
13
13
|
import {
|
|
14
14
|
INPUT_LOADING,
|
|
15
15
|
SIZE_MAP,
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
} from "./chunk-TYJR4GOF.js";
|
|
21
21
|
import {
|
|
22
22
|
fieldControlStyles
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-M47ZOUGF.js";
|
|
24
24
|
import {
|
|
25
25
|
rem
|
|
26
26
|
} from "./chunk-YKCAJ2TN.js";
|
|
@@ -92,6 +92,7 @@ var Input = React.forwardRef(
|
|
|
92
92
|
"aria-label": ariaLabel,
|
|
93
93
|
"aria-describedby": ariaDescribedBy,
|
|
94
94
|
"aria-busy": ariaBusy,
|
|
95
|
+
inputProps,
|
|
95
96
|
...rest
|
|
96
97
|
}, ref) => {
|
|
97
98
|
const { testId: dataTestId, rest: props } = splitTestId(rest);
|
|
@@ -117,6 +118,7 @@ var Input = React.forwardRef(
|
|
|
117
118
|
onBlur,
|
|
118
119
|
inputProps: {
|
|
119
120
|
"data-testid": dataTestId,
|
|
121
|
+
...inputProps,
|
|
120
122
|
...inputAriaOf({ id, helperText, label: ariaLabel, describedBy: ariaDescribedBy, busy: ariaBusy })
|
|
121
123
|
},
|
|
122
124
|
InputProps: {
|
|
@@ -135,4 +137,4 @@ Input.displayName = "Input";
|
|
|
135
137
|
export {
|
|
136
138
|
Input
|
|
137
139
|
};
|
|
138
|
-
//# sourceMappingURL=chunk-
|
|
140
|
+
//# sourceMappingURL=chunk-SDKOOVEX.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/Input/Input.tsx"],"sourcesContent":["import CircularProgress from '@mui/material/CircularProgress/index.js';\nimport InputAdornment from '@mui/material/InputAdornment/index.js';\nimport { styled, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { INPUT_LOADING } from './Input.metrics';\nimport { TextFieldSlim } from './text-field-slim';\n\nimport {\n filledStyles,\n floatingLabelStyles,\n glowStyles,\n inputBaseStyles,\n inputRadiusStyles,\n muiVariantFor,\n outlinedStyles,\n pulseStyles,\n SIZE_MAP,\n} from './Input.styles';\nimport type { InputProps } from './Input.types';\nimport { splitTestId } from '../../../platform/test-id';\nimport { fieldControlStyles } from '../../../tokens/field-height';\nimport { rem } from '../../../tokens/relative';\nimport type { SizeValue } from '../../../tokens/vocabulary';\n\n/**\n * `TextFieldSlim`, not `TextField` — see `text-field-slim.tsx`. MUI's own\n * `TextField` imports `Select` unconditionally, and through it `Menu`,\n * `Popover`, `Modal` and seven more component modules, so every screen with one\n * text box shipped a dropdown it can never render. Same composition, same DOM,\n * same prop routing; the select branch is the only thing missing.\n */\nconst StyledTextField = styled(TextFieldSlim, {\n shouldForwardProp: (prop) =>\n !['customVariant', 'fieldSize', 'floating', 'glow', 'pulse', 'loading'].includes(prop as string),\n})<{\n customVariant?: InputProps['variant'];\n fieldSize: SizeValue;\n floating?: boolean;\n glow?: boolean;\n pulse?: boolean;\n loading?: boolean;\n}>(({ theme, customVariant, fieldSize, floating, glow, pulse, loading }) => ({\n position: 'relative',\n // The theme's field height for this size (outlined family, one line).\n ...fieldControlStyles(theme, fieldSize),\n opacity: loading ? INPUT_LOADING.opacity : 1,\n\n ...(glow ? glowStyles(theme) : {}),\n ...(pulse ? pulseStyles(theme, fieldSize) : {}),\n ...(floating ? floatingLabelStyles(theme) : {}),\n\n '& .MuiInputBase-root': {\n transition: 'all 0.3s ease',\n ...inputRadiusStyles(theme, customVariant),\n ...inputBaseStyles(theme, customVariant),\n },\n\n '& .MuiOutlinedInput-root': outlinedStyles(theme),\n '& .MuiFilledInput-root': filledStyles(theme),\n}));\n\n/** Only one adornment shows at a time: the spinner replaces the caller's while loading. */\nconst EndAdornment: React.FC<{ loading: boolean; endAdornment?: React.ReactNode }> = ({\n loading,\n endAdornment,\n}) => {\n const theme = useTheme();\n if (loading) {\n return (\n <InputAdornment position=\"end\">\n <CircularProgress size={rem(theme, INPUT_LOADING.spinnerSize)} />\n </InputAdornment>\n );\n }\n\n if (!endAdornment) return null;\n\n return <InputAdornment position=\"end\">{endAdornment}</InputAdornment>;\n};\n\n/** While loading the field is inert: no clicks, and disabled to assistive tech. */\nconst interactionProps = (\n loading: boolean,\n onClick: InputProps['onClick'],\n disabled?: boolean,\n) => ({\n disabled: loading || disabled,\n onClick: loading ? undefined : onClick,\n});\n\n/**\n * The ARIA that describes the field has to sit on the `<input>`: the text\n * field puts every attribute it does not recognise on its root `FormControl`,\n * a `<div>` with no role, where a screen reader never reads it.\n *\n * `aria-label` has ridden `inputProps` since FUT-755. `aria-describedby` and\n * `aria-busy` fell through to the div until FUT-2619, so CepField's input\n * pointed at nothing while its lookup status lived in a live region beside it.\n *\n * `inputProps` are spread onto the `<input>` AFTER the `aria-describedby` MUI\n * writes for helper text, so a caller's ids REPLACE the helper text's: MUI's\n * `TextField` on its own keeps only one of the two. This joins both, helper\n * text first. The helper id is MUI's `<id>-helper-text` (the parity test pins\n * that spelling), which is why the field's id is fixed here rather than left\n * to the text field.\n */\nfunction inputAriaOf(a: {\n id: string;\n helperText: React.ReactNode;\n label?: string;\n describedBy?: string;\n busy?: InputProps['aria-busy'];\n}): Record<string, unknown> {\n const describedBy = [a.helperText ? `${a.id}-helper-text` : undefined, a.describedBy]\n .filter(Boolean)\n .join(' ');\n return {\n ...(a.label === undefined ? {} : { 'aria-label': a.label }),\n ...(a.describedBy === undefined ? {} : { 'aria-describedby': describedBy }),\n ...(a.busy === undefined ? {} : { 'aria-busy': a.busy }),\n };\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n variant = 'outlined',\n size = 'md',\n label,\n error,\n helperText,\n startAdornment,\n endAdornment,\n fullWidth = true,\n floating = false,\n glow = false,\n pulse = false,\n loading = false,\n onClick,\n onFocus,\n onBlur,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedBy,\n 'aria-busy': ariaBusy,\n ...rest\n },\n ref,\n ) => {\n const { testId: dataTestId, rest: props } = splitTestId(rest);\n const generatedId = React.useId();\n const id = props.id ?? generatedId;\n return (\n <StyledTextField\n ref={ref}\n variant={muiVariantFor(variant)}\n customVariant={variant}\n fieldSize={size}\n floating={floating}\n glow={glow}\n pulse={pulse}\n loading={loading}\n label={label}\n error={error}\n helperText={helperText}\n fullWidth={fullWidth}\n {...interactionProps(loading, onClick, props.disabled)}\n onFocus={onFocus}\n onBlur={onBlur}\n /*\n * `aria-label` has to ride `inputProps` to reach the `<input>` (FUT-755).\n * Spread with the rest it lands on the FormControl DIV that the text\n * field renders as its root, which carries no role — so the field kept\n * no accessible name, and a source grep saying \"this input is labelled\"\n * disagreed with the DOM. The reports search box and the block-title\n * inputs were both named in source and anonymous to a screen reader.\n * `aria-describedby` and `aria-busy` are the same case: `inputAriaOf`.\n */\n inputProps={{\n 'data-testid': dataTestId,\n ...inputAriaOf({ id, helperText, label: ariaLabel, describedBy: ariaDescribedBy, busy: ariaBusy }),\n }}\n InputProps={{\n startAdornment: startAdornment && (\n <InputAdornment position=\"start\">{startAdornment}</InputAdornment>\n ),\n endAdornment: <EndAdornment loading={loading} endAdornment={endAdornment} />,\n }}\n {...SIZE_MAP[size]}\n {...props}\n id={id}\n />\n );\n },\n);\n\nInput.displayName = 'Input';\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/components/form/Input/Input.tsx"],"sourcesContent":["import CircularProgress from '@mui/material/CircularProgress/index.js';\nimport InputAdornment from '@mui/material/InputAdornment/index.js';\nimport { styled, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { INPUT_LOADING } from './Input.metrics';\nimport { TextFieldSlim } from './text-field-slim';\n\nimport {\n filledStyles,\n floatingLabelStyles,\n glowStyles,\n inputBaseStyles,\n inputRadiusStyles,\n muiVariantFor,\n outlinedStyles,\n pulseStyles,\n SIZE_MAP,\n} from './Input.styles';\nimport type { InputProps } from './Input.types';\nimport { splitTestId } from '../../../platform/test-id';\nimport { fieldControlStyles } from '../../../tokens/field-height';\nimport { rem } from '../../../tokens/relative';\nimport type { SizeValue } from '../../../tokens/vocabulary';\n\n/**\n * `TextFieldSlim`, not `TextField` — see `text-field-slim.tsx`. MUI's own\n * `TextField` imports `Select` unconditionally, and through it `Menu`,\n * `Popover`, `Modal` and seven more component modules, so every screen with one\n * text box shipped a dropdown it can never render. Same composition, same DOM,\n * same prop routing; the select branch is the only thing missing.\n */\nconst StyledTextField = styled(TextFieldSlim, {\n shouldForwardProp: (prop) =>\n !['customVariant', 'fieldSize', 'floating', 'glow', 'pulse', 'loading'].includes(prop as string),\n})<{\n customVariant?: InputProps['variant'];\n fieldSize: SizeValue;\n floating?: boolean;\n glow?: boolean;\n pulse?: boolean;\n loading?: boolean;\n}>(({ theme, customVariant, fieldSize, floating, glow, pulse, loading }) => ({\n position: 'relative',\n // The theme's field height for this size (outlined family, one line).\n ...fieldControlStyles(theme, fieldSize),\n opacity: loading ? INPUT_LOADING.opacity : 1,\n\n ...(glow ? glowStyles(theme) : {}),\n ...(pulse ? pulseStyles(theme, fieldSize) : {}),\n ...(floating ? floatingLabelStyles(theme) : {}),\n\n '& .MuiInputBase-root': {\n transition: 'all 0.3s ease',\n ...inputRadiusStyles(theme, customVariant),\n ...inputBaseStyles(theme, customVariant),\n },\n\n '& .MuiOutlinedInput-root': outlinedStyles(theme),\n '& .MuiFilledInput-root': filledStyles(theme),\n}));\n\n/** Only one adornment shows at a time: the spinner replaces the caller's while loading. */\nconst EndAdornment: React.FC<{ loading: boolean; endAdornment?: React.ReactNode }> = ({\n loading,\n endAdornment,\n}) => {\n const theme = useTheme();\n if (loading) {\n return (\n <InputAdornment position=\"end\">\n <CircularProgress size={rem(theme, INPUT_LOADING.spinnerSize)} />\n </InputAdornment>\n );\n }\n\n if (!endAdornment) return null;\n\n return <InputAdornment position=\"end\">{endAdornment}</InputAdornment>;\n};\n\n/** While loading the field is inert: no clicks, and disabled to assistive tech. */\nconst interactionProps = (\n loading: boolean,\n onClick: InputProps['onClick'],\n disabled?: boolean,\n) => ({\n disabled: loading || disabled,\n onClick: loading ? undefined : onClick,\n});\n\n/**\n * The ARIA that describes the field has to sit on the `<input>`: the text\n * field puts every attribute it does not recognise on its root `FormControl`,\n * a `<div>` with no role, where a screen reader never reads it.\n *\n * `aria-label` has ridden `inputProps` since FUT-755. `aria-describedby` and\n * `aria-busy` fell through to the div until FUT-2619, so CepField's input\n * pointed at nothing while its lookup status lived in a live region beside it.\n *\n * `inputProps` are spread onto the `<input>` AFTER the `aria-describedby` MUI\n * writes for helper text, so a caller's ids REPLACE the helper text's: MUI's\n * `TextField` on its own keeps only one of the two. This joins both, helper\n * text first. The helper id is MUI's `<id>-helper-text` (the parity test pins\n * that spelling), which is why the field's id is fixed here rather than left\n * to the text field.\n */\nfunction inputAriaOf(a: {\n id: string;\n helperText: React.ReactNode;\n label?: string;\n describedBy?: string;\n busy?: InputProps['aria-busy'];\n}): Record<string, unknown> {\n const describedBy = [a.helperText ? `${a.id}-helper-text` : undefined, a.describedBy]\n .filter(Boolean)\n .join(' ');\n return {\n ...(a.label === undefined ? {} : { 'aria-label': a.label }),\n ...(a.describedBy === undefined ? {} : { 'aria-describedby': describedBy }),\n ...(a.busy === undefined ? {} : { 'aria-busy': a.busy }),\n };\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n variant = 'outlined',\n size = 'md',\n label,\n error,\n helperText,\n startAdornment,\n endAdornment,\n fullWidth = true,\n floating = false,\n glow = false,\n pulse = false,\n loading = false,\n onClick,\n onFocus,\n onBlur,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedBy,\n 'aria-busy': ariaBusy,\n inputProps,\n ...rest\n },\n ref,\n ) => {\n const { testId: dataTestId, rest: props } = splitTestId(rest);\n const generatedId = React.useId();\n const id = props.id ?? generatedId;\n return (\n <StyledTextField\n ref={ref}\n variant={muiVariantFor(variant)}\n customVariant={variant}\n fieldSize={size}\n floating={floating}\n glow={glow}\n pulse={pulse}\n loading={loading}\n label={label}\n error={error}\n helperText={helperText}\n fullWidth={fullWidth}\n {...interactionProps(loading, onClick, props.disabled)}\n onFocus={onFocus}\n onBlur={onBlur}\n /*\n * `aria-label` has to ride `inputProps` to reach the `<input>` (FUT-755).\n * Spread with the rest it lands on the FormControl DIV that the text\n * field renders as its root, which carries no role — so the field kept\n * no accessible name, and a source grep saying \"this input is labelled\"\n * disagreed with the DOM. The reports search box and the block-title\n * inputs were both named in source and anonymous to a screen reader.\n * `aria-describedby` and `aria-busy` are the same case: `inputAriaOf`.\n */\n inputProps={{\n 'data-testid': dataTestId,\n ...inputProps,\n ...inputAriaOf({ id, helperText, label: ariaLabel, describedBy: ariaDescribedBy, busy: ariaBusy }),\n }}\n InputProps={{\n startAdornment: startAdornment && (\n <InputAdornment position=\"start\">{startAdornment}</InputAdornment>\n ),\n endAdornment: <EndAdornment loading={loading} endAdornment={endAdornment} />,\n }}\n {...SIZE_MAP[size]}\n {...props}\n id={id}\n />\n );\n },\n);\n\nInput.displayName = 'Input';\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
fieldHeight
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-M47ZOUGF.js";
|
|
4
4
|
import {
|
|
5
5
|
fieldRadiusPx
|
|
6
6
|
} from "./chunk-GDN2LUTZ.js";
|
|
@@ -77,4 +77,4 @@ function FilterTrigger({
|
|
|
77
77
|
export {
|
|
78
78
|
FilterTrigger
|
|
79
79
|
};
|
|
80
|
-
//# sourceMappingURL=chunk-
|
|
80
|
+
//# sourceMappingURL=chunk-SNBAMWI5.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-6KEXHOIF.js";
|
|
4
4
|
import {
|
|
5
5
|
SettingsSectionChips
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-CKHFYTIX.js";
|
|
7
7
|
import {
|
|
8
8
|
TOUCH_TARGET,
|
|
9
9
|
atLeastRail,
|
|
@@ -167,4 +167,4 @@ function SettingsPanel({
|
|
|
167
167
|
export {
|
|
168
168
|
SettingsPanel
|
|
169
169
|
};
|
|
170
|
-
//# sourceMappingURL=chunk-
|
|
170
|
+
//# sourceMappingURL=chunk-TCNTIGMY.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CategorySectionHeading,
|
|
3
3
|
CategoryTreeRow
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-CMFJQH6A.js";
|
|
5
5
|
import {
|
|
6
6
|
emptySx,
|
|
7
7
|
listSx,
|
|
8
8
|
skeletonSx
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-Z6T5SXST.js";
|
|
10
10
|
import {
|
|
11
11
|
categoryCheckState,
|
|
12
12
|
isLeafCategory,
|
|
@@ -144,4 +144,4 @@ function CategoryPanelList(props) {
|
|
|
144
144
|
export {
|
|
145
145
|
CategoryPanelList
|
|
146
146
|
};
|
|
147
|
-
//# sourceMappingURL=chunk-
|
|
147
|
+
//# sourceMappingURL=chunk-TPVSHO75.js.map
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
} from "./chunk-AUHYR7ID.js";
|
|
12
12
|
import {
|
|
13
13
|
Button
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-K6LNHHSH.js";
|
|
15
15
|
|
|
16
16
|
// src/components/feedback/NotificationStatusNotice/NotificationStatusNotice.tsx
|
|
17
17
|
import Box from "@mui/material/Box/index.js";
|
|
@@ -106,4 +106,4 @@ NotificationStatusNotice.displayName = "NotificationStatusNotice";
|
|
|
106
106
|
export {
|
|
107
107
|
NotificationStatusNotice
|
|
108
108
|
};
|
|
109
|
-
//# sourceMappingURL=chunk-
|
|
109
|
+
//# sourceMappingURL=chunk-TTJTMDLI.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
PT_BR_TABLE_FILTER_COPY
|
|
3
|
-
} from "./chunk-A7RIZOAL.js";
|
|
4
1
|
import {
|
|
5
2
|
PT_BR_CATEGORY_SELECT_COPY,
|
|
6
3
|
PT_BR_CONFIRM_ACTION_COPY,
|
|
7
4
|
PT_BR_SAVED_VIEWS_LABELS
|
|
8
5
|
} from "./chunk-WUE5EK42.js";
|
|
6
|
+
import {
|
|
7
|
+
PT_BR_TABLE_FILTER_COPY
|
|
8
|
+
} from "./chunk-33L26P4J.js";
|
|
9
9
|
|
|
10
10
|
// src/pt-BR.data-display.ts
|
|
11
11
|
var PT_BR_LIGHTBOX_COPY = {
|
|
@@ -225,4 +225,4 @@ export {
|
|
|
225
225
|
PT_BR_DATA_STATE_COPY,
|
|
226
226
|
PT_BR_DATA_VIEWS_COPY
|
|
227
227
|
};
|
|
228
|
-
//# sourceMappingURL=chunk-
|
|
228
|
+
//# sourceMappingURL=chunk-U5SH3VRJ.js.map
|