@12-apps/ui 6.81.0 → 6.83.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/components-catalog.md +10 -3
- package/components-guidelines.md +38 -0
- package/dist/_internal/components/data-display/Alert/Alert.js +3 -3
- package/dist/_internal/components/data-display/AlertDialog/AlertDialog.js +3 -3
- package/dist/_internal/components/data-display/AlertDialog/AlertDialog.parts.js +2 -2
- package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +6 -6
- package/dist/_internal/components/data-display/Avatar/Avatar.js +4 -4
- package/dist/_internal/components/data-display/Avatar/Avatar.view.js +2 -2
- package/dist/_internal/components/data-display/CardKit/CardKebab.js +3 -3
- package/dist/_internal/components/data-display/CardKit/card-actions-context.js +4 -4
- package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +14 -14
- package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +10 -10
- package/dist/_internal/components/data-display/Carousel/Carousel.js +4 -4
- package/dist/_internal/components/data-display/Chart/Chart.js +3 -3
- package/dist/_internal/components/data-display/Chart/SpecChart.js +7 -7
- package/dist/_internal/components/data-display/Chart/chart-renderers.js +2 -2
- package/dist/_internal/components/data-display/Chart/chart-spec.js +2 -2
- package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +49 -49
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +68 -68
- package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +6 -6
- package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +12 -12
- package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +6 -6
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +2 -2
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-card-body.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-columns.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-empty.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-export.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +14 -14
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +10 -10
- package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +43 -43
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +18 -18
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +13 -13
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +16 -16
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +15 -15
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +22 -22
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +14 -14
- package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +3 -3
- package/dist/_internal/components/data-display/DataViews/list-card-rails.js +2 -2
- package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +7 -7
- package/dist/_internal/components/data-display/EmptyState/EmptyState.js +3 -3
- package/dist/_internal/components/data-display/ErrorState/ErrorState.js +2 -2
- package/dist/_internal/components/data-display/FleetMap/FleetBody.js +10 -10
- package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +7 -7
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js +14 -14
- package/dist/_internal/components/data-display/FleetMap/FleetRoster.js +2 -2
- package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.js +2 -2
- package/dist/_internal/components/data-display/LazyImage/LazyImage.js +2 -2
- package/dist/_internal/components/data-display/Lightbox/Lightbox.js +6 -6
- package/dist/_internal/components/data-display/LoadingState/LoadingState.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapLayers.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapPreview.js +6 -6
- package/dist/_internal/components/data-display/Progress/Progress.js +2 -2
- package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +5 -5
- package/dist/_internal/components/data-display/Sheet/Sheet.body.js +3 -3
- package/dist/_internal/components/data-display/Sheet/Sheet.js +6 -6
- package/dist/_internal/components/data-display/Sheet/Sheet.parts.js +2 -2
- package/dist/_internal/components/data-display/Stepper/Stepper.js +2 -2
- package/dist/_internal/components/data-display/Table/Table.js +5 -5
- package/dist/_internal/components/data-display/Table/TableParts.hooks.js +2 -2
- package/dist/_internal/components/data-display/Table/TableParts.js +2 -2
- package/dist/_internal/components/data-display/Timeline/Timeline.js +2 -2
- package/dist/_internal/components/data-display/index.js +71 -71
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +5 -5
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.parts.js +4 -4
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +8 -8
- package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +5 -5
- package/dist/_internal/components/feedback/Dialog/Dialog.js +3 -3
- package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +6 -6
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +14 -14
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +8 -8
- package/dist/_internal/components/feedback/Sonner/Sonner.js +2 -2
- package/dist/_internal/components/feedback/StackedModal/StackedModal.js +7 -7
- package/dist/_internal/components/feedback/StackedModal/StackedModal.parts.js +2 -2
- package/dist/_internal/components/feedback/Toast/Toast.js +2 -2
- package/dist/_internal/components/feedback/index.js +31 -31
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +6 -6
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +4 -4
- package/dist/_internal/components/form/Autocomplete/Autocomplete.js +2 -2
- package/dist/_internal/components/form/Button/Button.js +2 -2
- package/dist/_internal/components/form/Calendar/Calendar.dates.js +3 -1
- package/dist/_internal/components/form/Calendar/Calendar.helpers.js +1 -1
- package/dist/_internal/components/form/Calendar/Calendar.hooks.js +4 -4
- package/dist/_internal/components/form/Calendar/Calendar.js +15 -8
- package/dist/_internal/components/form/Calendar/Calendar.keyboard.js +2 -2
- package/dist/_internal/components/form/Calendar/Calendar.picker.js +10 -0
- package/dist/_internal/components/form/Calendar/Calendar.picker.js.map +1 -0
- package/dist/_internal/components/form/Calendar/Calendar.selection.js +2 -2
- package/dist/_internal/components/form/Calendar/Calendar.views.js +27 -0
- package/dist/_internal/components/form/Calendar/Calendar.views.js.map +1 -0
- package/dist/_internal/components/form/Calendar/CalendarDayCell.js +3 -3
- package/dist/_internal/components/form/Calendar/CalendarMonth.js +10 -6
- package/dist/_internal/components/form/Calendar/CalendarPickerGrid.js +11 -0
- package/dist/_internal/components/form/Calendar/CalendarPickerGrid.js.map +1 -0
- package/dist/_internal/components/form/Calendar/CalendarSelectorsCaption.js +9 -0
- package/dist/_internal/components/form/Calendar/CalendarSelectorsCaption.js.map +1 -0
- package/dist/_internal/components/form/Calendar/CalendarSelectorsMonth.js +17 -0
- package/dist/_internal/components/form/Calendar/CalendarSelectorsMonth.js.map +1 -0
- package/dist/_internal/components/form/CepField/CepField.js +1 -1
- package/dist/_internal/components/form/Command/Command.hooks.js +2 -2
- package/dist/_internal/components/form/Command/Command.js +4 -4
- package/dist/_internal/components/form/Command/Command.parts.js +2 -2
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.dates.js +2 -2
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +5 -5
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +21 -15
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.quick.js +3 -3
- 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/RichTextEditor/RichTextEditor.dom.js +2 -2
- package/dist/_internal/components/form/RichTextEditor/RichTextEditor.format.js +3 -3
- package/dist/_internal/components/form/RichTextEditor/RichTextEditor.hooks.js +4 -4
- package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +5 -5
- package/dist/_internal/components/form/index.js +38 -33
- package/dist/_internal/components/form/total-form/Fields/CepField.js +2 -2
- package/dist/_internal/components/form/total-form/Fields/index.js +3 -3
- package/dist/_internal/components/form/total-form/FormErrorSnackbar.js +3 -3
- package/dist/_internal/components/form/total-form/SubmitButton.js +3 -3
- package/dist/_internal/components/index.js +160 -155
- package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +2 -2
- package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +3 -3
- package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +2 -2
- package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +2 -2
- package/dist/_internal/components/layout/Dashboard/Dashboard.js +2 -2
- package/dist/_internal/components/layout/Drawer/Drawer.js +2 -2
- package/dist/_internal/components/layout/SettingCard/SettingCard.js +7 -7
- package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +3 -3
- package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js +6 -6
- package/dist/_internal/components/layout/SettingCard/SettingGrid.js +4 -4
- package/dist/_internal/components/layout/SettingCard/SettingGroup.js +8 -8
- package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +7 -7
- package/dist/_internal/components/layout/SettingCard/SettingToggle.js +8 -8
- package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +2 -2
- package/dist/_internal/components/layout/TableFilter/TableFilter.js +2 -2
- package/dist/_internal/components/layout/index.js +20 -20
- package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +9 -9
- package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +2 -2
- package/dist/_internal/components/navigation/Breadcrumbs/Breadcrumbs.js +2 -2
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +3 -3
- package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +2 -2
- package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +4 -4
- package/dist/_internal/components/navigation/SectionNav/SectionNav.js +5 -5
- package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +3 -3
- package/dist/_internal/components/navigation/index.js +18 -18
- package/dist/_internal/components/typography/Code/Code.js +2 -2
- package/dist/_internal/components/typography/index.js +2 -2
- package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.js +2 -2
- package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.js +3 -3
- package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.parts.js +2 -2
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +2 -2
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +5 -5
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +3 -3
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +4 -4
- package/dist/_internal/components/utility/index.js +8 -8
- package/dist/_internal/en-US.labels.js +1 -1
- package/dist/_internal/pt-BR.labels.js +1 -1
- package/dist/_internal/social-login-button/social-login-button.js +4 -4
- package/dist/_internal/user-avatar/user-avatar.js +7 -7
- package/dist/charts.js +17 -17
- package/dist/{chunk-5JDY5W7O.js → chunk-2SBQ47RI.js} +3 -3
- package/dist/{chunk-Y3YZBB74.js → chunk-2ZMR3TZU.js} +2 -2
- package/dist/{chunk-RIDCGFGM.js → chunk-34FX3NRZ.js} +2 -2
- package/dist/{chunk-7H5BIZ33.js → chunk-37G7M2GJ.js} +4 -4
- package/dist/{chunk-VAGGIRLA.js → chunk-3RHU2Y2N.js} +3 -3
- package/dist/{chunk-QYX4567K.js → chunk-3S352ZSG.js} +2 -2
- package/dist/{chunk-L4FWEI2P.js → chunk-3V3Z4EML.js} +5 -5
- package/dist/{chunk-W3EVATBS.js → chunk-3YFDGFEK.js} +5 -5
- package/dist/{chunk-VJG43WKU.js → chunk-45AON4CS.js} +2 -2
- package/dist/{chunk-GX2LIB4T.js → chunk-4IG73U2X.js} +2 -2
- package/dist/{chunk-DD3VFDB2.js → chunk-4IVEBBF6.js} +3 -3
- package/dist/{chunk-DE2GWZ6X.js → chunk-4J62V5OE.js} +3 -3
- package/dist/{chunk-V65YK5DC.js → chunk-4QGMUHAU.js} +2 -2
- package/dist/{chunk-6IVR5HFI.js → chunk-4UCXJYOO.js} +6 -6
- package/dist/{chunk-UK3DSFMK.js → chunk-54F7QIV2.js} +2 -2
- package/dist/{chunk-ZDBG7QG2.js → chunk-54OJAOXC.js} +8 -8
- package/dist/{chunk-634Z7HGN.js → chunk-5CP6VW5H.js} +6 -6
- package/dist/{chunk-52UVUVYQ.js → chunk-5RPT32EL.js} +2 -2
- package/dist/chunk-66TCKXOB.js +102 -0
- package/dist/chunk-66TCKXOB.js.map +1 -0
- package/dist/{chunk-QADTI63U.js → chunk-6ATXOJVQ.js} +4 -4
- package/dist/{chunk-GMU5AA3R.js → chunk-6OYB3MRF.js} +5 -5
- package/dist/{chunk-OCLEKMBP.js → chunk-73BMQ3VC.js} +2 -2
- package/dist/{chunk-4NVEUJXK.js → chunk-76IHYINM.js} +5 -5
- package/dist/{chunk-OOCD2QR3.js → chunk-7QKFMMWK.js} +2 -2
- package/dist/{chunk-Z52W7FEU.js → chunk-7W5X3KQ2.js} +2 -2
- package/dist/{chunk-EOQ6EKTS.js → chunk-7XSCEHGA.js} +7 -7
- package/dist/{chunk-OTION43A.js → chunk-A5U7HEBI.js} +12 -12
- package/dist/{chunk-XF47LPCF.js → chunk-ABVIMFSD.js} +2 -2
- package/dist/{chunk-ABJOW7EK.js → chunk-ALOEOGQV.js} +4 -4
- package/dist/{chunk-HI7JPDD6.js → chunk-AMLHEKSV.js} +5 -5
- package/dist/{chunk-BLHSLB5D.js → chunk-APBIQH4G.js} +3 -3
- package/dist/{chunk-RMZQHJEP.js → chunk-ATJTGQYE.js} +2 -2
- package/dist/{chunk-URAX2JPM.js → chunk-B32XH7NK.js} +3 -3
- package/dist/{chunk-BX6CF2UG.js → chunk-BLNFOP2O.js} +4 -4
- package/dist/{chunk-NGXDOWUP.js → chunk-BNBWUXT3.js} +4 -4
- package/dist/{chunk-LHRAHDJF.js → chunk-BO6IMK5P.js} +3 -3
- package/dist/{chunk-7UDQJOZZ.js → chunk-C347NNZJ.js} +2 -2
- package/dist/{chunk-NWNHSASQ.js → chunk-CAOL4AIB.js} +2 -2
- package/dist/{chunk-TLZR6UPJ.js → chunk-COK65GX2.js} +2 -2
- package/dist/{chunk-BMVLTTTC.js → chunk-CY4XIZNW.js} +2 -2
- package/dist/{chunk-UF4JFRLE.js → chunk-D22FGMGU.js} +5 -5
- package/dist/{chunk-LDPN55AA.js → chunk-D3W5A4N6.js} +2 -2
- package/dist/{chunk-B67KUCWU.js → chunk-D5Y4PNC5.js} +2 -2
- package/dist/{chunk-775LIZXS.js → chunk-D72GD4XC.js} +5 -5
- package/dist/{chunk-TLVKJBPM.js → chunk-DAFFZED3.js} +6 -6
- package/dist/{chunk-BLZDSCIZ.js → chunk-DYHOBKPU.js} +6 -6
- package/dist/{chunk-FB4GLQQO.js → chunk-E3E4L7MH.js} +7 -7
- package/dist/{chunk-HWKBCLKD.js → chunk-E5OBAS3U.js} +2 -2
- package/dist/{chunk-WWIYYXY3.js → chunk-E72INDBL.js} +2 -2
- package/dist/{chunk-THD3N4BJ.js → chunk-EBEMNKTK.js} +19 -3
- package/dist/chunk-EBEMNKTK.js.map +1 -0
- package/dist/{chunk-UYNJ3FYE.js → chunk-EOIRU62W.js} +3 -3
- package/dist/{chunk-G3SWMBZS.js → chunk-EWFBDAB7.js} +2 -2
- package/dist/{chunk-NSS3X7FK.js → chunk-EYFDIUVR.js} +2 -2
- package/dist/{chunk-UCQRJTCI.js → chunk-GANJRIT3.js} +2 -2
- package/dist/{chunk-SMANO5OD.js → chunk-GJOU26UW.js} +2 -2
- package/dist/{chunk-H3NXDKFH.js → chunk-GM7BG3SD.js} +2 -2
- package/dist/chunk-GVSRBFP3.js +118 -0
- package/dist/chunk-GVSRBFP3.js.map +1 -0
- package/dist/{chunk-SM2O6D5F.js → chunk-GYFKIPR2.js} +2 -2
- package/dist/{chunk-4PREA2R5.js → chunk-HBH7V3IP.js} +2 -2
- package/dist/{chunk-LUNN5GTB.js → chunk-HF2WLLGH.js} +2 -2
- package/dist/{chunk-U67CX4FL.js → chunk-HKQQ2NED.js} +2 -2
- package/dist/{chunk-JVOEVTCZ.js → chunk-HQCZT6TO.js} +5 -5
- package/dist/{chunk-SUALMVL7.js → chunk-I4K5JMS4.js} +4 -2
- package/dist/chunk-I4K5JMS4.js.map +1 -0
- package/dist/{chunk-C7LHIDVB.js → chunk-ICKR3QTG.js} +3 -3
- package/dist/{chunk-3B7EJIG7.js → chunk-IMYKJTVX.js} +2 -2
- package/dist/{chunk-J7CIRTWQ.js → chunk-J34VGMA5.js} +3 -3
- package/dist/chunk-J6LIZXSF.js +124 -0
- package/dist/chunk-J6LIZXSF.js.map +1 -0
- package/dist/{chunk-DWLSYFQW.js → chunk-JK3QB7MO.js} +3 -3
- package/dist/{chunk-6B7VZFAO.js → chunk-JMDT3GQ3.js} +3 -3
- package/dist/{chunk-E2Y7G4MP.js → chunk-JV2JIUDT.js} +2 -2
- package/dist/{chunk-BTDY2NYV.js → chunk-JXK53XJW.js} +11 -11
- package/dist/{chunk-K3PMMW23.js → chunk-K6VEN5VN.js} +4 -4
- package/dist/{chunk-YOQAK2RN.js → chunk-KES3HNSU.js} +2 -2
- package/dist/{chunk-BFBCTF2Y.js → chunk-KF3Q3C3P.js} +2 -2
- package/dist/{chunk-MKRJUT5O.js → chunk-KSJBFT4G.js} +6 -6
- package/dist/{chunk-AISCD6W6.js → chunk-L5KPBMMF.js} +2 -2
- package/dist/{chunk-ZT73ACK3.js → chunk-LCGK22QQ.js} +7 -7
- package/dist/{chunk-B2RNNJRO.js → chunk-LNIK7FJO.js} +2 -2
- package/dist/{chunk-B25SHVWP.js → chunk-LODYTVOO.js} +4 -4
- package/dist/{chunk-763AHWKU.js → chunk-LOHQLARB.js} +2 -2
- package/dist/{chunk-7HYLXERK.js → chunk-LRIPJ2D5.js} +4 -4
- package/dist/{chunk-F5SUBK42.js → chunk-LXIPBHNJ.js} +6 -6
- package/dist/{chunk-CFDYQSN6.js → chunk-LZ5PGB7U.js} +7 -7
- package/dist/{chunk-FFQ4NOJT.js → chunk-LZOCNAUA.js} +2 -2
- package/dist/{chunk-BLVFHVDM.js → chunk-MLGAGZJ3.js} +19 -19
- package/dist/{chunk-QVEJGFRP.js → chunk-MNNIOQTQ.js} +3 -3
- package/dist/{chunk-AFSXC5FU.js → chunk-MSJP2AEN.js} +2 -2
- package/dist/{chunk-KSOIFQJ6.js → chunk-MT74NRLY.js} +7 -7
- package/dist/{chunk-PAKLYZ6G.js → chunk-N557OEZR.js} +4 -4
- package/dist/{chunk-DKRMOIX2.js → chunk-NASLJO2R.js} +2 -2
- package/dist/{chunk-QVDEGBME.js → chunk-NQCTANF3.js} +7 -7
- package/dist/{chunk-AOBQ3KYY.js → chunk-NZDIO5UG.js} +4 -4
- package/dist/{chunk-5USHYSCO.js → chunk-OKDAHCYE.js} +4 -4
- package/dist/{chunk-ZIHSCBMN.js → chunk-OUI5IPS6.js} +10 -10
- package/dist/{chunk-PGBIUO2A.js → chunk-PEMXXFXL.js} +3 -3
- package/dist/{chunk-FCCOUOP7.js → chunk-PEVBSNCD.js} +2 -2
- package/dist/{chunk-UHQZ5XPW.js → chunk-POUNFTG3.js} +24 -11
- package/dist/chunk-POUNFTG3.js.map +1 -0
- package/dist/{chunk-HTGK7QCX.js → chunk-Q7QQXNL7.js} +2 -2
- package/dist/{chunk-A7LBWRRW.js → chunk-QCYQL3ST.js} +2 -2
- package/dist/{chunk-XDDKRACZ.js → chunk-QHFAKEZZ.js} +3 -3
- package/dist/{chunk-6EERXU6R.js → chunk-QTLM2YY2.js} +2 -2
- package/dist/{chunk-TERT6TIS.js → chunk-QWOI5BZV.js} +9 -4
- package/dist/chunk-QWOI5BZV.js.map +1 -0
- package/dist/{chunk-QKLSHNOH.js → chunk-R26WP22N.js} +2 -2
- package/dist/{chunk-7S3NG2AO.js → chunk-RB3R6BJL.js} +7 -7
- package/dist/{chunk-SXNGH56D.js → chunk-RBW5QQXW.js} +12 -12
- package/dist/{chunk-PJNIJIE6.js → chunk-RCTHCXS6.js} +2 -2
- package/dist/{chunk-DT22MDC3.js → chunk-RDRXTH47.js} +7 -7
- package/dist/{chunk-JMUZ5JZA.js → chunk-RWCQ6TEM.js} +2 -2
- package/dist/{chunk-TIM4PXWN.js → chunk-SB2SEGR6.js} +3 -3
- package/dist/chunk-SUCVFEPT.js +138 -0
- package/dist/chunk-SUCVFEPT.js.map +1 -0
- package/dist/{chunk-FRAVVI4A.js → chunk-SUTOAW7I.js} +2 -2
- package/dist/{chunk-RQ3IS5NQ.js → chunk-SYERREN5.js} +6 -6
- package/dist/{chunk-TAR5LSGT.js → chunk-T77OVQEO.js} +2 -2
- package/dist/{chunk-VRKNVZZQ.js → chunk-TJUWSQYQ.js} +9 -1
- package/dist/{chunk-VRKNVZZQ.js.map → chunk-TJUWSQYQ.js.map} +1 -1
- package/dist/{chunk-V6DMNSW6.js → chunk-TPAMLIN7.js} +3 -3
- package/dist/{chunk-ISW5K72V.js → chunk-TPMT3J32.js} +16 -8
- package/dist/chunk-TPMT3J32.js.map +1 -0
- package/dist/{chunk-7DODMQRK.js → chunk-UBVKMM3V.js} +2 -2
- package/dist/{chunk-5463SZOH.js → chunk-UERGWYGY.js} +2 -2
- package/dist/{chunk-G6ET2DRL.js → chunk-UJACXYC2.js} +3 -3
- package/dist/{chunk-SYZVXWEQ.js → chunk-UQ5GJPVZ.js} +3 -3
- package/dist/{chunk-KW2KCPZF.js → chunk-UQ6SAIX7.js} +4 -4
- package/dist/{chunk-GHTVBYFA.js → chunk-UWVVKUCG.js} +4 -4
- package/dist/{chunk-EXKK73UN.js → chunk-UYKIUUWP.js} +2 -2
- package/dist/{chunk-HWUFOII2.js → chunk-VQ6V5TO7.js} +2 -2
- package/dist/{chunk-OT4HIG7S.js → chunk-VUBFCHXL.js} +4 -4
- package/dist/{chunk-A4B27HYU.js → chunk-WPFVQVQC.js} +4 -4
- package/dist/chunk-WQEGPSGD.js +61 -0
- package/dist/chunk-WQEGPSGD.js.map +1 -0
- package/dist/{chunk-DB7OJM6X.js → chunk-WWB43LWU.js} +2 -2
- package/dist/{chunk-HFZE2PGM.js → chunk-X4J576GR.js} +2 -2
- package/dist/{chunk-NF5TATKP.js → chunk-XATRYJ4Q.js} +5 -5
- package/dist/{chunk-6KCJNERH.js → chunk-XCUHGPPZ.js} +2 -2
- package/dist/{chunk-3LQLLL2J.js → chunk-XE7QBHXN.js} +2 -2
- package/dist/{chunk-YMKSPW4T.js → chunk-XKPV52CG.js} +3 -3
- package/dist/{chunk-QCNUMOTL.js → chunk-XNLJ2Z7T.js} +7 -3
- package/dist/chunk-XNLJ2Z7T.js.map +1 -0
- package/dist/{native/chunks/chunk-DUELD4HY.js → chunk-XOXXG7Q5.js} +9 -1
- package/dist/{chunk-O2RXSXSF.js.map → chunk-XOXXG7Q5.js.map} +1 -1
- package/dist/{chunk-I4NDZFTB.js → chunk-XXUTD74L.js} +3 -3
- package/dist/{chunk-PF2A2IM7.js → chunk-YGLAGY74.js} +2 -2
- package/dist/{chunk-4JV46KXS.js → chunk-YHKHHSZH.js} +4 -4
- package/dist/{chunk-6S7CFH6V.js → chunk-YJPBNIEM.js} +3 -3
- package/dist/{chunk-DWCH6GH5.js → chunk-YQIT3ET7.js} +2 -2
- package/dist/{chunk-G3JFESKD.js → chunk-Z5WUSI47.js} +6 -6
- package/dist/{chunk-SCQARHMU.js → chunk-ZANWHTXH.js} +2 -2
- package/dist/{chunk-A3Z7ZXLM.js → chunk-ZGAOA7LN.js} +8 -8
- package/dist/{chunk-72GJRV5J.js → chunk-ZNJGEDCE.js} +2 -2
- package/dist/{chunk-TGZ6GPYQ.js → chunk-ZYZPSBNQ.js} +3 -3
- package/dist/chunk-ZZGG6AUD.js +54 -0
- package/dist/chunk-ZZGG6AUD.js.map +1 -0
- package/dist/data-display/Alert.js +3 -3
- package/dist/data-display/AlertDialog.js +3 -3
- package/dist/data-display/AsyncStateContainer.js +6 -6
- package/dist/data-display/Avatar.js +4 -4
- package/dist/data-display/CardKit.js +21 -21
- package/dist/data-display/Carousel.js +4 -4
- package/dist/data-display/Chart.js +17 -17
- package/dist/data-display/DataGrid.js +2 -2
- package/dist/data-display/DataViews.js +86 -86
- package/dist/data-display/EmptyState.js +3 -3
- package/dist/data-display/ErrorState.js +2 -2
- package/dist/data-display/FleetMap.js +14 -14
- package/dist/data-display/InteractiveTooltip.js +2 -2
- package/dist/data-display/LazyImage.js +2 -2
- package/dist/data-display/Lightbox.js +6 -6
- package/dist/data-display/LoadingState.js +2 -2
- package/dist/data-display/MapPreview.js +6 -6
- package/dist/data-display/Progress.js +2 -2
- package/dist/data-display/SectionOnboarding.js +5 -5
- package/dist/data-display/Sheet.js +6 -6
- package/dist/data-display/Stepper.js +2 -2
- package/dist/data-display/Table.js +5 -5
- package/dist/data-display/Timeline.js +2 -2
- package/dist/en-US.js +1 -1
- package/dist/feedback/ConfirmAction.js +11 -11
- package/dist/feedback/Dialog.js +3 -3
- package/dist/feedback/NotificationStatusNotice.js +6 -6
- package/dist/feedback/SequenceResolver.js +14 -14
- package/dist/feedback/Sonner.js +2 -2
- package/dist/feedback/StackedModal.js +7 -7
- package/dist/feedback/Toast.js +2 -2
- package/dist/form/AddressAutocomplete.js +6 -6
- package/dist/form/Autocomplete.js +2 -2
- package/dist/form/Button.js +2 -2
- package/dist/form/Calendar.js +15 -8
- package/dist/form/CepField.js +1 -1
- package/dist/form/Command.js +4 -4
- package/dist/form/DateRangePicker.js +21 -15
- package/dist/form/RichTextEditor.js +5 -5
- package/dist/form/total-form.js +9 -9
- package/dist/layout/ContentToolbar.js +6 -6
- package/dist/layout/Dashboard.js +2 -2
- package/dist/layout/Drawer.js +2 -2
- package/dist/layout/SettingCard.js +11 -11
- package/dist/layout/SettingsLayout.js +2 -2
- package/dist/layout/TableFilter.js +2 -2
- package/dist/locales.js +2 -2
- package/dist/native/chunks/{chunk-7AVFQB6A.js → chunk-FXA5DLKR.js} +3 -3
- package/dist/native/chunks/{chunk-67CYDCHZ.js → chunk-IN3XZ7EK.js} +2 -2
- package/dist/{chunk-O2RXSXSF.js → native/chunks/chunk-QHW7JEPZ.js} +9 -1
- package/dist/native/chunks/{chunk-DUELD4HY.js.map → chunk-QHW7JEPZ.js.map} +1 -1
- package/dist/native/data-display/Avatar.js +1 -1
- package/dist/native/data-display/Badge.js +1 -1
- package/dist/native/data-display/Chip.js +1 -1
- package/dist/native/data-display/EmptyState.js +3 -3
- package/dist/native/data-display/ErrorState.js +2 -2
- package/dist/native/data-display/FleetMap.js +3 -3
- package/dist/native/data-display/LoadingState.js +1 -1
- package/dist/native/feedback/Dialog.js +1 -1
- package/dist/native/form/Button.js +2 -2
- package/dist/native/form/Checkbox.js +1 -1
- package/dist/native/form/Input.js +1 -1
- package/dist/native/form/Switch.js +1 -1
- package/dist/navigation/AppHeader.js +11 -11
- package/dist/navigation/Breadcrumbs.js +2 -2
- package/dist/navigation/NavigationMenu.js +3 -3
- package/dist/navigation/SectionNav.js +5 -5
- package/dist/pt-BR.js +1 -1
- package/dist/social-login-button.js +4 -4
- package/dist/types/components/form/Calendar/Calendar.d.ts.map +1 -1
- package/dist/types/components/form/Calendar/Calendar.dates.d.ts +11 -1
- package/dist/types/components/form/Calendar/Calendar.dates.d.ts.map +1 -1
- package/dist/types/components/form/Calendar/Calendar.helpers.d.ts.map +1 -1
- package/dist/types/components/form/Calendar/Calendar.hooks.d.ts +3 -0
- package/dist/types/components/form/Calendar/Calendar.hooks.d.ts.map +1 -1
- package/dist/types/components/form/Calendar/Calendar.picker.d.ts +29 -0
- package/dist/types/components/form/Calendar/Calendar.picker.d.ts.map +1 -0
- package/dist/types/components/form/Calendar/Calendar.types.d.ts +22 -1
- package/dist/types/components/form/Calendar/Calendar.types.d.ts.map +1 -1
- package/dist/types/components/form/Calendar/Calendar.views.d.ts +41 -0
- package/dist/types/components/form/Calendar/Calendar.views.d.ts.map +1 -0
- package/dist/types/components/form/Calendar/CalendarMonth.d.ts +17 -0
- package/dist/types/components/form/Calendar/CalendarMonth.d.ts.map +1 -1
- package/dist/types/components/form/Calendar/CalendarPickerGrid.d.ts +28 -0
- package/dist/types/components/form/Calendar/CalendarPickerGrid.d.ts.map +1 -0
- package/dist/types/components/form/Calendar/CalendarSelectorsCaption.d.ts +29 -0
- package/dist/types/components/form/Calendar/CalendarSelectorsCaption.d.ts.map +1 -0
- package/dist/types/components/form/Calendar/CalendarSelectorsMonth.d.ts +23 -0
- package/dist/types/components/form/Calendar/CalendarSelectorsMonth.d.ts.map +1 -0
- package/dist/types/components/form/Calendar/index.d.ts +1 -1
- package/dist/types/components/form/Calendar/index.d.ts.map +1 -1
- package/dist/types/components/form/CepField/CepField.d.ts +2 -1
- package/dist/types/components/form/CepField/CepField.d.ts.map +1 -1
- package/dist/types/components/form/CepField/CepField.types.d.ts +16 -0
- package/dist/types/components/form/CepField/CepField.types.d.ts.map +1 -1
- package/dist/types/components/form/total-form/Fields/CepField.d.ts +6 -1
- package/dist/types/components/form/total-form/Fields/CepField.d.ts.map +1 -1
- package/dist/types/copy/labels.d.ts +18 -0
- package/dist/types/copy/labels.d.ts.map +1 -1
- package/dist/types/en-US.labels.d.ts.map +1 -1
- package/dist/types/pt-BR.labels.d.ts.map +1 -1
- package/dist/types-native/copy/labels.d.ts +18 -0
- package/dist/types-native/copy/labels.d.ts.map +1 -1
- package/dist/types-native/en-US.labels.d.ts.map +1 -1
- package/dist/typography/Code.js +2 -2
- package/dist/user-avatar.js +7 -7
- package/dist/utility/AnimatedIcon.js +2 -2
- package/dist/utility/InfiniteScroll.js +3 -3
- package/dist/utility/WorkflowStep.js +5 -5
- package/package.json +1 -1
- package/src/components/data-display/AlertDialog/AlertDialog.md +1 -0
- package/src/components/data-display/Badge/Badge.md +1 -0
- package/src/components/data-display/Carousel/Carousel.md +6 -0
- package/src/components/data-display/Chip/chip.md +1 -0
- package/src/components/data-display/LazyImage/LazyImage.md +2 -0
- package/src/components/data-display/Stepper/Stepper.md +5 -0
- package/src/components/data-display/Table/Table.md +1 -0
- package/src/components/data-display/Timeline/Timeline.md +1 -0
- package/src/components/feedback/Dialog/Dialog.md +2 -0
- package/src/components/feedback/StackedModal/StackedModal.md +1 -0
- package/src/components/feedback/Toast/Toast.md +2 -0
- package/src/components/form/Button/Button.md +1 -0
- package/src/components/form/Calendar/Calendar.dates.ts +16 -1
- package/src/components/form/Calendar/Calendar.helpers.ts +4 -0
- package/src/components/form/Calendar/Calendar.hooks.ts +13 -3
- package/src/components/form/Calendar/Calendar.md +121 -0
- package/src/components/form/Calendar/Calendar.picker.ts +89 -0
- package/src/components/form/Calendar/Calendar.tsx +78 -30
- package/src/components/form/Calendar/Calendar.types.ts +25 -1
- package/src/components/form/Calendar/Calendar.views.ts +101 -0
- package/src/components/form/Calendar/CalendarMonth.tsx +30 -13
- package/src/components/form/Calendar/CalendarPickerGrid.tsx +139 -0
- package/src/components/form/Calendar/CalendarSelectorsCaption.tsx +163 -0
- package/src/components/form/Calendar/CalendarSelectorsMonth.tsx +137 -0
- package/src/components/form/Calendar/index.ts +1 -0
- package/src/components/form/CepField/CepField.md +22 -0
- package/src/components/form/CepField/CepField.tsx +31 -5
- package/src/components/form/CepField/CepField.types.ts +16 -0
- package/src/components/form/Checkbox/Checkbox.md +1 -0
- package/src/components/form/Input/Input.md +1 -0
- package/src/components/form/RichTextEditor/RichTextEditor.md +3 -2
- package/src/components/form/Switch/Switch.md +1 -0
- package/src/components/form/total-form/Fields/CepField.tsx +9 -0
- package/src/components/layout/ContentToolbar/ContentToolbar.md +12 -0
- package/src/components/layout/Dashboard/Dashboard.md +3 -0
- package/src/components/navigation/NavigationMenu/NavigationMenu.md +2 -0
- package/src/components/typography/Code/Code.md +10 -0
- package/src/components/utility/InfiniteScroll/InfiniteScroll.md +1 -0
- package/src/components/utility/WorkflowStep/WorkflowStep.md +1 -0
- package/src/copy/labels.ts +19 -0
- package/src/en-US.labels.ts +8 -0
- package/src/pt-BR.labels.ts +8 -0
- package/dist/chunk-ISW5K72V.js.map +0 -1
- package/dist/chunk-QCNUMOTL.js.map +0 -1
- package/dist/chunk-SUALMVL7.js.map +0 -1
- package/dist/chunk-TERT6TIS.js.map +0 -1
- package/dist/chunk-TGMMUKOF.js +0 -90
- package/dist/chunk-TGMMUKOF.js.map +0 -1
- package/dist/chunk-THD3N4BJ.js.map +0 -1
- package/dist/chunk-UHQZ5XPW.js.map +0 -1
- /package/dist/{chunk-5JDY5W7O.js.map → chunk-2SBQ47RI.js.map} +0 -0
- /package/dist/{chunk-Y3YZBB74.js.map → chunk-2ZMR3TZU.js.map} +0 -0
- /package/dist/{chunk-RIDCGFGM.js.map → chunk-34FX3NRZ.js.map} +0 -0
- /package/dist/{chunk-7H5BIZ33.js.map → chunk-37G7M2GJ.js.map} +0 -0
- /package/dist/{chunk-VAGGIRLA.js.map → chunk-3RHU2Y2N.js.map} +0 -0
- /package/dist/{chunk-QYX4567K.js.map → chunk-3S352ZSG.js.map} +0 -0
- /package/dist/{chunk-L4FWEI2P.js.map → chunk-3V3Z4EML.js.map} +0 -0
- /package/dist/{chunk-W3EVATBS.js.map → chunk-3YFDGFEK.js.map} +0 -0
- /package/dist/{chunk-VJG43WKU.js.map → chunk-45AON4CS.js.map} +0 -0
- /package/dist/{chunk-GX2LIB4T.js.map → chunk-4IG73U2X.js.map} +0 -0
- /package/dist/{chunk-DD3VFDB2.js.map → chunk-4IVEBBF6.js.map} +0 -0
- /package/dist/{chunk-DE2GWZ6X.js.map → chunk-4J62V5OE.js.map} +0 -0
- /package/dist/{chunk-V65YK5DC.js.map → chunk-4QGMUHAU.js.map} +0 -0
- /package/dist/{chunk-6IVR5HFI.js.map → chunk-4UCXJYOO.js.map} +0 -0
- /package/dist/{chunk-UK3DSFMK.js.map → chunk-54F7QIV2.js.map} +0 -0
- /package/dist/{chunk-ZDBG7QG2.js.map → chunk-54OJAOXC.js.map} +0 -0
- /package/dist/{chunk-634Z7HGN.js.map → chunk-5CP6VW5H.js.map} +0 -0
- /package/dist/{chunk-52UVUVYQ.js.map → chunk-5RPT32EL.js.map} +0 -0
- /package/dist/{chunk-QADTI63U.js.map → chunk-6ATXOJVQ.js.map} +0 -0
- /package/dist/{chunk-GMU5AA3R.js.map → chunk-6OYB3MRF.js.map} +0 -0
- /package/dist/{chunk-OCLEKMBP.js.map → chunk-73BMQ3VC.js.map} +0 -0
- /package/dist/{chunk-4NVEUJXK.js.map → chunk-76IHYINM.js.map} +0 -0
- /package/dist/{chunk-OOCD2QR3.js.map → chunk-7QKFMMWK.js.map} +0 -0
- /package/dist/{chunk-Z52W7FEU.js.map → chunk-7W5X3KQ2.js.map} +0 -0
- /package/dist/{chunk-EOQ6EKTS.js.map → chunk-7XSCEHGA.js.map} +0 -0
- /package/dist/{chunk-OTION43A.js.map → chunk-A5U7HEBI.js.map} +0 -0
- /package/dist/{chunk-XF47LPCF.js.map → chunk-ABVIMFSD.js.map} +0 -0
- /package/dist/{chunk-ABJOW7EK.js.map → chunk-ALOEOGQV.js.map} +0 -0
- /package/dist/{chunk-HI7JPDD6.js.map → chunk-AMLHEKSV.js.map} +0 -0
- /package/dist/{chunk-BLHSLB5D.js.map → chunk-APBIQH4G.js.map} +0 -0
- /package/dist/{chunk-RMZQHJEP.js.map → chunk-ATJTGQYE.js.map} +0 -0
- /package/dist/{chunk-URAX2JPM.js.map → chunk-B32XH7NK.js.map} +0 -0
- /package/dist/{chunk-BX6CF2UG.js.map → chunk-BLNFOP2O.js.map} +0 -0
- /package/dist/{chunk-NGXDOWUP.js.map → chunk-BNBWUXT3.js.map} +0 -0
- /package/dist/{chunk-LHRAHDJF.js.map → chunk-BO6IMK5P.js.map} +0 -0
- /package/dist/{chunk-7UDQJOZZ.js.map → chunk-C347NNZJ.js.map} +0 -0
- /package/dist/{chunk-NWNHSASQ.js.map → chunk-CAOL4AIB.js.map} +0 -0
- /package/dist/{chunk-TLZR6UPJ.js.map → chunk-COK65GX2.js.map} +0 -0
- /package/dist/{chunk-BMVLTTTC.js.map → chunk-CY4XIZNW.js.map} +0 -0
- /package/dist/{chunk-UF4JFRLE.js.map → chunk-D22FGMGU.js.map} +0 -0
- /package/dist/{chunk-LDPN55AA.js.map → chunk-D3W5A4N6.js.map} +0 -0
- /package/dist/{chunk-B67KUCWU.js.map → chunk-D5Y4PNC5.js.map} +0 -0
- /package/dist/{chunk-775LIZXS.js.map → chunk-D72GD4XC.js.map} +0 -0
- /package/dist/{chunk-TLVKJBPM.js.map → chunk-DAFFZED3.js.map} +0 -0
- /package/dist/{chunk-BLZDSCIZ.js.map → chunk-DYHOBKPU.js.map} +0 -0
- /package/dist/{chunk-FB4GLQQO.js.map → chunk-E3E4L7MH.js.map} +0 -0
- /package/dist/{chunk-HWKBCLKD.js.map → chunk-E5OBAS3U.js.map} +0 -0
- /package/dist/{chunk-WWIYYXY3.js.map → chunk-E72INDBL.js.map} +0 -0
- /package/dist/{chunk-UYNJ3FYE.js.map → chunk-EOIRU62W.js.map} +0 -0
- /package/dist/{chunk-G3SWMBZS.js.map → chunk-EWFBDAB7.js.map} +0 -0
- /package/dist/{chunk-NSS3X7FK.js.map → chunk-EYFDIUVR.js.map} +0 -0
- /package/dist/{chunk-UCQRJTCI.js.map → chunk-GANJRIT3.js.map} +0 -0
- /package/dist/{chunk-SMANO5OD.js.map → chunk-GJOU26UW.js.map} +0 -0
- /package/dist/{chunk-H3NXDKFH.js.map → chunk-GM7BG3SD.js.map} +0 -0
- /package/dist/{chunk-SM2O6D5F.js.map → chunk-GYFKIPR2.js.map} +0 -0
- /package/dist/{chunk-4PREA2R5.js.map → chunk-HBH7V3IP.js.map} +0 -0
- /package/dist/{chunk-LUNN5GTB.js.map → chunk-HF2WLLGH.js.map} +0 -0
- /package/dist/{chunk-U67CX4FL.js.map → chunk-HKQQ2NED.js.map} +0 -0
- /package/dist/{chunk-JVOEVTCZ.js.map → chunk-HQCZT6TO.js.map} +0 -0
- /package/dist/{chunk-C7LHIDVB.js.map → chunk-ICKR3QTG.js.map} +0 -0
- /package/dist/{chunk-3B7EJIG7.js.map → chunk-IMYKJTVX.js.map} +0 -0
- /package/dist/{chunk-J7CIRTWQ.js.map → chunk-J34VGMA5.js.map} +0 -0
- /package/dist/{chunk-DWLSYFQW.js.map → chunk-JK3QB7MO.js.map} +0 -0
- /package/dist/{chunk-6B7VZFAO.js.map → chunk-JMDT3GQ3.js.map} +0 -0
- /package/dist/{chunk-E2Y7G4MP.js.map → chunk-JV2JIUDT.js.map} +0 -0
- /package/dist/{chunk-BTDY2NYV.js.map → chunk-JXK53XJW.js.map} +0 -0
- /package/dist/{chunk-K3PMMW23.js.map → chunk-K6VEN5VN.js.map} +0 -0
- /package/dist/{chunk-YOQAK2RN.js.map → chunk-KES3HNSU.js.map} +0 -0
- /package/dist/{chunk-BFBCTF2Y.js.map → chunk-KF3Q3C3P.js.map} +0 -0
- /package/dist/{chunk-MKRJUT5O.js.map → chunk-KSJBFT4G.js.map} +0 -0
- /package/dist/{chunk-AISCD6W6.js.map → chunk-L5KPBMMF.js.map} +0 -0
- /package/dist/{chunk-ZT73ACK3.js.map → chunk-LCGK22QQ.js.map} +0 -0
- /package/dist/{chunk-B2RNNJRO.js.map → chunk-LNIK7FJO.js.map} +0 -0
- /package/dist/{chunk-B25SHVWP.js.map → chunk-LODYTVOO.js.map} +0 -0
- /package/dist/{chunk-763AHWKU.js.map → chunk-LOHQLARB.js.map} +0 -0
- /package/dist/{chunk-7HYLXERK.js.map → chunk-LRIPJ2D5.js.map} +0 -0
- /package/dist/{chunk-F5SUBK42.js.map → chunk-LXIPBHNJ.js.map} +0 -0
- /package/dist/{chunk-CFDYQSN6.js.map → chunk-LZ5PGB7U.js.map} +0 -0
- /package/dist/{chunk-FFQ4NOJT.js.map → chunk-LZOCNAUA.js.map} +0 -0
- /package/dist/{chunk-BLVFHVDM.js.map → chunk-MLGAGZJ3.js.map} +0 -0
- /package/dist/{chunk-QVEJGFRP.js.map → chunk-MNNIOQTQ.js.map} +0 -0
- /package/dist/{chunk-AFSXC5FU.js.map → chunk-MSJP2AEN.js.map} +0 -0
- /package/dist/{chunk-KSOIFQJ6.js.map → chunk-MT74NRLY.js.map} +0 -0
- /package/dist/{chunk-PAKLYZ6G.js.map → chunk-N557OEZR.js.map} +0 -0
- /package/dist/{chunk-DKRMOIX2.js.map → chunk-NASLJO2R.js.map} +0 -0
- /package/dist/{chunk-QVDEGBME.js.map → chunk-NQCTANF3.js.map} +0 -0
- /package/dist/{chunk-AOBQ3KYY.js.map → chunk-NZDIO5UG.js.map} +0 -0
- /package/dist/{chunk-5USHYSCO.js.map → chunk-OKDAHCYE.js.map} +0 -0
- /package/dist/{chunk-ZIHSCBMN.js.map → chunk-OUI5IPS6.js.map} +0 -0
- /package/dist/{chunk-PGBIUO2A.js.map → chunk-PEMXXFXL.js.map} +0 -0
- /package/dist/{chunk-FCCOUOP7.js.map → chunk-PEVBSNCD.js.map} +0 -0
- /package/dist/{chunk-HTGK7QCX.js.map → chunk-Q7QQXNL7.js.map} +0 -0
- /package/dist/{chunk-A7LBWRRW.js.map → chunk-QCYQL3ST.js.map} +0 -0
- /package/dist/{chunk-XDDKRACZ.js.map → chunk-QHFAKEZZ.js.map} +0 -0
- /package/dist/{chunk-6EERXU6R.js.map → chunk-QTLM2YY2.js.map} +0 -0
- /package/dist/{chunk-QKLSHNOH.js.map → chunk-R26WP22N.js.map} +0 -0
- /package/dist/{chunk-7S3NG2AO.js.map → chunk-RB3R6BJL.js.map} +0 -0
- /package/dist/{chunk-SXNGH56D.js.map → chunk-RBW5QQXW.js.map} +0 -0
- /package/dist/{chunk-PJNIJIE6.js.map → chunk-RCTHCXS6.js.map} +0 -0
- /package/dist/{chunk-DT22MDC3.js.map → chunk-RDRXTH47.js.map} +0 -0
- /package/dist/{chunk-JMUZ5JZA.js.map → chunk-RWCQ6TEM.js.map} +0 -0
- /package/dist/{chunk-TIM4PXWN.js.map → chunk-SB2SEGR6.js.map} +0 -0
- /package/dist/{chunk-FRAVVI4A.js.map → chunk-SUTOAW7I.js.map} +0 -0
- /package/dist/{chunk-RQ3IS5NQ.js.map → chunk-SYERREN5.js.map} +0 -0
- /package/dist/{chunk-TAR5LSGT.js.map → chunk-T77OVQEO.js.map} +0 -0
- /package/dist/{chunk-V6DMNSW6.js.map → chunk-TPAMLIN7.js.map} +0 -0
- /package/dist/{chunk-7DODMQRK.js.map → chunk-UBVKMM3V.js.map} +0 -0
- /package/dist/{chunk-5463SZOH.js.map → chunk-UERGWYGY.js.map} +0 -0
- /package/dist/{chunk-G6ET2DRL.js.map → chunk-UJACXYC2.js.map} +0 -0
- /package/dist/{chunk-SYZVXWEQ.js.map → chunk-UQ5GJPVZ.js.map} +0 -0
- /package/dist/{chunk-KW2KCPZF.js.map → chunk-UQ6SAIX7.js.map} +0 -0
- /package/dist/{chunk-GHTVBYFA.js.map → chunk-UWVVKUCG.js.map} +0 -0
- /package/dist/{chunk-EXKK73UN.js.map → chunk-UYKIUUWP.js.map} +0 -0
- /package/dist/{chunk-HWUFOII2.js.map → chunk-VQ6V5TO7.js.map} +0 -0
- /package/dist/{chunk-OT4HIG7S.js.map → chunk-VUBFCHXL.js.map} +0 -0
- /package/dist/{chunk-A4B27HYU.js.map → chunk-WPFVQVQC.js.map} +0 -0
- /package/dist/{chunk-DB7OJM6X.js.map → chunk-WWB43LWU.js.map} +0 -0
- /package/dist/{chunk-HFZE2PGM.js.map → chunk-X4J576GR.js.map} +0 -0
- /package/dist/{chunk-NF5TATKP.js.map → chunk-XATRYJ4Q.js.map} +0 -0
- /package/dist/{chunk-6KCJNERH.js.map → chunk-XCUHGPPZ.js.map} +0 -0
- /package/dist/{chunk-3LQLLL2J.js.map → chunk-XE7QBHXN.js.map} +0 -0
- /package/dist/{chunk-YMKSPW4T.js.map → chunk-XKPV52CG.js.map} +0 -0
- /package/dist/{chunk-I4NDZFTB.js.map → chunk-XXUTD74L.js.map} +0 -0
- /package/dist/{chunk-PF2A2IM7.js.map → chunk-YGLAGY74.js.map} +0 -0
- /package/dist/{chunk-4JV46KXS.js.map → chunk-YHKHHSZH.js.map} +0 -0
- /package/dist/{chunk-6S7CFH6V.js.map → chunk-YJPBNIEM.js.map} +0 -0
- /package/dist/{chunk-DWCH6GH5.js.map → chunk-YQIT3ET7.js.map} +0 -0
- /package/dist/{chunk-G3JFESKD.js.map → chunk-Z5WUSI47.js.map} +0 -0
- /package/dist/{chunk-SCQARHMU.js.map → chunk-ZANWHTXH.js.map} +0 -0
- /package/dist/{chunk-A3Z7ZXLM.js.map → chunk-ZGAOA7LN.js.map} +0 -0
- /package/dist/{chunk-72GJRV5J.js.map → chunk-ZNJGEDCE.js.map} +0 -0
- /package/dist/{chunk-TGZ6GPYQ.js.map → chunk-ZYZPSBNQ.js.map} +0 -0
- /package/dist/native/chunks/{chunk-7AVFQB6A.js.map → chunk-FXA5DLKR.js.map} +0 -0
- /package/dist/native/chunks/{chunk-67CYDCHZ.js.map → chunk-IN3XZ7EK.js.map} +0 -0
|
@@ -20,6 +20,7 @@ serves a supplier form, a store-location form or a delivery checkout.
|
|
|
20
20
|
- Race-safe: a slow response for a since-edited CEP can never overwrite a newer one
|
|
21
21
|
- Degrades to a plain masked input when the lookup fails, throws, or is absent
|
|
22
22
|
- Accessible status via `role="status"` / `aria-live="polite"` and `aria-busy`
|
|
23
|
+
- Takes `Input`'s `size`, and can float its label inside the box like `Input`
|
|
23
24
|
- Works uncontrolled-by-a-form (props) or bound to `total-form` (`Fields.CepField`)
|
|
24
25
|
|
|
25
26
|
## Props Documentation
|
|
@@ -42,6 +43,11 @@ serves a supplier form, a store-location form or a delivery checkout.
|
|
|
42
43
|
- `placeholder`: Placeholder text (default `00000-000`)
|
|
43
44
|
- `name`: Field name / input id (default `postalCode`)
|
|
44
45
|
- `dataTestId`: Test id for the input (default `cep-field-<name>`)
|
|
46
|
+
- `size`: A step of the `Input` size scale (`xs` | `sm` | `md` | `lg` | `xl`, default
|
|
47
|
+
`md`). Same values and same box heights as `Input`, so a `CepField` at `size="sm"`
|
|
48
|
+
stands level with `sm` `Input`s
|
|
49
|
+
- `labelPlacement`: `above` (default) stacks the label over the box; `inside` draws it
|
|
50
|
+
in the box and floats it up on focus or a value, exactly as `Input`'s label does
|
|
45
51
|
|
|
46
52
|
### State Props
|
|
47
53
|
|
|
@@ -83,6 +89,20 @@ const [cep, setCep] = useState('');
|
|
|
83
89
|
/>
|
|
84
90
|
```
|
|
85
91
|
|
|
92
|
+
### Beside compact `Input`s
|
|
93
|
+
|
|
94
|
+
An address form made of `Input`s draws every label inside its box. Opt the CEP in to
|
|
95
|
+
the same treatment, and give it the form's `size`, so the CEP block is no taller than
|
|
96
|
+
its neighbours:
|
|
97
|
+
|
|
98
|
+
```tsx
|
|
99
|
+
<CepField size="sm" labelPlacement="inside" value={cep} onChange={setCep} copy={copy} />
|
|
100
|
+
<Input size="sm" label="Rua" />
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
`labelPlacement` defaults to `above` so a form that never asked keeps the stacked label
|
|
104
|
+
it has always had. `Fields.CepField` takes the same two props.
|
|
105
|
+
|
|
86
106
|
### Bound to `total-form`
|
|
87
107
|
|
|
88
108
|
`Fields.CepField` wires the field to the surrounding `FormContainer` and writes
|
|
@@ -135,4 +155,6 @@ the lookup. The pure helpers (`formatCep`, `isValidCep`) live in
|
|
|
135
155
|
- `aria-busy` reflects the in-flight lookup
|
|
136
156
|
- `aria-describedby` links the input to its status region
|
|
137
157
|
- `inputMode="numeric"` brings up the numeric keypad on mobile
|
|
158
|
+
- With `labelPlacement="inside"` the label is the `Input`'s own, associated to the input
|
|
159
|
+
by `for`/`id`, so `getByLabelText` and screen readers name the field the same way
|
|
138
160
|
- `autoComplete="postal-code"` lets the browser's own autofill participate
|
|
@@ -118,6 +118,29 @@ function CepStatus({
|
|
|
118
118
|
);
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
+
/** The stacked label over the box (`labelPlacement="above"`), or nothing when there is no label. */
|
|
122
|
+
function AboveLabel({
|
|
123
|
+
name,
|
|
124
|
+
label,
|
|
125
|
+
error,
|
|
126
|
+
}: {
|
|
127
|
+
name: string;
|
|
128
|
+
label?: string;
|
|
129
|
+
error?: string;
|
|
130
|
+
}): React.ReactElement | null {
|
|
131
|
+
if (!label) return null;
|
|
132
|
+
return (
|
|
133
|
+
<FormLabel htmlFor={name} error={Boolean(error)}>
|
|
134
|
+
{label}
|
|
135
|
+
</FormLabel>
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/** The label handed to the `Input`, which draws it in the box: only for `inside`. */
|
|
140
|
+
function insideLabel(label: string | undefined, placement: 'above' | 'inside'): string | undefined {
|
|
141
|
+
return placement === 'inside' ? label : undefined;
|
|
142
|
+
}
|
|
143
|
+
|
|
121
144
|
/**
|
|
122
145
|
* A CEP input that fills the rest of the address in.
|
|
123
146
|
*
|
|
@@ -156,6 +179,8 @@ export function CepField({
|
|
|
156
179
|
name = 'postalCode',
|
|
157
180
|
dataTestId,
|
|
158
181
|
copy,
|
|
182
|
+
size, // undefined reaches `Input`, whose own default is `md`
|
|
183
|
+
labelPlacement = 'above',
|
|
159
184
|
}: CepFieldProps): React.ReactElement {
|
|
160
185
|
const testId = dataTestId ?? `cep-field-${name}`;
|
|
161
186
|
|
|
@@ -176,17 +201,18 @@ export function CepField({
|
|
|
176
201
|
|
|
177
202
|
return (
|
|
178
203
|
<FormControl fullWidth>
|
|
179
|
-
{
|
|
180
|
-
<FormLabel htmlFor={name} error={Boolean(error)}>
|
|
181
|
-
{label}
|
|
182
|
-
</FormLabel>
|
|
183
|
-
)}
|
|
204
|
+
{labelPlacement === 'above' && <AboveLabel name={name} label={label} error={error} />}
|
|
184
205
|
<Input
|
|
185
206
|
id={name}
|
|
186
207
|
name={name}
|
|
187
208
|
type="text"
|
|
188
209
|
inputMode="numeric"
|
|
189
210
|
autoComplete="postal-code"
|
|
211
|
+
size={size}
|
|
212
|
+
// `inside`: the label is the Input's own, drawn in the box and floating
|
|
213
|
+
// up on focus or a value — what every other `Input` in the form does.
|
|
214
|
+
// `above` keeps the stacked `FormLabel`, for callers that never opted in.
|
|
215
|
+
label={insideLabel(label, labelPlacement)}
|
|
190
216
|
placeholder={placeholder}
|
|
191
217
|
value={value}
|
|
192
218
|
error={Boolean(error)}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CepFieldCopy } from "../../../copy";
|
|
2
|
+
import type { InputSize } from "../Input/Input.base";
|
|
2
3
|
/**
|
|
3
4
|
* Types for {@link CepField} — the reusable CEP auto-completer.
|
|
4
5
|
*/
|
|
@@ -73,4 +74,19 @@ export interface CepFieldProps {
|
|
|
73
74
|
name?: string;
|
|
74
75
|
/** Test id for the input. Defaults to `cep-field-<name>`. */
|
|
75
76
|
dataTestId?: string;
|
|
77
|
+
/**
|
|
78
|
+
* A step of the house size scale — the same values, and the same box
|
|
79
|
+
* heights, as {@link Input}'s `size`. Defaults to `md`.
|
|
80
|
+
*/
|
|
81
|
+
size?: InputSize;
|
|
82
|
+
/**
|
|
83
|
+
* Where the label is drawn.
|
|
84
|
+
*
|
|
85
|
+
* - `above` (default): a stacked label over the box, as the field has always
|
|
86
|
+
* rendered. Every existing caller keeps it.
|
|
87
|
+
* - `inside`: the label sits in the box and floats up on focus or a value,
|
|
88
|
+
* exactly as `Input`'s label does. Use it beside `Input`s so the CEP block
|
|
89
|
+
* is the same height as its neighbours.
|
|
90
|
+
*/
|
|
91
|
+
labelPlacement?: 'above' | 'inside';
|
|
76
92
|
}
|
|
@@ -51,6 +51,7 @@ import { Checkbox } from '@/components/form/Checkbox';
|
|
|
51
51
|
| error | `boolean` | `false` | Error state flag |
|
|
52
52
|
| helperText | `string` | - | Helper or error text displayed below |
|
|
53
53
|
| loading | `boolean` | `false` | Shows loading spinner and disables checkbox |
|
|
54
|
+
| loadingLabel | `string` | `loading` | React Native only: the busy spinner's accessible name (`UI_LABELS[locale].common.loading`) |
|
|
54
55
|
| ripple | `boolean` | `true` | Enable/disable ripple effect on click |
|
|
55
56
|
| glow | `boolean` | `false` | Enable glow animation |
|
|
56
57
|
| pulse | `boolean` | `false` | Enable pulse animation |
|
|
@@ -34,6 +34,7 @@ The Input component provides a flexible text input field with comprehensive vali
|
|
|
34
34
|
- `error`: Error state flag
|
|
35
35
|
- `helperText`: Helper or error text displayed below input
|
|
36
36
|
- `loading`: Shows loading spinner and disables input
|
|
37
|
+
- `loadingLabel`: React Native only — the busy spinner's accessible name (`string`, default `loading`; `UI_LABELS[locale].common.loading`)
|
|
37
38
|
|
|
38
39
|
### Visual Props
|
|
39
40
|
- `fullWidth`: Makes input take full container width (default: true)
|
|
@@ -79,7 +79,8 @@ function App() {
|
|
|
79
79
|
|------|------|---------|-------------|
|
|
80
80
|
| `value` | `string` | `''` | The current value of the rich text editor content |
|
|
81
81
|
| `onChange` | `(value: string) => void` | - | Callback when the content changes |
|
|
82
|
-
| `placeholder` | `string` | `'Start typing...'` | Placeholder text when empty |
|
|
82
|
+
| `placeholder` | `string` | `'Start typing...'` | Placeholder text when empty; defaults to `labels.placeholder` |
|
|
83
|
+
| `labels` | `Partial<RichTextEditorLabels>` | English pack | The toolbar's tooltips (`bold`, `italic`, `underline`, `strikethrough`, `numberedList`, `bulletedList`, `insertLink`, `insertImage`, `codeBlock`, `quote`), the link and image prompts (`linkPrompt`, `imagePrompt`), the new list item's text (`listItem`), the default `placeholder` and the default `ariaLabel`. Any key left out reads in English (`Bold`, `Enter URL:`, `Start typing...`, `Rich text editor`, …); a pt-BR host passes `UI_LABELS['pt-BR'].richTextEditor` |
|
|
83
84
|
| `disabled` | `boolean` | `false` | Whether the editor is disabled |
|
|
84
85
|
| `readOnly` | `boolean` | `false` | Whether the editor is read-only |
|
|
85
86
|
| `toolbar` | `ToolbarConfig` | Default config | Configuration for toolbar buttons and features |
|
|
@@ -89,7 +90,7 @@ function App() {
|
|
|
89
90
|
| `onBlur` | `() => void` | - | Callback when editor loses focus |
|
|
90
91
|
| `className` | `string` | - | Additional CSS classes |
|
|
91
92
|
| `data-testid` | `string` | - | Test ID for testing purposes |
|
|
92
|
-
| `aria-label` | `string` | `'Rich text editor'` | ARIA label for accessibility |
|
|
93
|
+
| `aria-label` | `string` | `'Rich text editor'` | ARIA label for accessibility; defaults to `labels.ariaLabel` |
|
|
93
94
|
| `aria-describedby` | `string` | - | ARIA described by for accessibility |
|
|
94
95
|
|
|
95
96
|
## ToolbarConfig
|
|
@@ -86,6 +86,7 @@ import { Switch } from '@procurement/ui';
|
|
|
86
86
|
| `onChange` | `(event, checked) => void` | - | Change event handler |
|
|
87
87
|
| `animated` | `boolean` | `true` | Enable/disable animations |
|
|
88
88
|
| `loading` | `boolean` | `false` | Shows loading spinner and disables switch |
|
|
89
|
+
| `loadingLabel` | `string` | `loading` | React Native only: the busy spinner's accessible name (`UI_LABELS[locale].common.loading`) |
|
|
89
90
|
| `ripple` | `boolean` | `false` | Enable ripple effect on interaction |
|
|
90
91
|
| `pulse` | `boolean` | `false` | Enable pulse animation on thumb |
|
|
91
92
|
| `disabled` | `boolean` | `false` | Disables switch interaction |
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import type { CepFieldCopy } from "../../../../copy";
|
|
4
4
|
import React, { useCallback, useMemo, useRef } from 'react';
|
|
5
5
|
|
|
6
|
+
import type { InputSize } from '../../Input/Input.base';
|
|
6
7
|
import { CepField as BaseCepField, type CepAddress } from '../../CepField';
|
|
7
8
|
import { useFormContext } from '../FormContext';
|
|
8
9
|
|
|
@@ -29,6 +30,10 @@ export interface CepFieldProps {
|
|
|
29
30
|
fills?: CepFills;
|
|
30
31
|
/** Milliseconds to wait after the last keystroke before looking up. */
|
|
31
32
|
debounceMs?: number;
|
|
33
|
+
/** The input's size — the same scale, and box heights, as `Input`. Defaults to `md`. */
|
|
34
|
+
size?: InputSize;
|
|
35
|
+
/** `above` (default) stacks the label over the box; `inside` floats it in the box like `Input`. */
|
|
36
|
+
labelPlacement?: 'above' | 'inside';
|
|
32
37
|
}
|
|
33
38
|
|
|
34
39
|
const PARTS: readonly CepPart[] = ['street', 'neighborhood', 'city', 'state'];
|
|
@@ -107,6 +112,8 @@ export function CepField({
|
|
|
107
112
|
fills,
|
|
108
113
|
debounceMs,
|
|
109
114
|
copy,
|
|
115
|
+
size,
|
|
116
|
+
labelPlacement,
|
|
110
117
|
}: CepFieldProps): React.ReactElement {
|
|
111
118
|
const { values, errors, setFieldValue } = useFormContext();
|
|
112
119
|
const { write, clearOwned } = useOwnedAutofill();
|
|
@@ -142,6 +149,8 @@ export function CepField({
|
|
|
142
149
|
onResolved={handleResolved}
|
|
143
150
|
onNotFound={clearOwned}
|
|
144
151
|
debounceMs={debounceMs}
|
|
152
|
+
size={size}
|
|
153
|
+
labelPlacement={labelPlacement}
|
|
145
154
|
dataTestId={`total-form-field-${name}`}
|
|
146
155
|
/>
|
|
147
156
|
);
|
|
@@ -36,6 +36,18 @@ pages and projects.
|
|
|
36
36
|
| `MultiSelectDropdown` | Checkbox multi-select with counts, an optional "Options" section, and a Clear action (e.g. "Content Type"). |
|
|
37
37
|
| `FilterTrigger` | Funnel toggle button with an active-filters indicator dot. |
|
|
38
38
|
|
|
39
|
+
### Label props
|
|
40
|
+
|
|
41
|
+
Optional; each omitted one reads in English. A host passes
|
|
42
|
+
`UI_LABELS[locale].contentToolbar` from `@12-apps/ui/locales`.
|
|
43
|
+
|
|
44
|
+
| Prop | On | Type | Default | Description |
|
|
45
|
+
| --- | --- | --- | --- | --- |
|
|
46
|
+
| `gridViewLabel` | `ViewSelector` | `string` | `"Grid View"` | The grid option's name, in the menu and on the trigger while it is active (`contentToolbar.gridView`) |
|
|
47
|
+
| `listViewLabel` | `ViewSelector` | `string` | `"List View"` | The list option's name (`contentToolbar.listView`) |
|
|
48
|
+
| `openFiltersLabel` | `FilterTrigger` | `string` | `"Open filters"` | The button's accessible name while the panel is closed (`contentToolbar.openFilters`) |
|
|
49
|
+
| `closeFiltersLabel` | `FilterTrigger` | `string` | `"Close filters"` | The button's accessible name while the panel is open (`contentToolbar.closeFilters`) |
|
|
50
|
+
|
|
39
51
|
## Usage
|
|
40
52
|
|
|
41
53
|
```tsx
|
|
@@ -63,6 +63,9 @@ import { Dashboard } from '@12-apps/ui/layout/Dashboard';
|
|
|
63
63
|
| `Dashboard.MoreFilters` | (in filters) | Expandable advanced panel for ranges/dates. |
|
|
64
64
|
| `Dashboard.Body` | body | Main content area (the table/grid). |
|
|
65
65
|
|
|
66
|
+
`Dashboard.Breadcrumb` takes `ariaLabel?: string`, the trail's landmark name
|
|
67
|
+
(default `"breadcrumb"`); a host passes `UI_LABELS[locale].dashboard.breadcrumb`.
|
|
68
|
+
|
|
66
69
|
## State
|
|
67
70
|
|
|
68
71
|
`Dashboard` owns only **UI** state (which regions are open) through
|
|
@@ -26,6 +26,8 @@ A flexible and feature-rich navigation menu component that supports horizontal,
|
|
|
26
26
|
| collapsible | `boolean` | false | Whether the vertical menu can be collapsed |
|
|
27
27
|
| collapsed | `boolean` | undefined | Controlled collapsed state |
|
|
28
28
|
| onCollapseChange | `(collapsed: boolean) => void` | undefined | Callback when collapse state changes |
|
|
29
|
+
| collapseLabel | `string` | 'Collapse' | The collapse control's text (vertical, `collapsible` only); `UI_LABELS[locale].navigationMenu.collapse` |
|
|
30
|
+
| expandLabel | `string` | 'Expand' | The collapse control's accessible name while collapsed to its icon (vertical, `collapsible` only); `UI_LABELS[locale].navigationMenu.expand` |
|
|
29
31
|
| logo | `ReactNode` | undefined | Custom logo/brand element |
|
|
30
32
|
| endContent | `ReactNode` | undefined | Additional content to render at the end |
|
|
31
33
|
| maxWidth | `number \| string` | undefined | Maximum width for mega menu |
|
|
@@ -33,6 +33,16 @@ The Code component is a versatile typography element designed for displaying cod
|
|
|
33
33
|
- **Default**: `false`
|
|
34
34
|
- **Description**: Enables copy-to-clipboard functionality with visual feedback (block/highlight variants only)
|
|
35
35
|
|
|
36
|
+
### copyLabel
|
|
37
|
+
- **Type**: `string`
|
|
38
|
+
- **Default**: `'Copy code'`
|
|
39
|
+
- **Description**: The copy button's tooltip and accessible name (`UI_LABELS[locale].code.copy`)
|
|
40
|
+
|
|
41
|
+
### copiedLabel
|
|
42
|
+
- **Type**: `string`
|
|
43
|
+
- **Default**: `'Copied!'`
|
|
44
|
+
- **Description**: The same button right after a copy (`UI_LABELS[locale].code.copied`)
|
|
45
|
+
|
|
36
46
|
### lineNumbers
|
|
37
47
|
- **Type**: `boolean`
|
|
38
48
|
- **Default**: `false`
|
|
@@ -60,6 +60,7 @@ function MyComponent() {
|
|
|
60
60
|
| `loader` | `ReactNode` | Default spinner | Custom loading indicator |
|
|
61
61
|
| `endMessage` | `ReactNode` | Default message | Message when no more items |
|
|
62
62
|
| `error` | `Error \| null` | - | Error object if load failed |
|
|
63
|
+
| `errorText` | `string` | `"An error occurred while loading more items"` | The error line when `error` carries no message of its own; a pt-BR host passes `UI_LABELS['pt-BR'].infiniteScroll.loadFailed` |
|
|
63
64
|
| `errorComponent` | `ReactNode` | Default error UI | Custom error component |
|
|
64
65
|
| `onError` | `(error: Error) => void` | - | Error callback |
|
|
65
66
|
| `className` | `string` | - | CSS class name |
|
|
@@ -35,6 +35,7 @@ The WorkflowStep component is an advanced workflow visualization component that
|
|
|
35
35
|
| `errorIcon` | `React.ReactNode` | - | Custom icon for error steps |
|
|
36
36
|
| `onStepClick` | `(stepIndex: number) => void` | - | Callback when a step is clicked |
|
|
37
37
|
| `disabled` | `boolean` | `false` | Disable all interactions |
|
|
38
|
+
| `labels` | `Partial<WorkflowStepLabels>` | English pack | The indicators' accessible names, `step(position, title)` (`` `Step ${position}: ${title}` ``), and the progressbar's value text, `progress(position, total)` (`` `Step ${position} of ${total}` ``). Any key left out keeps its English wording; a host passes `UI_LABELS[locale].workflowStep` |
|
|
38
39
|
| `className` | `string` | - | Additional CSS classes |
|
|
39
40
|
| `style` | `React.CSSProperties` | - | Inline styles |
|
|
40
41
|
|
package/src/copy/labels.ts
CHANGED
|
@@ -214,6 +214,24 @@ export interface DateRangePickerLabels {
|
|
|
214
214
|
calendar: string;
|
|
215
215
|
}
|
|
216
216
|
|
|
217
|
+
/**
|
|
218
|
+
* `Calendar`'s month/year caption (`captionLayout="selectors"`): the two
|
|
219
|
+
* selector buttons, the month arrows and the two pick grids. The month and
|
|
220
|
+
* year themselves come from `Intl` in the calendar's `locale`.
|
|
221
|
+
*/
|
|
222
|
+
export interface CalendarLabels {
|
|
223
|
+
/** The month button's accessible name, from the month it shows ("March"). */
|
|
224
|
+
chooseMonth(month: string): string;
|
|
225
|
+
/** The year button's accessible name, from the year it shows. */
|
|
226
|
+
chooseYear(year: number): string;
|
|
227
|
+
previousMonth: string;
|
|
228
|
+
nextMonth: string;
|
|
229
|
+
/** The month grid's accessible name. */
|
|
230
|
+
months: string;
|
|
231
|
+
/** The year grid's accessible name. */
|
|
232
|
+
years: string;
|
|
233
|
+
}
|
|
234
|
+
|
|
217
235
|
/** Every family above, keyed by the component that renders it. */
|
|
218
236
|
export interface UiLabels {
|
|
219
237
|
common: CommonLabels;
|
|
@@ -246,4 +264,5 @@ export interface UiLabels {
|
|
|
246
264
|
infiniteScroll: InfiniteScrollLabels;
|
|
247
265
|
socialLogin: SocialLoginLabels;
|
|
248
266
|
dateRangePicker: DateRangePickerLabels;
|
|
267
|
+
calendar: CalendarLabels;
|
|
249
268
|
}
|
package/src/en-US.labels.ts
CHANGED
|
@@ -144,4 +144,12 @@ export const EN_US_UI_LABELS: UiLabels = {
|
|
|
144
144
|
dateRangePicker: {
|
|
145
145
|
calendar: "Calendar",
|
|
146
146
|
},
|
|
147
|
+
calendar: {
|
|
148
|
+
chooseMonth: (month) => `${month}, choose month`,
|
|
149
|
+
chooseYear: (year) => `${year}, choose year`,
|
|
150
|
+
previousMonth: "Previous month",
|
|
151
|
+
nextMonth: "Next month",
|
|
152
|
+
months: "Months",
|
|
153
|
+
years: "Years",
|
|
154
|
+
},
|
|
147
155
|
};
|
package/src/pt-BR.labels.ts
CHANGED
|
@@ -143,4 +143,12 @@ export const PT_BR_UI_LABELS: UiLabels = {
|
|
|
143
143
|
dateRangePicker: {
|
|
144
144
|
calendar: "Calendário",
|
|
145
145
|
},
|
|
146
|
+
calendar: {
|
|
147
|
+
chooseMonth: (month) => `${month}, escolher mês`,
|
|
148
|
+
chooseYear: (year) => `${year}, escolher ano`,
|
|
149
|
+
previousMonth: "Mês anterior",
|
|
150
|
+
nextMonth: "Próximo mês",
|
|
151
|
+
months: "Meses",
|
|
152
|
+
years: "Anos",
|
|
153
|
+
},
|
|
146
154
|
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/Calendar/Calendar.hooks.ts"],"sourcesContent":["import type React from 'react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { addMonths, generateMonthMatrix, getWeekdayNames, normalizeDate } from './Calendar.dates';\nimport { ACTIVATION_KEYS, navigateFocus } from './Calendar.keyboard';\nimport { isDateDisabledBy, nextRangeStep } from './Calendar.selection';\nimport type { MonthMatrix, ResolvedCalendarProps } from './Calendar.types';\n\nconst startOfMonth = (date: Date): Date => new Date(date.getFullYear(), date.getMonth(), 1);\n\n// Which day the calendar opens on: whatever is already chosen, else today.\nconst initialFocus = (props: ResolvedCalendarProps, today: Date): Date => {\n if (props.selectionMode === 'single' && props.value) return normalizeDate(props.value);\n if (props.selectionMode === 'range' && props.range.start) return normalizeDate(props.range.start);\n return today;\n};\n\nconst useCalendarState = (props: ResolvedCalendarProps, today: Date) => {\n const [focusedDate, setFocusedDate] = useState<Date>(() => initialFocus(props, today));\n const [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n const [currentMonth, setCurrentMonth] = useState<Date>(() => startOfMonth(focusedDate));\n\n return {\n focusedDate,\n setFocusedDate,\n hoveredDate,\n setHoveredDate,\n currentMonth,\n setCurrentMonth,\n };\n};\n\nconst useAutoFocusGrid = (autoFocus: boolean) => {\n const gridRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (autoFocus && gridRef.current) gridRef.current.focus();\n }, [autoFocus]);\n\n return gridRef;\n};\n\nconst useVisibleMonths = ({\n currentMonth,\n monthsToShow,\n firstDayOfWeek,\n}: {\n currentMonth: Date;\n monthsToShow: number;\n firstDayOfWeek: number;\n}): MonthMatrix[] =>\n useMemo(() => {\n const matrices: MonthMatrix[] = [];\n let cursor = currentMonth;\n\n for (let i = 0; i < monthsToShow; i++) {\n matrices.push(generateMonthMatrix(cursor.getMonth(), cursor.getFullYear(), firstDayOfWeek));\n cursor = addMonths(cursor, 1);\n }\n\n return matrices;\n }, [currentMonth, monthsToShow, firstDayOfWeek]);\n\n// A click either sets a single date or advances the range by one step; the range\n// rules themselves live in nextRangeStep.\nconst useDateClick = ({\n props,\n isDisabled,\n setFocusedDate,\n}: {\n props: ResolvedCalendarProps;\n isDisabled: (date: Date) => boolean;\n setFocusedDate: (date: Date) => void;\n}) => {\n const {\n selectionMode,\n range,\n onChange,\n onRangeChange,\n onIntermediateRangeChange,\n allowSameDayRange,\n minRangeLength,\n maxRangeLength,\n } = props;\n\n return useCallback(\n (date: Date) => {\n if (isDisabled(date)) return;\n\n const candidate = normalizeDate(date);\n setFocusedDate(candidate);\n\n if (selectionMode === 'single') {\n onChange?.(candidate);\n return;\n }\n\n const step = nextRangeStep({\n start: range.start,\n end: range.end,\n candidate,\n allowSameDayRange,\n minRangeLength,\n maxRangeLength,\n });\n\n if (step.kind === 'rejected') return;\n\n if (step.kind === 'complete') onRangeChange?.(step.range);\n onIntermediateRangeChange?.(step.range);\n },\n [\n selectionMode,\n range,\n onChange,\n onRangeChange,\n onIntermediateRangeChange,\n isDisabled,\n allowSameDayRange,\n minRangeLength,\n maxRangeLength,\n setFocusedDate,\n ],\n );\n};\n\n// Hovering only means something while a range is half-chosen.\nconst useHoverHandlers = ({\n selectionMode,\n range,\n isDisabled,\n setHoveredDate,\n}: {\n selectionMode: ResolvedCalendarProps['selectionMode'];\n range: ResolvedCalendarProps['range'];\n isDisabled: (date: Date) => boolean;\n setHoveredDate: (date: Date | null) => void;\n}) => {\n const handleDateMouseEnter = useCallback(\n (date: Date) => {\n if (selectionMode === 'range' && range.start && !range.end && !isDisabled(date)) {\n setHoveredDate(normalizeDate(date));\n }\n },\n [selectionMode, range, isDisabled, setHoveredDate],\n );\n\n const handleDateMouseLeave = useCallback(() => setHoveredDate(null), [setHoveredDate]);\n\n return { handleDateMouseEnter, handleDateMouseLeave };\n};\n\nconst useKeyboardHandler = ({\n focusedDate,\n firstDayOfWeek,\n currentMonth,\n handleDateClick,\n setFocusedDate,\n setCurrentMonth,\n setHoveredDate,\n}: {\n focusedDate: Date;\n firstDayOfWeek: number;\n currentMonth: Date;\n handleDateClick: (date: Date) => void;\n setFocusedDate: (date: Date) => void;\n setCurrentMonth: (date: Date) => void;\n setHoveredDate: (date: Date | null) => void;\n}) =>\n useCallback(\n (event: React.KeyboardEvent) => {\n const { key } = event;\n const moved = navigateFocus(key, focusedDate, { firstDayOfWeek, shiftKey: event.shiftKey });\n\n if (moved) {\n event.preventDefault();\n setFocusedDate(normalizeDate(moved));\n\n // Follow focus into a month that is not on screen.\n const month = startOfMonth(moved);\n if (month.getTime() !== currentMonth.getTime()) setCurrentMonth(month);\n return;\n }\n\n if (ACTIVATION_KEYS.includes(key)) {\n event.preventDefault();\n handleDateClick(focusedDate);\n return;\n }\n\n if (key === 'Escape') {\n event.preventDefault();\n setHoveredDate(null);\n }\n },\n [\n focusedDate,\n firstDayOfWeek,\n currentMonth,\n handleDateClick,\n setFocusedDate,\n setCurrentMonth,\n setHoveredDate,\n ],\n );\n\nexport const useCalendar = (props: ResolvedCalendarProps) => {\n const { monthsToShow, firstDayOfWeek, locale, minDate, maxDate, isDateDisabled } = props;\n\n const today = useMemo(() => normalizeDate(new Date()), []);\n const state = useCalendarState(props, today);\n const gridRef = useAutoFocusGrid(props.autoFocus);\n\n const monthMatrices = useVisibleMonths({\n currentMonth: state.currentMonth,\n monthsToShow,\n firstDayOfWeek,\n });\n\n const weekdayNames = useMemo(\n () => getWeekdayNames(locale, firstDayOfWeek),\n [locale, firstDayOfWeek],\n );\n\n const isDisabled = useCallback(\n (date: Date) => isDateDisabledBy({ date, minDate, maxDate, isDateDisabled }),\n [minDate, maxDate, isDateDisabled],\n );\n\n const { setCurrentMonth } = state;\n const goToPreviousMonth = useCallback(\n () => setCurrentMonth((prev) => addMonths(prev, -1)),\n [setCurrentMonth],\n );\n const goToNextMonth = useCallback(\n () => setCurrentMonth((prev) => addMonths(prev, 1)),\n [setCurrentMonth],\n );\n\n const handleDateClick = useDateClick({\n props,\n isDisabled,\n setFocusedDate: state.setFocusedDate,\n });\n\n const { handleDateMouseEnter, handleDateMouseLeave } = useHoverHandlers({\n selectionMode: props.selectionMode,\n range: props.range,\n isDisabled,\n setHoveredDate: state.setHoveredDate,\n });\n\n const handleKeyDown = useKeyboardHandler({\n focusedDate: state.focusedDate,\n firstDayOfWeek,\n currentMonth: state.currentMonth,\n handleDateClick,\n setFocusedDate: state.setFocusedDate,\n setCurrentMonth: state.setCurrentMonth,\n setHoveredDate: state.setHoveredDate,\n });\n\n return {\n gridRef,\n today,\n focusedDate: state.focusedDate,\n hoveredDate: state.hoveredDate,\n monthMatrices,\n weekdayNames,\n isDisabled,\n goToPreviousMonth,\n goToNextMonth,\n handleDateClick,\n handleDateMouseEnter,\n handleDateMouseLeave,\n handleKeyDown,\n };\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/total-form/Fields/CepField.tsx"],"sourcesContent":["'use client';\n\nimport type { CepFieldCopy } from \"../../../../copy\";\nimport React, { useCallback, useMemo, useRef } from 'react';\n\nimport { CepField as BaseCepField, type CepAddress } from '../../CepField';\nimport { useFormContext } from '../FormContext';\n\n/** The resolved address parts a form can receive. */\ntype CepPart = 'street' | 'neighborhood' | 'city' | 'state';\n\n/**\n * Which form field receives each resolved part. Omit a part to leave it alone —\n * a form with no bairro column simply doesn't map `neighborhood`.\n */\nexport type CepFills = Partial<Record<CepPart, string>>;\n\n/** Props for the `total-form` {@link CepField}. */\nexport interface CepFieldProps {\n /** The lookup status wording. REQUIRED — no default copy. */\n copy: CepFieldCopy;\n /** Field name; also the key into the form's values/errors. */\n name: string;\n /** Optional visible label. Defaults to `CEP`. */\n label?: string;\n /** Resolve a complete CEP. Omit for a masked input with no lookup. */\n lookup?: (cep: string) => Promise<CepAddress | null>;\n /** Maps each resolved address part onto a field in THIS form. */\n fills?: CepFills;\n /** Milliseconds to wait after the last keystroke before looking up. */\n debounceMs?: number;\n}\n\nconst PARTS: readonly CepPart[] = ['street', 'neighborhood', 'city', 'state'];\n\n/** Ownership-aware writes into sibling form fields. */\ninterface OwnedAutofill {\n /** Write one field, where `''` means \"no value for this part\". */\n write: (field: string, value: string) => void;\n /** Blank every field this hook still owns. */\n clearOwned: () => void;\n}\n\n/**\n * The honesty rule, in one place: this hook remembers exactly what it wrote,\n * writes only into fields that are empty or still hold its own value, and drops\n * the ownership record when it blanks one. That single invariant is what lets\n * autofill replace itself freely while never touching the user's typing.\n */\nfunction useOwnedAutofill(): OwnedAutofill {\n const { values, setFieldValue } = useFormContext();\n // What we last auto-filled per target field, so a later lookup may replace\n // its own value while a manual edit is preserved.\n const autoFilledRef = useRef<Record<string, string>>({});\n // Read values at call time without making them a dependency of the callback.\n const valuesRef = useRef(values);\n valuesRef.current = values;\n\n const write = useCallback(\n (field: string, value: string) => {\n const current = (valuesRef.current[field] ?? '').trim();\n const ours = autoFilledRef.current[field] === current;\n if (current !== '' && !ours) return;\n setFieldValue(field, value);\n if (value) {\n autoFilledRef.current[field] = value;\n } else {\n delete autoFilledRef.current[field];\n }\n },\n [setFieldValue],\n );\n\n const clearOwned = useCallback(() => {\n // Object.keys snapshots, so `write` may delete entries as we iterate.\n for (const field of Object.keys(autoFilledRef.current)) {\n write(field, '');\n }\n }, [write]);\n\n return useMemo(() => ({ write, clearOwned }), [write, clearOwned]);\n}\n\n/**\n * CEP field bound to {@link useFormContext}: masks and validates the CEP, then\n * writes the resolved logradouro/bairro/cidade/UF straight into the sibling\n * fields named by `fills`.\n *\n * It will not overwrite work the user has done. A target field is only written\n * when it is empty, or when it still holds the exact value THIS component put\n * there — so correcting the CEP re-fills the address, but a hand-edited street\n * survives the next lookup.\n *\n * @example\n * ```tsx\n * <Fields.CepField\n * name=\"postalCode\"\n * lookup={lookupCep}\n * fills={{ street: 'addressLine1', neighborhood: 'neighborhood', city: 'city', state: 'state' }}\n * />\n * ```\n */\nexport function CepField({\n name,\n label,\n lookup,\n fills,\n debounceMs,\n copy,\n}: CepFieldProps): React.ReactElement {\n const { values, errors, setFieldValue } = useFormContext();\n const { write, clearOwned } = useOwnedAutofill();\n\n const handleResolved = useCallback(\n (address: CepAddress) => {\n if (!fills) return;\n // Every mapped part is written on EVERY resolve, absent ones as ''. A\n // \"CEP geral\" (a small município's catch-all) carries no logradouro, so\n // skipping absent parts would leave the previous CEP's street here.\n for (const part of PARTS) {\n const field = fills[part];\n if (field) write(field, address[part] ?? '');\n }\n },\n [fills, write],\n );\n\n const handleChange = useCallback(\n (masked: string) => setFieldValue(name, masked),\n [name, setFieldValue],\n );\n\n return (\n <BaseCepField\n copy={copy}\n name={name}\n label={label}\n value={values[name] ?? ''}\n error={errors[name]}\n onChange={handleChange}\n onLookup={lookup}\n onResolved={handleResolved}\n onNotFound={clearOwned}\n debounceMs={debounceMs}\n dataTestId={`total-form-field-${name}`}\n />\n );\n}\n"],"mappings":";;;;;;;;AAGA,SAAgB,aAAa,SAAS,cAAc;AAkIhD;AApGJ,IAAM,QAA4B,CAAC,UAAU,gBAAgB,QAAQ,OAAO;AAgB5E,SAAS,mBAAkC;AACzC,QAAM,EAAE,QAAQ,cAAc,IAAI,eAAe;AAGjD,QAAM,gBAAgB,OAA+B,CAAC,CAAC;AAEvD,QAAM,YAAY,OAAO,MAAM;AAC/B,YAAU,UAAU;AAEpB,QAAM,QAAQ;AAAA,IACZ,CAAC,OAAe,UAAkB;AAChC,YAAM,WAAW,UAAU,QAAQ,KAAK,KAAK,IAAI,KAAK;AACtD,YAAM,OAAO,cAAc,QAAQ,KAAK,MAAM;AAC9C,UAAI,YAAY,MAAM,CAAC,KAAM;AAC7B,oBAAc,OAAO,KAAK;AAC1B,UAAI,OAAO;AACT,sBAAc,QAAQ,KAAK,IAAI;AAAA,MACjC,OAAO;AACL,eAAO,cAAc,QAAQ,KAAK;AAAA,MACpC;AAAA,IACF;AAAA,IACA,CAAC,aAAa;AAAA,EAChB;AAEA,QAAM,aAAa,YAAY,MAAM;AAEnC,eAAW,SAAS,OAAO,KAAK,cAAc,OAAO,GAAG;AACtD,YAAM,OAAO,EAAE;AAAA,IACjB;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SAAO,QAAQ,OAAO,EAAE,OAAO,WAAW,IAAI,CAAC,OAAO,UAAU,CAAC;AACnE;AAqBO,SAASA,UAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsC;AACpC,QAAM,EAAE,QAAQ,QAAQ,cAAc,IAAI,eAAe;AACzD,QAAM,EAAE,OAAO,WAAW,IAAI,iBAAiB;AAE/C,QAAM,iBAAiB;AAAA,IACrB,CAAC,YAAwB;AACvB,UAAI,CAAC,MAAO;AAIZ,iBAAW,QAAQ,OAAO;AACxB,cAAM,QAAQ,MAAM,IAAI;AACxB,YAAI,MAAO,OAAM,OAAO,QAAQ,IAAI,KAAK,EAAE;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,CAAC,OAAO,KAAK;AAAA,EACf;AAEA,QAAM,eAAe;AAAA,IACnB,CAAC,WAAmB,cAAc,MAAM,MAAM;AAAA,IAC9C,CAAC,MAAM,aAAa;AAAA,EACtB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,OAAO,IAAI,KAAK;AAAA,MACvB,OAAO,OAAO,IAAI;AAAA,MAClB,UAAU;AAAA,MACV,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,MACA,YAAY,oBAAoB,IAAI;AAAA;AAAA,EACtC;AAEJ;","names":["CepField"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/Calendar/Calendar.helpers.ts"],"sourcesContent":["import type { CalendarProps, ResolvedCalendarProps } from './Calendar.types';\n\nconst CALENDAR_DEFAULTS = {\n selectionMode: 'single',\n value: null,\n range: { start: null, end: null },\n firstDayOfWeek: 0,\n locale: 'en-US',\n showOutsideDays: true,\n minRangeLength: 1,\n allowSameDayRange: true,\n autoFocus: false,\n} as const satisfies Partial<CalendarProps>;\n\n// Strips explicitly-undefined props before the merge, so `prop={undefined}` still\n// falls back to the default exactly as a destructuring default would.\nconst definedProps = (props: CalendarProps): Partial<CalendarProps> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<CalendarProps>;\n\n// Applied as a merge rather than destructuring defaults, which would otherwise\n// put nine branches into the component's own complexity budget.\nexport const resolveCalendarProps = (props: CalendarProps): ResolvedCalendarProps => {\n const merged = { ...CALENDAR_DEFAULTS, ...definedProps(props) } as ResolvedCalendarProps;\n\n // A range needs two months side by side to be picked comfortably; a single\n // date does not.\n const defaultMonths = merged.selectionMode === 'range' ? 2 : 1;\n\n return { ...merged, monthsToShow: merged.numberOfMonths ?? defaultMonths };\n};\n"],"mappings":";AAEA,IAAM,oBAAoB;AAAA,EACxB,eAAe;AAAA,EACf,OAAO;AAAA,EACP,OAAO,EAAE,OAAO,MAAM,KAAK,KAAK;AAAA,EAChC,gBAAgB;AAAA,EAChB,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,WAAW;AACb;AAIA,IAAM,eAAe,CAAC,UACpB,OAAO;AAAA,EACL,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS;AACjE;AAIK,IAAM,uBAAuB,CAAC,UAAgD;AACnF,QAAM,SAAS,EAAE,GAAG,mBAAmB,GAAG,aAAa,KAAK,EAAE;AAI9D,QAAM,gBAAgB,OAAO,kBAAkB,UAAU,IAAI;AAE7D,SAAO,EAAE,GAAG,QAAQ,cAAc,OAAO,kBAAkB,cAAc;AAC3E;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/Calendar/Calendar.dates.ts"],"sourcesContent":["import type { MonthMatrix, MonthMatrixDay } from './Calendar.types';\n\nconst DAYS_PER_WEEK = 7;\n// Six rows always cover a month, whichever weekday it starts on.\nconst MAX_CELLS = 42;\nconst NOON = 12;\n\n// Every comparison happens at noon so daylight-saving shifts can never move a\n// date across a day boundary.\nexport const normalizeDate = (date: Date): Date => {\n const normalized = new Date(date);\n normalized.setHours(NOON, 0, 0, 0);\n return normalized;\n};\n\nexport const isSameDay = (date1: Date, date2: Date): boolean =>\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate();\n\nexport const isBetween = (date: Date, start: Date, end: Date): boolean => {\n const normalized = normalizeDate(date);\n return normalized >= normalizeDate(start) && normalized <= normalizeDate(end);\n};\n\nexport const addDays = (date: Date, days: number): Date => {\n const result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n};\n\nexport const addMonths = (date: Date, months: number): Date => {\n const result = new Date(date);\n result.setMonth(result.getMonth() + months);\n return result;\n};\n\nexport const startOfWeek = (date: Date, firstDayOfWeek = 0): Date => {\n const result = new Date(date);\n const day = result.getDay();\n const diff = (day < firstDayOfWeek ? DAYS_PER_WEEK : 0) + day - firstDayOfWeek;\n result.setDate(result.getDate() - diff);\n return result;\n};\n\n// Day 0 of the next month is the last day of this one.\nconst endOfMonth = (date: Date): Date =>\n new Date(date.getFullYear(), date.getMonth() + 1, 0);\n\nconst dayKey = (date: Date): string =>\n `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;\n\nexport const generateMonthMatrix = (\n month: number,\n year: number,\n firstDayOfWeek = 0,\n): MonthMatrix => {\n const firstDay = new Date(year, month, 1);\n const lastDay = endOfMonth(firstDay);\n const currentDate = startOfWeek(firstDay, firstDayOfWeek);\n\n const weeks: MonthMatrixDay[][] = [];\n let currentWeek: MonthMatrixDay[] = [];\n\n for (let i = 0; i < MAX_CELLS; i++) {\n currentWeek.push({\n date: new Date(currentDate),\n inCurrentMonth: currentDate.getMonth() === month,\n key: dayKey(currentDate),\n });\n\n if (currentWeek.length === DAYS_PER_WEEK) {\n weeks.push(currentWeek);\n currentWeek = [];\n }\n\n currentDate.setDate(currentDate.getDate() + 1);\n\n // Stop on a week boundary once the month is behind us, so a month that fits\n // in five rows does not get a trailing sixth.\n if (currentWeek.length === 0 && currentDate > lastDay) break;\n }\n\n return { weeks, month, year };\n};\n\nexport const getWeekdayNames = (locale = 'en-US', firstDayOfWeek = 0): string[] => {\n const baseDate = new Date(2025, 0, 5); // A Sunday\n const weekdays: string[] = [];\n\n for (let i = 0; i < DAYS_PER_WEEK; i++) {\n const date = addDays(baseDate, (i + firstDayOfWeek) % DAYS_PER_WEEK);\n weekdays.push(date.toLocaleDateString(locale, { weekday: 'narrow' }));\n }\n\n return weekdays;\n};\n\nexport const getMonthName = (month: number, year: number, locale = 'en-US'): string =>\n new Date(year, month, 1).toLocaleDateString(locale, { month: 'long', year: 'numeric' });\n"],"mappings":";AAEA,IAAM,gBAAgB;AAEtB,IAAM,YAAY;AAClB,IAAM,OAAO;AAIN,IAAM,gBAAgB,CAAC,SAAqB;AACjD,QAAM,aAAa,IAAI,KAAK,IAAI;AAChC,aAAW,SAAS,MAAM,GAAG,GAAG,CAAC;AACjC,SAAO;AACT;AAEO,IAAM,YAAY,CAAC,OAAa,UACrC,MAAM,YAAY,MAAM,MAAM,YAAY,KAC1C,MAAM,SAAS,MAAM,MAAM,SAAS,KACpC,MAAM,QAAQ,MAAM,MAAM,QAAQ;AAE7B,IAAM,YAAY,CAAC,MAAY,OAAa,QAAuB;AACxE,QAAM,aAAa,cAAc,IAAI;AACrC,SAAO,cAAc,cAAc,KAAK,KAAK,cAAc,cAAc,GAAG;AAC9E;AAEO,IAAM,UAAU,CAAC,MAAY,SAAuB;AACzD,QAAM,SAAS,IAAI,KAAK,IAAI;AAC5B,SAAO,QAAQ,OAAO,QAAQ,IAAI,IAAI;AACtC,SAAO;AACT;AAEO,IAAM,YAAY,CAAC,MAAY,WAAyB;AAC7D,QAAM,SAAS,IAAI,KAAK,IAAI;AAC5B,SAAO,SAAS,OAAO,SAAS,IAAI,MAAM;AAC1C,SAAO;AACT;AAEO,IAAM,cAAc,CAAC,MAAY,iBAAiB,MAAY;AACnE,QAAM,SAAS,IAAI,KAAK,IAAI;AAC5B,QAAM,MAAM,OAAO,OAAO;AAC1B,QAAM,QAAQ,MAAM,iBAAiB,gBAAgB,KAAK,MAAM;AAChE,SAAO,QAAQ,OAAO,QAAQ,IAAI,IAAI;AACtC,SAAO;AACT;AAGA,IAAM,aAAa,CAAC,SAClB,IAAI,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC;AAErD,IAAM,SAAS,CAAC,SACd,GAAG,KAAK,YAAY,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC;AAErD,IAAM,sBAAsB,CACjC,OACA,MACA,iBAAiB,MACD;AAChB,QAAM,WAAW,IAAI,KAAK,MAAM,OAAO,CAAC;AACxC,QAAM,UAAU,WAAW,QAAQ;AACnC,QAAM,cAAc,YAAY,UAAU,cAAc;AAExD,QAAM,QAA4B,CAAC;AACnC,MAAI,cAAgC,CAAC;AAErC,WAAS,IAAI,GAAG,IAAI,WAAW,KAAK;AAClC,gBAAY,KAAK;AAAA,MACf,MAAM,IAAI,KAAK,WAAW;AAAA,MAC1B,gBAAgB,YAAY,SAAS,MAAM;AAAA,MAC3C,KAAK,OAAO,WAAW;AAAA,IACzB,CAAC;AAED,QAAI,YAAY,WAAW,eAAe;AACxC,YAAM,KAAK,WAAW;AACtB,oBAAc,CAAC;AAAA,IACjB;AAEA,gBAAY,QAAQ,YAAY,QAAQ,IAAI,CAAC;AAI7C,QAAI,YAAY,WAAW,KAAK,cAAc,QAAS;AAAA,EACzD;AAEA,SAAO,EAAE,OAAO,OAAO,KAAK;AAC9B;AAEO,IAAM,kBAAkB,CAAC,SAAS,SAAS,iBAAiB,MAAgB;AACjF,QAAM,WAAW,IAAI,KAAK,MAAM,GAAG,CAAC;AACpC,QAAM,WAAqB,CAAC;AAE5B,WAAS,IAAI,GAAG,IAAI,eAAe,KAAK;AACtC,UAAM,OAAO,QAAQ,WAAW,IAAI,kBAAkB,aAAa;AACnE,aAAS,KAAK,KAAK,mBAAmB,QAAQ,EAAE,SAAS,SAAS,CAAC,CAAC;AAAA,EACtE;AAEA,SAAO;AACT;AAEO,IAAM,eAAe,CAAC,OAAe,MAAc,SAAS,YACjE,IAAI,KAAK,MAAM,OAAO,CAAC,EAAE,mBAAmB,QAAQ,EAAE,OAAO,QAAQ,MAAM,UAAU,CAAC;","names":[]}
|
package/dist/chunk-TGMMUKOF.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
useCalendar
|
|
3
|
-
} from "./chunk-ISW5K72V.js";
|
|
4
|
-
import {
|
|
5
|
-
resolveCalendarProps
|
|
6
|
-
} from "./chunk-SUALMVL7.js";
|
|
7
|
-
import {
|
|
8
|
-
CalendarMonth
|
|
9
|
-
} from "./chunk-UHQZ5XPW.js";
|
|
10
|
-
import {
|
|
11
|
-
rem,
|
|
12
|
-
sxRem
|
|
13
|
-
} from "./chunk-YKCAJ2TN.js";
|
|
14
|
-
|
|
15
|
-
// src/components/form/Calendar/Calendar.tsx
|
|
16
|
-
import Box from "@mui/material/Box/index.js";
|
|
17
|
-
import Paper from "@mui/material/Paper/index.js";
|
|
18
|
-
import React from "react";
|
|
19
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
20
|
-
var containerSx = (monthsToShow) => ({
|
|
21
|
-
p: 3,
|
|
22
|
-
display: "flex",
|
|
23
|
-
flexDirection: monthsToShow > 1 ? "row" : "column",
|
|
24
|
-
gap: 3,
|
|
25
|
-
outline: "none",
|
|
26
|
-
"&:focus-within": {
|
|
27
|
-
outline: (theme) => `${rem(theme, 2)} solid`,
|
|
28
|
-
outlineColor: "primary.main",
|
|
29
|
-
outlineOffset: sxRem(2)
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
var Calendar = React.forwardRef((componentProps, ref) => {
|
|
33
|
-
const props = resolveCalendarProps(componentProps);
|
|
34
|
-
const { monthsToShow, locale, renderHeader, renderFooter, className, ariaLabel } = props;
|
|
35
|
-
const calendar = useCalendar(props);
|
|
36
|
-
const dayContext = {
|
|
37
|
-
selectionMode: props.selectionMode,
|
|
38
|
-
value: props.value,
|
|
39
|
-
range: props.range,
|
|
40
|
-
showOutsideDays: props.showOutsideDays,
|
|
41
|
-
renderDay: props.renderDay,
|
|
42
|
-
dayClassName: props.dayClassName,
|
|
43
|
-
hoveredDate: calendar.hoveredDate,
|
|
44
|
-
focusedDate: calendar.focusedDate,
|
|
45
|
-
today: calendar.today,
|
|
46
|
-
isDisabled: calendar.isDisabled,
|
|
47
|
-
onSelect: calendar.handleDateClick,
|
|
48
|
-
onHover: calendar.handleDateMouseEnter,
|
|
49
|
-
onHoverEnd: calendar.handleDateMouseLeave
|
|
50
|
-
};
|
|
51
|
-
return /* @__PURE__ */ jsxs(
|
|
52
|
-
Paper,
|
|
53
|
-
{
|
|
54
|
-
ref,
|
|
55
|
-
className,
|
|
56
|
-
role: "application",
|
|
57
|
-
"aria-label": ariaLabel,
|
|
58
|
-
tabIndex: 0,
|
|
59
|
-
onKeyDown: calendar.handleKeyDown,
|
|
60
|
-
"data-testid": "calendar-container",
|
|
61
|
-
sx: containerSx(monthsToShow),
|
|
62
|
-
children: [
|
|
63
|
-
/* @__PURE__ */ jsx(Box, { ref: calendar.gridRef, sx: { display: "flex", gap: 3, flexWrap: "wrap" }, children: calendar.monthMatrices.map((matrix, index) => /* @__PURE__ */ jsx(
|
|
64
|
-
CalendarMonth,
|
|
65
|
-
{
|
|
66
|
-
matrix,
|
|
67
|
-
monthIndex: index,
|
|
68
|
-
monthsToShow,
|
|
69
|
-
locale,
|
|
70
|
-
weekdayNames: calendar.weekdayNames,
|
|
71
|
-
renderHeader,
|
|
72
|
-
onPreviousMonth: calendar.goToPreviousMonth,
|
|
73
|
-
onNextMonth: calendar.goToNextMonth,
|
|
74
|
-
dayContext
|
|
75
|
-
},
|
|
76
|
-
`month-${matrix.year}-${matrix.month}`
|
|
77
|
-
)) }),
|
|
78
|
-
renderFooter && /* @__PURE__ */ jsx(Box, { sx: { mt: 2, pt: 2, borderTop: 1, borderColor: "divider" }, children: renderFooter })
|
|
79
|
-
]
|
|
80
|
-
}
|
|
81
|
-
);
|
|
82
|
-
});
|
|
83
|
-
Calendar.displayName = "Calendar";
|
|
84
|
-
var Calendar_default = Calendar;
|
|
85
|
-
|
|
86
|
-
export {
|
|
87
|
-
Calendar,
|
|
88
|
-
Calendar_default
|
|
89
|
-
};
|
|
90
|
-
//# sourceMappingURL=chunk-TGMMUKOF.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/Calendar/Calendar.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles/index.js';\nimport Box from '@mui/material/Box/index.js';\nimport Paper from '@mui/material/Paper/index.js';\nimport React from 'react';\n\nimport { rem, sxRem } from '../../../tokens/relative';\n\nimport { resolveCalendarProps } from './Calendar.helpers';\nimport { useCalendar } from './Calendar.hooks';\nimport type { CalendarProps } from './Calendar.types';\nimport type { DayCellContext } from './CalendarDayCell';\nimport { CalendarMonth } from './CalendarMonth';\n\nconst containerSx = (monthsToShow: number): SxProps<Theme> => ({\n p: 3,\n display: 'flex',\n flexDirection: monthsToShow > 1 ? 'row' : 'column',\n gap: 3,\n outline: 'none',\n '&:focus-within': {\n outline: (theme: Theme) => `${rem(theme, 2)} solid`,\n outlineColor: 'primary.main',\n outlineOffset: sxRem(2),\n },\n});\n\nexport const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>((componentProps, ref) => {\n const props = resolveCalendarProps(componentProps);\n const { monthsToShow, locale, renderHeader, renderFooter, className, ariaLabel } = props;\n\n const calendar = useCalendar(props);\n\n const dayContext: DayCellContext = {\n selectionMode: props.selectionMode,\n value: props.value,\n range: props.range,\n showOutsideDays: props.showOutsideDays,\n renderDay: props.renderDay,\n dayClassName: props.dayClassName,\n hoveredDate: calendar.hoveredDate,\n focusedDate: calendar.focusedDate,\n today: calendar.today,\n isDisabled: calendar.isDisabled,\n onSelect: calendar.handleDateClick,\n onHover: calendar.handleDateMouseEnter,\n onHoverEnd: calendar.handleDateMouseLeave,\n };\n\n return (\n <Paper\n ref={ref}\n className={className}\n role=\"application\"\n aria-label={ariaLabel}\n tabIndex={0}\n onKeyDown={calendar.handleKeyDown}\n data-testid=\"calendar-container\"\n sx={containerSx(monthsToShow)}\n >\n <Box ref={calendar.gridRef} sx={{ display: 'flex', gap: 3, flexWrap: 'wrap' }}>\n {calendar.monthMatrices.map((matrix, index) => (\n <CalendarMonth\n key={`month-${matrix.year}-${matrix.month}`}\n matrix={matrix}\n monthIndex={index}\n monthsToShow={monthsToShow}\n locale={locale}\n weekdayNames={calendar.weekdayNames}\n renderHeader={renderHeader}\n onPreviousMonth={calendar.goToPreviousMonth}\n onNextMonth={calendar.goToNextMonth}\n dayContext={dayContext}\n />\n ))}\n </Box>\n\n {renderFooter && (\n <Box sx={{ mt: 2, pt: 2, borderTop: 1, borderColor: 'divider' }}>{renderFooter}</Box>\n )}\n </Paper>\n );\n});\n\nCalendar.displayName = 'Calendar';\n\nexport default Calendar;\n"],"mappings":";;;;;;;;;;;;;;;AACA,OAAO,SAAS;AAChB,OAAO,WAAW;AAClB,OAAO,WAAW;AA8Cd,SAYM,KAZN;AApCJ,IAAM,cAAc,CAAC,kBAA0C;AAAA,EAC7D,GAAG;AAAA,EACH,SAAS;AAAA,EACT,eAAe,eAAe,IAAI,QAAQ;AAAA,EAC1C,KAAK;AAAA,EACL,SAAS;AAAA,EACT,kBAAkB;AAAA,IAChB,SAAS,CAAC,UAAiB,GAAG,IAAI,OAAO,CAAC,CAAC;AAAA,IAC3C,cAAc;AAAA,IACd,eAAe,MAAM,CAAC;AAAA,EACxB;AACF;AAEO,IAAM,WAAW,MAAM,WAA0C,CAAC,gBAAgB,QAAQ;AAC/F,QAAM,QAAQ,qBAAqB,cAAc;AACjD,QAAM,EAAE,cAAc,QAAQ,cAAc,cAAc,WAAW,UAAU,IAAI;AAEnF,QAAM,WAAW,YAAY,KAAK;AAElC,QAAM,aAA6B;AAAA,IACjC,eAAe,MAAM;AAAA,IACrB,OAAO,MAAM;AAAA,IACb,OAAO,MAAM;AAAA,IACb,iBAAiB,MAAM;AAAA,IACvB,WAAW,MAAM;AAAA,IACjB,cAAc,MAAM;AAAA,IACpB,aAAa,SAAS;AAAA,IACtB,aAAa,SAAS;AAAA,IACtB,OAAO,SAAS;AAAA,IAChB,YAAY,SAAS;AAAA,IACrB,UAAU,SAAS;AAAA,IACnB,SAAS,SAAS;AAAA,IAClB,YAAY,SAAS;AAAA,EACvB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,MAAK;AAAA,MACL,cAAY;AAAA,MACZ,UAAU;AAAA,MACV,WAAW,SAAS;AAAA,MACpB,eAAY;AAAA,MACZ,IAAI,YAAY,YAAY;AAAA,MAE5B;AAAA,4BAAC,OAAI,KAAK,SAAS,SAAS,IAAI,EAAE,SAAS,QAAQ,KAAK,GAAG,UAAU,OAAO,GACzE,mBAAS,cAAc,IAAI,CAAC,QAAQ,UACnC;AAAA,UAAC;AAAA;AAAA,YAEC;AAAA,YACA,YAAY;AAAA,YACZ;AAAA,YACA;AAAA,YACA,cAAc,SAAS;AAAA,YACvB;AAAA,YACA,iBAAiB,SAAS;AAAA,YAC1B,aAAa,SAAS;AAAA,YACtB;AAAA;AAAA,UATK,SAAS,OAAO,IAAI,IAAI,OAAO,KAAK;AAAA,QAU3C,CACD,GACH;AAAA,QAEC,gBACC,oBAAC,OAAI,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,WAAW,GAAG,aAAa,UAAU,GAAI,wBAAa;AAAA;AAAA;AAAA,EAEnF;AAEJ,CAAC;AAED,SAAS,cAAc;AAEvB,IAAO,mBAAQ;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/CepField/CepField.tsx"],"sourcesContent":["'use client';\n\nimport type { CepFieldCopy } from \"../../../copy\";\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { cepDigits, formatCep, isValidCep } from '@12-apps/forms-core';\n\nimport { FormControl, FormLabel, FormMessage } from '../Form';\n// The outlined entry: CepField renders no variant, and the generic one would\n// ship MUI's FilledInput and Input to every screen with a CEP field (FUT-1054).\nimport { Input } from '../Input/outlined';\nimport type { CepAddress, CepFieldProps, CepLookupStatus } from './CepField.types';\n\n/** Everything {@link useCepLookup} needs, so the hook signature stays flat. */\ninterface LookupOptions {\n digits: string;\n complete: boolean;\n disabled: boolean;\n debounceMs: number;\n onLookup?: (cep: string) => Promise<CepAddress | null>;\n onResolved?: (address: CepAddress) => void;\n onNotFound?: () => void;\n}\n\n/**\n * Debounced, race-safe CEP resolution.\n *\n * Two guards earn their keep here: a monotonic sequence id, bumped\n * synchronously on every new query, so a slow response for a since-edited CEP\n * can never land; and a \"last queried\" marker, so re-rendering (or the caller\n * re-masking the same value) never re-hits the provider.\n */\nfunction useCepLookup({\n digits,\n complete,\n disabled,\n debounceMs,\n onLookup,\n onResolved,\n onNotFound,\n}: LookupOptions): CepLookupStatus {\n const [status, setStatus] = useState<CepLookupStatus>('idle');\n const lastQueriedRef = useRef('');\n const seqRef = useRef(0);\n // Latest callbacks, read at call time — keeps them out of the effect deps so\n // an inline arrow from the caller doesn't re-trigger the lookup every render.\n const lookupRef = useRef(onLookup);\n const resolvedRef = useRef(onResolved);\n const notFoundRef = useRef(onNotFound);\n lookupRef.current = onLookup;\n resolvedRef.current = onResolved;\n notFoundRef.current = onNotFound;\n\n useEffect(() => {\n if (!complete || disabled || !lookupRef.current) {\n // Editing away from a complete CEP drops any stale status and forgets the\n // last query, so re-typing the same CEP resolves again.\n seqRef.current += 1;\n setStatus('idle');\n lastQueriedRef.current = '';\n return;\n }\n if (lastQueriedRef.current === digits) return;\n\n const mySeq = (seqRef.current += 1);\n const handle = setTimeout(() => {\n lastQueriedRef.current = digits;\n setStatus('loading');\n void (async () => {\n // A failing lookup is treated exactly like \"not found\" — the user types\n // the address instead. Never surfaced as a crash. Going through\n // `Promise.resolve().then` rather than calling directly covers the two\n // failure modes an `await … .catch()` misses: a lookup that throws\n // SYNCHRONOUSLY, and one that returns something other than a promise.\n const address = await Promise.resolve()\n .then(() => lookupRef.current?.(digits))\n .catch(() => null);\n if (seqRef.current !== mySeq) return;\n setStatus(address ? 'found' : 'notfound');\n // A miss is reported too, so a caller that filled from a PREVIOUS CEP\n // can undo it rather than leaving that address under this CEP.\n if (address) resolvedRef.current?.(address);\n else notFoundRef.current?.();\n })();\n }, debounceMs);\n\n return () => clearTimeout(handle);\n }, [digits, complete, disabled, debounceMs]);\n\n return status;\n}\n\n/**\n * The lookup outcome as a live region, so screen readers announce it without\n * stealing focus. Silent while idle, and while the caller is showing its own\n * validation error (which would otherwise stack two messages).\n */\nfunction CepStatus({\n status,\n testId,\n suppressed,\n copy,\n}: {\n status: CepLookupStatus;\n testId: string;\n suppressed: boolean;\n copy: CepFieldCopy;\n}): React.ReactElement {\n const visible = !suppressed && status !== 'idle';\n return (\n <span id={`${testId}-status`} role=\"status\" aria-live=\"polite\">\n {visible && (\n <FormMessage error={status === 'notfound'} dataTestId={`${testId}-${status}`}>\n {copy[status as Exclude<CepLookupStatus, 'idle'>]}\n </FormMessage>\n )}\n </span>\n );\n}\n\n/**\n * A CEP input that fills the rest of the address in.\n *\n * The pattern every Brazilian form has used for twenty years: type eight\n * digits, and logradouro/bairro/cidade/UF arrive on their own. This is the\n * reusable half — masking, validation, debouncing, race-safety and status —\n * with the actual lookup injected via `onLookup`, so the same component serves\n * a supplier form, a store-location form or a delivery checkout without\n * knowing anything about providers or auth.\n *\n * Resolution is best-effort by design. A provider outage, an unknown CEP or a\n * timeout leaves the field exactly as usable as a plain text input — the user\n * types the address themselves. Autofill never blocks.\n *\n * @example\n * ```tsx\n * <CepField\n * value={cep}\n * onChange={setCep}\n * onLookup={(c) => fetch(`/api/…/lookup/cep/${c}`).then((r) => r.json()).then((b) => b.data)}\n * onResolved={(a) => { setStreet(a.street ?? ''); setCity(a.city ?? ''); }}\n * />\n * ```\n */\nexport function CepField({\n value,\n onChange,\n onLookup,\n onResolved,\n onNotFound,\n label = 'CEP',\n placeholder = '00000-000',\n error,\n disabled = false,\n debounceMs = 500,\n name = 'postalCode',\n dataTestId,\n copy,\n}: CepFieldProps): React.ReactElement {\n const testId = dataTestId ?? `cep-field-${name}`;\n\n const status = useCepLookup({\n digits: cepDigits(value),\n complete: isValidCep(value),\n disabled,\n debounceMs,\n onLookup,\n onResolved,\n onNotFound,\n });\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => onChange(formatCep(event.target.value)),\n [onChange],\n );\n\n return (\n <FormControl fullWidth>\n {label && (\n <FormLabel htmlFor={name} error={Boolean(error)}>\n {label}\n </FormLabel>\n )}\n <Input\n id={name}\n name={name}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"postal-code\"\n placeholder={placeholder}\n value={value}\n error={Boolean(error)}\n disabled={disabled}\n loading={status === 'loading'}\n onChange={handleChange}\n data-testid={testId}\n aria-describedby={`${testId}-status`}\n aria-busy={status === 'loading'}\n />\n {error && (\n <FormMessage error dataTestId={`${testId}-message`}>\n {error}\n </FormMessage>\n )}\n <CepStatus status={status} testId={testId} suppressed={Boolean(error)} copy={copy} />\n </FormControl>\n );\n}\n\nexport default CepField;\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/Calendar/CalendarMonth.tsx"],"sourcesContent":["import ChevronLeft from '@mui/icons-material/ChevronLeft';\nimport ChevronRight from '@mui/icons-material/ChevronRight';\nimport Box from '@mui/material/Box/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport type { FC } from 'react';\nimport React from 'react';\n\nimport { sxRem } from '../../../tokens/relative';\n\nimport { getMonthName } from './Calendar.dates';\nimport type { CalendarProps, MonthMatrix } from './Calendar.types';\nimport type { DayCellContext } from './CalendarDayCell';\nimport { CalendarDayCell } from './CalendarDayCell';\n\n/** The nav spacer's width and the weekday row's height, 32 design px through the type scale. */\nconst SPACER_WIDTH = sxRem(32);\n\n// `minmax(0, 1fr)`, not `1fr`: a bare `1fr` keeps each column at least its\n// content's width, which is what held the grid at 304px (FUT-3861).\nconst GRID_SX = { display: 'grid', gridTemplateColumns: 'repeat(7, minmax(0, 1fr))', gap: 0.5 } as const;\n\n/**\n * A month takes the room it is given, from nothing up to seven full cells and\n * their gaps (7 × 40 + 6 × 4 design px). Months side by side keep a 280 basis,\n * so a multi-month calendar still wraps rather than squeezing every month.\n */\nconst MONTH_SX = { flex: `1 1 ${sxRem(280)}`, minWidth: 0, maxWidth: sxRem(304) } as const;\n\n// Only the outermost months carry arrows; the ones between get a spacer so their\n// titles stay centred.\nconst MonthNavHeader: FC<{\n title: React.ReactNode;\n showPrevious: boolean;\n showNext: boolean;\n onPreviousMonth: () => void;\n onNextMonth: () => void;\n}> = ({ title, showPrevious, showNext, onPreviousMonth, onNextMonth }) => (\n <Box\n sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 2 }}\n data-testid=\"calendar-header\"\n >\n {showPrevious && (\n <IconButton onClick={onPreviousMonth} size=\"small\" data-testid=\"calendar-prev-month\">\n <ChevronLeft />\n </IconButton>\n )}\n\n <Typography\n variant=\"h6\"\n component=\"h2\"\n sx={{ fontWeight: 'bold', flex: 1, textAlign: 'center' }}\n >\n {title}\n </Typography>\n\n {showNext && (\n <IconButton onClick={onNextMonth} size=\"small\" data-testid=\"calendar-next-month\">\n <ChevronRight />\n </IconButton>\n )}\n\n {!showPrevious && !showNext && <Box sx={{ width: SPACER_WIDTH }} />}\n </Box>\n);\n\nconst WeekdayHeader: FC<{ weekdayNames: string[] }> = ({ weekdayNames }) => (\n <Box sx={{ ...GRID_SX, mb: 1 }}>\n {weekdayNames.map((weekday, index) => (\n <Box\n // Narrow weekday names repeat within a week ('S', 'T'), so position is\n // the only stable key here.\n key={`weekday-${index}`}\n role=\"columnheader\"\n data-testid={`calendar-weekday-${index}`}\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: SPACER_WIDTH,\n fontSize: sxRem(14),\n fontWeight: 'bold',\n color: 'text.secondary',\n }}\n >\n {weekday}\n </Box>\n ))}\n </Box>\n);\n\nexport interface CalendarMonthProps {\n matrix: MonthMatrix;\n monthIndex: number;\n monthsToShow: number;\n locale: string;\n weekdayNames: string[];\n renderHeader?: CalendarProps['renderHeader'];\n onPreviousMonth: () => void;\n onNextMonth: () => void;\n dayContext: DayCellContext;\n}\n\nexport const CalendarMonth: FC<CalendarMonthProps> = ({\n matrix,\n monthIndex,\n monthsToShow,\n locale,\n weekdayNames,\n renderHeader,\n onPreviousMonth,\n onNextMonth,\n dayContext,\n}) => {\n const monthName = getMonthName(matrix.month, matrix.year, locale);\n const title = renderHeader ? renderHeader({ month: matrix.month, year: matrix.year }) : monthName;\n\n return (\n /* The month is addressable by its position, because in a multi-month\n calendar every day number appears once PER MONTH — `calendar-date-5` is\n January's 5th and February's. Without a per-month hook a test can only\n reach a day positionally, which is exactly what the flakiness gate\n refuses. Additive: `calendar-grid` below is unchanged. */\n <Box sx={MONTH_SX} data-testid={`calendar-month-${monthIndex}`}>\n <MonthNavHeader\n title={title}\n showPrevious={monthIndex === 0}\n showNext={monthIndex === monthsToShow - 1}\n onPreviousMonth={onPreviousMonth}\n onNextMonth={onNextMonth}\n />\n\n <WeekdayHeader weekdayNames={weekdayNames} />\n\n <Box\n role=\"grid\"\n aria-labelledby={`month-${monthIndex}`}\n data-testid=\"calendar-grid\"\n sx={GRID_SX}\n >\n {matrix.weeks.flat().map((day) => (\n <CalendarDayCell key={day.key} day={day} {...dayContext} />\n ))}\n </Box>\n </Box>\n );\n};\n"],"mappings":";;;;;;;;;;;AAAA,OAAO,iBAAiB;AACxB,OAAO,kBAAkB;AACzB,OAAO,SAAS;AAChB,OAAO,gBAAgB;AACvB,OAAO,gBAAgB;AAkCrB,SAMM,KANN;AAtBF,IAAM,eAAe,MAAM,EAAE;AAI7B,IAAM,UAAU,EAAE,SAAS,QAAQ,qBAAqB,6BAA6B,KAAK,IAAI;AAO9F,IAAM,WAAW,EAAE,MAAM,OAAO,MAAM,GAAG,CAAC,IAAI,UAAU,GAAG,UAAU,MAAM,GAAG,EAAE;AAIhF,IAAM,iBAMD,CAAC,EAAE,OAAO,cAAc,UAAU,iBAAiB,YAAY,MAClE;AAAA,EAAC;AAAA;AAAA,IACC,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,gBAAgB,iBAAiB,IAAI,EAAE;AAAA,IACpF,eAAY;AAAA,IAEX;AAAA,sBACC,oBAAC,cAAW,SAAS,iBAAiB,MAAK,SAAQ,eAAY,uBAC7D,8BAAC,eAAY,GACf;AAAA,MAGF;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,WAAU;AAAA,UACV,IAAI,EAAE,YAAY,QAAQ,MAAM,GAAG,WAAW,SAAS;AAAA,UAEtD;AAAA;AAAA,MACH;AAAA,MAEC,YACC,oBAAC,cAAW,SAAS,aAAa,MAAK,SAAQ,eAAY,uBACzD,8BAAC,gBAAa,GAChB;AAAA,MAGD,CAAC,gBAAgB,CAAC,YAAY,oBAAC,OAAI,IAAI,EAAE,OAAO,aAAa,GAAG;AAAA;AAAA;AACnE;AAGF,IAAM,gBAAgD,CAAC,EAAE,aAAa,MACpE,oBAAC,OAAI,IAAI,EAAE,GAAG,SAAS,IAAI,EAAE,GAC1B,uBAAa,IAAI,CAAC,SAAS,UAC1B;AAAA,EAAC;AAAA;AAAA,IAIC,MAAK;AAAA,IACL,eAAa,oBAAoB,KAAK;AAAA,IACtC,IAAI;AAAA,MACF,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,UAAU,MAAM,EAAE;AAAA,MAClB,YAAY;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,IAEC;AAAA;AAAA,EAbI,WAAW,KAAK;AAcvB,CACD,GACH;AAeK,IAAM,gBAAwC,CAAC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,YAAY,aAAa,OAAO,OAAO,OAAO,MAAM,MAAM;AAChE,QAAM,QAAQ,eAAe,aAAa,EAAE,OAAO,OAAO,OAAO,MAAM,OAAO,KAAK,CAAC,IAAI;AAExF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAME,qBAAC,OAAI,IAAI,UAAU,eAAa,kBAAkB,UAAU,IAC1D;AAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,cAAc,eAAe;AAAA,UAC7B,UAAU,eAAe,eAAe;AAAA,UACxC;AAAA,UACA;AAAA;AAAA,MACF;AAAA,MAEA,oBAAC,iBAAc,cAA4B;AAAA,MAE3C;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,mBAAiB,SAAS,UAAU;AAAA,UACpC,eAAY;AAAA,UACZ,IAAI;AAAA,UAEH,iBAAO,MAAM,KAAK,EAAE,IAAI,CAAC,QACxB,oBAAC,mBAA8B,KAAW,GAAG,cAAvB,IAAI,GAA+B,CAC1D;AAAA;AAAA,MACH;AAAA,OACF;AAAA;AAEJ;","names":[]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|