@12-apps/ui 6.86.2 → 6.88.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 +1 -1
- package/components-catalog.md +16 -2
- package/dist/_internal/components/data-display/Alert/Alert.js +3 -3
- package/dist/_internal/components/data-display/AlertDialog/AlertDialog.js +3 -3
- package/dist/_internal/components/data-display/AlertDialog/AlertDialog.parts.js +2 -2
- package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +9 -9
- 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 +1 -1
- package/dist/_internal/components/data-display/Badge/Badge.styles.js +1 -1
- package/dist/_internal/components/data-display/Badge/BadgeContent.js +1 -1
- package/dist/_internal/components/data-display/CardKit/card-actions-context.js +4 -4
- package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +12 -12
- package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +8 -8
- package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +1 -1
- package/dist/_internal/components/data-display/Carousel/Carousel.js +4 -4
- package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +1 -1
- package/dist/_internal/components/data-display/Carousel/Carousel.styles.js +1 -1
- package/dist/_internal/components/data-display/Chart/Chart.js +6 -6
- package/dist/_internal/components/data-display/Chart/SpecChart.js +9 -9
- package/dist/_internal/components/data-display/Chart/chart-context.js +3 -3
- package/dist/_internal/components/data-display/Chart/chart-internals.js +1 -1
- package/dist/_internal/components/data-display/Chart/chart-renderers.js +5 -5
- package/dist/_internal/components/data-display/Chart/chart-spec.js +2 -2
- package/dist/_internal/components/data-display/Chip/Chip.js +3 -3
- package/dist/_internal/components/data-display/Chip/Chip.styles.js +2 -2
- package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +58 -58
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +78 -78
- package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +3 -3
- package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +9 -9
- package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +7 -7
- package/dist/_internal/components/data-display/DataViews/base-card.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +2 -2
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +16 -16
- package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +24 -24
- 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 +53 -53
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +26 -26
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +23 -23
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +24 -24
- 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 +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +12 -12
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +23 -23
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +11 -11
- 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/DayRuler/DayRuler.js +33 -0
- package/dist/_internal/components/data-display/DayRuler/DayRuler.keyboard.js +12 -0
- package/dist/_internal/components/data-display/DayRuler/DayRuler.keyboard.js.map +1 -0
- package/dist/_internal/components/data-display/DayRuler/DayRuler.metrics.js +8 -0
- package/dist/_internal/components/data-display/DayRuler/DayRuler.metrics.js.map +1 -0
- package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js +30 -0
- package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js.map +1 -0
- package/dist/_internal/components/data-display/DayRuler/DayRuler.styles.js +54 -0
- package/dist/_internal/components/data-display/DayRuler/DayRuler.styles.js.map +1 -0
- package/dist/_internal/components/data-display/DayRuler/DayRuler.types.js +1 -0
- package/dist/_internal/components/data-display/DayRuler/DayRuler.types.js.map +1 -0
- package/dist/_internal/components/data-display/DayRuler/day-ruler-model.js +26 -0
- package/dist/_internal/components/data-display/DayRuler/day-ruler-model.js.map +1 -0
- package/dist/_internal/components/data-display/DayRuler/useRulerDrag.js +11 -0
- package/dist/_internal/components/data-display/DayRuler/useRulerDrag.js.map +1 -0
- package/dist/_internal/components/data-display/DayRuler/useTextFits.js +8 -0
- package/dist/_internal/components/data-display/DayRuler/useTextFits.js.map +1 -0
- package/dist/_internal/components/data-display/EmptyState/EmptyState.js +3 -3
- package/dist/_internal/components/data-display/ErrorState/ErrorState.js +2 -2
- package/dist/_internal/components/data-display/FleetMap/FleetBody.js +12 -12
- package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +6 -6
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js +19 -19
- package/dist/_internal/components/data-display/FleetMap/FleetRoster.js +3 -3
- package/dist/_internal/components/data-display/HoverCard/HoverCard.js +3 -3
- package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.js +2 -2
- package/dist/_internal/components/data-display/LazyImage/LazyImage.js +4 -4
- package/dist/_internal/components/data-display/Lightbox/Lightbox.js +4 -4
- package/dist/_internal/components/data-display/LoadingState/LoadingState.js +5 -5
- package/dist/_internal/components/data-display/MapPreview/MapLayers.js +3 -3
- package/dist/_internal/components/data-display/MapPreview/MapPreview.js +5 -5
- package/dist/_internal/components/data-display/RegionMap/RegionMap.js +6 -6
- package/dist/_internal/components/data-display/RegionMap/RegionMapDrawing.js +2 -2
- package/dist/_internal/components/data-display/RegionMap/RegionMapList.js +1 -1
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.js +30 -0
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.js.map +1 -0
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.keyboard.js +11 -0
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.keyboard.js.map +1 -0
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.metrics.js +10 -0
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.metrics.js.map +1 -0
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.parts.js +25 -0
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.parts.js.map +1 -0
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.styles.js +59 -0
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.styles.js.map +1 -0
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.types.js +1 -0
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.types.js.map +1 -0
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleNameCell.js +18 -0
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleNameCell.js.map +1 -0
- package/dist/_internal/components/data-display/ScheduleGrid/drag-session.js +10 -0
- package/dist/_internal/components/data-display/ScheduleGrid/drag-session.js.map +1 -0
- package/dist/_internal/components/data-display/ScheduleGrid/schedule-grid-model.js +18 -0
- package/dist/_internal/components/data-display/ScheduleGrid/schedule-grid-model.js.map +1 -0
- package/dist/_internal/components/data-display/ScheduleGrid/schedule-name.styles.js +25 -0
- package/dist/_internal/components/data-display/ScheduleGrid/schedule-name.styles.js.map +1 -0
- package/dist/_internal/components/data-display/ScheduleGrid/schedule-tones.js +26 -0
- package/dist/_internal/components/data-display/ScheduleGrid/schedule-tones.js.map +1 -0
- package/dist/_internal/components/data-display/ScheduleGrid/useAnnouncer.js +8 -0
- package/dist/_internal/components/data-display/ScheduleGrid/useAnnouncer.js.map +1 -0
- package/dist/_internal/components/data-display/ScheduleGrid/useGridDrag.js +10 -0
- package/dist/_internal/components/data-display/ScheduleGrid/useGridDrag.js.map +1 -0
- package/dist/_internal/components/data-display/ScheduleGrid/useSidewaysScroll.js +9 -0
- package/dist/_internal/components/data-display/ScheduleGrid/useSidewaysScroll.js.map +1 -0
- package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +5 -5
- package/dist/_internal/components/data-display/Sheet/Sheet.body.js +4 -4
- package/dist/_internal/components/data-display/Sheet/Sheet.hooks.js +2 -2
- package/dist/_internal/components/data-display/Sheet/Sheet.js +8 -8
- package/dist/_internal/components/data-display/Sheet/Sheet.parts.js +2 -2
- package/dist/_internal/components/data-display/Sheet/Sheet.styles.js +1 -1
- package/dist/_internal/components/data-display/StatCard/StatCard.js +3 -3
- package/dist/_internal/components/data-display/Stepper/Stepper.js +2 -2
- package/dist/_internal/components/data-display/Table/Table.js +5 -5
- package/dist/_internal/components/data-display/Table/TableParts.hooks.js +2 -2
- package/dist/_internal/components/data-display/Table/TableParts.js +2 -2
- package/dist/_internal/components/data-display/Timeline/Timeline.js +2 -2
- package/dist/_internal/components/data-display/index.js +159 -130
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +5 -5
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.parts.js +4 -4
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +6 -6
- package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +5 -5
- package/dist/_internal/components/feedback/Dialog/Dialog.js +2 -2
- package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +4 -4
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.header.js +38 -0
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.header.js.map +1 -0
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.header.styles.js +14 -0
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.header.styles.js.map +1 -0
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +14 -11
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.metrics.js +1 -1
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.overview.js +40 -0
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.overview.js.map +1 -0
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +6 -13
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.styles.js +10 -2
- package/dist/_internal/components/feedback/SequenceResolver/sequence-model.js +7 -1
- package/dist/_internal/components/feedback/SequenceResolver/useSequenceRun.js +2 -2
- package/dist/_internal/components/feedback/Sonner/Sonner.js +2 -2
- package/dist/_internal/components/feedback/StackedModal/StackedModal.js +4 -4
- package/dist/_internal/components/feedback/StackedModal/StackedModal.parts.js +2 -2
- package/dist/_internal/components/feedback/Toast/Toast.js +2 -2
- package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +2 -2
- package/dist/_internal/components/feedback/index.js +45 -42
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +1 -1
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +1 -1
- package/dist/_internal/components/form/Autocomplete/Autocomplete.js +2 -2
- package/dist/_internal/components/form/Calendar/Calendar.js +7 -7
- package/dist/_internal/components/form/Calendar/CalendarDayCell.js +2 -2
- package/dist/_internal/components/form/Calendar/CalendarMonth.js +3 -3
- package/dist/_internal/components/form/Calendar/CalendarSelectorsMonth.js +5 -5
- package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +5 -5
- package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +3 -3
- package/dist/_internal/components/form/CategorySelect/CategoryRows.js +2 -2
- package/dist/_internal/components/form/CategorySelect/CategorySelect.js +9 -9
- package/dist/_internal/components/form/Command/Command.hooks.js +2 -2
- package/dist/_internal/components/form/Command/Command.js +6 -6
- package/dist/_internal/components/form/Command/Command.parts.js +2 -2
- package/dist/_internal/components/form/Command/Command.styles.js +1 -1
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +3 -3
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +13 -13
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +2 -2
- package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +3 -3
- package/dist/_internal/components/form/Label/Label.js +1 -1
- package/dist/_internal/components/form/Label/Label.styles.js +1 -1
- package/dist/_internal/components/form/Menubar/Menubar.item.js +1 -1
- package/dist/_internal/components/form/Menubar/Menubar.js +5 -5
- package/dist/_internal/components/form/Menubar/Menubar.styles.js +1 -1
- package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +3 -3
- package/dist/_internal/components/form/PickerSheet/PickerSheet.js +4 -4
- package/dist/_internal/components/form/RichTextEditor/RichTextEditor.dom.js +2 -2
- package/dist/_internal/components/form/RichTextEditor/RichTextEditor.format.js +3 -3
- package/dist/_internal/components/form/RichTextEditor/RichTextEditor.hooks.js +4 -4
- package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +5 -5
- package/dist/_internal/components/form/Switch/Switch.js +4 -4
- package/dist/_internal/components/form/Switch/Switch.parts.js +3 -3
- package/dist/_internal/components/form/Switch/Switch.styles.js +2 -2
- package/dist/_internal/components/form/index.js +83 -83
- package/dist/_internal/components/form/total-form/Fields/CategoryField.js +10 -10
- package/dist/_internal/components/form/total-form/Fields/index.js +17 -17
- package/dist/_internal/components/form/total-form/FormErrorSnackbar.js +3 -3
- package/dist/_internal/components/index.js +366 -334
- package/dist/_internal/components/layout/Box/Box.js +1 -1
- package/dist/_internal/components/layout/Card/Card.js +2 -2
- package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +2 -2
- package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +3 -3
- package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +2 -2
- package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +2 -2
- package/dist/_internal/components/layout/Dashboard/Dashboard.js +2 -2
- package/dist/_internal/components/layout/Drawer/Drawer.js +2 -2
- package/dist/_internal/components/layout/Screen/Screen.js +1 -1
- package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +3 -3
- package/dist/_internal/components/layout/SettingCard/SettingCard.js +9 -9
- package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +5 -5
- package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js +8 -8
- package/dist/_internal/components/layout/SettingCard/SettingGrid.js +6 -6
- package/dist/_internal/components/layout/SettingCard/SettingGroup.js +15 -15
- package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +14 -14
- package/dist/_internal/components/layout/SettingCard/SettingToggle.js +15 -15
- package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +7 -7
- package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +4 -4
- package/dist/_internal/components/layout/SettingsLayout/SettingsSectionChips.js +2 -2
- package/dist/_internal/components/layout/Skeleton/Skeleton.js +2 -2
- package/dist/_internal/components/layout/Stack/Stack.js +1 -1
- package/dist/_internal/components/layout/TableFilter/TableFilter.js +2 -2
- package/dist/_internal/components/layout/index.js +68 -68
- package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +9 -9
- package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +3 -3
- package/dist/_internal/components/navigation/Breadcrumbs/Breadcrumbs.js +2 -2
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +3 -3
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +6 -6
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMenuItem.js +2 -2
- package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +4 -4
- package/dist/_internal/components/navigation/Pagination/Pagination.js +2 -2
- package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +5 -5
- package/dist/_internal/components/navigation/SectionNav/SectionNav.js +6 -6
- package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js +1 -1
- package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js +1 -1
- package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js +1 -1
- package/dist/_internal/components/navigation/SectionNav/SectionNav.railCreate.js +1 -1
- package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +4 -4
- package/dist/_internal/components/navigation/SectionNav/__stories__/fixtures.js +1 -1
- package/dist/_internal/components/navigation/index.js +36 -36
- package/dist/_internal/components/typography/Code/Code.js +2 -2
- package/dist/_internal/components/typography/index.js +6 -6
- package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.js +2 -2
- package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.js +3 -3
- package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.parts.js +2 -2
- package/dist/_internal/components/utility/InstallPrompt/InstallPrompt.js +2 -2
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +3 -3
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +6 -6
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +4 -4
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +5 -5
- package/dist/_internal/components/utility/index.js +23 -23
- package/dist/_internal/en-US.labels.js +1 -1
- package/dist/_internal/icons/Icon.js +1 -1
- package/dist/_internal/provider/UiProvider.js +1 -1
- package/dist/_internal/provider/mui-bridge.js +1 -1
- package/dist/_internal/provider/use-ui-theme.js +1 -1
- package/dist/_internal/pt-BR.labels.js +1 -1
- package/dist/_internal/social-login-button/social-login-button.js +4 -4
- package/dist/_internal/user-avatar/user-avatar.js +7 -7
- package/dist/charts.js +18 -18
- package/dist/{chunk-X4N6Q37Q.js → chunk-2CRNOJGL.js} +9 -9
- package/dist/{chunk-L5KPBMMF.js → chunk-2ENMRK3U.js} +2 -2
- package/dist/{chunk-K7IDOTSU.js → chunk-2KBATUOZ.js} +3 -3
- package/dist/{chunk-VKTF3GAP.js → chunk-2MYSXWZQ.js} +9 -9
- package/dist/{chunk-CHP3QIS3.js → chunk-2ORD2FMN.js} +37 -3
- package/dist/{chunk-CHP3QIS3.js.map → chunk-2ORD2FMN.js.map} +1 -1
- package/dist/{chunk-7QKFMMWK.js → chunk-2Q2DUGH7.js} +2 -2
- package/dist/chunk-2SRWPNQ7.js +60 -0
- package/dist/chunk-2SRWPNQ7.js.map +1 -0
- package/dist/{chunk-VQ6V5TO7.js → chunk-2UNZG4JK.js} +3 -3
- package/dist/chunk-35HMJQLO.js +26 -0
- package/dist/chunk-35HMJQLO.js.map +1 -0
- package/dist/{chunk-5VKHJ7PI.js → chunk-3B4NXP4N.js} +3 -3
- package/dist/{chunk-HC6OZ7QK.js → chunk-3EIRRLCQ.js} +2 -2
- package/dist/{chunk-MSJP2AEN.js → chunk-3EKY63LD.js} +2 -2
- package/dist/{chunk-LH43GKP2.js → chunk-3KMP2F4R.js} +13 -13
- package/dist/chunk-3R6BR22L.js +72 -0
- package/dist/chunk-3R6BR22L.js.map +1 -0
- package/dist/{chunk-D3W5A4N6.js → chunk-3STNOYYO.js} +3 -3
- package/dist/{chunk-TVDHA7BT.js → chunk-3Y6NO5XL.js} +8 -8
- package/dist/{chunk-ABQZFK7M.js → chunk-44PBCQ7E.js} +6 -6
- package/dist/chunk-4HK4FVMV.js +106 -0
- package/dist/chunk-4HK4FVMV.js.map +1 -0
- package/dist/{chunk-PGHSNG33.js → chunk-4PZZJ2AE.js} +5 -5
- package/dist/{chunk-TRAMTVIO.js → chunk-4QTPERAY.js} +2 -2
- package/dist/{chunk-W2RXXF7K.js → chunk-4XBAEKQQ.js} +4 -4
- package/dist/{chunk-XCUHGPPZ.js → chunk-55PFFAAY.js} +2 -2
- package/dist/{chunk-LYVTJLCF.js → chunk-56JF5PZK.js} +4 -4
- package/dist/{native/chunks/chunk-QHW7JEPZ.js → chunk-57FIUJJJ.js} +18 -1
- package/dist/chunk-57FIUJJJ.js.map +1 -0
- package/dist/{chunk-5C3JSXBK.js → chunk-5BVAUUWL.js} +5 -5
- package/dist/{chunk-6OISIUZM.js → chunk-5F7HYYGM.js} +2 -2
- package/dist/{chunk-JHW35C6W.js → chunk-5QUH53HV.js} +6 -6
- package/dist/{chunk-DAFFZED3.js → chunk-5YVMFK7Y.js} +2 -2
- package/dist/{chunk-TI4FGQYV.js → chunk-62PTREG5.js} +2 -2
- package/dist/{chunk-3DPPDGOF.js → chunk-62SXUU5U.js} +5 -5
- package/dist/{chunk-3JZ3KEQQ.js → chunk-6ATXOJVQ.js} +4 -4
- package/dist/{chunk-7W5X3KQ2.js → chunk-6BQ3YKLD.js} +2 -2
- package/dist/chunk-6D5AMANO.js +50 -0
- package/dist/chunk-6D5AMANO.js.map +1 -0
- package/dist/{chunk-VPH3TENY.js → chunk-6DGNMASB.js} +2 -2
- package/dist/chunk-6HZYRKOB.js +94 -0
- package/dist/chunk-6HZYRKOB.js.map +1 -0
- package/dist/{chunk-NOF2FF4K.js → chunk-7CPLKAL6.js} +4 -4
- package/dist/{chunk-DVX4HDNP.js → chunk-7IBFGOLF.js} +3 -3
- package/dist/chunk-7RXL4ONS.js +1 -0
- package/dist/chunk-7RXL4ONS.js.map +1 -0
- package/dist/{chunk-EOQ6EKTS.js → chunk-7XSCEHGA.js} +7 -7
- package/dist/{chunk-QCYQL3ST.js → chunk-7XUQJJPK.js} +2 -2
- package/dist/chunk-7ZQ3KQ7J.js +49 -0
- package/dist/chunk-7ZQ3KQ7J.js.map +1 -0
- package/dist/{chunk-7VUXSNVZ.js → chunk-A4B27HYU.js} +2 -2
- package/dist/chunk-AC7K7IJE.js +28 -0
- package/dist/chunk-AC7K7IJE.js.map +1 -0
- package/dist/{chunk-42D7KBDH.js → chunk-AD6GRJFV.js} +3 -3
- package/dist/{chunk-CAOL4AIB.js → chunk-AEAVVKGY.js} +2 -2
- package/dist/{chunk-HHPFWEJY.js → chunk-ALDS5ISD.js} +14 -2
- package/dist/chunk-ALDS5ISD.js.map +1 -0
- package/dist/{chunk-M3XJVD5G.js → chunk-AMLHEKSV.js} +5 -5
- package/dist/{chunk-E5QOT7KK.js → chunk-AN37BIIO.js} +9 -9
- package/dist/chunk-ARPOWDEO.js +249 -0
- package/dist/chunk-ARPOWDEO.js.map +1 -0
- package/dist/{chunk-ABVIMFSD.js → chunk-AWUB3T7C.js} +2 -2
- package/dist/{chunk-ALOEOGQV.js → chunk-AXGQB24R.js} +2 -2
- package/dist/{chunk-Q4QFYGPH.js → chunk-B5SBDLRS.js} +3 -3
- package/dist/{chunk-G4W6HR6Q.js → chunk-B7GGLFJB.js} +5 -5
- package/dist/{chunk-C347NNZJ.js → chunk-B7ZAEZJW.js} +2 -2
- package/dist/chunk-BK3YLYL6.js +62 -0
- package/dist/chunk-BK3YLYL6.js.map +1 -0
- package/dist/{chunk-OFESNJKE.js → chunk-BQBEN44R.js} +18 -64
- package/dist/chunk-BQBEN44R.js.map +1 -0
- package/dist/{chunk-GANJRIT3.js → chunk-C3MXURP3.js} +2 -2
- package/dist/{chunk-4QR7LM5F.js → chunk-CTN4BRAH.js} +8 -8
- package/dist/{chunk-ZANWHTXH.js → chunk-CVB26LLB.js} +2 -2
- package/dist/{chunk-JH2XLVWM.js → chunk-CW5Z67NA.js} +2 -2
- package/dist/{chunk-CY4XIZNW.js → chunk-D3B4V44W.js} +2 -2
- package/dist/{chunk-BAC2PBOS.js → chunk-D3SIZ2CX.js} +7 -7
- package/dist/{chunk-QN7FVZQD.js → chunk-DHAXUVMR.js} +4 -4
- package/dist/chunk-DJNKSDQH.js +1 -0
- package/dist/chunk-DJNKSDQH.js.map +1 -0
- package/dist/{chunk-YGLAGY74.js → chunk-DM57YWZH.js} +2 -2
- package/dist/{chunk-NASLJO2R.js → chunk-DRJGHTQU.js} +2 -2
- package/dist/{chunk-BLZDSCIZ.js → chunk-DYHOBKPU.js} +6 -6
- package/dist/chunk-E6UMTR2G.js +32 -0
- package/dist/chunk-E6UMTR2G.js.map +1 -0
- package/dist/{chunk-6HXNFNOB.js → chunk-EE6DJPB7.js} +4 -4
- package/dist/chunk-EEK2NK4W.js +281 -0
- package/dist/chunk-EEK2NK4W.js.map +1 -0
- package/dist/{chunk-ANUO67JQ.js → chunk-EIMFA7KP.js} +2 -2
- package/dist/{chunk-AKE6KVQG.js → chunk-EVIQUBC6.js} +4 -4
- package/dist/{chunk-6X7PE5DH.js → chunk-EXKEPOL7.js} +7 -7
- package/dist/{chunk-LIN4A2BW.js → chunk-FKS2PNJF.js} +9 -9
- package/dist/{chunk-ZYZPSBNQ.js → chunk-G3G5W4OF.js} +3 -3
- package/dist/{chunk-J2KVF5GO.js → chunk-GBB23QLL.js} +3 -3
- package/dist/{chunk-KTXJQ4YJ.js → chunk-GBVNY2LG.js} +6 -6
- package/dist/{chunk-CJLZHW2Z.js → chunk-GCR6VE5S.js} +2 -2
- package/dist/chunk-GONPUJIE.js +92 -0
- package/dist/chunk-GONPUJIE.js.map +1 -0
- package/dist/{chunk-APSEM5AA.js → chunk-GS3QDXDP.js} +4 -4
- package/dist/{chunk-6IRZZYHF.js → chunk-H5R2EZYI.js} +7 -7
- package/dist/{chunk-WLSFBXGS.js → chunk-HED2CZDZ.js} +3 -3
- package/dist/{chunk-JVOEVTCZ.js → chunk-HQCZT6TO.js} +5 -5
- package/dist/{chunk-NKEFH3RS.js → chunk-HWJ3FLZY.js} +5 -5
- package/dist/{chunk-42TOCPXB.js → chunk-I5SIHPOG.js} +6 -6
- package/dist/{chunk-K6FCSB6T.js → chunk-I62SKY4E.js} +4 -4
- package/dist/{chunk-GOQOVKUZ.js → chunk-I6CP3ZTP.js} +3 -3
- package/dist/{chunk-UFGT2SFD.js → chunk-ICHM2LQA.js} +4 -4
- package/dist/{chunk-5IMI2XNU.js → chunk-IMMPY4Q7.js} +6 -6
- package/dist/chunk-IP424VZD.js +208 -0
- package/dist/chunk-IP424VZD.js.map +1 -0
- package/dist/{chunk-437HQPUN.js → chunk-IQ5MBELJ.js} +7 -7
- package/dist/{chunk-FRUDRDJX.js → chunk-IZ7JTG3Z.js} +4 -4
- package/dist/{chunk-5ZOJLYD2.js → chunk-JE6RZ5L6.js} +4 -4
- package/dist/{chunk-KF3Q3C3P.js → chunk-JJFLCEJJ.js} +2 -2
- package/dist/chunk-JO6D7YGN.js +111 -0
- package/dist/chunk-JO6D7YGN.js.map +1 -0
- package/dist/{chunk-IWMAFTXP.js → chunk-K2VDRODL.js} +2 -2
- package/dist/{chunk-CFDWKQZT.js → chunk-KILA7LCC.js} +4 -4
- package/dist/{chunk-IMYKJTVX.js → chunk-KLLHCPA2.js} +2 -2
- package/dist/{chunk-5UBP2DJ4.js → chunk-KZ5F52D6.js} +39 -5
- package/dist/chunk-KZ5F52D6.js.map +1 -0
- package/dist/{chunk-FORQEHRQ.js → chunk-L5GZZUTY.js} +2 -2
- package/dist/{chunk-N557OEZR.js → chunk-L62HC3UB.js} +2 -2
- package/dist/chunk-LE5JYNR7.js +58 -0
- package/dist/chunk-LE5JYNR7.js.map +1 -0
- package/dist/{chunk-2IHUFUTO.js → chunk-LR56OANO.js} +6 -6
- package/dist/{chunk-EAFZ3RDY.js → chunk-LSGZLFKX.js} +8 -8
- package/dist/{chunk-W5WYTVLS.js → chunk-LY5I3ZSV.js} +4 -4
- package/dist/{chunk-T77OVQEO.js → chunk-LZKS3NER.js} +2 -2
- package/dist/{chunk-ZAPP32GD.js → chunk-M7HYNXCU.js} +2 -2
- package/dist/chunk-MAYAJXO6.js +104 -0
- package/dist/chunk-MAYAJXO6.js.map +1 -0
- package/dist/{chunk-D34PZJH3.js → chunk-MBMZNSBP.js} +2 -2
- package/dist/{chunk-HUXAIQC5.js → chunk-MJDSXQV7.js} +2 -2
- package/dist/{chunk-PEVBSNCD.js → chunk-MLAIXRVL.js} +2 -2
- package/dist/chunk-MLIBJWQZ.js +120 -0
- package/dist/chunk-MLIBJWQZ.js.map +1 -0
- package/dist/chunk-MPUOLKFT.js +90 -0
- package/dist/chunk-MPUOLKFT.js.map +1 -0
- package/dist/{chunk-5U7LBO2V.js → chunk-MUHRPJQT.js} +4 -4
- package/dist/{chunk-COK65GX2.js → chunk-N2KHISGH.js} +2 -2
- package/dist/{chunk-UQ5GJPVZ.js → chunk-N3C4J6Z2.js} +3 -3
- package/dist/{chunk-PGANINQD.js → chunk-NI67M453.js} +5 -5
- package/dist/{chunk-P4Q7JK4L.js → chunk-NQ6P7O7C.js} +2 -2
- package/dist/{chunk-QVDEGBME.js → chunk-NQCTANF3.js} +7 -7
- package/dist/{chunk-AQPPSR4P.js → chunk-NQUYBJKJ.js} +2 -2
- package/dist/{chunk-LOHQLARB.js → chunk-NTCWIMIU.js} +4 -4
- package/dist/{chunk-Q4GAPZDA.js → chunk-O2MR6U7Q.js} +5 -5
- package/dist/{chunk-2FQF4CNE.js → chunk-OPP6USJC.js} +2 -2
- package/dist/{chunk-HNEZWVDR.js → chunk-P5C4DTO4.js} +3 -3
- package/dist/{chunk-6EZQLNPK.js → chunk-PGJIWCQR.js} +4 -4
- package/dist/{chunk-TJUWSQYQ.js → chunk-PSIUFPXA.js} +18 -1
- package/dist/{chunk-TJUWSQYQ.js.map → chunk-PSIUFPXA.js.map} +1 -1
- package/dist/{chunk-3LUT2C5M.js → chunk-QMRR35W2.js} +19 -11
- package/dist/chunk-QMRR35W2.js.map +1 -0
- package/dist/{chunk-PJNIJIE6.js → chunk-RCTHCXS6.js} +2 -2
- package/dist/{chunk-YBAK2WN5.js → chunk-RFMQBIE6.js} +4 -4
- package/dist/{chunk-EYFDIUVR.js → chunk-RZTUMBRD.js} +2 -2
- package/dist/{chunk-SGFRSRAL.js → chunk-S5VIN3EB.js} +4 -4
- package/dist/{chunk-QHIWV55K.js → chunk-SB2SEGR6.js} +3 -3
- package/dist/{chunk-5CP6VW5H.js → chunk-SFNVAM7I.js} +6 -6
- package/dist/{chunk-HOPRZEBM.js → chunk-SKIAWOUC.js} +3 -3
- package/dist/{chunk-KES3HNSU.js → chunk-T7NEXLW6.js} +2 -2
- package/dist/{chunk-EWFBDAB7.js → chunk-TOLCZ4XT.js} +2 -2
- package/dist/{chunk-HBH7V3IP.js → chunk-TOOEEQ46.js} +2 -2
- package/dist/{chunk-L7HNQRFS.js → chunk-TSID4257.js} +8 -8
- package/dist/chunk-TTRWOI6Z.js +1 -0
- package/dist/chunk-TTRWOI6Z.js.map +1 -0
- package/dist/{chunk-5CP5Z3YU.js → chunk-TYGVNTUP.js} +2 -2
- package/dist/{chunk-JG733RMP.js → chunk-TZC6KIK2.js} +5 -5
- package/dist/{chunk-XS6QHZMD.js → chunk-UBMH5MED.js} +9 -9
- package/dist/chunk-UIHPFELH.js +228 -0
- package/dist/chunk-UIHPFELH.js.map +1 -0
- package/dist/chunk-UIJU5X26.js +140 -0
- package/dist/chunk-UIJU5X26.js.map +1 -0
- package/dist/{chunk-UXOFA3ZP.js → chunk-UNCDOLF5.js} +7 -7
- package/dist/{chunk-UYKIUUWP.js → chunk-V2QTL6VI.js} +2 -2
- package/dist/{chunk-6GICMRDX.js → chunk-VMTOLAZ5.js} +5 -5
- package/dist/{chunk-4QGMUHAU.js → chunk-VQ7YNAK2.js} +2 -2
- package/dist/chunk-WBMLMLXP.js +94 -0
- package/dist/chunk-WBMLMLXP.js.map +1 -0
- package/dist/{chunk-B32XH7NK.js → chunk-WHOD6LVN.js} +3 -3
- package/dist/{chunk-X3EEV3OI.js → chunk-WLC56R2I.js} +7 -7
- package/dist/chunk-WMTW4JXT.js +345 -0
- package/dist/chunk-WMTW4JXT.js.map +1 -0
- package/dist/{chunk-X4J576GR.js → chunk-WTACWJSF.js} +2 -2
- package/dist/{chunk-5S5K73I6.js → chunk-WUBMJSBR.js} +2 -2
- package/dist/{chunk-TSEBMVYY.js → chunk-X2GWR75Q.js} +3 -3
- package/dist/{chunk-2VRJ577J.js → chunk-X3EB67O2.js} +4 -4
- package/dist/{chunk-PQGHYFUA.js → chunk-XALFZ25A.js} +4 -4
- package/dist/{chunk-BNBWUXT3.js → chunk-XEKJ7L7I.js} +2 -2
- package/dist/{chunk-YPW4HZ3Z.js → chunk-XHIBFBNP.js} +4 -4
- package/dist/{chunk-QAH3XILB.js → chunk-XNIHDUOP.js} +3 -3
- package/dist/{chunk-DILDC77M.js → chunk-XRVXQJNB.js} +3 -3
- package/dist/{chunk-K6WY2CHG.js → chunk-XZFTRGRW.js} +2 -2
- package/dist/{chunk-LLPPIO3K.js → chunk-Y4ZWPOUV.js} +2 -2
- package/dist/{chunk-C4NSEUT5.js → chunk-Y6IIWGZB.js} +2 -2
- package/dist/{chunk-TLJVUWJ5.js → chunk-YAQE7QVC.js} +3 -3
- package/dist/{chunk-4OUJ4ZMK.js → chunk-YDIC6LSP.js} +2 -2
- package/dist/chunk-YE44HUFF.js +72 -0
- package/dist/chunk-YE44HUFF.js.map +1 -0
- package/dist/{chunk-PVIQDBUN.js → chunk-YFG6XXBB.js} +2 -2
- package/dist/{chunk-UBVKMM3V.js → chunk-YGQ2DLIM.js} +2 -2
- package/dist/{chunk-T5RFH2T5.js → chunk-YKONJEI4.js} +2 -2
- package/dist/{chunk-ZIHSCBMN.js → chunk-YLZXIR6B.js} +7 -7
- package/dist/chunk-YMYJO2CZ.js +32 -0
- package/dist/chunk-YMYJO2CZ.js.map +1 -0
- package/dist/{chunk-A3DDEKLV.js → chunk-YNZUYZ2O.js} +2 -2
- package/dist/{chunk-YNVTUQ5B.js → chunk-YWBPASB2.js} +2 -2
- package/dist/{chunk-G3JFESKD.js → chunk-Z5WUSI47.js} +6 -6
- package/dist/{chunk-IX5ADKII.js → chunk-Z7CBLQQR.js} +3 -3
- package/dist/{chunk-7WE432RQ.js → chunk-ZCNR4DN5.js} +12 -12
- package/dist/{chunk-JRBSTOMA.js → chunk-ZDAAHCIS.js} +6 -6
- package/dist/{chunk-2SBQ47RI.js → chunk-ZF2LZVDO.js} +7 -7
- package/dist/{chunk-4IG73U2X.js → chunk-ZIA774ZW.js} +2 -2
- package/dist/{chunk-E5OBAS3U.js → chunk-ZLIES3XR.js} +2 -2
- package/dist/data-display/Alert.js +3 -3
- package/dist/data-display/AlertDialog.js +3 -3
- package/dist/data-display/AsyncStateContainer.js +9 -9
- package/dist/data-display/Avatar.js +4 -4
- package/dist/data-display/Badge.js +1 -1
- package/dist/data-display/CardKit.js +22 -22
- package/dist/data-display/Carousel.js +4 -4
- package/dist/data-display/Chart.js +18 -18
- package/dist/data-display/Chip.js +3 -3
- package/dist/data-display/DataGrid.js +2 -2
- package/dist/data-display/DataViews.js +92 -92
- package/dist/data-display/DayRuler.js +33 -0
- package/dist/data-display/DayRuler.js.map +1 -0
- package/dist/data-display/EmptyState.js +3 -3
- package/dist/data-display/ErrorState.js +2 -2
- package/dist/data-display/FleetMap.js +19 -19
- package/dist/data-display/HoverCard.js +3 -3
- package/dist/data-display/InteractiveTooltip.js +2 -2
- package/dist/data-display/LazyImage.js +4 -4
- package/dist/data-display/Lightbox.js +4 -4
- package/dist/data-display/LoadingState.js +5 -5
- package/dist/data-display/MapPreview.js +5 -5
- package/dist/data-display/RegionMap.js +6 -6
- package/dist/data-display/ScheduleGrid.js +30 -0
- package/dist/data-display/ScheduleGrid.js.map +1 -0
- package/dist/data-display/SectionOnboarding.js +5 -5
- package/dist/data-display/Sheet.js +8 -8
- package/dist/data-display/StatCard.js +3 -3
- package/dist/data-display/Stepper.js +2 -2
- package/dist/data-display/Table.js +5 -5
- package/dist/data-display/Timeline.js +2 -2
- package/dist/en-US.js +1 -1
- package/dist/feedback/ConfirmAction.js +9 -9
- package/dist/feedback/Dialog.js +2 -2
- package/dist/feedback/NotificationStatusNotice.js +4 -4
- package/dist/feedback/SequenceResolver.js +14 -11
- package/dist/feedback/Sonner.js +2 -2
- package/dist/feedback/StackedModal.js +4 -4
- package/dist/feedback/Toast.js +2 -2
- package/dist/feedback/TutorialOverlay.js +2 -2
- package/dist/form/AddressAutocomplete.js +1 -1
- package/dist/form/Autocomplete.js +2 -2
- package/dist/form/Calendar.js +7 -7
- package/dist/form/CategorySelect.js +9 -9
- package/dist/form/Command.js +6 -6
- package/dist/form/DateRangePicker.js +13 -13
- package/dist/form/Label.js +1 -1
- package/dist/form/Menubar.js +5 -5
- package/dist/form/PickerSheet.js +4 -4
- package/dist/form/RichTextEditor.js +5 -5
- package/dist/form/Switch.js +4 -4
- package/dist/form/total-form.js +18 -18
- package/dist/icons.js +1 -1
- package/dist/layout/Box.js +1 -1
- package/dist/layout/Card.js +2 -2
- package/dist/layout/ContentToolbar.js +8 -8
- package/dist/layout/Dashboard.js +2 -2
- package/dist/layout/Drawer.js +2 -2
- package/dist/layout/Screen.js +1 -1
- package/dist/layout/ScrollArea.js +3 -3
- package/dist/layout/SettingCard.js +21 -21
- package/dist/layout/SettingsLayout.js +8 -8
- package/dist/layout/Skeleton.js +2 -2
- package/dist/layout/Stack.js +1 -1
- package/dist/layout/TableFilter.js +2 -2
- package/dist/locales.js +27 -27
- package/dist/native/chunks/{chunk-FXA5DLKR.js → chunk-4G634E3Q.js} +3 -3
- package/dist/{chunk-XOXXG7Q5.js → native/chunks/chunk-E5UA5XVN.js} +18 -1
- package/dist/native/chunks/chunk-E5UA5XVN.js.map +1 -0
- package/dist/native/chunks/{chunk-IN3XZ7EK.js → chunk-WLG3KT2V.js} +2 -2
- package/dist/native/data-display/Avatar.js +1 -1
- package/dist/native/data-display/Badge.js +1 -1
- package/dist/native/data-display/Chip.js +1 -1
- package/dist/native/data-display/EmptyState.js +3 -3
- package/dist/native/data-display/ErrorState.js +2 -2
- package/dist/native/data-display/FleetMap.js +3 -3
- package/dist/native/data-display/LoadingState.js +1 -1
- package/dist/native/feedback/Dialog.js +1 -1
- package/dist/native/form/Button.js +2 -2
- package/dist/native/form/Checkbox.js +1 -1
- package/dist/native/form/Input.js +1 -1
- package/dist/native/form/Switch.js +1 -1
- package/dist/navigation/AppHeader.js +13 -13
- package/dist/navigation/Breadcrumbs.js +2 -2
- package/dist/navigation/NavigationMenu.js +6 -6
- package/dist/navigation/Pagination.js +2 -2
- package/dist/navigation/SectionNav.js +6 -6
- package/dist/provider.js +1 -1
- package/dist/pt-BR.js +24 -24
- package/dist/social-login-button.js +4 -4
- package/dist/tokens.js +6 -6
- package/dist/types/components/data-display/DayRuler/DayRuler.d.ts +13 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.d.ts.map +1 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.keyboard.d.ts +31 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.keyboard.d.ts.map +1 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.metrics.d.ts +86 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.metrics.d.ts.map +1 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.parts.d.ts +37 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.parts.d.ts.map +1 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts +45 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts.map +1 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.types.d.ts +105 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.types.d.ts.map +1 -0
- package/dist/types/components/data-display/DayRuler/day-ruler-model.d.ts +26 -0
- package/dist/types/components/data-display/DayRuler/day-ruler-model.d.ts.map +1 -0
- package/dist/types/components/data-display/DayRuler/index.d.ts +4 -0
- package/dist/types/components/data-display/DayRuler/index.d.ts.map +1 -0
- package/dist/types/components/data-display/DayRuler/useRulerDrag.d.ts +45 -0
- package/dist/types/components/data-display/DayRuler/useRulerDrag.d.ts.map +1 -0
- package/dist/types/components/data-display/DayRuler/useTextFits.d.ts +14 -0
- package/dist/types/components/data-display/DayRuler/useTextFits.d.ts.map +1 -0
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.d.ts +15 -0
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.d.ts.map +1 -0
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.keyboard.d.ts +32 -0
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.keyboard.d.ts.map +1 -0
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.metrics.d.ts +105 -0
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.metrics.d.ts.map +1 -0
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.parts.d.ts +51 -0
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.parts.d.ts.map +1 -0
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.styles.d.ts +78 -0
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.styles.d.ts.map +1 -0
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.types.d.ts +156 -0
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.types.d.ts.map +1 -0
- package/dist/types/components/data-display/ScheduleGrid/ScheduleNameCell.d.ts +33 -0
- package/dist/types/components/data-display/ScheduleGrid/ScheduleNameCell.d.ts.map +1 -0
- package/dist/types/components/data-display/ScheduleGrid/drag-session.d.ts +47 -0
- package/dist/types/components/data-display/ScheduleGrid/drag-session.d.ts.map +1 -0
- package/dist/types/components/data-display/ScheduleGrid/index.d.ts +4 -0
- package/dist/types/components/data-display/ScheduleGrid/index.d.ts.map +1 -0
- package/dist/types/components/data-display/ScheduleGrid/schedule-grid-model.d.ts +18 -0
- package/dist/types/components/data-display/ScheduleGrid/schedule-grid-model.d.ts.map +1 -0
- package/dist/types/components/data-display/ScheduleGrid/schedule-name.styles.d.ts +16 -0
- package/dist/types/components/data-display/ScheduleGrid/schedule-name.styles.d.ts.map +1 -0
- package/dist/types/components/data-display/ScheduleGrid/schedule-tones.d.ts +32 -0
- package/dist/types/components/data-display/ScheduleGrid/schedule-tones.d.ts.map +1 -0
- package/dist/types/components/data-display/ScheduleGrid/useAnnouncer.d.ts +13 -0
- package/dist/types/components/data-display/ScheduleGrid/useAnnouncer.d.ts.map +1 -0
- package/dist/types/components/data-display/ScheduleGrid/useGridDrag.d.ts +56 -0
- package/dist/types/components/data-display/ScheduleGrid/useGridDrag.d.ts.map +1 -0
- package/dist/types/components/data-display/ScheduleGrid/useSidewaysScroll.d.ts +26 -0
- package/dist/types/components/data-display/ScheduleGrid/useSidewaysScroll.d.ts.map +1 -0
- package/dist/types/components/data-display/index.d.ts +2 -0
- package/dist/types/components/data-display/index.d.ts.map +1 -1
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.d.ts.map +1 -1
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.header.d.ts +33 -0
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.header.d.ts.map +1 -0
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.header.styles.d.ts +17 -0
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.header.styles.d.ts.map +1 -0
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.metrics.d.ts +12 -0
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.metrics.d.ts.map +1 -1
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.overview.d.ts +22 -0
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.overview.d.ts.map +1 -0
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.parts.d.ts +6 -18
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.parts.d.ts.map +1 -1
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.styles.d.ts +17 -0
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.styles.d.ts.map +1 -1
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.types.d.ts +56 -1
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.types.d.ts.map +1 -1
- package/dist/types/components/feedback/SequenceResolver/index.d.ts +1 -1
- package/dist/types/components/feedback/SequenceResolver/index.d.ts.map +1 -1
- package/dist/types/components/feedback/SequenceResolver/sequence-model.d.ts +27 -3
- package/dist/types/components/feedback/SequenceResolver/sequence-model.d.ts.map +1 -1
- package/dist/types/components/feedback/SequenceResolver/useSequenceRun.d.ts +9 -0
- package/dist/types/components/feedback/SequenceResolver/useSequenceRun.d.ts.map +1 -1
- package/dist/types/copy/labels.d.ts +34 -0
- package/dist/types/copy/labels.d.ts.map +1 -1
- package/dist/types/en-US.labels.d.ts.map +1 -1
- package/dist/types/pt-BR.labels.d.ts.map +1 -1
- package/dist/types-native/copy/labels.d.ts +34 -0
- package/dist/types-native/copy/labels.d.ts.map +1 -1
- package/dist/types-native/en-US.labels.d.ts.map +1 -1
- package/dist/typography/Code.js +2 -2
- package/dist/user-avatar.js +7 -7
- package/dist/utility/AnimatedIcon.js +2 -2
- package/dist/utility/InfiniteScroll.js +3 -3
- package/dist/utility/InstallPrompt.js +2 -2
- package/dist/utility/WorkflowStep.js +6 -6
- package/package.json +9 -1
- package/src/components/data-display/DayRuler/DayRuler.keyboard.ts +94 -0
- package/src/components/data-display/DayRuler/DayRuler.md +84 -0
- package/src/components/data-display/DayRuler/DayRuler.metrics.ts +47 -0
- package/src/components/data-display/DayRuler/DayRuler.parts.tsx +272 -0
- package/src/components/data-display/DayRuler/DayRuler.styles.ts +288 -0
- package/src/components/data-display/DayRuler/DayRuler.tsx +130 -0
- package/src/components/data-display/DayRuler/DayRuler.types.ts +107 -0
- package/src/components/data-display/DayRuler/day-ruler-model.ts +83 -0
- package/src/components/data-display/DayRuler/index.ts +9 -0
- package/src/components/data-display/DayRuler/useRulerDrag.ts +167 -0
- package/src/components/data-display/DayRuler/useTextFits.ts +41 -0
- package/src/components/data-display/ScheduleGrid/ScheduleGrid.keyboard.ts +138 -0
- package/src/components/data-display/ScheduleGrid/ScheduleGrid.md +170 -0
- package/src/components/data-display/ScheduleGrid/ScheduleGrid.metrics.ts +75 -0
- package/src/components/data-display/ScheduleGrid/ScheduleGrid.parts.tsx +382 -0
- package/src/components/data-display/ScheduleGrid/ScheduleGrid.styles.ts +393 -0
- package/src/components/data-display/ScheduleGrid/ScheduleGrid.tsx +142 -0
- package/src/components/data-display/ScheduleGrid/ScheduleGrid.types.ts +164 -0
- package/src/components/data-display/ScheduleGrid/ScheduleNameCell.tsx +66 -0
- package/src/components/data-display/ScheduleGrid/drag-session.ts +120 -0
- package/src/components/data-display/ScheduleGrid/index.ts +12 -0
- package/src/components/data-display/ScheduleGrid/schedule-grid-model.ts +39 -0
- package/src/components/data-display/ScheduleGrid/schedule-name.styles.ts +96 -0
- package/src/components/data-display/ScheduleGrid/schedule-tones.ts +126 -0
- package/src/components/data-display/ScheduleGrid/useAnnouncer.ts +32 -0
- package/src/components/data-display/ScheduleGrid/useGridDrag.ts +137 -0
- package/src/components/data-display/ScheduleGrid/useSidewaysScroll.ts +126 -0
- package/src/components/data-display/index.ts +2 -0
- package/src/components/feedback/SequenceResolver/SequenceResolver.header.styles.ts +65 -0
- package/src/components/feedback/SequenceResolver/SequenceResolver.header.tsx +153 -0
- package/src/components/feedback/SequenceResolver/SequenceResolver.md +43 -2
- package/src/components/feedback/SequenceResolver/SequenceResolver.metrics.ts +12 -0
- package/src/components/feedback/SequenceResolver/SequenceResolver.overview.tsx +74 -0
- package/src/components/feedback/SequenceResolver/SequenceResolver.parts.tsx +37 -83
- package/src/components/feedback/SequenceResolver/SequenceResolver.styles.ts +47 -0
- package/src/components/feedback/SequenceResolver/SequenceResolver.tsx +152 -35
- package/src/components/feedback/SequenceResolver/SequenceResolver.types.ts +58 -1
- package/src/components/feedback/SequenceResolver/index.ts +2 -0
- package/src/components/feedback/SequenceResolver/sequence-model.ts +66 -5
- package/src/components/feedback/SequenceResolver/useSequenceRun.ts +28 -10
- package/src/copy/labels.ts +36 -0
- package/src/en-US.labels.ts +17 -0
- package/src/pt-BR.labels.ts +17 -0
- package/dist/chunk-3LUT2C5M.js.map +0 -1
- package/dist/chunk-5UBP2DJ4.js.map +0 -1
- package/dist/chunk-ABRUOINB.js +0 -1
- package/dist/chunk-HHPFWEJY.js.map +0 -1
- package/dist/chunk-OFESNJKE.js.map +0 -1
- package/dist/chunk-PXEIN3J4.js +0 -162
- package/dist/chunk-PXEIN3J4.js.map +0 -1
- package/dist/chunk-XOXXG7Q5.js.map +0 -1
- package/dist/native/chunks/chunk-QHW7JEPZ.js.map +0 -1
- /package/dist/{chunk-ABRUOINB.js.map → _internal/components/data-display/DayRuler/DayRuler.js.map} +0 -0
- /package/dist/{chunk-X4N6Q37Q.js.map → chunk-2CRNOJGL.js.map} +0 -0
- /package/dist/{chunk-L5KPBMMF.js.map → chunk-2ENMRK3U.js.map} +0 -0
- /package/dist/{chunk-K7IDOTSU.js.map → chunk-2KBATUOZ.js.map} +0 -0
- /package/dist/{chunk-VKTF3GAP.js.map → chunk-2MYSXWZQ.js.map} +0 -0
- /package/dist/{chunk-7QKFMMWK.js.map → chunk-2Q2DUGH7.js.map} +0 -0
- /package/dist/{chunk-VQ6V5TO7.js.map → chunk-2UNZG4JK.js.map} +0 -0
- /package/dist/{chunk-5VKHJ7PI.js.map → chunk-3B4NXP4N.js.map} +0 -0
- /package/dist/{chunk-HC6OZ7QK.js.map → chunk-3EIRRLCQ.js.map} +0 -0
- /package/dist/{chunk-MSJP2AEN.js.map → chunk-3EKY63LD.js.map} +0 -0
- /package/dist/{chunk-LH43GKP2.js.map → chunk-3KMP2F4R.js.map} +0 -0
- /package/dist/{chunk-D3W5A4N6.js.map → chunk-3STNOYYO.js.map} +0 -0
- /package/dist/{chunk-TVDHA7BT.js.map → chunk-3Y6NO5XL.js.map} +0 -0
- /package/dist/{chunk-ABQZFK7M.js.map → chunk-44PBCQ7E.js.map} +0 -0
- /package/dist/{chunk-PGHSNG33.js.map → chunk-4PZZJ2AE.js.map} +0 -0
- /package/dist/{chunk-TRAMTVIO.js.map → chunk-4QTPERAY.js.map} +0 -0
- /package/dist/{chunk-W2RXXF7K.js.map → chunk-4XBAEKQQ.js.map} +0 -0
- /package/dist/{chunk-XCUHGPPZ.js.map → chunk-55PFFAAY.js.map} +0 -0
- /package/dist/{chunk-LYVTJLCF.js.map → chunk-56JF5PZK.js.map} +0 -0
- /package/dist/{chunk-5C3JSXBK.js.map → chunk-5BVAUUWL.js.map} +0 -0
- /package/dist/{chunk-6OISIUZM.js.map → chunk-5F7HYYGM.js.map} +0 -0
- /package/dist/{chunk-JHW35C6W.js.map → chunk-5QUH53HV.js.map} +0 -0
- /package/dist/{chunk-DAFFZED3.js.map → chunk-5YVMFK7Y.js.map} +0 -0
- /package/dist/{chunk-TI4FGQYV.js.map → chunk-62PTREG5.js.map} +0 -0
- /package/dist/{chunk-3DPPDGOF.js.map → chunk-62SXUU5U.js.map} +0 -0
- /package/dist/{chunk-3JZ3KEQQ.js.map → chunk-6ATXOJVQ.js.map} +0 -0
- /package/dist/{chunk-7W5X3KQ2.js.map → chunk-6BQ3YKLD.js.map} +0 -0
- /package/dist/{chunk-VPH3TENY.js.map → chunk-6DGNMASB.js.map} +0 -0
- /package/dist/{chunk-NOF2FF4K.js.map → chunk-7CPLKAL6.js.map} +0 -0
- /package/dist/{chunk-DVX4HDNP.js.map → chunk-7IBFGOLF.js.map} +0 -0
- /package/dist/{chunk-EOQ6EKTS.js.map → chunk-7XSCEHGA.js.map} +0 -0
- /package/dist/{chunk-QCYQL3ST.js.map → chunk-7XUQJJPK.js.map} +0 -0
- /package/dist/{chunk-7VUXSNVZ.js.map → chunk-A4B27HYU.js.map} +0 -0
- /package/dist/{chunk-42D7KBDH.js.map → chunk-AD6GRJFV.js.map} +0 -0
- /package/dist/{chunk-CAOL4AIB.js.map → chunk-AEAVVKGY.js.map} +0 -0
- /package/dist/{chunk-M3XJVD5G.js.map → chunk-AMLHEKSV.js.map} +0 -0
- /package/dist/{chunk-E5QOT7KK.js.map → chunk-AN37BIIO.js.map} +0 -0
- /package/dist/{chunk-ABVIMFSD.js.map → chunk-AWUB3T7C.js.map} +0 -0
- /package/dist/{chunk-ALOEOGQV.js.map → chunk-AXGQB24R.js.map} +0 -0
- /package/dist/{chunk-Q4QFYGPH.js.map → chunk-B5SBDLRS.js.map} +0 -0
- /package/dist/{chunk-G4W6HR6Q.js.map → chunk-B7GGLFJB.js.map} +0 -0
- /package/dist/{chunk-C347NNZJ.js.map → chunk-B7ZAEZJW.js.map} +0 -0
- /package/dist/{chunk-GANJRIT3.js.map → chunk-C3MXURP3.js.map} +0 -0
- /package/dist/{chunk-4QR7LM5F.js.map → chunk-CTN4BRAH.js.map} +0 -0
- /package/dist/{chunk-ZANWHTXH.js.map → chunk-CVB26LLB.js.map} +0 -0
- /package/dist/{chunk-JH2XLVWM.js.map → chunk-CW5Z67NA.js.map} +0 -0
- /package/dist/{chunk-CY4XIZNW.js.map → chunk-D3B4V44W.js.map} +0 -0
- /package/dist/{chunk-BAC2PBOS.js.map → chunk-D3SIZ2CX.js.map} +0 -0
- /package/dist/{chunk-QN7FVZQD.js.map → chunk-DHAXUVMR.js.map} +0 -0
- /package/dist/{chunk-YGLAGY74.js.map → chunk-DM57YWZH.js.map} +0 -0
- /package/dist/{chunk-NASLJO2R.js.map → chunk-DRJGHTQU.js.map} +0 -0
- /package/dist/{chunk-BLZDSCIZ.js.map → chunk-DYHOBKPU.js.map} +0 -0
- /package/dist/{chunk-6HXNFNOB.js.map → chunk-EE6DJPB7.js.map} +0 -0
- /package/dist/{chunk-ANUO67JQ.js.map → chunk-EIMFA7KP.js.map} +0 -0
- /package/dist/{chunk-AKE6KVQG.js.map → chunk-EVIQUBC6.js.map} +0 -0
- /package/dist/{chunk-6X7PE5DH.js.map → chunk-EXKEPOL7.js.map} +0 -0
- /package/dist/{chunk-LIN4A2BW.js.map → chunk-FKS2PNJF.js.map} +0 -0
- /package/dist/{chunk-ZYZPSBNQ.js.map → chunk-G3G5W4OF.js.map} +0 -0
- /package/dist/{chunk-J2KVF5GO.js.map → chunk-GBB23QLL.js.map} +0 -0
- /package/dist/{chunk-KTXJQ4YJ.js.map → chunk-GBVNY2LG.js.map} +0 -0
- /package/dist/{chunk-CJLZHW2Z.js.map → chunk-GCR6VE5S.js.map} +0 -0
- /package/dist/{chunk-APSEM5AA.js.map → chunk-GS3QDXDP.js.map} +0 -0
- /package/dist/{chunk-6IRZZYHF.js.map → chunk-H5R2EZYI.js.map} +0 -0
- /package/dist/{chunk-WLSFBXGS.js.map → chunk-HED2CZDZ.js.map} +0 -0
- /package/dist/{chunk-JVOEVTCZ.js.map → chunk-HQCZT6TO.js.map} +0 -0
- /package/dist/{chunk-NKEFH3RS.js.map → chunk-HWJ3FLZY.js.map} +0 -0
- /package/dist/{chunk-42TOCPXB.js.map → chunk-I5SIHPOG.js.map} +0 -0
- /package/dist/{chunk-K6FCSB6T.js.map → chunk-I62SKY4E.js.map} +0 -0
- /package/dist/{chunk-GOQOVKUZ.js.map → chunk-I6CP3ZTP.js.map} +0 -0
- /package/dist/{chunk-UFGT2SFD.js.map → chunk-ICHM2LQA.js.map} +0 -0
- /package/dist/{chunk-5IMI2XNU.js.map → chunk-IMMPY4Q7.js.map} +0 -0
- /package/dist/{chunk-437HQPUN.js.map → chunk-IQ5MBELJ.js.map} +0 -0
- /package/dist/{chunk-FRUDRDJX.js.map → chunk-IZ7JTG3Z.js.map} +0 -0
- /package/dist/{chunk-5ZOJLYD2.js.map → chunk-JE6RZ5L6.js.map} +0 -0
- /package/dist/{chunk-KF3Q3C3P.js.map → chunk-JJFLCEJJ.js.map} +0 -0
- /package/dist/{chunk-IWMAFTXP.js.map → chunk-K2VDRODL.js.map} +0 -0
- /package/dist/{chunk-CFDWKQZT.js.map → chunk-KILA7LCC.js.map} +0 -0
- /package/dist/{chunk-IMYKJTVX.js.map → chunk-KLLHCPA2.js.map} +0 -0
- /package/dist/{chunk-FORQEHRQ.js.map → chunk-L5GZZUTY.js.map} +0 -0
- /package/dist/{chunk-N557OEZR.js.map → chunk-L62HC3UB.js.map} +0 -0
- /package/dist/{chunk-2IHUFUTO.js.map → chunk-LR56OANO.js.map} +0 -0
- /package/dist/{chunk-EAFZ3RDY.js.map → chunk-LSGZLFKX.js.map} +0 -0
- /package/dist/{chunk-W5WYTVLS.js.map → chunk-LY5I3ZSV.js.map} +0 -0
- /package/dist/{chunk-T77OVQEO.js.map → chunk-LZKS3NER.js.map} +0 -0
- /package/dist/{chunk-ZAPP32GD.js.map → chunk-M7HYNXCU.js.map} +0 -0
- /package/dist/{chunk-D34PZJH3.js.map → chunk-MBMZNSBP.js.map} +0 -0
- /package/dist/{chunk-HUXAIQC5.js.map → chunk-MJDSXQV7.js.map} +0 -0
- /package/dist/{chunk-PEVBSNCD.js.map → chunk-MLAIXRVL.js.map} +0 -0
- /package/dist/{chunk-5U7LBO2V.js.map → chunk-MUHRPJQT.js.map} +0 -0
- /package/dist/{chunk-COK65GX2.js.map → chunk-N2KHISGH.js.map} +0 -0
- /package/dist/{chunk-UQ5GJPVZ.js.map → chunk-N3C4J6Z2.js.map} +0 -0
- /package/dist/{chunk-PGANINQD.js.map → chunk-NI67M453.js.map} +0 -0
- /package/dist/{chunk-P4Q7JK4L.js.map → chunk-NQ6P7O7C.js.map} +0 -0
- /package/dist/{chunk-QVDEGBME.js.map → chunk-NQCTANF3.js.map} +0 -0
- /package/dist/{chunk-AQPPSR4P.js.map → chunk-NQUYBJKJ.js.map} +0 -0
- /package/dist/{chunk-LOHQLARB.js.map → chunk-NTCWIMIU.js.map} +0 -0
- /package/dist/{chunk-Q4GAPZDA.js.map → chunk-O2MR6U7Q.js.map} +0 -0
- /package/dist/{chunk-2FQF4CNE.js.map → chunk-OPP6USJC.js.map} +0 -0
- /package/dist/{chunk-HNEZWVDR.js.map → chunk-P5C4DTO4.js.map} +0 -0
- /package/dist/{chunk-6EZQLNPK.js.map → chunk-PGJIWCQR.js.map} +0 -0
- /package/dist/{chunk-PJNIJIE6.js.map → chunk-RCTHCXS6.js.map} +0 -0
- /package/dist/{chunk-YBAK2WN5.js.map → chunk-RFMQBIE6.js.map} +0 -0
- /package/dist/{chunk-EYFDIUVR.js.map → chunk-RZTUMBRD.js.map} +0 -0
- /package/dist/{chunk-SGFRSRAL.js.map → chunk-S5VIN3EB.js.map} +0 -0
- /package/dist/{chunk-QHIWV55K.js.map → chunk-SB2SEGR6.js.map} +0 -0
- /package/dist/{chunk-5CP6VW5H.js.map → chunk-SFNVAM7I.js.map} +0 -0
- /package/dist/{chunk-HOPRZEBM.js.map → chunk-SKIAWOUC.js.map} +0 -0
- /package/dist/{chunk-KES3HNSU.js.map → chunk-T7NEXLW6.js.map} +0 -0
- /package/dist/{chunk-EWFBDAB7.js.map → chunk-TOLCZ4XT.js.map} +0 -0
- /package/dist/{chunk-HBH7V3IP.js.map → chunk-TOOEEQ46.js.map} +0 -0
- /package/dist/{chunk-L7HNQRFS.js.map → chunk-TSID4257.js.map} +0 -0
- /package/dist/{chunk-5CP5Z3YU.js.map → chunk-TYGVNTUP.js.map} +0 -0
- /package/dist/{chunk-JG733RMP.js.map → chunk-TZC6KIK2.js.map} +0 -0
- /package/dist/{chunk-XS6QHZMD.js.map → chunk-UBMH5MED.js.map} +0 -0
- /package/dist/{chunk-UXOFA3ZP.js.map → chunk-UNCDOLF5.js.map} +0 -0
- /package/dist/{chunk-UYKIUUWP.js.map → chunk-V2QTL6VI.js.map} +0 -0
- /package/dist/{chunk-6GICMRDX.js.map → chunk-VMTOLAZ5.js.map} +0 -0
- /package/dist/{chunk-4QGMUHAU.js.map → chunk-VQ7YNAK2.js.map} +0 -0
- /package/dist/{chunk-B32XH7NK.js.map → chunk-WHOD6LVN.js.map} +0 -0
- /package/dist/{chunk-X3EEV3OI.js.map → chunk-WLC56R2I.js.map} +0 -0
- /package/dist/{chunk-X4J576GR.js.map → chunk-WTACWJSF.js.map} +0 -0
- /package/dist/{chunk-5S5K73I6.js.map → chunk-WUBMJSBR.js.map} +0 -0
- /package/dist/{chunk-TSEBMVYY.js.map → chunk-X2GWR75Q.js.map} +0 -0
- /package/dist/{chunk-2VRJ577J.js.map → chunk-X3EB67O2.js.map} +0 -0
- /package/dist/{chunk-PQGHYFUA.js.map → chunk-XALFZ25A.js.map} +0 -0
- /package/dist/{chunk-BNBWUXT3.js.map → chunk-XEKJ7L7I.js.map} +0 -0
- /package/dist/{chunk-YPW4HZ3Z.js.map → chunk-XHIBFBNP.js.map} +0 -0
- /package/dist/{chunk-QAH3XILB.js.map → chunk-XNIHDUOP.js.map} +0 -0
- /package/dist/{chunk-DILDC77M.js.map → chunk-XRVXQJNB.js.map} +0 -0
- /package/dist/{chunk-K6WY2CHG.js.map → chunk-XZFTRGRW.js.map} +0 -0
- /package/dist/{chunk-LLPPIO3K.js.map → chunk-Y4ZWPOUV.js.map} +0 -0
- /package/dist/{chunk-C4NSEUT5.js.map → chunk-Y6IIWGZB.js.map} +0 -0
- /package/dist/{chunk-TLJVUWJ5.js.map → chunk-YAQE7QVC.js.map} +0 -0
- /package/dist/{chunk-4OUJ4ZMK.js.map → chunk-YDIC6LSP.js.map} +0 -0
- /package/dist/{chunk-PVIQDBUN.js.map → chunk-YFG6XXBB.js.map} +0 -0
- /package/dist/{chunk-UBVKMM3V.js.map → chunk-YGQ2DLIM.js.map} +0 -0
- /package/dist/{chunk-T5RFH2T5.js.map → chunk-YKONJEI4.js.map} +0 -0
- /package/dist/{chunk-ZIHSCBMN.js.map → chunk-YLZXIR6B.js.map} +0 -0
- /package/dist/{chunk-A3DDEKLV.js.map → chunk-YNZUYZ2O.js.map} +0 -0
- /package/dist/{chunk-YNVTUQ5B.js.map → chunk-YWBPASB2.js.map} +0 -0
- /package/dist/{chunk-G3JFESKD.js.map → chunk-Z5WUSI47.js.map} +0 -0
- /package/dist/{chunk-IX5ADKII.js.map → chunk-Z7CBLQQR.js.map} +0 -0
- /package/dist/{chunk-7WE432RQ.js.map → chunk-ZCNR4DN5.js.map} +0 -0
- /package/dist/{chunk-JRBSTOMA.js.map → chunk-ZDAAHCIS.js.map} +0 -0
- /package/dist/{chunk-2SBQ47RI.js.map → chunk-ZF2LZVDO.js.map} +0 -0
- /package/dist/{chunk-4IG73U2X.js.map → chunk-ZIA774ZW.js.map} +0 -0
- /package/dist/{chunk-E5OBAS3U.js.map → chunk-ZLIES3XR.js.map} +0 -0
- /package/dist/native/chunks/{chunk-FXA5DLKR.js.map → chunk-4G634E3Q.js.map} +0 -0
- /package/dist/native/chunks/{chunk-IN3XZ7EK.js.map → chunk-WLG3KT2V.js.map} +0 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
|
|
3
|
+
import type { ScheduleGridLabels } from '../../../copy/labels';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* How a block reads. Each tone is drawn differently AND carries its `note`
|
|
7
|
+
* text, so colour is never the only signal:
|
|
8
|
+
* - `plan` — scheduled ("17:00–23:00", note "↻ toda semana");
|
|
9
|
+
* - `late` — scheduled, started, nobody there ("Atrasado");
|
|
10
|
+
* - `away` — the person said they will not come ("Ausente");
|
|
11
|
+
* - `uncovered` — nobody covers it ("Sem ninguém");
|
|
12
|
+
* - `onduty` — running right now ("Em turno", "desde 08:26").
|
|
13
|
+
*/
|
|
14
|
+
export type ScheduleBlockTone = 'plan' | 'late' | 'away' | 'uncovered' | 'onduty';
|
|
15
|
+
|
|
16
|
+
/** One day column of the grid. */
|
|
17
|
+
export interface ScheduleGridColumn {
|
|
18
|
+
/** The day ("Ter 20/10", "Hoje · Seg 19/10"). */
|
|
19
|
+
label: string;
|
|
20
|
+
/** Under the label ("3 turnos", "ninguém"). */
|
|
21
|
+
sublabel?: string;
|
|
22
|
+
/** Today's column: its label in the primary colour and its cells framed. */
|
|
23
|
+
today?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* The day has gone: its label in the secondary ink (`today` wins). The
|
|
26
|
+
* header only — the cells that can take no new turno say so themselves
|
|
27
|
+
* (`ScheduleGridCell.closed`).
|
|
28
|
+
*/
|
|
29
|
+
past?: boolean;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** A row: one person (or resource) across the days. */
|
|
33
|
+
export interface ScheduleGridRow {
|
|
34
|
+
id: string;
|
|
35
|
+
/** The name in the first column. Wraps; never pushes the day columns. */
|
|
36
|
+
label: string;
|
|
37
|
+
/** A line under the name ("Afastamento · licença maternidade", "70h na semana · acima de 40h"). */
|
|
38
|
+
meta?: string;
|
|
39
|
+
/** `warning` draws `meta` in the warning ink (over a limit). Default `default`. */
|
|
40
|
+
metaTone?: 'default' | 'warning';
|
|
41
|
+
/** The last column ("18h", "—"). */
|
|
42
|
+
total?: string;
|
|
43
|
+
/** Makes the name a button (the person's week, an afastamento). */
|
|
44
|
+
onLabelClick?: () => void;
|
|
45
|
+
/** The name button's accessible name, when it says more than `label` ("Ana: horas e afastamento"). */
|
|
46
|
+
labelAccessible?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Beside the name, on its line (a "Freela" tag). It keeps its size; when the
|
|
49
|
+
* name column has no room for both, it moves under the name.
|
|
50
|
+
*/
|
|
51
|
+
nameAdornment?: React.ReactNode;
|
|
52
|
+
/** Under the meta line: the host's chips ("2 regras ›"). One line; a chip that does not fit shrinks, its label cut. */
|
|
53
|
+
chips?: React.ReactNode;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** Rows under one heading ("Cozinha"). */
|
|
57
|
+
export interface ScheduleGridGroup {
|
|
58
|
+
/** Shown upper-case above the rows; also names the row group. Omit for no heading. */
|
|
59
|
+
title?: string;
|
|
60
|
+
rows: ScheduleGridRow[];
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* A stretch inside a block that is not worked (a meal break), drawn hatched
|
|
65
|
+
* across the block's height. Fractions of the block's length, `0 <= start < end <= 1`;
|
|
66
|
+
* the words for it ("pausa 14–15") are the block's `note`.
|
|
67
|
+
*/
|
|
68
|
+
export interface ScheduleBlockBreak {
|
|
69
|
+
start: number;
|
|
70
|
+
end: number;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/** One block inside a cell. */
|
|
74
|
+
export interface ScheduleGridBlock {
|
|
75
|
+
/** Stable identity — what `onMove`, `onCopy` and `onBlockClick` report. */
|
|
76
|
+
id: string;
|
|
77
|
+
/** The first line ("17:00–23:00", "Em turno"). One line, ellipsis. */
|
|
78
|
+
label: string;
|
|
79
|
+
/** The second line ("↻ toda semana", "Atrasado"). Wraps when long; never cut. */
|
|
80
|
+
note?: string;
|
|
81
|
+
tone: ScheduleBlockTone;
|
|
82
|
+
/** Its middle can be dragged to another cell (and Alt+←/→ moves it a day). */
|
|
83
|
+
movable?: boolean;
|
|
84
|
+
/** It has edge grips that copy it along its row (and Shift+←/→ copies it a day). */
|
|
85
|
+
copyable?: boolean;
|
|
86
|
+
/** Drawn with a ring (the block whose window is open). */
|
|
87
|
+
selected?: boolean;
|
|
88
|
+
/** The tooltip and the full text. Default: `label` and `note`. */
|
|
89
|
+
title?: string;
|
|
90
|
+
/** A break inside the block, drawn as a hatched gap. */
|
|
91
|
+
breakSpan?: ScheduleBlockBreak;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/** What a cell holds. */
|
|
95
|
+
export interface ScheduleGridCell {
|
|
96
|
+
blocks: readonly ScheduleGridBlock[];
|
|
97
|
+
/**
|
|
98
|
+
* The day is closed to this row (an afastamento): hatched, refuses a
|
|
99
|
+
* create and a drop. Blocks already there still show.
|
|
100
|
+
*/
|
|
101
|
+
blocked?: boolean;
|
|
102
|
+
/** Written in a blocked cell with no blocks ("Afastamento"). */
|
|
103
|
+
blockedLabel?: string;
|
|
104
|
+
/**
|
|
105
|
+
* The day can take no new turno (it has gone). No "+", the empty cell is no
|
|
106
|
+
* focus stop, a create or copy drag skips it and a move or keyboard
|
|
107
|
+
* copy/move onto it is refused — as on a `blocked` day — but with no hatch
|
|
108
|
+
* and no label: the cell just looks empty. Blocks already there still show
|
|
109
|
+
* and still open. Drawn with no fill, only the divider border.
|
|
110
|
+
*/
|
|
111
|
+
closed?: boolean;
|
|
112
|
+
/**
|
|
113
|
+
* A closed cell's words for a screen reader ("Já passou"), visually hidden;
|
|
114
|
+
* nothing on screen. Without it the cell stays unnamed. Ignored on a
|
|
115
|
+
* `blocked` cell, which has its own name.
|
|
116
|
+
*/
|
|
117
|
+
closedLabel?: string;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export interface ScheduleGridProps {
|
|
121
|
+
/** The day columns, in order (seven for a week). A day is its index here. */
|
|
122
|
+
columns: readonly ScheduleGridColumn[];
|
|
123
|
+
groups: readonly ScheduleGridGroup[];
|
|
124
|
+
/** What a cell holds. Called for every row and day on each render: keep it cheap. */
|
|
125
|
+
cell: (rowId: string, day: number) => ScheduleGridCell;
|
|
126
|
+
/** The last column's header ("horas"). Without it and without row totals, there is no last column. */
|
|
127
|
+
totalLabel?: string;
|
|
128
|
+
/**
|
|
129
|
+
* No create, copy or move: no "+", no grips, empty cells are not focusable.
|
|
130
|
+
* Block clicks still reach `onBlockClick` (a read-only window).
|
|
131
|
+
*/
|
|
132
|
+
readOnly?: boolean;
|
|
133
|
+
/**
|
|
134
|
+
* A click on an empty cell (one day), or a drag across empty cells of one
|
|
135
|
+
* row (every crossed day that is empty, not blocked and not closed).
|
|
136
|
+
*/
|
|
137
|
+
onCreate?: (rowId: string, days: number[]) => void;
|
|
138
|
+
/** A block's edge grip dragged along its row: the crossed days that are empty, not blocked and not closed. */
|
|
139
|
+
onCopy?: (blockId: string, days: number[]) => void;
|
|
140
|
+
/** A block's middle dropped on an empty, open cell of any row (never a blocked or closed one). */
|
|
141
|
+
onMove?: (blockId: string, toRowId: string, toDay: number) => void;
|
|
142
|
+
/** A block clicked, tapped or Entered. */
|
|
143
|
+
onBlockClick?: (blockId: string) => void;
|
|
144
|
+
/** The ghost text in the cells a create drag covers — the hours it will get ("08:00–14:00"). */
|
|
145
|
+
createPreview?: (rowId: string) => string;
|
|
146
|
+
/** Skeleton rows instead of the body, `aria-busy`, no interaction. */
|
|
147
|
+
loading?: boolean;
|
|
148
|
+
/** Replaces the body: the host's error (an `ErrorState` with its retry). */
|
|
149
|
+
error?: React.ReactNode;
|
|
150
|
+
/** Shown when there are no rows at all. */
|
|
151
|
+
empty?: React.ReactNode;
|
|
152
|
+
/** The header row sticks this far from the top of the scroll container (a sticky page bar above). Default 0. */
|
|
153
|
+
stickyTop?: number;
|
|
154
|
+
/** The grid's accessible name ("Escala da semana"). */
|
|
155
|
+
'aria-label'?: string;
|
|
156
|
+
/** The component's own words: cell names and the live region's sentences. Default: the English pack. */
|
|
157
|
+
labels?: Partial<ScheduleGridLabels>;
|
|
158
|
+
/**
|
|
159
|
+
* Base test id (default `schedule-grid`). Parts: `-header`, `-row-${rowId}`,
|
|
160
|
+
* `-cell-${rowId}-${day}`, `-block-${blockId}`, `-grip-l-${blockId}`,
|
|
161
|
+
* `-grip-r-${blockId}`, `-break-${blockId}`, `-live`, `-loading`.
|
|
162
|
+
*/
|
|
163
|
+
dataTestId?: string;
|
|
164
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import Box from '@mui/material/Box/index.js';
|
|
2
|
+
import type { SxProps, Theme } from '@mui/material/styles/index.js';
|
|
3
|
+
import type * as React from 'react';
|
|
4
|
+
|
|
5
|
+
import { chipsSx, metaSx, nameButtonSx, nameLineSx, nameTextSx } from './schedule-name.styles';
|
|
6
|
+
|
|
7
|
+
/** What a row says about its person, in both views. */
|
|
8
|
+
export interface ScheduleNameRow {
|
|
9
|
+
label: string;
|
|
10
|
+
meta?: string;
|
|
11
|
+
metaTone?: 'default' | 'warning';
|
|
12
|
+
onLabelClick?: () => void;
|
|
13
|
+
labelAccessible?: string;
|
|
14
|
+
nameAdornment?: React.ReactNode;
|
|
15
|
+
chips?: React.ReactNode;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
interface ScheduleNameCellProps {
|
|
19
|
+
row: ScheduleNameRow;
|
|
20
|
+
/** The cell's own box (where it sits in its view's row). */
|
|
21
|
+
sx: SxProps<Theme>;
|
|
22
|
+
/** `rowheader` in the week grid's table; none on the ruler. */
|
|
23
|
+
role?: string;
|
|
24
|
+
/** The view's type sizes (px) and the space above the chips (spacing units). */
|
|
25
|
+
sizes: { name: number; meta: number; chipsTop: number };
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The first column of a schedule row (FUT-3825): the name (a button when the
|
|
30
|
+
* host acts on it), its adornment, its meta line and its chips — one part for
|
|
31
|
+
* the week grid and the day ruler, so a person reads the same in both.
|
|
32
|
+
*/
|
|
33
|
+
export function ScheduleNameCell({ row, sx, role, sizes }: ScheduleNameCellProps): React.JSX.Element {
|
|
34
|
+
const name = (
|
|
35
|
+
<Box component="span" sx={nameTextSx(sizes.name)} title={row.label}>
|
|
36
|
+
{row.label}
|
|
37
|
+
</Box>
|
|
38
|
+
);
|
|
39
|
+
const named = row.onLabelClick ? (
|
|
40
|
+
<Box component="button" type="button" sx={nameButtonSx} onClick={row.onLabelClick} aria-label={row.labelAccessible}>
|
|
41
|
+
{name}
|
|
42
|
+
</Box>
|
|
43
|
+
) : (
|
|
44
|
+
name
|
|
45
|
+
);
|
|
46
|
+
return (
|
|
47
|
+
<Box role={role} sx={sx}>
|
|
48
|
+
{row.nameAdornment ? (
|
|
49
|
+
<Box sx={nameLineSx}>
|
|
50
|
+
{named}
|
|
51
|
+
<Box component="span" data-schedule-adornment="">
|
|
52
|
+
{row.nameAdornment}
|
|
53
|
+
</Box>
|
|
54
|
+
</Box>
|
|
55
|
+
) : (
|
|
56
|
+
named
|
|
57
|
+
)}
|
|
58
|
+
{row.meta ? (
|
|
59
|
+
<Box component="span" sx={metaSx(row.metaTone ?? 'default', sizes.meta)} title={row.meta}>
|
|
60
|
+
{row.meta}
|
|
61
|
+
</Box>
|
|
62
|
+
) : null}
|
|
63
|
+
{row.chips ? <Box sx={chipsSx(sizes.chipsTop)}>{row.chips}</Box> : null}
|
|
64
|
+
</Box>
|
|
65
|
+
);
|
|
66
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* WHAT THE WEEK GRID'S AND THE DAY RULER'S DRAGS SHARE (FUT-3825): the window
|
|
5
|
+
* listeners a running drag needs, the ways to abort one, and the click a
|
|
6
|
+
* finished or aborted drag leaves behind.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/** Why a drag ended without being committed. */
|
|
10
|
+
export type DragAbort =
|
|
11
|
+
/** Escape pressed while dragging: the button may still be down. */
|
|
12
|
+
| 'escape'
|
|
13
|
+
/** The window lost focus (another app, a dialog): the release may never reach the page. */
|
|
14
|
+
| 'blur'
|
|
15
|
+
/** A move arrived with no button down: the release happened where the page could not see it. */
|
|
16
|
+
| 'released'
|
|
17
|
+
/** The browser took the pointer (a scroll, a system gesture). */
|
|
18
|
+
| 'pointercancel';
|
|
19
|
+
|
|
20
|
+
export interface DragWindowHandlers {
|
|
21
|
+
move: (event: PointerEvent) => void;
|
|
22
|
+
/** The release, wherever it happens: a release outside the grid still commits. */
|
|
23
|
+
up: (event: PointerEvent) => void;
|
|
24
|
+
abort: (reason: DragAbort) => void;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Listen on the window while `active`: moves, the release, and the four ways a
|
|
29
|
+
* drag is abandoned. Escape is taken in the capture phase and stopped there,
|
|
30
|
+
* so a drawer or dialog around the grid does not also close on it.
|
|
31
|
+
*/
|
|
32
|
+
export function useDragWindow(active: boolean, handlers: DragWindowHandlers): void {
|
|
33
|
+
const latest = useRef(handlers);
|
|
34
|
+
latest.current = handlers;
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (!active) return undefined;
|
|
37
|
+
const onMove = (event: PointerEvent): void => {
|
|
38
|
+
if (event.buttons === 0) latest.current.abort('released');
|
|
39
|
+
else latest.current.move(event);
|
|
40
|
+
};
|
|
41
|
+
const onUp = (event: PointerEvent): void => latest.current.up(event);
|
|
42
|
+
const onCancel = (): void => latest.current.abort('pointercancel');
|
|
43
|
+
const onBlur = (): void => latest.current.abort('blur');
|
|
44
|
+
const onKey = (event: KeyboardEvent): void => {
|
|
45
|
+
if (event.key !== 'Escape') return;
|
|
46
|
+
event.preventDefault();
|
|
47
|
+
event.stopPropagation();
|
|
48
|
+
latest.current.abort('escape');
|
|
49
|
+
};
|
|
50
|
+
window.addEventListener('pointermove', onMove);
|
|
51
|
+
window.addEventListener('pointerup', onUp);
|
|
52
|
+
window.addEventListener('pointercancel', onCancel);
|
|
53
|
+
window.addEventListener('blur', onBlur);
|
|
54
|
+
window.addEventListener('keydown', onKey, true);
|
|
55
|
+
return () => {
|
|
56
|
+
window.removeEventListener('pointermove', onMove);
|
|
57
|
+
window.removeEventListener('pointerup', onUp);
|
|
58
|
+
window.removeEventListener('pointercancel', onCancel);
|
|
59
|
+
window.removeEventListener('blur', onBlur);
|
|
60
|
+
window.removeEventListener('keydown', onKey, true);
|
|
61
|
+
};
|
|
62
|
+
}, [active]);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface TrailingClick {
|
|
66
|
+
/**
|
|
67
|
+
* Ignore the click this gesture leaves behind. `released`: the button is
|
|
68
|
+
* already up (a commit), so that click is in flight now; otherwise (an
|
|
69
|
+
* abort with the button still down) it follows the coming release.
|
|
70
|
+
*/
|
|
71
|
+
arm: (released: boolean) => void;
|
|
72
|
+
/** A new drag starts: nothing to ignore. */
|
|
73
|
+
reset: () => void;
|
|
74
|
+
/** True once, for the click to ignore. */
|
|
75
|
+
take: () => boolean;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* The click a drag leaves behind, and only that one: the flag lives until the
|
|
80
|
+
* task after the release (the browser dispatches the release's click before
|
|
81
|
+
* any task runs) and dies with the next press, so a later click on anything —
|
|
82
|
+
* a block that cannot move, another cell — is never eaten.
|
|
83
|
+
*/
|
|
84
|
+
export function useTrailingClick(): TrailingClick {
|
|
85
|
+
const armed = useRef(false);
|
|
86
|
+
const undo = useRef<(() => void) | null>(null);
|
|
87
|
+
|
|
88
|
+
const clear = (): void => {
|
|
89
|
+
armed.current = false;
|
|
90
|
+
undo.current?.();
|
|
91
|
+
undo.current = null;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
useEffect(() => clear, []);
|
|
95
|
+
|
|
96
|
+
const arm = (released: boolean): void => {
|
|
97
|
+
clear();
|
|
98
|
+
armed.current = true;
|
|
99
|
+
let timer: ReturnType<typeof setTimeout> | undefined;
|
|
100
|
+
const later = (): void => {
|
|
101
|
+
timer = setTimeout(clear, 0);
|
|
102
|
+
};
|
|
103
|
+
window.addEventListener('pointerdown', clear, true);
|
|
104
|
+
if (released) later();
|
|
105
|
+
else window.addEventListener('pointerup', later, { capture: true, once: true });
|
|
106
|
+
undo.current = () => {
|
|
107
|
+
if (timer !== undefined) clearTimeout(timer);
|
|
108
|
+
window.removeEventListener('pointerdown', clear, true);
|
|
109
|
+
window.removeEventListener('pointerup', later, true);
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
const take = (): boolean => {
|
|
114
|
+
const swallow = armed.current;
|
|
115
|
+
if (swallow) clear();
|
|
116
|
+
return swallow;
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
return { arm, reset: clear, take };
|
|
120
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { ScheduleGrid } from './ScheduleGrid';
|
|
2
|
+
export type {
|
|
3
|
+
ScheduleBlockBreak,
|
|
4
|
+
ScheduleBlockTone,
|
|
5
|
+
ScheduleGridBlock,
|
|
6
|
+
ScheduleGridCell,
|
|
7
|
+
ScheduleGridColumn,
|
|
8
|
+
ScheduleGridGroup,
|
|
9
|
+
ScheduleGridProps,
|
|
10
|
+
ScheduleGridRow,
|
|
11
|
+
} from './ScheduleGrid.types';
|
|
12
|
+
export type { ScheduleGridLabels } from '../../../copy/labels';
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { ScheduleGridCell } from './ScheduleGrid.types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* THE GRID'S RULES, as pure functions (FUT-3825): which days a gesture lands
|
|
5
|
+
* on. The host decides everything else — hours, limits, refusals.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/** A cell that can take a new turno: nothing in it, not closed to the row (`blocked`) and not gone (`closed`). */
|
|
9
|
+
export function isOpen(cell: ScheduleGridCell): boolean {
|
|
10
|
+
return !cell.blocked && !cell.closed && cell.blocks.length === 0;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/** Every day from `a` to `b` inclusive, in order, whichever is larger. */
|
|
14
|
+
export function daysBetween(a: number, b: number): number[] {
|
|
15
|
+
const from = Math.min(a, b);
|
|
16
|
+
const to = Math.max(a, b);
|
|
17
|
+
return Array.from({ length: to - from + 1 }, (_, index) => from + index);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** A create across `anchor…current` of one row: the crossed days that are open (G-R1). */
|
|
21
|
+
export function createTargets(cellOf: (day: number) => ScheduleGridCell, anchor: number, current: number): number[] {
|
|
22
|
+
return daysBetween(anchor, current).filter((day) => isOpen(cellOf(day)));
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** A copy of the block on `source` across `source…current`: never its own day, never a taken or closed one (G-R2). */
|
|
26
|
+
export function copyTargets(cellOf: (day: number) => ScheduleGridCell, source: number, current: number): number[] {
|
|
27
|
+
return daysBetween(source, current).filter((day) => day !== source && isOpen(cellOf(day)));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** A move may land on an open cell that is not its own (G-R3). */
|
|
31
|
+
export function canDrop(target: ScheduleGridCell, sameCell: boolean): boolean {
|
|
32
|
+
return !sameCell && isOpen(target);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** The day one step left (-1) or right (+1) of `day`, or `undefined` past either end. */
|
|
36
|
+
export function stepDay(day: number, direction: -1 | 1, dayCount: number): number | undefined {
|
|
37
|
+
const next = day + direction;
|
|
38
|
+
return next >= 0 && next < dayCount ? next : undefined;
|
|
39
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type { SxProps, Theme } from '@mui/material/styles/index.js';
|
|
2
|
+
|
|
3
|
+
import { rem } from '../../../tokens/relative';
|
|
4
|
+
import { SCHEDULE_NAME_METRICS as M } from './ScheduleGrid.metrics';
|
|
5
|
+
import { signalInk } from './schedule-tones';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* THE PERSON'S NAME COLUMN, shared by the week grid and the day ruler
|
|
9
|
+
* (FUT-3825): one look for the name, its adornment, its meta line and chips.
|
|
10
|
+
* Each view passes its own type sizes; everything else is the same.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/** The name as a button: it reads as text, underlines under the pointer. */
|
|
14
|
+
export const nameButtonSx: SxProps<Theme> = (theme: Theme) => ({
|
|
15
|
+
// A block of its content's width: an inline-block button would sit on the
|
|
16
|
+
// line's baseline and its strut would push the meta 6px down.
|
|
17
|
+
display: 'block',
|
|
18
|
+
width: 'fit-content',
|
|
19
|
+
maxWidth: '100%',
|
|
20
|
+
font: 'inherit',
|
|
21
|
+
background: 'transparent',
|
|
22
|
+
border: 0,
|
|
23
|
+
color: 'inherit',
|
|
24
|
+
p: 0,
|
|
25
|
+
textAlign: 'left',
|
|
26
|
+
cursor: 'pointer',
|
|
27
|
+
minHeight: rem(theme, M.button.minHeight),
|
|
28
|
+
borderRadius: rem(theme, M.button.radius),
|
|
29
|
+
position: 'relative',
|
|
30
|
+
// A 40px hit area around the 24px name, the look unchanged (a phone's finger).
|
|
31
|
+
'&::after': {
|
|
32
|
+
content: '""',
|
|
33
|
+
position: 'absolute',
|
|
34
|
+
left: 0,
|
|
35
|
+
right: 0,
|
|
36
|
+
top: '50%',
|
|
37
|
+
height: rem(theme, M.button.hitArea),
|
|
38
|
+
transform: 'translateY(-50%)',
|
|
39
|
+
},
|
|
40
|
+
'&:hover > span': { textDecoration: 'underline' },
|
|
41
|
+
'&:focus-visible': {
|
|
42
|
+
outline: `${rem(theme, M.ring)} solid ${theme.palette.primary.main}`,
|
|
43
|
+
outlineOffset: rem(theme, M.button.ringOffset),
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
/** At most two lines, the rest cut with an ellipsis (the whole text in `title`). */
|
|
48
|
+
const twoLines = {
|
|
49
|
+
display: '-webkit-box',
|
|
50
|
+
WebkitBoxOrient: 'vertical',
|
|
51
|
+
WebkitLineClamp: 2,
|
|
52
|
+
overflow: 'hidden',
|
|
53
|
+
overflowWrap: 'anywhere',
|
|
54
|
+
} as const;
|
|
55
|
+
|
|
56
|
+
export function nameTextSx(size: number): SxProps<Theme> {
|
|
57
|
+
return (theme: Theme) => ({ ...twoLines, fontSize: rem(theme, size), fontWeight: 500 });
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** The line under the name; `warning` in the signal's ink, readable on the page. */
|
|
61
|
+
export function metaSx(tone: 'default' | 'warning', size: number): SxProps<Theme> {
|
|
62
|
+
return (theme: Theme) => ({
|
|
63
|
+
...twoLines,
|
|
64
|
+
fontSize: rem(theme, size),
|
|
65
|
+
mt: 0.25,
|
|
66
|
+
color: tone === 'warning' ? signalInk(theme, 'warning', theme.palette.background.default) : theme.palette.text.secondary,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** The name and its adornment: one line while both fit, the adornment under the name when not. */
|
|
71
|
+
export const nameLineSx: SxProps<Theme> = {
|
|
72
|
+
display: 'flex',
|
|
73
|
+
flexWrap: 'wrap',
|
|
74
|
+
alignItems: 'center',
|
|
75
|
+
columnGap: 0.75,
|
|
76
|
+
rowGap: 0.25,
|
|
77
|
+
minWidth: 0,
|
|
78
|
+
'& > :first-of-type': { minWidth: 0 },
|
|
79
|
+
'& > [data-schedule-adornment]': { flexShrink: 0, display: 'inline-flex' },
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
/** The host's chips under the meta: ONE line; a chip that does not fit shrinks and cuts its label. `top` in spacing units. */
|
|
83
|
+
export function chipsSx(top: number): SxProps<Theme> {
|
|
84
|
+
return {
|
|
85
|
+
display: 'flex',
|
|
86
|
+
flexWrap: 'nowrap',
|
|
87
|
+
gap: 0.75,
|
|
88
|
+
mt: top,
|
|
89
|
+
minWidth: 0,
|
|
90
|
+
overflow: 'hidden',
|
|
91
|
+
// Over the name button's 40px hit area, which reaches into the space above them.
|
|
92
|
+
position: 'relative',
|
|
93
|
+
zIndex: 1,
|
|
94
|
+
'& > *': { minWidth: 0, flexShrink: 1, maxWidth: '100%' },
|
|
95
|
+
};
|
|
96
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import type { Theme } from '@mui/material/styles/index.js';
|
|
2
|
+
import type { CSSObject } from '@mui/material/styles/index.js';
|
|
3
|
+
|
|
4
|
+
import { blend, darken, decomposeColor, getContrastRatio, getLuminance, lighten } from '../../../tokens/color';
|
|
5
|
+
import { fieldEdge } from '../../../tokens/field-edge';
|
|
6
|
+
import { absoluteInk } from '../../../tokens/ink';
|
|
7
|
+
import { softSignal, surfaces } from '../../../tokens/surfaces';
|
|
8
|
+
import type { ScheduleBlockTone } from './ScheduleGrid.types';
|
|
9
|
+
|
|
10
|
+
/** WCAG AA for a block's text (12px, not large): every tone's ink clears it on its ground. */
|
|
11
|
+
export const TONE_TEXT_CONTRAST = 4.5;
|
|
12
|
+
|
|
13
|
+
/** A translucent colour as it shows over an opaque `ground`. */
|
|
14
|
+
function flatten(ground: string, overlay: string): string {
|
|
15
|
+
const { values, type } = decomposeColor(overlay);
|
|
16
|
+
const opacity = type.endsWith('a') ? (values[3] ?? 1) : 1;
|
|
17
|
+
return blend(ground, overlay, opacity);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** The ground a block with no fill of its own sits on: a cell (or a track) over the page. */
|
|
21
|
+
export function cellGround(theme: Theme): string {
|
|
22
|
+
return flatten(theme.palette.background.default, theme.palette.action.hover);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** The first ink that reads at {@link TONE_TEXT_CONTRAST} on `ground`; none does, the one that reads best. */
|
|
26
|
+
export function readableInk(ground: string, candidates: readonly string[]): string {
|
|
27
|
+
let best = candidates[0] ?? '';
|
|
28
|
+
let bestRatio = -1;
|
|
29
|
+
for (const ink of candidates) {
|
|
30
|
+
const ratio = getContrastRatio(flatten(ground, ink), ground);
|
|
31
|
+
if (ratio >= TONE_TEXT_CONTRAST) return ink;
|
|
32
|
+
if (ratio > bestRatio) [best, bestRatio] = [ink, ratio];
|
|
33
|
+
}
|
|
34
|
+
return best;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** `color`, then ten steps of it towards whichever end reads on `ground` — the hue kept as long as it can be. */
|
|
38
|
+
function deepening(color: string, ground: string): string[] {
|
|
39
|
+
const toward = getLuminance(ground) > LUMINANCE_MIDPOINT ? darken : lighten;
|
|
40
|
+
return Array.from({ length: 11 }, (_, step) => (step === 0 ? color : toward(color, step / 10)));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Where black and white read equally well on a ground (WCAG luminance). */
|
|
44
|
+
const LUMINANCE_MIDPOINT = 0.179;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* The signal's readable ink on a ground that is not its own colour: its deep
|
|
48
|
+
* step on a light ground, its light step on a dark one, deepened further until
|
|
49
|
+
* it reads at 4.5:1 (MUI's `warning.dark` is 3.6:1 on a light cell).
|
|
50
|
+
*/
|
|
51
|
+
export function signalInk(theme: Theme, signal: 'warning' | 'success', ground: string): string {
|
|
52
|
+
const step = theme.palette.mode === 'dark' ? theme.palette[signal].light : theme.palette[signal].dark;
|
|
53
|
+
return readableInk(ground, deepening(step, ground));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The ink on a solid signal fill: the palette's own `contrastText` when it
|
|
58
|
+
* reads (a host's brand decision), else the page's own text, else black or
|
|
59
|
+
* white — MUI's default `warning` has white at 3.1:1 on its orange; the
|
|
60
|
+
* prototype writes it in the dark ink.
|
|
61
|
+
*/
|
|
62
|
+
function inkOnFill(theme: Theme, fill: string, incumbent: string): string {
|
|
63
|
+
const { black, white } = absoluteInk(theme);
|
|
64
|
+
return readableInk(fill, [incumbent, theme.palette.text.primary, black, white]);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* How a block of each tone is drawn — in the week grid and on the day ruler
|
|
69
|
+
* alike, so one tone reads the same in both views. `dashedPlan` is the ruler's
|
|
70
|
+
* escala block (a dashed outline over a faint ground); the grid's plan block is
|
|
71
|
+
* a raised chip. Never colour alone: every tone also carries its note text.
|
|
72
|
+
*/
|
|
73
|
+
export function blockToneStyles(theme: Theme, tone: ScheduleBlockTone, dashedPlan = false): CSSObject {
|
|
74
|
+
const hairline = '1px solid';
|
|
75
|
+
switch (tone) {
|
|
76
|
+
case 'late':
|
|
77
|
+
return {
|
|
78
|
+
backgroundColor: theme.palette.warning.main,
|
|
79
|
+
color: inkOnFill(theme, theme.palette.warning.main, theme.palette.warning.contrastText),
|
|
80
|
+
border: `${hairline} ${theme.palette.warning.main}`,
|
|
81
|
+
};
|
|
82
|
+
case 'away':
|
|
83
|
+
case 'uncovered':
|
|
84
|
+
return {
|
|
85
|
+
backgroundColor: 'transparent',
|
|
86
|
+
color: signalInk(theme, 'warning', cellGround(theme)),
|
|
87
|
+
border: `1px dashed ${theme.palette.warning.main}`,
|
|
88
|
+
};
|
|
89
|
+
case 'onduty':
|
|
90
|
+
return {
|
|
91
|
+
backgroundColor: softSignal(theme, 'success'),
|
|
92
|
+
color: theme.palette.text.primary,
|
|
93
|
+
border: `${hairline} ${theme.palette.success.main}`,
|
|
94
|
+
};
|
|
95
|
+
case 'plan':
|
|
96
|
+
default:
|
|
97
|
+
return dashedPlan
|
|
98
|
+
? {
|
|
99
|
+
backgroundColor: theme.palette.action.hover,
|
|
100
|
+
color: theme.palette.text.primary,
|
|
101
|
+
border: `1px dashed ${theme.palette.text.secondary}`,
|
|
102
|
+
}
|
|
103
|
+
: {
|
|
104
|
+
backgroundColor: surfaces(theme).raised,
|
|
105
|
+
color: theme.palette.text.primary,
|
|
106
|
+
border: `${hairline} ${fieldEdge(theme, surfaces(theme).raised)}`,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* A break inside a block (a meal break): the page's own ground with diagonal
|
|
113
|
+
* stripes of the disabled action colour, opaque, so the block reads as CUT there in any
|
|
114
|
+
* tone, light or dark. `stripe` / `period` are CSS lengths (a stripe and the
|
|
115
|
+
* stripe plus its gap).
|
|
116
|
+
*/
|
|
117
|
+
export function breakHatch(theme: Theme, stripe: string, period: string): string {
|
|
118
|
+
const ink = theme.palette.action.disabled;
|
|
119
|
+
const ground = theme.palette.background.default;
|
|
120
|
+
return `repeating-linear-gradient(135deg, ${ink} 0, ${ink} ${stripe}, ${ground} ${stripe}, ${ground} ${period}), ${ground}`;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/** The thin bar under a ruler row that says the shift is really running. */
|
|
124
|
+
export function actualBarColor(theme: Theme): string {
|
|
125
|
+
return theme.palette.success.main;
|
|
126
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The live region's sentence, for the week grid and the day ruler (FUT-3825).
|
|
5
|
+
*
|
|
6
|
+
* The region stays mounted: a screen reader watches the node it found, and a
|
|
7
|
+
* region swapped for a new one per sentence is announced unreliably or not at
|
|
8
|
+
* all. Each sentence clears the region first and is written on the next frame,
|
|
9
|
+
* so the same sentence twice ("refused", "refused") is a change both times.
|
|
10
|
+
*/
|
|
11
|
+
export function useAnnouncer(): { text: string; say: (text: string) => void } {
|
|
12
|
+
const [text, setText] = useState('');
|
|
13
|
+
const frame = useRef<number | null>(null);
|
|
14
|
+
|
|
15
|
+
useEffect(
|
|
16
|
+
() => () => {
|
|
17
|
+
if (frame.current !== null) cancelAnimationFrame(frame.current);
|
|
18
|
+
},
|
|
19
|
+
[],
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
const say = useCallback((next: string): void => {
|
|
23
|
+
if (frame.current !== null) cancelAnimationFrame(frame.current);
|
|
24
|
+
setText('');
|
|
25
|
+
frame.current = requestAnimationFrame(() => {
|
|
26
|
+
frame.current = null;
|
|
27
|
+
setText(next);
|
|
28
|
+
});
|
|
29
|
+
}, []);
|
|
30
|
+
|
|
31
|
+
return { text, say };
|
|
32
|
+
}
|