@12-apps/ui 6.93.0 → 6.93.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components-catalog.md +9 -2
- package/components-guidelines.md +30 -0
- package/dist/_internal/components/data-display/AlertDialog/AlertDialog.js +2 -2
- package/dist/_internal/components/data-display/AlertDialog/AlertDialog.parts.js +9 -3
- package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +3 -3
- 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/CardKit/use-remove-confirm.js +7 -7
- package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +7 -7
- package/dist/_internal/components/data-display/Carousel/Carousel.js +3 -3
- 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/DataViews/DataViewsGrid.js +31 -31
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +42 -42
- package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +7 -7
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +2 -2
- package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +2 -2
- 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 -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 +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +26 -26
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-range-bounds.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +5 -5
- 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 +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +6 -6
- 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 +3 -3
- package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.js +25 -0
- package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.js.map +1 -0
- package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.styles.js +23 -0
- package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.styles.js.map +1 -0
- package/dist/_internal/components/data-display/DayRuler/DayRuler.js +14 -12
- package/dist/_internal/components/data-display/DayRuler/DayRuler.keyboard.js +3 -3
- package/dist/_internal/components/data-display/DayRuler/DayRuler.metrics.js +1 -1
- package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js +12 -15
- package/dist/_internal/components/data-display/DayRuler/DayRuler.styles.js +3 -11
- package/dist/_internal/components/data-display/DayRuler/day-ruler-model.js +5 -1
- package/dist/_internal/components/data-display/DayRuler/useRulerDrag.js +3 -3
- package/dist/_internal/components/data-display/DayRuler/useTextFits.js +4 -3
- package/dist/_internal/components/data-display/ErrorState/ErrorState.js +2 -2
- package/dist/_internal/components/data-display/ErrorState/ErrorState.metrics.js +3 -1
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.js +6 -6
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.parts.js +5 -5
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.styles.js +2 -2
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleNameCell.js +3 -3
- package/dist/_internal/components/data-display/ScheduleGrid/schedule-name.styles.js +2 -2
- package/dist/_internal/components/data-display/ScheduleGrid/schedule-tones.js +3 -1
- package/dist/_internal/components/data-display/index.js +41 -39
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +4 -4
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.parts.js +3 -3
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +5 -5
- package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +4 -4
- package/dist/_internal/components/feedback/index.js +6 -6
- package/dist/_internal/components/index.js +52 -50
- 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 +9 -9
- package/dist/_internal/user-avatar/user-avatar.js +3 -3
- package/dist/charts.js +13 -13
- package/dist/{chunk-LDCZPZPD.js → chunk-24HHUCWB.js} +2 -2
- package/dist/{chunk-7ZQ3KQ7J.js → chunk-273OLFJD.js} +16 -6
- package/dist/chunk-273OLFJD.js.map +1 -0
- package/dist/{chunk-FAUNQ3FS.js → chunk-2M3W6ACW.js} +3 -3
- package/dist/{chunk-ALOEOGQV.js → chunk-3TZUZXY5.js} +2 -2
- package/dist/{chunk-4HK4FVMV.js → chunk-3UAHDLKH.js} +7 -1
- package/dist/{chunk-4HK4FVMV.js.map → chunk-3UAHDLKH.js.map} +1 -1
- package/dist/{chunk-F5H3WDG7.js → chunk-4E2RQOSQ.js} +2 -2
- package/dist/{chunk-JIEVKHOH.js → chunk-4J62V5OE.js} +6 -6
- package/dist/{chunk-OJZLFFG4.js → chunk-5AZEDQXX.js} +59 -70
- package/dist/chunk-5AZEDQXX.js.map +1 -0
- package/dist/{chunk-CZVAVX5L.js → chunk-6ATXOJVQ.js} +2 -2
- package/dist/{chunk-E2UOEI7N.js → chunk-6LGKJVOA.js} +2 -2
- package/dist/{chunk-XBWW3QSI.js → chunk-7WE432RQ.js} +9 -9
- package/dist/{chunk-5357QUVE.js → chunk-AMLHEKSV.js} +5 -5
- package/dist/{chunk-HSVSU7I2.js → chunk-ASEHJIIV.js} +3 -3
- package/dist/{chunk-FYUNROLW.js → chunk-BZYLTGOE.js} +2 -2
- package/dist/{chunk-TZ44F6W7.js → chunk-CGS2LQE5.js} +2 -2
- package/dist/{chunk-KPUUHAK6.js → chunk-CWXX5JR3.js} +11 -9
- package/dist/chunk-CWXX5JR3.js.map +1 -0
- package/dist/{chunk-6HXNFNOB.js → chunk-EE6DJPB7.js} +4 -4
- package/dist/{chunk-OM6ZT64U.js → chunk-F2UP5ZF4.js} +3 -3
- package/dist/{chunk-P53ANKZV.js → chunk-F7LBTMCA.js} +4 -4
- package/dist/{chunk-6HPVCDVU.js → chunk-FGZIEZEP.js} +69 -112
- package/dist/chunk-FGZIEZEP.js.map +1 -0
- package/dist/{chunk-IWSTMVCA.js → chunk-FKS2PNJF.js} +8 -8
- package/dist/{chunk-3WYEENUH.js → chunk-FPNVOB52.js} +7 -7
- package/dist/{chunk-E73C73UD.js → chunk-FYSS2PYA.js} +3 -3
- package/dist/{chunk-N557OEZR.js → chunk-G6NMSBSQ.js} +2 -2
- package/dist/{chunk-A5OERY43.js → chunk-GARM5SX6.js} +2 -2
- package/dist/{chunk-WJMSND5Q.js → chunk-GXGHEOWC.js} +2 -2
- package/dist/{chunk-U2SAW6DH.js → chunk-GY53SDVL.js} +4 -4
- package/dist/{chunk-MFX4ASX5.js → chunk-HWZETMO4.js} +3 -3
- package/dist/{chunk-HBH7V3IP.js → chunk-I6IFUFLW.js} +5 -3
- package/dist/chunk-I6IFUFLW.js.map +1 -0
- package/dist/{chunk-MM3QESLI.js → chunk-ILJ3FXIC.js} +2 -2
- package/dist/{chunk-K6VEN5VN.js → chunk-K3PMMW23.js} +4 -4
- package/dist/{chunk-T5RFH2T5.js → chunk-KOGJBAFI.js} +2 -2
- package/dist/{chunk-COK65GX2.js → chunk-KURE5R7Z.js} +12 -2
- package/dist/chunk-KURE5R7Z.js.map +1 -0
- package/dist/{chunk-MAYAJXO6.js → chunk-KXDLLS62.js} +5 -5
- package/dist/{chunk-LE5JYNR7.js → chunk-L5CAHQIN.js} +23 -2
- package/dist/chunk-L5CAHQIN.js.map +1 -0
- package/dist/{chunk-DBI6AMNY.js → chunk-LKWXU6NH.js} +4 -4
- package/dist/chunk-MPVH2GM5.js +83 -0
- package/dist/chunk-MPVH2GM5.js.map +1 -0
- package/dist/{chunk-6DO672AG.js → chunk-N5PVD4J5.js} +7 -7
- package/dist/{chunk-ZYZPSBNQ.js → chunk-OGSTMHT6.js} +22 -7
- package/dist/chunk-OGSTMHT6.js.map +1 -0
- package/dist/{chunk-TLGGVE56.js → chunk-OTVOQHZB.js} +3 -1
- package/dist/{chunk-TLGGVE56.js.map → chunk-OTVOQHZB.js.map} +1 -1
- package/dist/{chunk-7F6D73NL.js → chunk-RLTGD5WJ.js} +2 -2
- package/dist/{chunk-R52N5UCS.js → chunk-SB2SEGR6.js} +2 -2
- package/dist/{chunk-Z2WZDVGG.js → chunk-SI5SKX52.js} +2 -2
- package/dist/{chunk-RYJ6XGFA.js → chunk-SJAOQGQI.js} +2 -2
- package/dist/{chunk-D7R6SRJB.js → chunk-SKQPUAMK.js} +3 -3
- package/dist/{chunk-AMIUZRDQ.js → chunk-SNWCT6JN.js} +3 -3
- package/dist/{chunk-7W5X3KQ2.js → chunk-SW7JCF4Z.js} +2 -2
- package/dist/{chunk-BNBWUXT3.js → chunk-TE6HAWDM.js} +2 -2
- package/dist/{chunk-JG733RMP.js → chunk-TZC6KIK2.js} +5 -5
- package/dist/{chunk-4QGKR65P.js → chunk-U4Z6GZDW.js} +5 -5
- package/dist/{chunk-XFZDO2KB.js → chunk-UIIHUWOV.js} +13 -13
- package/dist/{chunk-L4V7FZJI.js → chunk-UKUGSU3Y.js} +2 -2
- package/dist/{chunk-VJIJCLUX.js → chunk-UOKXYV3U.js} +2 -2
- package/dist/{chunk-K7IDOTSU.js → chunk-VNMD6BA4.js} +2 -2
- package/dist/chunk-WG7CAT5D.js +65 -0
- package/dist/chunk-WG7CAT5D.js.map +1 -0
- package/dist/chunk-WSSD7H5E.js +52 -0
- package/dist/chunk-WSSD7H5E.js.map +1 -0
- package/dist/{chunk-DTZOP4ZR.js → chunk-XCUHGPPZ.js} +2 -2
- package/dist/{chunk-3YFDGFEK.js → chunk-Y7BOP7VZ.js} +2 -2
- package/dist/{chunk-XNAI7QGU.js → chunk-ZM6FJCWS.js} +4 -4
- package/dist/{chunk-FC7UCFFA.js → chunk-ZPWPA6FR.js} +8 -8
- package/dist/data-display/AlertDialog.js +2 -2
- package/dist/data-display/AsyncStateContainer.js +3 -3
- 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 +3 -3
- package/dist/data-display/Chart.js +13 -13
- package/dist/data-display/DataViews.js +56 -56
- package/dist/data-display/DayRuler.js +14 -12
- package/dist/data-display/ErrorState.js +2 -2
- package/dist/data-display/ScheduleGrid.js +6 -6
- package/dist/feedback/ConfirmAction.js +6 -6
- package/dist/native/data-display/ErrorState.js.map +1 -1
- package/dist/navigation/SectionNav.js +9 -9
- package/dist/types/components/data-display/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/types/components/data-display/AlertDialog/AlertDialog.parts.d.ts +11 -0
- package/dist/types/components/data-display/AlertDialog/AlertDialog.parts.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.footer.d.ts +16 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.footer.d.ts.map +1 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.footer.styles.d.ts +18 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.footer.styles.d.ts.map +1 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.metrics.d.ts +15 -5
- package/dist/types/components/data-display/DayRuler/DayRuler.metrics.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.parts.d.ts +13 -14
- package/dist/types/components/data-display/DayRuler/DayRuler.parts.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts +20 -23
- package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.types.d.ts +13 -3
- package/dist/types/components/data-display/DayRuler/DayRuler.types.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/day-ruler-model.d.ts +27 -0
- package/dist/types/components/data-display/DayRuler/day-ruler-model.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/useTextFits.d.ts +11 -9
- package/dist/types/components/data-display/DayRuler/useTextFits.d.ts.map +1 -1
- package/dist/types/components/data-display/ErrorState/ErrorState.d.ts.map +1 -1
- package/dist/types/components/data-display/ErrorState/ErrorState.metrics.d.ts +5 -0
- package/dist/types/components/data-display/ErrorState/ErrorState.metrics.d.ts.map +1 -1
- package/dist/types/components/data-display/ScheduleGrid/schedule-tones.d.ts +8 -0
- package/dist/types/components/data-display/ScheduleGrid/schedule-tones.d.ts.map +1 -1
- package/dist/types-native/components/data-display/ErrorState/ErrorState.metrics.d.ts +5 -0
- package/dist/types-native/components/data-display/ErrorState/ErrorState.metrics.d.ts.map +1 -1
- package/dist/user-avatar.js +3 -3
- package/package.json +1 -1
- package/src/components/data-display/AlertDialog/AlertDialog.md +25 -1
- package/src/components/data-display/AlertDialog/AlertDialog.parts.tsx +28 -0
- package/src/components/data-display/AlertDialog/AlertDialog.tsx +34 -5
- package/src/components/data-display/DayRuler/DayRuler.footer.styles.ts +54 -0
- package/src/components/data-display/DayRuler/DayRuler.footer.tsx +123 -0
- package/src/components/data-display/DayRuler/DayRuler.md +37 -13
- package/src/components/data-display/DayRuler/DayRuler.metrics.ts +15 -5
- package/src/components/data-display/DayRuler/DayRuler.parts.tsx +86 -155
- package/src/components/data-display/DayRuler/DayRuler.styles.ts +89 -83
- package/src/components/data-display/DayRuler/DayRuler.tsx +3 -2
- package/src/components/data-display/DayRuler/DayRuler.types.ts +13 -3
- package/src/components/data-display/DayRuler/day-ruler-model.ts +45 -0
- package/src/components/data-display/DayRuler/useTextFits.ts +68 -25
- package/src/components/data-display/ErrorState/ErrorState.metrics.ts +5 -0
- package/src/components/data-display/ErrorState/ErrorState.tsx +2 -0
- package/src/components/data-display/ScheduleGrid/schedule-tones.ts +13 -0
- package/src/components/feedback/ConfirmAction/ConfirmAction.md +10 -0
- package/dist/chunk-6HPVCDVU.js.map +0 -1
- package/dist/chunk-7ZQ3KQ7J.js.map +0 -1
- package/dist/chunk-COK65GX2.js.map +0 -1
- package/dist/chunk-HBH7V3IP.js.map +0 -1
- package/dist/chunk-KPUUHAK6.js.map +0 -1
- package/dist/chunk-LE5JYNR7.js.map +0 -1
- package/dist/chunk-OJZLFFG4.js.map +0 -1
- package/dist/chunk-YMYJO2CZ.js +0 -32
- package/dist/chunk-YMYJO2CZ.js.map +0 -1
- package/dist/chunk-ZYZPSBNQ.js.map +0 -1
- /package/dist/{chunk-LDCZPZPD.js.map → chunk-24HHUCWB.js.map} +0 -0
- /package/dist/{chunk-FAUNQ3FS.js.map → chunk-2M3W6ACW.js.map} +0 -0
- /package/dist/{chunk-ALOEOGQV.js.map → chunk-3TZUZXY5.js.map} +0 -0
- /package/dist/{chunk-F5H3WDG7.js.map → chunk-4E2RQOSQ.js.map} +0 -0
- /package/dist/{chunk-JIEVKHOH.js.map → chunk-4J62V5OE.js.map} +0 -0
- /package/dist/{chunk-CZVAVX5L.js.map → chunk-6ATXOJVQ.js.map} +0 -0
- /package/dist/{chunk-E2UOEI7N.js.map → chunk-6LGKJVOA.js.map} +0 -0
- /package/dist/{chunk-XBWW3QSI.js.map → chunk-7WE432RQ.js.map} +0 -0
- /package/dist/{chunk-5357QUVE.js.map → chunk-AMLHEKSV.js.map} +0 -0
- /package/dist/{chunk-HSVSU7I2.js.map → chunk-ASEHJIIV.js.map} +0 -0
- /package/dist/{chunk-FYUNROLW.js.map → chunk-BZYLTGOE.js.map} +0 -0
- /package/dist/{chunk-TZ44F6W7.js.map → chunk-CGS2LQE5.js.map} +0 -0
- /package/dist/{chunk-6HXNFNOB.js.map → chunk-EE6DJPB7.js.map} +0 -0
- /package/dist/{chunk-OM6ZT64U.js.map → chunk-F2UP5ZF4.js.map} +0 -0
- /package/dist/{chunk-P53ANKZV.js.map → chunk-F7LBTMCA.js.map} +0 -0
- /package/dist/{chunk-IWSTMVCA.js.map → chunk-FKS2PNJF.js.map} +0 -0
- /package/dist/{chunk-3WYEENUH.js.map → chunk-FPNVOB52.js.map} +0 -0
- /package/dist/{chunk-E73C73UD.js.map → chunk-FYSS2PYA.js.map} +0 -0
- /package/dist/{chunk-N557OEZR.js.map → chunk-G6NMSBSQ.js.map} +0 -0
- /package/dist/{chunk-A5OERY43.js.map → chunk-GARM5SX6.js.map} +0 -0
- /package/dist/{chunk-WJMSND5Q.js.map → chunk-GXGHEOWC.js.map} +0 -0
- /package/dist/{chunk-U2SAW6DH.js.map → chunk-GY53SDVL.js.map} +0 -0
- /package/dist/{chunk-MFX4ASX5.js.map → chunk-HWZETMO4.js.map} +0 -0
- /package/dist/{chunk-MM3QESLI.js.map → chunk-ILJ3FXIC.js.map} +0 -0
- /package/dist/{chunk-K6VEN5VN.js.map → chunk-K3PMMW23.js.map} +0 -0
- /package/dist/{chunk-T5RFH2T5.js.map → chunk-KOGJBAFI.js.map} +0 -0
- /package/dist/{chunk-MAYAJXO6.js.map → chunk-KXDLLS62.js.map} +0 -0
- /package/dist/{chunk-DBI6AMNY.js.map → chunk-LKWXU6NH.js.map} +0 -0
- /package/dist/{chunk-6DO672AG.js.map → chunk-N5PVD4J5.js.map} +0 -0
- /package/dist/{chunk-7F6D73NL.js.map → chunk-RLTGD5WJ.js.map} +0 -0
- /package/dist/{chunk-R52N5UCS.js.map → chunk-SB2SEGR6.js.map} +0 -0
- /package/dist/{chunk-Z2WZDVGG.js.map → chunk-SI5SKX52.js.map} +0 -0
- /package/dist/{chunk-RYJ6XGFA.js.map → chunk-SJAOQGQI.js.map} +0 -0
- /package/dist/{chunk-D7R6SRJB.js.map → chunk-SKQPUAMK.js.map} +0 -0
- /package/dist/{chunk-AMIUZRDQ.js.map → chunk-SNWCT6JN.js.map} +0 -0
- /package/dist/{chunk-7W5X3KQ2.js.map → chunk-SW7JCF4Z.js.map} +0 -0
- /package/dist/{chunk-BNBWUXT3.js.map → chunk-TE6HAWDM.js.map} +0 -0
- /package/dist/{chunk-JG733RMP.js.map → chunk-TZC6KIK2.js.map} +0 -0
- /package/dist/{chunk-4QGKR65P.js.map → chunk-U4Z6GZDW.js.map} +0 -0
- /package/dist/{chunk-XFZDO2KB.js.map → chunk-UIIHUWOV.js.map} +0 -0
- /package/dist/{chunk-L4V7FZJI.js.map → chunk-UKUGSU3Y.js.map} +0 -0
- /package/dist/{chunk-VJIJCLUX.js.map → chunk-UOKXYV3U.js.map} +0 -0
- /package/dist/{chunk-K7IDOTSU.js.map → chunk-VNMD6BA4.js.map} +0 -0
- /package/dist/{chunk-DTZOP4ZR.js.map → chunk-XCUHGPPZ.js.map} +0 -0
- /package/dist/{chunk-3YFDGFEK.js.map → chunk-Y7BOP7VZ.js.map} +0 -0
- /package/dist/{chunk-XNAI7QGU.js.map → chunk-ZM6FJCWS.js.map} +0 -0
- /package/dist/{chunk-FC7UCFFA.js.map → chunk-ZPWPA6FR.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/ScheduleGrid/schedule-tones.ts"],"sourcesContent":["import type { Theme } from '@mui/material/styles/index.js';\nimport type { CSSObject } from '@mui/material/styles/index.js';\n\nimport { blend, darken, decomposeColor, getContrastRatio, getLuminance, lighten } from '../../../tokens/color';\nimport { fieldEdge } from '../../../tokens/field-edge';\nimport { absoluteInk } from '../../../tokens/ink';\nimport { softSignal, surfaces } from '../../../tokens/surfaces';\nimport type { ScheduleBlockTone } from './ScheduleGrid.types';\n\n/** WCAG AA for a block's text (12px, not large): every tone's ink clears it on its ground. */\nexport const TONE_TEXT_CONTRAST = 4.5;\n\n/** A translucent colour as it shows over an opaque `ground`. */\nfunction flatten(ground: string, overlay: string): string {\n const { values, type } = decomposeColor(overlay);\n const opacity = type.endsWith('a') ? (values[3] ?? 1) : 1;\n return blend(ground, overlay, opacity);\n}\n\n/** The ground a block with no fill of its own sits on: a cell (or a track) over the page. */\nexport function cellGround(theme: Theme): string {\n return flatten(theme.palette.background.default, theme.palette.action.hover);\n}\n\n/** The first ink that reads at {@link TONE_TEXT_CONTRAST} on `ground`; none does, the one that reads best. */\nexport function readableInk(ground: string, candidates: readonly string[]): string {\n let best = candidates[0] ?? '';\n let bestRatio = -1;\n for (const ink of candidates) {\n const ratio = getContrastRatio(flatten(ground, ink), ground);\n if (ratio >= TONE_TEXT_CONTRAST) return ink;\n if (ratio > bestRatio) [best, bestRatio] = [ink, ratio];\n }\n return best;\n}\n\n/** `color`, then ten steps of it towards whichever end reads on `ground` — the hue kept as long as it can be. */\nfunction deepening(color: string, ground: string): string[] {\n const toward = getLuminance(ground) > LUMINANCE_MIDPOINT ? darken : lighten;\n return Array.from({ length: 11 }, (_, step) => (step === 0 ? color : toward(color, step / 10)));\n}\n\n/** Where black and white read equally well on a ground (WCAG luminance). */\nconst LUMINANCE_MIDPOINT = 0.179;\n\n/**\n * The signal's readable ink on a ground that is not its own colour: its deep\n * step on a light ground, its light step on a dark one, deepened further until\n * it reads at 4.5:1 (MUI's `warning.dark` is 3.6:1 on a light cell).\n */\nexport function signalInk(theme: Theme, signal: 'warning' | 'success', ground: string): string {\n const step = theme.palette.mode === 'dark' ? theme.palette[signal].light : theme.palette[signal].dark;\n return readableInk(ground, deepening(step, ground));\n}\n\n/**\n * The ink on a solid signal fill: the palette's own `contrastText` when it\n * reads (a host's brand decision), else the page's own text, else black or\n * white — MUI's default `warning` has white at 3.1:1 on its orange; the\n * prototype writes it in the dark ink.\n */\nfunction inkOnFill(theme: Theme, fill: string, incumbent: string): string {\n const { black, white } = absoluteInk(theme);\n return readableInk(fill, [incumbent, theme.palette.text.primary, black, white]);\n}\n\n/**\n * How a block of each tone is drawn — in the week grid and on the day ruler\n * alike, so one tone reads the same in both views. `dashedPlan` is the ruler's\n * escala block (a dashed outline over a faint ground); the grid's plan block is\n * a raised chip. Never colour alone: every tone also carries its note text.\n */\nexport function blockToneStyles(theme: Theme, tone: ScheduleBlockTone, dashedPlan = false): CSSObject {\n const hairline = '1px solid';\n switch (tone) {\n case 'late':\n return {\n backgroundColor: theme.palette.warning.main,\n color: inkOnFill(theme, theme.palette.warning.main, theme.palette.warning.contrastText),\n border: `${hairline} ${theme.palette.warning.main}`,\n };\n case 'away':\n case 'uncovered':\n return {\n backgroundColor: 'transparent',\n color: signalInk(theme, 'warning', cellGround(theme)),\n border: `1px dashed ${theme.palette.warning.main}`,\n };\n case 'onduty':\n return {\n backgroundColor: softSignal(theme, 'success'),\n color: theme.palette.text.primary,\n border: `${hairline} ${theme.palette.success.main}`,\n };\n case 'plan':\n default:\n return dashedPlan\n ? {\n backgroundColor: theme.palette.action.hover,\n color: theme.palette.text.primary,\n border: `1px dashed ${theme.palette.text.secondary}`,\n }\n : {\n backgroundColor: surfaces(theme).raised,\n color: theme.palette.text.primary,\n border: `${hairline} ${fieldEdge(theme, surfaces(theme).raised)}`,\n };\n }\n}\n\n/**\n * A break inside a block (a meal break): the page's own ground with diagonal\n * stripes of the disabled action colour, opaque, so the block reads as CUT there in any\n * tone, light or dark. `stripe` / `period` are CSS lengths (a stripe and the\n * stripe plus its gap).\n */\nexport function breakHatch(theme: Theme, stripe: string, period: string): string {\n const ink = theme.palette.action.disabled;\n const ground = theme.palette.background.default;\n return `repeating-linear-gradient(135deg, ${ink} 0, ${ink} ${stripe}, ${ground} ${stripe}, ${ground} ${period}), ${ground}`;\n}\n\n/** The thin bar under a ruler row that says the shift is really running. */\nexport function actualBarColor(theme: Theme): string {\n return theme.palette.success.main;\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/ScheduleGrid/schedule-tones.ts"],"sourcesContent":["import type { Theme } from '@mui/material/styles/index.js';\nimport type { CSSObject } from '@mui/material/styles/index.js';\n\nimport { blend, darken, decomposeColor, getContrastRatio, getLuminance, lighten } from '../../../tokens/color';\nimport { fieldEdge } from '../../../tokens/field-edge';\nimport { absoluteInk } from '../../../tokens/ink';\nimport { softSignal, surfaces } from '../../../tokens/surfaces';\nimport type { ScheduleBlockTone } from './ScheduleGrid.types';\n\n/** WCAG AA for a block's text (12px, not large): every tone's ink clears it on its ground. */\nexport const TONE_TEXT_CONTRAST = 4.5;\n\n/** A translucent colour as it shows over an opaque `ground`. */\nfunction flatten(ground: string, overlay: string): string {\n const { values, type } = decomposeColor(overlay);\n const opacity = type.endsWith('a') ? (values[3] ?? 1) : 1;\n return blend(ground, overlay, opacity);\n}\n\n/** The ground a block with no fill of its own sits on: a cell (or a track) over the page. */\nexport function cellGround(theme: Theme): string {\n return flatten(theme.palette.background.default, theme.palette.action.hover);\n}\n\n/** The first ink that reads at {@link TONE_TEXT_CONTRAST} on `ground`; none does, the one that reads best. */\nexport function readableInk(ground: string, candidates: readonly string[]): string {\n let best = candidates[0] ?? '';\n let bestRatio = -1;\n for (const ink of candidates) {\n const ratio = getContrastRatio(flatten(ground, ink), ground);\n if (ratio >= TONE_TEXT_CONTRAST) return ink;\n if (ratio > bestRatio) [best, bestRatio] = [ink, ratio];\n }\n return best;\n}\n\n/** `color`, then ten steps of it towards whichever end reads on `ground` — the hue kept as long as it can be. */\nfunction deepening(color: string, ground: string): string[] {\n const toward = getLuminance(ground) > LUMINANCE_MIDPOINT ? darken : lighten;\n return Array.from({ length: 11 }, (_, step) => (step === 0 ? color : toward(color, step / 10)));\n}\n\n/** Where black and white read equally well on a ground (WCAG luminance). */\nconst LUMINANCE_MIDPOINT = 0.179;\n\n/**\n * The signal's readable ink on a ground that is not its own colour: its deep\n * step on a light ground, its light step on a dark one, deepened further until\n * it reads at 4.5:1 (MUI's `warning.dark` is 3.6:1 on a light cell).\n */\nexport function signalInk(theme: Theme, signal: 'warning' | 'success', ground: string): string {\n const step = theme.palette.mode === 'dark' ? theme.palette[signal].light : theme.palette[signal].dark;\n return readableInk(ground, deepening(step, ground));\n}\n\n/**\n * The ink on a solid signal fill: the palette's own `contrastText` when it\n * reads (a host's brand decision), else the page's own text, else black or\n * white — MUI's default `warning` has white at 3.1:1 on its orange; the\n * prototype writes it in the dark ink.\n */\nfunction inkOnFill(theme: Theme, fill: string, incumbent: string): string {\n const { black, white } = absoluteInk(theme);\n return readableInk(fill, [incumbent, theme.palette.text.primary, black, white]);\n}\n\n/**\n * How a block of each tone is drawn — in the week grid and on the day ruler\n * alike, so one tone reads the same in both views. `dashedPlan` is the ruler's\n * escala block (a dashed outline over a faint ground); the grid's plan block is\n * a raised chip. Never colour alone: every tone also carries its note text.\n */\nexport function blockToneStyles(theme: Theme, tone: ScheduleBlockTone, dashedPlan = false): CSSObject {\n const hairline = '1px solid';\n switch (tone) {\n case 'late':\n return {\n backgroundColor: theme.palette.warning.main,\n color: inkOnFill(theme, theme.palette.warning.main, theme.palette.warning.contrastText),\n border: `${hairline} ${theme.palette.warning.main}`,\n };\n case 'away':\n case 'uncovered':\n return {\n backgroundColor: 'transparent',\n color: signalInk(theme, 'warning', cellGround(theme)),\n border: `1px dashed ${theme.palette.warning.main}`,\n };\n case 'onduty':\n return {\n backgroundColor: softSignal(theme, 'success'),\n color: theme.palette.text.primary,\n border: `${hairline} ${theme.palette.success.main}`,\n };\n case 'plan':\n default:\n return dashedPlan\n ? {\n backgroundColor: theme.palette.action.hover,\n color: theme.palette.text.primary,\n border: `1px dashed ${theme.palette.text.secondary}`,\n }\n : {\n backgroundColor: surfaces(theme).raised,\n color: theme.palette.text.primary,\n border: `${hairline} ${fieldEdge(theme, surfaces(theme).raised)}`,\n };\n }\n}\n\n/**\n * An OPAQUE ground for a ruler block's label where the block's own fill is\n * not opaque (the dashed plan's faint wash, the away / uncovered outline): the\n * fill flattened over the cell's ground, so the label reads the same and\n * whatever the track draws under the block — the \"agora\" line — never shows\n * through the text (FUT-3831). An opaque fill needs none: `undefined`.\n */\nexport function dashedLabelGround(theme: Theme, tone: ScheduleBlockTone): string | undefined {\n if (tone === 'away' || tone === 'uncovered') return cellGround(theme);\n if (tone === 'plan') return flatten(cellGround(theme), theme.palette.action.hover);\n return undefined;\n}\n\n/**\n * A break inside a block (a meal break): the page's own ground with diagonal\n * stripes of the disabled action colour, opaque, so the block reads as CUT there in any\n * tone, light or dark. `stripe` / `period` are CSS lengths (a stripe and the\n * stripe plus its gap).\n */\nexport function breakHatch(theme: Theme, stripe: string, period: string): string {\n const ink = theme.palette.action.disabled;\n const ground = theme.palette.background.default;\n return `repeating-linear-gradient(135deg, ${ink} 0, ${ink} ${stripe}, ${ground} ${stripe}, ${ground} ${period}), ${ground}`;\n}\n\n/** The thin bar under a ruler row that says the shift is really running. */\nexport function actualBarColor(theme: Theme): string {\n return theme.palette.success.main;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
MoreGroup,
|
|
4
4
|
MoreQuick,
|
|
5
5
|
fieldClearing
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-UOKXYV3U.js";
|
|
7
7
|
import {
|
|
8
8
|
useStillAnchor
|
|
9
9
|
} from "./chunk-7CUZTWKW.js";
|
|
@@ -223,4 +223,4 @@ function MoreFilters({
|
|
|
223
223
|
export {
|
|
224
224
|
MoreFilters
|
|
225
225
|
};
|
|
226
|
-
//# sourceMappingURL=chunk-
|
|
226
|
+
//# sourceMappingURL=chunk-4E2RQOSQ.js.map
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AVATAR_DEFAULTS,
|
|
3
|
+
contentTypeOf,
|
|
4
|
+
pickAvatarContent
|
|
5
|
+
} from "./chunk-3ZVUNSFF.js";
|
|
1
6
|
import {
|
|
2
7
|
AvatarView
|
|
3
8
|
} from "./chunk-7XSCEHGA.js";
|
|
@@ -7,11 +12,6 @@ import {
|
|
|
7
12
|
GROUP_MAX,
|
|
8
13
|
GROUP_OVERLAP
|
|
9
14
|
} from "./chunk-6ZZGK5DT.js";
|
|
10
|
-
import {
|
|
11
|
-
AVATAR_DEFAULTS,
|
|
12
|
-
contentTypeOf,
|
|
13
|
-
pickAvatarContent
|
|
14
|
-
} from "./chunk-3ZVUNSFF.js";
|
|
15
15
|
import {
|
|
16
16
|
EN_US_UI_LABELS
|
|
17
17
|
} from "./chunk-XOXXG7Q5.js";
|
|
@@ -178,4 +178,4 @@ export {
|
|
|
178
178
|
Avatar,
|
|
179
179
|
AvatarGroup
|
|
180
180
|
};
|
|
181
|
-
//# sourceMappingURL=chunk-
|
|
181
|
+
//# sourceMappingURL=chunk-4J62V5OE.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DAY_RULER_METRICS
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-273OLFJD.js";
|
|
4
4
|
import {
|
|
5
5
|
actualBarColor,
|
|
6
6
|
blockToneStyles,
|
|
7
7
|
breakHatch,
|
|
8
|
-
|
|
9
|
-
} from "./chunk-
|
|
8
|
+
dashedLabelGround
|
|
9
|
+
} from "./chunk-3UAHDLKH.js";
|
|
10
10
|
import {
|
|
11
11
|
FIELD_BORDER_WIDTH
|
|
12
12
|
} from "./chunk-O6MJWHU5.js";
|
|
@@ -17,24 +17,23 @@ import {
|
|
|
17
17
|
|
|
18
18
|
// src/components/data-display/DayRuler/DayRuler.styles.ts
|
|
19
19
|
import { alpha } from "@mui/material/styles/index.js";
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
20
|
+
var CONTAINER = "day-ruler";
|
|
21
|
+
var rootSx = {
|
|
22
|
+
containerType: "inline-size",
|
|
23
|
+
containerName: CONTAINER,
|
|
24
|
+
minWidth: 0,
|
|
25
|
+
width: "100%",
|
|
26
|
+
userSelect: "none"
|
|
27
|
+
};
|
|
29
28
|
function compact(theme) {
|
|
30
|
-
return `@container (width < ${rem(theme, DAY_RULER_METRICS.compactBelow)})`;
|
|
29
|
+
return `@container ${CONTAINER} (width < ${rem(theme, DAY_RULER_METRICS.compactBelow)})`;
|
|
31
30
|
}
|
|
32
31
|
function phone(theme) {
|
|
33
|
-
return `@container (width < ${rem(theme, DAY_RULER_METRICS.phoneBelow)})`;
|
|
32
|
+
return `@container ${CONTAINER} (width < ${rem(theme, DAY_RULER_METRICS.phoneBelow)})`;
|
|
34
33
|
}
|
|
35
34
|
var lineSx = (theme) => ({
|
|
36
35
|
display: "grid",
|
|
37
|
-
gridTemplateColumns: `${rem(theme, DAY_RULER_METRICS.sideColumn)} minmax(0, 1fr)
|
|
36
|
+
gridTemplateColumns: `${rem(theme, DAY_RULER_METRICS.sideColumn)} minmax(0, 1fr)`,
|
|
38
37
|
columnGap: rem(theme, DAY_RULER_METRICS.gap),
|
|
39
38
|
alignItems: "center",
|
|
40
39
|
// Stacked: across the full width, like the tracks; the label above the counts.
|
|
@@ -99,29 +98,33 @@ var groupTitleSx = {
|
|
|
99
98
|
};
|
|
100
99
|
var rowSx = (theme) => ({
|
|
101
100
|
display: "grid",
|
|
102
|
-
gridTemplateColumns: `${rem(theme, DAY_RULER_METRICS.sideColumn)} minmax(0, 1fr)
|
|
103
|
-
|
|
101
|
+
gridTemplateColumns: `${rem(theme, DAY_RULER_METRICS.sideColumn)} minmax(0, 1fr)`,
|
|
102
|
+
gridTemplateRows: "auto auto",
|
|
103
|
+
gridTemplateAreas: '"who track" "actions track"',
|
|
104
104
|
columnGap: rem(theme, DAY_RULER_METRICS.gap),
|
|
105
105
|
alignItems: "center",
|
|
106
106
|
py: rem(theme, DAY_RULER_METRICS.rowPaddingY),
|
|
107
107
|
borderBottom: `1px solid ${theme.palette.divider}`,
|
|
108
108
|
[compact(theme)]: {
|
|
109
109
|
gridTemplateColumns: "minmax(0, 1fr) auto",
|
|
110
|
+
gridTemplateRows: "none",
|
|
110
111
|
gridTemplateAreas: '"who actions" "track track"',
|
|
111
112
|
rowGap: theme.spacing(1),
|
|
112
113
|
py: theme.spacing(1.5)
|
|
113
114
|
}
|
|
114
115
|
});
|
|
115
116
|
var whoSx = { gridArea: "who", minWidth: 0 };
|
|
116
|
-
var actionsSx = {
|
|
117
|
+
var actionsSx = (theme) => ({
|
|
117
118
|
gridArea: "actions",
|
|
118
119
|
display: "flex",
|
|
119
120
|
gap: 1,
|
|
120
121
|
alignItems: "center",
|
|
121
|
-
justifyContent: "flex-
|
|
122
|
+
justifyContent: "flex-start",
|
|
122
123
|
flexWrap: "wrap",
|
|
123
|
-
minWidth: 0
|
|
124
|
-
|
|
124
|
+
minWidth: 0,
|
|
125
|
+
pt: rem(theme, DAY_RULER_METRICS.actionsTop),
|
|
126
|
+
[compact(theme)]: { justifyContent: "flex-end", pt: 0 }
|
|
127
|
+
});
|
|
125
128
|
function breakSx(span) {
|
|
126
129
|
return (theme) => ({
|
|
127
130
|
position: "absolute",
|
|
@@ -162,6 +165,15 @@ function trackSx(opts) {
|
|
|
162
165
|
}
|
|
163
166
|
});
|
|
164
167
|
}
|
|
168
|
+
function hitBand(theme, span, bounds) {
|
|
169
|
+
const border = `${FIELD_BORDER_WIDTH}px`;
|
|
170
|
+
const half = `max(calc(50% + ${border}), ${rem(theme, DAY_RULER_METRICS.block.hitArea / 2)})`;
|
|
171
|
+
if (!(span.share > 0)) return { left: `calc(50% - ${half})`, width: `calc(2 * ${half})` };
|
|
172
|
+
const rel = (pct) => `calc(${(pct - span.at) / span.share} * (100% + 2 * ${border}) - ${border})`;
|
|
173
|
+
const left = `max(${rel(bounds.lo)}, calc(50% - ${half}))`;
|
|
174
|
+
const right = `min(${rel(bounds.hi)}, calc(50% + ${half}))`;
|
|
175
|
+
return { left, width: `calc(${right} - ${left})` };
|
|
176
|
+
}
|
|
165
177
|
function blockSx(tone, span, opts) {
|
|
166
178
|
return (theme) => ({
|
|
167
179
|
...blockToneStyles(theme, tone, true),
|
|
@@ -185,25 +197,35 @@ function blockSx(tone, span, opts) {
|
|
|
185
197
|
cursor: opts.movable ? "grab" : "pointer",
|
|
186
198
|
boxShadow: opts.selected ? `0 0 0 ${rem(theme, DAY_RULER_METRICS.ring)} ${theme.palette.primary.main}` : "none",
|
|
187
199
|
"&:focus-visible": { outline: `${rem(theme, DAY_RULER_METRICS.ring)} solid ${theme.palette.primary.main}`, outlineOffset: rem(theme, DAY_RULER_METRICS.ringOffset) },
|
|
188
|
-
|
|
200
|
+
// The label sits above the "agora" line (drawn under the blocks): on a fill
|
|
201
|
+
// that is not opaque it takes an opaque ground, so the line never cuts it.
|
|
202
|
+
"& [data-dr-text]": {
|
|
203
|
+
position: "relative",
|
|
204
|
+
overflow: "hidden",
|
|
205
|
+
textOverflow: "ellipsis",
|
|
206
|
+
minWidth: 0,
|
|
207
|
+
backgroundColor: dashedLabelGround(theme, tone)
|
|
208
|
+
},
|
|
189
209
|
'& [data-dr-text="short"]': { display: "none" },
|
|
210
|
+
// By pixels, at every width: the full text, else the start, else nothing — never a cut text.
|
|
211
|
+
'&[data-fit="short"] [data-dr-text="full"]': { display: "none" },
|
|
212
|
+
'&[data-fit="short"] [data-dr-text="short"]': { display: "inline" },
|
|
213
|
+
'&[data-fit="none"] [data-dr-text]': { display: "none" },
|
|
190
214
|
[compact(theme)]: {
|
|
191
215
|
top: rem(theme, DAY_RULER_METRICS.block.compactTop),
|
|
192
216
|
height: rem(theme, DAY_RULER_METRICS.block.compactHeight),
|
|
193
|
-
// A 40px hit area
|
|
194
|
-
//
|
|
217
|
+
// A 40px × 40px-or-wider hit area round the 20px bar, the look
|
|
218
|
+
// unchanged: the text never overflows (it fits or it is not shown), so
|
|
219
|
+
// the block need not clip.
|
|
195
220
|
overflow: "visible",
|
|
196
221
|
"&::after": {
|
|
197
222
|
content: '""',
|
|
198
223
|
position: "absolute",
|
|
199
|
-
left: 0,
|
|
200
|
-
right: 0,
|
|
201
224
|
top: "50%",
|
|
202
225
|
height: rem(theme, DAY_RULER_METRICS.block.hitArea),
|
|
203
|
-
transform: "translateY(-50%)"
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
'&[data-narrow] [data-dr-text="short"]': { display: "inline" }
|
|
226
|
+
transform: "translateY(-50%)",
|
|
227
|
+
...hitBand(theme, span, opts.hit)
|
|
228
|
+
}
|
|
207
229
|
}
|
|
208
230
|
});
|
|
209
231
|
}
|
|
@@ -214,7 +236,11 @@ function handleSx(side) {
|
|
|
214
236
|
bottom: 0,
|
|
215
237
|
[side === "l" ? "left" : "right"]: 0,
|
|
216
238
|
width: rem(theme, DAY_RULER_METRICS.handle),
|
|
217
|
-
cursor: "ew-resize"
|
|
239
|
+
cursor: "ew-resize",
|
|
240
|
+
// Above the block's hit band (its `::after`, painted last): on a narrow
|
|
241
|
+
// ruler the band covers the whole bar, and a press on an end must still
|
|
242
|
+
// resize rather than move (FUT-3831).
|
|
243
|
+
zIndex: 1
|
|
218
244
|
});
|
|
219
245
|
}
|
|
220
246
|
function actualSx(span) {
|
|
@@ -266,39 +292,6 @@ var skeletonNameSx = (theme) => ({
|
|
|
266
292
|
borderRadius: rem(theme, DAY_RULER_METRICS.skeletonNameRadius),
|
|
267
293
|
backgroundColor: theme.palette.action.hover
|
|
268
294
|
});
|
|
269
|
-
function footerInk(theme, marked, plain) {
|
|
270
|
-
return marked ? signalInk(theme, "warning", theme.palette.background.default) : plain;
|
|
271
|
-
}
|
|
272
|
-
function footerCellSx(marked) {
|
|
273
|
-
return (theme) => ({
|
|
274
|
-
display: "flex",
|
|
275
|
-
alignItems: "center",
|
|
276
|
-
justifyContent: "center",
|
|
277
|
-
fontSize: rem(theme, DAY_RULER_METRICS.coverage.font),
|
|
278
|
-
borderRadius: rem(theme, DAY_RULER_METRICS.coverage.radius),
|
|
279
|
-
color: footerInk(theme, marked, theme.palette.text.primary),
|
|
280
|
-
fontWeight: marked ? 500 : 400,
|
|
281
|
-
// The hairline is always there, transparent when unmarked, so a mark never shifts a count.
|
|
282
|
-
border: `1px solid ${marked ? theme.palette.warning.main : "transparent"}`,
|
|
283
|
-
minWidth: 0,
|
|
284
|
-
overflow: "hidden"
|
|
285
|
-
});
|
|
286
|
-
}
|
|
287
|
-
function footerNoteSx(marked) {
|
|
288
|
-
return (theme) => ({
|
|
289
|
-
fontSize: rem(theme, DAY_RULER_METRICS.meta),
|
|
290
|
-
color: footerInk(theme, marked, theme.palette.text.secondary),
|
|
291
|
-
fontWeight: marked ? 500 : 400,
|
|
292
|
-
...marked ? { borderLeft: `${rem(theme, 3)} solid ${theme.palette.warning.main}`, paddingLeft: rem(theme, 6) } : {}
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
|
-
var trendSx = (theme) => ({
|
|
296
|
-
display: "block",
|
|
297
|
-
width: "100%",
|
|
298
|
-
height: rem(theme, DAY_RULER_METRICS.coverage.height + DAY_RULER_METRICS.coverage.height / 2),
|
|
299
|
-
color: theme.palette.primary.main,
|
|
300
|
-
overflow: "visible"
|
|
301
|
-
});
|
|
302
295
|
|
|
303
296
|
export {
|
|
304
297
|
rootSx,
|
|
@@ -320,10 +313,6 @@ export {
|
|
|
320
313
|
actualLabelSx,
|
|
321
314
|
nowSx,
|
|
322
315
|
skeletonTrackSx,
|
|
323
|
-
skeletonNameSx
|
|
324
|
-
footerInk,
|
|
325
|
-
footerCellSx,
|
|
326
|
-
footerNoteSx,
|
|
327
|
-
trendSx
|
|
316
|
+
skeletonNameSx
|
|
328
317
|
};
|
|
329
|
-
//# sourceMappingURL=chunk-
|
|
318
|
+
//# sourceMappingURL=chunk-5AZEDQXX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/DayRuler/DayRuler.styles.ts"],"sourcesContent":["import { alpha, type CSSObject, type SxProps, type Theme } from '@mui/material/styles/index.js';\n\nimport { FIELD_BORDER_WIDTH } from '../../../tokens/field-height.core';\nimport { rem, sxRem } from '../../../tokens/relative';\nimport { actualBarColor, blockToneStyles, breakHatch, dashedLabelGround } from '../ScheduleGrid/schedule-tones';\nimport type { ScheduleBlockTone } from '../ScheduleGrid/ScheduleGrid.types';\nimport { DAY_RULER_METRICS as M } from './DayRuler.metrics';\n\n/** The container the ruler's layout answers to — named, so no other container between the root and a row can stand in for it. */\nconst CONTAINER = 'day-ruler';\n\n/** The ruler's root: the named container every layout query reads. */\nexport const rootSx: SxProps<Theme> = {\n containerType: 'inline-size',\n containerName: CONTAINER,\n minWidth: 0,\n width: '100%',\n userSelect: 'none',\n};\n\n/** `@container` below which a row stacks (the coverage and axis rows go full width). Bounds are \"from px up\". */\nfunction compact(theme: Theme): string {\n return `@container ${CONTAINER} (width < ${rem(theme, M.compactBelow)})`;\n}\n\n/** `@container` below which the pane is phone-sized: no coverage row, no axis. Bounds are \"from px up\". */\nfunction phone(theme: Theme): string {\n return `@container ${CONTAINER} (width < ${rem(theme, M.phoneBelow)})`;\n}\n\n/**\n * Name · track: the coverage row and the axis row share these columns with\n * every row on a computer, so the hours line up down the whole ruler.\n */\nexport const lineSx: SxProps<Theme> = (theme: Theme) => ({\n display: 'grid',\n gridTemplateColumns: `${rem(theme, M.sideColumn)} minmax(0, 1fr)`,\n columnGap: rem(theme, M.gap),\n alignItems: 'center',\n // Stacked: across the full width, like the tracks; the label above the counts.\n [compact(theme)]: {\n gridTemplateColumns: 'minmax(0, 1fr)',\n rowGap: rem(theme, M.coverage.gap),\n '& > span:empty': { display: 'none' },\n },\n [phone(theme)]: { display: 'none' },\n});\n\nexport const coverageLabelSx: SxProps<Theme> = { fontSize: sxRem(M.meta), color: 'text.secondary' };\n\nexport function coverageSx(hours: number): SxProps<Theme> {\n return (theme: Theme) => ({\n display: 'grid',\n gridTemplateColumns: `repeat(${hours}, minmax(0, 1fr))`,\n gap: rem(theme, M.coverage.gap),\n height: rem(theme, M.coverage.height),\n });\n}\n\n/**\n * How strongly a staffed hour is filled: the prototype's tonal success step, deeper with each\n * person on the escala (0.18 + 0.09 per person, at most 0.85). An empty hour has none.\n */\nexport function coverageStrength(count: number): number {\n if (count <= 0) return 0;\n return Math.min(0.85, 0.18 + count * 0.09);\n}\n\nexport function coverageCellSx(count: number): SxProps<Theme> {\n return (theme: Theme) => {\n const strength = coverageStrength(count);\n return {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: rem(theme, M.coverage.font),\n borderRadius: rem(theme, M.coverage.radius),\n color: theme.palette.text.primary,\n // A tonal fill, as the prototype's coverage line draws it — never an outline (FUT-3831). It is\n // the success colour over the page, so a staffed hour is LIGHTER than an empty one in dark mode\n // and plainly green in light, where the soft-signal blend read as the empty grey. The hairline\n // stays transparent so a count never shifts its cell.\n backgroundColor: strength > 0 ? alpha(theme.palette.success.main, strength) : theme.palette.action.hover,\n border: '1px solid transparent',\n minWidth: 0,\n overflow: 'hidden',\n };\n };\n}\n\nexport const axisSx: SxProps<Theme> = (theme: Theme) => ({\n position: 'relative',\n height: rem(theme, M.axis.height),\n fontSize: rem(theme, M.axis.font),\n color: theme.palette.text.secondary,\n mt: 0.5,\n '& > span': { position: 'absolute', transform: 'translateX(-50%)', whiteSpace: 'nowrap' },\n});\n\nexport const groupTitleSx: SxProps<Theme> = {\n fontSize: sxRem(M.groupTitle),\n letterSpacing: '0.05em',\n textTransform: 'uppercase',\n color: 'text.secondary',\n fontWeight: 500,\n pt: 1.5,\n pb: 0.5,\n m: 0,\n};\n\n/**\n * One person's row. A computer: name (its actions under it) · track, the\n * track the same width on every row whether or not the row has actions. A\n * narrow ruler (a phone): name and actions on top, the track under them, full\n * width.\n */\nexport const rowSx: SxProps<Theme> = (theme: Theme) => ({\n display: 'grid',\n gridTemplateColumns: `${rem(theme, M.sideColumn)} minmax(0, 1fr)`,\n gridTemplateRows: 'auto auto',\n gridTemplateAreas: '\"who track\" \"actions track\"',\n columnGap: rem(theme, M.gap),\n alignItems: 'center',\n py: rem(theme, M.rowPaddingY),\n borderBottom: `1px solid ${theme.palette.divider}`,\n [compact(theme)]: {\n gridTemplateColumns: 'minmax(0, 1fr) auto',\n gridTemplateRows: 'none',\n gridTemplateAreas: '\"who actions\" \"track track\"',\n rowGap: theme.spacing(1),\n py: theme.spacing(1.5),\n },\n});\n\nexport const whoSx: SxProps<Theme> = { gridArea: 'who', minWidth: 0 };\n\nexport const actionsSx: SxProps<Theme> = (theme: Theme) => ({\n gridArea: 'actions',\n display: 'flex',\n gap: 1,\n alignItems: 'center',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n minWidth: 0,\n pt: rem(theme, M.actionsTop),\n [compact(theme)]: { justifyContent: 'flex-end', pt: 0 },\n});\n\n/** A break inside a block: a hatched band across its height, under its text. `span` is in % of the block. */\nexport function breakSx(span: Span): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: `${span.at}%`,\n width: `${span.share}%`,\n background: breakHatch(theme, rem(theme, M.breakStripe.ink), rem(theme, M.breakStripe.ink + M.breakStripe.gap)),\n pointerEvents: 'none',\n // Where the band meets an end of the block it takes the block's rounding:\n // on a phone the block does not clip (its hit area reaches past it).\n ...(span.at <= 0.01 ? { borderTopLeftRadius: 'inherit', borderBottomLeftRadius: 'inherit' } : {}),\n ...(span.at + span.share >= 99.99 ? { borderTopRightRadius: 'inherit', borderBottomRightRadius: 'inherit' } : {}),\n });\n}\n\n/** The hour lines: one every `every` hours of a `hours`-long ruler. */\nfunction hourLines(theme: Theme, hours: number, every: number): string {\n const line = theme.palette.divider;\n const step = `${(100 * every) / hours}%`;\n const hairline = `${FIELD_BORDER_WIDTH}px`;\n return `repeating-linear-gradient(to right, ${line} 0, ${line} ${hairline}, transparent ${hairline}, transparent ${step})`;\n}\n\nexport function trackSx(opts: { hours: number; tickHours: number; interactive: boolean }): SxProps<Theme> {\n return (theme: Theme) => ({\n gridArea: 'track',\n position: 'relative',\n height: rem(theme, M.track.height),\n borderRadius: rem(theme, M.track.radius),\n backgroundColor: theme.palette.action.hover,\n backgroundImage: hourLines(theme, opts.hours, 1),\n cursor: opts.interactive ? 'crosshair' : 'default',\n touchAction: 'auto',\n outline: 'none',\n '&:focus-visible': { boxShadow: `0 0 0 ${rem(theme, M.ring)} ${theme.palette.primary.main}` },\n [compact(theme)]: {\n height: rem(theme, M.track.compactHeight),\n borderRadius: rem(theme, M.track.compactRadius),\n backgroundImage: hourLines(theme, opts.hours, opts.tickHours),\n },\n });\n}\n\n/** Where a bar starts and how long it is, both in % of the track. */\nexport interface Span {\n at: number;\n share: number;\n}\n\n/** How far a bar's hit band may reach, in % of the track: the midpoints to its neighbours, or the track's ends. */\nexport interface HitBounds {\n lo: number;\n hi: number;\n}\n\n/**\n * The hit band round a bar on a narrow ruler (FUT-3831): `hitArea` tall and\n * at least `hitArea` wide, centred on the bar, then cut to `bounds` so it never\n * reaches past the midpoint to a neighbour. Positioned in % of the bar's\n * PADDING box (the pseudo-element's containing block, the bar less its\n * border), so a point at `k` bar-widths from the bar's outer left edge is\n * `k × (100% + 2 border) − border`; the px floor is the layout's to resolve.\n */\nfunction hitBand(theme: Theme, span: Span, bounds: HitBounds): CSSObject {\n // Every tone's border is the 1px hairline (`blockToneStyles`), the field border's width.\n const border = `${FIELD_BORDER_WIDTH}px`;\n const half = `max(calc(50% + ${border}), ${rem(theme, M.block.hitArea / 2)})`;\n if (!(span.share > 0)) return { left: `calc(50% - ${half})`, width: `calc(2 * ${half})` };\n const rel = (pct: number): string => `calc(${(pct - span.at) / span.share} * (100% + 2 * ${border}) - ${border})`;\n const left = `max(${rel(bounds.lo)}, calc(50% - ${half}))`;\n const right = `min(${rel(bounds.hi)}, calc(50% + ${half}))`;\n return { left, width: `calc(${right} - ${left})` };\n}\n\nexport function blockSx(\n tone: ScheduleBlockTone,\n span: Span,\n opts: { selected: boolean; movable: boolean; hit: HitBounds },\n): SxProps<Theme> {\n return (theme: Theme): CSSObject => ({\n ...blockToneStyles(theme, tone, true),\n position: 'absolute',\n left: `${span.at}%`,\n width: `${span.share}%`,\n top: rem(theme, M.block.top),\n height: rem(theme, M.block.height),\n boxSizing: 'border-box',\n borderRadius: rem(theme, M.block.radius),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: `0 ${rem(theme, M.block.paddingX)}`,\n margin: 0,\n font: 'inherit',\n fontSize: rem(theme, M.block.font),\n fontWeight: 500,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n cursor: opts.movable ? 'grab' : 'pointer',\n boxShadow: opts.selected ? `0 0 0 ${rem(theme, M.ring)} ${theme.palette.primary.main}` : 'none',\n '&:focus-visible': { outline: `${rem(theme, M.ring)} solid ${theme.palette.primary.main}`, outlineOffset: rem(theme, M.ringOffset) },\n // The label sits above the \"agora\" line (drawn under the blocks): on a fill\n // that is not opaque it takes an opaque ground, so the line never cuts it.\n '& [data-dr-text]': {\n position: 'relative',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n minWidth: 0,\n backgroundColor: dashedLabelGround(theme, tone),\n },\n '& [data-dr-text=\"short\"]': { display: 'none' },\n // By pixels, at every width: the full text, else the start, else nothing — never a cut text.\n '&[data-fit=\"short\"] [data-dr-text=\"full\"]': { display: 'none' },\n '&[data-fit=\"short\"] [data-dr-text=\"short\"]': { display: 'inline' },\n '&[data-fit=\"none\"] [data-dr-text]': { display: 'none' },\n [compact(theme)]: {\n top: rem(theme, M.block.compactTop),\n height: rem(theme, M.block.compactHeight),\n // A 40px × 40px-or-wider hit area round the 20px bar, the look\n // unchanged: the text never overflows (it fits or it is not shown), so\n // the block need not clip.\n overflow: 'visible',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: '50%',\n height: rem(theme, M.block.hitArea),\n transform: 'translateY(-50%)',\n ...hitBand(theme, span, opts.hit),\n },\n },\n });\n}\n\nexport function handleSx(side: 'l' | 'r'): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n top: 0,\n bottom: 0,\n [side === 'l' ? 'left' : 'right']: 0,\n width: rem(theme, M.handle),\n cursor: 'ew-resize',\n // Above the block's hit band (its `::after`, painted last): on a narrow\n // ruler the band covers the whole bar, and a press on an end must still\n // resize rather than move (FUT-3831).\n zIndex: 1,\n });\n}\n\nexport function actualSx(span: Span): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n left: `${span.at}%`,\n width: `${span.share}%`,\n top: rem(theme, M.actual.top),\n height: rem(theme, M.actual.height),\n borderRadius: rem(theme, M.actual.radius),\n backgroundColor: actualBarColor(theme),\n pointerEvents: 'none',\n [compact(theme)]: { top: rem(theme, M.actual.compactTop), height: rem(theme, M.actual.compactHeight) },\n });\n}\n\nexport function actualLabelSx(left: number): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n left: `calc(${left}% + ${rem(theme, M.actualLabel.offset)})`,\n top: rem(theme, M.actualLabel.top),\n fontSize: rem(theme, M.actualLabel.font),\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n [compact(theme)]: { display: 'none' },\n });\n}\n\n/**\n * \"Agora\": drawn UNDER the blocks (before them in the track), so it never\n * crosses a block's label — \"07:30–1|3:00\" at 1280 (FUT-3831). It still shows\n * above and below each bar, where it overhangs the track, and through a\n * block's fill where that fill is not opaque — never through its text.\n */\nexport function nowSx(left: number): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n left: `${left}%`,\n top: rem(theme, -M.now.overhang),\n bottom: rem(theme, -M.now.overhang),\n width: rem(theme, M.now.width),\n backgroundColor: theme.palette.primary.main,\n pointerEvents: 'none',\n });\n}\n\nexport const skeletonTrackSx: SxProps<Theme> = (theme: Theme) => ({\n gridArea: 'track',\n height: rem(theme, M.track.height),\n borderRadius: rem(theme, M.track.radius),\n backgroundColor: theme.palette.action.hover,\n});\n\nexport const skeletonNameSx: SxProps<Theme> = (theme: Theme) => ({\n gridArea: 'who',\n height: rem(theme, M.name),\n width: '60%',\n borderRadius: rem(theme, M.skeletonNameRadius),\n backgroundColor: theme.palette.action.hover,\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,SAAS,aAAuD;AAShE,IAAM,YAAY;AAGX,IAAM,SAAyB;AAAA,EACpC,eAAe;AAAA,EACf,eAAe;AAAA,EACf,UAAU;AAAA,EACV,OAAO;AAAA,EACP,YAAY;AACd;AAGA,SAAS,QAAQ,OAAsB;AACrC,SAAO,cAAc,SAAS,aAAa,IAAI,OAAO,kBAAE,YAAY,CAAC;AACvE;AAGA,SAAS,MAAM,OAAsB;AACnC,SAAO,cAAc,SAAS,aAAa,IAAI,OAAO,kBAAE,UAAU,CAAC;AACrE;AAMO,IAAM,SAAyB,CAAC,WAAkB;AAAA,EACvD,SAAS;AAAA,EACT,qBAAqB,GAAG,IAAI,OAAO,kBAAE,UAAU,CAAC;AAAA,EAChD,WAAW,IAAI,OAAO,kBAAE,GAAG;AAAA,EAC3B,YAAY;AAAA;AAAA,EAEZ,CAAC,QAAQ,KAAK,CAAC,GAAG;AAAA,IAChB,qBAAqB;AAAA,IACrB,QAAQ,IAAI,OAAO,kBAAE,SAAS,GAAG;AAAA,IACjC,kBAAkB,EAAE,SAAS,OAAO;AAAA,EACtC;AAAA,EACA,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE,SAAS,OAAO;AACpC;AAEO,IAAM,kBAAkC,EAAE,UAAU,MAAM,kBAAE,IAAI,GAAG,OAAO,iBAAiB;AAE3F,SAAS,WAAW,OAA+B;AACxD,SAAO,CAAC,WAAkB;AAAA,IACxB,SAAS;AAAA,IACT,qBAAqB,UAAU,KAAK;AAAA,IACpC,KAAK,IAAI,OAAO,kBAAE,SAAS,GAAG;AAAA,IAC9B,QAAQ,IAAI,OAAO,kBAAE,SAAS,MAAM;AAAA,EACtC;AACF;AAMO,SAAS,iBAAiB,OAAuB;AACtD,MAAI,SAAS,EAAG,QAAO;AACvB,SAAO,KAAK,IAAI,MAAM,OAAO,QAAQ,IAAI;AAC3C;AAEO,SAAS,eAAe,OAA+B;AAC5D,SAAO,CAAC,UAAiB;AACvB,UAAM,WAAW,iBAAiB,KAAK;AACvC,WAAO;AAAA,MACL,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,UAAU,IAAI,OAAO,kBAAE,SAAS,IAAI;AAAA,MACpC,cAAc,IAAI,OAAO,kBAAE,SAAS,MAAM;AAAA,MAC1C,OAAO,MAAM,QAAQ,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,MAK1B,iBAAiB,WAAW,IAAI,MAAM,MAAM,QAAQ,QAAQ,MAAM,QAAQ,IAAI,MAAM,QAAQ,OAAO;AAAA,MACnG,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAEO,IAAM,SAAyB,CAAC,WAAkB;AAAA,EACvD,UAAU;AAAA,EACV,QAAQ,IAAI,OAAO,kBAAE,KAAK,MAAM;AAAA,EAChC,UAAU,IAAI,OAAO,kBAAE,KAAK,IAAI;AAAA,EAChC,OAAO,MAAM,QAAQ,KAAK;AAAA,EAC1B,IAAI;AAAA,EACJ,YAAY,EAAE,UAAU,YAAY,WAAW,oBAAoB,YAAY,SAAS;AAC1F;AAEO,IAAM,eAA+B;AAAA,EAC1C,UAAU,MAAM,kBAAE,UAAU;AAAA,EAC5B,eAAe;AAAA,EACf,eAAe;AAAA,EACf,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,GAAG;AACL;AAQO,IAAM,QAAwB,CAAC,WAAkB;AAAA,EACtD,SAAS;AAAA,EACT,qBAAqB,GAAG,IAAI,OAAO,kBAAE,UAAU,CAAC;AAAA,EAChD,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,WAAW,IAAI,OAAO,kBAAE,GAAG;AAAA,EAC3B,YAAY;AAAA,EACZ,IAAI,IAAI,OAAO,kBAAE,WAAW;AAAA,EAC5B,cAAc,aAAa,MAAM,QAAQ,OAAO;AAAA,EAChD,CAAC,QAAQ,KAAK,CAAC,GAAG;AAAA,IAChB,qBAAqB;AAAA,IACrB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,QAAQ,MAAM,QAAQ,CAAC;AAAA,IACvB,IAAI,MAAM,QAAQ,GAAG;AAAA,EACvB;AACF;AAEO,IAAM,QAAwB,EAAE,UAAU,OAAO,UAAU,EAAE;AAE7D,IAAM,YAA4B,CAAC,WAAkB;AAAA,EAC1D,UAAU;AAAA,EACV,SAAS;AAAA,EACT,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,IAAI,IAAI,OAAO,kBAAE,UAAU;AAAA,EAC3B,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,gBAAgB,YAAY,IAAI,EAAE;AACxD;AAGO,SAAS,QAAQ,MAA4B;AAClD,SAAO,CAAC,WAAkB;AAAA,IACxB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,MAAM,GAAG,KAAK,EAAE;AAAA,IAChB,OAAO,GAAG,KAAK,KAAK;AAAA,IACpB,YAAY,WAAW,OAAO,IAAI,OAAO,kBAAE,YAAY,GAAG,GAAG,IAAI,OAAO,kBAAE,YAAY,MAAM,kBAAE,YAAY,GAAG,CAAC;AAAA,IAC9G,eAAe;AAAA;AAAA;AAAA,IAGf,GAAI,KAAK,MAAM,OAAO,EAAE,qBAAqB,WAAW,wBAAwB,UAAU,IAAI,CAAC;AAAA,IAC/F,GAAI,KAAK,KAAK,KAAK,SAAS,QAAQ,EAAE,sBAAsB,WAAW,yBAAyB,UAAU,IAAI,CAAC;AAAA,EACjH;AACF;AAGA,SAAS,UAAU,OAAc,OAAe,OAAuB;AACrE,QAAM,OAAO,MAAM,QAAQ;AAC3B,QAAM,OAAO,GAAI,MAAM,QAAS,KAAK;AACrC,QAAM,WAAW,GAAG,kBAAkB;AACtC,SAAO,uCAAuC,IAAI,OAAO,IAAI,IAAI,QAAQ,iBAAiB,QAAQ,iBAAiB,IAAI;AACzH;AAEO,SAAS,QAAQ,MAAkF;AACxG,SAAO,CAAC,WAAkB;AAAA,IACxB,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ,IAAI,OAAO,kBAAE,MAAM,MAAM;AAAA,IACjC,cAAc,IAAI,OAAO,kBAAE,MAAM,MAAM;AAAA,IACvC,iBAAiB,MAAM,QAAQ,OAAO;AAAA,IACtC,iBAAiB,UAAU,OAAO,KAAK,OAAO,CAAC;AAAA,IAC/C,QAAQ,KAAK,cAAc,cAAc;AAAA,IACzC,aAAa;AAAA,IACb,SAAS;AAAA,IACT,mBAAmB,EAAE,WAAW,SAAS,IAAI,OAAO,kBAAE,IAAI,CAAC,IAAI,MAAM,QAAQ,QAAQ,IAAI,GAAG;AAAA,IAC5F,CAAC,QAAQ,KAAK,CAAC,GAAG;AAAA,MAChB,QAAQ,IAAI,OAAO,kBAAE,MAAM,aAAa;AAAA,MACxC,cAAc,IAAI,OAAO,kBAAE,MAAM,aAAa;AAAA,MAC9C,iBAAiB,UAAU,OAAO,KAAK,OAAO,KAAK,SAAS;AAAA,IAC9D;AAAA,EACF;AACF;AAsBA,SAAS,QAAQ,OAAc,MAAY,QAA8B;AAEvE,QAAM,SAAS,GAAG,kBAAkB;AACpC,QAAM,OAAO,kBAAkB,MAAM,MAAM,IAAI,OAAO,kBAAE,MAAM,UAAU,CAAC,CAAC;AAC1E,MAAI,EAAE,KAAK,QAAQ,GAAI,QAAO,EAAE,MAAM,cAAc,IAAI,KAAK,OAAO,YAAY,IAAI,IAAI;AACxF,QAAM,MAAM,CAAC,QAAwB,SAAS,MAAM,KAAK,MAAM,KAAK,KAAK,kBAAkB,MAAM,OAAO,MAAM;AAC9G,QAAM,OAAO,OAAO,IAAI,OAAO,EAAE,CAAC,gBAAgB,IAAI;AACtD,QAAM,QAAQ,OAAO,IAAI,OAAO,EAAE,CAAC,gBAAgB,IAAI;AACvD,SAAO,EAAE,MAAM,OAAO,QAAQ,KAAK,MAAM,IAAI,IAAI;AACnD;AAEO,SAAS,QACd,MACA,MACA,MACgB;AAChB,SAAO,CAAC,WAA6B;AAAA,IACnC,GAAG,gBAAgB,OAAO,MAAM,IAAI;AAAA,IACpC,UAAU;AAAA,IACV,MAAM,GAAG,KAAK,EAAE;AAAA,IAChB,OAAO,GAAG,KAAK,KAAK;AAAA,IACpB,KAAK,IAAI,OAAO,kBAAE,MAAM,GAAG;AAAA,IAC3B,QAAQ,IAAI,OAAO,kBAAE,MAAM,MAAM;AAAA,IACjC,WAAW;AAAA,IACX,cAAc,IAAI,OAAO,kBAAE,MAAM,MAAM;AAAA,IACvC,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,SAAS,KAAK,IAAI,OAAO,kBAAE,MAAM,QAAQ,CAAC;AAAA,IAC1C,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,UAAU,IAAI,OAAO,kBAAE,MAAM,IAAI;AAAA,IACjC,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,QAAQ,KAAK,UAAU,SAAS;AAAA,IAChC,WAAW,KAAK,WAAW,SAAS,IAAI,OAAO,kBAAE,IAAI,CAAC,IAAI,MAAM,QAAQ,QAAQ,IAAI,KAAK;AAAA,IACzF,mBAAmB,EAAE,SAAS,GAAG,IAAI,OAAO,kBAAE,IAAI,CAAC,UAAU,MAAM,QAAQ,QAAQ,IAAI,IAAI,eAAe,IAAI,OAAO,kBAAE,UAAU,EAAE;AAAA;AAAA;AAAA,IAGnI,oBAAoB;AAAA,MAClB,UAAU;AAAA,MACV,UAAU;AAAA,MACV,cAAc;AAAA,MACd,UAAU;AAAA,MACV,iBAAiB,kBAAkB,OAAO,IAAI;AAAA,IAChD;AAAA,IACA,4BAA4B,EAAE,SAAS,OAAO;AAAA;AAAA,IAE9C,6CAA6C,EAAE,SAAS,OAAO;AAAA,IAC/D,8CAA8C,EAAE,SAAS,SAAS;AAAA,IAClE,qCAAqC,EAAE,SAAS,OAAO;AAAA,IACvD,CAAC,QAAQ,KAAK,CAAC,GAAG;AAAA,MAChB,KAAK,IAAI,OAAO,kBAAE,MAAM,UAAU;AAAA,MAClC,QAAQ,IAAI,OAAO,kBAAE,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA,MAIxC,UAAU;AAAA,MACV,YAAY;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,KAAK;AAAA,QACL,QAAQ,IAAI,OAAO,kBAAE,MAAM,OAAO;AAAA,QAClC,WAAW;AAAA,QACX,GAAG,QAAQ,OAAO,MAAM,KAAK,GAAG;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,SAAS,MAAiC;AACxD,SAAO,CAAC,WAAkB;AAAA,IACxB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,CAAC,SAAS,MAAM,SAAS,OAAO,GAAG;AAAA,IACnC,OAAO,IAAI,OAAO,kBAAE,MAAM;AAAA,IAC1B,QAAQ;AAAA;AAAA;AAAA;AAAA,IAIR,QAAQ;AAAA,EACV;AACF;AAEO,SAAS,SAAS,MAA4B;AACnD,SAAO,CAAC,WAAkB;AAAA,IACxB,UAAU;AAAA,IACV,MAAM,GAAG,KAAK,EAAE;AAAA,IAChB,OAAO,GAAG,KAAK,KAAK;AAAA,IACpB,KAAK,IAAI,OAAO,kBAAE,OAAO,GAAG;AAAA,IAC5B,QAAQ,IAAI,OAAO,kBAAE,OAAO,MAAM;AAAA,IAClC,cAAc,IAAI,OAAO,kBAAE,OAAO,MAAM;AAAA,IACxC,iBAAiB,eAAe,KAAK;AAAA,IACrC,eAAe;AAAA,IACf,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,KAAK,IAAI,OAAO,kBAAE,OAAO,UAAU,GAAG,QAAQ,IAAI,OAAO,kBAAE,OAAO,aAAa,EAAE;AAAA,EACvG;AACF;AAEO,SAAS,cAAc,MAA8B;AAC1D,SAAO,CAAC,WAAkB;AAAA,IACxB,UAAU;AAAA,IACV,MAAM,QAAQ,IAAI,OAAO,IAAI,OAAO,kBAAE,YAAY,MAAM,CAAC;AAAA,IACzD,KAAK,IAAI,OAAO,kBAAE,YAAY,GAAG;AAAA,IACjC,UAAU,IAAI,OAAO,kBAAE,YAAY,IAAI;AAAA,IACvC,OAAO,MAAM,QAAQ,KAAK;AAAA,IAC1B,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,SAAS,OAAO;AAAA,EACtC;AACF;AAQO,SAAS,MAAM,MAA8B;AAClD,SAAO,CAAC,WAAkB;AAAA,IACxB,UAAU;AAAA,IACV,MAAM,GAAG,IAAI;AAAA,IACb,KAAK,IAAI,OAAO,CAAC,kBAAE,IAAI,QAAQ;AAAA,IAC/B,QAAQ,IAAI,OAAO,CAAC,kBAAE,IAAI,QAAQ;AAAA,IAClC,OAAO,IAAI,OAAO,kBAAE,IAAI,KAAK;AAAA,IAC7B,iBAAiB,MAAM,QAAQ,QAAQ;AAAA,IACvC,eAAe;AAAA,EACjB;AACF;AAEO,IAAM,kBAAkC,CAAC,WAAkB;AAAA,EAChE,UAAU;AAAA,EACV,QAAQ,IAAI,OAAO,kBAAE,MAAM,MAAM;AAAA,EACjC,cAAc,IAAI,OAAO,kBAAE,MAAM,MAAM;AAAA,EACvC,iBAAiB,MAAM,QAAQ,OAAO;AACxC;AAEO,IAAM,iBAAiC,CAAC,WAAkB;AAAA,EAC/D,UAAU;AAAA,EACV,QAAQ,IAAI,OAAO,kBAAE,IAAI;AAAA,EACzB,OAAO;AAAA,EACP,cAAc,IAAI,OAAO,kBAAE,kBAAkB;AAAA,EAC7C,iBAAiB,MAAM,QAAQ,OAAO;AACxC;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildChartContext
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TZC6KIK2.js";
|
|
4
4
|
import {
|
|
5
5
|
ChartLegendContent,
|
|
6
6
|
ChartTooltipContent
|
|
@@ -318,4 +318,4 @@ function renderChartByType(props, theme) {
|
|
|
318
318
|
export {
|
|
319
319
|
renderChartByType
|
|
320
320
|
};
|
|
321
|
-
//# sourceMappingURL=chunk-
|
|
321
|
+
//# sourceMappingURL=chunk-6ATXOJVQ.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-DQ22UKMZ.js";
|
|
4
4
|
import {
|
|
5
5
|
Avatar
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-4J62V5OE.js";
|
|
7
7
|
import {
|
|
8
8
|
Card
|
|
9
9
|
} from "./chunk-4XBAEKQQ.js";
|
|
@@ -80,4 +80,4 @@ export {
|
|
|
80
80
|
UserAvatar,
|
|
81
81
|
UserMenu
|
|
82
82
|
};
|
|
83
|
-
//# sourceMappingURL=chunk-
|
|
83
|
+
//# sourceMappingURL=chunk-6LGKJVOA.js.map
|
|
@@ -5,6 +5,10 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
filterRows
|
|
7
7
|
} from "./chunk-YGQX7BNI.js";
|
|
8
|
+
import {
|
|
9
|
+
serverDerived,
|
|
10
|
+
useServerQuery
|
|
11
|
+
} from "./chunk-IMLIIW77.js";
|
|
8
12
|
import {
|
|
9
13
|
useSelection
|
|
10
14
|
} from "./chunk-LLZWB32X.js";
|
|
@@ -16,20 +20,16 @@ import {
|
|
|
16
20
|
computeActiveFilterCount,
|
|
17
21
|
defaultSortFields
|
|
18
22
|
} from "./chunk-UKNMPGEM.js";
|
|
19
|
-
import {
|
|
20
|
-
serverDerived,
|
|
21
|
-
useServerQuery
|
|
22
|
-
} from "./chunk-IMLIIW77.js";
|
|
23
|
-
import {
|
|
24
|
-
useClearFilters,
|
|
25
|
-
useStateWriters
|
|
26
|
-
} from "./chunk-OOLES6RR.js";
|
|
27
23
|
import {
|
|
28
24
|
emptyViewState
|
|
29
25
|
} from "./chunk-HLYYB4O5.js";
|
|
30
26
|
import {
|
|
31
27
|
useDataViewsCopy
|
|
32
28
|
} from "./chunk-KHG57NAE.js";
|
|
29
|
+
import {
|
|
30
|
+
useClearFilters,
|
|
31
|
+
useStateWriters
|
|
32
|
+
} from "./chunk-OOLES6RR.js";
|
|
33
33
|
|
|
34
34
|
// src/components/data-display/DataViews/use-data-views-state.ts
|
|
35
35
|
import { useEffect, useMemo, useRef, useState } from "react";
|
|
@@ -178,4 +178,4 @@ function useDataViewsState({
|
|
|
178
178
|
export {
|
|
179
179
|
useDataViewsState
|
|
180
180
|
};
|
|
181
|
-
//# sourceMappingURL=chunk-
|
|
181
|
+
//# sourceMappingURL=chunk-7WE432RQ.js.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
renderChartByType
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import {
|
|
5
|
-
ChartContainer
|
|
6
|
-
} from "./chunk-RIRTW5EU.js";
|
|
3
|
+
} from "./chunk-6ATXOJVQ.js";
|
|
7
4
|
import {
|
|
8
5
|
getSizeStyles,
|
|
9
6
|
getVariantStyles,
|
|
10
7
|
plotHeightPx
|
|
11
8
|
} from "./chunk-TCWISGSS.js";
|
|
9
|
+
import {
|
|
10
|
+
ChartContainer
|
|
11
|
+
} from "./chunk-RIRTW5EU.js";
|
|
12
12
|
import {
|
|
13
13
|
muiColor
|
|
14
14
|
} from "./chunk-7ZPUN7TV.js";
|
|
@@ -111,4 +111,4 @@ var Chart = (props) => {
|
|
|
111
111
|
export {
|
|
112
112
|
Chart
|
|
113
113
|
};
|
|
114
|
-
//# sourceMappingURL=chunk-
|
|
114
|
+
//# sourceMappingURL=chunk-AMLHEKSV.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-YNVTUQ5B.js";
|
|
4
4
|
import {
|
|
5
5
|
DataViewsGrid
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-HWZETMO4.js";
|
|
7
7
|
import {
|
|
8
8
|
viewStateKey
|
|
9
9
|
} from "./chunk-ZOLAYP2D.js";
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
import {
|
|
15
15
|
ViewDialogs,
|
|
16
16
|
ViewMutationErrorAlert
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-GXGHEOWC.js";
|
|
18
18
|
import {
|
|
19
19
|
useSavedViewsController
|
|
20
20
|
} from "./chunk-B2JSUFDX.js";
|
|
@@ -166,4 +166,4 @@ function renderViewDialogs(ctl, fields, columns, views, testIdPrefix, onSaved) {
|
|
|
166
166
|
export {
|
|
167
167
|
DataViewsTableBase
|
|
168
168
|
};
|
|
169
|
-
//# sourceMappingURL=chunk-
|
|
169
|
+
//# sourceMappingURL=chunk-ASEHJIIV.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-AJ6KFHEE.js";
|
|
4
4
|
import {
|
|
5
5
|
PanelRangeField
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-FPNVOB52.js";
|
|
7
7
|
import {
|
|
8
8
|
useDataViewsCopy
|
|
9
9
|
} from "./chunk-KHG57NAE.js";
|
|
@@ -157,4 +157,4 @@ export {
|
|
|
157
157
|
GridFilterPanel,
|
|
158
158
|
FilterDialog
|
|
159
159
|
};
|
|
160
|
-
//# sourceMappingURL=chunk-
|
|
160
|
+
//# sourceMappingURL=chunk-BZYLTGOE.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
nameButtonSx,
|
|
5
5
|
nameLineSx,
|
|
6
6
|
nameTextSx
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-GARM5SX6.js";
|
|
8
8
|
|
|
9
9
|
// src/components/data-display/ScheduleGrid/ScheduleNameCell.tsx
|
|
10
10
|
import Box from "@mui/material/Box/index.js";
|
|
@@ -25,4 +25,4 @@ function ScheduleNameCell({ row, sx, role, sizes }) {
|
|
|
25
25
|
export {
|
|
26
26
|
ScheduleNameCell
|
|
27
27
|
};
|
|
28
|
-
//# sourceMappingURL=chunk-
|
|
28
|
+
//# sourceMappingURL=chunk-CGS2LQE5.js.map
|
|
@@ -1,32 +1,34 @@
|
|
|
1
1
|
import {
|
|
2
2
|
handleBlockKey,
|
|
3
3
|
keyCreateSpan
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-U4Z6GZDW.js";
|
|
5
|
+
import {
|
|
6
|
+
GroupFooter
|
|
7
|
+
} from "./chunk-MPVH2GM5.js";
|
|
5
8
|
import {
|
|
6
9
|
Axis,
|
|
7
10
|
Coverage,
|
|
8
|
-
GroupFooter,
|
|
9
11
|
RulerRow
|
|
10
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-FGZIEZEP.js";
|
|
11
13
|
import {
|
|
12
14
|
groupTitleSx,
|
|
13
15
|
rootSx,
|
|
14
16
|
rowSx,
|
|
15
17
|
skeletonNameSx,
|
|
16
18
|
skeletonTrackSx
|
|
17
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-5AZEDQXX.js";
|
|
18
20
|
import {
|
|
19
21
|
EN_US_DAY_RULER_LABELS
|
|
20
22
|
} from "./chunk-F2ZUUEXC.js";
|
|
21
23
|
import {
|
|
22
24
|
useRulerDrag
|
|
23
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-KXDLLS62.js";
|
|
24
26
|
import {
|
|
25
27
|
DAY_RULER_METRICS
|
|
26
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-273OLFJD.js";
|
|
27
29
|
import {
|
|
28
30
|
SR_ONLY_SX
|
|
29
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-SJAOQGQI.js";
|
|
30
32
|
import {
|
|
31
33
|
useAnnouncer
|
|
32
34
|
} from "./chunk-35HMJQLO.js";
|
|
@@ -106,7 +108,7 @@ function DayRuler(props) {
|
|
|
106
108
|
return /* @__PURE__ */ jsxs(
|
|
107
109
|
Box,
|
|
108
110
|
{
|
|
109
|
-
sx: rootSx
|
|
111
|
+
sx: rootSx,
|
|
110
112
|
"data-testid": testId,
|
|
111
113
|
role: "region",
|
|
112
114
|
"aria-label": props["aria-label"],
|
|
@@ -125,4 +127,4 @@ function DayRuler(props) {
|
|
|
125
127
|
export {
|
|
126
128
|
DayRuler
|
|
127
129
|
};
|
|
128
|
-
//# sourceMappingURL=chunk-
|
|
130
|
+
//# sourceMappingURL=chunk-CWXX5JR3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/DayRuler/DayRuler.tsx"],"sourcesContent":["'use client';\n\nimport Box from '@mui/material/Box/index.js';\nimport type React from 'react';\n\nimport { resolveLabels } from '../../../utils/resolve-labels';\nimport { SR_ONLY_SX } from '../ScheduleGrid/ScheduleGrid.styles';\nimport { useAnnouncer } from '../ScheduleGrid/useAnnouncer';\nimport { handleBlockKey, keyCreateSpan, type RulerAbilities, type RulerScale } from './DayRuler.keyboard';\nimport { EN_US_DAY_RULER_LABELS } from './DayRuler.en-US';\nimport { DAY_RULER_METRICS as M } from './DayRuler.metrics';\nimport { GroupFooter } from './DayRuler.footer';\nimport { Axis, Coverage, RulerRow, type RowContext } from './DayRuler.parts';\nimport { groupTitleSx, rootSx, rowSx, skeletonNameSx, skeletonTrackSx } from './DayRuler.styles';\nimport type { DayRulerProps, DayRulerRow } from './DayRuler.types';\nimport { useRulerDrag } from './useRulerDrag';\n\n/** The rows, grouped under a heading each time `row.group` changes. */\nfunction grouped(rows: readonly DayRulerRow[]): { title?: string; rows: DayRulerRow[] }[] {\n const out: { title?: string; rows: DayRulerRow[] }[] = [];\n for (const row of rows) {\n const last = out[out.length - 1];\n if (last && last.title === row.group) last.rows.push(row);\n else out.push({ title: row.group, rows: [row] });\n }\n return out;\n}\n\nfunction scaleOf(props: DayRulerProps): RulerScale {\n return {\n from: props.from ?? 6,\n to: props.to ?? 26,\n snap: (props.snapMinutes ?? 15) / 60,\n createHours: props.createHours ?? 4,\n tickHours: props.tickHours ?? 4,\n };\n}\n\nfunction abilitiesOf(props: DayRulerProps): RulerAbilities {\n const open = !props.readOnly && !props.loading;\n return { create: open && Boolean(props.onCreate), move: open && Boolean(props.onMove), resize: open && Boolean(props.onResize) };\n}\n\n/** A group's lines under its rows, when the host gives any (`groupFooter`). */\nfunction FooterOf({ props, group, ctx }: { props: DayRulerProps; group: string | undefined; ctx: RowContext }): React.JSX.Element | null {\n const rows = props.groupFooter?.(group);\n if (!rows || rows.length === 0) return null;\n const marked = props.labels?.footerMarked ?? EN_US_DAY_RULER_LABELS.footerMarked;\n return <GroupFooter rows={rows} scale={ctx.scale} testId={ctx.testId} marked={marked} />;\n}\n\n/** The groups and their rows — or the skeleton, the host's error, or the host's empty state. */\nfunction RulerBody({ props, ctx }: { props: DayRulerProps; ctx: RowContext }): React.JSX.Element {\n if (props.error) return <>{props.error}</>;\n if (props.loading) {\n return (\n <>\n {Array.from({ length: M.skeletonRows }, (_, index) => (\n <Box key={index} sx={rowSx} aria-hidden data-testid={`${ctx.testId}-loading`}>\n <Box sx={skeletonNameSx} />\n <Box sx={skeletonTrackSx} />\n </Box>\n ))}\n </>\n );\n }\n if (props.rows.length === 0) return <>{props.empty ?? null}</>;\n return (\n <>\n {grouped(props.rows).map((group, index) => (\n <Box key={`${index}-${group.title ?? ''}`} role=\"list\" aria-label={group.title}>\n {group.title ? (\n <Box component=\"p\" sx={groupTitleSx} aria-hidden>\n {group.title}\n </Box>\n ) : null}\n {group.rows.map((row) => (\n <RulerRow key={row.id} row={row} ctx={ctx} />\n ))}\n <FooterOf props={props} group={group.title} ctx={ctx} />\n </Box>\n ))}\n </>\n );\n}\n\n/**\n * One day as an hour ruler per row — who is on the escala when, and who is\n * really on shift (FUT-3825). Drag on an empty stretch to create (a click\n * alone is `createHours`), drag a block to move it, drag its ends to change\n * them; every hour snaps to `snapMinutes`. On a narrow ruler (a phone) each row\n * stacks and the blocks are tap-only: touch scrolls and never drags.\n *\n * The ruler reports gestures; hours, limits and refusals are the host's.\n */\nexport function DayRuler(props: DayRulerProps): React.JSX.Element {\n const { now, onCreate, onMove, onResize } = props;\n const testId = props.dataTestId ?? 'day-ruler';\n const labels = resolveLabels(EN_US_DAY_RULER_LABELS, props.labels);\n const scale = scaleOf(props);\n const can = abilitiesOf(props);\n const dragApi = useRulerDrag(scale, { onCreate, onMove, onResize });\n const { text: announcement, say } = useAnnouncer();\n\n const ctx: RowContext = {\n scale,\n now,\n can,\n drag: dragApi.drag,\n dragApi,\n onBlockClick: props.onBlockClick,\n onKeyCreate: (row) => {\n const [start, end] = keyCreateSpan(scale, now, props.createStart?.(row.id));\n onCreate?.(row.id, start, end);\n },\n onBlockKey: (event, block) => handleBlockKey(event, block, { scale, can, onMove, onResize, labels, say }),\n createLabel: labels.createTrack,\n testId,\n };\n\n return (\n <Box\n sx={rootSx}\n data-testid={testId}\n role=\"region\"\n aria-label={props['aria-label']}\n aria-busy={props.loading || undefined}\n aria-description={props.loading ? labels.loading : undefined}\n >\n {props.coverage && props.coverage.length > 0 ? (\n <Coverage coverage={props.coverage} label={props.coverageLabel} scale={scale} testId={testId} />\n ) : null}\n <Axis scale={scale} testId={testId} />\n <RulerBody props={props} ctx={ctx} />\n <Box sx={SR_ONLY_SX} aria-live=\"polite\" role=\"status\" data-testid={`${testId}-live`}>\n {announcement}\n </Box>\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ColumnsTab
|
|
3
|
-
} from "./chunk-WSAUWJFO.js";
|
|
4
1
|
import {
|
|
5
2
|
DisplayTab,
|
|
6
3
|
SortTab
|
|
7
4
|
} from "./chunk-YEGZIYVM.js";
|
|
5
|
+
import {
|
|
6
|
+
ColumnsTab
|
|
7
|
+
} from "./chunk-WSAUWJFO.js";
|
|
8
8
|
import {
|
|
9
9
|
ViewActions,
|
|
10
10
|
ViewFooter,
|
|
@@ -265,4 +265,4 @@ function DataViewsDisplayPanel({
|
|
|
265
265
|
export {
|
|
266
266
|
DataViewsDisplayPanel
|
|
267
267
|
};
|
|
268
|
-
//# sourceMappingURL=chunk-
|
|
268
|
+
//# sourceMappingURL=chunk-EE6DJPB7.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
} from "./chunk-T7OIVPCO.js";
|
|
6
6
|
import {
|
|
7
7
|
MoreFilters
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-4E2RQOSQ.js";
|
|
9
9
|
import {
|
|
10
10
|
PillControl
|
|
11
11
|
} from "./chunk-AJ6KFHEE.js";
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
} from "./chunk-KYUEO2IO.js";
|
|
18
18
|
import {
|
|
19
19
|
RangePill
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-FPNVOB52.js";
|
|
21
21
|
import {
|
|
22
22
|
CollapsedSearch,
|
|
23
23
|
InlineKeyword
|
|
@@ -251,4 +251,4 @@ function FilterSlots({
|
|
|
251
251
|
export {
|
|
252
252
|
InlineFilterControls
|
|
253
253
|
};
|
|
254
|
-
//# sourceMappingURL=chunk-
|
|
254
|
+
//# sourceMappingURL=chunk-F2UP5ZF4.js.map
|