@12-apps/ui 6.21.0 → 6.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NATIVE.md +6 -4
- package/dist/_internal/components/data-display/Alert/Alert.js +4 -4
- package/dist/_internal/components/data-display/Alert/Alert.styles.js +2 -2
- package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +7 -7
- package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
- package/dist/_internal/components/data-display/Badge/Badge.js +3 -3
- package/dist/_internal/components/data-display/CardKit/CardKebab.js +4 -4
- package/dist/_internal/components/data-display/CardKit/card-actions-context.js +5 -5
- package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +10 -10
- package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +5 -5
- package/dist/_internal/components/data-display/Carousel/Carousel.js +2 -2
- package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
- package/dist/_internal/components/data-display/Chart/SpecChart.js +6 -6
- package/dist/_internal/components/data-display/Chart/chart-context.js +2 -2
- package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
- package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
- package/dist/_internal/components/data-display/DataViews/DataViewsBoard.js +3 -3
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +49 -49
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +68 -65
- package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +10 -7
- package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +12 -9
- package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +14 -11
- package/dist/_internal/components/data-display/DataViews/base-card.js +9 -7
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +7 -7
- package/dist/_internal/components/data-display/DataViews/base-list-card-gutters.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +6 -6
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +15 -13
- package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +12 -12
- package/dist/_internal/components/data-display/DataViews/data-views-columns-tab.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-columns.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-display-tabs.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-empty.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-export.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +18 -18
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +12 -12
- package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +44 -44
- package/dist/_internal/components/data-display/DataViews/data-views-header-row.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +22 -22
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +10 -10
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +13 -13
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +22 -19
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +12 -12
- package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +5 -5
- package/dist/_internal/components/data-display/DataViews/list-card-rails.js +2 -2
- package/dist/_internal/components/data-display/DataViews/save-view-preview.js +3 -3
- package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +8 -8
- package/dist/_internal/components/data-display/DescriptionItem/DescriptionItem.js +3 -3
- package/dist/_internal/components/data-display/EmptyState/EmptyState.js +2 -2
- package/dist/_internal/components/data-display/ErrorState/ErrorState.js +2 -2
- package/dist/_internal/components/data-display/HoverCard/HoverCard.js +2 -2
- package/dist/_internal/components/data-display/LazyImage/LazyImage.js +4 -4
- package/dist/_internal/components/data-display/Lightbox/Lightbox.js +3 -3
- package/dist/_internal/components/data-display/LoadingState/LoadingState.js +4 -4
- package/dist/_internal/components/data-display/MapPreview/MapDecorations.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapLayers.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapPreview.hooks.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapPreview.js +9 -9
- package/dist/_internal/components/data-display/MapPreview/MapTiles.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/StaticMapView.js +4 -4
- package/dist/_internal/components/data-display/MapPreview/useMapPreview.js +3 -3
- package/dist/_internal/components/data-display/Progress/Progress.js +2 -2
- package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +3 -3
- package/dist/_internal/components/data-display/Sheet/Sheet.hooks.js +2 -2
- package/dist/_internal/components/data-display/Sheet/Sheet.js +3 -3
- package/dist/_internal/components/data-display/StatCard/StatCard.js +4 -4
- package/dist/_internal/components/data-display/Table/Table.js +3 -3
- package/dist/_internal/components/data-display/index.js +51 -51
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +4 -4
- package/dist/_internal/components/feedback/Dialog/Dialog.base.js +1 -0
- package/dist/_internal/components/feedback/Dialog/Dialog.base.js.map +1 -0
- package/dist/_internal/components/feedback/Dialog/Dialog.helpers.js +12 -0
- package/dist/_internal/components/feedback/Dialog/Dialog.helpers.js.map +1 -0
- package/dist/_internal/components/feedback/Dialog/Dialog.js +6 -2
- package/dist/_internal/components/feedback/Dialog/Dialog.metrics.js +42 -0
- package/dist/_internal/components/feedback/Dialog/Dialog.metrics.js.map +1 -0
- package/dist/_internal/components/feedback/Dialog/Dialog.styles.js +3 -1
- package/dist/_internal/components/feedback/Modal/Modal.js +2 -2
- package/dist/_internal/components/feedback/StackedModal/StackedModal.js +2 -2
- package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +2 -2
- package/dist/_internal/components/feedback/index.js +18 -15
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +5 -5
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +3 -3
- package/dist/_internal/components/form/Autocomplete/Autocomplete.js +2 -2
- package/dist/_internal/components/form/Button/Button.js +3 -3
- package/dist/_internal/components/form/Calendar/Calendar.js +4 -4
- package/dist/_internal/components/form/Calendar/CalendarDayCell.js +2 -2
- package/dist/_internal/components/form/Calendar/CalendarMonth.js +3 -3
- package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +6 -6
- package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +3 -3
- package/dist/_internal/components/form/CategorySelect/CategoryRows.js +2 -2
- package/dist/_internal/components/form/CategorySelect/CategorySelect.js +10 -10
- package/dist/_internal/components/form/CepField/CepField.js +4 -4
- package/dist/_internal/components/form/Checkbox/Checkbox.js +2 -2
- package/dist/_internal/components/form/CodeEditor/CodeEditor.js +2 -2
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +7 -7
- package/dist/_internal/components/form/Input/Input.js +3 -3
- package/dist/_internal/components/form/Label/Label.js +2 -2
- package/dist/_internal/components/form/Menubar/Menubar.js +5 -5
- package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +2 -2
- package/dist/_internal/components/form/Select/Select.js +2 -2
- package/dist/_internal/components/form/Switch/Switch.js +2 -2
- package/dist/_internal/components/form/index.js +32 -32
- package/dist/_internal/components/form/total-form/Fields/CategoryField.js +11 -11
- package/dist/_internal/components/form/total-form/Fields/CepField.js +5 -5
- package/dist/_internal/components/form/total-form/Fields/SelectField.js +3 -3
- package/dist/_internal/components/form/total-form/Fields/TextField.js +4 -4
- package/dist/_internal/components/form/total-form/Fields/index.js +24 -24
- package/dist/_internal/components/form/total-form/SubmitButton.js +4 -4
- package/dist/_internal/components/index.js +115 -111
- package/dist/_internal/components/layout/Box/Box.js +2 -2
- package/dist/_internal/components/layout/Card/Card.base.js +1 -0
- package/dist/_internal/components/layout/Card/Card.base.js.map +1 -0
- package/dist/_internal/components/layout/Card/Card.helpers.js +1 -1
- package/dist/_internal/components/layout/Card/Card.js +6 -3
- package/dist/_internal/components/layout/Card/Card.metrics.js +44 -0
- package/dist/_internal/components/layout/Card/Card.metrics.js.map +1 -0
- package/dist/_internal/components/layout/Card/Card.styles.js +3 -1
- package/dist/_internal/components/layout/Container/Container.js +2 -2
- package/dist/_internal/components/layout/Skeleton/Skeleton.js +3 -3
- package/dist/_internal/components/layout/Spacer/Spacer.js +2 -2
- package/dist/_internal/components/layout/Stack/Stack.js +3 -3
- package/dist/_internal/components/layout/index.js +13 -11
- package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +12 -9
- package/dist/_internal/components/navigation/CommandPalette/CommandPalette.js +2 -2
- package/dist/_internal/components/navigation/index.js +14 -11
- package/dist/_internal/components/typography/Heading/Heading.js +2 -2
- package/dist/_internal/components/typography/Paragraph/Paragraph.js +2 -2
- package/dist/_internal/components/typography/Text/Text.js +2 -2
- package/dist/_internal/components/typography/index.js +4 -4
- package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.js +2 -2
- package/dist/_internal/components/utility/InstallPrompt/InstallPrompt.js +2 -2
- package/dist/_internal/components/utility/index.js +4 -4
- package/dist/_internal/icons/Icon.js +2 -2
- package/dist/_internal/platform/test-id.js +3 -1
- package/dist/_internal/social-login-button/social-login-button.js +11 -9
- package/dist/_internal/tokens/mui-type.js +1 -0
- package/dist/_internal/tokens/mui-type.js.map +1 -1
- package/dist/_internal/tokens/shadow.js +18 -0
- package/dist/_internal/tokens/shadow.js.map +1 -0
- package/dist/_internal/user-avatar/user-avatar.js +12 -10
- package/dist/charts.js +6 -6
- package/dist/{chunk-P7FQUGED.js → chunk-23FCBIUN.js} +8 -8
- package/dist/{chunk-NUE774AN.js → chunk-25R3ITGZ.js} +2 -2
- package/dist/{chunk-Z6UEOSL7.js → chunk-2FDBR77W.js} +3 -3
- package/dist/{chunk-IFNK5TPI.js → chunk-2HPP6RVC.js} +2 -2
- package/dist/{chunk-6RGWDKUL.js → chunk-2MMEIN4T.js} +4 -4
- package/dist/{chunk-YRUCIKPO.js → chunk-2UYR2OOE.js} +4 -4
- package/dist/{chunk-26Z7QWID.js → chunk-343TTIHD.js} +2 -2
- package/dist/{chunk-BRSF5NRT.js → chunk-3FLVIVOK.js} +4 -4
- package/dist/{chunk-BDVNAU2C.js → chunk-4523RYE7.js} +5 -5
- package/dist/{chunk-4ETQRBZC.js → chunk-46UPILLK.js} +4 -4
- package/dist/{chunk-I3MDKPGG.js → chunk-4IVOHL32.js} +2 -2
- package/dist/{chunk-TLX66HCW.js → chunk-4OHRZW7U.js} +5 -5
- package/dist/{chunk-2QFTAGDH.js → chunk-4X4KM4ZB.js} +4 -4
- package/dist/{chunk-6PRA45LC.js → chunk-5KEMPCW4.js} +54 -45
- package/dist/chunk-5KEMPCW4.js.map +1 -0
- package/dist/{chunk-CXVMD6FE.js → chunk-5NKUYCZD.js} +4 -4
- package/dist/{chunk-77F36LQQ.js → chunk-5OIH36KX.js} +3 -3
- package/dist/{chunk-4MLDWACO.js → chunk-5ZTUP65G.js} +10 -10
- package/dist/{chunk-GDEXYUPF.js → chunk-67L7HMEP.js} +2 -2
- package/dist/{chunk-ZFPJBKVZ.js → chunk-6JGPPTLX.js} +5 -5
- package/dist/{chunk-PF5HDFYY.js → chunk-6NZTYZP5.js} +4 -4
- package/dist/chunk-6Q6T3FW5.js +92 -0
- package/dist/chunk-6Q6T3FW5.js.map +1 -0
- package/dist/chunk-73BEVJCS.js +28 -0
- package/dist/chunk-73BEVJCS.js.map +1 -0
- package/dist/{chunk-I7HYGIEJ.js → chunk-7BYFC2MR.js} +6 -6
- package/dist/{chunk-D4T646G4.js → chunk-7NSX7A5H.js} +2 -2
- package/dist/{chunk-OH3YGJT5.js → chunk-7TZ6OC5T.js} +2 -2
- package/dist/{chunk-QS7ZGRNS.js → chunk-7VN7LFBA.js} +6 -6
- package/dist/{chunk-GBNOYRLP.js → chunk-AEGXHZQT.js} +8 -8
- package/dist/{chunk-G2IPK2XE.js → chunk-AGSBIUPV.js} +11 -11
- package/dist/{chunk-D2IASECY.js → chunk-AIRWM7KK.js} +39 -28
- package/dist/chunk-AIRWM7KK.js.map +1 -0
- package/dist/{chunk-65DLYC4S.js → chunk-AVGTTWTE.js} +4 -4
- package/dist/{chunk-PXH24VIP.js → chunk-B6IURHSZ.js} +4 -4
- package/dist/chunk-BEBLRL5D.js +177 -0
- package/dist/chunk-BEBLRL5D.js.map +1 -0
- package/dist/{chunk-B3BK2SNS.js → chunk-C3CMEDSO.js} +2 -2
- package/dist/{chunk-JIINGMEB.js → chunk-CHPZTF34.js} +7 -7
- package/dist/{chunk-PWXL3QQ6.js → chunk-CJBBGMIA.js} +2 -2
- package/dist/{chunk-BPYPUEM5.js → chunk-CZJLWCEG.js} +2 -2
- package/dist/{chunk-BEGWE5O4.js → chunk-DTC224UJ.js} +4 -4
- package/dist/{chunk-UB76PBDF.js → chunk-DVFIE54C.js} +2 -2
- package/dist/{chunk-KT6HWAEN.js → chunk-DVUPIVI2.js} +4 -4
- package/dist/{chunk-GO4MVQGC.js → chunk-DW5FRWRQ.js} +2 -2
- package/dist/{chunk-6Z4H2Y77.js → chunk-E27Y7FF2.js} +4 -4
- package/dist/{chunk-PANMJFDS.js → chunk-E55CJV65.js} +2 -2
- package/dist/{chunk-TPIBJP4S.js → chunk-EOHKZGOZ.js} +2 -2
- package/dist/{chunk-SHDIZSN5.js → chunk-EXJBPKGW.js} +5 -5
- package/dist/{chunk-DH75UNF3.js → chunk-FGK2C7JR.js} +2 -2
- package/dist/{chunk-RI5JZLZL.js → chunk-FKUYRQSP.js} +1 -1
- package/dist/chunk-FKUYRQSP.js.map +1 -0
- package/dist/{chunk-OOGEYCJH.js → chunk-FL54G7PV.js} +2 -2
- package/dist/{chunk-AD776JPA.js → chunk-FR67FG2U.js} +2 -2
- package/dist/{chunk-SHQWIDD5.js → chunk-GJQYM3PM.js} +4 -4
- package/dist/{chunk-WROCSDVL.js → chunk-GSFNH4C5.js} +5 -5
- package/dist/chunk-GYXUCS37.js +36 -0
- package/dist/chunk-GYXUCS37.js.map +1 -0
- package/dist/{chunk-Z5ABJLTM.js → chunk-HFXTAEYY.js} +2 -2
- package/dist/{chunk-BLBOYCOV.js → chunk-HKV4MQ2W.js} +5 -5
- package/dist/{chunk-FOMK3WPG.js → chunk-HLYPI5CO.js} +4 -4
- package/dist/{chunk-GBRKP5GZ.js → chunk-I5SBTNV2.js} +2 -2
- package/dist/{chunk-V5P5Q6HM.js → chunk-J4W4TQPC.js} +6 -6
- package/dist/{chunk-RRO2EOJB.js → chunk-JB67KPGM.js} +4 -4
- package/dist/{chunk-5ZOJLYD2.js → chunk-JE6RZ5L6.js} +4 -4
- package/dist/{chunk-4HYXEMBP.js → chunk-JIKWZDNK.js} +2 -2
- package/dist/{chunk-2QLVUVVR.js → chunk-JSH3HFDQ.js} +2 -2
- package/dist/{chunk-TZ4SFX3M.js → chunk-JWW2Z3RH.js} +4 -4
- package/dist/{chunk-QFHH2NU5.js → chunk-JXNT5TUP.js} +3 -3
- package/dist/{chunk-OCXCH2ZW.js → chunk-KTK4A3IF.js} +12 -12
- package/dist/{chunk-ZXLIWOXC.js → chunk-LS4FMSHY.js} +5 -5
- package/dist/{chunk-SFAP5EH5.js → chunk-LUMF63BM.js} +4 -4
- package/dist/{chunk-CZPU5TW3.js → chunk-LYSSO6WC.js} +4 -4
- package/dist/{chunk-736HP6BL.js → chunk-M4LQRQFL.js} +2 -2
- package/dist/{chunk-426FTCMF.js → chunk-MESRKY67.js} +2 -2
- package/dist/{chunk-B5PYBEXO.js → chunk-MP4VSWHK.js} +2 -2
- package/dist/{chunk-VWGR5XUP.js → chunk-NWNSUHEB.js} +2 -2
- package/dist/{chunk-4K7FDVAB.js → chunk-O3336DJ6.js} +2 -2
- package/dist/{chunk-YCCKY5VW.js → chunk-OFOYMZRY.js} +4 -4
- package/dist/{chunk-QZDBWXZG.js → chunk-OP65D4UR.js} +2 -2
- package/dist/{chunk-BQQONDW5.js → chunk-OVLNF4AZ.js} +6 -6
- package/dist/{chunk-ZTZ6S5Q6.js → chunk-OXQP3N6X.js} +4 -4
- package/dist/{chunk-3UOHKHOT.js → chunk-PFV6RL4Q.js} +3 -3
- package/dist/{chunk-DF2FFYZ7.js → chunk-PMS3H3OO.js} +4 -4
- package/dist/{chunk-AGYGNNOM.js → chunk-PQECNGDE.js} +2 -2
- package/dist/{chunk-IIROZKW5.js → chunk-PRUSQQDT.js} +2 -2
- package/dist/{chunk-IPE5FFFD.js → chunk-PUBPZOQJ.js} +2 -2
- package/dist/{chunk-7KTU6YMQ.js → chunk-Q75SJ35X.js} +5 -5
- package/dist/{chunk-FINCVAAR.js → chunk-QFJRB27Q.js} +4 -4
- package/dist/{chunk-FB36IHCE.js → chunk-QFVFHIHE.js} +8 -8
- package/dist/{chunk-IH4RSRQA.js → chunk-QKIJ6YXZ.js} +4 -4
- package/dist/{chunk-UOPQOBQZ.js → chunk-QWDEOITU.js} +3 -3
- package/dist/{chunk-WBKWIFXA.js → chunk-QYNCPS5W.js} +6 -6
- package/dist/{chunk-XEE7PLDR.js → chunk-QZBUGUOY.js} +6 -6
- package/dist/{chunk-STH66VLA.js → chunk-R7R3LOKW.js} +2 -2
- package/dist/{chunk-OLZTGVBT.js → chunk-REMK55JI.js} +4 -4
- package/dist/{chunk-VWBWKLXX.js → chunk-SX3V2DLV.js} +4 -4
- package/dist/{chunk-THZ2NAA4.js → chunk-TLMLEC4F.js} +4 -4
- package/dist/{chunk-WTIOCG4M.js → chunk-TOYEP23N.js} +2 -2
- package/dist/{chunk-ZGHIHEND.js → chunk-TW3BXVEU.js} +2 -2
- package/dist/{chunk-6F5IKY32.js → chunk-TYJR4GOF.js} +6 -2
- package/dist/{chunk-6F5IKY32.js.map → chunk-TYJR4GOF.js.map} +1 -1
- package/dist/{chunk-5RQ7N63M.js → chunk-TZDDL3DR.js} +2 -2
- package/dist/{chunk-BEH4DN63.js → chunk-U2YJCNRU.js} +4 -4
- package/dist/{chunk-RPQ3W2C6.js → chunk-U2ZDN2AL.js} +2 -2
- package/dist/{chunk-WPZT2JD4.js → chunk-U7Q2Y6WG.js} +2 -2
- package/dist/{chunk-XLJJ2ZAP.js → chunk-UU3QAKG6.js} +10 -10
- package/dist/{chunk-TP4N3X2Q.js → chunk-UVGRRI7N.js} +8 -8
- package/dist/{chunk-GCXYCDOA.js → chunk-VLHGBFR6.js} +2 -2
- package/dist/chunk-VM3HRSAU.js +79 -0
- package/dist/chunk-VM3HRSAU.js.map +1 -0
- package/dist/{chunk-QRX5BYUQ.js → chunk-VNDOQEJ7.js} +4 -4
- package/dist/{chunk-P6IPJYCS.js → chunk-VNNG46TS.js} +6 -6
- package/dist/{chunk-7ZH7ZB33.js → chunk-VQAM2XZV.js} +4 -4
- package/dist/{chunk-2SWQ6HIK.js → chunk-W3FAKT3D.js} +4 -4
- package/dist/{chunk-JDMYD6QC.js → chunk-W4SDVTZC.js} +2 -2
- package/dist/{chunk-7MAOQIWA.js → chunk-W4YWU7LQ.js} +2 -2
- package/dist/{chunk-Y46RBFBV.js → chunk-W7Y6RA6W.js} +6 -6
- package/dist/{chunk-XFU2S6XT.js → chunk-WGRS4PGY.js} +10 -10
- package/dist/{chunk-JXAYT6LX.js → chunk-WLQTHPMX.js} +2 -2
- package/dist/{chunk-J2KSG754.js → chunk-WRDPWEIC.js} +5 -5
- package/dist/{chunk-RPWEXIAW.js → chunk-X5MPHXG5.js} +6 -6
- package/dist/{chunk-UEIVXFUC.js → chunk-XELVDPKL.js} +5 -5
- package/dist/{chunk-EPNUVSNK.js → chunk-XFUNJYFT.js} +7 -7
- package/dist/{chunk-RRZBATXK.js → chunk-XKV5ZIBG.js} +3 -3
- package/dist/{chunk-ZKFYBC6G.js → chunk-XSF6AXEU.js} +2 -2
- package/dist/{chunk-VPHOSIPB.js → chunk-XT7HMNBW.js} +9 -9
- package/dist/{chunk-R6RVBYTU.js → chunk-XUJG2HFW.js} +3 -3
- package/dist/{chunk-S5LE2ARG.js → chunk-YANLN6HP.js} +66 -56
- package/dist/chunk-YANLN6HP.js.map +1 -0
- package/dist/{chunk-FRQ4HNGF.js → chunk-YJ4HM25H.js} +2 -2
- package/dist/{chunk-TVO5STZB.js → chunk-YQ6TNHAC.js} +3 -3
- package/dist/{chunk-BNNSO4MC.js → chunk-YTOYMJPM.js} +5 -5
- package/dist/{chunk-MCRIT46W.js → chunk-ZIYMBR7K.js} +5 -5
- package/dist/{chunk-SAHQLXNN.js → chunk-ZKR5B6YJ.js} +5 -5
- package/dist/data-display/Alert.js +4 -4
- package/dist/data-display/AsyncStateContainer.js +7 -7
- package/dist/data-display/Avatar.js +2 -2
- package/dist/data-display/Badge.js +3 -3
- package/dist/data-display/CardKit.js +21 -21
- package/dist/data-display/Carousel.js +2 -2
- package/dist/data-display/Chart.js +6 -6
- package/dist/data-display/DataGrid.js +2 -2
- package/dist/data-display/DataViews.js +84 -80
- package/dist/data-display/DescriptionItem.js +3 -3
- package/dist/data-display/EmptyState.js +2 -2
- package/dist/data-display/ErrorState.js +2 -2
- package/dist/data-display/HoverCard.js +2 -2
- package/dist/data-display/LazyImage.js +4 -4
- package/dist/data-display/Lightbox.js +3 -3
- package/dist/data-display/LoadingState.js +4 -4
- package/dist/data-display/MapPreview.js +9 -9
- package/dist/data-display/Progress.js +2 -2
- package/dist/data-display/SectionOnboarding.js +3 -3
- package/dist/data-display/Sheet.js +3 -3
- package/dist/data-display/StatCard.js +4 -4
- package/dist/data-display/Table.js +3 -3
- package/dist/feedback/ConfirmAction.js +7 -7
- package/dist/feedback/Dialog.js +6 -2
- package/dist/feedback/Modal.js +2 -2
- package/dist/feedback/StackedModal.js +2 -2
- package/dist/feedback/TutorialOverlay.js +2 -2
- package/dist/form/AddressAutocomplete.js +5 -5
- package/dist/form/Autocomplete.js +2 -2
- package/dist/form/Button.js +3 -3
- package/dist/form/Calendar.js +4 -4
- package/dist/form/CategorySelect.js +10 -10
- package/dist/form/CepField.js +4 -4
- package/dist/form/Checkbox.js +2 -2
- package/dist/form/CodeEditor.js +2 -2
- package/dist/form/DateRangePicker.js +7 -7
- package/dist/form/Input.js +3 -3
- package/dist/form/Label.js +2 -2
- package/dist/form/Menubar.js +5 -5
- package/dist/form/Select.js +2 -2
- package/dist/form/Switch.js +2 -2
- package/dist/form/total-form.js +30 -30
- package/dist/icons.js +2 -2
- package/dist/layout/Box.js +2 -2
- package/dist/layout/Card.js +6 -3
- package/dist/layout/Container.js +2 -2
- package/dist/layout/ContentToolbar.js +3 -3
- package/dist/layout/Skeleton.js +3 -3
- package/dist/layout/Spacer.js +2 -2
- package/dist/layout/Stack.js +3 -3
- package/dist/native/chunks/{chunk-HSIND52T.js → chunk-2UFNPDYT.js} +2 -1
- package/dist/native/chunks/chunk-2UFNPDYT.js.map +1 -0
- package/dist/native/chunks/{chunk-OGWPPQL4.js → chunk-75JQYVDZ.js} +3 -3
- package/dist/native/chunks/{chunk-WKMDCNIN.js → chunk-7LTVGW23.js} +2 -2
- package/dist/native/chunks/{chunk-QZAUOHDQ.js → chunk-AR5O4BEY.js} +6 -2
- package/dist/native/chunks/{chunk-QZAUOHDQ.js.map → chunk-AR5O4BEY.js.map} +1 -1
- package/dist/native/chunks/{chunk-RJVM5YDE.js → chunk-ATS7STZJ.js} +4 -4
- package/dist/native/chunks/{chunk-YTHR4Y5P.js → chunk-GWGIWQO7.js} +2 -2
- package/dist/native/chunks/{chunk-P3PL4WBO.js → chunk-LEMMXZFN.js} +24 -24
- package/dist/native/chunks/{chunk-P3PL4WBO.js.map → chunk-LEMMXZFN.js.map} +1 -1
- package/dist/native/chunks/chunk-NRN37A5K.js +67 -0
- package/dist/native/chunks/chunk-NRN37A5K.js.map +1 -0
- package/dist/native/chunks/{chunk-D4EYAXNG.js → chunk-QYUD3S6F.js} +5 -5
- package/dist/native/data-display/Alert.js +8 -8
- package/dist/native/data-display/Avatar.js +7 -7
- package/dist/native/data-display/Badge.js +8 -8
- package/dist/native/data-display/Chip.js +4 -4
- package/dist/native/data-display/EmptyState.js +11 -11
- package/dist/native/data-display/ErrorState.js +11 -11
- package/dist/native/data-display/LoadingState.js +7 -7
- package/dist/native/data-display/Progress.js +3 -3
- package/dist/native/feedback/Dialog.js +496 -0
- package/dist/native/feedback/Dialog.js.map +1 -0
- package/dist/native/form/Button.js +4 -4
- package/dist/native/form/Checkbox.js +5 -5
- package/dist/native/form/Input.js +5 -5
- package/dist/native/form/Select.js +6 -6
- package/dist/native/form/Switch.js +3 -3
- package/dist/native/icons.js +4 -4
- package/dist/native/layout/Box.js +4 -4
- package/dist/native/layout/Card.js +494 -0
- package/dist/native/layout/Card.js.map +1 -0
- package/dist/native/layout/Container.js +3 -3
- package/dist/native/layout/Skeleton.js +6 -6
- package/dist/native/layout/Spacer.js +3 -3
- package/dist/native/layout/Stack.js +4 -4
- package/dist/native/provider.js +2 -2
- package/dist/native/tokens.js +1 -1
- package/dist/native/typography/Heading.js +3 -3
- package/dist/native/typography/Paragraph.js +3 -3
- package/dist/native/typography/Text.js +3 -3
- package/dist/navigation/AppHeader.js +12 -9
- package/dist/navigation/CommandPalette.js +2 -2
- package/dist/social-login-button.js +11 -9
- package/dist/types/components/feedback/Dialog/Dialog.base.d.ts +64 -0
- package/dist/types/components/feedback/Dialog/Dialog.base.d.ts.map +1 -0
- package/dist/types/components/feedback/Dialog/Dialog.d.ts.map +1 -1
- package/dist/types/components/feedback/Dialog/Dialog.helpers.d.ts +35 -0
- package/dist/types/components/feedback/Dialog/Dialog.helpers.d.ts.map +1 -0
- package/dist/types/components/feedback/Dialog/Dialog.metrics.d.ts +133 -0
- package/dist/types/components/feedback/Dialog/Dialog.metrics.d.ts.map +1 -0
- package/dist/types/components/feedback/Dialog/Dialog.styles.d.ts +4 -4
- package/dist/types/components/feedback/Dialog/Dialog.styles.d.ts.map +1 -1
- package/dist/types/components/feedback/Dialog/Dialog.types.d.ts +8 -41
- package/dist/types/components/feedback/Dialog/Dialog.types.d.ts.map +1 -1
- package/dist/types/components/feedback/Dialog/index.d.ts +1 -1
- package/dist/types/components/feedback/Dialog/index.d.ts.map +1 -1
- package/dist/types/components/layout/Card/Card.base.d.ts +77 -0
- package/dist/types/components/layout/Card/Card.base.d.ts.map +1 -0
- package/dist/types/components/layout/Card/Card.d.ts.map +1 -1
- package/dist/types/components/layout/Card/Card.helpers.d.ts +8 -3
- package/dist/types/components/layout/Card/Card.helpers.d.ts.map +1 -1
- package/dist/types/components/layout/Card/Card.metrics.d.ts +182 -0
- package/dist/types/components/layout/Card/Card.metrics.d.ts.map +1 -0
- package/dist/types/components/layout/Card/Card.styles.d.ts +2 -2
- package/dist/types/components/layout/Card/Card.styles.d.ts.map +1 -1
- package/dist/types/components/layout/Card/Card.types.d.ts +10 -44
- package/dist/types/components/layout/Card/Card.types.d.ts.map +1 -1
- package/dist/types/components/layout/Card/index.d.ts +1 -1
- package/dist/types/components/layout/Card/index.d.ts.map +1 -1
- package/dist/types/platform/test-id.d.ts +14 -0
- package/dist/types/platform/test-id.d.ts.map +1 -1
- package/dist/types/tokens/mui-type.d.ts +1 -1
- package/dist/types/tokens/mui-type.d.ts.map +1 -1
- package/dist/types/tokens/shadow.d.ts +40 -0
- package/dist/types/tokens/shadow.d.ts.map +1 -0
- package/dist/types-native/components/feedback/Dialog/Dialog.base.d.ts +64 -0
- package/dist/types-native/components/feedback/Dialog/Dialog.base.d.ts.map +1 -0
- package/dist/types-native/components/feedback/Dialog/Dialog.helpers.d.ts +35 -0
- package/dist/types-native/components/feedback/Dialog/Dialog.helpers.d.ts.map +1 -0
- package/dist/types-native/components/feedback/Dialog/Dialog.look.native.d.ts +44 -0
- package/dist/types-native/components/feedback/Dialog/Dialog.look.native.d.ts.map +1 -0
- package/dist/types-native/components/feedback/Dialog/Dialog.metrics.d.ts +133 -0
- package/dist/types-native/components/feedback/Dialog/Dialog.metrics.d.ts.map +1 -0
- package/dist/types-native/components/feedback/Dialog/Dialog.native.d.ts +8 -0
- package/dist/types-native/components/feedback/Dialog/Dialog.native.d.ts.map +1 -0
- package/dist/types-native/components/feedback/Dialog/Dialog.types.native.d.ts +25 -0
- package/dist/types-native/components/feedback/Dialog/Dialog.types.native.d.ts.map +1 -0
- package/dist/types-native/components/feedback/Dialog/DialogParts.native.d.ts +39 -0
- package/dist/types-native/components/feedback/Dialog/DialogParts.native.d.ts.map +1 -0
- package/dist/types-native/components/feedback/Dialog/index.native.d.ts +4 -0
- package/dist/types-native/components/feedback/Dialog/index.native.d.ts.map +1 -0
- package/dist/types-native/components/layout/Card/Card.base.d.ts +77 -0
- package/dist/types-native/components/layout/Card/Card.base.d.ts.map +1 -0
- package/dist/types-native/components/layout/Card/Card.helpers.d.ts +11 -0
- package/dist/types-native/components/layout/Card/Card.helpers.d.ts.map +1 -0
- package/dist/types-native/components/layout/Card/Card.look.native.d.ts +57 -0
- package/dist/types-native/components/layout/Card/Card.look.native.d.ts.map +1 -0
- package/dist/types-native/components/layout/Card/Card.metrics.d.ts +182 -0
- package/dist/types-native/components/layout/Card/Card.metrics.d.ts.map +1 -0
- package/dist/types-native/components/layout/Card/Card.native.d.ts +11 -0
- package/dist/types-native/components/layout/Card/Card.native.d.ts.map +1 -0
- package/dist/types-native/components/layout/Card/Card.types.native.d.ts +28 -0
- package/dist/types-native/components/layout/Card/Card.types.native.d.ts.map +1 -0
- package/dist/types-native/components/layout/Card/CardParts.native.d.ts +55 -0
- package/dist/types-native/components/layout/Card/CardParts.native.d.ts.map +1 -0
- package/dist/types-native/components/layout/Card/index.native.d.ts +4 -0
- package/dist/types-native/components/layout/Card/index.native.d.ts.map +1 -0
- package/dist/types-native/platform/pulse-ring.native.d.ts +35 -0
- package/dist/types-native/platform/pulse-ring.native.d.ts.map +1 -0
- package/dist/types-native/platform/test-id.d.ts +14 -0
- package/dist/types-native/platform/test-id.d.ts.map +1 -1
- package/dist/types-native/tokens/mui-type.d.ts +1 -1
- package/dist/types-native/tokens/mui-type.d.ts.map +1 -1
- package/dist/types-native/tokens/shadow.d.ts +40 -0
- package/dist/types-native/tokens/shadow.d.ts.map +1 -0
- package/dist/typography/Heading.js +2 -2
- package/dist/typography/Paragraph.js +2 -2
- package/dist/typography/Text.js +2 -2
- package/dist/user-avatar.js +12 -10
- package/dist/utility/InfiniteScroll.js +2 -2
- package/dist/utility/InstallPrompt.js +2 -2
- package/package.json +9 -1
- package/src/components/data-display/CardKit/NATIVE-NOTES.md +48 -0
- package/src/components/feedback/Dialog/Dialog.base.ts +69 -0
- package/src/components/feedback/Dialog/Dialog.helpers.ts +75 -0
- package/src/components/feedback/Dialog/Dialog.look.native.ts +159 -0
- package/src/components/feedback/Dialog/Dialog.metrics.ts +140 -0
- package/src/components/feedback/Dialog/Dialog.native.tsx +149 -0
- package/src/components/feedback/Dialog/Dialog.styles.ts +63 -41
- package/src/components/feedback/Dialog/Dialog.tsx +58 -74
- package/src/components/feedback/Dialog/Dialog.types.native.ts +46 -0
- package/src/components/feedback/Dialog/Dialog.types.ts +24 -41
- package/src/components/feedback/Dialog/DialogParts.native.tsx +257 -0
- package/src/components/feedback/Dialog/NATIVE-NOTES.md +16 -0
- package/src/components/feedback/Dialog/index.native.ts +16 -0
- package/src/components/feedback/Dialog/index.ts +8 -2
- package/src/components/layout/Card/Card.base.ts +92 -0
- package/src/components/layout/Card/Card.helpers.ts +13 -7
- package/src/components/layout/Card/Card.look.native.ts +204 -0
- package/src/components/layout/Card/Card.metrics.ts +171 -0
- package/src/components/layout/Card/Card.native.tsx +130 -0
- package/src/components/layout/Card/Card.styles.ts +88 -48
- package/src/components/layout/Card/Card.tsx +41 -25
- package/src/components/layout/Card/Card.types.native.ts +59 -0
- package/src/components/layout/Card/Card.types.ts +30 -45
- package/src/components/layout/Card/CardParts.native.tsx +262 -0
- package/src/components/layout/Card/NATIVE-NOTES.md +15 -0
- package/src/components/layout/Card/index.native.ts +18 -0
- package/src/components/layout/Card/index.ts +9 -0
- package/src/platform/pulse-ring.native.tsx +82 -0
- package/src/platform/test-id.ts +17 -0
- package/src/tokens/mui-type.ts +2 -1
- package/src/tokens/shadow.ts +59 -0
- package/dist/chunk-6PRA45LC.js.map +0 -1
- package/dist/chunk-D2IASECY.js.map +0 -1
- package/dist/chunk-RI5JZLZL.js.map +0 -1
- package/dist/chunk-S5LE2ARG.js.map +0 -1
- package/dist/chunk-VMF3UXM4.js +0 -137
- package/dist/chunk-VMF3UXM4.js.map +0 -1
- package/dist/native/chunks/chunk-HSIND52T.js.map +0 -1
- /package/dist/{chunk-P7FQUGED.js.map → chunk-23FCBIUN.js.map} +0 -0
- /package/dist/{chunk-NUE774AN.js.map → chunk-25R3ITGZ.js.map} +0 -0
- /package/dist/{chunk-Z6UEOSL7.js.map → chunk-2FDBR77W.js.map} +0 -0
- /package/dist/{chunk-IFNK5TPI.js.map → chunk-2HPP6RVC.js.map} +0 -0
- /package/dist/{chunk-6RGWDKUL.js.map → chunk-2MMEIN4T.js.map} +0 -0
- /package/dist/{chunk-YRUCIKPO.js.map → chunk-2UYR2OOE.js.map} +0 -0
- /package/dist/{chunk-26Z7QWID.js.map → chunk-343TTIHD.js.map} +0 -0
- /package/dist/{chunk-BRSF5NRT.js.map → chunk-3FLVIVOK.js.map} +0 -0
- /package/dist/{chunk-BDVNAU2C.js.map → chunk-4523RYE7.js.map} +0 -0
- /package/dist/{chunk-4ETQRBZC.js.map → chunk-46UPILLK.js.map} +0 -0
- /package/dist/{chunk-I3MDKPGG.js.map → chunk-4IVOHL32.js.map} +0 -0
- /package/dist/{chunk-TLX66HCW.js.map → chunk-4OHRZW7U.js.map} +0 -0
- /package/dist/{chunk-2QFTAGDH.js.map → chunk-4X4KM4ZB.js.map} +0 -0
- /package/dist/{chunk-CXVMD6FE.js.map → chunk-5NKUYCZD.js.map} +0 -0
- /package/dist/{chunk-77F36LQQ.js.map → chunk-5OIH36KX.js.map} +0 -0
- /package/dist/{chunk-4MLDWACO.js.map → chunk-5ZTUP65G.js.map} +0 -0
- /package/dist/{chunk-GDEXYUPF.js.map → chunk-67L7HMEP.js.map} +0 -0
- /package/dist/{chunk-ZFPJBKVZ.js.map → chunk-6JGPPTLX.js.map} +0 -0
- /package/dist/{chunk-PF5HDFYY.js.map → chunk-6NZTYZP5.js.map} +0 -0
- /package/dist/{chunk-I7HYGIEJ.js.map → chunk-7BYFC2MR.js.map} +0 -0
- /package/dist/{chunk-D4T646G4.js.map → chunk-7NSX7A5H.js.map} +0 -0
- /package/dist/{chunk-OH3YGJT5.js.map → chunk-7TZ6OC5T.js.map} +0 -0
- /package/dist/{chunk-QS7ZGRNS.js.map → chunk-7VN7LFBA.js.map} +0 -0
- /package/dist/{chunk-GBNOYRLP.js.map → chunk-AEGXHZQT.js.map} +0 -0
- /package/dist/{chunk-G2IPK2XE.js.map → chunk-AGSBIUPV.js.map} +0 -0
- /package/dist/{chunk-65DLYC4S.js.map → chunk-AVGTTWTE.js.map} +0 -0
- /package/dist/{chunk-PXH24VIP.js.map → chunk-B6IURHSZ.js.map} +0 -0
- /package/dist/{chunk-B3BK2SNS.js.map → chunk-C3CMEDSO.js.map} +0 -0
- /package/dist/{chunk-JIINGMEB.js.map → chunk-CHPZTF34.js.map} +0 -0
- /package/dist/{chunk-PWXL3QQ6.js.map → chunk-CJBBGMIA.js.map} +0 -0
- /package/dist/{chunk-BPYPUEM5.js.map → chunk-CZJLWCEG.js.map} +0 -0
- /package/dist/{chunk-BEGWE5O4.js.map → chunk-DTC224UJ.js.map} +0 -0
- /package/dist/{chunk-UB76PBDF.js.map → chunk-DVFIE54C.js.map} +0 -0
- /package/dist/{chunk-KT6HWAEN.js.map → chunk-DVUPIVI2.js.map} +0 -0
- /package/dist/{chunk-GO4MVQGC.js.map → chunk-DW5FRWRQ.js.map} +0 -0
- /package/dist/{chunk-6Z4H2Y77.js.map → chunk-E27Y7FF2.js.map} +0 -0
- /package/dist/{chunk-PANMJFDS.js.map → chunk-E55CJV65.js.map} +0 -0
- /package/dist/{chunk-TPIBJP4S.js.map → chunk-EOHKZGOZ.js.map} +0 -0
- /package/dist/{chunk-SHDIZSN5.js.map → chunk-EXJBPKGW.js.map} +0 -0
- /package/dist/{chunk-DH75UNF3.js.map → chunk-FGK2C7JR.js.map} +0 -0
- /package/dist/{chunk-OOGEYCJH.js.map → chunk-FL54G7PV.js.map} +0 -0
- /package/dist/{chunk-AD776JPA.js.map → chunk-FR67FG2U.js.map} +0 -0
- /package/dist/{chunk-SHQWIDD5.js.map → chunk-GJQYM3PM.js.map} +0 -0
- /package/dist/{chunk-WROCSDVL.js.map → chunk-GSFNH4C5.js.map} +0 -0
- /package/dist/{chunk-Z5ABJLTM.js.map → chunk-HFXTAEYY.js.map} +0 -0
- /package/dist/{chunk-BLBOYCOV.js.map → chunk-HKV4MQ2W.js.map} +0 -0
- /package/dist/{chunk-FOMK3WPG.js.map → chunk-HLYPI5CO.js.map} +0 -0
- /package/dist/{chunk-GBRKP5GZ.js.map → chunk-I5SBTNV2.js.map} +0 -0
- /package/dist/{chunk-V5P5Q6HM.js.map → chunk-J4W4TQPC.js.map} +0 -0
- /package/dist/{chunk-RRO2EOJB.js.map → chunk-JB67KPGM.js.map} +0 -0
- /package/dist/{chunk-5ZOJLYD2.js.map → chunk-JE6RZ5L6.js.map} +0 -0
- /package/dist/{chunk-4HYXEMBP.js.map → chunk-JIKWZDNK.js.map} +0 -0
- /package/dist/{chunk-2QLVUVVR.js.map → chunk-JSH3HFDQ.js.map} +0 -0
- /package/dist/{chunk-TZ4SFX3M.js.map → chunk-JWW2Z3RH.js.map} +0 -0
- /package/dist/{chunk-QFHH2NU5.js.map → chunk-JXNT5TUP.js.map} +0 -0
- /package/dist/{chunk-OCXCH2ZW.js.map → chunk-KTK4A3IF.js.map} +0 -0
- /package/dist/{chunk-ZXLIWOXC.js.map → chunk-LS4FMSHY.js.map} +0 -0
- /package/dist/{chunk-SFAP5EH5.js.map → chunk-LUMF63BM.js.map} +0 -0
- /package/dist/{chunk-CZPU5TW3.js.map → chunk-LYSSO6WC.js.map} +0 -0
- /package/dist/{chunk-736HP6BL.js.map → chunk-M4LQRQFL.js.map} +0 -0
- /package/dist/{chunk-426FTCMF.js.map → chunk-MESRKY67.js.map} +0 -0
- /package/dist/{chunk-B5PYBEXO.js.map → chunk-MP4VSWHK.js.map} +0 -0
- /package/dist/{chunk-VWGR5XUP.js.map → chunk-NWNSUHEB.js.map} +0 -0
- /package/dist/{chunk-4K7FDVAB.js.map → chunk-O3336DJ6.js.map} +0 -0
- /package/dist/{chunk-YCCKY5VW.js.map → chunk-OFOYMZRY.js.map} +0 -0
- /package/dist/{chunk-QZDBWXZG.js.map → chunk-OP65D4UR.js.map} +0 -0
- /package/dist/{chunk-BQQONDW5.js.map → chunk-OVLNF4AZ.js.map} +0 -0
- /package/dist/{chunk-ZTZ6S5Q6.js.map → chunk-OXQP3N6X.js.map} +0 -0
- /package/dist/{chunk-3UOHKHOT.js.map → chunk-PFV6RL4Q.js.map} +0 -0
- /package/dist/{chunk-DF2FFYZ7.js.map → chunk-PMS3H3OO.js.map} +0 -0
- /package/dist/{chunk-AGYGNNOM.js.map → chunk-PQECNGDE.js.map} +0 -0
- /package/dist/{chunk-IIROZKW5.js.map → chunk-PRUSQQDT.js.map} +0 -0
- /package/dist/{chunk-IPE5FFFD.js.map → chunk-PUBPZOQJ.js.map} +0 -0
- /package/dist/{chunk-7KTU6YMQ.js.map → chunk-Q75SJ35X.js.map} +0 -0
- /package/dist/{chunk-FINCVAAR.js.map → chunk-QFJRB27Q.js.map} +0 -0
- /package/dist/{chunk-FB36IHCE.js.map → chunk-QFVFHIHE.js.map} +0 -0
- /package/dist/{chunk-IH4RSRQA.js.map → chunk-QKIJ6YXZ.js.map} +0 -0
- /package/dist/{chunk-UOPQOBQZ.js.map → chunk-QWDEOITU.js.map} +0 -0
- /package/dist/{chunk-WBKWIFXA.js.map → chunk-QYNCPS5W.js.map} +0 -0
- /package/dist/{chunk-XEE7PLDR.js.map → chunk-QZBUGUOY.js.map} +0 -0
- /package/dist/{chunk-STH66VLA.js.map → chunk-R7R3LOKW.js.map} +0 -0
- /package/dist/{chunk-OLZTGVBT.js.map → chunk-REMK55JI.js.map} +0 -0
- /package/dist/{chunk-VWBWKLXX.js.map → chunk-SX3V2DLV.js.map} +0 -0
- /package/dist/{chunk-THZ2NAA4.js.map → chunk-TLMLEC4F.js.map} +0 -0
- /package/dist/{chunk-WTIOCG4M.js.map → chunk-TOYEP23N.js.map} +0 -0
- /package/dist/{chunk-ZGHIHEND.js.map → chunk-TW3BXVEU.js.map} +0 -0
- /package/dist/{chunk-5RQ7N63M.js.map → chunk-TZDDL3DR.js.map} +0 -0
- /package/dist/{chunk-BEH4DN63.js.map → chunk-U2YJCNRU.js.map} +0 -0
- /package/dist/{chunk-RPQ3W2C6.js.map → chunk-U2ZDN2AL.js.map} +0 -0
- /package/dist/{chunk-WPZT2JD4.js.map → chunk-U7Q2Y6WG.js.map} +0 -0
- /package/dist/{chunk-XLJJ2ZAP.js.map → chunk-UU3QAKG6.js.map} +0 -0
- /package/dist/{chunk-TP4N3X2Q.js.map → chunk-UVGRRI7N.js.map} +0 -0
- /package/dist/{chunk-GCXYCDOA.js.map → chunk-VLHGBFR6.js.map} +0 -0
- /package/dist/{chunk-QRX5BYUQ.js.map → chunk-VNDOQEJ7.js.map} +0 -0
- /package/dist/{chunk-P6IPJYCS.js.map → chunk-VNNG46TS.js.map} +0 -0
- /package/dist/{chunk-7ZH7ZB33.js.map → chunk-VQAM2XZV.js.map} +0 -0
- /package/dist/{chunk-2SWQ6HIK.js.map → chunk-W3FAKT3D.js.map} +0 -0
- /package/dist/{chunk-JDMYD6QC.js.map → chunk-W4SDVTZC.js.map} +0 -0
- /package/dist/{chunk-7MAOQIWA.js.map → chunk-W4YWU7LQ.js.map} +0 -0
- /package/dist/{chunk-Y46RBFBV.js.map → chunk-W7Y6RA6W.js.map} +0 -0
- /package/dist/{chunk-XFU2S6XT.js.map → chunk-WGRS4PGY.js.map} +0 -0
- /package/dist/{chunk-JXAYT6LX.js.map → chunk-WLQTHPMX.js.map} +0 -0
- /package/dist/{chunk-J2KSG754.js.map → chunk-WRDPWEIC.js.map} +0 -0
- /package/dist/{chunk-RPWEXIAW.js.map → chunk-X5MPHXG5.js.map} +0 -0
- /package/dist/{chunk-UEIVXFUC.js.map → chunk-XELVDPKL.js.map} +0 -0
- /package/dist/{chunk-EPNUVSNK.js.map → chunk-XFUNJYFT.js.map} +0 -0
- /package/dist/{chunk-RRZBATXK.js.map → chunk-XKV5ZIBG.js.map} +0 -0
- /package/dist/{chunk-ZKFYBC6G.js.map → chunk-XSF6AXEU.js.map} +0 -0
- /package/dist/{chunk-VPHOSIPB.js.map → chunk-XT7HMNBW.js.map} +0 -0
- /package/dist/{chunk-R6RVBYTU.js.map → chunk-XUJG2HFW.js.map} +0 -0
- /package/dist/{chunk-FRQ4HNGF.js.map → chunk-YJ4HM25H.js.map} +0 -0
- /package/dist/{chunk-TVO5STZB.js.map → chunk-YQ6TNHAC.js.map} +0 -0
- /package/dist/{chunk-BNNSO4MC.js.map → chunk-YTOYMJPM.js.map} +0 -0
- /package/dist/{chunk-MCRIT46W.js.map → chunk-ZIYMBR7K.js.map} +0 -0
- /package/dist/{chunk-SAHQLXNN.js.map → chunk-ZKR5B6YJ.js.map} +0 -0
- /package/dist/native/chunks/{chunk-OGWPPQL4.js.map → chunk-75JQYVDZ.js.map} +0 -0
- /package/dist/native/chunks/{chunk-WKMDCNIN.js.map → chunk-7LTVGW23.js.map} +0 -0
- /package/dist/native/chunks/{chunk-RJVM5YDE.js.map → chunk-ATS7STZJ.js.map} +0 -0
- /package/dist/native/chunks/{chunk-YTHR4Y5P.js.map → chunk-GWGIWQO7.js.map} +0 -0
- /package/dist/native/chunks/{chunk-D4EYAXNG.js.map → chunk-QYUD3S6F.js.map} +0 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* THE CONTRACT BOTH `Card` RENDERERS HONOUR — and nothing else.
|
|
5
|
+
*
|
|
6
|
+
* This file imports no MUI and no react-native, on purpose: it ships in BOTH
|
|
7
|
+
* declaration outputs (`dist/types` and `dist/types-native`), and a native
|
|
8
|
+
* consumer has no `@mui/material` to resolve a type import against.
|
|
9
|
+
*
|
|
10
|
+
* Handlers are NOT here. Their names are the same on both sides (`onClick`,
|
|
11
|
+
* `onFocus`, `onBlur`) but their event types are the renderer's own, so each
|
|
12
|
+
* side declares them beside its own extras — except {@link
|
|
13
|
+
* CardBaseProps.onExpandToggle}, whose argument is a boolean rather than an
|
|
14
|
+
* event and is therefore the same type on both.
|
|
15
|
+
*/
|
|
16
|
+
export type CardVariant = 'elevated' | 'outlined' | 'glass' | 'gradient' | 'neumorphic' | 'section';
|
|
17
|
+
export type CardEntranceAnimation =
|
|
18
|
+
| 'fade'
|
|
19
|
+
| 'slide-up'
|
|
20
|
+
| 'slide-down'
|
|
21
|
+
| 'slide-left'
|
|
22
|
+
| 'slide-right'
|
|
23
|
+
| 'zoom'
|
|
24
|
+
| 'grow'
|
|
25
|
+
| 'none';
|
|
26
|
+
|
|
27
|
+
/** The named radii a card can be cut to. `full` is a percentage, not a length. */
|
|
28
|
+
export type CardBorderRadius = 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
29
|
+
|
|
30
|
+
export interface CardBaseProps {
|
|
31
|
+
children: React.ReactNode;
|
|
32
|
+
variant?: CardVariant;
|
|
33
|
+
/** Paints the hover/press surface and marks the card as a pointer target. */
|
|
34
|
+
interactive?: boolean;
|
|
35
|
+
glow?: boolean;
|
|
36
|
+
pulse?: boolean;
|
|
37
|
+
borderRadius?: CardBorderRadius;
|
|
38
|
+
/** Dims the card, blocks pointer events and centres a spinner over it. */
|
|
39
|
+
loading?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Accepted and ignored on BOTH renderers — reserved, and extracted so they
|
|
42
|
+
* never reach the underlying element as unknown attributes.
|
|
43
|
+
*/
|
|
44
|
+
expandable?: boolean;
|
|
45
|
+
expanded?: boolean;
|
|
46
|
+
onExpandToggle?: (expanded: boolean) => void;
|
|
47
|
+
entranceAnimation?: CardEntranceAnimation;
|
|
48
|
+
animationDelay?: number;
|
|
49
|
+
skeleton?: boolean;
|
|
50
|
+
hoverScale?: number;
|
|
51
|
+
dataTestId?: string;
|
|
52
|
+
testID?: string;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface CardHeaderBaseProps {
|
|
56
|
+
title?: React.ReactNode;
|
|
57
|
+
subtitle?: React.ReactNode;
|
|
58
|
+
action?: React.ReactNode;
|
|
59
|
+
avatar?: React.ReactNode;
|
|
60
|
+
/** Custom header content; when given it replaces the title/subtitle layout. */
|
|
61
|
+
children?: React.ReactNode;
|
|
62
|
+
dataTestId?: string;
|
|
63
|
+
testID?: string;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface CardContentBaseProps {
|
|
67
|
+
children: React.ReactNode;
|
|
68
|
+
dense?: boolean;
|
|
69
|
+
dataTestId?: string;
|
|
70
|
+
testID?: string;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export type CardActionsAlignment = 'left' | 'center' | 'right' | 'space-between';
|
|
74
|
+
|
|
75
|
+
export interface CardActionsBaseProps {
|
|
76
|
+
children: React.ReactNode;
|
|
77
|
+
disableSpacing?: boolean;
|
|
78
|
+
alignment?: CardActionsAlignment;
|
|
79
|
+
dataTestId?: string;
|
|
80
|
+
testID?: string;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface CardMediaBaseProps {
|
|
84
|
+
/** The image URL. */
|
|
85
|
+
image?: string;
|
|
86
|
+
/** The media's accessible name. */
|
|
87
|
+
title?: string;
|
|
88
|
+
height?: number | string;
|
|
89
|
+
children?: React.ReactNode;
|
|
90
|
+
dataTestId?: string;
|
|
91
|
+
testID?: string;
|
|
92
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CardBaseProps } from './Card.base';
|
|
2
2
|
|
|
3
3
|
type CardDefaultedKeys =
|
|
4
4
|
| 'variant'
|
|
@@ -8,9 +8,15 @@ type CardDefaultedKeys =
|
|
|
8
8
|
| 'borderRadius'
|
|
9
9
|
| 'loading';
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Generic over the renderer's own props: the web and the native `Card` pass
|
|
13
|
+
* different handler types (and different style props) through, and both come
|
|
14
|
+
* back out untouched.
|
|
15
|
+
*/
|
|
16
|
+
type ResolvedCardProps<P extends CardBaseProps> = P &
|
|
17
|
+
Required<Pick<CardBaseProps, CardDefaultedKeys>>;
|
|
12
18
|
|
|
13
|
-
const CARD_DEFAULTS: Pick<
|
|
19
|
+
const CARD_DEFAULTS: Required<Pick<CardBaseProps, CardDefaultedKeys>> = {
|
|
14
20
|
variant: 'elevated',
|
|
15
21
|
interactive: false,
|
|
16
22
|
glow: false,
|
|
@@ -21,10 +27,10 @@ const CARD_DEFAULTS: Pick<CardProps, CardDefaultedKeys> = {
|
|
|
21
27
|
|
|
22
28
|
// Strips explicitly-undefined props before the merge, so `glow={undefined}` still
|
|
23
29
|
// falls back to the default exactly as a destructuring default would.
|
|
24
|
-
const definedProps = (props:
|
|
30
|
+
const definedProps = <P extends CardBaseProps>(props: P): Partial<P> =>
|
|
25
31
|
Object.fromEntries(
|
|
26
32
|
Object.entries(props).filter(([, value]) => value !== undefined),
|
|
27
|
-
) as Partial<
|
|
33
|
+
) as Partial<P>;
|
|
28
34
|
|
|
29
|
-
export const resolveCardProps = (props:
|
|
30
|
-
({ ...CARD_DEFAULTS, ...definedProps(props) }) as ResolvedCardProps
|
|
35
|
+
export const resolveCardProps = <P extends CardBaseProps>(props: P): ResolvedCardProps<P> =>
|
|
36
|
+
({ ...CARD_DEFAULTS, ...definedProps(props) }) as ResolvedCardProps<P>;
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import type { ViewStyle } from 'react-native';
|
|
2
|
+
|
|
3
|
+
import type { CardBorderRadius, CardVariant } from './Card.base';
|
|
4
|
+
import {
|
|
5
|
+
CARD_BORDER_WIDTH,
|
|
6
|
+
CARD_GLASS,
|
|
7
|
+
CARD_GLOW,
|
|
8
|
+
CARD_GRADIENT,
|
|
9
|
+
CARD_LOADING,
|
|
10
|
+
CARD_NEUMORPHIC,
|
|
11
|
+
CARD_PAPER_SHADOW,
|
|
12
|
+
CARD_RADIUS_FULL,
|
|
13
|
+
CARD_RADIUS_UNITS,
|
|
14
|
+
CARD_SECTION_BACKGROUND,
|
|
15
|
+
neumorphicShadows,
|
|
16
|
+
} from './Card.metrics';
|
|
17
|
+
import { alpha } from '../../../tokens/color';
|
|
18
|
+
import { BLACK, WHITE, drop, halo, type UiShadow } from '../../../tokens/shadow';
|
|
19
|
+
import type { UiTheme } from '../../../tokens/theme';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* WHAT THE NATIVE `Card` PAINTS — the arithmetic, with no JSX in sight.
|
|
23
|
+
*
|
|
24
|
+
* The web builds one `sx` object by spreading base, `interactive`, `glow`,
|
|
25
|
+
* `pulse` and finally the variant's own surface over each other; whichever
|
|
26
|
+
* wrote a property last wins. The composition here spreads the SAME things in
|
|
27
|
+
* the SAME order, which is why `glow` shows through an `elevated` card (whose
|
|
28
|
+
* surface declares no shadow) and is buried by a `glass` one (whose surface
|
|
29
|
+
* does) on both renderers.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/** The named radius as a length. `full` stays a percentage of the box. */
|
|
33
|
+
export function cardRadius(theme: UiTheme, radius: CardBorderRadius): number | string {
|
|
34
|
+
if (radius === 'full') return CARD_RADIUS_FULL;
|
|
35
|
+
return theme.spacing(CARD_RADIUS_UNITS[radius] ?? CARD_RADIUS_UNITS.md);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
interface Surface {
|
|
39
|
+
surface: ViewStyle;
|
|
40
|
+
/** What the web changes on `:hover`; native applies it while pressed. */
|
|
41
|
+
hover: ViewStyle;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function glassSurface(theme: UiTheme, lifted: boolean): Surface {
|
|
45
|
+
return {
|
|
46
|
+
surface: {
|
|
47
|
+
backgroundColor: alpha(theme.palette.background.paper, CARD_GLASS.backgroundAlpha.rest),
|
|
48
|
+
borderWidth: CARD_BORDER_WIDTH,
|
|
49
|
+
borderStyle: 'solid',
|
|
50
|
+
borderColor: alpha(theme.palette.primary.main, CARD_GLASS.borderAlpha.rest),
|
|
51
|
+
boxShadow: drop(
|
|
52
|
+
CARD_GLASS.shadow.offsetY,
|
|
53
|
+
CARD_GLASS.shadow.blurRadius,
|
|
54
|
+
alpha(BLACK, CARD_GLASS.shadow.alpha),
|
|
55
|
+
),
|
|
56
|
+
},
|
|
57
|
+
hover: {
|
|
58
|
+
backgroundColor: alpha(
|
|
59
|
+
theme.palette.background.paper,
|
|
60
|
+
lifted ? CARD_GLASS.backgroundAlpha.lifted : CARD_GLASS.backgroundAlpha.rest,
|
|
61
|
+
),
|
|
62
|
+
borderColor: alpha(theme.palette.primary.main, CARD_GLASS.borderAlpha.lifted),
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function neumorphicSurface(theme: UiTheme, lifted: boolean): Surface {
|
|
68
|
+
const { dark, light } = CARD_NEUMORPHIC.alpha;
|
|
69
|
+
const pair = (raised: boolean): UiShadow[] =>
|
|
70
|
+
theme.mode === 'dark'
|
|
71
|
+
? neumorphicShadows(raised, alpha(BLACK, dark.near), alpha(WHITE, dark.far))
|
|
72
|
+
: neumorphicShadows(
|
|
73
|
+
raised,
|
|
74
|
+
alpha(theme.palette.grey[400], raised ? light.near.lifted : light.near.rest),
|
|
75
|
+
alpha(WHITE, raised ? light.far.lifted : light.far.rest),
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
return {
|
|
79
|
+
surface: {
|
|
80
|
+
backgroundColor: theme.mode === 'dark' ? theme.palette.grey[800] : theme.palette.grey[100],
|
|
81
|
+
boxShadow: pair(false),
|
|
82
|
+
borderWidth: 0,
|
|
83
|
+
},
|
|
84
|
+
hover: { boxShadow: pair(lifted) },
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function sectionSurface(theme: UiTheme, lifted: boolean): Surface {
|
|
89
|
+
const wash = CARD_SECTION_BACKGROUND[theme.mode === 'dark' ? 'dark' : 'light'];
|
|
90
|
+
return {
|
|
91
|
+
surface: { backgroundColor: wash.rest, borderWidth: 0, boxShadow: undefined },
|
|
92
|
+
hover: { backgroundColor: lifted ? wash.lifted : wash.rest },
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Each variant's resting surface and whatever it changes on hover — the same
|
|
98
|
+
* split `Card.styles.ts` makes, in React Native's property names.
|
|
99
|
+
*
|
|
100
|
+
* `gradient` is the one honest gap: React Native core has no gradient fill, so
|
|
101
|
+
* it paints the gradient's FIRST stop. The parity ledger records it.
|
|
102
|
+
*/
|
|
103
|
+
export function cardSurface(theme: UiTheme, variant: CardVariant, lifted: boolean): Surface {
|
|
104
|
+
switch (variant) {
|
|
105
|
+
case 'outlined':
|
|
106
|
+
return {
|
|
107
|
+
surface: {
|
|
108
|
+
borderWidth: CARD_BORDER_WIDTH,
|
|
109
|
+
borderStyle: 'solid',
|
|
110
|
+
borderColor: theme.palette.divider,
|
|
111
|
+
boxShadow: undefined,
|
|
112
|
+
},
|
|
113
|
+
hover: { borderColor: lifted ? theme.palette.primary.main : theme.palette.divider },
|
|
114
|
+
};
|
|
115
|
+
case 'glass':
|
|
116
|
+
return glassSurface(theme, lifted);
|
|
117
|
+
case 'gradient':
|
|
118
|
+
return {
|
|
119
|
+
surface: {
|
|
120
|
+
backgroundColor: theme.palette.primary.main,
|
|
121
|
+
boxShadow: drop(
|
|
122
|
+
CARD_GRADIENT.shadow.offsetY,
|
|
123
|
+
CARD_GRADIENT.shadow.blurRadius,
|
|
124
|
+
alpha(theme.palette.primary.main, CARD_GRADIENT.shadow.alpha),
|
|
125
|
+
),
|
|
126
|
+
},
|
|
127
|
+
hover: {
|
|
128
|
+
backgroundColor: lifted ? theme.palette.primary.dark : theme.palette.primary.main,
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
case 'neumorphic':
|
|
132
|
+
return neumorphicSurface(theme, lifted);
|
|
133
|
+
case 'section':
|
|
134
|
+
return sectionSurface(theme, lifted);
|
|
135
|
+
default:
|
|
136
|
+
// `elevated` declares only MUI's inert `elevation`, so the paper shadow
|
|
137
|
+
// the base laid down (or a `glow` over it) is what shows.
|
|
138
|
+
return { surface: {}, hover: {} };
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/** The ink a card's own text inherits: `gradient` flips it, everything else is body ink. */
|
|
143
|
+
export const cardInk = (theme: UiTheme, variant: CardVariant): string =>
|
|
144
|
+
variant === 'gradient' ? theme.palette.primary.contrastText : theme.palette.text.primary;
|
|
145
|
+
|
|
146
|
+
export interface CardLookArgs {
|
|
147
|
+
variant: CardVariant;
|
|
148
|
+
interactive: boolean;
|
|
149
|
+
glow: boolean;
|
|
150
|
+
pulse: boolean;
|
|
151
|
+
loading: boolean;
|
|
152
|
+
borderRadius: CardBorderRadius;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export interface CardLook {
|
|
156
|
+
container: ViewStyle;
|
|
157
|
+
/** Applied while pressed, standing in for the web's `:hover`. */
|
|
158
|
+
pressed: ViewStyle;
|
|
159
|
+
radius: number | string;
|
|
160
|
+
ink: string;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Everything the card paints, decided once per render.
|
|
165
|
+
*
|
|
166
|
+
* `overflow` is the one place native needs a rule the web does not. MUI's
|
|
167
|
+
* `Card` clips its children, and the pulse ring has to reach 15px past the
|
|
168
|
+
* edge — but a view's own shadow is clipped by its own overflow on a device,
|
|
169
|
+
* so a `glow` the caller asked for would simply not paint. Both decorations
|
|
170
|
+
* therefore turn the clip off, exactly as `Button.native.tsx` does.
|
|
171
|
+
*/
|
|
172
|
+
export function cardLook(theme: UiTheme, a: CardLookArgs): CardLook {
|
|
173
|
+
const radius = cardRadius(theme, a.borderRadius);
|
|
174
|
+
const chosen = cardSurface(theme, a.variant, a.interactive);
|
|
175
|
+
|
|
176
|
+
const base: ViewStyle = {
|
|
177
|
+
position: 'relative',
|
|
178
|
+
borderRadius: radius,
|
|
179
|
+
backgroundColor: theme.palette.background.paper,
|
|
180
|
+
overflow: a.pulse || a.glow ? 'visible' : 'hidden',
|
|
181
|
+
opacity: a.loading ? CARD_LOADING.opacity : 1,
|
|
182
|
+
pointerEvents: a.loading ? 'none' : 'auto',
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
return {
|
|
186
|
+
radius,
|
|
187
|
+
ink: cardInk(theme, a.variant),
|
|
188
|
+
container: {
|
|
189
|
+
...base,
|
|
190
|
+
boxShadow: CARD_PAPER_SHADOW,
|
|
191
|
+
...(a.interactive ? { cursor: 'pointer' } : null),
|
|
192
|
+
...(a.glow
|
|
193
|
+
? { boxShadow: halo(CARD_GLOW.rest.blurRadius, alpha(theme.palette.primary.main, CARD_GLOW.rest.alpha)) }
|
|
194
|
+
: null),
|
|
195
|
+
...chosen.surface,
|
|
196
|
+
},
|
|
197
|
+
pressed: {
|
|
198
|
+
...(a.glow
|
|
199
|
+
? { boxShadow: halo(CARD_GLOW.lifted.blurRadius, alpha(theme.palette.primary.main, CARD_GLOW.lifted.alpha)) }
|
|
200
|
+
: null),
|
|
201
|
+
...chosen.hover,
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import type { CardBorderRadius } from './Card.base';
|
|
2
|
+
import type { UiShadow } from '../../../tokens/shadow';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* THE NUMBERS BOTH `Card` RENDERERS DRAW WITH.
|
|
6
|
+
*
|
|
7
|
+
* `Card.styles.ts` (web, emotion over MUI) and `Card.native.tsx` /
|
|
8
|
+
* `Card.look.native.ts` (React Native) read this one table. The web turns the
|
|
9
|
+
* radii into `theme.spacing()` and the shadows into CSS strings (`shadowCss`
|
|
10
|
+
* in `src/tokens/shadow.ts` writes exactly the text it always has); native
|
|
11
|
+
* hands the same shadow objects to `boxShadow` and the same numbers to a
|
|
12
|
+
* `StyleSheet`.
|
|
13
|
+
*
|
|
14
|
+
* Nothing here imports a renderer, a theme or a colour: a shadow's COLOUR is
|
|
15
|
+
* the caller's, because the two sides reach for the same arithmetic through
|
|
16
|
+
* different doors (`alpha` from `@mui/material/styles` on the web, from
|
|
17
|
+
* `src/tokens/color` natively — a port of it, asserted equal).
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/* ── The envelope ─────────────────────────────────────────────────────────── */
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* `theme.spacing(n)` per named radius. `none` is written as a bare `0` by the
|
|
24
|
+
* web rather than `spacing(0)`, so it is spelled that way on both sides.
|
|
25
|
+
*/
|
|
26
|
+
export const CARD_RADIUS_UNITS: Record<Exclude<CardBorderRadius, 'full'>, number> = {
|
|
27
|
+
none: 0,
|
|
28
|
+
sm: 0.5,
|
|
29
|
+
md: 1,
|
|
30
|
+
lg: 2,
|
|
31
|
+
xl: 3,
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/** `full` is a percentage of the box, not a length. */
|
|
35
|
+
export const CARD_RADIUS_FULL = '50%';
|
|
36
|
+
|
|
37
|
+
/** The hairline `outlined` and `glass` draw. */
|
|
38
|
+
export const CARD_BORDER_WIDTH = 1;
|
|
39
|
+
|
|
40
|
+
/* ── Shadows ──────────────────────────────────────────────────────────────── */
|
|
41
|
+
|
|
42
|
+
/** A card's shadows are `UiShadow`s; `src/tokens/shadow.ts` says why they have a shape. */
|
|
43
|
+
export type CardShadow = UiShadow;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* MUI's `theme.shadows[1]` — the elevation a `Paper` paints and therefore the
|
|
47
|
+
* shadow every `elevated` card on the web already has.
|
|
48
|
+
*
|
|
49
|
+
* It is restated here rather than derived because the web never names it: it
|
|
50
|
+
* arrives through `MuiCard` -> `MuiPaper`, and React Native has no Paper to
|
|
51
|
+
* inherit it from. (`variant="elevated"`'s own `elevation: 4` is not a CSS
|
|
52
|
+
* property and paints nothing — see {@link CARD_ELEVATION}.)
|
|
53
|
+
*/
|
|
54
|
+
export const CARD_PAPER_SHADOW: readonly UiShadow[] = [
|
|
55
|
+
{ offsetX: 0, offsetY: 2, blurRadius: 1, spreadDistance: -1, color: 'rgba(0, 0, 0, 0.2)' },
|
|
56
|
+
{ offsetX: 0, offsetY: 1, blurRadius: 1, spreadDistance: 0, color: 'rgba(0, 0, 0, 0.14)' },
|
|
57
|
+
{ offsetX: 0, offsetY: 1, blurRadius: 3, spreadDistance: 0, color: 'rgba(0, 0, 0, 0.12)' },
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* What `elevated` declares at rest and on hover.
|
|
62
|
+
*
|
|
63
|
+
* `elevation` is not a CSS property, so on the web these paint NOTHING and an
|
|
64
|
+
* elevated card shows `MuiPaper`'s own elevation-1 shadow. Kept because they
|
|
65
|
+
* are what the source says, and mirrored natively by leaving
|
|
66
|
+
* {@link CARD_PAPER_SHADOW} in place for both states.
|
|
67
|
+
*/
|
|
68
|
+
export const CARD_ELEVATION = { rest: 4, lifted: 8 } as const;
|
|
69
|
+
|
|
70
|
+
/* ── Variant surfaces ─────────────────────────────────────────────────────── */
|
|
71
|
+
|
|
72
|
+
/** `glass`: a 0.1 wash of the paper behind a 20px blur, inside a primary hairline. */
|
|
73
|
+
export const CARD_GLASS = {
|
|
74
|
+
backgroundAlpha: { rest: 0.1, lifted: 0.15 },
|
|
75
|
+
borderAlpha: { rest: 0.2, lifted: 0.3 },
|
|
76
|
+
blurPx: 20,
|
|
77
|
+
shadow: { offsetY: 8, blurRadius: 32, alpha: 0.1 },
|
|
78
|
+
} as const;
|
|
79
|
+
|
|
80
|
+
/** `gradient`: primary into secondary at 135°, over a hue-tinted drop shadow. */
|
|
81
|
+
export const CARD_GRADIENT = {
|
|
82
|
+
angleDeg: 135,
|
|
83
|
+
shadow: { offsetY: 4, blurRadius: 20, alpha: 0.3 },
|
|
84
|
+
} as const;
|
|
85
|
+
|
|
86
|
+
/** `neumorphic`: two opposed shadows, blurred twice their offset. */
|
|
87
|
+
export const CARD_NEUMORPHIC = {
|
|
88
|
+
spread: { rest: 8, lifted: 12 },
|
|
89
|
+
blurFactor: 2,
|
|
90
|
+
alpha: {
|
|
91
|
+
dark: { near: 0.3, far: 0.1 },
|
|
92
|
+
light: { near: { rest: 0.2, lifted: 0.3 }, far: { rest: 0.8, lifted: 0.9 } },
|
|
93
|
+
},
|
|
94
|
+
} as const;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* The offset pair `neumorphic` paints, given the two colours the mode picked:
|
|
98
|
+
* `near` down-right, `far` up-left, both blurred twice the offset.
|
|
99
|
+
*/
|
|
100
|
+
export function neumorphicShadows(lifted: boolean, near: string, far: string): UiShadow[] {
|
|
101
|
+
const spread = lifted ? CARD_NEUMORPHIC.spread.lifted : CARD_NEUMORPHIC.spread.rest;
|
|
102
|
+
const blurRadius = spread * CARD_NEUMORPHIC.blurFactor;
|
|
103
|
+
return [
|
|
104
|
+
{ offsetX: spread, offsetY: spread, blurRadius, spreadDistance: 0, color: near },
|
|
105
|
+
{ offsetX: -spread, offsetY: -spread, blurRadius, spreadDistance: 0, color: far },
|
|
106
|
+
];
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* `section`: a flat ink wash rather than a palette slot, so a section reads as
|
|
111
|
+
* a recess in whatever surface it sits on.
|
|
112
|
+
*/
|
|
113
|
+
export const CARD_SECTION_BACKGROUND = {
|
|
114
|
+
dark: { rest: 'rgba(0, 0, 0, 0.2)', lifted: 'rgba(0, 0, 0, 0.25)' },
|
|
115
|
+
light: { rest: 'rgba(0, 0, 0, 0.02)', lifted: 'rgba(0, 0, 0, 0.04)' },
|
|
116
|
+
} as const;
|
|
117
|
+
|
|
118
|
+
/* ── Decorations ──────────────────────────────────────────────────────────── */
|
|
119
|
+
|
|
120
|
+
/** `glow`: a haloed primary shadow that widens under the pointer. */
|
|
121
|
+
export const CARD_GLOW = {
|
|
122
|
+
rest: { blurRadius: 20, alpha: 0.3 },
|
|
123
|
+
lifted: { blurRadius: 30, alpha: 0.4 },
|
|
124
|
+
} as const;
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* `pulse`: a ring of the primary hue that grows 15px out of the card's edge and
|
|
128
|
+
* fades, every two seconds. The web draws it as an `::after` box-shadow spread
|
|
129
|
+
* behind the paper (`z-index: -1`).
|
|
130
|
+
*/
|
|
131
|
+
export const CARD_PULSE = {
|
|
132
|
+
alpha: 0.3,
|
|
133
|
+
durationMs: 2000,
|
|
134
|
+
spread: 15,
|
|
135
|
+
/** The fraction of the cycle the ring is still visible for. */
|
|
136
|
+
fadeAt: 0.7,
|
|
137
|
+
zIndex: -1,
|
|
138
|
+
} as const;
|
|
139
|
+
|
|
140
|
+
/** `interactive`: the card rises 2px under the pointer and settles while pressed. */
|
|
141
|
+
export const CARD_INTERACTIVE_LIFT = 2;
|
|
142
|
+
|
|
143
|
+
/** `loading`: the card dims, stops taking pointers and centres a spinner over itself. */
|
|
144
|
+
export const CARD_LOADING = { opacity: 0.6, spinnerZIndex: 10, spinnerSize: 40 } as const;
|
|
145
|
+
|
|
146
|
+
/* ── The slots ────────────────────────────────────────────────────────────── */
|
|
147
|
+
|
|
148
|
+
/** `CardContent`: `theme.spacing(2)`, halved by `dense`. */
|
|
149
|
+
export const CARD_CONTENT_PADDING_UNITS = { normal: 2, dense: 1 } as const;
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* `CardHeader`, in MUI's own px: 16 all round, the avatar 16 from the content,
|
|
153
|
+
* the action pulled back out of the padding on three sides.
|
|
154
|
+
*/
|
|
155
|
+
export const CARD_HEADER = {
|
|
156
|
+
padding: 16,
|
|
157
|
+
avatarGap: 16,
|
|
158
|
+
action: { marginTop: -4, marginRight: -8, marginBottom: -4 },
|
|
159
|
+
} as const;
|
|
160
|
+
|
|
161
|
+
/** A `CardHeader` given raw `children` is a plain `theme.spacing(2)` box instead. */
|
|
162
|
+
export const CARD_HEADER_CHILDREN_PADDING_UNITS = 2;
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* `CardActions`, in MUI's own px: 8 all round, and 8 between the actions unless
|
|
166
|
+
* `disableSpacing` turns the run off.
|
|
167
|
+
*/
|
|
168
|
+
export const CARD_ACTIONS = { padding: 8, gap: 8 } as const;
|
|
169
|
+
|
|
170
|
+
/** `CardMedia`'s default height. */
|
|
171
|
+
export const CARD_MEDIA_HEIGHT = 200;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
ActivityIndicator,
|
|
4
|
+
Platform,
|
|
5
|
+
Pressable,
|
|
6
|
+
StyleSheet,
|
|
7
|
+
View,
|
|
8
|
+
type GestureResponderEvent,
|
|
9
|
+
type PressableStateCallbackType,
|
|
10
|
+
type StyleProp,
|
|
11
|
+
type ViewStyle,
|
|
12
|
+
} from 'react-native';
|
|
13
|
+
|
|
14
|
+
import { resolveCardProps } from './Card.helpers';
|
|
15
|
+
import { cardLook } from './Card.look.native';
|
|
16
|
+
import { CARD_LOADING, CARD_PULSE } from './Card.metrics';
|
|
17
|
+
import { CardInkContext } from './CardParts.native';
|
|
18
|
+
import type { CardProps } from './Card.types.native';
|
|
19
|
+
import { PulseRing } from '../../../platform/pulse-ring.native';
|
|
20
|
+
import { childTestId, resolveTestId, withoutTestIdProps } from '../../../platform/test-id';
|
|
21
|
+
import { renderTextChildren } from '../../../platform/text-children';
|
|
22
|
+
import { useUiTheme } from '../../../provider/use-ui-theme.native';
|
|
23
|
+
import { muiTypeStyle } from '../../../tokens/mui-type';
|
|
24
|
+
|
|
25
|
+
// The shared stories import all five names from `./Card`, which resolves here
|
|
26
|
+
// under Metro and in the native Storybook; the slots live in their own file to
|
|
27
|
+
// keep this one about the envelope, and are re-exported so that import works.
|
|
28
|
+
export { CardActions, CardContent, CardHeader, CardMedia } from './CardParts.native';
|
|
29
|
+
|
|
30
|
+
/** The spinner a loading card centres over itself; `role` comes from `ActivityIndicator`. */
|
|
31
|
+
function Spinner({ color, testID }: { color: string; testID: string }): React.JSX.Element {
|
|
32
|
+
return (
|
|
33
|
+
<View testID={testID} style={[styles.spinner, { zIndex: CARD_LOADING.spinnerZIndex }]}>
|
|
34
|
+
<ActivityIndicator
|
|
35
|
+
size={Platform.OS === 'ios' ? 'large' : CARD_LOADING.spinnerSize}
|
|
36
|
+
color={color}
|
|
37
|
+
/>
|
|
38
|
+
</View>
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export const Card = React.forwardRef<View, CardProps>((rawProps, ref) => {
|
|
43
|
+
const resolved = resolveCardProps(rawProps);
|
|
44
|
+
const { children, loading, pulse, onClick, onPress, onFocus, onBlur, ...others } = resolved;
|
|
45
|
+
const theme = useUiTheme();
|
|
46
|
+
const look = cardLook(theme, resolved);
|
|
47
|
+
|
|
48
|
+
const testID = resolveTestId(others, 'card');
|
|
49
|
+
const idFor = (suffix: string): string => childTestId(others, suffix, 'card');
|
|
50
|
+
const rest = withoutTestIdProps(others);
|
|
51
|
+
// `cardLook` consumed these, and the reserved ones paint nothing on either
|
|
52
|
+
// renderer; none of them is a `View` prop.
|
|
53
|
+
const {
|
|
54
|
+
variant: _variant,
|
|
55
|
+
interactive,
|
|
56
|
+
glow: _glow,
|
|
57
|
+
borderRadius: _borderRadius,
|
|
58
|
+
style,
|
|
59
|
+
expandable: _expandable,
|
|
60
|
+
expanded: _expanded,
|
|
61
|
+
onExpandToggle: _onExpandToggle,
|
|
62
|
+
entranceAnimation: _entranceAnimation,
|
|
63
|
+
animationDelay: _animationDelay,
|
|
64
|
+
skeleton: _skeleton,
|
|
65
|
+
hoverScale: _hoverScale,
|
|
66
|
+
...viewProps
|
|
67
|
+
} = rest;
|
|
68
|
+
|
|
69
|
+
// A loading card is inert: no handler fires and pointer events are off, so a
|
|
70
|
+
// half-rendered card cannot be pressed through. Same rule as the web.
|
|
71
|
+
const idle = !loading;
|
|
72
|
+
const handlePress = (event: GestureResponderEvent): void => {
|
|
73
|
+
onClick?.(event);
|
|
74
|
+
onPress?.(event);
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
// The ink goes to the SLOTS through context and to bare text children
|
|
78
|
+
// directly: on the web one `color` on the card covers both, because CSS
|
|
79
|
+
// inherits and React Native does not.
|
|
80
|
+
const body = (
|
|
81
|
+
<CardInkContext.Provider value={look.ink}>
|
|
82
|
+
{pulse ? (
|
|
83
|
+
<PulseRing
|
|
84
|
+
color={theme.palette.primary.main}
|
|
85
|
+
radius={look.radius}
|
|
86
|
+
spread={CARD_PULSE.spread}
|
|
87
|
+
durationMs={CARD_PULSE.durationMs}
|
|
88
|
+
fadeAt={CARD_PULSE.fadeAt}
|
|
89
|
+
opacity={CARD_PULSE.alpha}
|
|
90
|
+
testID={idFor('pulse')}
|
|
91
|
+
/>
|
|
92
|
+
) : null}
|
|
93
|
+
{loading ? <Spinner color={theme.palette.primary.main} testID={idFor('loading')} /> : null}
|
|
94
|
+
{renderTextChildren(children, { ...muiTypeStyle(theme, 'body1'), color: look.ink })}
|
|
95
|
+
</CardInkContext.Provider>
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
const shared = { testID, onFocus: idle ? onFocus : undefined, onBlur: idle ? onBlur : undefined };
|
|
99
|
+
|
|
100
|
+
if (!interactive && !onClick && !onPress) {
|
|
101
|
+
return (
|
|
102
|
+
<View ref={ref} style={[look.container, style]} {...shared} {...viewProps}>
|
|
103
|
+
{body}
|
|
104
|
+
</View>
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const container = ({ pressed }: PressableStateCallbackType): StyleProp<ViewStyle> => [
|
|
109
|
+
look.container,
|
|
110
|
+
pressed && idle ? look.pressed : null,
|
|
111
|
+
style,
|
|
112
|
+
];
|
|
113
|
+
|
|
114
|
+
return (
|
|
115
|
+
<Pressable ref={ref} style={container} onPress={idle ? handlePress : undefined} {...shared} {...viewProps}>
|
|
116
|
+
{body}
|
|
117
|
+
</Pressable>
|
|
118
|
+
);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
Card.displayName = 'Card';
|
|
122
|
+
|
|
123
|
+
const styles = StyleSheet.create({
|
|
124
|
+
spinner: {
|
|
125
|
+
...StyleSheet.absoluteFillObject,
|
|
126
|
+
alignItems: 'center',
|
|
127
|
+
justifyContent: 'center',
|
|
128
|
+
pointerEvents: 'none',
|
|
129
|
+
},
|
|
130
|
+
});
|