@12-apps/ui 6.86.2 → 6.87.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-ABVIMFSD.js → chunk-AWUB3T7C.js} +2 -2
  311. package/dist/{chunk-ALOEOGQV.js → chunk-AXGQB24R.js} +2 -2
  312. package/dist/chunk-B3SL5FP2.js +94 -0
  313. package/dist/chunk-B3SL5FP2.js.map +1 -0
  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-D6JKCCRQ.js +120 -0
  328. package/dist/chunk-D6JKCCRQ.js.map +1 -0
  329. package/dist/{chunk-QN7FVZQD.js → chunk-DHAXUVMR.js} +4 -4
  330. package/dist/chunk-DJNKSDQH.js +1 -0
  331. package/dist/chunk-DJNKSDQH.js.map +1 -0
  332. package/dist/{chunk-YGLAGY74.js → chunk-DM57YWZH.js} +2 -2
  333. package/dist/{chunk-NASLJO2R.js → chunk-DRJGHTQU.js} +2 -2
  334. package/dist/{chunk-BLZDSCIZ.js → chunk-DYHOBKPU.js} +6 -6
  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-I7CVC2DW.js +229 -0
  357. package/dist/chunk-I7CVC2DW.js.map +1 -0
  358. package/dist/{chunk-UFGT2SFD.js → chunk-ICHM2LQA.js} +4 -4
  359. package/dist/{chunk-5IMI2XNU.js → chunk-IMMPY4Q7.js} +6 -6
  360. package/dist/chunk-IP424VZD.js +208 -0
  361. package/dist/chunk-IP424VZD.js.map +1 -0
  362. package/dist/{chunk-437HQPUN.js → chunk-IQ5MBELJ.js} +7 -7
  363. package/dist/{chunk-FRUDRDJX.js → chunk-IZ7JTG3Z.js} +4 -4
  364. package/dist/{chunk-5ZOJLYD2.js → chunk-JE6RZ5L6.js} +4 -4
  365. package/dist/{chunk-KF3Q3C3P.js → chunk-JJFLCEJJ.js} +2 -2
  366. package/dist/chunk-JO6D7YGN.js +111 -0
  367. package/dist/chunk-JO6D7YGN.js.map +1 -0
  368. package/dist/{chunk-IWMAFTXP.js → chunk-K2VDRODL.js} +2 -2
  369. package/dist/{chunk-CFDWKQZT.js → chunk-KILA7LCC.js} +4 -4
  370. package/dist/{chunk-IMYKJTVX.js → chunk-KLLHCPA2.js} +2 -2
  371. package/dist/{chunk-5UBP2DJ4.js → chunk-KZ5F52D6.js} +39 -5
  372. package/dist/chunk-KZ5F52D6.js.map +1 -0
  373. package/dist/{chunk-FORQEHRQ.js → chunk-L5GZZUTY.js} +2 -2
  374. package/dist/{chunk-N557OEZR.js → chunk-L62HC3UB.js} +2 -2
  375. package/dist/chunk-LE5JYNR7.js +58 -0
  376. package/dist/chunk-LE5JYNR7.js.map +1 -0
  377. package/dist/{chunk-2IHUFUTO.js → chunk-LR56OANO.js} +6 -6
  378. package/dist/{chunk-EAFZ3RDY.js → chunk-LSGZLFKX.js} +8 -8
  379. package/dist/{chunk-W5WYTVLS.js → chunk-LY5I3ZSV.js} +4 -4
  380. package/dist/{chunk-T77OVQEO.js → chunk-LZKS3NER.js} +2 -2
  381. package/dist/{chunk-ZAPP32GD.js → chunk-M7HYNXCU.js} +2 -2
  382. package/dist/chunk-MAYAJXO6.js +104 -0
  383. package/dist/chunk-MAYAJXO6.js.map +1 -0
  384. package/dist/{chunk-D34PZJH3.js → chunk-MBMZNSBP.js} +2 -2
  385. package/dist/{chunk-HUXAIQC5.js → chunk-MJDSXQV7.js} +2 -2
  386. package/dist/{chunk-PEVBSNCD.js → chunk-MLAIXRVL.js} +2 -2
  387. package/dist/chunk-MQVYJVKV.js +32 -0
  388. package/dist/chunk-MQVYJVKV.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-QQFFE3CQ.js +90 -0
  406. package/dist/chunk-QQFFE3CQ.js.map +1 -0
  407. package/dist/{chunk-PJNIJIE6.js → chunk-RCTHCXS6.js} +2 -2
  408. package/dist/{chunk-YBAK2WN5.js → chunk-RFMQBIE6.js} +4 -4
  409. package/dist/{chunk-EYFDIUVR.js → chunk-RZTUMBRD.js} +2 -2
  410. package/dist/{chunk-SGFRSRAL.js → chunk-S5VIN3EB.js} +4 -4
  411. package/dist/{chunk-QHIWV55K.js → chunk-SB2SEGR6.js} +3 -3
  412. package/dist/{chunk-5CP6VW5H.js → chunk-SFNVAM7I.js} +6 -6
  413. package/dist/{chunk-HOPRZEBM.js → chunk-SKIAWOUC.js} +3 -3
  414. package/dist/{chunk-KES3HNSU.js → chunk-T7NEXLW6.js} +2 -2
  415. package/dist/{chunk-EWFBDAB7.js → chunk-TOLCZ4XT.js} +2 -2
  416. package/dist/{chunk-HBH7V3IP.js → chunk-TOOEEQ46.js} +2 -2
  417. package/dist/{chunk-L7HNQRFS.js → chunk-TSID4257.js} +8 -8
  418. package/dist/chunk-TTRWOI6Z.js +1 -0
  419. package/dist/chunk-TTRWOI6Z.js.map +1 -0
  420. package/dist/{chunk-5CP5Z3YU.js → chunk-TYGVNTUP.js} +2 -2
  421. package/dist/{chunk-JG733RMP.js → chunk-TZC6KIK2.js} +5 -5
  422. package/dist/{chunk-XS6QHZMD.js → chunk-UBMH5MED.js} +9 -9
  423. package/dist/chunk-UIHPFELH.js +228 -0
  424. package/dist/chunk-UIHPFELH.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-WCETCAZO.js +140 -0
  430. package/dist/chunk-WCETCAZO.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-X4J576GR.js → chunk-WTACWJSF.js} +2 -2
  434. package/dist/{chunk-5S5K73I6.js → chunk-WUBMJSBR.js} +2 -2
  435. package/dist/{chunk-TSEBMVYY.js → chunk-X2GWR75Q.js} +3 -3
  436. package/dist/{chunk-2VRJ577J.js → chunk-X3EB67O2.js} +4 -4
  437. package/dist/{chunk-PQGHYFUA.js → chunk-XALFZ25A.js} +4 -4
  438. package/dist/{chunk-BNBWUXT3.js → chunk-XEKJ7L7I.js} +2 -2
  439. package/dist/{chunk-YPW4HZ3Z.js → chunk-XHIBFBNP.js} +4 -4
  440. package/dist/{chunk-QAH3XILB.js → chunk-XNIHDUOP.js} +3 -3
  441. package/dist/{chunk-DILDC77M.js → chunk-XRVXQJNB.js} +3 -3
  442. package/dist/{chunk-K6WY2CHG.js → chunk-XZFTRGRW.js} +2 -2
  443. package/dist/{chunk-LLPPIO3K.js → chunk-Y4ZWPOUV.js} +2 -2
  444. package/dist/{chunk-C4NSEUT5.js → chunk-Y6IIWGZB.js} +2 -2
  445. package/dist/{chunk-TLJVUWJ5.js → chunk-YAQE7QVC.js} +3 -3
  446. package/dist/{chunk-4OUJ4ZMK.js → chunk-YDIC6LSP.js} +2 -2
  447. package/dist/chunk-YE44HUFF.js +72 -0
  448. package/dist/chunk-YE44HUFF.js.map +1 -0
  449. package/dist/{chunk-PVIQDBUN.js → chunk-YFG6XXBB.js} +2 -2
  450. package/dist/{chunk-UBVKMM3V.js → chunk-YGQ2DLIM.js} +2 -2
  451. package/dist/{chunk-T5RFH2T5.js → chunk-YKONJEI4.js} +2 -2
  452. package/dist/{chunk-ZIHSCBMN.js → chunk-YLZXIR6B.js} +7 -7
  453. package/dist/chunk-YMYJO2CZ.js +32 -0
  454. package/dist/chunk-YMYJO2CZ.js.map +1 -0
  455. package/dist/{chunk-A3DDEKLV.js → chunk-YNZUYZ2O.js} +2 -2
  456. package/dist/chunk-YSUJCKEE.js +341 -0
  457. package/dist/chunk-YSUJCKEE.js.map +1 -0
  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 +75 -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 +136 -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 +140 -0
  657. package/src/components/data-display/ScheduleGrid/ScheduleGrid.metrics.ts +75 -0
  658. package/src/components/data-display/ScheduleGrid/ScheduleGrid.parts.tsx +357 -0
  659. package/src/components/data-display/ScheduleGrid/ScheduleGrid.styles.ts +386 -0
  660. package/src/components/data-display/ScheduleGrid/ScheduleGrid.tsx +142 -0
  661. package/src/components/data-display/ScheduleGrid/ScheduleGrid.types.ts +144 -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
@@ -0,0 +1,167 @@
1
+ import type * as React from 'react';
2
+ import { useCallback, useRef, useState } from 'react';
3
+
4
+ import { useDragWindow, useTrailingClick } from '../ScheduleGrid/drag-session';
5
+ import { DAY_RULER_METRICS as M } from './DayRuler.metrics';
6
+ import { createdSpan, hourAt, moved, resized } from './day-ruler-model';
7
+ import type { DayRulerBlock, RulerHour } from './DayRuler.types';
8
+
9
+ type Mode = 'create' | 'move' | 'start' | 'end';
10
+
11
+ /** The gesture in progress: the block as it would land if released now. */
12
+ export interface RulerDrag {
13
+ mode: Mode;
14
+ rowId: string;
15
+ /** Absent for a create. */
16
+ blockId?: string;
17
+ start: RulerHour;
18
+ end: RulerHour;
19
+ moved: boolean;
20
+ }
21
+
22
+ interface Origin {
23
+ /** The track's box, read once when the drag starts (px from the viewport's left, and across). */
24
+ boxStart: number;
25
+ boxSize: number;
26
+ /** The hour pressed. */
27
+ anchor: RulerHour;
28
+ /** The block's own hours before the drag (a create has none). */
29
+ start: RulerHour;
30
+ end: RulerHour;
31
+ }
32
+
33
+ interface Scale {
34
+ from: RulerHour;
35
+ to: RulerHour;
36
+ snap: number;
37
+ createHours: number;
38
+ }
39
+
40
+ interface RulerHandlers {
41
+ onCreate?: (rowId: string, start: RulerHour, end: RulerHour) => void;
42
+ onMove?: (blockId: string, start: RulerHour, end: RulerHour) => void;
43
+ onResize?: (blockId: string, start: RulerHour, end: RulerHour) => void;
44
+ }
45
+
46
+ export interface RulerDragApi {
47
+ drag: RulerDrag | null;
48
+ /** Pointer down on a row's empty track. */
49
+ startCreate: (event: React.PointerEvent<HTMLElement>, rowId: string) => void;
50
+ /** Pointer down on a block's middle (`move`) or on one of its end handles. */
51
+ startBlock: (event: React.PointerEvent<HTMLElement>, rowId: string, block: DayRulerBlock, mode: 'move' | 'start' | 'end') => void;
52
+ /** True once, for the click a finished drag leaves behind. */
53
+ takeClick: () => boolean;
54
+ }
55
+
56
+ /** A drag starts only for the primary button of a mouse or a pen: touch scrolls, and taps are clicks. */
57
+ function startsDrag(event: React.PointerEvent): boolean {
58
+ return event.pointerType !== 'touch' && (event.button ?? 0) === 0;
59
+ }
60
+
61
+ /** The track an event happened on — a block's or a handle's included. */
62
+ function trackOf(target: EventTarget | null): HTMLElement | null {
63
+ return target instanceof Element ? target.closest<HTMLElement>('[data-dr-track]') : null;
64
+ }
65
+
66
+ /** The block where the pointer is now, from where the drag began. */
67
+ function next(drag: RulerDrag, origin: Origin, x: number, scale: Scale): RulerDrag {
68
+ const h = hourAt(x, origin.boxStart, origin.boxSize, scale.from, scale.to, scale.snap);
69
+ let span: [RulerHour, RulerHour];
70
+ if (drag.mode === 'create') span = [Math.min(origin.anchor, h), Math.max(origin.anchor, h)];
71
+ else if (drag.mode === 'move') span = moved(origin.start, origin.end, h - origin.anchor, scale.from, scale.to);
72
+ else span = resized(origin.start, origin.end, drag.mode, h, M.minHours, scale.from, scale.to);
73
+ const changed = span[0] !== drag.start || span[1] !== drag.end;
74
+ return changed ? { ...drag, start: span[0], end: span[1], moved: true } : drag;
75
+ }
76
+
77
+ /** Report the finished gesture. Returns whether the trailing click must be ignored. */
78
+ function finish(drag: RulerDrag, origin: Origin, scale: Scale, handlers: RulerHandlers): boolean {
79
+ if (drag.mode === 'create') {
80
+ const [start, end] = createdSpan(drag.start, drag.end, M.minHours, scale.createHours, scale.to);
81
+ handlers.onCreate?.(drag.rowId, start, end);
82
+ return true;
83
+ }
84
+ const changed = drag.start !== origin.start || drag.end !== origin.end;
85
+ if (drag.blockId && changed) {
86
+ if (drag.mode === 'move') handlers.onMove?.(drag.blockId, drag.start, drag.end);
87
+ else handlers.onResize?.(drag.blockId, drag.start, drag.end);
88
+ }
89
+ // A handle pressed in place is not the block's click; a block moved and
90
+ // brought back is not one either.
91
+ return drag.mode !== 'move' || drag.moved;
92
+ }
93
+
94
+ /**
95
+ * Click-and-drag on the day ruler (FUT-3825): create on an empty track (a
96
+ * click alone is `createHours`), slide a block by its middle, change its start
97
+ * or end by its handles — every hour snapped to `snapMinutes` and kept on the
98
+ * ruler. Window listeners while a drag runs (a release anywhere commits); the
99
+ * hour comes from the pointer's x over the track's box as it was when the drag
100
+ * started. Escape, the window losing focus, or a move with no button down
101
+ * abandons the drag and puts the block back.
102
+ */
103
+ export function useRulerDrag(scale: Scale, handlers: RulerHandlers): RulerDragApi {
104
+ const [drag, setDrag] = useState<RulerDrag | null>(null);
105
+ const live = useRef<{ drag: RulerDrag; origin: Origin } | null>(null);
106
+ const latest = useRef({ scale, handlers });
107
+ latest.current = { scale, handlers };
108
+ const click = useTrailingClick();
109
+
110
+ const set = useCallback((value: { drag: RulerDrag; origin: Origin } | null) => {
111
+ live.current = value;
112
+ setDrag(value?.drag ?? null);
113
+ }, []);
114
+
115
+ useDragWindow(drag !== null, {
116
+ move: (event) => {
117
+ const current = live.current;
118
+ if (!current) return;
119
+ const updated = next(current.drag, current.origin, event.clientX, latest.current.scale);
120
+ if (updated !== current.drag) set({ drag: updated, origin: current.origin });
121
+ },
122
+ up: () => {
123
+ const current = live.current;
124
+ set(null);
125
+ if (current && finish(current.drag, current.origin, latest.current.scale, latest.current.handlers)) click.arm(true);
126
+ },
127
+ // Abandoned: nothing reported, the block back at its own hours, the
128
+ // preview gone. With the button still down, its release is not a click.
129
+ abort: (reason) => {
130
+ set(null);
131
+ if (reason === 'escape' || reason === 'blur') click.arm(false);
132
+ },
133
+ });
134
+
135
+ const begin = (event: React.PointerEvent<HTMLElement>, value: Omit<RulerDrag, 'moved'>, block?: DayRulerBlock): void => {
136
+ const track = trackOf(event.currentTarget);
137
+ if (!track) return;
138
+ const { left: boxStart, width: boxSize } = track.getBoundingClientRect();
139
+ const { from, to, snap } = latest.current.scale;
140
+ const anchor = hourAt(event.clientX, boxStart, boxSize, from, to, snap);
141
+ const start = block ? block.start : anchor;
142
+ const end = block ? block.end : anchor;
143
+ click.reset();
144
+ set({
145
+ drag: { ...value, start, end, moved: false },
146
+ origin: { boxStart, boxSize, anchor, start, end },
147
+ });
148
+ };
149
+
150
+ const startCreate = (event: React.PointerEvent<HTMLElement>, rowId: string): void => {
151
+ if (!startsDrag(event) || event.target !== event.currentTarget) return;
152
+ event.preventDefault();
153
+ begin(event, { mode: 'create', rowId, start: 0, end: 0 });
154
+ };
155
+ const startBlock = (
156
+ event: React.PointerEvent<HTMLElement>,
157
+ rowId: string,
158
+ block: DayRulerBlock,
159
+ mode: 'move' | 'start' | 'end',
160
+ ): void => {
161
+ event.stopPropagation();
162
+ if (!startsDrag(event)) return;
163
+ begin(event, { mode, rowId, blockId: block.id, start: block.start, end: block.end }, block);
164
+ };
165
+
166
+ return { drag, startCreate, startBlock, takeClick: click.take };
167
+ }
@@ -0,0 +1,41 @@
1
+ import type * as React from 'react';
2
+ import { useLayoutEffect, useState } from 'react';
3
+
4
+ /**
5
+ * Whether a block's full text fits it, by pixels (FUT-3825): the full text's
6
+ * own width against the room the block leaves it, re-read whenever the block
7
+ * is resized. A wide block on a narrow ruler keeps "18:00–23:00"; only one too
8
+ * short for it says its start.
9
+ *
10
+ * The full text is measured with its span shown for the measurement alone
11
+ * (synchronously, so nothing is painted), even while the short text stands in
12
+ * for it. Where nothing can be measured (no `ResizeObserver`) it answers
13
+ * `fallback`.
14
+ */
15
+ export function useTextFits(block: React.RefObject<HTMLElement | null>, text: string, fallback: boolean): boolean {
16
+ const [fits, setFits] = useState(fallback);
17
+
18
+ useLayoutEffect(() => {
19
+ const el = block.current;
20
+ if (!el || typeof ResizeObserver === 'undefined') return undefined;
21
+ const measure = (): void => {
22
+ const full = el.querySelector<HTMLElement>('[data-dr-text="full"]');
23
+ if (!full) return;
24
+ const shown = full.style.display;
25
+ full.style.display = 'inline';
26
+ const range = el.ownerDocument.createRange();
27
+ range.selectNodeContents(full);
28
+ const width = range.getBoundingClientRect().width;
29
+ full.style.display = shown;
30
+ const style = getComputedStyle(el);
31
+ const room = el.clientWidth - Number.parseFloat(style.paddingLeft) - Number.parseFloat(style.paddingRight);
32
+ if (room > 0) setFits(width <= room + 0.5);
33
+ };
34
+ measure();
35
+ const observer = new ResizeObserver(measure);
36
+ observer.observe(el);
37
+ return () => observer.disconnect();
38
+ }, [block, text]);
39
+
40
+ return fits;
41
+ }
@@ -0,0 +1,138 @@
1
+ import type * as React from 'react';
2
+
3
+ import type { ScheduleGridLabels } from '../../../copy/labels';
4
+ import { isOpen, stepDay } from './schedule-grid-model';
5
+ import type { CellAbilities } from './ScheduleGrid.parts';
6
+ import type { ScheduleGridBlock, ScheduleGridCell, ScheduleGridColumn, ScheduleGridRow } from './ScheduleGrid.types';
7
+
8
+ /**
9
+ * THE GRID'S KEYBOARD (FUT-3825). Every empty cell's "+" and every block is a
10
+ * button in the tab order; on top of that:
11
+ * - arrows move focus to the nearest focusable cell that way;
12
+ * - Shift+←/→ on a copyable block copies it one day;
13
+ * - Alt+←/→ on a movable block moves it one day (focus follows it);
14
+ * either on a block that cannot do it says so (`notMovable`), a taken or
15
+ * closed day is refused; each is read by the live region. With Ctrl or Meta
16
+ * the key is not the grid's.
17
+ */
18
+ export interface GridKeyContext {
19
+ root: HTMLElement;
20
+ rows: readonly ScheduleGridRow[];
21
+ columns: readonly ScheduleGridColumn[];
22
+ cell: (rowId: string, day: number) => ScheduleGridCell;
23
+ can: CellAbilities;
24
+ onCopy?: (blockId: string, days: number[]) => void;
25
+ onMove?: (blockId: string, toRowId: string, toDay: number) => void;
26
+ labels: ScheduleGridLabels;
27
+ say: (text: string) => void;
28
+ /** Wait for the block at its new day and focus it there. */
29
+ follow: (blockId: string, day: number) => void;
30
+ }
31
+
32
+ /** Every focusable part of the grid (empty cells' buttons and blocks). */
33
+ export function focusables(root: HTMLElement): HTMLElement[] {
34
+ return Array.from(root.querySelectorAll<HTMLElement>('[data-sg-focus]'));
35
+ }
36
+
37
+ /** Focus the first focusable of the cell at (`rowId`, `day`); false when it has none. */
38
+ function focusCell(root: HTMLElement, rowId: string, day: number): boolean {
39
+ const target = focusables(root).find((el) => el.dataset.sgRow === rowId && Number(el.dataset.sgDay) === day);
40
+ target?.focus();
41
+ return Boolean(target);
42
+ }
43
+
44
+ interface Arrow {
45
+ horizontal: boolean;
46
+ step: -1 | 1;
47
+ }
48
+
49
+ function arrowOf(key: string): Arrow | null {
50
+ if (key === 'ArrowLeft') return { horizontal: true, step: -1 };
51
+ if (key === 'ArrowRight') return { horizontal: true, step: 1 };
52
+ if (key === 'ArrowUp') return { horizontal: false, step: -1 };
53
+ if (key === 'ArrowDown') return { horizontal: false, step: 1 };
54
+ return null;
55
+ }
56
+
57
+ /** Move focus `arrow`-wards to the nearest cell that has something to focus; a closed or read-only one is passed over. */
58
+ function moveFocus(ctx: GridKeyContext, from: HTMLElement, arrow: Arrow): boolean {
59
+ const rowIndex = ctx.rows.findIndex((row) => row.id === from.dataset.sgRow);
60
+ const day = Number(from.dataset.sgDay);
61
+ if (rowIndex < 0) return false;
62
+ for (let distance = 1; ; distance += 1) {
63
+ const offset = arrow.step * distance;
64
+ const nextDay = arrow.horizontal ? day + offset : day;
65
+ const row = ctx.rows[arrow.horizontal ? rowIndex : rowIndex + offset];
66
+ if (!row || nextDay < 0 || nextDay >= ctx.columns.length) return false;
67
+ if (focusCell(ctx.root, row.id, nextDay)) return true;
68
+ }
69
+ }
70
+
71
+ /** Which gesture a modified arrow asks of this block, if the grid allows it. */
72
+ function gestureOf(event: React.KeyboardEvent, block: ScheduleGridBlock, can: CellAbilities): 'copy' | 'move' | null {
73
+ if (event.shiftKey && !event.altKey) return can.copy && block.copyable ? 'copy' : null;
74
+ if (event.altKey && !event.shiftKey) return can.move && block.movable ? 'move' : null;
75
+ return null;
76
+ }
77
+
78
+ /** The block a key landed on, with its row — or nothing. */
79
+ function blockUnder(ctx: GridKeyContext, el: HTMLElement): { block: ScheduleGridBlock; row: ScheduleGridRow; day: number } | null {
80
+ const rowId = el.dataset.sgRow ?? '';
81
+ const day = Number(el.dataset.sgDay);
82
+ const block = ctx.cell(rowId, day).blocks.find((entry) => entry.id === el.dataset.sgBlock);
83
+ const row = ctx.rows.find((entry) => entry.id === rowId);
84
+ return block && row ? { block, row, day } : null;
85
+ }
86
+
87
+ /** The open day one step away, with its column — or nothing past either end or on a taken / closed day. */
88
+ function openNeighbour(ctx: GridKeyContext, rowId: string, day: number, step: -1 | 1) {
89
+ const target = stepDay(day, step, ctx.columns.length);
90
+ if (target === undefined) return null;
91
+ const column = ctx.columns[target];
92
+ return column && isOpen(ctx.cell(rowId, target)) ? { day: target, column } : null;
93
+ }
94
+
95
+ /**
96
+ * Shift/Alt+←/→ on a block. Returns whether the key was the grid's: a block
97
+ * that cannot be copied or moved that way refuses it aloud, and the key goes
98
+ * no further (Alt+← would otherwise be the browser's Back).
99
+ */
100
+ function blockKey(ctx: GridKeyContext, el: HTMLElement, event: React.KeyboardEvent, step: -1 | 1): boolean {
101
+ const under = blockUnder(ctx, el);
102
+ if (!under) return false;
103
+ const gesture = gestureOf(event, under.block, ctx.can);
104
+ const { block, row, day } = under;
105
+ const target = gesture ? openNeighbour(ctx, row.id, day, step) : null;
106
+ if (!gesture) {
107
+ ctx.say(ctx.labels.notMovable);
108
+ } else if (!target) {
109
+ ctx.say(ctx.labels.refused);
110
+ } else if (gesture === 'copy') {
111
+ ctx.onCopy?.(block.id, [target.day]);
112
+ ctx.say(ctx.labels.copied(block.label, target.column.label));
113
+ } else {
114
+ ctx.follow(block.id, target.day);
115
+ ctx.onMove?.(block.id, row.id, target.day);
116
+ ctx.say(ctx.labels.moved(block.label, row.label, target.column.label));
117
+ }
118
+ return true;
119
+ }
120
+
121
+ /** Shift OR Alt (not both) and no Ctrl or Meta: a key the grid answers for a block, as the ruler does. */
122
+ const isBlockGesture = (event: React.KeyboardEvent): boolean =>
123
+ event.shiftKey !== event.altKey && !event.ctrlKey && !event.metaKey;
124
+
125
+ const hasModifier = (event: React.KeyboardEvent): boolean => event.shiftKey || event.altKey || event.ctrlKey || event.metaKey;
126
+
127
+ /** The grid's `onKeyDown`. */
128
+ export function handleGridKey(event: React.KeyboardEvent, ctx: GridKeyContext): void {
129
+ const el = (event.target as HTMLElement).closest<HTMLElement>('[data-sg-focus]');
130
+ const arrow = arrowOf(event.key);
131
+ if (!el || !arrow) return;
132
+ const onBlock = el.dataset.sgBlock !== undefined;
133
+ if (onBlock && arrow.horizontal && isBlockGesture(event)) {
134
+ if (blockKey(ctx, el, event, arrow.step)) event.preventDefault();
135
+ return;
136
+ }
137
+ if (!hasModifier(event) && moveFocus(ctx, el, arrow)) event.preventDefault();
138
+ }
@@ -0,0 +1,140 @@
1
+ # ScheduleGrid
2
+
3
+ People (or any resource) as **rows**, days as **columns**, and **blocks** with a start and an
4
+ end in the cells — the week grid of a staff schedule (FUT-3825, Turnos prototype D). The grid
5
+ reports gestures; the hours, weekly limits, refusals and toasts are the host's.
6
+
7
+ ```
8
+ Hoje · Seg 19/10 Ter 20/10 Qua 21/10 horas
9
+ 1 turno 1 turno 1 turno
10
+ ENTREGAS
11
+ Luiz [20:39–00:00 ] [ + ] [ + ] 3h15
12
+ [Atrasado ]
13
+ Kelly [Em turno ] [ + ] [|11:00–15:00 |] 4h
14
+ [desde 08:26 ] [|↻ toda semana |]
15
+ ```
16
+
17
+ **When to use it.** A week (or any short run of days) of people × days where a person places,
18
+ copies and moves blocks by hand. **Not** `Calendar` (it picks dates) and **not** `Timeline` (it
19
+ lists events on one axis). For one day by the hour, or for a phone, use `DayRuler`.
20
+
21
+ ## Gestures
22
+
23
+ | gesture | pointer (mouse, pen) | keyboard | reports |
24
+ |---|---|---|---|
25
+ | create one day | click an empty cell | Enter on its "+" | `onCreate(rowId, [day])` |
26
+ | create several | drag across cells of ONE row | — | `onCreate(rowId, days)` — the crossed days that are empty and not blocked |
27
+ | copy | drag a block's left or right edge grip along its row | Shift+← / Shift+→ | `onCopy(blockId, days)` — never its own day, a taken or a blocked one |
28
+ | move | drag a block's middle to another cell (any row) | Alt+← / Alt+→ | `onMove(blockId, toRowId, toDay)` — only onto an empty, open cell |
29
+ | open | click a block | Enter | `onBlockClick(blockId)` |
30
+ | focus | — | ← → ↑ ↓ to the nearest cell with something to focus | — |
31
+
32
+ - **Touch never drags** (`pointerType: 'touch'`): the page scrolls; a tap is still a click.
33
+ - While a create or copy drag runs, each target cell is drawn dashed with the hours as ghost
34
+ text (`createPreview(rowId)` for a create, the block's `label` for a copy); while a move
35
+ runs, the cell under the pointer is highlighted.
36
+ - A drag that is released anywhere — inside the grid or outside it — commits. **Escape**, the
37
+ window losing focus, or a move with no button down (released where the page could not see it)
38
+ abandons it: nothing is reported, the ghost and the highlight go, and the click that release
39
+ leaves behind is ignored. Only that click is: the next click on any block opens it.
40
+ - A keyboard copy or move, and a refusal (taken, closed, past either end), are read by a polite
41
+ live region; on a block that is not `copyable` / `movable` it reads `labels.notMovable` ("Este
42
+ turno não muda por aqui"). With Ctrl or Meta held the keys are not the grid's. After a keyboard move, focus follows the block to its new cell once the host
43
+ re-renders it there; after a create on a "+" (Enter, Space or a click), focus moves to the
44
+ block the host renders in that cell, so the arrows go on from there (after a click, without
45
+ scrolling). A host that renders nothing there keeps focus where it was.
46
+
47
+ ## Props
48
+
49
+ | Prop | Type | Description |
50
+ |---|---|---|
51
+ | `columns` | `ScheduleGridColumn[]` | `label` (wraps to a second line when its column is short, never cut, and never between a word and the number after it: "Seg 19/10" stays whole; also in `title`), `sublabel?`, `today?` (label in the primary colour, cells framed). A day is its index here. |
52
+ | `groups` | `ScheduleGridGroup[]` | `title?` (upper-case heading, names the row group), `rows`: `id`, `label`, `meta?`, `metaTone?` (`'warning'` for "acima de 40h"), `total?`, `onLabelClick?` (makes the name a button), `labelAccessible?`, `nameAdornment?` (node beside the name — a "Freela" tag; it moves under the name when the column has no room for both), `chips?` (node under the meta — "2 regras ›"; one line, a chip that does not fit shrinks and cuts its label). |
53
+ | `cell` | `(rowId, day) => ScheduleGridCell` | `blocks` (`id`, `label`, `note?`, `tone`, `movable?`, `copyable?`, `selected?`, `title?`, `breakSpan?` — `{ start, end }` as fractions 0…1 of the block, a meal break drawn as a hatched gap; its words go in `note`), `blocked?` (hatched, refuses create and drop), `blockedLabel?`. Called for every cell on each render: keep it cheap. |
54
+ | `totalLabel` | `string?` | The last column's header ("horas"). |
55
+ | `readOnly` | `boolean?` | No "+", no grips, no drag; empty cells are not focusable. Block clicks still reach `onBlockClick`. |
56
+ | `onCreate` / `onCopy` / `onMove` / `onBlockClick` | see Gestures | Each gesture is offered only when its handler is given. |
57
+ | `createPreview` | `(rowId) => string` | The ghost text a create drag shows (the person's last hours). |
58
+ | `loading` | `boolean?` | Header + skeleton rows, `aria-busy`, nothing to press. |
59
+ | `error` | `ReactNode?` | Replaces the body (an `ErrorState` with its retry). |
60
+ | `empty` | `ReactNode?` | Shown when there are no rows at all. |
61
+ | `stickyTop` | `number?` (px, default 0) | Offset of the sticky header row under a pinned page bar. |
62
+ | `aria-label` | `string?` | The grid's name. |
63
+ | `labels` | `Partial<ScheduleGridLabels>` | `createCell(row, column)`, `blockedCell(row, column)`, `copied(block, column)`, `moved(block, row, column)`, `refused`, `loading`. Default: the English pack; a pt-BR host passes `UI_LABELS['pt-BR'].scheduleGrid`. |
64
+ | `dataTestId` | `string?` (default `schedule-grid`) | Parts: `-header`, `-row-${rowId}`, `-cell-${rowId}-${day}`, `-block-${blockId}`, `-grip-l-${blockId}`, `-grip-r-${blockId}`, `-break-${blockId}`, `-live`, `-loading`. |
65
+
66
+ ### Tones — never colour alone
67
+
68
+ | `tone` | drawn | its `note` carries |
69
+ |---|---|---|
70
+ | `plan` | raised chip, neutral border | "↻ toda semana", "↻ a cada 2 semanas" |
71
+ | `late` | solid warning | "Atrasado" |
72
+ | `away` | dashed warning outline | "Ausente" |
73
+ | `uncovered` | dashed warning outline | "Sem ninguém" |
74
+ | `onduty` | soft success ground, success border | "desde 08:26" |
75
+
76
+ ### Breaks and row adornments
77
+
78
+ A block's `breakSpan` is drawn as a band of diagonal stripes in the page's ground across the
79
+ block's height, under its text, so the block reads as cut there in every tone; it is decorative
80
+ (`aria-hidden`), and the block's `note` says it in words ("pausa 14:00–15:00"). Values outside
81
+ 0…1 are clamped to the block; a span that is empty or reversed (`end <= start`) draws nothing. A row's
82
+ `nameAdornment` and `chips` are the host's nodes (an `@12-apps/ui` `Chip` fits): the grid only
83
+ places them.
84
+
85
+ ## Layout
86
+
87
+ - Name column 200px · the day columns share the rest equally (`minmax(0, 1fr)`) · total 56px;
88
+ 6px gaps. Cells at least 56px tall; a cell's blocks stack (a split shift is two blocks).
89
+ - A block's hours (`label`) stay on one line (an ellipsis at worst, the full text in `title`);
90
+ its `note` wraps to a second line when it is long and the block grows taller, as the
91
+ prototype's "↻ a cada 2 / semanas": a note is never cut, so a break keeps its end.
92
+ - The header row is `position: sticky` (opaque, `background.default`) — it stays at the top of
93
+ whatever scrolls the grid.
94
+ - A row's name and meta take at most two lines each (the rest cut, the whole text in `title`); a
95
+ closed day's `blockedLabel` stays on one line inside its cell, cut with an ellipsis.
96
+ - **Container queries, not media queries; every bound is "from that width up".** The bounds come
97
+ from the grid's own columns (for a week with totals they fall at 1032px and 914px):
98
+ - while 200px names, days of at least 104px, the 56px total and the gaps fit: the computer frame
99
+ — a block's hours whole beside its edge grips; a long note wraps;
100
+ - while 140px names, days of at least 98px (their text 9px off each edge) and a 40px total fit:
101
+ the same, unscrolled, grips kept, the header row sticking to the page — a 1280 laptop beside
102
+ the admin's rail and panel, even with an always-visible scrollbar (923px);
103
+ - below that: days of at least 152px, grips kept, every hours and note line whole; the days
104
+ scroll sideways under the pinned names, and the header row — outside that scroller — still
105
+ sticks to the page and follows the days sideways. The header row is no scroller of its own
106
+ (`overflow-x: hidden`, so it is never a tab stop): the grid sets its scroll from the days',
107
+ and a sideways wheel or trackpad swipe over it scrolls the days;
108
+ - below 600px: 120px names, days of at least 136px, no grips (Shift+arrows still copy; the
109
+ middle still moves).
110
+ Never a coloured sliver, never cut hours, and the page itself never scrolls sideways — whatever
111
+ the number of days.
112
+ - **The grid is the computer and tablet view.** On a phone, render `DayRuler` for one day at a
113
+ time (the approved prototype, d11-phone); the sideways scroll is the grid's fallback in a
114
+ narrow pane, not a phone layout.
115
+
116
+ ## Accessibility
117
+
118
+ `role="table"` with `rowgroup` / `row` / `columnheader` / `rowheader` / `cell`; the table holds
119
+ rows only, so the host's `error` and `empty` nodes sit in one full-width row's cell. Every empty
120
+ cell's "+" and every block is a native `<button>` (Tab, Enter, Space); blocks declare their
121
+ shortcuts in `aria-keyshortcuts`, and the `selected` block is `aria-current="true"`. A blocked
122
+ cell is named by `blockedLabel` (or `labels.blockedCell`). The live region is `role="status"`,
123
+ polite, and stays mounted: each sentence clears it and is written on the next frame, so the
124
+ same sentence twice is read twice.
125
+
126
+ A cell or block the **keyboard** focuses is brought fully into view (WCAG 2.4.11): out from
127
+ under the pinned names, in from past the days' right edge with its 3px focus ring, and down
128
+ from under the sticky header row (the page, or the nearest vertical scroller, scrolls). The
129
+ browser counts a target under a sticky column or header as already in view, so the grid does
130
+ it. A pointer press or a tap is left where it is: scrolling then would move the cell out from
131
+ under the pointer and lose the click.
132
+
133
+ Every tone's text reads at 4.5:1 on its ground in light and dark mode: the `late` block keeps
134
+ `warning.contrastText` when it reads on `warning.main` and takes the page's dark ink otherwise;
135
+ `away`, `uncovered` and a `warning` meta line deepen the warning step until they read.
136
+
137
+ ## Related
138
+
139
+ `DayRuler` (the same blocks, one day by the hour), `SequenceResolver` (the problems a late, absent
140
+ or uncovered block opens).
@@ -0,0 +1,75 @@
1
+ /**
2
+ * THE WEEK GRID'S NUMBERS — the approved prototype's (FUT-3823, frame d01 at
3
+ * 1280), in px. The web reads them through `rem`/`sxRem` so a density mode
4
+ * scales them.
5
+ */
6
+ export const SCHEDULE_GRID_METRICS = {
7
+ /**
8
+ * The name column: 200px on a wide computer; 140px on a narrow one and while
9
+ * the days scroll (a long name or meta still takes two lines, never three);
10
+ * 120px on a phone-sized pane.
11
+ */
12
+ nameColumn: { wide: 200, compact: 140, narrow: 120 },
13
+ /**
14
+ * The narrowest a day column gets, per layout (see `layoutsOf` in the
15
+ * styles, which derives each layout's minimum container from these):
16
+ * - `wide`: with its edge grips, the hours whole ("20:39–00:00" is 67px);
17
+ * a long note wraps to a second line (the block grows), as the
18
+ * prototype's `.wb .note` does ("↻ a cada 2 / semanas");
19
+ * - `compact`: the same, the block's text 9px off each edge
20
+ * (`blockPadding.tight`), clear of the grips' bars;
21
+ * - `scrolled`: the days scroll sideways under the pinned names, grips kept,
22
+ * every hours and note line whole (the longest note, "↻ a cada 2
23
+ * semanas", is 113px; 152 − 24 − 12 is 116);
24
+ * - `narrow`: a phone-sized pane, no grips, the same.
25
+ * Never slivers, never cut hours.
26
+ */
27
+ dayMin: { wide: 104, compact: 98, scrolled: 152, narrow: 136 },
28
+ /** The total column ("18h"). */
29
+ totalColumn: { wide: 56, compact: 40 },
30
+ /** Below this container width the pane is phone-sized: no grips (a phone renders DayRuler per day). */
31
+ narrowBelow: 600,
32
+ /** Between columns and between rows. */
33
+ gap: 6,
34
+ cellMinHeight: 56,
35
+ cellRadius: 8,
36
+ cellPadding: 4,
37
+ /** Between two blocks of one cell (a split shift). */
38
+ blockGap: 4,
39
+ blockRadius: 6,
40
+ /** Inside a block: room for the grips on both sides. */
41
+ blockPadding: { y: 4, start: 10, end: 14, tight: 9 },
42
+ blockFont: 12,
43
+ /** The edge grip's hit area and its bar. */
44
+ grip: { width: 12, barWidth: 3, barHeight: 16, barRadius: 2 },
45
+ /** The selected block's ring, and every focus ring. */
46
+ ring: 2,
47
+ /** How far a block's focus ring stands off it. */
48
+ ringOffset: 1,
49
+ /** A wheel that counts in lines (`deltaMode` 1), forwarded from the header: px per line. */
50
+ wheelLine: 16,
51
+ /** The dashed outline of a cell a create or copy will land on. */
52
+ targetBorder: 1.5,
53
+ headerLabel: 13,
54
+ headerSublabel: 13,
55
+ rowName: 14,
56
+ rowMeta: 13,
57
+ groupTitle: 12,
58
+ total: 13,
59
+ plusIcon: 16,
60
+ /** Skeleton rows while loading. */
61
+ skeletonRows: 4,
62
+ /** The hatch of a blocked cell: stripe width. */
63
+ hatch: 6,
64
+ /** The hatch of a break inside a block: stripe width. */
65
+ breakStripe: { ink: 2, gap: 3 },
66
+ } as const;
67
+
68
+ /**
69
+ * THE NAME COLUMN'S NUMBERS, shared by the week grid and the day ruler
70
+ * (`ScheduleNameCell`): the name as a button. In px.
71
+ */
72
+ export const SCHEDULE_NAME_METRICS = {
73
+ button: { minHeight: 24, radius: 4, ringOffset: 2, hitArea: 40 },
74
+ ring: 2,
75
+ } as const;