@12-apps/ui 6.56.1 → 6.58.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 +2 -2
- package/components-catalog.md +2 -2
- package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
- package/dist/_internal/components/data-display/Badge/Badge.js +2 -2
- 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/DataViewsGrid.js +18 -18
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +26 -25
- package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +3 -3
- package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +3 -3
- package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +5 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +45 -0
- package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js.map +1 -0
- 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 +5 -4
- package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +17 -17
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-selection-extra.js +3 -1
- package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-url-echo.js +13 -0
- package/dist/_internal/components/data-display/DataViews/data-views-url-echo.js.map +1 -0
- package/dist/_internal/components/data-display/DataViews/list-card-rails.js +1 -1
- package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +1 -1
- package/dist/_internal/components/data-display/Progress/Progress.js +1 -1
- package/dist/_internal/components/data-display/index.js +15 -15
- package/dist/_internal/components/feedback/Dialog/Dialog.js +2 -2
- package/dist/_internal/components/feedback/Dialog/Dialog.styles.js +1 -1
- package/dist/_internal/components/feedback/index.js +2 -2
- package/dist/_internal/components/index.js +35 -35
- package/dist/_internal/components/layout/ContentToolbar/ContentToolbar.js +1 -1
- package/dist/_internal/components/layout/SettingCard/SettingCard.js +5 -5
- package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +3 -3
- package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js +4 -4
- package/dist/_internal/components/layout/SettingCard/SettingGrid.js +4 -4
- package/dist/_internal/components/layout/SettingCard/SettingGroup.js +6 -6
- package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +5 -5
- package/dist/_internal/components/layout/SettingCard/SettingToggle.js +6 -6
- package/dist/_internal/components/layout/index.js +10 -10
- package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +3 -3
- package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +6 -6
- package/dist/_internal/components/navigation/SectionNav/SectionNav.js +9 -9
- package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js +3 -3
- package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js +4 -4
- package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js +5 -5
- package/dist/_internal/components/navigation/SectionNav/SectionNav.railCreate.js +4 -4
- package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +4 -4
- package/dist/_internal/components/navigation/index.js +12 -12
- package/dist/_internal/en-US.data-display.js +1 -1
- package/dist/_internal/icons/Icon.js +2 -2
- package/dist/_internal/icons/paths.generated.js +1 -1
- package/dist/_internal/pt-BR.data-display.js +1 -1
- package/dist/_internal/user-avatar/user-avatar.js +3 -3
- package/dist/charts.js +6 -6
- package/dist/{chunk-MKAA3YIJ.js → chunk-3K7WN2PO.js} +3 -3
- package/dist/{chunk-CLC4VIOF.js → chunk-4PYEDDYV.js} +2 -2
- package/dist/{chunk-573XC4HK.js → chunk-4QKS5Y35.js} +2 -2
- package/dist/{chunk-KX75HM5U.js → chunk-5YDS6HO3.js} +7 -2
- package/dist/{chunk-KX75HM5U.js.map → chunk-5YDS6HO3.js.map} +1 -1
- package/dist/{chunk-N4MR4EMC.js → chunk-6D2PFC5C.js} +2 -2
- package/dist/{chunk-JWXGZ4VM.js → chunk-6J27G2HT.js} +2 -2
- package/dist/{chunk-LJKWWXZD.js → chunk-6OSUK2C7.js} +28 -22
- package/dist/chunk-6OSUK2C7.js.map +1 -0
- package/dist/{chunk-ICSXPZXT.js → chunk-6QBT5TPS.js} +2 -2
- package/dist/{chunk-C67FDYG7.js → chunk-7CWZI6MQ.js} +5 -5
- package/dist/{chunk-WGFHZNFR.js → chunk-AEIJSEVV.js} +4 -1
- package/dist/{chunk-WGFHZNFR.js.map → chunk-AEIJSEVV.js.map} +1 -1
- package/dist/{chunk-JL77BSOL.js → chunk-AQI3UK6P.js} +2 -2
- package/dist/{chunk-A6EUQDRK.js → chunk-ARJIKW56.js} +4 -2
- package/dist/chunk-ARJIKW56.js.map +1 -0
- package/dist/{chunk-6E4XNOAC.js → chunk-CCCILWYZ.js} +4 -4
- package/dist/{chunk-GI24X7XA.js → chunk-DZIRCD2W.js} +2 -2
- package/dist/{chunk-53ACGKBW.js → chunk-EDBP62WG.js} +3 -3
- package/dist/{chunk-YXIVQFNW.js → chunk-EWIKSTJV.js} +4 -4
- package/dist/{chunk-LWZ2K225.js → chunk-FXZUVZON.js} +6 -6
- package/dist/chunk-G6EJLEVV.js +75 -0
- package/dist/chunk-G6EJLEVV.js.map +1 -0
- package/dist/{chunk-IK2ZVV3M.js → chunk-GK7JNSMK.js} +2 -2
- package/dist/{chunk-Y2HCYT5W.js → chunk-GRRW5NSR.js} +2 -2
- package/dist/{chunk-NZZ2BTIK.js → chunk-H7R6UKOE.js} +2 -2
- package/dist/{chunk-HFBQCJNP.js → chunk-HCYRCU4W.js} +2 -2
- package/dist/{chunk-C3BRCCHG.js → chunk-HH7PM5HT.js} +12 -24
- package/dist/chunk-HH7PM5HT.js.map +1 -0
- package/dist/{chunk-7AAJYWC3.js → chunk-HPO7PB4F.js} +2 -2
- package/dist/{chunk-WF3P7GE5.js → chunk-I3CQBEKS.js} +2 -2
- package/dist/{chunk-RREWYOKS.js → chunk-IL4FCC54.js} +2 -2
- package/dist/{chunk-7M3DRP7Q.js → chunk-ILNO4ZJ6.js} +3 -3
- package/dist/{chunk-AL3Z24VG.js → chunk-ILQVNZ5B.js} +2 -2
- package/dist/{chunk-5PN5MY2X.js → chunk-INQO5AYV.js} +3 -3
- package/dist/{chunk-2DV64INT.js → chunk-KEDZTZCV.js} +2 -2
- package/dist/{chunk-2CJZLL5Y.js → chunk-NHVL2QPG.js} +2 -1
- package/dist/{chunk-2CJZLL5Y.js.map → chunk-NHVL2QPG.js.map} +1 -1
- package/dist/{chunk-45PGSVOH.js → chunk-NTJUAPJM.js} +10 -8
- package/dist/chunk-NTJUAPJM.js.map +1 -0
- package/dist/{chunk-EUPUEMFX.js → chunk-PC4H5LVB.js} +7 -7
- package/dist/{chunk-44JLXXWQ.js → chunk-PPITQH3C.js} +2 -2
- package/dist/{chunk-KEKOPD43.js → chunk-PQ7RWH7L.js} +4 -2
- package/dist/chunk-PQ7RWH7L.js.map +1 -0
- package/dist/{chunk-HRMB72E4.js → chunk-QHP5PZNC.js} +2 -1
- package/dist/{chunk-HRMB72E4.js.map → chunk-QHP5PZNC.js.map} +1 -1
- package/dist/{chunk-GNBCSTXF.js → chunk-QKAYXAQE.js} +6 -6
- package/dist/{chunk-GNBCSTXF.js.map → chunk-QKAYXAQE.js.map} +1 -1
- package/dist/{chunk-JC244QQF.js → chunk-SEWUYHSG.js} +2 -2
- package/dist/{chunk-TZFBJ47T.js → chunk-SFLNHCA2.js} +39 -15
- package/dist/chunk-SFLNHCA2.js.map +1 -0
- package/dist/{chunk-OBMPE6PW.js → chunk-SSDYEOU4.js} +5 -5
- package/dist/{chunk-I6ESCBY3.js → chunk-TF27Z27K.js} +2 -2
- package/dist/{chunk-JF5LQOGB.js → chunk-U47KRLEW.js} +57 -45
- package/dist/chunk-U47KRLEW.js.map +1 -0
- package/dist/{chunk-RBHBJDOZ.js → chunk-UEU5NSIG.js} +4 -4
- package/dist/chunk-V4V2N6YJ.js +55 -0
- package/dist/chunk-V4V2N6YJ.js.map +1 -0
- package/dist/{chunk-XTHDWW4M.js → chunk-VAY6KESM.js} +7 -4
- package/dist/chunk-VAY6KESM.js.map +1 -0
- package/dist/{chunk-5XZEGI35.js → chunk-X7HCS3HP.js} +3 -3
- package/dist/{chunk-6ZLP7BA7.js → chunk-XC7YHO7Z.js} +3 -1
- package/dist/{chunk-6ZLP7BA7.js.map → chunk-XC7YHO7Z.js.map} +1 -1
- package/dist/{chunk-T2S7NIUG.js → chunk-XE4JVTM6.js} +2 -2
- package/dist/{chunk-G76BNXWE.js → chunk-XW5SEW3H.js} +6 -6
- package/dist/{chunk-SIWXMNQT.js → chunk-YDTCM5F6.js} +4 -4
- package/dist/{chunk-46ZATLQV.js → chunk-YIKFYWKD.js} +3 -3
- package/dist/{chunk-BQGWY577.js → chunk-ZCUVZ5PR.js} +3 -3
- package/dist/{chunk-4JBS6NOT.js → chunk-ZWBGQYVO.js} +35 -6
- package/dist/chunk-ZWBGQYVO.js.map +1 -0
- package/dist/{chunk-VWW2EXH7.js → chunk-ZYJZHXFU.js} +4 -4
- package/dist/data-display/Avatar.js +2 -2
- package/dist/data-display/Badge.js +2 -2
- package/dist/data-display/CardKit.js +10 -10
- 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 +31 -29
- package/dist/data-display/Progress.js +1 -1
- package/dist/en-US.js +1 -1
- package/dist/feedback/Dialog.js +2 -2
- package/dist/icons.js +2 -2
- package/dist/layout/ContentToolbar.js +1 -1
- package/dist/layout/SettingCard.js +9 -9
- package/dist/locales.js +2 -2
- package/dist/native/chunks/{chunk-QGTZGL7P.js → chunk-BUFQXX27.js} +2 -2
- package/dist/native/chunks/{chunk-EZO2KJF7.js → chunk-JFKH5YHF.js} +3 -1
- package/dist/native/chunks/{chunk-EZO2KJF7.js.map → chunk-JFKH5YHF.js.map} +1 -1
- package/dist/native/data-display/Alert.js +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 +2 -2
- package/dist/native/data-display/ErrorState.js +1 -1
- package/dist/native/data-display/FleetMap.js +2 -2
- package/dist/native/data-display/Progress.js +11 -5
- package/dist/native/data-display/Progress.js.map +1 -1
- package/dist/native/feedback/Dialog.js +2 -1
- package/dist/native/feedback/Dialog.js.map +1 -1
- package/dist/native/form/Checkbox.js +1 -1
- package/dist/native/form/Select.js +1 -1
- package/dist/native/icons.js +1 -1
- package/dist/navigation/AppHeader.js +3 -3
- package/dist/navigation/SectionNav.js +9 -9
- package/dist/pt-BR.js +1 -1
- package/dist/types/components/data-display/DataViews/DataViewsTableBase.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/base-list-card-geometry.d.ts +29 -1
- package/dist/types/components/data-display/DataViews/base-list-card-geometry.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/base-list-card-layout.d.ts +46 -0
- package/dist/types/components/data-display/DataViews/base-list-card-layout.d.ts.map +1 -0
- package/dist/types/components/data-display/DataViews/base-list-card-slots.d.ts +5 -2
- package/dist/types/components/data-display/DataViews/base-list-card-slots.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/base-list-card.d.ts +10 -1
- package/dist/types/components/data-display/DataViews/base-list-card.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-copy.d.ts +7 -0
- package/dist/types/components/data-display/DataViews/data-views-copy.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-grid-parts.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-selection-extra.d.ts +2 -0
- package/dist/types/components/data-display/DataViews/data-views-selection-extra.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-shell-toolbar.d.ts +3 -1
- package/dist/types/components/data-display/DataViews/data-views-shell-toolbar.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts +2 -0
- package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-url-echo.d.ts +47 -0
- package/dist/types/components/data-display/DataViews/data-views-url-echo.d.ts.map +1 -0
- package/dist/types/components/data-display/DataViews/list-card-rails.d.ts +17 -2
- package/dist/types/components/data-display/DataViews/list-card-rails.d.ts.map +1 -1
- package/dist/types/components/data-display/Progress/Progress.base.d.ts +8 -0
- package/dist/types/components/data-display/Progress/Progress.base.d.ts.map +1 -1
- package/dist/types/components/data-display/Progress/Progress.d.ts.map +1 -1
- package/dist/types/components/feedback/Dialog/Dialog.base.d.ts +2 -1
- package/dist/types/components/feedback/Dialog/Dialog.base.d.ts.map +1 -1
- package/dist/types/components/feedback/Dialog/Dialog.styles.d.ts.map +1 -1
- package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts +3 -2
- package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts.map +1 -1
- package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts +14 -0
- package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts.map +1 -1
- package/dist/types/en-US.data-display.d.ts.map +1 -1
- package/dist/types/icons/paths.generated.d.ts +2 -0
- package/dist/types/icons/paths.generated.d.ts.map +1 -1
- package/dist/types/pt-BR.data-display.d.ts.map +1 -1
- package/dist/types-native/components/data-display/Progress/Progress.base.d.ts +8 -0
- package/dist/types-native/components/data-display/Progress/Progress.base.d.ts.map +1 -1
- package/dist/types-native/components/data-display/Progress/Progress.native.d.ts.map +1 -1
- package/dist/types-native/components/feedback/Dialog/Dialog.base.d.ts +2 -1
- package/dist/types-native/components/feedback/Dialog/Dialog.base.d.ts.map +1 -1
- package/dist/types-native/components/feedback/Dialog/Dialog.look.native.d.ts.map +1 -1
- package/dist/types-native/icons/paths.generated.d.ts +2 -0
- package/dist/types-native/icons/paths.generated.d.ts.map +1 -1
- package/dist/user-avatar.js +3 -3
- package/package.json +1 -1
- package/src/components/data-display/DataViews/DataViewsTableBase.tsx +7 -36
- package/src/components/data-display/DataViews/base-list-card-geometry.tsx +114 -40
- package/src/components/data-display/DataViews/base-list-card-layout.tsx +104 -0
- package/src/components/data-display/DataViews/base-list-card-slots.tsx +47 -3
- package/src/components/data-display/DataViews/base-list-card.tsx +65 -68
- package/src/components/data-display/DataViews/data-views-copy.ts +7 -0
- package/src/components/data-display/DataViews/data-views-grid-parts.tsx +2 -1
- package/src/components/data-display/DataViews/data-views-selection-extra.ts +10 -1
- package/src/components/data-display/DataViews/data-views-shell-toolbar.tsx +4 -0
- package/src/components/data-display/DataViews/data-views-toolbar.tsx +4 -0
- package/src/components/data-display/DataViews/data-views-url-echo.ts +134 -0
- package/src/components/data-display/DataViews/list-card-rails.tsx +22 -6
- package/src/components/data-display/Progress/Progress.base.ts +10 -0
- package/src/components/data-display/Progress/Progress.md +23 -0
- package/src/components/data-display/Progress/Progress.native.tsx +35 -25
- package/src/components/data-display/Progress/Progress.tsx +8 -5
- package/src/components/feedback/Dialog/Dialog.base.ts +2 -1
- package/src/components/feedback/Dialog/Dialog.look.native.ts +1 -0
- package/src/components/feedback/Dialog/Dialog.md +25 -1
- package/src/components/feedback/Dialog/Dialog.styles.ts +3 -0
- package/src/components/layout/ContentToolbar/ContentToolbar.md +5 -2
- package/src/components/layout/ContentToolbar/ContentToolbar.tsx +51 -10
- package/src/components/layout/ContentToolbar/ContentToolbar.types.ts +14 -0
- package/src/en-US.data-display.ts +1 -0
- package/src/icons/Icon.md +4 -0
- package/src/icons/glyphs.json +2 -0
- package/src/icons/paths.generated.ts +2 -0
- package/src/pt-BR.data-display.ts +1 -0
- package/dist/chunk-45PGSVOH.js.map +0 -1
- package/dist/chunk-4JBS6NOT.js.map +0 -1
- package/dist/chunk-A6EUQDRK.js.map +0 -1
- package/dist/chunk-C3BRCCHG.js.map +0 -1
- package/dist/chunk-JF5LQOGB.js.map +0 -1
- package/dist/chunk-KEKOPD43.js.map +0 -1
- package/dist/chunk-LJKWWXZD.js.map +0 -1
- package/dist/chunk-TZFBJ47T.js.map +0 -1
- package/dist/chunk-XTHDWW4M.js.map +0 -1
- /package/dist/{chunk-MKAA3YIJ.js.map → chunk-3K7WN2PO.js.map} +0 -0
- /package/dist/{chunk-CLC4VIOF.js.map → chunk-4PYEDDYV.js.map} +0 -0
- /package/dist/{chunk-573XC4HK.js.map → chunk-4QKS5Y35.js.map} +0 -0
- /package/dist/{chunk-N4MR4EMC.js.map → chunk-6D2PFC5C.js.map} +0 -0
- /package/dist/{chunk-JWXGZ4VM.js.map → chunk-6J27G2HT.js.map} +0 -0
- /package/dist/{chunk-ICSXPZXT.js.map → chunk-6QBT5TPS.js.map} +0 -0
- /package/dist/{chunk-C67FDYG7.js.map → chunk-7CWZI6MQ.js.map} +0 -0
- /package/dist/{chunk-JL77BSOL.js.map → chunk-AQI3UK6P.js.map} +0 -0
- /package/dist/{chunk-6E4XNOAC.js.map → chunk-CCCILWYZ.js.map} +0 -0
- /package/dist/{chunk-GI24X7XA.js.map → chunk-DZIRCD2W.js.map} +0 -0
- /package/dist/{chunk-53ACGKBW.js.map → chunk-EDBP62WG.js.map} +0 -0
- /package/dist/{chunk-YXIVQFNW.js.map → chunk-EWIKSTJV.js.map} +0 -0
- /package/dist/{chunk-LWZ2K225.js.map → chunk-FXZUVZON.js.map} +0 -0
- /package/dist/{chunk-IK2ZVV3M.js.map → chunk-GK7JNSMK.js.map} +0 -0
- /package/dist/{chunk-Y2HCYT5W.js.map → chunk-GRRW5NSR.js.map} +0 -0
- /package/dist/{chunk-NZZ2BTIK.js.map → chunk-H7R6UKOE.js.map} +0 -0
- /package/dist/{chunk-HFBQCJNP.js.map → chunk-HCYRCU4W.js.map} +0 -0
- /package/dist/{chunk-7AAJYWC3.js.map → chunk-HPO7PB4F.js.map} +0 -0
- /package/dist/{chunk-WF3P7GE5.js.map → chunk-I3CQBEKS.js.map} +0 -0
- /package/dist/{chunk-RREWYOKS.js.map → chunk-IL4FCC54.js.map} +0 -0
- /package/dist/{chunk-7M3DRP7Q.js.map → chunk-ILNO4ZJ6.js.map} +0 -0
- /package/dist/{chunk-AL3Z24VG.js.map → chunk-ILQVNZ5B.js.map} +0 -0
- /package/dist/{chunk-5PN5MY2X.js.map → chunk-INQO5AYV.js.map} +0 -0
- /package/dist/{chunk-2DV64INT.js.map → chunk-KEDZTZCV.js.map} +0 -0
- /package/dist/{chunk-EUPUEMFX.js.map → chunk-PC4H5LVB.js.map} +0 -0
- /package/dist/{chunk-44JLXXWQ.js.map → chunk-PPITQH3C.js.map} +0 -0
- /package/dist/{chunk-JC244QQF.js.map → chunk-SEWUYHSG.js.map} +0 -0
- /package/dist/{chunk-OBMPE6PW.js.map → chunk-SSDYEOU4.js.map} +0 -0
- /package/dist/{chunk-I6ESCBY3.js.map → chunk-TF27Z27K.js.map} +0 -0
- /package/dist/{chunk-RBHBJDOZ.js.map → chunk-UEU5NSIG.js.map} +0 -0
- /package/dist/{chunk-5XZEGI35.js.map → chunk-X7HCS3HP.js.map} +0 -0
- /package/dist/{chunk-T2S7NIUG.js.map → chunk-XE4JVTM6.js.map} +0 -0
- /package/dist/{chunk-G76BNXWE.js.map → chunk-XW5SEW3H.js.map} +0 -0
- /package/dist/{chunk-SIWXMNQT.js.map → chunk-YDTCM5F6.js.map} +0 -0
- /package/dist/{chunk-46ZATLQV.js.map → chunk-YIKFYWKD.js.map} +0 -0
- /package/dist/{chunk-BQGWY577.js.map → chunk-ZCUVZ5PR.js.map} +0 -0
- /package/dist/{chunk-VWW2EXH7.js.map → chunk-ZYJZHXFU.js.map} +0 -0
- /package/dist/native/chunks/{chunk-QGTZGL7P.js.map → chunk-BUFQXX27.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/DataViews/base-list-card-geometry.tsx"],"sourcesContent":["\"use client\";\n\nimport { useTheme, type Theme } from \"@mui/material/styles/index.js\";\n\nimport {\n CARD_RADIUS,\n cardSurfaceStyles,\n isActionable,\n isSelectable,\n slotTestIds,\n} from \"./card-surface\";\nimport { useDragItem } from \"./data-views-drag\";\nimport { DENSITY_ROW_PADDING } from \"./data-views-layout-context\";\nimport { RAIL_COUNT, RAIL_GAP, railsTemplateFor, useListRails } from \"./list-card-rails\";\nimport { STACK_BREAK } from \"./base-list-card-slots\";\nimport type { BaseListCardProps } from \"./base-list-card\";\nimport { rem } from \"../../../tokens/relative\";\n\n/**\n * THE ROW'S GEOMETRY AND SURFACE, split from the component at the size gate.\n *\n * Everything here answers \"what shape is this row, and where do its slots land\"\n * — the rails, the density padding, the two-line collapse, the drag and\n * selection plumbing. None of it renders anything, which is why the two halves\n * can live apart without either becoming harder to follow.\n */\n/**\n * Whether a click was really a click, or the tail of a text selection.\n *\n * Without this, selecting an order id to copy it navigates away instead — the\n * single most annoying thing a clickable row does.\n */\nfunction isTextSelection(): boolean {\n return (globalThis.getSelection?.()?.toString().length ?? 0) > 0;\n}\n\n/** Keyboard equivalence for a card that acts but does not navigate. */\nfunction clickKeys(onClick: () => void) {\n return (event: React.KeyboardEvent): void => {\n if (event.key !== \"Enter\" && event.key !== \" \") return;\n event.preventDefault();\n onClick();\n };\n}\n\n/**\n * Geometry: the rails, the density padding, the two-line collapse.\n *\n * SCALE IS `zoom`, NOT A SET OF MULTIPLIED FONT SIZES.\n *\n * It used to be the latter, on exactly three values — title, value, row padding\n * — so the slider left the subtitle, the meta labels, the rules, the checkbox,\n * the grip, the chip and the menu at their fixed sizes, and the row came apart\n * as you dragged it. Multiplying the rest is not a fix: the checkbox and the\n * chip are MUI internals sized in their own px, and no prop we pass reaches\n * them.\n *\n * `zoom` scales the used value of every length in the subtree — ours and theirs\n * — and unlike `transform: scale` it REFLOWS, so the row still occupies the\n * space it draws and the rails still resolve. Verified against the group: at\n * 1.4 all four rows keep identical rail edges, because subgrid tracks and the\n * zoom that reads them are the same for every row.\n */\n/** What {@link rowSx} needs to know about the row it lays out. */\ninterface RowSxOptions {\n inGroup: boolean;\n railCount: number;\n cellTemplate: string | null;\n gutters: { disclose: boolean; drag: boolean; select: boolean };\n metaColumns: number;\n pad: number;\n padY: number;\n scale: number;\n divider: boolean;\n interactive: boolean;\n draggable: boolean;\n}\n\n/**\n * DIVIDER COMPOSES WITH THE VARIANT — it changes the row's SHAPE, not its\n * surface.\n *\n * It used to set `border: 0` and hard-code its own rule colour, which discarded\n * whatever the variant had drawn: `outline`, `text` and `ghost` all collapsed\n * to one identical flush row, and the variant control silently stopped meaning\n * anything the moment `divider` was on.\n *\n * Now only the GEOMETRY changes here — the box's sides go, one edge stays — and\n * no `borderColor` is written, so the colour set by `cardSurfaceStyles` survives.\n * A variant that draws no border of its own gets the neutral rule from\n * {@link rowStyles}.\n */\nexport const rowSx = (theme: Theme, opts: RowSxOptions): Record<string, unknown> => {\n const { inGroup, railCount, cellTemplate, gutters, metaColumns, pad, padY, scale, divider, interactive, draggable } = opts;\n return {\n position: \"relative\",\n borderRadius: CARD_RADIUS,\n display: \"grid\",\n zoom: scale,\n // SUBGRID AND `container-type` CANNOT COEXIST on one element: containment\n // makes the box size independently of its parent, so the browser drops the\n // subgrid and every slot stacks into one column. (Observed exactly that —\n // computed `grid-template-columns: 1222px` on a card asking for subgrid.)\n //\n // So inside a group the GROUP is the query container and the row is the\n // subgrid; standalone, the row is both the container and its own grid.\n ...(inGroup\n ? { gridColumn: `span ${railCount}`, gridTemplateColumns: \"subgrid\" }\n : {\n containerType: \"inline-size\",\n gridTemplateColumns: cellTemplate ?? railsTemplateFor(gutters, metaColumns),\n }),\n alignItems: \"center\",\n // Wide enough that the meta cluster, the value and the status read as three\n // columns rather than one run of text — the complaint that started all this\n // was `MÉTODO PIX R$ 13,90` scanning as a single phrase.\n columnGap: RAIL_GAP,\n width: \"100%\",\n px: pad,\n py: padY,\n cursor: draggable ? \"grab\" : interactive ? \"pointer\" : undefined,\n ...(draggable ? { touchAction: \"none\", \"&:active\": { cursor: \"grabbing\" } } : {}),\n ...(interactive ? { \"&:hover\": { backgroundColor: \"action.hover\" } } : {}),\n // A real focus ring, which a clickable <div> never had.\n \"&:focus-visible\": {\n outline: `${rem(theme, 2)} solid`,\n outlineStyle: \"solid\",\n outlineColor: \"primary.main\",\n outlineOffset: rem(theme, 2),\n },\n // TWO-LINE, below the point where the shared rails stop helping.\n //\n // The standard mobile transaction row: what the record IS and what it COST\n // on the first line, the supporting detail on the second. Better than\n // truncating four columns into ellipses, and the reason each slot carries a\n // `data-slot` — the placement is explicit rather than whatever order the\n // children happen to be in.\n //\n // [ select ][ leading ][ title …………… ][ menu ]\n // [ (cells) …………… ][ value ]\n //\n // The MENU stays in the top-right corner at every width. It is the row's\n // one fixed landmark — an overflow that moves to the second line on a phone\n // is an overflow nobody finds twice.\n [`@container (max-width: ${rem(theme, STACK_BREAK)})`]: {\n gridTemplateColumns: \"auto auto minmax(0, 1fr) max-content\",\n ...(inGroup ? { gridColumn: `span ${RAIL_COUNT}` } : {}),\n rowGap: 0.75,\n columnGap: 1,\n '& > [data-slot=\"drag\"]': { display: \"none\" },\n '& > [data-slot=\"select\"]': { gridArea: \"1 / 1\" },\n '& > [data-slot=\"leading\"]': { gridArea: \"1 / 2\" },\n '& > [data-slot=\"caption\"]': { gridArea: \"1 / 3\" },\n '& > [data-slot=\"actions\"]': { gridArea: \"1 / 4\", justifyContent: \"flex-end\" },\n '& > [data-slot=\"meta\"]': { display: \"none\" },\n // Second line, starting under the title rather than under the checkbox.\n '& > [data-slot=\"value\"]': { gridArea: \"2 / 4\", textAlign: \"right\" },\n },\n ...(divider\n ? { borderRadius: 0, borderWidth: 0, borderBottomWidth: 1, borderStyle: \"solid\" }\n : {}),\n };\n};\n\n/**\n * A selectable full-width row: a marker, a title over a subtitle, labelled\n * middle columns, a value, a status, actions and a menu.\n *\n * A SHELL, like {@link BaseCard}. Domain rows live in the app and compose it.\n */\n/**\n * The id this row drags under, or nothing.\n *\n * `undefined` is the inert answer: `useDragItem` treats a missing id as \"no\n * drag\", which is how the card's own veto (`draggable={false}`) and an\n * unactionable record both switch dragging off without the card knowing\n * anything about the container above it.\n */\nfunction dragIdFor(\n props: BaseListCardProps,\n actionable: boolean,\n): string | number | undefined {\n return props.draggable === false || !actionable ? undefined : props.dragId;\n}\n\n/**\n * What the meta cluster amounts to — asked once, used three times: to size the\n * rail, to close the cluster with a rule, and to decide whether the value has\n * anything to be divided FROM.\n */\nexport function metaShape(props: BaseListCardProps): { columns: number; present: boolean } {\n const columns = props.meta?.length ?? 0;\n return { columns, present: columns > 0 || props.metaSlot != null };\n}\n\n/**\n * Everything the row derives before it can render — extracted so the component\n * stays inside the size budget.\n */\nexport function useRowShell(props: BaseListCardProps) {\n const actionable = isActionable(props.state);\n const group = useListRails();\n const scale = props.scale ?? 1;\n return {\n group,\n actionable,\n scale,\n theme: useTheme(),\n selectable: isSelectable(props),\n slot: slotTestIds(props.testId),\n drag: useDragItem(dragIdFor(props, actionable)),\n // Standalone holds no gutter open: there is no list beside it to line up\n // with, so a reserved-but-empty rail is pure inset.\n reserve: group?.reserveGutters ?? false,\n // 1, not 1.5. The row's contents still have to line up with the toolbar\n // above them, but 12px of card padding stacked on the checkbox's own 9px\n // and an empty drag gutter's 24px read as a row indented for no reason.\n //\n // Not multiplied by `scale` — the row's `zoom` already scales it, and doing\n // both would square the factor on padding alone.\n pad: 1,\n padY: DENSITY_ROW_PADDING[group?.density ?? props.density ?? \"cozy\"],\n // A card that navigates does so with a real anchor, so it takes no click\n // handler of its own — the stretched link IS the target.\n acts: props.onClick != null && props.href == null && actionable,\n };\n}\n\n/** The click/keyboard props a row that acts (but does not navigate) needs. */\nexport function actionProps(onClick: (() => void) | undefined) {\n return {\n role: \"button\",\n tabIndex: 0,\n onClick: () => {\n if (isTextSelection()) return;\n onClick?.();\n },\n onKeyDown: clickKeys(() => onClick?.()),\n };\n}\n\n/** The surface and the geometry, merged — the row's whole `sx` in one place. */\n\n/**\n * The row's painted surface, plus the divider's colour fallback.\n *\n * A variant with no border of its own (`text`, `ghost`) would draw its rule in\n * the inherited colour — the TEXT colour, i.e. a black bar across the row. The\n * neutral divider token is supplied only in that case; a variant that has a\n * border keeps it, which is the whole point of composing the two.\n */\nfunction rowSurface(\n props: BaseListCardProps,\n shell: ReturnType<typeof useRowShell>,\n): Record<string, unknown> {\n const { theme, selectable, drag } = shell;\n const surface = cardSurfaceStyles(\n { ...props, selectable, shape: \"row\", state: drag.dragging ? \"disabled\" : props.state },\n theme,\n );\n if (props.divider !== true || surface.borderColor != null) return surface;\n return { ...surface, borderBottomColor: theme.palette.divider };\n}\n\nexport function rowStyles(\n props: BaseListCardProps,\n shell: ReturnType<typeof useRowShell>,\n cellTemplate: string | null,\n): Record<string, unknown> {\n const { theme, group, selectable, drag, reserve, pad, padY, scale, acts } = shell;\n return {\n ...rowSurface(props, shell),\n ...rowSx(theme, {\n inGroup: group !== null,\n railCount: group?.railCount ?? RAIL_COUNT,\n cellTemplate,\n gutters: {\n disclose: reserve || props.children != null,\n drag: reserve || drag.draggable,\n select: reserve || selectable,\n },\n metaColumns: metaShape(props).columns,\n pad,\n padY,\n scale,\n divider: props.divider ?? false,\n interactive: acts || props.href != null,\n draggable: drag.draggable && drag.handleProps === undefined,\n }),\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/DataViews/data-views-toolbar.tsx"],"sourcesContent":["\"use client\";\n\nimport Divider from \"@mui/material/Divider/index.js\";\n\nimport {\n ContentToolbar,\n FilterTrigger,\n type ColumnVisibilityOption,\n type SortFieldDefinition,\n} from \"../../layout/ContentToolbar\";\nimport { Box } from \"../../../mui/Box\";\nimport { Text } from \"../../typography/Text\";\n\nimport { useDataViewsCopy } from \"./data-views-copy-context\";\nimport { DataViewsDisplayPanel, type DisplayPanelView } from \"./data-views-display-panel\";\nimport { DataViewsExportMenu, type DataViewExport } from \"./data-views-export\";\nimport { renderBulkActions } from \"./data-views-grid-helpers\";\nimport type { RowAction } from \"./data-views-types\";\nimport type { DataViewsController } from \"./use-data-views-state\";\nimport { sxRem } from \"../../../tokens/relative\";\n\nexport interface GridToolbarProps<T extends Record<string, unknown>> {\n testIdPrefix: string;\n selectedRows: T[];\n selectAll: () => void;\n clearSelection: () => void;\n rowActions?: RowAction<T>[];\n bulkActions?: (selectedRows: T[], clearSelection: () => void) => React.ReactNode;\n /** A control between the count and the actions menu — see `selectionExtra`. */\n selectionExtra?: React.ReactNode;\n sortFields: SortFieldDefinition[];\n activeSortField: string;\n activeSortOrder: \"asc\" | \"desc\";\n onChangeSort: (field: string, order: \"asc\" | \"desc\") => void;\n matchedCount: number;\n totalCount: number;\n toolbarRightSlot?: React.ReactNode;\n columnOptions: ColumnVisibilityOption[];\n onToggleColumn: (id: string, visible: boolean) => void;\n filterOpen: boolean;\n setFilterOpen: (open: boolean) => void;\n activeFilterCount: number;\n /** Hide the \"Filtros\" slide-in trigger (compact layout shows filters inline). */\n showFilterTrigger?: boolean;\n /**\n * Search + filter controls, rendered ON the toolbar line rather than on a row\n * beneath it. Absent ⇒ the toolbar keeps its plain two-cluster shape.\n */\n filterControls?: React.ReactNode;\n /** Measures the toolbar ROW for the filter overflow — see `useFilterOverflow`. */\n barRef?: React.Ref<HTMLDivElement>;\n /** The controller, so \"Exibir\" can drive sort, columns, order and format. */\n c: DataViewsController<T>;\n /** Per-sort-field value kind, so directions read in the column's own terms. */\n sortKinds?: Record<string, string>;\n /** The saved-view chrome bracketing the Exibir panel, when the host has views. */\n displayView?: DisplayPanelView;\n /** Injected export. Absent ⇒ no Exportar control. */\n exportConfig?: DataViewExport;\n /**\n * Step 2 of the degradation ladder: Exibir/Exportar as icons only.\n * MEASURED upstream (see `useFilterOverflow`) rather than switched at a\n * breakpoint, so a two-filter page keeps its labels where a five-filter one\n * has already given them up.\n */\n compactControls?: boolean;\n /**\n * Step 5 of the ladder, and its floor: on a screen too narrow for even the\n * fully-collapsed row, the counter is dropped so the controls still fit one\n * line instead of spilling outside the toolbar.\n */\n counterHidden?: boolean;\n}\n\n/** The right-aligned toolbar controls: Sort By, the counter, zoom/layout/columns, filters. */\nfunction ToolbarRightControls<T extends Record<string, unknown>>(props: GridToolbarProps<T>): React.JSX.Element {\n const { testIdPrefix, matchedCount, totalCount, filterOpen, setFilterOpen } = props;\n return (\n <>\n {/* MEASURED, never breakpointed: `RESERVED.counter` prices it into the\n ladder, so hiding it at `md` was the ladder and a breakpoint\n disagreeing about the same pixels — which broke the row at exactly\n 900px. It is dropped only as the ladder's last rung. */}\n {!props.counterHidden && (\n <>\n <Text variant=\"caption\" as=\"span\">\n <Box\n component=\"span\"\n data-testid={`${testIdPrefix}-counter`}\n sx={{ whiteSpace: \"nowrap\" }}\n >\n {matchedCount} de {totalCount}\n </Box>\n </Text>\n {/* Divides the READING of the list from the controls that change it —\n the counter states what is on screen, everything right of here\n acts on it. */}\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{ height: sxRem(20), alignSelf: \"center\", mx: 0.5 }}\n />\n </>\n )}\n {props.toolbarRightSlot}\n {/* Sort + columns + format, in ONE control — see DataViewsDisplayPanel. */}\n <DataViewsDisplayPanel\n c={props.c}\n testIdPrefix={testIdPrefix}\n sortKinds={props.sortKinds}\n view={props.displayView}\n compact={props.compactControls}\n />\n {props.exportConfig && (\n <DataViewsExportMenu\n config={props.exportConfig}\n query={props.c.currentQuery}\n totalCount={props.totalCount}\n selectedIds={[...props.c.selectedIds]}\n columns={props.columnOptions.filter((col) => col.visible).map((col) => ({ id: col.id, label: col.label }))}\n testIdPrefix={testIdPrefix}\n compact={props.compactControls}\n />\n )}\n {props.showFilterTrigger !== false && (\n <FilterTrigger\n open={filterOpen}\n onOpenChange={setFilterOpen}\n activeCount={props.activeFilterCount}\n data-testid={`${testIdPrefix}-filters-toggle`}\n />\n )}\n </>\n );\n}\n\n/**\n * The bordered toolbar band: selection chrome + Sort By, the result counter, the\n * saved-views slot, and the filter funnel. The negative margin lets the top/bottom\n * separators reach the sidebar's vertical line and the window edge.\n */\nexport function GridToolbar<T extends Record<string, unknown>>(props: GridToolbarProps<T>): React.JSX.Element {\n const copy = useDataViewsCopy();\n const { testIdPrefix, selectedRows } = props;\n return (\n <Box\n ref={props.barRef}\n sx={{\n borderTop: 1,\n borderBottom: 1,\n borderColor: \"divider\",\n py: 1.25,\n mx: { xs: -2, md: -3 },\n px: { xs: 2, md: 3 },\n }}\n >\n <ContentToolbar\n selectAllLabel={copy.selection.selectAll}\n selectAllText={copy.selection.selectAllOnPage}\n clearAllText={copy.filters.clearAll}\n hasSelection={selectedRows.length > 0}\n selectedCount={selectedRows.length}\n selectAll={props.selectAll}\n clearSelection={props.clearSelection}\n selectAllTestId={`${testIdPrefix}-select-all`}\n clearAllTestId={`${testIdPrefix}-clear-all`}\n selectionExtra={props.selectionExtra}\n actions={renderBulkActions({\n rowActions: props.rowActions,\n bulkActions: props.bulkActions,\n selectedRows,\n clearSelection: props.clearSelection,\n testIdPrefix,\n })}\n leadingControls={props.filterControls}\n // Selection takes the whole line: no Select All while browsing, and no\n // search/filters/Exibir/Exportar once a row is ticked.\n exclusiveSelection\n rightControls={<ToolbarRightControls {...props} />}\n />\n </Box>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,aAAa;AAkFZ,mBACE,KACE,YAFJ;AATR,SAAS,qBAAwD,OAA+C;AAC9G,QAAM,EAAE,cAAc,cAAc,YAAY,YAAY,cAAc,IAAI;AAC9E,SACE,iCAKG;AAAA,KAAC,MAAM,iBACN,iCACE;AAAA,0BAAC,QAAK,SAAQ,WAAU,IAAG,QACzB;AAAA,QAACA;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,eAAa,GAAG,YAAY;AAAA,UAC5B,IAAI,EAAE,YAAY,SAAS;AAAA,UAE1B;AAAA;AAAA,YAAa;AAAA,YAAK;AAAA;AAAA;AAAA,MACrB,GACF;AAAA,MAIA;AAAA,QAAC;AAAA;AAAA,UACC,aAAY;AAAA,UACZ,UAAQ;AAAA,UACR,IAAI,EAAE,QAAQ,MAAM,EAAE,GAAG,WAAW,UAAU,IAAI,IAAI;AAAA;AAAA,MACxD;AAAA,OACF;AAAA,IAED,MAAM;AAAA,IAEP;AAAA,MAAC;AAAA;AAAA,QACC,GAAG,MAAM;AAAA,QACT;AAAA,QACA,WAAW,MAAM;AAAA,QACjB,MAAM,MAAM;AAAA,QACZ,SAAS,MAAM;AAAA;AAAA,IACjB;AAAA,IACC,MAAM,gBACL;AAAA,MAAC;AAAA;AAAA,QACC,QAAQ,MAAM;AAAA,QACd,OAAO,MAAM,EAAE;AAAA,QACf,YAAY,MAAM;AAAA,QAClB,aAAa,CAAC,GAAG,MAAM,EAAE,WAAW;AAAA,QACpC,SAAS,MAAM,cAAc,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,IAAI,OAAO,IAAI,MAAM,EAAE;AAAA,QACzG;AAAA,QACA,SAAS,MAAM;AAAA;AAAA,IACjB;AAAA,IAED,MAAM,sBAAsB,SAC3B;AAAA,MAAC;AAAA;AAAA,QACC,MAAM;AAAA,QACN,cAAc;AAAA,QACd,aAAa,MAAM;AAAA,QACnB,eAAa,GAAG,YAAY;AAAA;AAAA,IAC9B;AAAA,KAEJ;AAEJ;AAOO,SAAS,YAA+C,OAA+C;AAC5G,QAAM,OAAO,iBAAiB;AAC9B,QAAM,EAAE,cAAc,aAAa,IAAI;AACvC,SACE;AAAA,IAACA;AAAA,IAAA;AAAA,MACC,KAAK,MAAM;AAAA,MACX,IAAI;AAAA,QACF,WAAW;AAAA,QACX,cAAc;AAAA,QACd,aAAa;AAAA,QACb,IAAI;AAAA,QACJ,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG;AAAA,QACrB,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE;AAAA,MACrB;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,gBAAgB,KAAK,UAAU;AAAA,UAC/B,eAAe,KAAK,UAAU;AAAA,UAC9B,cAAc,KAAK,QAAQ;AAAA,UAC3B,cAAc,aAAa,SAAS;AAAA,UACpC,eAAe,aAAa;AAAA,UAC5B,WAAW,MAAM;AAAA,UACjB,gBAAgB,MAAM;AAAA,UACtB,iBAAiB,GAAG,YAAY;AAAA,UAChC,gBAAgB,GAAG,YAAY;AAAA,UAC/B,gBAAgB,MAAM;AAAA,UACtB,SAAS,kBAAkB;AAAA,YACzB,YAAY,MAAM;AAAA,YAClB,aAAa,MAAM;AAAA,YACnB;AAAA,YACA,gBAAgB,MAAM;AAAA,YACtB;AAAA,UACF,CAAC;AAAA,UACD,iBAAiB,MAAM;AAAA,UAGvB,oBAAkB;AAAA,UAClB,eAAe,oBAAC,wBAAsB,GAAG,OAAO;AAAA;AAAA,MAClD;AAAA;AAAA,EACF;AAEJ;","names":["default"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/DataViews/base-list-card.tsx"],"sourcesContent":["\"use client\";\n\nimport Collapse from \"@mui/material/Collapse/index.js\";\nimport { type ReactNode } from \"react\";\n\nimport { Card } from \"../../layout/Card\";\nimport type { DescriptionItemProps } from \"../DescriptionItem\";\nimport { Box } from \"../../../mui/Box\";\n\nimport { type CardSurfaceProps } from \"./card-surface\";\nimport { DropIndicator } from \"./data-views-drag\";\nimport { useDisclosure } from \"./base-list-card-disclosure\";\nimport { actionProps, metaShape, rowStyles, useRowShell } from \"./base-list-card-geometry\";\nimport { DiscloseSlot, DragSlot, SelectSlot } from \"./base-list-card-gutters\";\nimport { type DataViewsDensity } from \"./data-views-layout-context\";\nimport { cellRailsTemplate } from \"./list-card-rails\";\nimport { ListCardCells, cellTracks, useCellConfig, type ListCardCellConfig } from \"./list-card-cells\";\nimport {\n ListCardActions,\n ListCardCaption,\n ListCardMeta,\n ListCardTail,\n} from \"./base-list-card-slots\";\n\n/**\n * THE \"LISTA\" LAYOUT'S CARD — {@link BaseCard}'s horizontal sibling.\n *\n * `ListBody` always described the shape it wanted (\"a marker, a title, a\n * subtitle and a value on the right\") and never provided it, so every host\n * hand-rolled a `<Box>` flex row: a tint for selection with no checkbox, fixed\n * `minWidth` columns that ignored density and never collapsed, no hover, no\n * focus ring, and a `borderBottom` fighting the gap between rows.\n *\n * THE LIST OWNS THE COLUMNS. Inside a {@link ListCardGroup} this card is\n * `grid-template-columns: subgrid` across the group's rails, so the value sits\n * on its own edge and cannot be shunted about by the width of the status chip\n * beside it. Standalone it falls back to the same template on its own. See\n * `list-card-rails`.\n *\n * IT ANSWERS ITS OWN WIDTH, not the viewport — a container query, because the\n * same row renders full-bleed on a phone, in a 300px board column, and beside a\n * filter panel that opens and closes. Below `STACK_BREAK` it leaves the shared\n * rails entirely and goes two-line, which is the standard mobile transaction\n * row and beats truncating everything: title + value, then subtitle + status.\n */\n\nexport interface BaseListCardProps extends CardSurfaceProps {\n /** A marker: avatar, thumbnail or status glyph. Earn the pixels — a generic\n * icon repeated down fifty rows is noise. */\n leading?: ReactNode;\n /** First-class title. Rendered as the link when `href` is set. */\n title?: ReactNode;\n /** Secondary line under the title. */\n subtitle?: ReactNode;\n /**\n * Middle columns as labelled pairs — {@link DescriptionItem}s, not free-form\n * nodes, so a screen reader reads \"Data, 05/08/2026\" rather than four\n * unrelated strings. Stacked (label above value) by default.\n *\n * The FIRST rung of the collapse ladder: the only slot whose absence does not\n * stop the row being identified or acted on.\n */\n meta?: DescriptionItemProps[];\n /** Escape hatch for a middle section these pairs cannot express. */\n metaSlot?: ReactNode;\n /** The number this row is about. Its own rail, tabular figures, never truncated. */\n value?: ReactNode;\n /**\n * Inline actions — the one or two things done often enough to deserve a\n * button. Revealed on hover and `:focus-within` by default, so fifty rows of\n * buttons are not the resting state of the page.\n */\n actions?: ReactNode;\n /** Always show the inline actions, rather than on hover/focus. */\n actionsAlwaysVisible?: boolean;\n /** The 3-dots overflow menu, pinned to the end. Also opens on right-click. */\n menu?: ReactNode;\n /** What opens the overflow menu on right-click / long-press. */\n onContextMenu?: (event: React.MouseEvent) => void;\n /**\n * THE EXPANDABLE BODY — and the whole reason this is a card and not a table\n * row.\n *\n * A summary row of labelled columns is a table row with a border round it: it\n * restates what the table already says and gives nobody a reason to switch to\n * it. What a card can do that a table cell cannot is OPEN — carry the record's\n * own detail underneath its summary, in whatever shape that record wants.\n *\n * So this container makes no claim about what goes in here. It spans every\n * rail and imposes nothing: an order puts its line items and a totals ledger\n * here, a cart adds its recovery actions, a role lists its permissions. The\n * design of that area belongs entirely to the consumer, and none of it is the\n * envelope's business.\n *\n * ABSENT ⇒ NO CHEVRON. A row given nothing to reveal renders no disclosure\n * control at all, rather than one that opens onto an empty box, so a column of\n * chevrons is a truthful index of which rows have more behind them.\n */\n children?: ReactNode;\n /** Open on first render, for an uncontrolled card. Ignored when `expanded` is set. */\n defaultExpanded?: boolean;\n /**\n * Open state, when the LIST wants to own it.\n *\n * Left unset the card keeps its own, and rows open independently — several at\n * once, which is what comparing two records requires. Pass this (with\n * `onExpandedChange`) to impose something else, an accordion being the usual\n * reason.\n */\n expanded?: boolean;\n /** Fired with the state the card is asking to move to. */\n onExpandedChange?: (expanded: boolean) => void;\n /** Toggle this row's selection. Receives the raw event so a list can range-select. */\n onToggleSelect?: (event?: React.MouseEvent) => void;\n /** How much air the row gets. Vertical only — a full-width row cannot narrow. */\n density?: DataViewsDensity;\n /**\n * Fine-grained size multiplier on top of `density` (1 = base).\n *\n * Applied as `zoom`, so it scales EVERYTHING the row draws — type, gutters,\n * gaps, padding, the checkbox, the grip, the chip and the menu — not just the\n * handful of font sizes it once multiplied.\n */\n scale?: number;\n /** Flush style: a bottom rule instead of an outline. Row-only. */\n divider?: boolean;\n /** This row's id for drag purposes. Inert outside a `DragContainerProvider`. */\n dragId?: string | number;\n /**\n * The record this row is about, read by the list's cell config.\n *\n * Required only when cells are configured — the config's `primary`/`secondary`\n * are functions of the row, so without one there is nothing to render them\n * from and the card falls back to its named slots.\n */\n row?: Record<string, unknown>;\n /**\n * A cell config for a STANDALONE card.\n *\n * Inside a `ListCardGroup` the list's config wins and this is ignored: one\n * declaration of the list's shape is the whole point, and a row permitted to\n * override it could put its columns somewhere no other row has them.\n */\n cells?: readonly ListCardCellConfig<never>[];\n}\n\n\n\n\n/**\n * Which cell config applies, and whether this row resolves its own tracks.\n *\n * The list's config wins over the card's: one declaration of the list's shape is\n * the point, so a row inside a group cannot introduce a column of its own. And\n * the template is standalone-only — inside a group the GROUP owns it and the row\n * is subgrid over it, because a row resolving its own tracks is exactly what\n * stops a list from lining up.\n */\nfunction useResolvedCells(\n props: BaseListCardProps,\n inGroup: boolean,\n): {\n cells: readonly ListCardCellConfig<never>[] | null;\n configured: boolean;\n cellTemplate: string | null;\n} {\n const groupCells = useCellConfig();\n const cells = groupCells ?? props.cells ?? null;\n const configured = cells != null && cells.length > 0 && props.row != null;\n const cellTemplate = configured && !inGroup ? cellRailsTemplate(cellTracks(cells)) : null;\n return { cells, configured, cellTemplate };\n}\n\n\n/**\n * The row's middle: either the list's configured cells, or the named slots.\n *\n * Split out because the branch is the only conditional shape the card has, and\n * inlined it pushed `BaseListCard` past both the line and the complexity gate.\n */\nfunction RowContent({\n card,\n cells,\n configured,\n slot,\n actionable,\n meta,\n}: {\n card: BaseListCardProps;\n cells: readonly ListCardCellConfig<never>[] | null;\n configured: boolean;\n slot: (name: string) => string | undefined;\n actionable: boolean;\n meta: { columns: number; present: boolean };\n}): React.JSX.Element {\n if (configured && cells != null) {\n return (\n <>\n {/* The list's columns, rendered from this row. */}\n <ListCardCells cells={cells} row={card.row as never} />\n {/* THE MENU IS NOT PART OF THE CONFIG and never optional: it is where a\n * row's actions live, and a list that folded it into a cell would have\n * nowhere left to put them. So it brackets the cells on its own rail,\n * exactly as the gutters do at the other end. */}\n <ListCardActions\n actions={actionable ? card.actions : undefined}\n alwaysVisible={card.actionsAlwaysVisible}\n menu={card.menu}\n testId={slot}\n />\n </>\n );\n }\n return (\n <>\n <ListCardCaption\n title={card.title}\n subtitle={card.subtitle}\n href={card.href}\n target={card.target}\n testId={slot(\"title\")}\n />\n <ListCardMeta meta={card.meta} metaSlot={card.metaSlot} trailingRule={card.value != null} />\n <ListCardTail\n value={card.value}\n separated={meta.present}\n actions={actionable ? card.actions : undefined}\n actionsAlwaysVisible={card.actionsAlwaysVisible}\n menu={card.menu}\n testId={slot}\n />\n </>\n );\n}\n\n/**\n * The revealed body, and the rule that separates it from the summary.\n *\n * `gridColumn: 1 / -1` so it spans every rail: the summary's columns are the\n * LIST's, and nothing about them should constrain a detail area whose design\n * belongs to the consumer.\n *\n * Collapse rather than an unmount, so the body animates open and keeps its own\n * state between peeks — a consumer putting a form or a scrolled table in here\n * would otherwise have it reset on every toggle. `unmountOnExit` is deliberately\n * NOT set: fifty closed rows pay for fifty hidden subtrees, which is the trade\n * taken because the alternative re-runs every consumer's effects per toggle.\n */\nfunction ExpandableBody({\n disclosure,\n padY,\n pad,\n children,\n}: {\n disclosure: { expandable: boolean; expanded: boolean; regionId: string };\n padY: number;\n pad: number;\n children: ReactNode;\n}): React.JSX.Element {\n if (!disclosure.expandable) return <></>;\n return (\n <Box sx={{ gridColumn: \"1 / -1\", minWidth: 0 }}>\n <Collapse in={disclosure.expanded} timeout={150}>\n <Box\n id={disclosure.regionId}\n role=\"region\"\n sx={{\n minWidth: 0,\n // `padY`, not a fraction of the horizontal padding. The card's own\n // `py` wraps the summary AND the body, so once the body is in flow\n // the summary has no bottom padding of its own — at `comfortable`\n // the row visibly lost the height it had while closed.\n mt: padY,\n pt: padY,\n // A RULE BETWEEN SUMMARY AND BODY, bled through the row's horizontal\n // padding so it spans the card edge to edge. Inset, it reads as a\n // border around the content rather than a division of the card.\n borderTop: 1,\n borderColor: \"divider\",\n mx: -pad,\n px: pad,\n }}\n >\n {children}\n </Box>\n </Collapse>\n </Box>\n );\n}\n\nexport function BaseListCard(props: BaseListCardProps): React.JSX.Element {\n const { selected = false, onClick } = props;\n const shell = useRowShell(props);\n const { actionable, selectable, slot, drag, reserve, pad, padY, acts } = shell;\n const meta = metaShape(props);\n const disclosure = useDisclosure(props);\n const { cells, configured, cellTemplate } = useResolvedCells(props, shell.group != null);\n\n return (\n <Card\n variant=\"outlined\"\n className={props.className}\n dataTestId={props.testId}\n aria-label={props[\"aria-label\"]}\n aria-disabled={actionable ? undefined : true}\n onContextMenu={props.onContextMenu}\n {...(acts ? actionProps(onClick) : {})}\n {...drag.itemProps}\n // A PLAIN OBJECT: `Card` merges by spreading, so a function sx vanishes.\n sx={rowStyles(props, shell, cellTemplate)}\n >\n {drag.dropEdge != null && <DropIndicator edge={drag.dropEdge} />}\n <DiscloseSlot\n expandable={disclosure.expandable}\n expanded={disclosure.expanded}\n reserve={reserve}\n onToggle={disclosure.toggle}\n controls={disclosure.regionId}\n testId={slot(\"disclose\")}\n />\n <DragSlot drag={drag} reserve={reserve} testId={slot(\"drag\")} />\n <SelectSlot\n selectable={selectable}\n selected={selected}\n reserve={reserve}\n onToggleSelect={props.onToggleSelect}\n testId={slot(\"checkbox\")}\n />\n <Box data-slot=\"leading\" sx={{ display: \"flex\", alignItems: \"center\" }}>\n {props.leading}\n </Box>\n <RowContent card={props} cells={cells} configured={configured} slot={slot} actionable={actionable} meta={meta} />\n <ExpandableBody disclosure={disclosure} padY={padY} pad={pad}>\n {props.children}\n </ExpandableBody>\n </Card>\n );\n}\n\nexport { META_BREAK, STACK_BREAK } from \"./base-list-card-slots\";\n"],"mappings":"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","names":["default"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/layout/ContentToolbar/ContentToolbar.tsx"],"sourcesContent":["'use client';\n\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport Checkbox from '@mui/material/Checkbox/index.js';\nimport Divider from '@mui/material/Divider/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport React from 'react';\n\nimport type { ContentToolbarProps } from './ContentToolbar.types';\nimport { fieldRadiusPx } from '../../../tokens/field-radius';\nimport { sxRem } from '../../../tokens/relative';\n\nconst selectionButtonSx = {\n minWidth: 0,\n height: 'auto',\n borderRadius: fieldRadiusPx,\n fontWeight: 600,\n py: 0.5,\n px: 1.5,\n fontSize: sxRem(12),\n textTransform: 'none',\n color: 'text.primary',\n} as const;\n\ntype SelectionClusterProps = Pick<\n ContentToolbarProps,\n | 'hasSelection'\n | 'selectedCount'\n | 'selectAll'\n | 'clearSelection'\n | 'actions'\n | 'selectionExtra'\n | 'selectAllTestId'\n | 'clearAllTestId'\n | 'edgeAlign'\n | 'selectAllLabel'\n | 'selectAllText'\n | 'clearAllText'\n>;\n\n/** The left cluster: Select All + (when selecting) Clear All / count / actions. */\nfunction SelectionCluster({\n hasSelection,\n selectedCount,\n selectAll,\n clearSelection,\n actions,\n selectionExtra,\n selectAllTestId,\n clearAllTestId,\n edgeAlign = false,\n selectAllLabel,\n selectAllText,\n clearAllText,\n}: SelectionClusterProps): React.JSX.Element {\n const actionsSlot = actions !== undefined && (\n <Box sx={{ ml: 0.5, display: 'flex', flexShrink: 0, alignItems: 'center' }}>{actions}</Box>\n );\n return (\n <Box\n sx={{\n display: 'flex',\n minWidth: 0,\n // Browsing (mobile): don't grow, so the controls sit on the SAME line as\n // the checkbox (no orphaned selection row). Desktop: grow to push\n // controls right.\n //\n // SELECTING (mobile) it must be able to shrink instead. Its children are\n // all `flex-shrink: 0`, so a cluster pinned at content width cannot wrap\n // and the row painted past the toolbar's own edge — on Produtos at 390px\n // that took \"Ações\" off-screen behind a sideways scroll, which is the\n // one control the selection exists to reach.\n flex: { xs: hasSelection ? '1 1 auto' : '0 0 auto', md: 1 },\n alignItems: 'center',\n // Wrapping is the phone's answer, and only the phone's: below `md` the\n // cluster carries the count, the scope control and \"Ações\" at once, and\n // no combination of those fits 320px on one line. From `md` up it stays\n // a single line, where it always fitted.\n flexWrap: { xs: 'wrap', md: 'nowrap' },\n columnGap: 1.5,\n rowGap: 1,\n ml: edgeAlign ? -1.5 : 0,\n }}\n >\n {/* Desktop: a \"Select All\" text button (md+). Mobile: a compact checkbox\n that toggles select-all/clear — the text would eat the tight row. */}\n <Button\n variant=\"text\"\n size=\"small\"\n color=\"inherit\"\n onClick={selectAll}\n data-testid={selectAllTestId}\n sx={{ ...selectionButtonSx, display: { xs: 'none', md: 'inline-flex' } }}\n >\n {selectAllText}\n </Button>\n <Checkbox\n size=\"small\"\n checked={hasSelection}\n onChange={(event) => (event.target.checked ? selectAll() : clearSelection())}\n data-testid={`${selectAllTestId}-checkbox`}\n inputProps={{ 'aria-label': selectAllLabel }}\n sx={{ p: 0.5, display: { xs: 'inline-flex', md: 'none' } }}\n />\n {hasSelection ? (\n <SelectionState\n selectedCount={selectedCount}\n clearSelection={clearSelection}\n clearAllTestId={clearAllTestId}\n clearAllText={clearAllText}\n selectionExtra={selectionExtra}\n />\n ) : null}\n {actionsSlot}\n </Box>\n );\n}\n\n/**\n * What the cluster shows once something IS ticked: Clear All, the count, and\n * the host's own `selectionExtra`.\n *\n * Its own component only because the cluster around it is at the complexity\n * gate's line ceiling — but the split falls where the meaning does. Everything\n * here exists only while a selection does, and the `actions` slot deliberately\n * stays OUTSIDE it: a toolbar may carry actions while browsing too.\n */\nfunction SelectionState({\n selectedCount,\n clearSelection,\n clearAllTestId,\n clearAllText,\n selectionExtra,\n}: Pick<\n ContentToolbarProps,\n 'selectedCount' | 'clearSelection' | 'clearAllTestId' | 'clearAllText' | 'selectionExtra'\n>): React.JSX.Element {\n return (\n <>\n <Button\n variant=\"text\"\n size=\"small\"\n color=\"inherit\"\n onClick={clearSelection}\n data-testid={clearAllTestId}\n sx={selectionButtonSx}\n >\n {clearAllText}\n </Button>\n <Divider orientation=\"vertical\" flexItem sx={{ height: sxRem(16), alignSelf: 'center' }} />\n <Typography\n component=\"span\"\n data-testid=\"selected-count-indicator\"\n sx={{ fontSize: sxRem(14), color: 'text.secondary', whiteSpace: 'nowrap', flexShrink: 0 }}\n >\n {selectedCount} {selectedCount === 1 ? 'item' : 'items'} selected\n </Typography>\n {selectionExtra !== undefined && (\n <>\n {/* A DELIBERATE break, not a wrap that happened to land here. What\n follows — \"Seleção: 48 produtos — todas as páginas\", its \"Limpar\n seleção\", and \"Ações\" — is a sentence about the selection plus the\n control that acts on it, and letting the phone break it wherever it\n ran out of room split that sentence mid-phrase. Zero height so it\n costs nothing but the row gap, and `display:none` from `md` up,\n where the line still fits. */}\n <Box\n aria-hidden\n sx={{ flexBasis: '100%', height: 0, display: { xs: 'block', md: 'none' } }}\n />\n {selectionExtra}\n </>\n )}\n </>\n );\n}\n\n/**\n * The BROWSING half of the toolbar: search + filters on the left, the page's\n * own controls on the right. Split out of {@link ContentToolbar} so that\n * function stays inside the complexity gate — it is layout only, and the\n * decision of whether to show it at all is made by the caller.\n */\nfunction BrowsingClusters({\n leadingControls,\n rightControls,\n hasSelection,\n edgeAlign,\n}: {\n leadingControls?: React.ReactNode;\n rightControls: React.ReactNode;\n hasSelection: boolean;\n edgeAlign: boolean;\n}): React.JSX.Element {\n return (\n <>\n {/* minWidth:0 lets this cluster be the one that gives up width as the row\n * tightens, which is what the filter overflow measures against. */}\n {leadingControls !== undefined && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n flexGrow: 1,\n minWidth: 0,\n // The collapse ladder has a FLOOR — below roughly 400px even the\n // fully-collapsed row does not fit, and its controls cannot shrink\n // (they are flexShrink:0 so an over-packed row sheds instead of\n // squeezing). Past that point this scrolls rather than letting them\n // paint outside the toolbar, which is what a narrow phone did.\n overflowX: 'auto',\n // No scrollbar gutter stealing height on the common case.\n scrollbarWidth: 'thin',\n }}\n >\n {leadingControls}\n </Box>\n )}\n {/* ml:auto keeps the controls right-aligned even when the cluster wraps to\n * its own row (where justify-content:space-between would otherwise snap a\n * lone item to the left); it's a no-op on a shared row. */}\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n // Same single-line rule as the row itself: this cluster wrapping\n // INTERNALLY buys a second line just as surely as the row wrapping\n // does. It bit at exactly 900px, the `md` breakpoint where the \"N de\n // N\" counter appears and pushes Exibir/Exportar over the edge.\n flexWrap: leadingControls === undefined ? 'wrap' : 'nowrap',\n // Tight (5px) when browsing so the controls fit one line beside the\n // checkbox; roomier (14px) in selection mode where they get their own row.\n gap: hasSelection ? sxRem(14) : sxRem(5),\n ml: 'auto',\n mr: edgeAlign ? -1.5 : 0,\n '& > *': { flexShrink: 0 },\n }}\n >\n {rightControls}\n </Box>\n </>\n );\n}\n\n/**\n * Shared toolbar for content pages (Favorites, Personal Space, Recents, …). The\n * left cluster owns selection chrome — **Select All**, and once items are\n * selected, **Clear All** + an \"N items selected\" count + an optional `actions`\n * slot. The right cluster is a free `rightControls` slot for page-specific\n * controls (ViewSelector, SortByDropdown, MultiSelectDropdown, FilterTrigger).\n *\n * Faithful, generic MUI port of the reference `ContentPageToolbar` — the\n * domain-specific default actions are intentionally left to the consumer via\n * the `actions` slot so this stays agnostic and reusable across projects.\n *\n * @example\n * ```tsx\n * <ContentToolbar\n * hasSelection={selected.size > 0}\n * selectedCount={selected.size}\n * selectAll={selectAll}\n * clearSelection={clear}\n * rightControls={\n * <>\n * <ViewSelector viewMode={view} onViewModeChange={setView} zoom={zoom} onZoomChange={setZoom} />\n * <SortByDropdown fields={FIELDS} activeField={field} onFieldChange={setField} />\n * <MultiSelectDropdown label=\"Content Type\" options={types} selected={typeSet} onToggle={toggle} onClear={clear} />\n * <FilterTrigger open={panelOpen} onOpenChange={setPanelOpen} hasActiveFilters={hasFilters} />\n * </>\n * }\n * />\n * ```\n */\nexport function ContentToolbar({\n hasSelection,\n selectedCount,\n selectAll,\n clearSelection,\n rightControls,\n leadingControls,\n actions,\n selectionExtra,\n selectAllTestId,\n clearAllTestId,\n edgeAlign = false,\n exclusiveSelection = false,\n selectAllLabel,\n selectAllText,\n clearAllText,\n}: ContentToolbarProps): React.JSX.Element {\n // Under `exclusiveSelection` the two states are alternatives, not neighbours:\n // browsing shows the controls and no checkbox, selecting shows the checkbox\n // and no controls. Anything else double-books the row.\n const showSelection = !exclusiveSelection || hasSelection;\n const showControls = !exclusiveSelection || !hasSelection;\n return (\n // Two clusters on one line. They may wrap onto separate rows ONLY for a\n // toolbar without `leadingControls` — one carrying search + filters is\n // driven by a measured collapse ladder (see `useFilterOverflow`), and a\n // wrap there is the ladder having failed: it would silently buy a second\n // row instead of shedding a control into \"Mais\", which is the one outcome\n // the ladder exists to prevent.\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 2,\n flexWrap: leadingControls === undefined ? 'wrap' : 'nowrap',\n rowGap: 1,\n }}\n >\n {showSelection && (\n <SelectionCluster\n selectAllText={selectAllText}\n clearAllText={clearAllText}\n hasSelection={hasSelection}\n selectedCount={selectedCount}\n selectAll={selectAll}\n clearSelection={clearSelection}\n actions={actions}\n selectionExtra={selectionExtra}\n selectAllTestId={selectAllTestId}\n clearAllTestId={clearAllTestId}\n selectAllLabel={selectAllLabel}\n edgeAlign={edgeAlign}\n />\n )}\n\n {showControls && (\n <BrowsingClusters\n leadingControls={leadingControls}\n rightControls={rightControls}\n hasSelection={hasSelection}\n edgeAlign={edgeAlign}\n />\n )}\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/Progress/Progress.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport LinearProgress from '@mui/material/LinearProgress/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, styled, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { progressLabelText, resolveProgressProps } from './Progress.helpers';\nimport {\n barEmphasisStyles,\n barVariantStyles,\n circularEmphasisStyles,\n getColorFromTheme,\n getSizeStyles,\n pulseAnimation,\n} from './Progress.styles';\nimport type { ProgressProps, ProgressSize, ProgressVariant } from './Progress.types';\nimport { rem, rems } from '../../../tokens/relative';\n\nconst StyledLinearProgress = styled(LinearProgress, {\n shouldForwardProp: (prop) =>\n !['customVariant', 'customSize', 'customColor', 'glow', 'pulse'].includes(prop as string),\n})<{\n customVariant?: ProgressVariant;\n customSize?: ProgressSize;\n customColor?: string;\n glow?: boolean;\n pulse?: boolean;\n}>(({ theme, customVariant, customSize, customColor = 'primary', glow, pulse }) => {\n const colorPalette = getColorFromTheme(theme, customColor);\n const sizeStyles = getSizeStyles(customSize);\n\n return {\n height: rem(theme, sizeStyles.heightPx),\n borderRadius: rem(theme, sizeStyles.heightPx / 2),\n backgroundColor: alpha(colorPalette.main, 0.1),\n\n '& .MuiLinearProgress-bar': {\n borderRadius: 'inherit',\n transition: 'all 0.3s ease',\n ...barVariantStyles(theme, customVariant, colorPalette),\n ...barEmphasisStyles(theme, colorPalette, glow, pulse),\n },\n };\n});\n\nconst StyledCircularProgress = styled(CircularProgress, {\n shouldForwardProp: (prop) => !['customColor', 'glow', 'pulse'].includes(prop as string),\n})<{\n customColor?: string;\n glow?: boolean;\n pulse?: boolean;\n}>(({ theme, customColor = 'primary', glow, pulse }) => {\n const colorPalette = getColorFromTheme(theme, customColor);\n\n return {\n color: colorPalette.main,\n ...circularEmphasisStyles(theme, colorPalette, glow, pulse),\n };\n});\n\nconst SegmentedProgress: React.FC<{\n value?: number;\n segments: number;\n color: string;\n size: ProgressSize;\n glow: boolean;\n pulse: boolean;\n dataTestId?: string;\n}> = ({ value = 0, segments, color, size, glow, pulse, dataTestId }) => {\n const theme = useTheme();\n const colorPalette = getColorFromTheme(theme, color);\n const sizeStyles = getSizeStyles(size);\n const filledSegments = Math.floor((value / 100) * segments);\n\n return (\n <Box sx={{ display: 'flex', gap: 0.5, width: '100%' }} data-testid={`${dataTestId}-segments-container`}>\n {Array.from({ length: segments }, (_, index) => (\n <Box\n key={index}\n data-testid={`${dataTestId}-segment-${index}`}\n sx={{\n flex: 1,\n height: rem(theme, sizeStyles.heightPx),\n // In `sx` a numeric radius is a multiple of `shape.borderRadius` — relative already.\n borderRadius: sizeStyles.heightPx / 2,\n backgroundColor:\n index < filledSegments ? colorPalette.main : alpha(colorPalette.main, 0.1),\n transition: 'all 0.3s ease',\n ...(glow &&\n index < filledSegments && {\n boxShadow: `${rems(theme, 0, 0, 6, 1)} ${alpha(colorPalette.main, 0.4)}`,\n }),\n ...(pulse &&\n index < filledSegments && {\n animation: `${pulseAnimation} 2s infinite`,\n }),\n }}\n />\n ))}\n </Box>\n );\n};\n\ninterface ViewProps {\n size: ProgressSize;\n color: string;\n glow: boolean;\n pulse: boolean;\n showLabel: boolean;\n displayValue: number;\n displayLabel: string;\n /** Absent means indeterminate — the bar animates rather than reporting progress. */\n value?: number;\n dataTestId: string;\n}\n\nconst ProgressLabel: React.FC<{ size: ProgressSize; label: string; testId: string }> = ({\n size,\n label,\n testId,\n}) => (\n <Typography\n variant=\"caption\"\n sx={{\n display: 'block',\n textAlign: 'center',\n mt: 1,\n fontSize: getSizeStyles(size).fontSize,\n fontWeight: 600,\n }}\n data-testid={testId}\n >\n {label}\n </Typography>\n);\n\nconst CircularView = React.forwardRef<\n HTMLDivElement,\n ViewProps & { thickness: number; circularSize?: number }\n>(\n (\n {\n size,\n color,\n glow,\n pulse,\n showLabel,\n displayValue,\n displayLabel,\n value,\n dataTestId,\n thickness,\n circularSize,\n ...props\n },\n ref,\n ) => {\n const theme = useTheme();\n const sizeStyles = getSizeStyles(size);\n\n return (\n <Box ref={ref} sx={{ position: 'relative', display: 'inline-flex' }} data-testid={dataTestId}>\n <StyledCircularProgress\n variant={value !== undefined ? 'determinate' : 'indeterminate'}\n value={displayValue}\n size={rem(theme, circularSize || sizeStyles.circularSizePx)}\n thickness={thickness}\n customColor={color}\n glow={glow}\n pulse={pulse}\n data-testid={`${dataTestId}-circular`}\n {...props}\n />\n {showLabel && value !== undefined && (\n <Box\n sx={{\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n position: 'absolute',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Typography\n variant=\"caption\"\n component=\"div\"\n color=\"text.secondary\"\n sx={{ fontSize: sizeStyles.fontSize, fontWeight: 600 }}\n data-testid={`${dataTestId}-label`}\n >\n {displayLabel}\n </Typography>\n </Box>\n )}\n </Box>\n );\n },\n);\n\nCircularView.displayName = 'ProgressCircularView';\n\nconst SegmentedView = React.forwardRef<HTMLDivElement, ViewProps & { segments: number }>(\n (\n { size, color, glow, pulse, showLabel, displayValue, displayLabel, dataTestId, segments, value: _value, ...props },\n ref,\n ) => (\n <Box ref={ref} sx={{ width: '100%' }} data-testid={dataTestId} {...props}>\n <SegmentedProgress\n value={displayValue}\n segments={segments}\n color={color}\n size={size}\n glow={glow}\n pulse={pulse}\n dataTestId={dataTestId}\n />\n {showLabel && (\n <ProgressLabel size={size} label={displayLabel} testId={`${dataTestId}-label`} />\n )}\n </Box>\n ),\n);\n\nSegmentedView.displayName = 'ProgressSegmentedView';\n\nconst LinearView = React.forwardRef<HTMLDivElement, ViewProps & { variant: ProgressVariant }>(\n (\n { size, color, glow, pulse, showLabel, displayValue, displayLabel, value, dataTestId, variant, ...props },\n ref,\n ) => (\n <Box ref={ref} sx={{ width: '100%' }} data-testid={dataTestId}>\n <StyledLinearProgress\n variant={value !== undefined ? 'determinate' : 'indeterminate'}\n value={displayValue}\n customVariant={variant}\n customSize={size}\n customColor={color}\n glow={glow}\n pulse={pulse}\n data-testid={`${dataTestId}-linear`}\n {...props}\n />\n {showLabel && (\n <ProgressLabel size={size} label={displayLabel} testId={`${dataTestId}-label`} />\n )}\n </Box>\n ),\n);\n\nLinearView.displayName = 'ProgressLinearView';\n\nexport const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n (rawProps, ref) => {\n const {\n variant,\n size,\n color,\n glow,\n pulse,\n showLabel,\n label,\n segments,\n thickness,\n circularSize,\n value,\n dataTestId,\n testID,\n ...props\n } = resolveProgressProps(rawProps);\n const displayValue = value || 0;\n const shared = {\n size,\n color,\n glow,\n pulse,\n showLabel,\n displayValue,\n displayLabel: progressLabelText(label, showLabel, displayValue),\n value,\n // `testID` is React Native's spelling of the same id and names the\n // component too; `data-testid` is left in `props`, on its way to the\n // element the caller means to address, where it has always landed.\n dataTestId: testID ?? dataTestId,\n ...props,\n };\n\n if (variant === 'circular') {\n return (\n <CircularView ref={ref} {...shared} thickness={thickness} circularSize={circularSize} />\n );\n }\n\n if (variant === 'segmented') {\n return <SegmentedView ref={ref} {...shared} segments={segments} />;\n }\n\n return <LinearView ref={ref} {...shared} variant={variant} />;\n },\n);\n\nProgress.displayName = 'Progress';\n"],"mappings":"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","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
|
|
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
|