@12-apps/ui 6.22.0 → 6.24.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 -1
- package/components-catalog.md +7 -0
- package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +3 -3
- package/dist/_internal/components/data-display/Avatar/Avatar.js +4 -4
- package/dist/_internal/components/data-display/Avatar/Avatar.view.js +2 -2
- package/dist/_internal/components/data-display/Badge/Badge.js +2 -2
- package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +1 -1
- package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +1 -1
- 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 +7 -7
- 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/Chart/chart-spec.js +2 -2
- package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +41 -41
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +47 -47
- package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +1 -1
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +4 -4
- package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +10 -10
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +36 -36
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +11 -11
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +5 -5
- package/dist/_internal/components/data-display/DataViews/list-card-rails.js +2 -2
- package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +4 -4
- package/dist/_internal/components/data-display/FleetMap/FleetBody.js +32 -0
- package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +23 -0
- package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js.map +1 -0
- package/dist/_internal/components/data-display/FleetMap/FleetMap.base.js +1 -0
- package/dist/_internal/components/data-display/FleetMap/FleetMap.base.js.map +1 -0
- package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +57 -0
- package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js.map +1 -0
- package/dist/_internal/components/data-display/FleetMap/FleetMap.helpers.js +14 -0
- package/dist/_internal/components/data-display/FleetMap/FleetMap.helpers.js.map +1 -0
- package/dist/_internal/components/data-display/FleetMap/FleetMap.hooks.js +9 -0
- package/dist/_internal/components/data-display/FleetMap/FleetMap.hooks.js.map +1 -0
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js +47 -0
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js.map +1 -0
- package/dist/_internal/components/data-display/FleetMap/FleetMap.metrics.js +20 -0
- package/dist/_internal/components/data-display/FleetMap/FleetMap.metrics.js.map +1 -0
- package/dist/_internal/components/data-display/FleetMap/FleetMap.types.js +1 -0
- package/dist/_internal/components/data-display/FleetMap/FleetMap.types.js.map +1 -0
- package/dist/_internal/components/data-display/FleetMap/FleetRoster.js +15 -0
- package/dist/_internal/components/data-display/FleetMap/FleetRoster.js.map +1 -0
- package/dist/_internal/components/data-display/HoverCard/HoverCard.js +2 -2
- package/dist/_internal/components/data-display/Lightbox/Lightbox.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapLayers.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapPreview.js +6 -6
- package/dist/_internal/components/data-display/Sheet/Sheet.hooks.js +2 -2
- package/dist/_internal/components/data-display/Sheet/Sheet.js +3 -3
- package/dist/_internal/components/data-display/Table/Table.js +3 -3
- package/dist/_internal/components/data-display/index.js +90 -69
- 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/index.js +14 -14
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.hooks.js +3 -3
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +5 -5
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +2 -2
- package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +2 -2
- package/dist/_internal/components/form/CategorySelect/CategorySelect.js +4 -4
- package/dist/_internal/components/form/Command/Command.js +2 -2
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +3 -3
- package/dist/_internal/components/form/PhoneInput/PhoneInput.hooks.js +2 -2
- package/dist/_internal/components/form/PhoneInput/PhoneInput.js +3 -3
- package/dist/_internal/components/form/index.js +30 -30
- package/dist/_internal/components/form/total-form/Fields/CategoryField.js +5 -5
- package/dist/_internal/components/form/total-form/Fields/index.js +9 -9
- package/dist/_internal/components/index.js +160 -140
- package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +2 -2
- package/dist/_internal/components/layout/index.js +20 -20
- package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +4 -4
- package/dist/_internal/components/navigation/Pagination/Pagination.js +2 -2
- package/dist/_internal/components/navigation/index.js +12 -12
- package/dist/_internal/components/utility/index.js +4 -4
- package/dist/_internal/platform/aria.js.map +1 -1
- package/dist/_internal/pt-BR.data-display.js +2 -2
- package/dist/_internal/user-avatar/user-avatar.js +5 -5
- package/dist/charts.js +10 -10
- package/dist/{chunk-WGRS4PGY.js → chunk-2C47DEVU.js} +4 -4
- package/dist/chunk-2RQINU5T.js +41 -0
- package/dist/chunk-2RQINU5T.js.map +1 -0
- package/dist/{chunk-WMALDOF5.js → chunk-4G3FGCWX.js} +4 -4
- package/dist/{chunk-ZOUWHGV3.js → chunk-4MGFUPQT.js} +4 -4
- package/dist/{chunk-QFJRB27Q.js → chunk-6LGWJFQK.js} +2 -2
- package/dist/{chunk-XSF6AXEU.js → chunk-6RZDDUSM.js} +2 -2
- package/dist/{chunk-VIK3HAUQ.js → chunk-73NJCGQG.js} +2 -2
- package/dist/{chunk-UU3QAKG6.js → chunk-B7DKSBAE.js} +14 -14
- package/dist/{chunk-3FLVIVOK.js → chunk-BHIGHSXA.js} +2 -2
- package/dist/{chunk-HKV4MQ2W.js → chunk-BLBOYCOV.js} +5 -5
- package/dist/chunk-BTQZ3EX3.js +45 -0
- package/dist/chunk-BTQZ3EX3.js.map +1 -0
- package/dist/{chunk-PFV6RL4Q.js → chunk-C6KTQF4F.js} +3 -3
- package/dist/chunk-CDCTLPMD.js +1 -0
- package/dist/chunk-CDCTLPMD.js.map +1 -0
- package/dist/{chunk-LYSSO6WC.js → chunk-CZPU5TW3.js} +4 -4
- package/dist/{chunk-PMS3H3OO.js → chunk-DF2FFYZ7.js} +4 -4
- package/dist/{chunk-QZBUGUOY.js → chunk-DFLTUI7W.js} +4 -4
- package/dist/{chunk-WLQTHPMX.js → chunk-EJQW2IYW.js} +2 -2
- package/dist/{chunk-VQAM2XZV.js → chunk-EMUBMZMA.js} +2 -2
- package/dist/{chunk-XFUNJYFT.js → chunk-EPNUVSNK.js} +7 -7
- package/dist/{chunk-MSUSZLRE.js → chunk-EWT3WMVY.js} +5 -5
- package/dist/{chunk-Q75SJ35X.js → chunk-GMTM6EN7.js} +3 -3
- package/dist/{chunk-R6SBP5M5.js → chunk-GOWBYHYW.js} +4 -4
- package/dist/{chunk-6NZTYZP5.js → chunk-GVA5CYKP.js} +2 -2
- package/dist/chunk-HMV4QMXS.js +219 -0
- package/dist/chunk-HMV4QMXS.js.map +1 -0
- package/dist/{chunk-VR5HDUBK.js → chunk-HP2ODXNA.js} +2 -2
- package/dist/{chunk-2MMEIN4T.js → chunk-I3E2QHTH.js} +4 -4
- package/dist/{chunk-UVGRRI7N.js → chunk-IPVYEPXO.js} +4 -4
- package/dist/{chunk-5ZTUP65G.js → chunk-JM64OEU6.js} +5 -5
- package/dist/{chunk-7BYFC2MR.js → chunk-JUHUKZGU.js} +7 -7
- package/dist/chunk-JZXWCEH5.js +116 -0
- package/dist/chunk-JZXWCEH5.js.map +1 -0
- package/dist/{chunk-DVUPIVI2.js → chunk-KT6HWAEN.js} +4 -4
- package/dist/{chunk-TLMLEC4F.js → chunk-KW7H5O3K.js} +6 -6
- package/dist/{chunk-VLHGBFR6.js → chunk-MZQTHSLN.js} +3 -3
- package/dist/{chunk-4SQFO4GW.js → chunk-NA7MIEG6.js} +7 -7
- package/dist/{chunk-QWDEOITU.js → chunk-O4VCZTK4.js} +2 -2
- package/dist/{chunk-LS4FMSHY.js → chunk-OAYX4XN7.js} +4 -4
- package/dist/{chunk-Y5UCOBQN.js → chunk-OGGHD64H.js} +4 -4
- package/dist/{chunk-7TZ6OC5T.js → chunk-OH3YGJT5.js} +2 -2
- package/dist/{chunk-REMK55JI.js → chunk-OLZTGVBT.js} +4 -4
- package/dist/{chunk-VNNG46TS.js → chunk-ORSLFKKZ.js} +6 -6
- package/dist/{chunk-ZIYMBR7K.js → chunk-OTH7H3IP.js} +2 -2
- package/dist/{chunk-5NKUYCZD.js → chunk-PN5CQKA2.js} +4 -4
- package/dist/{chunk-J4W4TQPC.js → chunk-QJRDDVZ2.js} +5 -5
- package/dist/{chunk-VNDOQEJ7.js → chunk-QRX5BYUQ.js} +4 -4
- package/dist/{chunk-XT7HMNBW.js → chunk-R6SNYC3D.js} +5 -5
- package/dist/{chunk-W2UTDN4T.js → chunk-RBGOGTT2.js} +4 -4
- package/dist/chunk-RP5FK3SO.js +79 -0
- package/dist/chunk-RP5FK3SO.js.map +1 -0
- package/dist/{chunk-X5MPHXG5.js → chunk-RPWEXIAW.js} +6 -6
- package/dist/chunk-RQWZYD6H.js +1 -0
- package/dist/chunk-RQWZYD6H.js.map +1 -0
- package/dist/{chunk-EXJBPKGW.js → chunk-SHDIZSN5.js} +5 -5
- package/dist/{chunk-23FCBIUN.js → chunk-TNVO2DTB.js} +8 -8
- package/dist/{chunk-AGSBIUPV.js → chunk-TPLKJHNN.js} +4 -4
- package/dist/{chunk-YQ6TNHAC.js → chunk-TTLI6PF7.js} +5 -5
- package/dist/{chunk-U2AC4AQX.js → chunk-TU5EIKJA.js} +4 -4
- package/dist/{chunk-KTK4A3IF.js → chunk-TX5V42AY.js} +11 -11
- package/dist/{chunk-BGYLL467.js → chunk-TXHJX2NG.js} +4 -4
- package/dist/{chunk-FL54G7PV.js → chunk-WIT3Y7JT.js} +2 -2
- package/dist/{chunk-W7Y6RA6W.js → chunk-WR5JFDQ5.js} +4 -4
- package/dist/chunk-XPMGFAJ3.js +36 -0
- package/dist/chunk-XPMGFAJ3.js.map +1 -0
- package/dist/{chunk-2UYR2OOE.js → chunk-YRUCIKPO.js} +4 -4
- package/dist/{chunk-AEGXHZQT.js → chunk-YW5T6KZ5.js} +7 -7
- package/dist/{chunk-QKIJ6YXZ.js → chunk-ZA4U5GDU.js} +4 -4
- package/dist/chunk-ZCPSND5Y.js +64 -0
- package/dist/chunk-ZCPSND5Y.js.map +1 -0
- package/dist/{chunk-ZKR5B6YJ.js → chunk-ZRPGVHTR.js} +2 -2
- package/dist/{chunk-OXQP3N6X.js → chunk-ZTZ6S5Q6.js} +4 -4
- package/dist/data-display/AsyncStateContainer.js +3 -3
- package/dist/data-display/Avatar.js +4 -4
- package/dist/data-display/Badge.js +2 -2
- package/dist/data-display/CardKit.js +11 -11
- package/dist/data-display/Carousel.js +2 -2
- package/dist/data-display/Chart.js +10 -10
- package/dist/data-display/DataGrid.js +2 -2
- package/dist/data-display/DataViews.js +68 -68
- package/dist/data-display/FleetMap.js +55 -0
- package/dist/data-display/FleetMap.js.map +1 -0
- package/dist/data-display/HoverCard.js +2 -2
- package/dist/data-display/Lightbox.js +2 -2
- package/dist/data-display/MapPreview.js +6 -6
- package/dist/data-display/Sheet.js +3 -3
- package/dist/data-display/Table.js +3 -3
- package/dist/feedback/ConfirmAction.js +3 -3
- package/dist/feedback/Modal.js +2 -2
- package/dist/feedback/StackedModal.js +2 -2
- package/dist/form/AddressAutocomplete.js +5 -5
- package/dist/form/CategorySelect.js +4 -4
- package/dist/form/Command.js +2 -2
- package/dist/form/DateRangePicker.js +5 -5
- package/dist/form/PhoneInput.js +3 -3
- package/dist/form/total-form.js +9 -9
- package/dist/layout/SettingsLayout.js +2 -2
- package/dist/locales.js +4 -4
- package/dist/native/chunks/{chunk-T6BJPP3E.js → chunk-DN73KYIZ.js} +1 -1
- package/dist/native/chunks/chunk-DN73KYIZ.js.map +1 -0
- package/dist/native/chunks/chunk-GW7TQ7HO.js +215 -0
- package/dist/native/chunks/chunk-GW7TQ7HO.js.map +1 -0
- package/dist/native/chunks/chunk-MJVSQXOD.js +9 -0
- package/dist/native/chunks/chunk-MJVSQXOD.js.map +1 -0
- package/dist/native/chunks/chunk-ZAQ3AZJM.js +292 -0
- package/dist/native/chunks/chunk-ZAQ3AZJM.js.map +1 -0
- package/dist/native/data-display/Alert.js +4 -4
- package/dist/native/data-display/Avatar.js +3 -3
- package/dist/native/data-display/Badge.js +4 -4
- package/dist/native/data-display/Chip.js +3 -5
- package/dist/native/data-display/Chip.js.map +1 -1
- package/dist/native/data-display/EmptyState.js +9 -286
- package/dist/native/data-display/EmptyState.js.map +1 -1
- package/dist/native/data-display/ErrorState.js +6 -6
- package/dist/native/data-display/FleetMap.js +498 -0
- package/dist/native/data-display/FleetMap.js.map +1 -0
- package/dist/native/data-display/LoadingState.js +3 -3
- package/dist/native/feedback/Dialog.js +3 -3
- package/dist/native/form/Checkbox.js +1 -1
- package/dist/native/form/Input.js +1 -1
- package/dist/native/form/Select.js +1 -1
- package/dist/native/form/Switch.js +1 -1
- package/dist/native/layout/Card.js +3 -3
- package/dist/native/layout/Skeleton.js +6 -209
- package/dist/native/layout/Skeleton.js.map +1 -1
- package/dist/navigation/AppHeader.js +6 -6
- package/dist/navigation/Pagination.js +2 -2
- package/dist/pt-BR.js +4 -4
- package/dist/types/components/data-display/FleetMap/FleetBody.d.ts +22 -0
- package/dist/types/components/data-display/FleetMap/FleetBody.d.ts.map +1 -0
- package/dist/types/components/data-display/FleetMap/FleetCanvas.d.ts +50 -0
- package/dist/types/components/data-display/FleetMap/FleetCanvas.d.ts.map +1 -0
- package/dist/types/components/data-display/FleetMap/FleetMap.base.d.ts +141 -0
- package/dist/types/components/data-display/FleetMap/FleetMap.base.d.ts.map +1 -0
- package/dist/types/components/data-display/FleetMap/FleetMap.d.ts +32 -0
- package/dist/types/components/data-display/FleetMap/FleetMap.d.ts.map +1 -0
- package/dist/types/components/data-display/FleetMap/FleetMap.fixtures.d.ts +23 -0
- package/dist/types/components/data-display/FleetMap/FleetMap.fixtures.d.ts.map +1 -0
- package/dist/types/components/data-display/FleetMap/FleetMap.helpers.d.ts +45 -0
- package/dist/types/components/data-display/FleetMap/FleetMap.helpers.d.ts.map +1 -0
- package/dist/types/components/data-display/FleetMap/FleetMap.hooks.d.ts +71 -0
- package/dist/types/components/data-display/FleetMap/FleetMap.hooks.d.ts.map +1 -0
- package/dist/types/components/data-display/FleetMap/FleetMap.metrics.d.ts +76 -0
- package/dist/types/components/data-display/FleetMap/FleetMap.metrics.d.ts.map +1 -0
- package/dist/types/components/data-display/FleetMap/FleetMap.types.d.ts +45 -0
- package/dist/types/components/data-display/FleetMap/FleetMap.types.d.ts.map +1 -0
- package/dist/types/components/data-display/FleetMap/FleetRoster.d.ts +15 -0
- package/dist/types/components/data-display/FleetMap/FleetRoster.d.ts.map +1 -0
- package/dist/types/components/data-display/FleetMap/index.d.ts +5 -0
- package/dist/types/components/data-display/FleetMap/index.d.ts.map +1 -0
- package/dist/types/components/data-display/index.d.ts +1 -0
- package/dist/types/components/data-display/index.d.ts.map +1 -1
- package/dist/types/platform/aria.d.ts +13 -0
- package/dist/types/platform/aria.d.ts.map +1 -1
- package/dist/types-native/components/data-display/FleetMap/FleetMap.base.d.ts +141 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.base.d.ts.map +1 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.helpers.d.ts +45 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.helpers.d.ts.map +1 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.hooks.d.ts +71 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.hooks.d.ts.map +1 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.metrics.d.ts +76 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.metrics.d.ts.map +1 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.native.d.ts +30 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.native.d.ts.map +1 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.types.native.d.ts +36 -0
- package/dist/types-native/components/data-display/FleetMap/FleetMap.types.native.d.ts.map +1 -0
- package/dist/types-native/components/data-display/FleetMap/FleetRoster.native.d.ts +17 -0
- package/dist/types-native/components/data-display/FleetMap/FleetRoster.native.d.ts.map +1 -0
- package/dist/types-native/components/data-display/FleetMap/index.native.d.ts +4 -0
- package/dist/types-native/components/data-display/FleetMap/index.native.d.ts.map +1 -0
- package/dist/types-native/platform/aria.d.ts +13 -0
- package/dist/types-native/platform/aria.d.ts.map +1 -1
- package/dist/user-avatar.js +5 -5
- package/package.json +9 -1
- package/src/components/data-display/FleetMap/FleetBody.tsx +96 -0
- package/src/components/data-display/FleetMap/FleetCanvas.tsx +80 -0
- package/src/components/data-display/FleetMap/FleetMap.base.ts +144 -0
- package/src/components/data-display/FleetMap/FleetMap.fixtures.ts +70 -0
- package/src/components/data-display/FleetMap/FleetMap.helpers.ts +85 -0
- package/src/components/data-display/FleetMap/FleetMap.hooks.ts +183 -0
- package/src/components/data-display/FleetMap/FleetMap.md +189 -0
- package/src/components/data-display/FleetMap/FleetMap.metrics.ts +81 -0
- package/src/components/data-display/FleetMap/FleetMap.native.tsx +185 -0
- package/src/components/data-display/FleetMap/FleetMap.tsx +163 -0
- package/src/components/data-display/FleetMap/FleetMap.types.native.ts +44 -0
- package/src/components/data-display/FleetMap/FleetMap.types.ts +53 -0
- package/src/components/data-display/FleetMap/FleetRoster.native.tsx +382 -0
- package/src/components/data-display/FleetMap/FleetRoster.tsx +327 -0
- package/src/components/data-display/FleetMap/NATIVE-NOTES.md +14 -0
- package/src/components/data-display/FleetMap/index.native.ts +10 -0
- package/src/components/data-display/FleetMap/index.ts +9 -0
- package/src/components/data-display/FleetMap/tests.md +84 -0
- package/src/components/data-display/FleetMap/track.md +50 -0
- package/src/components/data-display/index.ts +1 -0
- package/src/components/feedback/ConfirmAction/ConfirmAction.md +10 -4
- package/src/platform/aria.ts +13 -0
- package/dist/chunk-X3HL5C6H.js +0 -1
- package/dist/native/chunks/chunk-T6BJPP3E.js.map +0 -1
- /package/dist/{chunk-X3HL5C6H.js.map → _internal/components/data-display/FleetMap/FleetBody.js.map} +0 -0
- /package/dist/{chunk-WGRS4PGY.js.map → chunk-2C47DEVU.js.map} +0 -0
- /package/dist/{chunk-WMALDOF5.js.map → chunk-4G3FGCWX.js.map} +0 -0
- /package/dist/{chunk-ZOUWHGV3.js.map → chunk-4MGFUPQT.js.map} +0 -0
- /package/dist/{chunk-QFJRB27Q.js.map → chunk-6LGWJFQK.js.map} +0 -0
- /package/dist/{chunk-XSF6AXEU.js.map → chunk-6RZDDUSM.js.map} +0 -0
- /package/dist/{chunk-VIK3HAUQ.js.map → chunk-73NJCGQG.js.map} +0 -0
- /package/dist/{chunk-UU3QAKG6.js.map → chunk-B7DKSBAE.js.map} +0 -0
- /package/dist/{chunk-3FLVIVOK.js.map → chunk-BHIGHSXA.js.map} +0 -0
- /package/dist/{chunk-HKV4MQ2W.js.map → chunk-BLBOYCOV.js.map} +0 -0
- /package/dist/{chunk-PFV6RL4Q.js.map → chunk-C6KTQF4F.js.map} +0 -0
- /package/dist/{chunk-LYSSO6WC.js.map → chunk-CZPU5TW3.js.map} +0 -0
- /package/dist/{chunk-PMS3H3OO.js.map → chunk-DF2FFYZ7.js.map} +0 -0
- /package/dist/{chunk-QZBUGUOY.js.map → chunk-DFLTUI7W.js.map} +0 -0
- /package/dist/{chunk-WLQTHPMX.js.map → chunk-EJQW2IYW.js.map} +0 -0
- /package/dist/{chunk-VQAM2XZV.js.map → chunk-EMUBMZMA.js.map} +0 -0
- /package/dist/{chunk-XFUNJYFT.js.map → chunk-EPNUVSNK.js.map} +0 -0
- /package/dist/{chunk-MSUSZLRE.js.map → chunk-EWT3WMVY.js.map} +0 -0
- /package/dist/{chunk-Q75SJ35X.js.map → chunk-GMTM6EN7.js.map} +0 -0
- /package/dist/{chunk-R6SBP5M5.js.map → chunk-GOWBYHYW.js.map} +0 -0
- /package/dist/{chunk-6NZTYZP5.js.map → chunk-GVA5CYKP.js.map} +0 -0
- /package/dist/{chunk-VR5HDUBK.js.map → chunk-HP2ODXNA.js.map} +0 -0
- /package/dist/{chunk-2MMEIN4T.js.map → chunk-I3E2QHTH.js.map} +0 -0
- /package/dist/{chunk-UVGRRI7N.js.map → chunk-IPVYEPXO.js.map} +0 -0
- /package/dist/{chunk-5ZTUP65G.js.map → chunk-JM64OEU6.js.map} +0 -0
- /package/dist/{chunk-7BYFC2MR.js.map → chunk-JUHUKZGU.js.map} +0 -0
- /package/dist/{chunk-DVUPIVI2.js.map → chunk-KT6HWAEN.js.map} +0 -0
- /package/dist/{chunk-TLMLEC4F.js.map → chunk-KW7H5O3K.js.map} +0 -0
- /package/dist/{chunk-VLHGBFR6.js.map → chunk-MZQTHSLN.js.map} +0 -0
- /package/dist/{chunk-4SQFO4GW.js.map → chunk-NA7MIEG6.js.map} +0 -0
- /package/dist/{chunk-QWDEOITU.js.map → chunk-O4VCZTK4.js.map} +0 -0
- /package/dist/{chunk-LS4FMSHY.js.map → chunk-OAYX4XN7.js.map} +0 -0
- /package/dist/{chunk-Y5UCOBQN.js.map → chunk-OGGHD64H.js.map} +0 -0
- /package/dist/{chunk-7TZ6OC5T.js.map → chunk-OH3YGJT5.js.map} +0 -0
- /package/dist/{chunk-REMK55JI.js.map → chunk-OLZTGVBT.js.map} +0 -0
- /package/dist/{chunk-VNNG46TS.js.map → chunk-ORSLFKKZ.js.map} +0 -0
- /package/dist/{chunk-ZIYMBR7K.js.map → chunk-OTH7H3IP.js.map} +0 -0
- /package/dist/{chunk-5NKUYCZD.js.map → chunk-PN5CQKA2.js.map} +0 -0
- /package/dist/{chunk-J4W4TQPC.js.map → chunk-QJRDDVZ2.js.map} +0 -0
- /package/dist/{chunk-VNDOQEJ7.js.map → chunk-QRX5BYUQ.js.map} +0 -0
- /package/dist/{chunk-XT7HMNBW.js.map → chunk-R6SNYC3D.js.map} +0 -0
- /package/dist/{chunk-W2UTDN4T.js.map → chunk-RBGOGTT2.js.map} +0 -0
- /package/dist/{chunk-X5MPHXG5.js.map → chunk-RPWEXIAW.js.map} +0 -0
- /package/dist/{chunk-EXJBPKGW.js.map → chunk-SHDIZSN5.js.map} +0 -0
- /package/dist/{chunk-23FCBIUN.js.map → chunk-TNVO2DTB.js.map} +0 -0
- /package/dist/{chunk-AGSBIUPV.js.map → chunk-TPLKJHNN.js.map} +0 -0
- /package/dist/{chunk-YQ6TNHAC.js.map → chunk-TTLI6PF7.js.map} +0 -0
- /package/dist/{chunk-U2AC4AQX.js.map → chunk-TU5EIKJA.js.map} +0 -0
- /package/dist/{chunk-KTK4A3IF.js.map → chunk-TX5V42AY.js.map} +0 -0
- /package/dist/{chunk-BGYLL467.js.map → chunk-TXHJX2NG.js.map} +0 -0
- /package/dist/{chunk-FL54G7PV.js.map → chunk-WIT3Y7JT.js.map} +0 -0
- /package/dist/{chunk-W7Y6RA6W.js.map → chunk-WR5JFDQ5.js.map} +0 -0
- /package/dist/{chunk-2UYR2OOE.js.map → chunk-YRUCIKPO.js.map} +0 -0
- /package/dist/{chunk-AEGXHZQT.js.map → chunk-YW5T6KZ5.js.map} +0 -0
- /package/dist/{chunk-QKIJ6YXZ.js.map → chunk-ZA4U5GDU.js.map} +0 -0
- /package/dist/{chunk-ZKR5B6YJ.js.map → chunk-ZRPGVHTR.js.map} +0 -0
- /package/dist/{chunk-OXQP3N6X.js.map → chunk-ZTZ6S5Q6.js.map} +0 -0
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
LightboxCurrentMedia
|
|
3
|
+
} from "./chunk-2DWBJJK6.js";
|
|
1
4
|
import {
|
|
2
5
|
resolveLightboxProps
|
|
3
6
|
} from "./chunk-UOS7DEQZ.js";
|
|
@@ -19,9 +22,6 @@ import {
|
|
|
19
22
|
import {
|
|
20
23
|
makeTestId
|
|
21
24
|
} from "./chunk-56SJYTIT.js";
|
|
22
|
-
import {
|
|
23
|
-
LightboxCurrentMedia
|
|
24
|
-
} from "./chunk-2DWBJJK6.js";
|
|
25
25
|
|
|
26
26
|
// src/components/data-display/Lightbox/Lightbox.tsx
|
|
27
27
|
import Dialog from "@mui/material/Dialog/index.js";
|
|
@@ -128,4 +128,4 @@ export {
|
|
|
128
128
|
Lightbox,
|
|
129
129
|
Lightbox_default
|
|
130
130
|
};
|
|
131
|
-
//# sourceMappingURL=chunk-
|
|
131
|
+
//# sourceMappingURL=chunk-DF2FFYZ7.js.map
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
RangePresets
|
|
3
|
-
} from "./chunk-F4RR4666.js";
|
|
4
1
|
import {
|
|
5
2
|
NumberBoundInput
|
|
6
3
|
} from "./chunk-FV36LFPX.js";
|
|
@@ -10,6 +7,9 @@ import {
|
|
|
10
7
|
numericRange,
|
|
11
8
|
rangeChipLabel
|
|
12
9
|
} from "./chunk-GCZJH4XL.js";
|
|
10
|
+
import {
|
|
11
|
+
RangePresets
|
|
12
|
+
} from "./chunk-F4RR4666.js";
|
|
13
13
|
import {
|
|
14
14
|
presetsFor
|
|
15
15
|
} from "./chunk-CBOB5AV6.js";
|
|
@@ -279,4 +279,4 @@ export {
|
|
|
279
279
|
RangePill,
|
|
280
280
|
PanelRangeField
|
|
281
281
|
};
|
|
282
|
-
//# sourceMappingURL=chunk-
|
|
282
|
+
//# sourceMappingURL=chunk-DFLTUI7W.js.map
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from "./chunk-4T6W43TO.js";
|
|
7
7
|
import {
|
|
8
8
|
CategorySelect
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-JM64OEU6.js";
|
|
10
10
|
|
|
11
11
|
// src/components/data-display/DataViews/data-views-category-pill.tsx
|
|
12
12
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -79,4 +79,4 @@ export {
|
|
|
79
79
|
emitPillDiff,
|
|
80
80
|
PillControl
|
|
81
81
|
};
|
|
82
|
-
//# sourceMappingURL=chunk-
|
|
82
|
+
//# sourceMappingURL=chunk-EJQW2IYW.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-4X4KM4ZB.js";
|
|
4
4
|
import {
|
|
5
5
|
DataViewsGrid
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-C6KTQF4F.js";
|
|
7
7
|
import {
|
|
8
8
|
viewStateKey
|
|
9
9
|
} from "./chunk-ZOLAYP2D.js";
|
|
@@ -178,4 +178,4 @@ function renderViewDialogs(ctl, fields, columns, views, testIdPrefix, onSaved) {
|
|
|
178
178
|
export {
|
|
179
179
|
DataViewsTableBase
|
|
180
180
|
};
|
|
181
|
-
//# sourceMappingURL=chunk-
|
|
181
|
+
//# sourceMappingURL=chunk-EMUBMZMA.js.map
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
useHoverCard
|
|
3
|
-
} from "./chunk-SXYIXCUB.js";
|
|
4
|
-
import {
|
|
5
|
-
HoverCardContent
|
|
6
|
-
} from "./chunk-O26MKGIC.js";
|
|
7
1
|
import {
|
|
8
2
|
arrowSx,
|
|
9
3
|
cardSx,
|
|
@@ -11,6 +5,12 @@ import {
|
|
|
11
5
|
getTransformOrigin,
|
|
12
6
|
sideOf
|
|
13
7
|
} from "./chunk-KSLNO5NG.js";
|
|
8
|
+
import {
|
|
9
|
+
useHoverCard
|
|
10
|
+
} from "./chunk-SXYIXCUB.js";
|
|
11
|
+
import {
|
|
12
|
+
HoverCardContent
|
|
13
|
+
} from "./chunk-O26MKGIC.js";
|
|
14
14
|
import {
|
|
15
15
|
withDefaults
|
|
16
16
|
} from "./chunk-HPK33ACY.js";
|
|
@@ -158,4 +158,4 @@ HoverCard.displayName = "HoverCard";
|
|
|
158
158
|
export {
|
|
159
159
|
HoverCard
|
|
160
160
|
};
|
|
161
|
-
//# sourceMappingURL=chunk-
|
|
161
|
+
//# sourceMappingURL=chunk-EPNUVSNK.js.map
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resolveCommandProps,
|
|
3
|
+
useCommandPalette
|
|
4
|
+
} from "./chunk-6DN4ZULV.js";
|
|
1
5
|
import {
|
|
2
6
|
commandPaperStyles,
|
|
3
7
|
commandSizeStyles
|
|
@@ -6,10 +10,6 @@ import {
|
|
|
6
10
|
CommandEmpty,
|
|
7
11
|
CommandLoading
|
|
8
12
|
} from "./chunk-CMK4DJDR.js";
|
|
9
|
-
import {
|
|
10
|
-
resolveCommandProps,
|
|
11
|
-
useCommandPalette
|
|
12
|
-
} from "./chunk-6DN4ZULV.js";
|
|
13
13
|
|
|
14
14
|
// src/components/form/Command/Command.tsx
|
|
15
15
|
import CloseIcon from "@mui/icons-material/Close";
|
|
@@ -302,4 +302,4 @@ export {
|
|
|
302
302
|
CommandList,
|
|
303
303
|
CommandGroup
|
|
304
304
|
};
|
|
305
|
-
//# sourceMappingURL=chunk-
|
|
305
|
+
//# sourceMappingURL=chunk-EWT3WMVY.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useAddressAutocomplete
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-4MGFUPQT.js";
|
|
4
4
|
import {
|
|
5
5
|
AddressFallbackField
|
|
6
6
|
} from "./chunk-HKKSZ7HG.js";
|
|
7
7
|
import {
|
|
8
8
|
AddressAutocompleteField
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-KW7H5O3K.js";
|
|
10
10
|
import {
|
|
11
11
|
resolveAddressProps
|
|
12
12
|
} from "./chunk-MTGEJRE4.js";
|
|
@@ -35,4 +35,4 @@ export {
|
|
|
35
35
|
AddressAutocomplete,
|
|
36
36
|
AddressAutocomplete_default
|
|
37
37
|
};
|
|
38
|
-
//# sourceMappingURL=chunk-
|
|
38
|
+
//# sourceMappingURL=chunk-GMTM6EN7.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
chartValueFormatter
|
|
3
|
+
} from "./chunk-QVWNK4JO.js";
|
|
1
4
|
import {
|
|
2
5
|
getChartSpecRenderer,
|
|
3
6
|
getRegisteredChartSpecTypes
|
|
4
7
|
} from "./chunk-WKUA6P3W.js";
|
|
5
|
-
import {
|
|
6
|
-
chartValueFormatter
|
|
7
|
-
} from "./chunk-QVWNK4JO.js";
|
|
8
8
|
|
|
9
9
|
// src/components/data-display/Chart/chart-spec.ts
|
|
10
10
|
var CHART_SEMANTIC_COLORS = [
|
|
@@ -149,4 +149,4 @@ export {
|
|
|
149
149
|
parseChartSpec,
|
|
150
150
|
specToChartProps
|
|
151
151
|
};
|
|
152
|
-
//# sourceMappingURL=chunk-
|
|
152
|
+
//# sourceMappingURL=chunk-GOWBYHYW.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Sheet
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-OTH7H3IP.js";
|
|
4
4
|
import {
|
|
5
5
|
Dialog
|
|
6
6
|
} from "./chunk-YANLN6HP.js";
|
|
@@ -162,4 +162,4 @@ AppHeaderDetails.displayName = "AppHeaderDetails";
|
|
|
162
162
|
export {
|
|
163
163
|
AppHeaderDetails
|
|
164
164
|
};
|
|
165
|
-
//# sourceMappingURL=chunk-
|
|
165
|
+
//# sourceMappingURL=chunk-GVA5CYKP.js.map
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import {
|
|
2
|
+
freshnessOf
|
|
3
|
+
} from "./chunk-XPMGFAJ3.js";
|
|
4
|
+
import {
|
|
5
|
+
FLEET_DOT,
|
|
6
|
+
FLEET_ROSTER,
|
|
7
|
+
FLEET_ROW,
|
|
8
|
+
FLEET_SKELETON
|
|
9
|
+
} from "./chunk-BTQZ3EX3.js";
|
|
10
|
+
import {
|
|
11
|
+
Skeleton
|
|
12
|
+
} from "./chunk-7VN7LFBA.js";
|
|
13
|
+
|
|
14
|
+
// src/components/data-display/FleetMap/FleetRoster.tsx
|
|
15
|
+
import Box from "@mui/material/Box/index.js";
|
|
16
|
+
import Stack from "@mui/material/Stack/index.js";
|
|
17
|
+
import Typography from "@mui/material/Typography/index.js";
|
|
18
|
+
import { useTheme } from "@mui/material/styles/index.js";
|
|
19
|
+
import React from "react";
|
|
20
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
21
|
+
function freshnessColor(freshness, theme) {
|
|
22
|
+
if (freshness === "live") return theme.palette.success.main;
|
|
23
|
+
if (freshness === "lagging") return theme.palette.warning.main;
|
|
24
|
+
return theme.palette.text.disabled;
|
|
25
|
+
}
|
|
26
|
+
function RowText({
|
|
27
|
+
unit,
|
|
28
|
+
copy,
|
|
29
|
+
freshness,
|
|
30
|
+
testId
|
|
31
|
+
}) {
|
|
32
|
+
const theme = useTheme();
|
|
33
|
+
const meta = [
|
|
34
|
+
copy.freshness[freshness],
|
|
35
|
+
copy.lastSeen(unit.staleSeconds),
|
|
36
|
+
unit.accuracyM == null ? null : copy.accuracy(unit.accuracyM)
|
|
37
|
+
].filter((part) => Boolean(part)).join(" \xB7 ");
|
|
38
|
+
return /* @__PURE__ */ jsxs(Stack, { sx: { minWidth: 0, flexGrow: 1 }, children: [
|
|
39
|
+
/* @__PURE__ */ jsx(
|
|
40
|
+
Typography,
|
|
41
|
+
{
|
|
42
|
+
variant: "body2",
|
|
43
|
+
component: "p",
|
|
44
|
+
"data-testid": `${testId}-label`,
|
|
45
|
+
sx: { fontWeight: theme.typography.fontWeightMedium, overflowWrap: "anywhere" },
|
|
46
|
+
children: unit.label
|
|
47
|
+
}
|
|
48
|
+
),
|
|
49
|
+
/* @__PURE__ */ jsx(
|
|
50
|
+
Typography,
|
|
51
|
+
{
|
|
52
|
+
variant: "caption",
|
|
53
|
+
component: "p",
|
|
54
|
+
"data-testid": `${testId}-meta`,
|
|
55
|
+
sx: { color: theme.palette.text.secondary },
|
|
56
|
+
children: meta
|
|
57
|
+
}
|
|
58
|
+
)
|
|
59
|
+
] });
|
|
60
|
+
}
|
|
61
|
+
function useKeptInView(selected, position) {
|
|
62
|
+
const row = React.useRef(null);
|
|
63
|
+
React.useEffect(() => {
|
|
64
|
+
const box = row.current;
|
|
65
|
+
const list = box?.parentElement;
|
|
66
|
+
if (!selected || !box || !list) return;
|
|
67
|
+
const top = box.offsetTop - list.offsetTop;
|
|
68
|
+
if (top < list.scrollTop) {
|
|
69
|
+
list.scrollTop = top;
|
|
70
|
+
} else if (top + box.offsetHeight > list.scrollTop + list.clientHeight) {
|
|
71
|
+
list.scrollTop = top + box.offsetHeight - list.clientHeight;
|
|
72
|
+
}
|
|
73
|
+
}, [selected, position]);
|
|
74
|
+
return row;
|
|
75
|
+
}
|
|
76
|
+
function rowSx(theme, selected) {
|
|
77
|
+
const resting = selected ? theme.palette.action.selected : "transparent";
|
|
78
|
+
return {
|
|
79
|
+
display: "flex",
|
|
80
|
+
alignItems: "center",
|
|
81
|
+
gap: theme.spacing(FLEET_ROW.gapUnits),
|
|
82
|
+
padding: theme.spacing(FLEET_ROW.paddingYUnits, FLEET_ROW.paddingXUnits),
|
|
83
|
+
// `1`, not `theme.shape.borderRadius / 4`. MUI's `sx` reads a NUMBER here as
|
|
84
|
+
// a multiple of `theme.shape.borderRadius`, so dividing the theme value out
|
|
85
|
+
// and letting `sx` multiply it back in is quadratic: measured 4px on the
|
|
86
|
+
// default theme — which is why this looked right — and 36px on a host that
|
|
87
|
+
// sets its own radius to 12. In a package whose whole premise is being
|
|
88
|
+
// re-themed, only the multiple is portable.
|
|
89
|
+
borderRadius: FLEET_ROW.radiusMultiple,
|
|
90
|
+
cursor: "pointer",
|
|
91
|
+
backgroundColor: resting,
|
|
92
|
+
"&:hover": {
|
|
93
|
+
backgroundColor: selected ? theme.palette.action.selected : theme.palette.action.hover
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function FleetRow({
|
|
98
|
+
unit,
|
|
99
|
+
copy,
|
|
100
|
+
freshness,
|
|
101
|
+
selected,
|
|
102
|
+
onSelect,
|
|
103
|
+
optionId,
|
|
104
|
+
position,
|
|
105
|
+
testId
|
|
106
|
+
}) {
|
|
107
|
+
const theme = useTheme();
|
|
108
|
+
const color = freshnessColor(freshness, theme);
|
|
109
|
+
const row = useKeptInView(selected, position);
|
|
110
|
+
return /* @__PURE__ */ jsxs(
|
|
111
|
+
Box,
|
|
112
|
+
{
|
|
113
|
+
ref: row,
|
|
114
|
+
role: "option",
|
|
115
|
+
"aria-selected": selected,
|
|
116
|
+
id: optionId,
|
|
117
|
+
"data-testid": testId,
|
|
118
|
+
"data-freshness": freshness,
|
|
119
|
+
onClick: () => onSelect(unit.id),
|
|
120
|
+
sx: rowSx(theme, selected),
|
|
121
|
+
children: [
|
|
122
|
+
/* @__PURE__ */ jsx(
|
|
123
|
+
Box,
|
|
124
|
+
{
|
|
125
|
+
"aria-hidden": "true",
|
|
126
|
+
"data-testid": `${testId}-dot`,
|
|
127
|
+
sx: {
|
|
128
|
+
width: FLEET_DOT.size,
|
|
129
|
+
height: FLEET_DOT.size,
|
|
130
|
+
borderRadius: "50%",
|
|
131
|
+
flexShrink: 0,
|
|
132
|
+
backgroundColor: color
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
),
|
|
136
|
+
/* @__PURE__ */ jsx(RowText, { unit, copy, freshness, testId }),
|
|
137
|
+
unit.badge && /* @__PURE__ */ jsx(
|
|
138
|
+
Typography,
|
|
139
|
+
{
|
|
140
|
+
variant: "caption",
|
|
141
|
+
component: "span",
|
|
142
|
+
"data-testid": `${testId}-badge`,
|
|
143
|
+
sx: { color: theme.palette.text.secondary, flexShrink: 0 },
|
|
144
|
+
children: unit.badge
|
|
145
|
+
}
|
|
146
|
+
)
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
function FirstLoad({ testId }) {
|
|
152
|
+
return /* @__PURE__ */ jsx(Stack, { spacing: FLEET_SKELETON.gapUnits, "data-testid": `${testId}-skeleton`, "aria-hidden": "true", children: Array.from({ length: FLEET_SKELETON.rows }, (_, row) => /* @__PURE__ */ jsx(
|
|
153
|
+
Skeleton,
|
|
154
|
+
{
|
|
155
|
+
variant: "rectangular",
|
|
156
|
+
height: FLEET_SKELETON.height,
|
|
157
|
+
borderRadius: FLEET_SKELETON.radiusMultiple
|
|
158
|
+
},
|
|
159
|
+
row
|
|
160
|
+
)) });
|
|
161
|
+
}
|
|
162
|
+
function FleetRoster({
|
|
163
|
+
units,
|
|
164
|
+
copy,
|
|
165
|
+
selectedId,
|
|
166
|
+
onSelect,
|
|
167
|
+
laggingAfterSeconds,
|
|
168
|
+
staleAfterSeconds,
|
|
169
|
+
loading,
|
|
170
|
+
testId,
|
|
171
|
+
onKeyDown
|
|
172
|
+
}) {
|
|
173
|
+
const theme = useTheme();
|
|
174
|
+
const rowIdPrefix = React.useId();
|
|
175
|
+
const optionId = (id) => `${rowIdPrefix}-${id}`;
|
|
176
|
+
const active = units.some((unit) => unit.id === selectedId) ? selectedId : null;
|
|
177
|
+
if (loading && units.length === 0) return /* @__PURE__ */ jsx(FirstLoad, { testId });
|
|
178
|
+
return /* @__PURE__ */ jsx(
|
|
179
|
+
Box,
|
|
180
|
+
{
|
|
181
|
+
role: "listbox",
|
|
182
|
+
tabIndex: 0,
|
|
183
|
+
"aria-label": copy.rosterLabel,
|
|
184
|
+
"aria-activedescendant": active ? optionId(active) : void 0,
|
|
185
|
+
"data-testid": `${testId}-roster`,
|
|
186
|
+
onKeyDown,
|
|
187
|
+
sx: {
|
|
188
|
+
display: "flex",
|
|
189
|
+
flexDirection: "column",
|
|
190
|
+
gap: theme.spacing(FLEET_ROSTER.gapUnits),
|
|
191
|
+
overflowY: "auto",
|
|
192
|
+
minWidth: 0,
|
|
193
|
+
"&:focus-visible": {
|
|
194
|
+
outline: `${FLEET_ROSTER.focusRingWidth}px solid ${theme.palette.primary.main}`,
|
|
195
|
+
outlineOffset: FLEET_ROSTER.focusRingOffset
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
children: units.map((unit, index) => /* @__PURE__ */ jsx(
|
|
199
|
+
FleetRow,
|
|
200
|
+
{
|
|
201
|
+
unit,
|
|
202
|
+
copy,
|
|
203
|
+
freshness: freshnessOf(unit.staleSeconds, laggingAfterSeconds, staleAfterSeconds),
|
|
204
|
+
selected: unit.id === active,
|
|
205
|
+
onSelect,
|
|
206
|
+
optionId: optionId(unit.id),
|
|
207
|
+
position: index,
|
|
208
|
+
testId: `${testId}-${unit.id}`
|
|
209
|
+
},
|
|
210
|
+
unit.id
|
|
211
|
+
))
|
|
212
|
+
}
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
export {
|
|
217
|
+
FleetRoster
|
|
218
|
+
};
|
|
219
|
+
//# sourceMappingURL=chunk-HMV4QMXS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/FleetMap/FleetRoster.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport Stack from '@mui/material/Stack/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { useTheme, type SxProps, type Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { Skeleton } from '../../layout/Skeleton/Skeleton';\n\nimport { freshnessOf } from './FleetMap.helpers';\nimport { FLEET_DOT, FLEET_ROSTER, FLEET_ROW, FLEET_SKELETON } from './FleetMap.metrics';\nimport type { FleetFreshness, FleetMapCopy, FleetUnit } from './FleetMap.types';\n\n/**\n * The roster beside the map — and the ACCESSIBLE half of this component.\n *\n * A map is a picture of positions and a screen reader cannot read a picture, so\n * the panel's information is carried by this list. That is not a consolation\n * prize: the list answers the questions a dispatcher actually asks — who is\n * reporting, how recently, and what are they carrying — and it answers them in\n * an order the map cannot express.\n *\n * The map beside it is a NAMED LANDMARK rather than an `aria-hidden` one, so a\n * reader can skip it in one gesture — see `FleetCanvas`, which carries the\n * reason it must not be hidden.\n */\n\n/** Each freshness draws from the semantic palette, never a hardcoded hex. */\nfunction freshnessColor(freshness: FleetFreshness, theme: Theme): string {\n if (freshness === 'live') return theme.palette.success.main;\n if (freshness === 'lagging') return theme.palette.warning.main;\n return theme.palette.text.disabled;\n}\n\n/**\n * A row's two lines of text — the name, and the one-line summary under it.\n *\n * Split out of `FleetRow` to keep that function under the size gate, and the\n * seam is the natural one: everything here is READ, nothing is interactive.\n */\nfunction RowText({\n unit,\n copy,\n freshness,\n testId,\n}: Pick<RowProps, 'unit' | 'copy' | 'freshness' | 'testId'>): React.JSX.Element {\n const theme = useTheme();\n\n // Dropped rather than rendered empty: a phone that reports no accuracy radius\n // would otherwise print a trailing separator with nothing after it.\n const meta = [\n copy.freshness[freshness],\n copy.lastSeen(unit.staleSeconds),\n unit.accuracyM == null ? null : copy.accuracy(unit.accuracyM),\n ]\n .filter((part): part is string => Boolean(part))\n .join(' · ');\n\n return (\n <Stack sx={{ minWidth: 0, flexGrow: 1 }}>\n <Typography\n variant=\"body2\"\n component=\"p\"\n data-testid={`${testId}-label`}\n sx={{ fontWeight: theme.typography.fontWeightMedium, overflowWrap: 'anywhere' }}\n >\n {unit.label}\n </Typography>\n <Typography\n variant=\"caption\"\n component=\"p\"\n data-testid={`${testId}-meta`}\n sx={{ color: theme.palette.text.secondary }}\n >\n {meta}\n </Typography>\n </Stack>\n );\n}\n\n/**\n * Keep the selected row visible INSIDE the roster.\n *\n * The roster caps its own height, so a dispatcher arrowing through a fleet of\n * thirty otherwise walks the selection below the fold with nothing moving —\n * `aria-activedescendant` follows, and a SIGHTED keyboard user sees no feedback\n * at all.\n *\n * Watches the row's POSITION as well as its selectedness, because the roster\n * re-sorts on every poll: a rider who stays selected while their staleness\n * moves them down the list would otherwise slide out of view with the effect\n * never re-running.\n *\n * Arithmetic rather than `scrollIntoView({ block: 'nearest' })` because that\n * walks every scrollable ancestor, the document included, and `nearest` only\n * spares an ancestor the row is already visible in — which is exactly false\n * when the panel is off screen. Re-running on every re-sort, it would yank the\n * whole page back to the map on a timer, and drag it there on mount for any\n * board rendered below the fold with a selection already set.\n */\nfunction useKeptInView(\n selected: boolean,\n position: number,\n): React.RefObject<HTMLDivElement | null> {\n const row = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n const box = row.current;\n const list = box?.parentElement;\n if (!selected || !box || !list) return;\n const top = box.offsetTop - list.offsetTop;\n if (top < list.scrollTop) {\n list.scrollTop = top;\n } else if (top + box.offsetHeight > list.scrollTop + list.clientHeight) {\n list.scrollTop = top + box.offsetHeight - list.clientHeight;\n }\n }, [selected, position]);\n\n return row;\n}\n\n/**\n * A row's own box, selected or not.\n *\n * Out of line because the hover rule needs the explanation more than the JSX\n * has room for: hover must never WEAKEN the selection. Written flat as\n * `'&:hover': { backgroundColor: action.hover }`, the pseudo-class wins on\n * specificity and repaints the selected row with the hover tint — measured at\n * `rgba(0,0,0,0.08)` idle against `rgba(0,0,0,0.04)` hovered, so pointing at\n * the selected row visually DESELECTED it and made it indistinguishable from\n * any other row under the cursor.\n */\nfunction rowSx(theme: Theme, selected: boolean): SxProps<Theme> {\n const resting = selected ? theme.palette.action.selected : 'transparent';\n return {\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(FLEET_ROW.gapUnits),\n padding: theme.spacing(FLEET_ROW.paddingYUnits, FLEET_ROW.paddingXUnits),\n // `1`, not `theme.shape.borderRadius / 4`. MUI's `sx` reads a NUMBER here as\n // a multiple of `theme.shape.borderRadius`, so dividing the theme value out\n // and letting `sx` multiply it back in is quadratic: measured 4px on the\n // default theme — which is why this looked right — and 36px on a host that\n // sets its own radius to 12. In a package whose whole premise is being\n // re-themed, only the multiple is portable.\n borderRadius: FLEET_ROW.radiusMultiple,\n cursor: 'pointer',\n backgroundColor: resting,\n '&:hover': {\n backgroundColor: selected ? theme.palette.action.selected : theme.palette.action.hover,\n },\n };\n}\n\ninterface RowProps {\n unit: FleetUnit;\n copy: FleetMapCopy;\n freshness: FleetFreshness;\n selected: boolean;\n onSelect: (id: string) => void;\n /** The row's DOM id, which `aria-activedescendant` points at. */\n optionId: string;\n /** Where the row sits in the re-sorted roster — see the scroll effect. */\n position: number;\n testId: string;\n}\n\nfunction FleetRow({\n unit,\n copy,\n freshness,\n selected,\n onSelect,\n optionId,\n position,\n testId,\n}: RowProps): React.JSX.Element {\n const theme = useTheme();\n const color = freshnessColor(freshness, theme);\n const row = useKeptInView(selected, position);\n\n return (\n <Box\n ref={row}\n role=\"option\"\n aria-selected={selected}\n id={optionId}\n data-testid={testId}\n data-freshness={freshness}\n onClick={() => onSelect(unit.id)}\n sx={rowSx(theme, selected)}\n >\n {/* The dot repeats what the freshness word beside it already says, so it\n is hidden rather than read twice — and colour is never the only\n carrier of the state. */}\n <Box\n aria-hidden=\"true\"\n data-testid={`${testId}-dot`}\n sx={{\n width: FLEET_DOT.size,\n height: FLEET_DOT.size,\n borderRadius: '50%',\n flexShrink: 0,\n backgroundColor: color,\n }}\n />\n <RowText unit={unit} copy={copy} freshness={freshness} testId={testId} />\n {unit.badge && (\n <Typography\n variant=\"caption\"\n component=\"span\"\n data-testid={`${testId}-badge`}\n sx={{ color: theme.palette.text.secondary, flexShrink: 0 }}\n >\n {unit.badge}\n </Typography>\n )}\n </Box>\n );\n}\n\n/**\n * What stands in for the roster before any unit has landed.\n *\n * `aria-hidden`, because three grey bars are not information — the panel's\n * `aria-busy` and its optional announcement carry that. The radius is the same\n * MULTIPLE a real row uses rather than a raw pixel count: `Skeleton` forwards\n * the number into `sx`, where it scales with `theme.shape.borderRadius`, so a\n * literal `4` drew 16px against the rows' 4px on the default theme and 48px\n * against 12px on a re-themed host.\n */\nfunction FirstLoad({ testId }: { testId: string }): React.JSX.Element {\n return (\n <Stack spacing={FLEET_SKELETON.gapUnits} data-testid={`${testId}-skeleton`} aria-hidden=\"true\">\n {Array.from({ length: FLEET_SKELETON.rows }, (_, row) => (\n <Skeleton\n key={row}\n variant=\"rectangular\"\n height={FLEET_SKELETON.height}\n borderRadius={FLEET_SKELETON.radiusMultiple}\n />\n ))}\n </Stack>\n );\n}\n\nexport interface FleetRosterProps {\n units: readonly FleetUnit[];\n copy: FleetMapCopy;\n selectedId: string | null | undefined;\n onSelect: (id: string) => void;\n laggingAfterSeconds: number;\n staleAfterSeconds: number;\n loading: boolean;\n testId: string;\n onKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) => void;\n}\n\nexport function FleetRoster({\n units,\n copy,\n selectedId,\n onSelect,\n laggingAfterSeconds,\n staleAfterSeconds,\n loading,\n testId,\n onKeyDown,\n}: FleetRosterProps): React.JSX.Element {\n const theme = useTheme();\n // Generated, not derived from `dataTestId`: two boards on one page filtered\n // from the same fleet would otherwise emit duplicate DOM ids and an ambiguous\n // `aria-activedescendant`. Same reason the heading uses one.\n const rowIdPrefix = React.useId();\n const optionId = (id: string): string => `${rowIdPrefix}-${id}`;\n\n // The selection is CONTROLLED, so it can name a unit that has since dropped\n // out of the freshness window — a courier ending their shift mid-poll. The\n // attribute must then be absent rather than pointing at an element that no\n // longer renders, which announces nothing and fails an axe audit. `mapCentre`\n // and `nextSelection` both handle the same case; this is the third place.\n const active = units.some((unit) => unit.id === selectedId) ? selectedId : null;\n\n // Only when there is nothing to show yet. Unmounting a populated listbox on\n // every poll destroys the focus inside it, so a dispatcher arrowing through\n // the roster is thrown back to the top of the page each time the data\n // refreshes — and the rows they were reading vanish and return.\n if (loading && units.length === 0) return <FirstLoad testId={testId} />;\n\n return (\n <Box\n role=\"listbox\"\n // A single tab stop with arrow keys inside, which is the listbox pattern:\n // a dispatcher tabbing past a fleet of thirty should not have to press it\n // thirty times to reach the map.\n tabIndex={0}\n aria-label={copy.rosterLabel}\n aria-activedescendant={active ? optionId(active) : undefined}\n data-testid={`${testId}-roster`}\n onKeyDown={onKeyDown}\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(FLEET_ROSTER.gapUnits),\n overflowY: 'auto',\n minWidth: 0,\n '&:focus-visible': {\n outline: `${FLEET_ROSTER.focusRingWidth}px solid ${theme.palette.primary.main}`,\n outlineOffset: FLEET_ROSTER.focusRingOffset,\n },\n }}\n >\n {units.map((unit, index) => (\n <FleetRow\n key={unit.id}\n unit={unit}\n copy={copy}\n freshness={freshnessOf(unit.staleSeconds, laggingAfterSeconds, staleAfterSeconds)}\n selected={unit.id === active}\n onSelect={onSelect}\n optionId={optionId(unit.id)}\n position={index}\n testId={`${testId}-${unit.id}`}\n />\n ))}\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-KHG57NAE.js";
|
|
4
4
|
import {
|
|
5
5
|
Pagination
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RBGOGTT2.js";
|
|
7
7
|
import {
|
|
8
8
|
default as default2
|
|
9
9
|
} from "./chunk-6DPAWXZ3.js";
|
|
@@ -31,4 +31,4 @@ function DataViewsPagination({
|
|
|
31
31
|
export {
|
|
32
32
|
DataViewsPagination
|
|
33
33
|
};
|
|
34
|
-
//# sourceMappingURL=chunk-
|
|
34
|
+
//# sourceMappingURL=chunk-HP2ODXNA.js.map
|
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
} from "./chunk-5WNQJ5KS.js";
|
|
5
5
|
import {
|
|
6
6
|
PillControl
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-EJQW2IYW.js";
|
|
8
8
|
import {
|
|
9
9
|
MoreFilters
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-6LGWJFQK.js";
|
|
11
11
|
import {
|
|
12
12
|
RangePill
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-DFLTUI7W.js";
|
|
14
14
|
import {
|
|
15
15
|
CollapsedSearch,
|
|
16
16
|
InlineKeyword
|
|
@@ -220,4 +220,4 @@ function FilterSlots({
|
|
|
220
220
|
export {
|
|
221
221
|
InlineFilterControls
|
|
222
222
|
};
|
|
223
|
-
//# sourceMappingURL=chunk-
|
|
223
|
+
//# sourceMappingURL=chunk-I3E2QHTH.js.map
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useDateRangePicker
|
|
3
|
+
} from "./chunk-OD4Z5G6G.js";
|
|
1
4
|
import {
|
|
2
5
|
DateRangeQuickList
|
|
3
6
|
} from "./chunk-ZRHSIFWA.js";
|
|
@@ -7,9 +10,6 @@ import {
|
|
|
7
10
|
import {
|
|
8
11
|
DEFAULT_QUICK_RANGES
|
|
9
12
|
} from "./chunk-QKLSHNOH.js";
|
|
10
|
-
import {
|
|
11
|
-
useDateRangePicker
|
|
12
|
-
} from "./chunk-OD4Z5G6G.js";
|
|
13
13
|
import {
|
|
14
14
|
toLocalDay
|
|
15
15
|
} from "./chunk-FRAVVI4A.js";
|
|
@@ -180,4 +180,4 @@ export {
|
|
|
180
180
|
DateRangePicker,
|
|
181
181
|
DateRangePicker_default
|
|
182
182
|
};
|
|
183
|
-
//# sourceMappingURL=chunk-
|
|
183
|
+
//# sourceMappingURL=chunk-IPVYEPXO.js.map
|
|
@@ -3,7 +3,10 @@ import {
|
|
|
3
3
|
} from "./chunk-LMXWI3DD.js";
|
|
4
4
|
import {
|
|
5
5
|
CategoryPanel
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-TPLKJHNN.js";
|
|
7
|
+
import {
|
|
8
|
+
useCategoryCommit
|
|
9
|
+
} from "./chunk-ZAB65STX.js";
|
|
7
10
|
import {
|
|
8
11
|
CategoryTrigger
|
|
9
12
|
} from "./chunk-KIHQE5YA.js";
|
|
@@ -16,9 +19,6 @@ import {
|
|
|
16
19
|
import {
|
|
17
20
|
useCategoryKeyHandler
|
|
18
21
|
} from "./chunk-ISH42UC7.js";
|
|
19
|
-
import {
|
|
20
|
-
useCategoryCommit
|
|
21
|
-
} from "./chunk-ZAB65STX.js";
|
|
22
22
|
import {
|
|
23
23
|
summarizeSelection
|
|
24
24
|
} from "./chunk-LR6MSKTT.js";
|
|
@@ -158,4 +158,4 @@ function CategorySelect(props) {
|
|
|
158
158
|
export {
|
|
159
159
|
CategorySelect
|
|
160
160
|
};
|
|
161
|
-
//# sourceMappingURL=chunk-
|
|
161
|
+
//# sourceMappingURL=chunk-JM64OEU6.js.map
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AVATAR_DEFAULTS,
|
|
3
|
-
contentTypeOf,
|
|
4
|
-
pickAvatarContent
|
|
5
|
-
} from "./chunk-3ZVUNSFF.js";
|
|
6
1
|
import {
|
|
7
2
|
AvatarView
|
|
8
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-NA7MIEG6.js";
|
|
9
4
|
import {
|
|
10
5
|
BORDER_WIDTH,
|
|
11
6
|
GROUP_HOVER,
|
|
12
7
|
GROUP_MAX,
|
|
13
8
|
GROUP_OVERLAP
|
|
14
9
|
} from "./chunk-FAITHWIO.js";
|
|
10
|
+
import {
|
|
11
|
+
AVATAR_DEFAULTS,
|
|
12
|
+
contentTypeOf,
|
|
13
|
+
pickAvatarContent
|
|
14
|
+
} from "./chunk-3ZVUNSFF.js";
|
|
15
15
|
|
|
16
16
|
// src/components/data-display/Avatar/Avatar.tsx
|
|
17
17
|
import BrokenImage from "@mui/icons-material/BrokenImage";
|
|
@@ -172,4 +172,4 @@ export {
|
|
|
172
172
|
Avatar,
|
|
173
173
|
AvatarGroup
|
|
174
174
|
};
|
|
175
|
-
//# sourceMappingURL=chunk-
|
|
175
|
+
//# sourceMappingURL=chunk-JUHUKZGU.js.map
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useFleetMap
|
|
3
|
+
} from "./chunk-ZCPSND5Y.js";
|
|
4
|
+
import {
|
|
5
|
+
FleetBody
|
|
6
|
+
} from "./chunk-RP5FK3SO.js";
|
|
7
|
+
import {
|
|
8
|
+
FLEET_DEFAULT_LAGGING_AFTER_SECONDS,
|
|
9
|
+
FLEET_DEFAULT_STALE_AFTER_SECONDS,
|
|
10
|
+
FLEET_PANEL
|
|
11
|
+
} from "./chunk-BTQZ3EX3.js";
|
|
12
|
+
import {
|
|
13
|
+
SR_ONLY_SX
|
|
14
|
+
} from "./chunk-RNCQ5KHQ.js";
|
|
15
|
+
import {
|
|
16
|
+
EmptyState
|
|
17
|
+
} from "./chunk-25R3ITGZ.js";
|
|
18
|
+
|
|
19
|
+
// src/components/data-display/FleetMap/FleetMap.tsx
|
|
20
|
+
import Box from "@mui/material/Box/index.js";
|
|
21
|
+
import Typography from "@mui/material/Typography/index.js";
|
|
22
|
+
import { useTheme } from "@mui/material/styles/index.js";
|
|
23
|
+
import React from "react";
|
|
24
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
25
|
+
var DEFAULT_HEIGHT = "420px";
|
|
26
|
+
function FleetStatus({
|
|
27
|
+
announcement,
|
|
28
|
+
loading,
|
|
29
|
+
testId
|
|
30
|
+
}) {
|
|
31
|
+
if (announcement === void 0) return null;
|
|
32
|
+
return /* @__PURE__ */ jsx(Box, { role: "status", "aria-live": "polite", "data-testid": `${testId}-status`, sx: SR_ONLY_SX, children: loading ? announcement : "" });
|
|
33
|
+
}
|
|
34
|
+
var FleetMap = React.memo(
|
|
35
|
+
({
|
|
36
|
+
units,
|
|
37
|
+
copy,
|
|
38
|
+
// NO default. `undefined` is what tells the hook the caller does not own
|
|
39
|
+
// the selection; defaulting it to `null` here made every render look
|
|
40
|
+
// controlled and the uncontrolled path unreachable.
|
|
41
|
+
selectedId,
|
|
42
|
+
onSelect,
|
|
43
|
+
laggingAfterSeconds = FLEET_DEFAULT_LAGGING_AFTER_SECONDS,
|
|
44
|
+
staleAfterSeconds = FLEET_DEFAULT_STALE_AFTER_SECONDS,
|
|
45
|
+
height = DEFAULT_HEIGHT,
|
|
46
|
+
loading = false,
|
|
47
|
+
className,
|
|
48
|
+
dataTestId
|
|
49
|
+
}) => {
|
|
50
|
+
const theme = useTheme();
|
|
51
|
+
const testId = dataTestId || "fleet-map";
|
|
52
|
+
const headingId = React.useId();
|
|
53
|
+
const { ordered, active, centre, select, markers, onKeyDown } = useFleetMap(
|
|
54
|
+
units,
|
|
55
|
+
selectedId,
|
|
56
|
+
onSelect
|
|
57
|
+
);
|
|
58
|
+
return /* @__PURE__ */ jsxs(
|
|
59
|
+
Box,
|
|
60
|
+
{
|
|
61
|
+
role: "region",
|
|
62
|
+
"aria-labelledby": headingId,
|
|
63
|
+
className,
|
|
64
|
+
"data-testid": testId,
|
|
65
|
+
sx: { display: "flex", flexDirection: "column", gap: theme.spacing(FLEET_PANEL.gapUnits), minWidth: 0 },
|
|
66
|
+
children: [
|
|
67
|
+
/* @__PURE__ */ jsx(
|
|
68
|
+
Typography,
|
|
69
|
+
{
|
|
70
|
+
id: headingId,
|
|
71
|
+
variant: "subtitle1",
|
|
72
|
+
component: "h2",
|
|
73
|
+
"data-testid": `${testId}-title`,
|
|
74
|
+
sx: { fontWeight: theme.typography.fontWeightMedium },
|
|
75
|
+
children: copy.title
|
|
76
|
+
}
|
|
77
|
+
),
|
|
78
|
+
/* @__PURE__ */ jsx(FleetStatus, { announcement: copy.loading, loading, testId }),
|
|
79
|
+
!loading && ordered.length === 0 ? /* @__PURE__ */ jsx(
|
|
80
|
+
EmptyState,
|
|
81
|
+
{
|
|
82
|
+
variant: "minimal",
|
|
83
|
+
title: copy.emptyTitle,
|
|
84
|
+
description: copy.emptyDescription,
|
|
85
|
+
dataTestId: `${testId}-empty`
|
|
86
|
+
}
|
|
87
|
+
) : /* @__PURE__ */ jsx(
|
|
88
|
+
FleetBody,
|
|
89
|
+
{
|
|
90
|
+
ordered,
|
|
91
|
+
centre,
|
|
92
|
+
markers,
|
|
93
|
+
select,
|
|
94
|
+
onKeyDown,
|
|
95
|
+
copy,
|
|
96
|
+
selectedId: active,
|
|
97
|
+
laggingAfterSeconds,
|
|
98
|
+
staleAfterSeconds,
|
|
99
|
+
height,
|
|
100
|
+
loading,
|
|
101
|
+
testId
|
|
102
|
+
}
|
|
103
|
+
)
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
);
|
|
109
|
+
FleetMap.displayName = "FleetMap";
|
|
110
|
+
var FleetMap_default = FleetMap;
|
|
111
|
+
|
|
112
|
+
export {
|
|
113
|
+
FleetMap,
|
|
114
|
+
FleetMap_default
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=chunk-JZXWCEH5.js.map
|