@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.
Files changed (844) hide show
  1. package/NATIVE.md +1 -1
  2. package/components-catalog.md +16 -2
  3. package/dist/_internal/components/data-display/Alert/Alert.js +3 -3
  4. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.js +3 -3
  5. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.parts.js +2 -2
  6. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +9 -9
  7. package/dist/_internal/components/data-display/Avatar/Avatar.js +4 -4
  8. package/dist/_internal/components/data-display/Avatar/Avatar.view.js +2 -2
  9. package/dist/_internal/components/data-display/Badge/Badge.js +1 -1
  10. package/dist/_internal/components/data-display/Badge/Badge.styles.js +1 -1
  11. package/dist/_internal/components/data-display/Badge/BadgeContent.js +1 -1
  12. package/dist/_internal/components/data-display/CardKit/card-actions-context.js +4 -4
  13. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +12 -12
  14. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +8 -8
  15. package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +1 -1
  16. package/dist/_internal/components/data-display/Carousel/Carousel.js +4 -4
  17. package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +1 -1
  18. package/dist/_internal/components/data-display/Carousel/Carousel.styles.js +1 -1
  19. package/dist/_internal/components/data-display/Chart/Chart.js +6 -6
  20. package/dist/_internal/components/data-display/Chart/SpecChart.js +9 -9
  21. package/dist/_internal/components/data-display/Chart/chart-context.js +3 -3
  22. package/dist/_internal/components/data-display/Chart/chart-internals.js +1 -1
  23. package/dist/_internal/components/data-display/Chart/chart-renderers.js +5 -5
  24. package/dist/_internal/components/data-display/Chart/chart-spec.js +2 -2
  25. package/dist/_internal/components/data-display/Chip/Chip.js +3 -3
  26. package/dist/_internal/components/data-display/Chip/Chip.styles.js +2 -2
  27. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
  28. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +58 -58
  29. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +78 -78
  30. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +3 -3
  31. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +9 -9
  32. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +7 -7
  33. package/dist/_internal/components/data-display/DataViews/base-card.js +3 -3
  34. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +3 -3
  35. package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +3 -3
  36. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +2 -2
  37. package/dist/_internal/components/data-display/DataViews/base-list-card.js +8 -8
  38. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +16 -16
  39. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +2 -2
  40. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +24 -24
  41. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +6 -6
  42. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +53 -53
  43. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +26 -26
  44. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +23 -23
  45. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +24 -24
  46. package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +3 -3
  47. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +4 -4
  48. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +12 -12
  49. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +23 -23
  50. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +11 -11
  51. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +2 -2
  52. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +4 -4
  53. package/dist/_internal/components/data-display/DayRuler/DayRuler.js +33 -0
  54. package/dist/_internal/components/data-display/DayRuler/DayRuler.keyboard.js +12 -0
  55. package/dist/_internal/components/data-display/DayRuler/DayRuler.keyboard.js.map +1 -0
  56. package/dist/_internal/components/data-display/DayRuler/DayRuler.metrics.js +8 -0
  57. package/dist/_internal/components/data-display/DayRuler/DayRuler.metrics.js.map +1 -0
  58. package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js +30 -0
  59. package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js.map +1 -0
  60. package/dist/_internal/components/data-display/DayRuler/DayRuler.styles.js +54 -0
  61. package/dist/_internal/components/data-display/DayRuler/DayRuler.styles.js.map +1 -0
  62. package/dist/_internal/components/data-display/DayRuler/DayRuler.types.js +1 -0
  63. package/dist/_internal/components/data-display/DayRuler/DayRuler.types.js.map +1 -0
  64. package/dist/_internal/components/data-display/DayRuler/day-ruler-model.js +26 -0
  65. package/dist/_internal/components/data-display/DayRuler/day-ruler-model.js.map +1 -0
  66. package/dist/_internal/components/data-display/DayRuler/useRulerDrag.js +11 -0
  67. package/dist/_internal/components/data-display/DayRuler/useRulerDrag.js.map +1 -0
  68. package/dist/_internal/components/data-display/DayRuler/useTextFits.js +8 -0
  69. package/dist/_internal/components/data-display/DayRuler/useTextFits.js.map +1 -0
  70. package/dist/_internal/components/data-display/EmptyState/EmptyState.js +3 -3
  71. package/dist/_internal/components/data-display/ErrorState/ErrorState.js +2 -2
  72. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +12 -12
  73. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +6 -6
  74. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +19 -19
  75. package/dist/_internal/components/data-display/FleetMap/FleetRoster.js +3 -3
  76. package/dist/_internal/components/data-display/HoverCard/HoverCard.js +3 -3
  77. package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.js +2 -2
  78. package/dist/_internal/components/data-display/LazyImage/LazyImage.js +4 -4
  79. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +4 -4
  80. package/dist/_internal/components/data-display/LoadingState/LoadingState.js +5 -5
  81. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +3 -3
  82. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +5 -5
  83. package/dist/_internal/components/data-display/RegionMap/RegionMap.js +6 -6
  84. package/dist/_internal/components/data-display/RegionMap/RegionMapDrawing.js +2 -2
  85. package/dist/_internal/components/data-display/RegionMap/RegionMapList.js +1 -1
  86. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.js +30 -0
  87. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.js.map +1 -0
  88. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.keyboard.js +11 -0
  89. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.keyboard.js.map +1 -0
  90. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.metrics.js +10 -0
  91. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.metrics.js.map +1 -0
  92. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.parts.js +25 -0
  93. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.parts.js.map +1 -0
  94. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.styles.js +59 -0
  95. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.styles.js.map +1 -0
  96. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.types.js +1 -0
  97. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.types.js.map +1 -0
  98. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleNameCell.js +18 -0
  99. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleNameCell.js.map +1 -0
  100. package/dist/_internal/components/data-display/ScheduleGrid/drag-session.js +10 -0
  101. package/dist/_internal/components/data-display/ScheduleGrid/drag-session.js.map +1 -0
  102. package/dist/_internal/components/data-display/ScheduleGrid/schedule-grid-model.js +18 -0
  103. package/dist/_internal/components/data-display/ScheduleGrid/schedule-grid-model.js.map +1 -0
  104. package/dist/_internal/components/data-display/ScheduleGrid/schedule-name.styles.js +25 -0
  105. package/dist/_internal/components/data-display/ScheduleGrid/schedule-name.styles.js.map +1 -0
  106. package/dist/_internal/components/data-display/ScheduleGrid/schedule-tones.js +26 -0
  107. package/dist/_internal/components/data-display/ScheduleGrid/schedule-tones.js.map +1 -0
  108. package/dist/_internal/components/data-display/ScheduleGrid/useAnnouncer.js +8 -0
  109. package/dist/_internal/components/data-display/ScheduleGrid/useAnnouncer.js.map +1 -0
  110. package/dist/_internal/components/data-display/ScheduleGrid/useGridDrag.js +10 -0
  111. package/dist/_internal/components/data-display/ScheduleGrid/useGridDrag.js.map +1 -0
  112. package/dist/_internal/components/data-display/ScheduleGrid/useSidewaysScroll.js +9 -0
  113. package/dist/_internal/components/data-display/ScheduleGrid/useSidewaysScroll.js.map +1 -0
  114. package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +5 -5
  115. package/dist/_internal/components/data-display/Sheet/Sheet.body.js +4 -4
  116. package/dist/_internal/components/data-display/Sheet/Sheet.hooks.js +2 -2
  117. package/dist/_internal/components/data-display/Sheet/Sheet.js +8 -8
  118. package/dist/_internal/components/data-display/Sheet/Sheet.parts.js +2 -2
  119. package/dist/_internal/components/data-display/Sheet/Sheet.styles.js +1 -1
  120. package/dist/_internal/components/data-display/StatCard/StatCard.js +3 -3
  121. package/dist/_internal/components/data-display/Stepper/Stepper.js +2 -2
  122. package/dist/_internal/components/data-display/Table/Table.js +5 -5
  123. package/dist/_internal/components/data-display/Table/TableParts.hooks.js +2 -2
  124. package/dist/_internal/components/data-display/Table/TableParts.js +2 -2
  125. package/dist/_internal/components/data-display/Timeline/Timeline.js +2 -2
  126. package/dist/_internal/components/data-display/index.js +159 -130
  127. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +5 -5
  128. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.parts.js +4 -4
  129. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +6 -6
  130. package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +5 -5
  131. package/dist/_internal/components/feedback/Dialog/Dialog.js +2 -2
  132. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +4 -4
  133. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.header.js +38 -0
  134. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.header.js.map +1 -0
  135. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.header.styles.js +14 -0
  136. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.header.styles.js.map +1 -0
  137. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +14 -11
  138. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.metrics.js +1 -1
  139. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.overview.js +40 -0
  140. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.overview.js.map +1 -0
  141. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +6 -13
  142. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.styles.js +10 -2
  143. package/dist/_internal/components/feedback/SequenceResolver/sequence-model.js +7 -1
  144. package/dist/_internal/components/feedback/SequenceResolver/useSequenceRun.js +2 -2
  145. package/dist/_internal/components/feedback/Sonner/Sonner.js +2 -2
  146. package/dist/_internal/components/feedback/StackedModal/StackedModal.js +4 -4
  147. package/dist/_internal/components/feedback/StackedModal/StackedModal.parts.js +2 -2
  148. package/dist/_internal/components/feedback/Toast/Toast.js +2 -2
  149. package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +2 -2
  150. package/dist/_internal/components/feedback/index.js +45 -42
  151. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +1 -1
  152. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +1 -1
  153. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +2 -2
  154. package/dist/_internal/components/form/Calendar/Calendar.js +7 -7
  155. package/dist/_internal/components/form/Calendar/CalendarDayCell.js +2 -2
  156. package/dist/_internal/components/form/Calendar/CalendarMonth.js +3 -3
  157. package/dist/_internal/components/form/Calendar/CalendarSelectorsMonth.js +5 -5
  158. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +5 -5
  159. package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +3 -3
  160. package/dist/_internal/components/form/CategorySelect/CategoryRows.js +2 -2
  161. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +9 -9
  162. package/dist/_internal/components/form/Command/Command.hooks.js +2 -2
  163. package/dist/_internal/components/form/Command/Command.js +6 -6
  164. package/dist/_internal/components/form/Command/Command.parts.js +2 -2
  165. package/dist/_internal/components/form/Command/Command.styles.js +1 -1
  166. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +3 -3
  167. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +13 -13
  168. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +2 -2
  169. package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +3 -3
  170. package/dist/_internal/components/form/Label/Label.js +1 -1
  171. package/dist/_internal/components/form/Label/Label.styles.js +1 -1
  172. package/dist/_internal/components/form/Menubar/Menubar.item.js +1 -1
  173. package/dist/_internal/components/form/Menubar/Menubar.js +5 -5
  174. package/dist/_internal/components/form/Menubar/Menubar.styles.js +1 -1
  175. package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +3 -3
  176. package/dist/_internal/components/form/PickerSheet/PickerSheet.js +4 -4
  177. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.dom.js +2 -2
  178. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.format.js +3 -3
  179. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.hooks.js +4 -4
  180. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +5 -5
  181. package/dist/_internal/components/form/Switch/Switch.js +4 -4
  182. package/dist/_internal/components/form/Switch/Switch.parts.js +3 -3
  183. package/dist/_internal/components/form/Switch/Switch.styles.js +2 -2
  184. package/dist/_internal/components/form/index.js +83 -83
  185. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +10 -10
  186. package/dist/_internal/components/form/total-form/Fields/index.js +17 -17
  187. package/dist/_internal/components/form/total-form/FormErrorSnackbar.js +3 -3
  188. package/dist/_internal/components/index.js +366 -334
  189. package/dist/_internal/components/layout/Box/Box.js +1 -1
  190. package/dist/_internal/components/layout/Card/Card.js +2 -2
  191. package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +2 -2
  192. package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +3 -3
  193. package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +2 -2
  194. package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +2 -2
  195. package/dist/_internal/components/layout/Dashboard/Dashboard.js +2 -2
  196. package/dist/_internal/components/layout/Drawer/Drawer.js +2 -2
  197. package/dist/_internal/components/layout/Screen/Screen.js +1 -1
  198. package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +3 -3
  199. package/dist/_internal/components/layout/SettingCard/SettingCard.js +9 -9
  200. package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +5 -5
  201. package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js +8 -8
  202. package/dist/_internal/components/layout/SettingCard/SettingGrid.js +6 -6
  203. package/dist/_internal/components/layout/SettingCard/SettingGroup.js +15 -15
  204. package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +14 -14
  205. package/dist/_internal/components/layout/SettingCard/SettingToggle.js +15 -15
  206. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +7 -7
  207. package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +4 -4
  208. package/dist/_internal/components/layout/SettingsLayout/SettingsSectionChips.js +2 -2
  209. package/dist/_internal/components/layout/Skeleton/Skeleton.js +2 -2
  210. package/dist/_internal/components/layout/Stack/Stack.js +1 -1
  211. package/dist/_internal/components/layout/TableFilter/TableFilter.js +2 -2
  212. package/dist/_internal/components/layout/index.js +68 -68
  213. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +9 -9
  214. package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +3 -3
  215. package/dist/_internal/components/navigation/Breadcrumbs/Breadcrumbs.js +2 -2
  216. package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +3 -3
  217. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +6 -6
  218. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenuItem.js +2 -2
  219. package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +4 -4
  220. package/dist/_internal/components/navigation/Pagination/Pagination.js +2 -2
  221. package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +5 -5
  222. package/dist/_internal/components/navigation/SectionNav/SectionNav.js +6 -6
  223. package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js +1 -1
  224. package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js +1 -1
  225. package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js +1 -1
  226. package/dist/_internal/components/navigation/SectionNav/SectionNav.railCreate.js +1 -1
  227. package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +4 -4
  228. package/dist/_internal/components/navigation/SectionNav/__stories__/fixtures.js +1 -1
  229. package/dist/_internal/components/navigation/index.js +36 -36
  230. package/dist/_internal/components/typography/Code/Code.js +2 -2
  231. package/dist/_internal/components/typography/index.js +6 -6
  232. package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.js +2 -2
  233. package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.js +3 -3
  234. package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.parts.js +2 -2
  235. package/dist/_internal/components/utility/InstallPrompt/InstallPrompt.js +2 -2
  236. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +3 -3
  237. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +6 -6
  238. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +4 -4
  239. package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +5 -5
  240. package/dist/_internal/components/utility/index.js +23 -23
  241. package/dist/_internal/en-US.labels.js +1 -1
  242. package/dist/_internal/icons/Icon.js +1 -1
  243. package/dist/_internal/provider/UiProvider.js +1 -1
  244. package/dist/_internal/provider/mui-bridge.js +1 -1
  245. package/dist/_internal/provider/use-ui-theme.js +1 -1
  246. package/dist/_internal/pt-BR.labels.js +1 -1
  247. package/dist/_internal/social-login-button/social-login-button.js +4 -4
  248. package/dist/_internal/user-avatar/user-avatar.js +7 -7
  249. package/dist/charts.js +18 -18
  250. package/dist/{chunk-X4N6Q37Q.js → chunk-2CRNOJGL.js} +9 -9
  251. package/dist/{chunk-L5KPBMMF.js → chunk-2ENMRK3U.js} +2 -2
  252. package/dist/{chunk-K7IDOTSU.js → chunk-2KBATUOZ.js} +3 -3
  253. package/dist/{chunk-VKTF3GAP.js → chunk-2MYSXWZQ.js} +9 -9
  254. package/dist/{chunk-CHP3QIS3.js → chunk-2ORD2FMN.js} +37 -3
  255. package/dist/{chunk-CHP3QIS3.js.map → chunk-2ORD2FMN.js.map} +1 -1
  256. package/dist/{chunk-7QKFMMWK.js → chunk-2Q2DUGH7.js} +2 -2
  257. package/dist/chunk-2SRWPNQ7.js +60 -0
  258. package/dist/chunk-2SRWPNQ7.js.map +1 -0
  259. package/dist/{chunk-VQ6V5TO7.js → chunk-2UNZG4JK.js} +3 -3
  260. package/dist/chunk-35HMJQLO.js +26 -0
  261. package/dist/chunk-35HMJQLO.js.map +1 -0
  262. package/dist/{chunk-5VKHJ7PI.js → chunk-3B4NXP4N.js} +3 -3
  263. package/dist/{chunk-HC6OZ7QK.js → chunk-3EIRRLCQ.js} +2 -2
  264. package/dist/{chunk-MSJP2AEN.js → chunk-3EKY63LD.js} +2 -2
  265. package/dist/{chunk-LH43GKP2.js → chunk-3KMP2F4R.js} +13 -13
  266. package/dist/chunk-3R6BR22L.js +72 -0
  267. package/dist/chunk-3R6BR22L.js.map +1 -0
  268. package/dist/{chunk-D3W5A4N6.js → chunk-3STNOYYO.js} +3 -3
  269. package/dist/{chunk-TVDHA7BT.js → chunk-3Y6NO5XL.js} +8 -8
  270. package/dist/{chunk-ABQZFK7M.js → chunk-44PBCQ7E.js} +6 -6
  271. package/dist/chunk-4HK4FVMV.js +106 -0
  272. package/dist/chunk-4HK4FVMV.js.map +1 -0
  273. package/dist/{chunk-PGHSNG33.js → chunk-4PZZJ2AE.js} +5 -5
  274. package/dist/{chunk-TRAMTVIO.js → chunk-4QTPERAY.js} +2 -2
  275. package/dist/{chunk-W2RXXF7K.js → chunk-4XBAEKQQ.js} +4 -4
  276. package/dist/{chunk-XCUHGPPZ.js → chunk-55PFFAAY.js} +2 -2
  277. package/dist/{chunk-LYVTJLCF.js → chunk-56JF5PZK.js} +4 -4
  278. package/dist/{native/chunks/chunk-QHW7JEPZ.js → chunk-57FIUJJJ.js} +18 -1
  279. package/dist/chunk-57FIUJJJ.js.map +1 -0
  280. package/dist/{chunk-5C3JSXBK.js → chunk-5BVAUUWL.js} +5 -5
  281. package/dist/{chunk-6OISIUZM.js → chunk-5F7HYYGM.js} +2 -2
  282. package/dist/{chunk-JHW35C6W.js → chunk-5QUH53HV.js} +6 -6
  283. package/dist/{chunk-DAFFZED3.js → chunk-5YVMFK7Y.js} +2 -2
  284. package/dist/{chunk-TI4FGQYV.js → chunk-62PTREG5.js} +2 -2
  285. package/dist/{chunk-3DPPDGOF.js → chunk-62SXUU5U.js} +5 -5
  286. package/dist/{chunk-3JZ3KEQQ.js → chunk-6ATXOJVQ.js} +4 -4
  287. package/dist/{chunk-7W5X3KQ2.js → chunk-6BQ3YKLD.js} +2 -2
  288. package/dist/chunk-6D5AMANO.js +50 -0
  289. package/dist/chunk-6D5AMANO.js.map +1 -0
  290. package/dist/{chunk-VPH3TENY.js → chunk-6DGNMASB.js} +2 -2
  291. package/dist/chunk-6HZYRKOB.js +94 -0
  292. package/dist/chunk-6HZYRKOB.js.map +1 -0
  293. package/dist/{chunk-NOF2FF4K.js → chunk-7CPLKAL6.js} +4 -4
  294. package/dist/{chunk-DVX4HDNP.js → chunk-7IBFGOLF.js} +3 -3
  295. package/dist/chunk-7RXL4ONS.js +1 -0
  296. package/dist/chunk-7RXL4ONS.js.map +1 -0
  297. package/dist/{chunk-EOQ6EKTS.js → chunk-7XSCEHGA.js} +7 -7
  298. package/dist/{chunk-QCYQL3ST.js → chunk-7XUQJJPK.js} +2 -2
  299. package/dist/chunk-7ZQ3KQ7J.js +49 -0
  300. package/dist/chunk-7ZQ3KQ7J.js.map +1 -0
  301. package/dist/{chunk-7VUXSNVZ.js → chunk-A4B27HYU.js} +2 -2
  302. package/dist/chunk-AC7K7IJE.js +28 -0
  303. package/dist/chunk-AC7K7IJE.js.map +1 -0
  304. package/dist/{chunk-42D7KBDH.js → chunk-AD6GRJFV.js} +3 -3
  305. package/dist/{chunk-CAOL4AIB.js → chunk-AEAVVKGY.js} +2 -2
  306. package/dist/{chunk-HHPFWEJY.js → chunk-ALDS5ISD.js} +14 -2
  307. package/dist/chunk-ALDS5ISD.js.map +1 -0
  308. package/dist/{chunk-M3XJVD5G.js → chunk-AMLHEKSV.js} +5 -5
  309. package/dist/{chunk-E5QOT7KK.js → chunk-AN37BIIO.js} +9 -9
  310. package/dist/chunk-ARPOWDEO.js +249 -0
  311. package/dist/chunk-ARPOWDEO.js.map +1 -0
  312. package/dist/{chunk-ABVIMFSD.js → chunk-AWUB3T7C.js} +2 -2
  313. package/dist/{chunk-ALOEOGQV.js → chunk-AXGQB24R.js} +2 -2
  314. package/dist/{chunk-Q4QFYGPH.js → chunk-B5SBDLRS.js} +3 -3
  315. package/dist/{chunk-G4W6HR6Q.js → chunk-B7GGLFJB.js} +5 -5
  316. package/dist/{chunk-C347NNZJ.js → chunk-B7ZAEZJW.js} +2 -2
  317. package/dist/chunk-BK3YLYL6.js +62 -0
  318. package/dist/chunk-BK3YLYL6.js.map +1 -0
  319. package/dist/{chunk-OFESNJKE.js → chunk-BQBEN44R.js} +18 -64
  320. package/dist/chunk-BQBEN44R.js.map +1 -0
  321. package/dist/{chunk-GANJRIT3.js → chunk-C3MXURP3.js} +2 -2
  322. package/dist/{chunk-4QR7LM5F.js → chunk-CTN4BRAH.js} +8 -8
  323. package/dist/{chunk-ZANWHTXH.js → chunk-CVB26LLB.js} +2 -2
  324. package/dist/{chunk-JH2XLVWM.js → chunk-CW5Z67NA.js} +2 -2
  325. package/dist/{chunk-CY4XIZNW.js → chunk-D3B4V44W.js} +2 -2
  326. package/dist/{chunk-BAC2PBOS.js → chunk-D3SIZ2CX.js} +7 -7
  327. package/dist/{chunk-QN7FVZQD.js → chunk-DHAXUVMR.js} +4 -4
  328. package/dist/chunk-DJNKSDQH.js +1 -0
  329. package/dist/chunk-DJNKSDQH.js.map +1 -0
  330. package/dist/{chunk-YGLAGY74.js → chunk-DM57YWZH.js} +2 -2
  331. package/dist/{chunk-NASLJO2R.js → chunk-DRJGHTQU.js} +2 -2
  332. package/dist/{chunk-BLZDSCIZ.js → chunk-DYHOBKPU.js} +6 -6
  333. package/dist/chunk-E6UMTR2G.js +32 -0
  334. package/dist/chunk-E6UMTR2G.js.map +1 -0
  335. package/dist/{chunk-6HXNFNOB.js → chunk-EE6DJPB7.js} +4 -4
  336. package/dist/chunk-EEK2NK4W.js +281 -0
  337. package/dist/chunk-EEK2NK4W.js.map +1 -0
  338. package/dist/{chunk-ANUO67JQ.js → chunk-EIMFA7KP.js} +2 -2
  339. package/dist/{chunk-AKE6KVQG.js → chunk-EVIQUBC6.js} +4 -4
  340. package/dist/{chunk-6X7PE5DH.js → chunk-EXKEPOL7.js} +7 -7
  341. package/dist/{chunk-LIN4A2BW.js → chunk-FKS2PNJF.js} +9 -9
  342. package/dist/{chunk-ZYZPSBNQ.js → chunk-G3G5W4OF.js} +3 -3
  343. package/dist/{chunk-J2KVF5GO.js → chunk-GBB23QLL.js} +3 -3
  344. package/dist/{chunk-KTXJQ4YJ.js → chunk-GBVNY2LG.js} +6 -6
  345. package/dist/{chunk-CJLZHW2Z.js → chunk-GCR6VE5S.js} +2 -2
  346. package/dist/chunk-GONPUJIE.js +92 -0
  347. package/dist/chunk-GONPUJIE.js.map +1 -0
  348. package/dist/{chunk-APSEM5AA.js → chunk-GS3QDXDP.js} +4 -4
  349. package/dist/{chunk-6IRZZYHF.js → chunk-H5R2EZYI.js} +7 -7
  350. package/dist/{chunk-WLSFBXGS.js → chunk-HED2CZDZ.js} +3 -3
  351. package/dist/{chunk-JVOEVTCZ.js → chunk-HQCZT6TO.js} +5 -5
  352. package/dist/{chunk-NKEFH3RS.js → chunk-HWJ3FLZY.js} +5 -5
  353. package/dist/{chunk-42TOCPXB.js → chunk-I5SIHPOG.js} +6 -6
  354. package/dist/{chunk-K6FCSB6T.js → chunk-I62SKY4E.js} +4 -4
  355. package/dist/{chunk-GOQOVKUZ.js → chunk-I6CP3ZTP.js} +3 -3
  356. package/dist/{chunk-UFGT2SFD.js → chunk-ICHM2LQA.js} +4 -4
  357. package/dist/{chunk-5IMI2XNU.js → chunk-IMMPY4Q7.js} +6 -6
  358. package/dist/chunk-IP424VZD.js +208 -0
  359. package/dist/chunk-IP424VZD.js.map +1 -0
  360. package/dist/{chunk-437HQPUN.js → chunk-IQ5MBELJ.js} +7 -7
  361. package/dist/{chunk-FRUDRDJX.js → chunk-IZ7JTG3Z.js} +4 -4
  362. package/dist/{chunk-5ZOJLYD2.js → chunk-JE6RZ5L6.js} +4 -4
  363. package/dist/{chunk-KF3Q3C3P.js → chunk-JJFLCEJJ.js} +2 -2
  364. package/dist/chunk-JO6D7YGN.js +111 -0
  365. package/dist/chunk-JO6D7YGN.js.map +1 -0
  366. package/dist/{chunk-IWMAFTXP.js → chunk-K2VDRODL.js} +2 -2
  367. package/dist/{chunk-CFDWKQZT.js → chunk-KILA7LCC.js} +4 -4
  368. package/dist/{chunk-IMYKJTVX.js → chunk-KLLHCPA2.js} +2 -2
  369. package/dist/{chunk-5UBP2DJ4.js → chunk-KZ5F52D6.js} +39 -5
  370. package/dist/chunk-KZ5F52D6.js.map +1 -0
  371. package/dist/{chunk-FORQEHRQ.js → chunk-L5GZZUTY.js} +2 -2
  372. package/dist/{chunk-N557OEZR.js → chunk-L62HC3UB.js} +2 -2
  373. package/dist/chunk-LE5JYNR7.js +58 -0
  374. package/dist/chunk-LE5JYNR7.js.map +1 -0
  375. package/dist/{chunk-2IHUFUTO.js → chunk-LR56OANO.js} +6 -6
  376. package/dist/{chunk-EAFZ3RDY.js → chunk-LSGZLFKX.js} +8 -8
  377. package/dist/{chunk-W5WYTVLS.js → chunk-LY5I3ZSV.js} +4 -4
  378. package/dist/{chunk-T77OVQEO.js → chunk-LZKS3NER.js} +2 -2
  379. package/dist/{chunk-ZAPP32GD.js → chunk-M7HYNXCU.js} +2 -2
  380. package/dist/chunk-MAYAJXO6.js +104 -0
  381. package/dist/chunk-MAYAJXO6.js.map +1 -0
  382. package/dist/{chunk-D34PZJH3.js → chunk-MBMZNSBP.js} +2 -2
  383. package/dist/{chunk-HUXAIQC5.js → chunk-MJDSXQV7.js} +2 -2
  384. package/dist/{chunk-PEVBSNCD.js → chunk-MLAIXRVL.js} +2 -2
  385. package/dist/chunk-MLIBJWQZ.js +120 -0
  386. package/dist/chunk-MLIBJWQZ.js.map +1 -0
  387. package/dist/chunk-MPUOLKFT.js +90 -0
  388. package/dist/chunk-MPUOLKFT.js.map +1 -0
  389. package/dist/{chunk-5U7LBO2V.js → chunk-MUHRPJQT.js} +4 -4
  390. package/dist/{chunk-COK65GX2.js → chunk-N2KHISGH.js} +2 -2
  391. package/dist/{chunk-UQ5GJPVZ.js → chunk-N3C4J6Z2.js} +3 -3
  392. package/dist/{chunk-PGANINQD.js → chunk-NI67M453.js} +5 -5
  393. package/dist/{chunk-P4Q7JK4L.js → chunk-NQ6P7O7C.js} +2 -2
  394. package/dist/{chunk-QVDEGBME.js → chunk-NQCTANF3.js} +7 -7
  395. package/dist/{chunk-AQPPSR4P.js → chunk-NQUYBJKJ.js} +2 -2
  396. package/dist/{chunk-LOHQLARB.js → chunk-NTCWIMIU.js} +4 -4
  397. package/dist/{chunk-Q4GAPZDA.js → chunk-O2MR6U7Q.js} +5 -5
  398. package/dist/{chunk-2FQF4CNE.js → chunk-OPP6USJC.js} +2 -2
  399. package/dist/{chunk-HNEZWVDR.js → chunk-P5C4DTO4.js} +3 -3
  400. package/dist/{chunk-6EZQLNPK.js → chunk-PGJIWCQR.js} +4 -4
  401. package/dist/{chunk-TJUWSQYQ.js → chunk-PSIUFPXA.js} +18 -1
  402. package/dist/{chunk-TJUWSQYQ.js.map → chunk-PSIUFPXA.js.map} +1 -1
  403. package/dist/{chunk-3LUT2C5M.js → chunk-QMRR35W2.js} +19 -11
  404. package/dist/chunk-QMRR35W2.js.map +1 -0
  405. package/dist/{chunk-PJNIJIE6.js → chunk-RCTHCXS6.js} +2 -2
  406. package/dist/{chunk-YBAK2WN5.js → chunk-RFMQBIE6.js} +4 -4
  407. package/dist/{chunk-EYFDIUVR.js → chunk-RZTUMBRD.js} +2 -2
  408. package/dist/{chunk-SGFRSRAL.js → chunk-S5VIN3EB.js} +4 -4
  409. package/dist/{chunk-QHIWV55K.js → chunk-SB2SEGR6.js} +3 -3
  410. package/dist/{chunk-5CP6VW5H.js → chunk-SFNVAM7I.js} +6 -6
  411. package/dist/{chunk-HOPRZEBM.js → chunk-SKIAWOUC.js} +3 -3
  412. package/dist/{chunk-KES3HNSU.js → chunk-T7NEXLW6.js} +2 -2
  413. package/dist/{chunk-EWFBDAB7.js → chunk-TOLCZ4XT.js} +2 -2
  414. package/dist/{chunk-HBH7V3IP.js → chunk-TOOEEQ46.js} +2 -2
  415. package/dist/{chunk-L7HNQRFS.js → chunk-TSID4257.js} +8 -8
  416. package/dist/chunk-TTRWOI6Z.js +1 -0
  417. package/dist/chunk-TTRWOI6Z.js.map +1 -0
  418. package/dist/{chunk-5CP5Z3YU.js → chunk-TYGVNTUP.js} +2 -2
  419. package/dist/{chunk-JG733RMP.js → chunk-TZC6KIK2.js} +5 -5
  420. package/dist/{chunk-XS6QHZMD.js → chunk-UBMH5MED.js} +9 -9
  421. package/dist/chunk-UIHPFELH.js +228 -0
  422. package/dist/chunk-UIHPFELH.js.map +1 -0
  423. package/dist/chunk-UIJU5X26.js +140 -0
  424. package/dist/chunk-UIJU5X26.js.map +1 -0
  425. package/dist/{chunk-UXOFA3ZP.js → chunk-UNCDOLF5.js} +7 -7
  426. package/dist/{chunk-UYKIUUWP.js → chunk-V2QTL6VI.js} +2 -2
  427. package/dist/{chunk-6GICMRDX.js → chunk-VMTOLAZ5.js} +5 -5
  428. package/dist/{chunk-4QGMUHAU.js → chunk-VQ7YNAK2.js} +2 -2
  429. package/dist/chunk-WBMLMLXP.js +94 -0
  430. package/dist/chunk-WBMLMLXP.js.map +1 -0
  431. package/dist/{chunk-B32XH7NK.js → chunk-WHOD6LVN.js} +3 -3
  432. package/dist/{chunk-X3EEV3OI.js → chunk-WLC56R2I.js} +7 -7
  433. package/dist/chunk-WMTW4JXT.js +345 -0
  434. package/dist/chunk-WMTW4JXT.js.map +1 -0
  435. package/dist/{chunk-X4J576GR.js → chunk-WTACWJSF.js} +2 -2
  436. package/dist/{chunk-5S5K73I6.js → chunk-WUBMJSBR.js} +2 -2
  437. package/dist/{chunk-TSEBMVYY.js → chunk-X2GWR75Q.js} +3 -3
  438. package/dist/{chunk-2VRJ577J.js → chunk-X3EB67O2.js} +4 -4
  439. package/dist/{chunk-PQGHYFUA.js → chunk-XALFZ25A.js} +4 -4
  440. package/dist/{chunk-BNBWUXT3.js → chunk-XEKJ7L7I.js} +2 -2
  441. package/dist/{chunk-YPW4HZ3Z.js → chunk-XHIBFBNP.js} +4 -4
  442. package/dist/{chunk-QAH3XILB.js → chunk-XNIHDUOP.js} +3 -3
  443. package/dist/{chunk-DILDC77M.js → chunk-XRVXQJNB.js} +3 -3
  444. package/dist/{chunk-K6WY2CHG.js → chunk-XZFTRGRW.js} +2 -2
  445. package/dist/{chunk-LLPPIO3K.js → chunk-Y4ZWPOUV.js} +2 -2
  446. package/dist/{chunk-C4NSEUT5.js → chunk-Y6IIWGZB.js} +2 -2
  447. package/dist/{chunk-TLJVUWJ5.js → chunk-YAQE7QVC.js} +3 -3
  448. package/dist/{chunk-4OUJ4ZMK.js → chunk-YDIC6LSP.js} +2 -2
  449. package/dist/chunk-YE44HUFF.js +72 -0
  450. package/dist/chunk-YE44HUFF.js.map +1 -0
  451. package/dist/{chunk-PVIQDBUN.js → chunk-YFG6XXBB.js} +2 -2
  452. package/dist/{chunk-UBVKMM3V.js → chunk-YGQ2DLIM.js} +2 -2
  453. package/dist/{chunk-T5RFH2T5.js → chunk-YKONJEI4.js} +2 -2
  454. package/dist/{chunk-ZIHSCBMN.js → chunk-YLZXIR6B.js} +7 -7
  455. package/dist/chunk-YMYJO2CZ.js +32 -0
  456. package/dist/chunk-YMYJO2CZ.js.map +1 -0
  457. package/dist/{chunk-A3DDEKLV.js → chunk-YNZUYZ2O.js} +2 -2
  458. package/dist/{chunk-YNVTUQ5B.js → chunk-YWBPASB2.js} +2 -2
  459. package/dist/{chunk-G3JFESKD.js → chunk-Z5WUSI47.js} +6 -6
  460. package/dist/{chunk-IX5ADKII.js → chunk-Z7CBLQQR.js} +3 -3
  461. package/dist/{chunk-7WE432RQ.js → chunk-ZCNR4DN5.js} +12 -12
  462. package/dist/{chunk-JRBSTOMA.js → chunk-ZDAAHCIS.js} +6 -6
  463. package/dist/{chunk-2SBQ47RI.js → chunk-ZF2LZVDO.js} +7 -7
  464. package/dist/{chunk-4IG73U2X.js → chunk-ZIA774ZW.js} +2 -2
  465. package/dist/{chunk-E5OBAS3U.js → chunk-ZLIES3XR.js} +2 -2
  466. package/dist/data-display/Alert.js +3 -3
  467. package/dist/data-display/AlertDialog.js +3 -3
  468. package/dist/data-display/AsyncStateContainer.js +9 -9
  469. package/dist/data-display/Avatar.js +4 -4
  470. package/dist/data-display/Badge.js +1 -1
  471. package/dist/data-display/CardKit.js +22 -22
  472. package/dist/data-display/Carousel.js +4 -4
  473. package/dist/data-display/Chart.js +18 -18
  474. package/dist/data-display/Chip.js +3 -3
  475. package/dist/data-display/DataGrid.js +2 -2
  476. package/dist/data-display/DataViews.js +92 -92
  477. package/dist/data-display/DayRuler.js +33 -0
  478. package/dist/data-display/DayRuler.js.map +1 -0
  479. package/dist/data-display/EmptyState.js +3 -3
  480. package/dist/data-display/ErrorState.js +2 -2
  481. package/dist/data-display/FleetMap.js +19 -19
  482. package/dist/data-display/HoverCard.js +3 -3
  483. package/dist/data-display/InteractiveTooltip.js +2 -2
  484. package/dist/data-display/LazyImage.js +4 -4
  485. package/dist/data-display/Lightbox.js +4 -4
  486. package/dist/data-display/LoadingState.js +5 -5
  487. package/dist/data-display/MapPreview.js +5 -5
  488. package/dist/data-display/RegionMap.js +6 -6
  489. package/dist/data-display/ScheduleGrid.js +30 -0
  490. package/dist/data-display/ScheduleGrid.js.map +1 -0
  491. package/dist/data-display/SectionOnboarding.js +5 -5
  492. package/dist/data-display/Sheet.js +8 -8
  493. package/dist/data-display/StatCard.js +3 -3
  494. package/dist/data-display/Stepper.js +2 -2
  495. package/dist/data-display/Table.js +5 -5
  496. package/dist/data-display/Timeline.js +2 -2
  497. package/dist/en-US.js +1 -1
  498. package/dist/feedback/ConfirmAction.js +9 -9
  499. package/dist/feedback/Dialog.js +2 -2
  500. package/dist/feedback/NotificationStatusNotice.js +4 -4
  501. package/dist/feedback/SequenceResolver.js +14 -11
  502. package/dist/feedback/Sonner.js +2 -2
  503. package/dist/feedback/StackedModal.js +4 -4
  504. package/dist/feedback/Toast.js +2 -2
  505. package/dist/feedback/TutorialOverlay.js +2 -2
  506. package/dist/form/AddressAutocomplete.js +1 -1
  507. package/dist/form/Autocomplete.js +2 -2
  508. package/dist/form/Calendar.js +7 -7
  509. package/dist/form/CategorySelect.js +9 -9
  510. package/dist/form/Command.js +6 -6
  511. package/dist/form/DateRangePicker.js +13 -13
  512. package/dist/form/Label.js +1 -1
  513. package/dist/form/Menubar.js +5 -5
  514. package/dist/form/PickerSheet.js +4 -4
  515. package/dist/form/RichTextEditor.js +5 -5
  516. package/dist/form/Switch.js +4 -4
  517. package/dist/form/total-form.js +18 -18
  518. package/dist/icons.js +1 -1
  519. package/dist/layout/Box.js +1 -1
  520. package/dist/layout/Card.js +2 -2
  521. package/dist/layout/ContentToolbar.js +8 -8
  522. package/dist/layout/Dashboard.js +2 -2
  523. package/dist/layout/Drawer.js +2 -2
  524. package/dist/layout/Screen.js +1 -1
  525. package/dist/layout/ScrollArea.js +3 -3
  526. package/dist/layout/SettingCard.js +21 -21
  527. package/dist/layout/SettingsLayout.js +8 -8
  528. package/dist/layout/Skeleton.js +2 -2
  529. package/dist/layout/Stack.js +1 -1
  530. package/dist/layout/TableFilter.js +2 -2
  531. package/dist/locales.js +27 -27
  532. package/dist/native/chunks/{chunk-FXA5DLKR.js → chunk-4G634E3Q.js} +3 -3
  533. package/dist/{chunk-XOXXG7Q5.js → native/chunks/chunk-E5UA5XVN.js} +18 -1
  534. package/dist/native/chunks/chunk-E5UA5XVN.js.map +1 -0
  535. package/dist/native/chunks/{chunk-IN3XZ7EK.js → chunk-WLG3KT2V.js} +2 -2
  536. package/dist/native/data-display/Avatar.js +1 -1
  537. package/dist/native/data-display/Badge.js +1 -1
  538. package/dist/native/data-display/Chip.js +1 -1
  539. package/dist/native/data-display/EmptyState.js +3 -3
  540. package/dist/native/data-display/ErrorState.js +2 -2
  541. package/dist/native/data-display/FleetMap.js +3 -3
  542. package/dist/native/data-display/LoadingState.js +1 -1
  543. package/dist/native/feedback/Dialog.js +1 -1
  544. package/dist/native/form/Button.js +2 -2
  545. package/dist/native/form/Checkbox.js +1 -1
  546. package/dist/native/form/Input.js +1 -1
  547. package/dist/native/form/Switch.js +1 -1
  548. package/dist/navigation/AppHeader.js +13 -13
  549. package/dist/navigation/Breadcrumbs.js +2 -2
  550. package/dist/navigation/NavigationMenu.js +6 -6
  551. package/dist/navigation/Pagination.js +2 -2
  552. package/dist/navigation/SectionNav.js +6 -6
  553. package/dist/provider.js +1 -1
  554. package/dist/pt-BR.js +24 -24
  555. package/dist/social-login-button.js +4 -4
  556. package/dist/tokens.js +6 -6
  557. package/dist/types/components/data-display/DayRuler/DayRuler.d.ts +13 -0
  558. package/dist/types/components/data-display/DayRuler/DayRuler.d.ts.map +1 -0
  559. package/dist/types/components/data-display/DayRuler/DayRuler.keyboard.d.ts +31 -0
  560. package/dist/types/components/data-display/DayRuler/DayRuler.keyboard.d.ts.map +1 -0
  561. package/dist/types/components/data-display/DayRuler/DayRuler.metrics.d.ts +86 -0
  562. package/dist/types/components/data-display/DayRuler/DayRuler.metrics.d.ts.map +1 -0
  563. package/dist/types/components/data-display/DayRuler/DayRuler.parts.d.ts +37 -0
  564. package/dist/types/components/data-display/DayRuler/DayRuler.parts.d.ts.map +1 -0
  565. package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts +45 -0
  566. package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts.map +1 -0
  567. package/dist/types/components/data-display/DayRuler/DayRuler.types.d.ts +105 -0
  568. package/dist/types/components/data-display/DayRuler/DayRuler.types.d.ts.map +1 -0
  569. package/dist/types/components/data-display/DayRuler/day-ruler-model.d.ts +26 -0
  570. package/dist/types/components/data-display/DayRuler/day-ruler-model.d.ts.map +1 -0
  571. package/dist/types/components/data-display/DayRuler/index.d.ts +4 -0
  572. package/dist/types/components/data-display/DayRuler/index.d.ts.map +1 -0
  573. package/dist/types/components/data-display/DayRuler/useRulerDrag.d.ts +45 -0
  574. package/dist/types/components/data-display/DayRuler/useRulerDrag.d.ts.map +1 -0
  575. package/dist/types/components/data-display/DayRuler/useTextFits.d.ts +14 -0
  576. package/dist/types/components/data-display/DayRuler/useTextFits.d.ts.map +1 -0
  577. package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.d.ts +15 -0
  578. package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.d.ts.map +1 -0
  579. package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.keyboard.d.ts +32 -0
  580. package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.keyboard.d.ts.map +1 -0
  581. package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.metrics.d.ts +105 -0
  582. package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.metrics.d.ts.map +1 -0
  583. package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.parts.d.ts +51 -0
  584. package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.parts.d.ts.map +1 -0
  585. package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.styles.d.ts +78 -0
  586. package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.styles.d.ts.map +1 -0
  587. package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.types.d.ts +156 -0
  588. package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.types.d.ts.map +1 -0
  589. package/dist/types/components/data-display/ScheduleGrid/ScheduleNameCell.d.ts +33 -0
  590. package/dist/types/components/data-display/ScheduleGrid/ScheduleNameCell.d.ts.map +1 -0
  591. package/dist/types/components/data-display/ScheduleGrid/drag-session.d.ts +47 -0
  592. package/dist/types/components/data-display/ScheduleGrid/drag-session.d.ts.map +1 -0
  593. package/dist/types/components/data-display/ScheduleGrid/index.d.ts +4 -0
  594. package/dist/types/components/data-display/ScheduleGrid/index.d.ts.map +1 -0
  595. package/dist/types/components/data-display/ScheduleGrid/schedule-grid-model.d.ts +18 -0
  596. package/dist/types/components/data-display/ScheduleGrid/schedule-grid-model.d.ts.map +1 -0
  597. package/dist/types/components/data-display/ScheduleGrid/schedule-name.styles.d.ts +16 -0
  598. package/dist/types/components/data-display/ScheduleGrid/schedule-name.styles.d.ts.map +1 -0
  599. package/dist/types/components/data-display/ScheduleGrid/schedule-tones.d.ts +32 -0
  600. package/dist/types/components/data-display/ScheduleGrid/schedule-tones.d.ts.map +1 -0
  601. package/dist/types/components/data-display/ScheduleGrid/useAnnouncer.d.ts +13 -0
  602. package/dist/types/components/data-display/ScheduleGrid/useAnnouncer.d.ts.map +1 -0
  603. package/dist/types/components/data-display/ScheduleGrid/useGridDrag.d.ts +56 -0
  604. package/dist/types/components/data-display/ScheduleGrid/useGridDrag.d.ts.map +1 -0
  605. package/dist/types/components/data-display/ScheduleGrid/useSidewaysScroll.d.ts +26 -0
  606. package/dist/types/components/data-display/ScheduleGrid/useSidewaysScroll.d.ts.map +1 -0
  607. package/dist/types/components/data-display/index.d.ts +2 -0
  608. package/dist/types/components/data-display/index.d.ts.map +1 -1
  609. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.d.ts.map +1 -1
  610. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.header.d.ts +33 -0
  611. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.header.d.ts.map +1 -0
  612. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.header.styles.d.ts +17 -0
  613. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.header.styles.d.ts.map +1 -0
  614. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.metrics.d.ts +12 -0
  615. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.metrics.d.ts.map +1 -1
  616. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.overview.d.ts +22 -0
  617. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.overview.d.ts.map +1 -0
  618. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.parts.d.ts +6 -18
  619. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.parts.d.ts.map +1 -1
  620. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.styles.d.ts +17 -0
  621. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.styles.d.ts.map +1 -1
  622. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.types.d.ts +56 -1
  623. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.types.d.ts.map +1 -1
  624. package/dist/types/components/feedback/SequenceResolver/index.d.ts +1 -1
  625. package/dist/types/components/feedback/SequenceResolver/index.d.ts.map +1 -1
  626. package/dist/types/components/feedback/SequenceResolver/sequence-model.d.ts +27 -3
  627. package/dist/types/components/feedback/SequenceResolver/sequence-model.d.ts.map +1 -1
  628. package/dist/types/components/feedback/SequenceResolver/useSequenceRun.d.ts +9 -0
  629. package/dist/types/components/feedback/SequenceResolver/useSequenceRun.d.ts.map +1 -1
  630. package/dist/types/copy/labels.d.ts +34 -0
  631. package/dist/types/copy/labels.d.ts.map +1 -1
  632. package/dist/types/en-US.labels.d.ts.map +1 -1
  633. package/dist/types/pt-BR.labels.d.ts.map +1 -1
  634. package/dist/types-native/copy/labels.d.ts +34 -0
  635. package/dist/types-native/copy/labels.d.ts.map +1 -1
  636. package/dist/types-native/en-US.labels.d.ts.map +1 -1
  637. package/dist/typography/Code.js +2 -2
  638. package/dist/user-avatar.js +7 -7
  639. package/dist/utility/AnimatedIcon.js +2 -2
  640. package/dist/utility/InfiniteScroll.js +3 -3
  641. package/dist/utility/InstallPrompt.js +2 -2
  642. package/dist/utility/WorkflowStep.js +6 -6
  643. package/package.json +9 -1
  644. package/src/components/data-display/DayRuler/DayRuler.keyboard.ts +94 -0
  645. package/src/components/data-display/DayRuler/DayRuler.md +84 -0
  646. package/src/components/data-display/DayRuler/DayRuler.metrics.ts +47 -0
  647. package/src/components/data-display/DayRuler/DayRuler.parts.tsx +272 -0
  648. package/src/components/data-display/DayRuler/DayRuler.styles.ts +288 -0
  649. package/src/components/data-display/DayRuler/DayRuler.tsx +130 -0
  650. package/src/components/data-display/DayRuler/DayRuler.types.ts +107 -0
  651. package/src/components/data-display/DayRuler/day-ruler-model.ts +83 -0
  652. package/src/components/data-display/DayRuler/index.ts +9 -0
  653. package/src/components/data-display/DayRuler/useRulerDrag.ts +167 -0
  654. package/src/components/data-display/DayRuler/useTextFits.ts +41 -0
  655. package/src/components/data-display/ScheduleGrid/ScheduleGrid.keyboard.ts +138 -0
  656. package/src/components/data-display/ScheduleGrid/ScheduleGrid.md +170 -0
  657. package/src/components/data-display/ScheduleGrid/ScheduleGrid.metrics.ts +75 -0
  658. package/src/components/data-display/ScheduleGrid/ScheduleGrid.parts.tsx +382 -0
  659. package/src/components/data-display/ScheduleGrid/ScheduleGrid.styles.ts +393 -0
  660. package/src/components/data-display/ScheduleGrid/ScheduleGrid.tsx +142 -0
  661. package/src/components/data-display/ScheduleGrid/ScheduleGrid.types.ts +164 -0
  662. package/src/components/data-display/ScheduleGrid/ScheduleNameCell.tsx +66 -0
  663. package/src/components/data-display/ScheduleGrid/drag-session.ts +120 -0
  664. package/src/components/data-display/ScheduleGrid/index.ts +12 -0
  665. package/src/components/data-display/ScheduleGrid/schedule-grid-model.ts +39 -0
  666. package/src/components/data-display/ScheduleGrid/schedule-name.styles.ts +96 -0
  667. package/src/components/data-display/ScheduleGrid/schedule-tones.ts +126 -0
  668. package/src/components/data-display/ScheduleGrid/useAnnouncer.ts +32 -0
  669. package/src/components/data-display/ScheduleGrid/useGridDrag.ts +137 -0
  670. package/src/components/data-display/ScheduleGrid/useSidewaysScroll.ts +126 -0
  671. package/src/components/data-display/index.ts +2 -0
  672. package/src/components/feedback/SequenceResolver/SequenceResolver.header.styles.ts +65 -0
  673. package/src/components/feedback/SequenceResolver/SequenceResolver.header.tsx +153 -0
  674. package/src/components/feedback/SequenceResolver/SequenceResolver.md +43 -2
  675. package/src/components/feedback/SequenceResolver/SequenceResolver.metrics.ts +12 -0
  676. package/src/components/feedback/SequenceResolver/SequenceResolver.overview.tsx +74 -0
  677. package/src/components/feedback/SequenceResolver/SequenceResolver.parts.tsx +37 -83
  678. package/src/components/feedback/SequenceResolver/SequenceResolver.styles.ts +47 -0
  679. package/src/components/feedback/SequenceResolver/SequenceResolver.tsx +152 -35
  680. package/src/components/feedback/SequenceResolver/SequenceResolver.types.ts +58 -1
  681. package/src/components/feedback/SequenceResolver/index.ts +2 -0
  682. package/src/components/feedback/SequenceResolver/sequence-model.ts +66 -5
  683. package/src/components/feedback/SequenceResolver/useSequenceRun.ts +28 -10
  684. package/src/copy/labels.ts +36 -0
  685. package/src/en-US.labels.ts +17 -0
  686. package/src/pt-BR.labels.ts +17 -0
  687. package/dist/chunk-3LUT2C5M.js.map +0 -1
  688. package/dist/chunk-5UBP2DJ4.js.map +0 -1
  689. package/dist/chunk-ABRUOINB.js +0 -1
  690. package/dist/chunk-HHPFWEJY.js.map +0 -1
  691. package/dist/chunk-OFESNJKE.js.map +0 -1
  692. package/dist/chunk-PXEIN3J4.js +0 -162
  693. package/dist/chunk-PXEIN3J4.js.map +0 -1
  694. package/dist/chunk-XOXXG7Q5.js.map +0 -1
  695. package/dist/native/chunks/chunk-QHW7JEPZ.js.map +0 -1
  696. /package/dist/{chunk-ABRUOINB.js.map → _internal/components/data-display/DayRuler/DayRuler.js.map} +0 -0
  697. /package/dist/{chunk-X4N6Q37Q.js.map → chunk-2CRNOJGL.js.map} +0 -0
  698. /package/dist/{chunk-L5KPBMMF.js.map → chunk-2ENMRK3U.js.map} +0 -0
  699. /package/dist/{chunk-K7IDOTSU.js.map → chunk-2KBATUOZ.js.map} +0 -0
  700. /package/dist/{chunk-VKTF3GAP.js.map → chunk-2MYSXWZQ.js.map} +0 -0
  701. /package/dist/{chunk-7QKFMMWK.js.map → chunk-2Q2DUGH7.js.map} +0 -0
  702. /package/dist/{chunk-VQ6V5TO7.js.map → chunk-2UNZG4JK.js.map} +0 -0
  703. /package/dist/{chunk-5VKHJ7PI.js.map → chunk-3B4NXP4N.js.map} +0 -0
  704. /package/dist/{chunk-HC6OZ7QK.js.map → chunk-3EIRRLCQ.js.map} +0 -0
  705. /package/dist/{chunk-MSJP2AEN.js.map → chunk-3EKY63LD.js.map} +0 -0
  706. /package/dist/{chunk-LH43GKP2.js.map → chunk-3KMP2F4R.js.map} +0 -0
  707. /package/dist/{chunk-D3W5A4N6.js.map → chunk-3STNOYYO.js.map} +0 -0
  708. /package/dist/{chunk-TVDHA7BT.js.map → chunk-3Y6NO5XL.js.map} +0 -0
  709. /package/dist/{chunk-ABQZFK7M.js.map → chunk-44PBCQ7E.js.map} +0 -0
  710. /package/dist/{chunk-PGHSNG33.js.map → chunk-4PZZJ2AE.js.map} +0 -0
  711. /package/dist/{chunk-TRAMTVIO.js.map → chunk-4QTPERAY.js.map} +0 -0
  712. /package/dist/{chunk-W2RXXF7K.js.map → chunk-4XBAEKQQ.js.map} +0 -0
  713. /package/dist/{chunk-XCUHGPPZ.js.map → chunk-55PFFAAY.js.map} +0 -0
  714. /package/dist/{chunk-LYVTJLCF.js.map → chunk-56JF5PZK.js.map} +0 -0
  715. /package/dist/{chunk-5C3JSXBK.js.map → chunk-5BVAUUWL.js.map} +0 -0
  716. /package/dist/{chunk-6OISIUZM.js.map → chunk-5F7HYYGM.js.map} +0 -0
  717. /package/dist/{chunk-JHW35C6W.js.map → chunk-5QUH53HV.js.map} +0 -0
  718. /package/dist/{chunk-DAFFZED3.js.map → chunk-5YVMFK7Y.js.map} +0 -0
  719. /package/dist/{chunk-TI4FGQYV.js.map → chunk-62PTREG5.js.map} +0 -0
  720. /package/dist/{chunk-3DPPDGOF.js.map → chunk-62SXUU5U.js.map} +0 -0
  721. /package/dist/{chunk-3JZ3KEQQ.js.map → chunk-6ATXOJVQ.js.map} +0 -0
  722. /package/dist/{chunk-7W5X3KQ2.js.map → chunk-6BQ3YKLD.js.map} +0 -0
  723. /package/dist/{chunk-VPH3TENY.js.map → chunk-6DGNMASB.js.map} +0 -0
  724. /package/dist/{chunk-NOF2FF4K.js.map → chunk-7CPLKAL6.js.map} +0 -0
  725. /package/dist/{chunk-DVX4HDNP.js.map → chunk-7IBFGOLF.js.map} +0 -0
  726. /package/dist/{chunk-EOQ6EKTS.js.map → chunk-7XSCEHGA.js.map} +0 -0
  727. /package/dist/{chunk-QCYQL3ST.js.map → chunk-7XUQJJPK.js.map} +0 -0
  728. /package/dist/{chunk-7VUXSNVZ.js.map → chunk-A4B27HYU.js.map} +0 -0
  729. /package/dist/{chunk-42D7KBDH.js.map → chunk-AD6GRJFV.js.map} +0 -0
  730. /package/dist/{chunk-CAOL4AIB.js.map → chunk-AEAVVKGY.js.map} +0 -0
  731. /package/dist/{chunk-M3XJVD5G.js.map → chunk-AMLHEKSV.js.map} +0 -0
  732. /package/dist/{chunk-E5QOT7KK.js.map → chunk-AN37BIIO.js.map} +0 -0
  733. /package/dist/{chunk-ABVIMFSD.js.map → chunk-AWUB3T7C.js.map} +0 -0
  734. /package/dist/{chunk-ALOEOGQV.js.map → chunk-AXGQB24R.js.map} +0 -0
  735. /package/dist/{chunk-Q4QFYGPH.js.map → chunk-B5SBDLRS.js.map} +0 -0
  736. /package/dist/{chunk-G4W6HR6Q.js.map → chunk-B7GGLFJB.js.map} +0 -0
  737. /package/dist/{chunk-C347NNZJ.js.map → chunk-B7ZAEZJW.js.map} +0 -0
  738. /package/dist/{chunk-GANJRIT3.js.map → chunk-C3MXURP3.js.map} +0 -0
  739. /package/dist/{chunk-4QR7LM5F.js.map → chunk-CTN4BRAH.js.map} +0 -0
  740. /package/dist/{chunk-ZANWHTXH.js.map → chunk-CVB26LLB.js.map} +0 -0
  741. /package/dist/{chunk-JH2XLVWM.js.map → chunk-CW5Z67NA.js.map} +0 -0
  742. /package/dist/{chunk-CY4XIZNW.js.map → chunk-D3B4V44W.js.map} +0 -0
  743. /package/dist/{chunk-BAC2PBOS.js.map → chunk-D3SIZ2CX.js.map} +0 -0
  744. /package/dist/{chunk-QN7FVZQD.js.map → chunk-DHAXUVMR.js.map} +0 -0
  745. /package/dist/{chunk-YGLAGY74.js.map → chunk-DM57YWZH.js.map} +0 -0
  746. /package/dist/{chunk-NASLJO2R.js.map → chunk-DRJGHTQU.js.map} +0 -0
  747. /package/dist/{chunk-BLZDSCIZ.js.map → chunk-DYHOBKPU.js.map} +0 -0
  748. /package/dist/{chunk-6HXNFNOB.js.map → chunk-EE6DJPB7.js.map} +0 -0
  749. /package/dist/{chunk-ANUO67JQ.js.map → chunk-EIMFA7KP.js.map} +0 -0
  750. /package/dist/{chunk-AKE6KVQG.js.map → chunk-EVIQUBC6.js.map} +0 -0
  751. /package/dist/{chunk-6X7PE5DH.js.map → chunk-EXKEPOL7.js.map} +0 -0
  752. /package/dist/{chunk-LIN4A2BW.js.map → chunk-FKS2PNJF.js.map} +0 -0
  753. /package/dist/{chunk-ZYZPSBNQ.js.map → chunk-G3G5W4OF.js.map} +0 -0
  754. /package/dist/{chunk-J2KVF5GO.js.map → chunk-GBB23QLL.js.map} +0 -0
  755. /package/dist/{chunk-KTXJQ4YJ.js.map → chunk-GBVNY2LG.js.map} +0 -0
  756. /package/dist/{chunk-CJLZHW2Z.js.map → chunk-GCR6VE5S.js.map} +0 -0
  757. /package/dist/{chunk-APSEM5AA.js.map → chunk-GS3QDXDP.js.map} +0 -0
  758. /package/dist/{chunk-6IRZZYHF.js.map → chunk-H5R2EZYI.js.map} +0 -0
  759. /package/dist/{chunk-WLSFBXGS.js.map → chunk-HED2CZDZ.js.map} +0 -0
  760. /package/dist/{chunk-JVOEVTCZ.js.map → chunk-HQCZT6TO.js.map} +0 -0
  761. /package/dist/{chunk-NKEFH3RS.js.map → chunk-HWJ3FLZY.js.map} +0 -0
  762. /package/dist/{chunk-42TOCPXB.js.map → chunk-I5SIHPOG.js.map} +0 -0
  763. /package/dist/{chunk-K6FCSB6T.js.map → chunk-I62SKY4E.js.map} +0 -0
  764. /package/dist/{chunk-GOQOVKUZ.js.map → chunk-I6CP3ZTP.js.map} +0 -0
  765. /package/dist/{chunk-UFGT2SFD.js.map → chunk-ICHM2LQA.js.map} +0 -0
  766. /package/dist/{chunk-5IMI2XNU.js.map → chunk-IMMPY4Q7.js.map} +0 -0
  767. /package/dist/{chunk-437HQPUN.js.map → chunk-IQ5MBELJ.js.map} +0 -0
  768. /package/dist/{chunk-FRUDRDJX.js.map → chunk-IZ7JTG3Z.js.map} +0 -0
  769. /package/dist/{chunk-5ZOJLYD2.js.map → chunk-JE6RZ5L6.js.map} +0 -0
  770. /package/dist/{chunk-KF3Q3C3P.js.map → chunk-JJFLCEJJ.js.map} +0 -0
  771. /package/dist/{chunk-IWMAFTXP.js.map → chunk-K2VDRODL.js.map} +0 -0
  772. /package/dist/{chunk-CFDWKQZT.js.map → chunk-KILA7LCC.js.map} +0 -0
  773. /package/dist/{chunk-IMYKJTVX.js.map → chunk-KLLHCPA2.js.map} +0 -0
  774. /package/dist/{chunk-FORQEHRQ.js.map → chunk-L5GZZUTY.js.map} +0 -0
  775. /package/dist/{chunk-N557OEZR.js.map → chunk-L62HC3UB.js.map} +0 -0
  776. /package/dist/{chunk-2IHUFUTO.js.map → chunk-LR56OANO.js.map} +0 -0
  777. /package/dist/{chunk-EAFZ3RDY.js.map → chunk-LSGZLFKX.js.map} +0 -0
  778. /package/dist/{chunk-W5WYTVLS.js.map → chunk-LY5I3ZSV.js.map} +0 -0
  779. /package/dist/{chunk-T77OVQEO.js.map → chunk-LZKS3NER.js.map} +0 -0
  780. /package/dist/{chunk-ZAPP32GD.js.map → chunk-M7HYNXCU.js.map} +0 -0
  781. /package/dist/{chunk-D34PZJH3.js.map → chunk-MBMZNSBP.js.map} +0 -0
  782. /package/dist/{chunk-HUXAIQC5.js.map → chunk-MJDSXQV7.js.map} +0 -0
  783. /package/dist/{chunk-PEVBSNCD.js.map → chunk-MLAIXRVL.js.map} +0 -0
  784. /package/dist/{chunk-5U7LBO2V.js.map → chunk-MUHRPJQT.js.map} +0 -0
  785. /package/dist/{chunk-COK65GX2.js.map → chunk-N2KHISGH.js.map} +0 -0
  786. /package/dist/{chunk-UQ5GJPVZ.js.map → chunk-N3C4J6Z2.js.map} +0 -0
  787. /package/dist/{chunk-PGANINQD.js.map → chunk-NI67M453.js.map} +0 -0
  788. /package/dist/{chunk-P4Q7JK4L.js.map → chunk-NQ6P7O7C.js.map} +0 -0
  789. /package/dist/{chunk-QVDEGBME.js.map → chunk-NQCTANF3.js.map} +0 -0
  790. /package/dist/{chunk-AQPPSR4P.js.map → chunk-NQUYBJKJ.js.map} +0 -0
  791. /package/dist/{chunk-LOHQLARB.js.map → chunk-NTCWIMIU.js.map} +0 -0
  792. /package/dist/{chunk-Q4GAPZDA.js.map → chunk-O2MR6U7Q.js.map} +0 -0
  793. /package/dist/{chunk-2FQF4CNE.js.map → chunk-OPP6USJC.js.map} +0 -0
  794. /package/dist/{chunk-HNEZWVDR.js.map → chunk-P5C4DTO4.js.map} +0 -0
  795. /package/dist/{chunk-6EZQLNPK.js.map → chunk-PGJIWCQR.js.map} +0 -0
  796. /package/dist/{chunk-PJNIJIE6.js.map → chunk-RCTHCXS6.js.map} +0 -0
  797. /package/dist/{chunk-YBAK2WN5.js.map → chunk-RFMQBIE6.js.map} +0 -0
  798. /package/dist/{chunk-EYFDIUVR.js.map → chunk-RZTUMBRD.js.map} +0 -0
  799. /package/dist/{chunk-SGFRSRAL.js.map → chunk-S5VIN3EB.js.map} +0 -0
  800. /package/dist/{chunk-QHIWV55K.js.map → chunk-SB2SEGR6.js.map} +0 -0
  801. /package/dist/{chunk-5CP6VW5H.js.map → chunk-SFNVAM7I.js.map} +0 -0
  802. /package/dist/{chunk-HOPRZEBM.js.map → chunk-SKIAWOUC.js.map} +0 -0
  803. /package/dist/{chunk-KES3HNSU.js.map → chunk-T7NEXLW6.js.map} +0 -0
  804. /package/dist/{chunk-EWFBDAB7.js.map → chunk-TOLCZ4XT.js.map} +0 -0
  805. /package/dist/{chunk-HBH7V3IP.js.map → chunk-TOOEEQ46.js.map} +0 -0
  806. /package/dist/{chunk-L7HNQRFS.js.map → chunk-TSID4257.js.map} +0 -0
  807. /package/dist/{chunk-5CP5Z3YU.js.map → chunk-TYGVNTUP.js.map} +0 -0
  808. /package/dist/{chunk-JG733RMP.js.map → chunk-TZC6KIK2.js.map} +0 -0
  809. /package/dist/{chunk-XS6QHZMD.js.map → chunk-UBMH5MED.js.map} +0 -0
  810. /package/dist/{chunk-UXOFA3ZP.js.map → chunk-UNCDOLF5.js.map} +0 -0
  811. /package/dist/{chunk-UYKIUUWP.js.map → chunk-V2QTL6VI.js.map} +0 -0
  812. /package/dist/{chunk-6GICMRDX.js.map → chunk-VMTOLAZ5.js.map} +0 -0
  813. /package/dist/{chunk-4QGMUHAU.js.map → chunk-VQ7YNAK2.js.map} +0 -0
  814. /package/dist/{chunk-B32XH7NK.js.map → chunk-WHOD6LVN.js.map} +0 -0
  815. /package/dist/{chunk-X3EEV3OI.js.map → chunk-WLC56R2I.js.map} +0 -0
  816. /package/dist/{chunk-X4J576GR.js.map → chunk-WTACWJSF.js.map} +0 -0
  817. /package/dist/{chunk-5S5K73I6.js.map → chunk-WUBMJSBR.js.map} +0 -0
  818. /package/dist/{chunk-TSEBMVYY.js.map → chunk-X2GWR75Q.js.map} +0 -0
  819. /package/dist/{chunk-2VRJ577J.js.map → chunk-X3EB67O2.js.map} +0 -0
  820. /package/dist/{chunk-PQGHYFUA.js.map → chunk-XALFZ25A.js.map} +0 -0
  821. /package/dist/{chunk-BNBWUXT3.js.map → chunk-XEKJ7L7I.js.map} +0 -0
  822. /package/dist/{chunk-YPW4HZ3Z.js.map → chunk-XHIBFBNP.js.map} +0 -0
  823. /package/dist/{chunk-QAH3XILB.js.map → chunk-XNIHDUOP.js.map} +0 -0
  824. /package/dist/{chunk-DILDC77M.js.map → chunk-XRVXQJNB.js.map} +0 -0
  825. /package/dist/{chunk-K6WY2CHG.js.map → chunk-XZFTRGRW.js.map} +0 -0
  826. /package/dist/{chunk-LLPPIO3K.js.map → chunk-Y4ZWPOUV.js.map} +0 -0
  827. /package/dist/{chunk-C4NSEUT5.js.map → chunk-Y6IIWGZB.js.map} +0 -0
  828. /package/dist/{chunk-TLJVUWJ5.js.map → chunk-YAQE7QVC.js.map} +0 -0
  829. /package/dist/{chunk-4OUJ4ZMK.js.map → chunk-YDIC6LSP.js.map} +0 -0
  830. /package/dist/{chunk-PVIQDBUN.js.map → chunk-YFG6XXBB.js.map} +0 -0
  831. /package/dist/{chunk-UBVKMM3V.js.map → chunk-YGQ2DLIM.js.map} +0 -0
  832. /package/dist/{chunk-T5RFH2T5.js.map → chunk-YKONJEI4.js.map} +0 -0
  833. /package/dist/{chunk-ZIHSCBMN.js.map → chunk-YLZXIR6B.js.map} +0 -0
  834. /package/dist/{chunk-A3DDEKLV.js.map → chunk-YNZUYZ2O.js.map} +0 -0
  835. /package/dist/{chunk-YNVTUQ5B.js.map → chunk-YWBPASB2.js.map} +0 -0
  836. /package/dist/{chunk-G3JFESKD.js.map → chunk-Z5WUSI47.js.map} +0 -0
  837. /package/dist/{chunk-IX5ADKII.js.map → chunk-Z7CBLQQR.js.map} +0 -0
  838. /package/dist/{chunk-7WE432RQ.js.map → chunk-ZCNR4DN5.js.map} +0 -0
  839. /package/dist/{chunk-JRBSTOMA.js.map → chunk-ZDAAHCIS.js.map} +0 -0
  840. /package/dist/{chunk-2SBQ47RI.js.map → chunk-ZF2LZVDO.js.map} +0 -0
  841. /package/dist/{chunk-4IG73U2X.js.map → chunk-ZIA774ZW.js.map} +0 -0
  842. /package/dist/{chunk-E5OBAS3U.js.map → chunk-ZLIES3XR.js.map} +0 -0
  843. /package/dist/native/chunks/{chunk-FXA5DLKR.js.map → chunk-4G634E3Q.js.map} +0 -0
  844. /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
- | { item: I; outcome: 'resolved'; result: R; alsoResolved?: number }
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
- /** A fresh run over `queue` (a repeated key counts once). */
51
- export function startRun<I extends SequenceItem, R>(queue: readonly I[]): RunState<I, R> {
52
- return { visits: [], ahead: dedupe(queue, new Set()), held: [] };
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> = alsoResolved > 0 ? { item, outcome: 'resolved', result, alsoResolved } : { item, outcome: 'resolved', result };
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
  }
@@ -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
  }
@@ -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`,
@@ -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":[]}
@@ -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":"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","names":[]}
@@ -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":[]}