@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
|
@@ -13,7 +13,14 @@ import type { SequenceItem, SequenceSummary } from './SequenceResolver.types';
|
|
|
13
13
|
|
|
14
14
|
/** How a visited step was left. */
|
|
15
15
|
export type Visit<I extends SequenceItem, R> =
|
|
16
|
-
| {
|
|
16
|
+
| {
|
|
17
|
+
item: I;
|
|
18
|
+
outcome: 'resolved';
|
|
19
|
+
result: R;
|
|
20
|
+
alsoResolved?: number;
|
|
21
|
+
/** The step said `canGoBack: false` when it was answered: the answer has no inverse, so Back stops here. */
|
|
22
|
+
final?: true;
|
|
23
|
+
}
|
|
17
24
|
| { item: I; outcome: 'skipped' };
|
|
18
25
|
|
|
19
26
|
export interface RunState<I extends SequenceItem, R> {
|
|
@@ -47,9 +54,17 @@ function dedupe<I extends SequenceItem>(items: readonly I[], skip: ReadonlySet<s
|
|
|
47
54
|
return out;
|
|
48
55
|
}
|
|
49
56
|
|
|
50
|
-
/**
|
|
51
|
-
|
|
52
|
-
|
|
57
|
+
/**
|
|
58
|
+
* A fresh run over `queue` (a repeated key counts once). With `initialKey` the
|
|
59
|
+
* run opens at that entry; the entries before it follow it, in queue order —
|
|
60
|
+
* nothing is passed over (a click on one problem's block opens the run there).
|
|
61
|
+
*/
|
|
62
|
+
export function startRun<I extends SequenceItem, R>(queue: readonly I[], initialKey?: string): RunState<I, R> {
|
|
63
|
+
const ahead = dedupe(queue, new Set());
|
|
64
|
+
const at = initialKey === undefined ? -1 : ahead.findIndex((item) => item.key === initialKey);
|
|
65
|
+
const first = ahead[at];
|
|
66
|
+
if (at <= 0 || !first) return { visits: [], ahead, held: [] };
|
|
67
|
+
return { visits: [], ahead: [first, ...ahead.slice(0, at), ...ahead.slice(at + 1)], held: [] };
|
|
53
68
|
}
|
|
54
69
|
|
|
55
70
|
/**
|
|
@@ -106,9 +121,12 @@ export function resolveRun<I extends SequenceItem, R>(
|
|
|
106
121
|
result: R,
|
|
107
122
|
item: I | undefined = state.ahead[0],
|
|
108
123
|
alsoResolved = 0,
|
|
124
|
+
final = false,
|
|
109
125
|
): RunState<I, R> {
|
|
110
126
|
if (!item || !state.ahead.some((entry) => entry.key === item.key)) return state;
|
|
111
|
-
const visit: Visit<I, R> =
|
|
127
|
+
const visit: Visit<I, R> = { item, outcome: 'resolved', result };
|
|
128
|
+
if (alsoResolved > 0) visit.alsoResolved = alsoResolved;
|
|
129
|
+
if (final) visit.final = true;
|
|
112
130
|
return {
|
|
113
131
|
visits: [...state.visits, visit],
|
|
114
132
|
ahead: state.ahead.filter((entry) => entry.key !== item.key),
|
|
@@ -154,6 +172,49 @@ export function backRun<I extends SequenceItem, R>(state: RunState<I, R>, key?:
|
|
|
154
172
|
};
|
|
155
173
|
}
|
|
156
174
|
|
|
175
|
+
/** True when Back may return from the step on screen: a previous step exists and its answer has an inverse. */
|
|
176
|
+
export function canReturn<I extends SequenceItem, R>(state: RunState<I, R>): boolean {
|
|
177
|
+
const last = previousOf(state);
|
|
178
|
+
return last !== undefined && !(last.outcome === 'resolved' && last.final);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* The step a jump to `keys` (one category of the overview) lands on: the
|
|
183
|
+
* first of them still AHEAD, in run order; else the first one passed over
|
|
184
|
+
* (skipped, or left by an earlier jump). An answered key is never a target.
|
|
185
|
+
*/
|
|
186
|
+
export function jumpTargetOf<I extends SequenceItem, R>(state: RunState<I, R>, keys: readonly string[]): string | undefined {
|
|
187
|
+
const wanted = new Set(keys);
|
|
188
|
+
const ahead = state.ahead.find((item) => wanted.has(item.key));
|
|
189
|
+
if (ahead) return ahead.key;
|
|
190
|
+
return state.visits.find((visit) => visit.outcome === 'skipped' && wanted.has(visit.item.key))?.item.key;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Jump to `key` ("Ver todos" → a category's Resolver, or `api.jumpTo`).
|
|
195
|
+
*
|
|
196
|
+
* The step on screen is recorded as PASSED OVER — Back from the target returns
|
|
197
|
+
* to it at once, with nothing to undo — and the target goes first; the rest
|
|
198
|
+
* stays in run order. A target that was passed over before is taken back out
|
|
199
|
+
* of the history. The step already on screen, an answered key or an unknown
|
|
200
|
+
* one leaves the run as it is.
|
|
201
|
+
*/
|
|
202
|
+
export function jumpRun<I extends SequenceItem, R>(state: RunState<I, R>, key: string): RunState<I, R> {
|
|
203
|
+
const [current] = state.ahead;
|
|
204
|
+
if (current?.key === key) return state;
|
|
205
|
+
const passed = state.visits.findIndex((visit) => visit.outcome === 'skipped' && visit.item.key === key);
|
|
206
|
+
const target = state.ahead.find((item) => item.key === key) ?? state.visits[passed]?.item;
|
|
207
|
+
if (!target) return state;
|
|
208
|
+
const visits = passed >= 0 ? state.visits.filter((_, index) => index !== passed) : [...state.visits];
|
|
209
|
+
const rest = state.ahead.filter((item) => item.key !== key && item.key !== current?.key);
|
|
210
|
+
const pins = current ? leaving(state, current.key) : { pinned: state.pinned, held: state.held };
|
|
211
|
+
return {
|
|
212
|
+
visits: current ? [...visits, { item: current, outcome: 'skipped' }] : visits,
|
|
213
|
+
ahead: [target, ...rest],
|
|
214
|
+
...pins,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
|
|
157
218
|
/** Where the run stands. */
|
|
158
219
|
export function summaryOf<I extends SequenceItem, R>(state: RunState<I, R>): SequenceSummary {
|
|
159
220
|
const resolved = state.visits.filter((visit) => visit.outcome === 'resolved').length;
|
|
@@ -2,7 +2,9 @@ import { useCallback, useRef, useState } from 'react';
|
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
backRun,
|
|
5
|
+
canReturn,
|
|
5
6
|
currentOf,
|
|
7
|
+
jumpRun,
|
|
6
8
|
pinRun,
|
|
7
9
|
previousOf,
|
|
8
10
|
resolveRun,
|
|
@@ -19,9 +21,16 @@ interface RunInputs<I extends SequenceItem, R> {
|
|
|
19
21
|
/** True while the run is on screen: open, and past the intro. */
|
|
20
22
|
active: boolean;
|
|
21
23
|
queue: readonly I[];
|
|
24
|
+
/** The key a fresh run opens at (its step goes first; nothing is passed over). */
|
|
25
|
+
initialKey?: string;
|
|
22
26
|
onBack?: (item: I, result: R) => Promise<void> | void;
|
|
23
27
|
/** The message for a rejection that carries none. */
|
|
24
28
|
failed: string;
|
|
29
|
+
/**
|
|
30
|
+
* Read when an answer is recorded: false when the step on screen said
|
|
31
|
+
* `canGoBack: false` (its answer has no inverse, so Back stops at it).
|
|
32
|
+
*/
|
|
33
|
+
stepAllowsBack: () => boolean;
|
|
25
34
|
}
|
|
26
35
|
|
|
27
36
|
export interface SequenceRun<I extends SequenceItem, R> {
|
|
@@ -31,6 +40,8 @@ export interface SequenceRun<I extends SequenceItem, R> {
|
|
|
31
40
|
resolve: (result: R | PromiseLike<R>, options?: SequenceResolveOptions) => void;
|
|
32
41
|
skip: () => void;
|
|
33
42
|
back: () => void;
|
|
43
|
+
/** Jump to `key`: the step on screen is passed over and the target shows (see `jumpRun`). */
|
|
44
|
+
jumpTo: (key: string) => void;
|
|
34
45
|
}
|
|
35
46
|
|
|
36
47
|
interface Tracked<I extends SequenceItem, R> {
|
|
@@ -138,15 +149,15 @@ function useAsyncGate(failed: string): AsyncGate {
|
|
|
138
149
|
* no frame ever shows a step the queue has already dropped.
|
|
139
150
|
*/
|
|
140
151
|
function useTrackedRun<I extends SequenceItem, R>(
|
|
141
|
-
inputs: { open: boolean; active: boolean; queue: readonly I[] },
|
|
152
|
+
inputs: { open: boolean; active: boolean; queue: readonly I[]; initialKey?: string },
|
|
142
153
|
onRestart: () => void,
|
|
143
154
|
): { run: RunState<I, R>; update: (step: (run: RunState<I, R>) => RunState<I, R>) => void } {
|
|
144
|
-
const { open, active, queue } = inputs;
|
|
145
|
-
const [tracked, setTracked] = useState<Tracked<I, R>>(() => ({ run: startRun(queue), queue, active, open }));
|
|
155
|
+
const { open, active, queue, initialKey } = inputs;
|
|
156
|
+
const [tracked, setTracked] = useState<Tracked<I, R>>(() => ({ run: startRun(queue, initialKey), queue, active, open }));
|
|
146
157
|
let current = tracked;
|
|
147
158
|
if (active !== tracked.active || open !== tracked.open || queue !== tracked.queue) {
|
|
148
159
|
const restart = (active && !tracked.active) || (open && !tracked.open);
|
|
149
|
-
current = { run: restart ? startRun(queue) : syncRun(tracked.run, queue), queue, active, open };
|
|
160
|
+
current = { run: restart ? startRun(queue, initialKey) : syncRun(tracked.run, queue), queue, active, open };
|
|
150
161
|
if (restart) onRestart();
|
|
151
162
|
setTracked(current);
|
|
152
163
|
}
|
|
@@ -158,24 +169,25 @@ function useTrackedRun<I extends SequenceItem, R>(
|
|
|
158
169
|
|
|
159
170
|
/** The run's state and its verbs — the index/back/skip/done logic, once (FUT-3671). */
|
|
160
171
|
export function useSequenceRun<I extends SequenceItem, R>(inputs: RunInputs<I, R>): SequenceRun<I, R> {
|
|
161
|
-
const { open, active, queue, onBack, failed } = inputs;
|
|
172
|
+
const { open, active, queue, initialKey, onBack, failed, stepAllowsBack } = inputs;
|
|
162
173
|
const gate = useAsyncGate(failed);
|
|
163
|
-
const { run, update } = useTrackedRun<I, R>({ open, active, queue }, gate.reset);
|
|
174
|
+
const { run, update } = useTrackedRun<I, R>({ open, active, queue, initialKey }, gate.reset);
|
|
164
175
|
const { settle, isPending, clearError } = gate;
|
|
165
176
|
|
|
166
177
|
const onScreen = currentOf(run);
|
|
167
178
|
const resolve = (result: R | PromiseLike<R>, options?: SequenceResolveOptions): void => {
|
|
168
179
|
const also = options?.alsoResolved ?? 0;
|
|
169
180
|
if (isPending() || !onScreen) return;
|
|
181
|
+
const final = !stepAllowsBack();
|
|
170
182
|
if (isThenable(result)) {
|
|
171
183
|
// The host's refetch may drop the entry before its write returns: keep
|
|
172
184
|
// it on screen meanwhile, and answer THIS entry when it does.
|
|
173
185
|
update((prev) => pinRun(prev, onScreen.key));
|
|
174
|
-
settle(result, 'resolve', onScreen.key, (value) => update((prev) => resolveRun(prev, value, onScreen, also)));
|
|
186
|
+
settle(result, 'resolve', onScreen.key, (value) => update((prev) => resolveRun(prev, value, onScreen, also, final)));
|
|
175
187
|
return;
|
|
176
188
|
}
|
|
177
189
|
clearError();
|
|
178
|
-
update((prev) => resolveRun(prev, result, onScreen, also));
|
|
190
|
+
update((prev) => resolveRun(prev, result, onScreen, also, final));
|
|
179
191
|
};
|
|
180
192
|
|
|
181
193
|
const skip = (): void => {
|
|
@@ -186,7 +198,7 @@ export function useSequenceRun<I extends SequenceItem, R>(inputs: RunInputs<I, R
|
|
|
186
198
|
|
|
187
199
|
const back = (): void => {
|
|
188
200
|
const last = previousOf(run);
|
|
189
|
-
if (isPending() || !last) return;
|
|
201
|
+
if (isPending() || !last || !canReturn(run)) return;
|
|
190
202
|
if (last.outcome === 'resolved' && onBack) {
|
|
191
203
|
// `new Promise` so a handler that throws synchronously lands in the same
|
|
192
204
|
// rejection path as one that rejects.
|
|
@@ -198,8 +210,14 @@ export function useSequenceRun<I extends SequenceItem, R>(inputs: RunInputs<I, R
|
|
|
198
210
|
update((prev) => backRun(prev, last.item.key));
|
|
199
211
|
};
|
|
200
212
|
|
|
213
|
+
const jumpTo = (key: string): void => {
|
|
214
|
+
if (isPending()) return;
|
|
215
|
+
clearError();
|
|
216
|
+
update((prev) => jumpRun(prev, key));
|
|
217
|
+
};
|
|
218
|
+
|
|
201
219
|
// An error belongs to the screen it was raised on: once a queue change (or
|
|
202
220
|
// anything else) moves the run to another step, it no longer shows.
|
|
203
221
|
const error = gate.error && gate.error.screen === screenOf(onScreen) ? gate.error.message : null;
|
|
204
|
-
return { run, busy: gate.busy !== null, error, resolve, skip, back };
|
|
222
|
+
return { run, busy: gate.busy !== null, error, resolve, skip, back, jumpTo };
|
|
205
223
|
}
|
package/src/copy/labels.ts
CHANGED
|
@@ -214,6 +214,40 @@ export interface DateRangePickerLabels {
|
|
|
214
214
|
calendar: string;
|
|
215
215
|
}
|
|
216
216
|
|
|
217
|
+
/** `ScheduleGrid`'s cell names and the sentences its live region reads after a keyboard copy or move. */
|
|
218
|
+
export interface ScheduleGridLabels {
|
|
219
|
+
/** An empty cell's button: schedule this row on this day. */
|
|
220
|
+
createCell(row: string, column: string): string;
|
|
221
|
+
/** A blocked cell with no label of its own. */
|
|
222
|
+
blockedCell(row: string, column: string): string;
|
|
223
|
+
/** After Shift+←/→ copied a block to the next or previous day. */
|
|
224
|
+
copied(block: string, column: string): string;
|
|
225
|
+
/** After Alt+←/→ moved a block to the next or previous day. */
|
|
226
|
+
moved(block: string, row: string, column: string): string;
|
|
227
|
+
/** A keyboard copy or move whose day is taken, closed or outside the grid. */
|
|
228
|
+
refused: string;
|
|
229
|
+
/** Shift/Alt+←/→ on a block that is not `copyable` / `movable`: the block is fixed, not the day. */
|
|
230
|
+
notMovable: string;
|
|
231
|
+
/** The grid's busy state. */
|
|
232
|
+
loading: string;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/** `DayRuler`'s track names and the sentences its live region reads after a keyboard move or resize. */
|
|
236
|
+
export interface DayRulerLabels {
|
|
237
|
+
/** A row's empty track: Enter schedules this row. */
|
|
238
|
+
createTrack(row: string): string;
|
|
239
|
+
/** After Alt+←/→ moved a block; `range` is "20:45–00:45". */
|
|
240
|
+
moved(block: string, range: string): string;
|
|
241
|
+
/** After Shift(+Alt)+←/→ changed a block's end or start. */
|
|
242
|
+
resized(block: string, range: string): string;
|
|
243
|
+
/** A keyboard move or resize past the ruler's ends or under the shortest length. */
|
|
244
|
+
refused: string;
|
|
245
|
+
/** Shift/Alt+←/→ on a block that is not `movable` / `resizable`: the block is fixed. */
|
|
246
|
+
notMovable: string;
|
|
247
|
+
/** The ruler's busy state. */
|
|
248
|
+
loading: string;
|
|
249
|
+
}
|
|
250
|
+
|
|
217
251
|
/**
|
|
218
252
|
* `Calendar`'s month/year caption (`captionLayout="selectors"`): the two
|
|
219
253
|
* selector buttons, the month arrows and the two pick grids. The month and
|
|
@@ -264,5 +298,7 @@ export interface UiLabels {
|
|
|
264
298
|
infiniteScroll: InfiniteScrollLabels;
|
|
265
299
|
socialLogin: SocialLoginLabels;
|
|
266
300
|
dateRangePicker: DateRangePickerLabels;
|
|
301
|
+
scheduleGrid: ScheduleGridLabels;
|
|
302
|
+
dayRuler: DayRulerLabels;
|
|
267
303
|
calendar: CalendarLabels;
|
|
268
304
|
}
|
package/src/en-US.labels.ts
CHANGED
|
@@ -144,6 +144,23 @@ export const EN_US_UI_LABELS: UiLabels = {
|
|
|
144
144
|
dateRangePicker: {
|
|
145
145
|
calendar: "Calendar",
|
|
146
146
|
},
|
|
147
|
+
scheduleGrid: {
|
|
148
|
+
createCell: (row, column) => `Schedule ${row}, ${column}`,
|
|
149
|
+
blockedCell: (row, column) => `${row}, ${column}: closed`,
|
|
150
|
+
copied: (block, column) => `${block} copied to ${column}`,
|
|
151
|
+
moved: (block, row, column) => `${block} moved to ${row}, ${column}`,
|
|
152
|
+
refused: "Not there: that day is taken or closed",
|
|
153
|
+
notMovable: "This shift cannot be changed here",
|
|
154
|
+
loading: "Loading the schedule",
|
|
155
|
+
},
|
|
156
|
+
dayRuler: {
|
|
157
|
+
createTrack: (row) => `Schedule ${row}`,
|
|
158
|
+
moved: (block, range) => `${block} now ${range}`,
|
|
159
|
+
resized: (block, range) => `${block} now ${range}`,
|
|
160
|
+
refused: "It cannot go further",
|
|
161
|
+
notMovable: "This shift cannot be changed here",
|
|
162
|
+
loading: "Loading the day",
|
|
163
|
+
},
|
|
147
164
|
calendar: {
|
|
148
165
|
chooseMonth: (month) => `${month}, choose month`,
|
|
149
166
|
chooseYear: (year) => `${year}, choose year`,
|
package/src/pt-BR.labels.ts
CHANGED
|
@@ -143,6 +143,23 @@ export const PT_BR_UI_LABELS: UiLabels = {
|
|
|
143
143
|
dateRangePicker: {
|
|
144
144
|
calendar: "Calendário",
|
|
145
145
|
},
|
|
146
|
+
scheduleGrid: {
|
|
147
|
+
createCell: (row, column) => `Agendar ${row}, ${column}`,
|
|
148
|
+
blockedCell: (row, column) => `${row}, ${column}: fechado`,
|
|
149
|
+
copied: (block, column) => `${block} copiado para ${column}`,
|
|
150
|
+
moved: (block, row, column) => `${block} movido para ${row}, ${column}`,
|
|
151
|
+
refused: "Não dá para pôr aí: o dia está ocupado ou fechado",
|
|
152
|
+
notMovable: "Este turno não muda por aqui",
|
|
153
|
+
loading: "Carregando a escala",
|
|
154
|
+
},
|
|
155
|
+
dayRuler: {
|
|
156
|
+
createTrack: (row) => `Agendar ${row}`,
|
|
157
|
+
moved: (block, range) => `${block} agora ${range}`,
|
|
158
|
+
resized: (block, range) => `${block} agora ${range}`,
|
|
159
|
+
refused: "Não dá para ir além",
|
|
160
|
+
notMovable: "Este turno não muda por aqui",
|
|
161
|
+
loading: "Carregando o dia",
|
|
162
|
+
},
|
|
146
163
|
calendar: {
|
|
147
164
|
chooseMonth: (month) => `${month}, escolher mês`,
|
|
148
165
|
chooseYear: (year) => `${year}, escolher ano`,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/feedback/SequenceResolver/useSequenceRun.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\nimport {\n backRun,\n currentOf,\n pinRun,\n previousOf,\n resolveRun,\n skipRun,\n startRun,\n syncRun,\n type RunState,\n} from './sequence-model';\nimport type { SequenceItem, SequenceResolveOptions } from './SequenceResolver.types';\n\ninterface RunInputs<I extends SequenceItem, R> {\n /** The resolver is open. Opening it, intro or not, starts a fresh run. */\n open: boolean;\n /** True while the run is on screen: open, and past the intro. */\n active: boolean;\n queue: readonly I[];\n onBack?: (item: I, result: R) => Promise<void> | void;\n /** The message for a rejection that carries none. */\n failed: string;\n}\n\nexport interface SequenceRun<I extends SequenceItem, R> {\n run: RunState<I, R>;\n busy: boolean;\n error: string | null;\n resolve: (result: R | PromiseLike<R>, options?: SequenceResolveOptions) => void;\n skip: () => void;\n back: () => void;\n}\n\ninterface Tracked<I extends SequenceItem, R> {\n run: RunState<I, R>;\n /** The queue `run` was last reconciled with, by reference. */\n queue: readonly I[];\n active: boolean;\n open: boolean;\n}\n\n/** The screen key an error belongs to: the step's key, or the end screen's. */\nconst END_SCREEN = '\\u0000end';\nconst screenOf = (item: SequenceItem | undefined): string => item?.key ?? END_SCREEN;\n\n/** A rejection's message, and the screen it was raised on. */\ninterface GateError {\n message: string;\n screen: string;\n}\n\nfunction isThenable<R>(value: R | PromiseLike<R>): value is PromiseLike<R> {\n return typeof (value as { then?: unknown } | null)?.then === 'function';\n}\n\nfunction messageOf(reason: unknown, fallback: string): string {\n if (reason instanceof Error && reason.message) return reason.message;\n if (typeof reason === 'string' && reason) return reason;\n return fallback;\n}\n\n/** What the pending work is: an answer being written, or Back's inverse. */\ntype Work = 'resolve' | 'back';\n\ninterface AsyncGate {\n /** The pending work, or `null` when idle. */\n busy: Work | null;\n error: GateError | null;\n /** True from the moment work starts — read before React re-renders with `busy`. */\n isPending: () => boolean;\n clearError: () => void;\n /** Run `work`; on success apply `onDone`, on failure keep the screen and show why. */\n settle: <T>(work: PromiseLike<T>, kind: Work, screen: string, onDone: (value: T) => void) => void;\n /** Forget pending work (a restart): whatever settles later touches nothing. */\n reset: () => void;\n}\n\n/**\n * `busy` while a promise settles, the rejection's message as `error`, and\n * nothing double-fired. Refs, not state, for the guard: a second tap in the\n * same frame reads them before React has re-rendered with `busy`, and a\n * promise settling after a restart must not touch the new run.\n */\nfunction useAsyncGate(failed: string): AsyncGate {\n const [busy, setBusy] = useState<Work | null>(null);\n const [error, setError] = useState<GateError | null>(null);\n const pending = useRef(false);\n const generation = useRef(0);\n\n const settle = useCallback(\n <T,>(work: PromiseLike<T>, kind: Work, screen: string, onDone: (value: T) => void) => {\n const mine = generation.current;\n pending.current = true;\n setBusy(kind);\n setError(null);\n const finish = (): boolean => {\n if (mine !== generation.current) return false;\n pending.current = false;\n setBusy(null);\n return true;\n };\n work.then(\n (value) => {\n if (finish()) onDone(value);\n },\n (reason: unknown) => {\n if (finish()) setError({ message: messageOf(reason, failed), screen });\n },\n );\n },\n [failed],\n );\n\n const reset = (): void => {\n generation.current += 1;\n pending.current = false;\n if (busy) setBusy(null);\n if (error) setError(null);\n };\n\n return {\n busy,\n error,\n isPending: () => pending.current,\n clearError: () => setError(null),\n settle,\n reset,\n };\n}\n\n/**\n * The run, restarted from the queue each time the resolver OPENS (intro or\n * not — a closed-and-reopened resolver never reports the previous run) and\n * each time it becomes ACTIVE (the intro is dropped). While active, each new queue\n * is reconciled into it during render (`syncRun`) rather than in an effect, so\n * no frame ever shows a step the queue has already dropped.\n */\nfunction useTrackedRun<I extends SequenceItem, R>(\n inputs: { open: boolean; active: boolean; queue: readonly I[] },\n onRestart: () => void,\n): { run: RunState<I, R>; update: (step: (run: RunState<I, R>) => RunState<I, R>) => void } {\n const { open, active, queue } = inputs;\n const [tracked, setTracked] = useState<Tracked<I, R>>(() => ({ run: startRun(queue), queue, active, open }));\n let current = tracked;\n if (active !== tracked.active || open !== tracked.open || queue !== tracked.queue) {\n const restart = (active && !tracked.active) || (open && !tracked.open);\n current = { run: restart ? startRun(queue) : syncRun(tracked.run, queue), queue, active, open };\n if (restart) onRestart();\n setTracked(current);\n }\n const update = useCallback((step: (run: RunState<I, R>) => RunState<I, R>) => {\n setTracked((prev) => ({ ...prev, run: step(prev.run) }));\n }, []);\n return { run: current.run, update };\n}\n\n/** The run's state and its verbs — the index/back/skip/done logic, once (FUT-3671). */\nexport function useSequenceRun<I extends SequenceItem, R>(inputs: RunInputs<I, R>): SequenceRun<I, R> {\n const { open, active, queue, onBack, failed } = inputs;\n const gate = useAsyncGate(failed);\n const { run, update } = useTrackedRun<I, R>({ open, active, queue }, gate.reset);\n const { settle, isPending, clearError } = gate;\n\n const onScreen = currentOf(run);\n const resolve = (result: R | PromiseLike<R>, options?: SequenceResolveOptions): void => {\n const also = options?.alsoResolved ?? 0;\n if (isPending() || !onScreen) return;\n if (isThenable(result)) {\n // The host's refetch may drop the entry before its write returns: keep\n // it on screen meanwhile, and answer THIS entry when it does.\n update((prev) => pinRun(prev, onScreen.key));\n settle(result, 'resolve', onScreen.key, (value) => update((prev) => resolveRun(prev, value, onScreen, also)));\n return;\n }\n clearError();\n update((prev) => resolveRun(prev, result, onScreen, also));\n };\n\n const skip = (): void => {\n if (isPending() || !onScreen) return;\n clearError();\n update((prev) => skipRun(prev, onScreen.key));\n };\n\n const back = (): void => {\n const last = previousOf(run);\n if (isPending() || !last) return;\n if (last.outcome === 'resolved' && onBack) {\n // `new Promise` so a handler that throws synchronously lands in the same\n // rejection path as one that rejects.\n const undo = new Promise<void>((done) => done(onBack(last.item, last.result)));\n settle(undo, 'back', screenOf(onScreen), () => update((prev) => backRun(prev, last.item.key)));\n return;\n }\n clearError();\n update((prev) => backRun(prev, last.item.key));\n };\n\n // An error belongs to the screen it was raised on: once a queue change (or\n // anything else) moves the run to another step, it no longer shows.\n const error = gate.error && gate.error.screen === screenOf(onScreen) ? gate.error.message : null;\n return { run, busy: gate.busy !== null, error, resolve, skip, back };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/feedback/SequenceResolver/sequence-model.ts"],"sourcesContent":["import type { SequenceItem, SequenceSummary } from './SequenceResolver.types';\n\n/**\n * THE RUN, as pure data: what was answered or passed over, and what is ahead.\n *\n * The queue is the host's live data, not a snapshot. An answer can resolve\n * other entries with it (one limit saved for every sibling of a product), a\n * refetch can drop the entry just answered, and a realtime push can add one —\n * so the run is NOT an index into the queue. It keeps the visited steps in the\n * order they were visited, and the steps still ahead in the order the queue\n * gave them; `syncRun` reconciles the second list with each new queue.\n */\n\n/** How a visited step was left. */\nexport type Visit<I extends SequenceItem, R> =\n | { item: I; outcome: 'resolved'; result: R; alsoResolved?: number }\n | { item: I; outcome: 'skipped' };\n\nexport interface RunState<I extends SequenceItem, R> {\n /** Every step left behind, oldest first. Back pops the last one. */\n visits: Visit<I, R>[];\n /** The steps still ahead; the first is on screen. Empty means the end screen. */\n ahead: I[];\n /**\n * The step whose answer is being written, kept ahead even while the queue\n * lacks it (the host's refetch may drop it before the write returns).\n * Cleared when the run leaves it.\n */\n pinned?: string;\n /**\n * The steps Back returned to, kept ahead while the queue lacks them (the\n * host's inverse ran, its refetch has not put the entry back yet). A SET:\n * two Backs before one refetch hold both. A key leaves it when the queue\n * confirms the entry or the run leaves the step.\n */\n held: readonly string[];\n}\n\nfunction dedupe<I extends SequenceItem>(items: readonly I[], skip: ReadonlySet<string>): I[] {\n const seen = new Set(skip);\n const out: I[] = [];\n for (const item of items) {\n if (seen.has(item.key)) continue;\n seen.add(item.key);\n out.push(item);\n }\n return out;\n}\n\n/** A fresh run over `queue` (a repeated key counts once). */\nexport function startRun<I extends SequenceItem, R>(queue: readonly I[]): RunState<I, R> {\n return { visits: [], ahead: dedupe(queue, new Set()), held: [] };\n}\n\n/**\n * The run against a new queue.\n *\n * - A step ahead that the queue no longer has is dropped — it was resolved\n * elsewhere (siblings answered together, another device) — unless it is\n * `pinned` or `held`.\n * - A held key the queue has again is released: the host confirmed it.\n * - A queue entry the run has not seen is appended, in queue order.\n * - The entries kept are refreshed from the queue (same key, newer data).\n * - Visited steps are history and never change.\n */\nexport function syncRun<I extends SequenceItem, R>(\n state: RunState<I, R>,\n queue: readonly I[],\n): RunState<I, R> {\n const fresh = new Map(queue.map((item) => [item.key, item] as const));\n const kept = state.ahead.flatMap((item) => {\n const next = fresh.get(item.key);\n if (next) return [next];\n return item.key === state.pinned || state.held.includes(item.key) ? [item] : [];\n });\n const known = new Set([...state.visits.map((visit) => visit.item.key), ...kept.map((item) => item.key)]);\n const held = state.held.filter((key) => !fresh.has(key));\n return { ...state, ahead: [...kept, ...dedupe(queue, known)], held };\n}\n\n/** Keep `key` ahead whatever the queue says, until the run moves on (see {@link RunState.pinned}). */\nexport function pinRun<I extends SequenceItem, R>(state: RunState<I, R>, key: string): RunState<I, R> {\n return { ...state, pinned: key };\n}\n\n/** The step on screen, or `undefined` at the end. */\nexport function currentOf<I extends SequenceItem, R>(state: RunState<I, R>): I | undefined {\n return state.ahead[0];\n}\n\n/** The pins once the run leaves `key`: neither the write pin nor the held set keeps it. */\nfunction leaving<I extends SequenceItem, R>(state: RunState<I, R>, key: string): Pick<RunState<I, R>, 'pinned' | 'held'> {\n return {\n pinned: state.pinned === key ? undefined : state.pinned,\n held: state.held.filter((held) => held !== key),\n };\n}\n\n/**\n * Answer `item` — the step that was on screen when the answer began (a pending\n * write keeps it there, see {@link RunState.pinned}). An item no longer ahead\n * was already answered (a double call): a no-op, as at the end.\n */\nexport function resolveRun<I extends SequenceItem, R>(\n state: RunState<I, R>,\n result: R,\n item: I | undefined = state.ahead[0],\n alsoResolved = 0,\n): RunState<I, R> {\n if (!item || !state.ahead.some((entry) => entry.key === item.key)) return state;\n const visit: Visit<I, R> = alsoResolved > 0 ? { item, outcome: 'resolved', result, alsoResolved } : { item, outcome: 'resolved', result };\n return {\n visits: [...state.visits, visit],\n ahead: state.ahead.filter((entry) => entry.key !== item.key),\n ...leaving(state, item.key),\n };\n}\n\n/**\n * Pass over the step on screen. Given the `key` that was on screen when the\n * skip began, a step that has moved on since (a double call) is left alone. At\n * the end it is a no-op.\n */\nexport function skipRun<I extends SequenceItem, R>(state: RunState<I, R>, key?: string): RunState<I, R> {\n const [item, ...rest] = state.ahead;\n if (!item || (key !== undefined && item.key !== key)) return state;\n return { visits: [...state.visits, { item, outcome: 'skipped' }], ahead: rest, ...leaving(state, item.key) };\n}\n\n/** The step Back would return to, or `undefined` on the first one. */\nexport function previousOf<I extends SequenceItem, R>(state: RunState<I, R>): Visit<I, R> | undefined {\n return state.visits[state.visits.length - 1];\n}\n\n/**\n * Return to the previous step: it is on screen again, ahead of the rest, and\n * held until the queue confirms it. Given the `key` Back began from, a step\n * already returned to (a double call) is left alone.\n */\nexport function backRun<I extends SequenceItem, R>(state: RunState<I, R>, key?: string): RunState<I, R> {\n const last = previousOf(state);\n if (!last || (key !== undefined && last.item.key !== key)) return state;\n const ahead = state.ahead.filter((item) => item.key !== last.item.key);\n // The step being left keeps no write pin: `pinned` is for a write in flight\n // on the step ON SCREEN, and a failed one must not hold an entry the\n // host's refetch has since dropped (it was applied server-side).\n const leftKey = state.ahead[0]?.key;\n return {\n ...state,\n pinned: state.pinned === leftKey ? undefined : state.pinned,\n visits: state.visits.slice(0, -1),\n ahead: [last.item, ...ahead],\n held: [...state.held.filter((held) => held !== last.item.key), last.item.key],\n };\n}\n\n/** Where the run stands. */\nexport function summaryOf<I extends SequenceItem, R>(state: RunState<I, R>): SequenceSummary {\n const resolved = state.visits.filter((visit) => visit.outcome === 'resolved').length;\n const alsoResolved = state.visits.reduce(\n (sum, visit) => sum + (visit.outcome === 'resolved' ? Math.max(0, visit.alsoResolved ?? 0) : 0),\n 0,\n );\n return {\n alsoResolved,\n resolved,\n skipped: state.visits.length - resolved,\n total: state.visits.length + state.ahead.length,\n };\n}\n\n/** 1-based position of the step on screen (`total + 1` never happens: at the end it is `total`). */\nexport function positionOf<I extends SequenceItem, R>(state: RunState<I, R>): number {\n return Math.min(state.visits.length + 1, state.visits.length + state.ahead.length);\n}\n\n/** How far along, 0..100. An empty run is complete. */\nexport function progressOf<I extends SequenceItem, R>(state: RunState<I, R>): number {\n const total = state.visits.length + state.ahead.length;\n return total === 0 ? 100 : Math.round((state.visits.length / total) * 100);\n}\n"],"mappings":"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","names":[]}
|
package/dist/chunk-ABRUOINB.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=chunk-ABRUOINB.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/feedback/SequenceResolver/SequenceResolver.metrics.ts"],"sourcesContent":["/**\n * THE RESOLVER'S NUMBERS — the approved prototype's, in px. The web reads\n * them through `rem`/`sxRem` so a density mode scales them (FUT-3671).\n */\nexport const SEQUENCE_METRICS = {\n /** Below this width the dialog is the inset bottom sheet, and targets are 44px+. */\n sheetBreakpoint: 'sm',\n /** The sheet never grows past this share of the viewport; the paper scrolls inside it. */\n sheetMaxHeightPercent: 95,\n /** The smallest a control may be below the sheet breakpoint, and the end screen's button everywhere. */\n touchTarget: 44,\n /** The intro's \"all in sequence\" button, at least. */\n startAllHeight: 48,\n /** Header icon button: 40px on a pointer, 44px on a phone. */\n closeSize: { pointer: 40, touch: 44 },\n /** The drag handle — decoration only, the sheet does not drag. */\n handle: { width: 40, height: 4 },\n title: 22,\n stepLabel: 13,\n categoryDescription: 13,\n categoryMinHeight: 56,\n countBadge: 32,\n listRadius: 12,\n doneIcon: 44,\n doneTitle: 20,\n} as const;\n"],"mappings":";AAIO,IAAM,mBAAmB;AAAA;AAAA,EAE9B,iBAAiB;AAAA;AAAA,EAEjB,uBAAuB;AAAA;AAAA,EAEvB,aAAa;AAAA;AAAA,EAEb,gBAAgB;AAAA;AAAA,EAEhB,WAAW,EAAE,SAAS,IAAI,OAAO,GAAG;AAAA;AAAA,EAEpC,QAAQ,EAAE,OAAO,IAAI,QAAQ,EAAE;AAAA,EAC/B,OAAO;AAAA,EACP,WAAW;AAAA,EACX,qBAAqB;AAAA,EACrB,mBAAmB;AAAA,EACnB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,WAAW;AACb;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/feedback/SequenceResolver/SequenceResolver.parts.tsx"],"sourcesContent":["import ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Box from '@mui/material/Box/index.js';\nimport ButtonBase from '@mui/material/ButtonBase/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport React, { useEffect, useRef } from 'react';\n\nimport { Alert } from '../../data-display/Alert';\nimport { Progress } from '../../data-display/Progress';\nimport { Button } from '../../form/Button';\nimport {\n actionSx,\n backButtonSx,\n categoryDescriptionSx,\n categoryRowSx,\n categoryTextSx,\n closeButtonSx,\n countBadgeSx,\n doneConfirmSx,\n doneIconSx,\n doneSx,\n doneTitleSx,\n footerSx,\n handleSx,\n headerStartSx,\n headerSx,\n introListSx,\n stepLabelSx,\n startAllSx,\n tertiarySx,\n titleSx,\n} from './SequenceResolver.styles';\nimport type { SequenceAction, SequenceDone, SequenceIntro, SequenceStep } from './SequenceResolver.types';\n\ninterface HeaderProps {\n touch: boolean;\n label: string;\n /** Absent: no back button (intro, first step, or the host turned it off). */\n back?: { label: string; accessible?: string; onClick: () => void; disabled: boolean };\n closeLabel: string;\n onClose: () => void;\n progress: number;\n progressLabel: string;\n testId: string;\n}\n\n/** The drag handle (phone), the header row and the progress bar. */\nexport function SequenceHeader(props: HeaderProps): React.JSX.Element {\n const { touch, label, back, closeLabel, onClose, progress, progressLabel, testId } = props;\n return (\n <>\n {touch ? <Box aria-hidden sx={handleSx} data-testid={`${testId}-handle`} /> : null}\n <Box sx={headerSx}>\n <Box sx={headerStartSx}>\n {back ? (\n <Button\n variant=\"text\"\n color=\"primary\"\n size=\"md\"\n icon={<ChevronLeftIcon />}\n aria-label={back.accessible}\n onClick={back.onClick}\n disabled={back.disabled}\n sx={backButtonSx(touch)}\n dataTestId={`${testId}-back`}\n >\n {back.label}\n </Button>\n ) : null}\n <Typography component=\"span\" sx={stepLabelSx} data-testid={`${testId}-step-label`}>\n {label}\n </Typography>\n </Box>\n <IconButton aria-label={closeLabel} onClick={onClose} sx={closeButtonSx(touch)} data-testid={`${testId}-close`}>\n <CloseIcon />\n </IconButton>\n </Box>\n <Progress\n variant=\"linear\"\n size=\"md\"\n color=\"warning\"\n value={progress}\n aria-label={progressLabel}\n dataTestId={`${testId}-progress`}\n />\n </>\n );\n}\n\n/**\n * Moves focus to `target` (else `fallback`) whenever `screenKey` changes — and\n * on mount, which happens inside the dialog's portal, before MUI's focus trap\n * looks: finding focus already inside, the trap and `focusDialogOnEntered`\n * both leave it there.\n */\nexport function useFocusOnScreen(\n screenKey: string,\n target: React.RefObject<HTMLElement | null>,\n fallback: React.RefObject<HTMLElement | null>,\n): void {\n useEffect(() => {\n (target.current ?? fallback.current)?.focus();\n }, [screenKey, target, fallback]);\n}\n\n/**\n * A button that disables itself under the pointer drops focus to the page\n * behind the dialog. While busy, focus that fell out lands on the step body\n * (`aria-busy`) instead, so a screen reader stays in the dialog.\n */\nfunction useKeepFocusWhileBusy(busy: boolean, body: React.RefObject<HTMLElement | null>): void {\n useEffect(() => {\n if (!busy) return undefined;\n const rescue = (): void => {\n const node = body.current;\n const active = node?.ownerDocument.activeElement;\n if (node && (!active || active === node.ownerDocument.body)) node.focus();\n };\n rescue();\n const frame = requestAnimationFrame(rescue);\n return () => cancelAnimationFrame(frame);\n }, [busy, body]);\n}\n\ninterface IntroProps {\n intro: SequenceIntro;\n titleId: string;\n testId: string;\n screenKey: string;\n}\n\n/** The kinds with their counts, and \"resolve them all\". */\nexport function SequenceIntroBody({ intro, titleId, testId, screenKey }: IntroProps): React.JSX.Element {\n const titleRef = useRef<HTMLHeadingElement | null>(null);\n useFocusOnScreen(screenKey, titleRef, titleRef);\n const last = intro.categories.length - 1;\n return (\n <>\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 0.5 }}>\n <Typography component=\"h2\" id={titleId} tabIndex={-1} ref={titleRef} sx={titleSx}>\n {intro.title}\n </Typography>\n {intro.description ? (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {intro.description}\n </Typography>\n ) : null}\n </Box>\n <Box component=\"ul\" sx={introListSx}>\n {intro.categories.map((category, index) => (\n <li key={`${index}-${category.label}`}>\n <ButtonBase\n onClick={category.onPick}\n sx={categoryRowSx(index === last)}\n data-testid={`${testId}-category-${index}`}\n >\n <Box component=\"span\" sx={countBadgeSx}>\n {category.count}\n </Box>\n <Box component=\"span\" sx={categoryTextSx}>\n <Typography component=\"span\" variant=\"body2\" fontWeight={500}>\n {category.label}\n </Typography>\n {category.description ? (\n <Typography component=\"span\" sx={categoryDescriptionSx}>\n {category.description}\n </Typography>\n ) : null}\n </Box>\n <ChevronRightIcon aria-hidden sx={{ color: 'text.secondary' }} />\n </ButtonBase>\n </li>\n ))}\n </Box>\n <Button\n variant=\"solid\"\n color=\"primary\"\n size=\"lg\"\n fullWidth\n onClick={intro.onStartAll}\n dataTestId={`${testId}-start-all`}\n sx={startAllSx}\n >\n {intro.startAllLabel}\n </Button>\n </>\n );\n}\n\ninterface StepProps {\n step: SequenceStep;\n /** The default secondary: skip. */\n skip: SequenceAction;\n busy: boolean;\n error: string | null;\n touch: boolean;\n testId: string;\n screenKey: string;\n titleRef: React.RefObject<HTMLElement | null>;\n}\n\nfunction ActionButton({\n action,\n busy,\n touch,\n variant,\n testId,\n}: {\n action: SequenceAction;\n busy: boolean;\n touch: boolean;\n variant: 'solid' | 'outline' | 'text';\n testId: string;\n}): React.JSX.Element {\n return (\n <Button\n variant={variant}\n color={variant === 'outline' ? 'neutral' : 'primary'}\n size=\"md\"\n onClick={action.onClick}\n disabled={busy || action.disabled}\n dataTestId={testId}\n sx={variant === 'text' ? tertiarySx(touch) : actionSx(touch)}\n >\n {action.label}\n </Button>\n );\n}\n\n/** The host's body, its error, the tertiary text button and the footer. */\nexport function SequenceStepBody(props: StepProps): React.JSX.Element {\n const { step, skip, busy, error, touch, testId, screenKey, titleRef } = props;\n const bodyRef = useRef<HTMLDivElement | null>(null);\n useFocusOnScreen(screenKey, titleRef, bodyRef);\n useKeepFocusWhileBusy(busy, bodyRef);\n const secondary = step.secondary === false ? undefined : (step.secondary ?? skip);\n const hasFooter = Boolean(secondary || step.primary);\n return (\n <>\n <Box ref={bodyRef} tabIndex={-1} aria-busy={busy} sx={{ outline: 'none', minWidth: 0 }}>\n {step.content}\n </Box>\n {error ? (\n <Alert variant=\"danger\" announce=\"assertive\" description={error} dataTestId={`${testId}-error`} />\n ) : null}\n {step.tertiary ? (\n <ActionButton action={step.tertiary} busy={busy} touch={touch} variant=\"text\" testId={`${testId}-tertiary`} />\n ) : null}\n {hasFooter ? (\n <Box sx={footerSx(touch, step.footer ?? 'end')} data-testid={`${testId}-footer`}>\n {secondary ? (\n <ActionButton action={secondary} busy={busy} touch={touch} variant=\"outline\" testId={`${testId}-secondary`} />\n ) : null}\n {step.primary ? (\n <ActionButton action={step.primary} busy={busy} touch={touch} variant=\"solid\" testId={`${testId}-primary`} />\n ) : null}\n </Box>\n ) : null}\n </>\n );\n}\n\ninterface DoneProps {\n done: SequenceDone;\n titleId: string;\n error: string | null;\n touch: boolean;\n onConfirm: () => void;\n testId: string;\n screenKey: string;\n}\n\n/** The end screen: a check, the host's title and sentence, one button that closes. */\nexport function SequenceDoneBody({ done, titleId, error, touch, onConfirm, testId, screenKey }: DoneProps): React.JSX.Element {\n const titleRef = useRef<HTMLHeadingElement | null>(null);\n useFocusOnScreen(screenKey, titleRef, titleRef);\n return (\n <Box sx={doneSx} data-testid={`${testId}-done`}>\n <CheckCircleOutlineIcon aria-hidden sx={doneIconSx} />\n <Typography component=\"h2\" id={titleId} tabIndex={-1} ref={titleRef} sx={doneTitleSx}>\n {done.title}\n </Typography>\n {done.description ? (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {done.description}\n </Typography>\n ) : null}\n {error ? (\n <Alert variant=\"danger\" announce=\"assertive\" description={error} dataTestId={`${testId}-error`} />\n ) : null}\n <Button\n variant=\"solid\"\n color=\"primary\"\n size=\"md\"\n fullWidth={touch}\n onClick={onConfirm}\n dataTestId={`${testId}-done-confirm`}\n sx={doneConfirmSx()}\n >\n {done.confirmLabel}\n </Button>\n </Box>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,qBAAqB;AAC5B,OAAO,sBAAsB;AAC7B,OAAO,4BAA4B;AACnC,OAAO,eAAe;AACtB,OAAO,SAAS;AAChB,OAAO,gBAAgB;AACvB,OAAO,gBAAgB;AACvB,OAAO,gBAAgB;AACvB,SAAgB,WAAW,cAAc;AA6CrC,mBACW,KAEP,YAHJ;AAHG,SAAS,eAAe,OAAuC;AACpE,QAAM,EAAE,OAAO,OAAO,MAAM,YAAY,SAAS,UAAU,eAAe,OAAO,IAAI;AACrF,SACE,iCACG;AAAA,YAAQ,oBAAC,OAAI,eAAW,MAAC,IAAI,UAAU,eAAa,GAAG,MAAM,WAAW,IAAK;AAAA,IAC9E,qBAAC,OAAI,IAAI,UACP;AAAA,2BAAC,OAAI,IAAI,eACN;AAAA,eACC;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,OAAM;AAAA,YACN,MAAK;AAAA,YACL,MAAM,oBAAC,mBAAgB;AAAA,YACvB,cAAY,KAAK;AAAA,YACjB,SAAS,KAAK;AAAA,YACd,UAAU,KAAK;AAAA,YACf,IAAI,aAAa,KAAK;AAAA,YACtB,YAAY,GAAG,MAAM;AAAA,YAEpB,eAAK;AAAA;AAAA,QACR,IACE;AAAA,QACJ,oBAAC,cAAW,WAAU,QAAO,IAAI,aAAa,eAAa,GAAG,MAAM,eACjE,iBACH;AAAA,SACF;AAAA,MACA,oBAAC,cAAW,cAAY,YAAY,SAAS,SAAS,IAAI,cAAc,KAAK,GAAG,eAAa,GAAG,MAAM,UACpG,8BAAC,aAAU,GACb;AAAA,OACF;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,OAAM;AAAA,QACN,OAAO;AAAA,QACP,cAAY;AAAA,QACZ,YAAY,GAAG,MAAM;AAAA;AAAA,IACvB;AAAA,KACF;AAEJ;AAQO,SAAS,iBACd,WACA,QACA,UACM;AACN,YAAU,MAAM;AACd,KAAC,OAAO,WAAW,SAAS,UAAU,MAAM;AAAA,EAC9C,GAAG,CAAC,WAAW,QAAQ,QAAQ,CAAC;AAClC;AAOA,SAAS,sBAAsB,MAAe,MAAiD;AAC7F,YAAU,MAAM;AACd,QAAI,CAAC,KAAM,QAAO;AAClB,UAAM,SAAS,MAAY;AACzB,YAAM,OAAO,KAAK;AAClB,YAAM,SAAS,MAAM,cAAc;AACnC,UAAI,SAAS,CAAC,UAAU,WAAW,KAAK,cAAc,MAAO,MAAK,MAAM;AAAA,IAC1E;AACA,WAAO;AACP,UAAM,QAAQ,sBAAsB,MAAM;AAC1C,WAAO,MAAM,qBAAqB,KAAK;AAAA,EACzC,GAAG,CAAC,MAAM,IAAI,CAAC;AACjB;AAUO,SAAS,kBAAkB,EAAE,OAAO,SAAS,QAAQ,UAAU,GAAkC;AACtG,QAAM,WAAW,OAAkC,IAAI;AACvD,mBAAiB,WAAW,UAAU,QAAQ;AAC9C,QAAM,OAAO,MAAM,WAAW,SAAS;AACvC,SACE,iCACE;AAAA,yBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,IAAI,GAC5D;AAAA,0BAAC,cAAW,WAAU,MAAK,IAAI,SAAS,UAAU,IAAI,KAAK,UAAU,IAAI,SACtE,gBAAM,OACT;AAAA,MACC,MAAM,cACL,oBAAC,cAAW,SAAQ,SAAQ,OAAM,kBAC/B,gBAAM,aACT,IACE;AAAA,OACN;AAAA,IACA,oBAAC,OAAI,WAAU,MAAK,IAAI,aACrB,gBAAM,WAAW,IAAI,CAAC,UAAU,UAC/B,oBAAC,QACC;AAAA,MAAC;AAAA;AAAA,QACC,SAAS,SAAS;AAAA,QAClB,IAAI,cAAc,UAAU,IAAI;AAAA,QAChC,eAAa,GAAG,MAAM,aAAa,KAAK;AAAA,QAExC;AAAA,8BAAC,OAAI,WAAU,QAAO,IAAI,cACvB,mBAAS,OACZ;AAAA,UACA,qBAAC,OAAI,WAAU,QAAO,IAAI,gBACxB;AAAA,gCAAC,cAAW,WAAU,QAAO,SAAQ,SAAQ,YAAY,KACtD,mBAAS,OACZ;AAAA,YACC,SAAS,cACR,oBAAC,cAAW,WAAU,QAAO,IAAI,uBAC9B,mBAAS,aACZ,IACE;AAAA,aACN;AAAA,UACA,oBAAC,oBAAiB,eAAW,MAAC,IAAI,EAAE,OAAO,iBAAiB,GAAG;AAAA;AAAA;AAAA,IACjE,KApBO,GAAG,KAAK,IAAI,SAAS,KAAK,EAqBnC,CACD,GACH;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,MAAK;AAAA,QACL,WAAS;AAAA,QACT,SAAS,MAAM;AAAA,QACf,YAAY,GAAG,MAAM;AAAA,QACrB,IAAI;AAAA,QAEH,gBAAM;AAAA;AAAA,IACT;AAAA,KACF;AAEJ;AAcA,SAAS,aAAa;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMsB;AACpB,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OAAO,YAAY,YAAY,YAAY;AAAA,MAC3C,MAAK;AAAA,MACL,SAAS,OAAO;AAAA,MAChB,UAAU,QAAQ,OAAO;AAAA,MACzB,YAAY;AAAA,MACZ,IAAI,YAAY,SAAS,WAAW,KAAK,IAAI,SAAS,KAAK;AAAA,MAE1D,iBAAO;AAAA;AAAA,EACV;AAEJ;AAGO,SAAS,iBAAiB,OAAqC;AACpE,QAAM,EAAE,MAAM,MAAM,MAAM,OAAO,OAAO,QAAQ,WAAW,SAAS,IAAI;AACxE,QAAM,UAAU,OAA8B,IAAI;AAClD,mBAAiB,WAAW,UAAU,OAAO;AAC7C,wBAAsB,MAAM,OAAO;AACnC,QAAM,YAAY,KAAK,cAAc,QAAQ,SAAa,KAAK,aAAa;AAC5E,QAAM,YAAY,QAAQ,aAAa,KAAK,OAAO;AACnD,SACE,iCACE;AAAA,wBAAC,OAAI,KAAK,SAAS,UAAU,IAAI,aAAW,MAAM,IAAI,EAAE,SAAS,QAAQ,UAAU,EAAE,GAClF,eAAK,SACR;AAAA,IACC,QACC,oBAAC,SAAM,SAAQ,UAAS,UAAS,aAAY,aAAa,OAAO,YAAY,GAAG,MAAM,UAAU,IAC9F;AAAA,IACH,KAAK,WACJ,oBAAC,gBAAa,QAAQ,KAAK,UAAU,MAAY,OAAc,SAAQ,QAAO,QAAQ,GAAG,MAAM,aAAa,IAC1G;AAAA,IACH,YACC,qBAAC,OAAI,IAAI,SAAS,OAAO,KAAK,UAAU,KAAK,GAAG,eAAa,GAAG,MAAM,WACnE;AAAA,kBACC,oBAAC,gBAAa,QAAQ,WAAW,MAAY,OAAc,SAAQ,WAAU,QAAQ,GAAG,MAAM,cAAc,IAC1G;AAAA,MACH,KAAK,UACJ,oBAAC,gBAAa,QAAQ,KAAK,SAAS,MAAY,OAAc,SAAQ,SAAQ,QAAQ,GAAG,MAAM,YAAY,IACzG;AAAA,OACN,IACE;AAAA,KACN;AAEJ;AAaO,SAAS,iBAAiB,EAAE,MAAM,SAAS,OAAO,OAAO,WAAW,QAAQ,UAAU,GAAiC;AAC5H,QAAM,WAAW,OAAkC,IAAI;AACvD,mBAAiB,WAAW,UAAU,QAAQ;AAC9C,SACE,qBAAC,OAAI,IAAI,QAAQ,eAAa,GAAG,MAAM,SACrC;AAAA,wBAAC,0BAAuB,eAAW,MAAC,IAAI,YAAY;AAAA,IACpD,oBAAC,cAAW,WAAU,MAAK,IAAI,SAAS,UAAU,IAAI,KAAK,UAAU,IAAI,aACtE,eAAK,OACR;AAAA,IACC,KAAK,cACJ,oBAAC,cAAW,SAAQ,SAAQ,OAAM,kBAC/B,eAAK,aACR,IACE;AAAA,IACH,QACC,oBAAC,SAAM,SAAQ,UAAS,UAAS,aAAY,aAAa,OAAO,YAAY,GAAG,MAAM,UAAU,IAC9F;AAAA,IACJ;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,MAAK;AAAA,QACL,WAAW;AAAA,QACX,SAAS;AAAA,QACT,YAAY,GAAG,MAAM;AAAA,QACrB,IAAI,cAAc;AAAA,QAEjB,eAAK;AAAA;AAAA,IACR;AAAA,KACF;AAEJ;","names":[]}
|
package/dist/chunk-PXEIN3J4.js
DELETED
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
SequenceDoneBody,
|
|
3
|
-
SequenceHeader,
|
|
4
|
-
SequenceIntroBody,
|
|
5
|
-
SequenceStepBody
|
|
6
|
-
} from "./chunk-OFESNJKE.js";
|
|
7
|
-
import {
|
|
8
|
-
useSequenceRun
|
|
9
|
-
} from "./chunk-3LUT2C5M.js";
|
|
10
|
-
import {
|
|
11
|
-
currentOf,
|
|
12
|
-
positionOf,
|
|
13
|
-
progressOf,
|
|
14
|
-
summaryOf
|
|
15
|
-
} from "./chunk-5UBP2DJ4.js";
|
|
16
|
-
import {
|
|
17
|
-
chromeSx,
|
|
18
|
-
columnSx,
|
|
19
|
-
paperSx,
|
|
20
|
-
scrollBodySx
|
|
21
|
-
} from "./chunk-CHP3QIS3.js";
|
|
22
|
-
import {
|
|
23
|
-
SEQUENCE_METRICS
|
|
24
|
-
} from "./chunk-HHPFWEJY.js";
|
|
25
|
-
import {
|
|
26
|
-
Dialog
|
|
27
|
-
} from "./chunk-DAFFZED3.js";
|
|
28
|
-
|
|
29
|
-
// src/components/feedback/SequenceResolver/SequenceResolver.tsx
|
|
30
|
-
import Box from "@mui/material/Box/index.js";
|
|
31
|
-
import { useTheme } from "@mui/material/styles/index.js";
|
|
32
|
-
import useMediaQuery from "@mui/material/useMediaQuery/index.js";
|
|
33
|
-
import { useCallback, useId, useRef } from "react";
|
|
34
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
35
|
-
function headerLabelOf(props, run, current) {
|
|
36
|
-
const { labels } = props;
|
|
37
|
-
if (props.intro) return labels.introStep;
|
|
38
|
-
if (!current) return labels.doneStep;
|
|
39
|
-
return labels.step(positionOf(run), summaryOf(run).total, current);
|
|
40
|
-
}
|
|
41
|
-
function backOf(props, state) {
|
|
42
|
-
const { intro, labels, canGoBack = true } = props;
|
|
43
|
-
if (intro || !canGoBack || state.run.visits.length === 0) return void 0;
|
|
44
|
-
return { label: labels.back, accessible: labels.backAccessible, onClick: state.back, disabled: state.busy };
|
|
45
|
-
}
|
|
46
|
-
function escapeCloses(close) {
|
|
47
|
-
return (event) => {
|
|
48
|
-
if (event.key !== "Escape" || event.defaultPrevented) return;
|
|
49
|
-
event.stopPropagation();
|
|
50
|
-
close();
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
function SequenceBody(body) {
|
|
54
|
-
const { props, state, current, api, titleId, stepTitleRef, touch, testId, close } = body;
|
|
55
|
-
if (props.intro) {
|
|
56
|
-
return /* @__PURE__ */ jsx(SequenceIntroBody, { intro: props.intro, titleId, testId, screenKey: "intro" });
|
|
57
|
-
}
|
|
58
|
-
if (current) {
|
|
59
|
-
return /* @__PURE__ */ jsx(
|
|
60
|
-
SequenceStepBody,
|
|
61
|
-
{
|
|
62
|
-
step: props.renderStep(current, api),
|
|
63
|
-
skip: { label: props.labels.skip, onClick: state.skip },
|
|
64
|
-
busy: state.busy,
|
|
65
|
-
error: state.error,
|
|
66
|
-
touch,
|
|
67
|
-
testId,
|
|
68
|
-
screenKey: `step:${current.key}`,
|
|
69
|
-
titleRef: stepTitleRef
|
|
70
|
-
}
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
const summary = summaryOf(state.run);
|
|
74
|
-
return /* @__PURE__ */ jsx(
|
|
75
|
-
SequenceDoneBody,
|
|
76
|
-
{
|
|
77
|
-
done: typeof props.done === "function" ? props.done(summary) : props.done,
|
|
78
|
-
titleId,
|
|
79
|
-
error: state.error,
|
|
80
|
-
touch,
|
|
81
|
-
onConfirm: close,
|
|
82
|
-
testId,
|
|
83
|
-
screenKey: "done"
|
|
84
|
-
}
|
|
85
|
-
);
|
|
86
|
-
}
|
|
87
|
-
function SequenceResolver(props) {
|
|
88
|
-
const { open, onClose, intro, labels } = props;
|
|
89
|
-
const testId = props.dataTestId ?? "sequence-resolver";
|
|
90
|
-
const theme = useTheme();
|
|
91
|
-
const touch = useMediaQuery(theme.breakpoints.down(SEQUENCE_METRICS.sheetBreakpoint));
|
|
92
|
-
const titleId = `${useId()}-title`;
|
|
93
|
-
const stepTitleRef = useRef(null);
|
|
94
|
-
const titleRef = useCallback((node) => {
|
|
95
|
-
stepTitleRef.current = node;
|
|
96
|
-
}, []);
|
|
97
|
-
const state = useSequenceRun({
|
|
98
|
-
open,
|
|
99
|
-
active: open && !intro,
|
|
100
|
-
queue: props.queue,
|
|
101
|
-
onBack: props.onBack,
|
|
102
|
-
failed: labels.failed
|
|
103
|
-
});
|
|
104
|
-
const { run, busy } = state;
|
|
105
|
-
const current = intro ? void 0 : currentOf(run);
|
|
106
|
-
const close = () => onClose(summaryOf(run));
|
|
107
|
-
const api = {
|
|
108
|
-
resolve: state.resolve,
|
|
109
|
-
skip: state.skip,
|
|
110
|
-
back: state.back,
|
|
111
|
-
busy,
|
|
112
|
-
titleProps: { id: titleId, tabIndex: -1, ref: titleRef }
|
|
113
|
-
};
|
|
114
|
-
return /* @__PURE__ */ jsx(
|
|
115
|
-
Dialog,
|
|
116
|
-
{
|
|
117
|
-
open,
|
|
118
|
-
onClose: close,
|
|
119
|
-
persistent: true,
|
|
120
|
-
variant: touch ? "bottom-sheet" : "default",
|
|
121
|
-
size: "sm",
|
|
122
|
-
"aria-labelledby": titleId,
|
|
123
|
-
onKeyDown: escapeCloses(close),
|
|
124
|
-
slotProps: { paper: { sx: paperSx(touch) } },
|
|
125
|
-
dataTestId: testId,
|
|
126
|
-
children: /* @__PURE__ */ jsxs(Box, { sx: columnSx, children: [
|
|
127
|
-
/* @__PURE__ */ jsx(Box, { sx: chromeSx, children: /* @__PURE__ */ jsx(
|
|
128
|
-
SequenceHeader,
|
|
129
|
-
{
|
|
130
|
-
touch,
|
|
131
|
-
label: headerLabelOf(props, run, current),
|
|
132
|
-
back: backOf(props, state),
|
|
133
|
-
closeLabel: labels.close,
|
|
134
|
-
onClose: close,
|
|
135
|
-
progress: intro ? 0 : progressOf(run),
|
|
136
|
-
progressLabel: labels.progress,
|
|
137
|
-
testId
|
|
138
|
-
}
|
|
139
|
-
) }),
|
|
140
|
-
/* @__PURE__ */ jsx(Box, { sx: scrollBodySx, "data-testid": `${testId}-body`, children: /* @__PURE__ */ jsx(
|
|
141
|
-
SequenceBody,
|
|
142
|
-
{
|
|
143
|
-
props,
|
|
144
|
-
state,
|
|
145
|
-
current,
|
|
146
|
-
api,
|
|
147
|
-
titleId,
|
|
148
|
-
stepTitleRef,
|
|
149
|
-
touch,
|
|
150
|
-
testId,
|
|
151
|
-
close
|
|
152
|
-
}
|
|
153
|
-
) })
|
|
154
|
-
] })
|
|
155
|
-
}
|
|
156
|
-
);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
export {
|
|
160
|
-
SequenceResolver
|
|
161
|
-
};
|
|
162
|
-
//# sourceMappingURL=chunk-PXEIN3J4.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/feedback/SequenceResolver/SequenceResolver.tsx"],"sourcesContent":["'use client';\n\nimport Box from '@mui/material/Box/index.js';\nimport { useTheme } from '@mui/material/styles/index.js';\nimport useMediaQuery from '@mui/material/useMediaQuery/index.js';\nimport React, { useCallback, useId, useRef } from 'react';\n\nimport { Dialog } from '../Dialog';\nimport { currentOf, positionOf, progressOf, summaryOf, type RunState } from './sequence-model';\nimport { SequenceDoneBody, SequenceHeader, SequenceIntroBody, SequenceStepBody } from './SequenceResolver.parts';\nimport { SEQUENCE_METRICS } from './SequenceResolver.metrics';\nimport { chromeSx, columnSx, paperSx, scrollBodySx } from './SequenceResolver.styles';\nimport type { SequenceItem, SequenceResolverProps, SequenceStepApi } from './SequenceResolver.types';\nimport { useSequenceRun, type SequenceRun } from './useSequenceRun';\n\n/** What the header's label says on the screen showing. */\nfunction headerLabelOf<I extends SequenceItem, R>(\n props: SequenceResolverProps<I, R>,\n run: RunState<I, R>,\n current: I | undefined,\n): string {\n const { labels } = props;\n if (props.intro) return labels.introStep;\n if (!current) return labels.doneStep;\n return labels.step(positionOf(run), summaryOf(run).total, current);\n}\n\n/** The header's back button, once a previous step exists and the host allows it. */\nfunction backOf<I extends SequenceItem, R>(props: SequenceResolverProps<I, R>, state: SequenceRun<I, R>) {\n const { intro, labels, canGoBack = true } = props;\n if (intro || !canGoBack || state.run.visits.length === 0) return undefined;\n return { label: labels.back, accessible: labels.backAccessible, onClick: state.back, disabled: state.busy };\n}\n\n/**\n * Esc closes. `persistent` turns MUI's own Esc off together with the veil's\n * click (the prototype's veil does nothing), so Esc is put back here; a popup\n * inside a step that handles its own Esc stops it before it gets here.\n */\nfunction escapeCloses(close: () => void) {\n return (event: React.KeyboardEvent): void => {\n if (event.key !== 'Escape' || event.defaultPrevented) return;\n event.stopPropagation();\n close();\n };\n}\n\ninterface BodyProps<I extends SequenceItem, R> {\n props: SequenceResolverProps<I, R>;\n state: SequenceRun<I, R>;\n current: I | undefined;\n api: SequenceStepApi<R>;\n titleId: string;\n stepTitleRef: React.RefObject<HTMLElement | null>;\n touch: boolean;\n testId: string;\n close: () => void;\n}\n\n/** The intro, the step on screen, or the end screen. */\nfunction SequenceBody<I extends SequenceItem, R>(body: BodyProps<I, R>): React.JSX.Element {\n const { props, state, current, api, titleId, stepTitleRef, touch, testId, close } = body;\n if (props.intro) {\n return <SequenceIntroBody intro={props.intro} titleId={titleId} testId={testId} screenKey=\"intro\" />;\n }\n if (current) {\n return (\n <SequenceStepBody\n step={props.renderStep(current, api)}\n skip={{ label: props.labels.skip, onClick: state.skip }}\n busy={state.busy}\n error={state.error}\n touch={touch}\n testId={testId}\n screenKey={`step:${current.key}`}\n titleRef={stepTitleRef}\n />\n );\n }\n const summary = summaryOf(state.run);\n return (\n <SequenceDoneBody\n done={typeof props.done === 'function' ? props.done(summary) : props.done}\n titleId={titleId}\n error={state.error}\n touch={touch}\n onConfirm={close}\n testId={testId}\n screenKey=\"done\"\n />\n );\n}\n\n/**\n * Resolve a queue of problems one at a time, in ONE dialog whose body is\n * replaced step by step: a header with \"‹ Back\", the step's label and close,\n * a progress bar, the host's step, and an end screen (FUT-3671).\n *\n * A centred `Dialog` from the `sm` breakpoint up; the `Dialog` inset\n * bottom-sheet variant below it, never taller than 95% of the viewport. Either\n * way the paper scrolls inside the viewport, so a long step is never cut off.\n *\n * The component owns the run — which step is on screen, what was answered or\n * skipped, where Back returns to — and nothing about the domain: every step\n * body, every word and every server call is the host's.\n */\nexport function SequenceResolver<I extends SequenceItem, R = unknown>(\n props: SequenceResolverProps<I, R>,\n): React.JSX.Element {\n const { open, onClose, intro, labels } = props;\n const testId = props.dataTestId ?? 'sequence-resolver';\n const theme = useTheme();\n const touch = useMediaQuery(theme.breakpoints.down(SEQUENCE_METRICS.sheetBreakpoint));\n const titleId = `${useId()}-title`;\n const stepTitleRef = useRef<HTMLElement | null>(null);\n const titleRef = useCallback((node: HTMLElement | null) => {\n stepTitleRef.current = node;\n }, []);\n\n const state = useSequenceRun<I, R>({\n open,\n active: open && !intro,\n queue: props.queue,\n onBack: props.onBack,\n failed: labels.failed,\n });\n const { run, busy } = state;\n const current = intro ? undefined : currentOf(run);\n const close = (): void => onClose(summaryOf(run));\n const api: SequenceStepApi<R> = {\n resolve: state.resolve,\n skip: state.skip,\n back: state.back,\n busy,\n titleProps: { id: titleId, tabIndex: -1, ref: titleRef },\n };\n\n return (\n <Dialog\n open={open}\n onClose={close}\n persistent\n variant={touch ? 'bottom-sheet' : 'default'}\n size=\"sm\"\n aria-labelledby={titleId}\n onKeyDown={escapeCloses(close)}\n slotProps={{ paper: { sx: paperSx(touch) } }}\n dataTestId={testId}\n >\n <Box sx={columnSx}>\n <Box sx={chromeSx}>\n <SequenceHeader\n touch={touch}\n label={headerLabelOf(props, run, current)}\n back={backOf(props, state)}\n closeLabel={labels.close}\n onClose={close}\n progress={intro ? 0 : progressOf(run)}\n progressLabel={labels.progress}\n testId={testId}\n />\n </Box>\n <Box sx={scrollBodySx} data-testid={`${testId}-body`}>\n <SequenceBody\n props={props}\n state={state}\n current={current}\n api={api}\n titleId={titleId}\n stepTitleRef={stepTitleRef}\n touch={touch}\n testId={testId}\n close={close}\n />\n </Box>\n </Box>\n </Dialog>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/en-US.labels.ts"],"sourcesContent":["/**\n * The en-US labels pack — and, unlike the other en-US packs, the components'\n * own fallback: each `labels` prop is optional, and this is what a host that\n * passes nothing has always rendered, kept word for word (including the\n * lower-case `close`/`loading` names tests already query by).\n */\nimport type { UiLabels } from './copy/labels';\n\nexport const EN_US_UI_LABELS: UiLabels = {\n common: {\n loading: \"loading\",\n close: \"close\",\n delete: \"delete\",\n },\n stepper: {\n step: (position, label) => `Step ${position}: ${label}`,\n optional: \"optional\",\n completed: \"completed\",\n current: \"current\",\n },\n timeline: {\n expandDetails: \"Expand item details\",\n collapseDetails: \"Collapse item details\",\n item: (title) => `Timeline item: ${title}`,\n },\n lazyImage: {\n loadingAlt: (alt) => `${alt} (loading)`,\n fallbackAlt: (alt) => `${alt} (fallback)`,\n },\n sonner: {\n hiddenCount: (count) => `+${count} more`,\n },\n richTextEditor: {\n placeholder: \"Start typing...\",\n ariaLabel: \"Rich text editor\",\n listItem: \"List item\",\n bold: \"Bold\",\n italic: \"Italic\",\n underline: \"Underline\",\n strikethrough: \"Strikethrough\",\n numberedList: \"Numbered List\",\n bulletedList: \"Bulleted List\",\n insertLink: \"Insert Link\",\n insertImage: \"Insert Image\",\n codeBlock: \"Code Block\",\n quote: \"Quote\",\n linkPrompt: \"Enter URL:\",\n imagePrompt: \"Enter image URL:\",\n },\n table: {\n sortBy: (header) => `Sort by ${header}`,\n selectRow: (rowNumber) => `select row ${rowNumber}`,\n selectAllRows: \"select all\",\n },\n code: {\n copy: \"Copy code\",\n copied: \"Copied!\",\n },\n contentToolbar: {\n gridView: \"Grid View\",\n listView: \"List View\",\n openFilters: \"Open filters\",\n closeFilters: \"Close filters\",\n filters: \"Filters\",\n all: \"All\",\n search: \"Search…\",\n noResults: \"No results\",\n },\n dashboard: {\n breadcrumb: \"breadcrumb\",\n moreFilters: \"More filters\",\n },\n navigationMenu: {\n collapse: \"Collapse\",\n expand: \"Expand\",\n },\n workflowStep: {\n step: (position, title) => `Step ${position}: ${title}`,\n progress: (position, total) => `Step ${position} of ${total}`,\n },\n alertDialog: {\n cancel: \"Cancel\",\n confirm: \"Confirm\",\n },\n avatar: {\n name: \"Avatar\",\n },\n emptyState: {\n refresh: \"Refresh\",\n create: \"Create New\",\n },\n errorState: {\n retry: \"Retry\",\n },\n loadingState: {\n skeleton: \"Loading content\",\n spinner: \"Loading\",\n },\n stackedModal: {\n loading: \"Loading...\",\n },\n command: {\n placeholder: \"Type a command or search...\",\n empty: \"No results found\",\n loading: \"Loading...\",\n },\n formErrorSnackbar: {\n message: \"Please fix the highlighted fields and try again.\",\n },\n columnsMenu: {\n title: \"Columns\",\n toggle: \"Toggle columns\",\n },\n drawer: {\n close: \"Close drawer\",\n },\n settingsLayout: {\n navigation: \"Settings\",\n searchPlaceholder: \"Search settings\",\n emptySearch: \"No settings match your search.\",\n back: \"Back\",\n },\n tableFilter: {\n filters: \"Filters\",\n keywordPlaceholder: \"Press Enter to filter\",\n keywordLabel: \"Filter by keyword\",\n },\n appHeader: {\n disclose: (title) => `${title} details`,\n },\n breadcrumbs: {\n navigation: \"breadcrumb navigation\",\n },\n animatedIcon: {\n name: (variant) => `Animated ${variant} icon`,\n },\n infiniteScroll: {\n loadFailed: \"An error occurred while loading more items\",\n },\n socialLogin: {\n title: \"Sign in to continue\",\n divider: \"or\",\n },\n dateRangePicker: {\n calendar: \"Calendar\",\n },\n calendar: {\n chooseMonth: (month) => `${month}, choose month`,\n chooseYear: (year) => `${year}, choose year`,\n previousMonth: \"Previous month\",\n nextMonth: \"Next month\",\n months: \"Months\",\n years: \"Years\",\n },\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/en-US.labels.ts"],"sourcesContent":["/**\n * The en-US labels pack — and, unlike the other en-US packs, the components'\n * own fallback: each `labels` prop is optional, and this is what a host that\n * passes nothing has always rendered, kept word for word (including the\n * lower-case `close`/`loading` names tests already query by).\n */\nimport type { UiLabels } from './copy/labels';\n\nexport const EN_US_UI_LABELS: UiLabels = {\n common: {\n loading: \"loading\",\n close: \"close\",\n delete: \"delete\",\n },\n stepper: {\n step: (position, label) => `Step ${position}: ${label}`,\n optional: \"optional\",\n completed: \"completed\",\n current: \"current\",\n },\n timeline: {\n expandDetails: \"Expand item details\",\n collapseDetails: \"Collapse item details\",\n item: (title) => `Timeline item: ${title}`,\n },\n lazyImage: {\n loadingAlt: (alt) => `${alt} (loading)`,\n fallbackAlt: (alt) => `${alt} (fallback)`,\n },\n sonner: {\n hiddenCount: (count) => `+${count} more`,\n },\n richTextEditor: {\n placeholder: \"Start typing...\",\n ariaLabel: \"Rich text editor\",\n listItem: \"List item\",\n bold: \"Bold\",\n italic: \"Italic\",\n underline: \"Underline\",\n strikethrough: \"Strikethrough\",\n numberedList: \"Numbered List\",\n bulletedList: \"Bulleted List\",\n insertLink: \"Insert Link\",\n insertImage: \"Insert Image\",\n codeBlock: \"Code Block\",\n quote: \"Quote\",\n linkPrompt: \"Enter URL:\",\n imagePrompt: \"Enter image URL:\",\n },\n table: {\n sortBy: (header) => `Sort by ${header}`,\n selectRow: (rowNumber) => `select row ${rowNumber}`,\n selectAllRows: \"select all\",\n },\n code: {\n copy: \"Copy code\",\n copied: \"Copied!\",\n },\n contentToolbar: {\n gridView: \"Grid View\",\n listView: \"List View\",\n openFilters: \"Open filters\",\n closeFilters: \"Close filters\",\n filters: \"Filters\",\n all: \"All\",\n search: \"Search…\",\n noResults: \"No results\",\n },\n dashboard: {\n breadcrumb: \"breadcrumb\",\n moreFilters: \"More filters\",\n },\n navigationMenu: {\n collapse: \"Collapse\",\n expand: \"Expand\",\n },\n workflowStep: {\n step: (position, title) => `Step ${position}: ${title}`,\n progress: (position, total) => `Step ${position} of ${total}`,\n },\n alertDialog: {\n cancel: \"Cancel\",\n confirm: \"Confirm\",\n },\n avatar: {\n name: \"Avatar\",\n },\n emptyState: {\n refresh: \"Refresh\",\n create: \"Create New\",\n },\n errorState: {\n retry: \"Retry\",\n },\n loadingState: {\n skeleton: \"Loading content\",\n spinner: \"Loading\",\n },\n stackedModal: {\n loading: \"Loading...\",\n },\n command: {\n placeholder: \"Type a command or search...\",\n empty: \"No results found\",\n loading: \"Loading...\",\n },\n formErrorSnackbar: {\n message: \"Please fix the highlighted fields and try again.\",\n },\n columnsMenu: {\n title: \"Columns\",\n toggle: \"Toggle columns\",\n },\n drawer: {\n close: \"Close drawer\",\n },\n settingsLayout: {\n navigation: \"Settings\",\n searchPlaceholder: \"Search settings\",\n emptySearch: \"No settings match your search.\",\n back: \"Back\",\n },\n tableFilter: {\n filters: \"Filters\",\n keywordPlaceholder: \"Press Enter to filter\",\n keywordLabel: \"Filter by keyword\",\n },\n appHeader: {\n disclose: (title) => `${title} details`,\n },\n breadcrumbs: {\n navigation: \"breadcrumb navigation\",\n },\n animatedIcon: {\n name: (variant) => `Animated ${variant} icon`,\n },\n infiniteScroll: {\n loadFailed: \"An error occurred while loading more items\",\n },\n socialLogin: {\n title: \"Sign in to continue\",\n divider: \"or\",\n },\n dateRangePicker: {\n calendar: \"Calendar\",\n },\n calendar: {\n chooseMonth: (month) => `${month}, choose month`,\n chooseYear: (year) => `${year}, choose year`,\n previousMonth: \"Previous month\",\n nextMonth: \"Next month\",\n months: \"Months\",\n years: \"Years\",\n },\n};\n"],"mappings":"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","names":[]}
|
/package/dist/{chunk-ABRUOINB.js.map → _internal/components/data-display/DayRuler/DayRuler.js.map}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|