@12-apps/ui 6.77.1 → 6.78.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 (601) hide show
  1. package/NATIVE.md +1 -1
  2. package/components-catalog.md +8 -0
  3. package/dist/_internal/components/data-display/Badge/Badge.js +3 -3
  4. package/dist/_internal/components/data-display/Badge/Badge.styles.js +3 -3
  5. package/dist/_internal/components/data-display/Badge/BadgeContent.js +3 -3
  6. package/dist/_internal/components/data-display/CardKit/CardKebab.js +5 -5
  7. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +5 -5
  8. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +5 -5
  9. package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +3 -3
  10. package/dist/_internal/components/data-display/Carousel/Carousel.js +3 -3
  11. package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +3 -3
  12. package/dist/_internal/components/data-display/Carousel/Carousel.styles.js +3 -3
  13. package/dist/_internal/components/data-display/Chart/Chart.js +3 -3
  14. package/dist/_internal/components/data-display/Chart/SpecChart.js +3 -3
  15. package/dist/_internal/components/data-display/Chart/chart-context.js +3 -3
  16. package/dist/_internal/components/data-display/Chart/chart-internals.js +3 -3
  17. package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
  18. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +57 -57
  19. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +71 -71
  20. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +5 -5
  21. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +6 -6
  22. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +8 -8
  23. package/dist/_internal/components/data-display/DataViews/data-views-bar-controls.js +3 -3
  24. package/dist/_internal/components/data-display/DataViews/data-views-card-body.js +6 -6
  25. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +19 -19
  26. package/dist/_internal/components/data-display/DataViews/data-views-columns.js +6 -6
  27. package/dist/_internal/components/data-display/DataViews/data-views-day-input.js +3 -3
  28. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +6 -6
  29. package/dist/_internal/components/data-display/DataViews/data-views-empty.js +5 -5
  30. package/dist/_internal/components/data-display/DataViews/data-views-export.js +5 -5
  31. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +30 -30
  32. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +8 -8
  33. package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +5 -5
  34. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +54 -54
  35. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +31 -31
  36. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +25 -25
  37. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +28 -28
  38. package/dist/_internal/components/data-display/DataViews/data-views-number-input.js +3 -3
  39. package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +5 -5
  40. package/dist/_internal/components/data-display/DataViews/data-views-quick-chip.js +3 -3
  41. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +6 -6
  42. package/dist/_internal/components/data-display/DataViews/data-views-search.js +3 -3
  43. package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +5 -5
  44. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +17 -17
  45. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +18 -18
  46. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +16 -16
  47. package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +5 -5
  48. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +7 -7
  49. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +7 -7
  50. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +6 -6
  51. package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +2 -2
  52. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +9 -9
  53. package/dist/_internal/components/data-display/LazyImage/LazyImage.js +3 -3
  54. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +4 -4
  55. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +5 -5
  56. package/dist/_internal/components/data-display/MapPreview/MapSearchBar.js +3 -3
  57. package/dist/_internal/components/data-display/Sheet/Sheet.body.js +3 -3
  58. package/dist/_internal/components/data-display/Sheet/Sheet.js +3 -3
  59. package/dist/_internal/components/data-display/Sheet/Sheet.styles.js +3 -3
  60. package/dist/_internal/components/data-display/index.js +10 -10
  61. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +5 -5
  62. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +5 -5
  63. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +56 -0
  64. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.metrics.js +8 -0
  65. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.metrics.js.map +1 -0
  66. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +52 -0
  67. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js.map +1 -0
  68. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.styles.js +58 -0
  69. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.styles.js.map +1 -0
  70. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.types.js +1 -0
  71. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.types.js.map +1 -0
  72. package/dist/_internal/components/feedback/SequenceResolver/sequence-model.js +28 -0
  73. package/dist/_internal/components/feedback/SequenceResolver/sequence-model.js.map +1 -0
  74. package/dist/_internal/components/feedback/SequenceResolver/useSequenceRun.js +9 -0
  75. package/dist/_internal/components/feedback/SequenceResolver/useSequenceRun.js.map +1 -0
  76. package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +2 -2
  77. package/dist/_internal/components/feedback/index.js +40 -23
  78. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.hooks.js +4 -4
  79. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +11 -11
  80. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +5 -5
  81. package/dist/_internal/components/form/AddressAutocomplete/AddressFallbackField.js +4 -4
  82. package/dist/_internal/components/form/AddressAutocomplete/AddressInputField.js +4 -4
  83. package/dist/_internal/components/form/AddressAutocomplete/AddressTextField.js +3 -3
  84. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +4 -4
  85. package/dist/_internal/components/form/Autocomplete/Autocomplete.parts.js +3 -3
  86. package/dist/_internal/components/form/Button/Button.js +4 -4
  87. package/dist/_internal/components/form/Button/Button.styles.js +3 -3
  88. package/dist/_internal/components/form/Calendar/Calendar.js +2 -2
  89. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +8 -8
  90. package/dist/_internal/components/form/CategorySelect/CategoryPanelFoot.js +4 -4
  91. package/dist/_internal/components/form/CategorySelect/CategoryPanelHead.js +4 -4
  92. package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +5 -5
  93. package/dist/_internal/components/form/CategorySelect/CategoryRows.js +4 -4
  94. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +11 -11
  95. package/dist/_internal/components/form/CategorySelect/CategorySelect.styles.js +3 -3
  96. package/dist/_internal/components/form/CategorySelect/CategoryTrigger.js +4 -4
  97. package/dist/_internal/components/form/CepField/CepField.js +6 -6
  98. package/dist/_internal/components/form/CodeEditor/CodeEditor.js +3 -3
  99. package/dist/_internal/components/form/Command/Command.js +5 -5
  100. package/dist/_internal/components/form/Command/Command.styles.js +3 -3
  101. package/dist/_internal/components/form/CreatableSelect/CreatableSelect.js +3 -3
  102. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +5 -5
  103. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +9 -9
  104. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +4 -4
  105. package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +5 -5
  106. package/dist/_internal/components/form/Input/Input.factory.js +4 -4
  107. package/dist/_internal/components/form/Input/Input.js +5 -5
  108. package/dist/_internal/components/form/Input/Input.styles.js +3 -3
  109. package/dist/_internal/components/form/InputOTP/InputOTP.js +4 -4
  110. package/dist/_internal/components/form/InputOTP/InputOTP.styles.js +3 -3
  111. package/dist/_internal/components/form/Label/Label.js +3 -3
  112. package/dist/_internal/components/form/Label/Label.styles.js +3 -3
  113. package/dist/_internal/components/form/Menubar/Menubar.item.js +3 -3
  114. package/dist/_internal/components/form/Menubar/Menubar.js +5 -5
  115. package/dist/_internal/components/form/Menubar/Menubar.styles.js +3 -3
  116. package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +3 -3
  117. package/dist/_internal/components/form/NumberField/NumberField.js +6 -6
  118. package/dist/_internal/components/form/PhoneInput/PhoneInput.js +3 -3
  119. package/dist/_internal/components/form/PickerSheet/PickerSheet.js +6 -6
  120. package/dist/_internal/components/form/PickerSheet/PickerSheet.parts.js +4 -4
  121. package/dist/_internal/components/form/PickerSheet/PickerSheet.styles.js +3 -3
  122. package/dist/_internal/components/form/RadioGroup/RadioGroup.js +5 -5
  123. package/dist/_internal/components/form/RadioGroup/RadioGroup.styles.js +3 -3
  124. package/dist/_internal/components/form/RadioGroup/RadioGroup.variants.js +4 -4
  125. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +2 -2
  126. package/dist/_internal/components/form/Select/Select.js +6 -6
  127. package/dist/_internal/components/form/Select/Select.menu.js +4 -4
  128. package/dist/_internal/components/form/Select/Select.searchable.js +4 -4
  129. package/dist/_internal/components/form/Select/Select.styles.js +3 -3
  130. package/dist/_internal/components/form/Textarea/Textarea.js +3 -3
  131. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js +4 -4
  132. package/dist/_internal/components/form/Toggle/Toggle.js +4 -4
  133. package/dist/_internal/components/form/Toggle/Toggle.styles.js +3 -3
  134. package/dist/_internal/components/form/ToggleGroup/ToggleGroup.js +3 -3
  135. package/dist/_internal/components/form/UploadButton/UploadButton.js +2 -2
  136. package/dist/_internal/components/form/index.js +64 -64
  137. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +12 -12
  138. package/dist/_internal/components/form/total-form/Fields/CepField.js +7 -7
  139. package/dist/_internal/components/form/total-form/Fields/SelectField.js +7 -7
  140. package/dist/_internal/components/form/total-form/Fields/TextField.js +6 -6
  141. package/dist/_internal/components/form/total-form/Fields/ToggleField.js +4 -4
  142. package/dist/_internal/components/form/total-form/Fields/index.js +30 -30
  143. package/dist/_internal/components/form/total-form/SubmitButton.js +5 -5
  144. package/dist/_internal/components/index.js +165 -155
  145. package/dist/_internal/components/layout/Box/Box.js +6 -6
  146. package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +3 -3
  147. package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +3 -3
  148. package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +4 -4
  149. package/dist/_internal/components/layout/ContentToolbar/MultiSelectTriggers.js +3 -3
  150. package/dist/_internal/components/layout/ContentToolbar/SavedViewsMenu.js +3 -3
  151. package/dist/_internal/components/layout/ContentToolbar/SortByDropdown.js +3 -3
  152. package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +3 -3
  153. package/dist/_internal/components/layout/Screen/Screen.js +7 -7
  154. package/dist/_internal/components/layout/SettingCard/SettingCard.js +11 -11
  155. package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +9 -9
  156. package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js +10 -10
  157. package/dist/_internal/components/layout/SettingCard/SettingGrid.js +10 -10
  158. package/dist/_internal/components/layout/SettingCard/SettingGroup.js +13 -13
  159. package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +11 -11
  160. package/dist/_internal/components/layout/SettingCard/SettingToggle.js +13 -13
  161. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +3 -3
  162. package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +2 -2
  163. package/dist/_internal/components/layout/Stack/Stack.js +7 -7
  164. package/dist/_internal/components/layout/TableFilter/TableFilter.js +3 -3
  165. package/dist/_internal/components/layout/index.js +36 -36
  166. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +6 -6
  167. package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +3 -3
  168. package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +2 -2
  169. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +4 -4
  170. package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +2 -2
  171. package/dist/_internal/components/navigation/Pagination/Pagination.js +4 -4
  172. package/dist/_internal/components/navigation/Pagination/PaginationParts.js +3 -3
  173. package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +3 -3
  174. package/dist/_internal/components/navigation/SectionNav/SectionNav.js +6 -6
  175. package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js +3 -3
  176. package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js +3 -3
  177. package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js +3 -3
  178. package/dist/_internal/components/navigation/SectionNav/SectionNav.railCreate.js +3 -3
  179. package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +3 -3
  180. package/dist/_internal/components/navigation/SectionNav/__stories__/fixtures.js +3 -3
  181. package/dist/_internal/components/navigation/Tabs/Tabs.js +2 -2
  182. package/dist/_internal/components/navigation/Tabs/Tabs.styles.js +2 -2
  183. package/dist/_internal/components/navigation/index.js +29 -29
  184. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +3 -3
  185. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +3 -3
  186. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +3 -3
  187. package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +3 -3
  188. package/dist/_internal/components/utility/index.js +7 -7
  189. package/dist/_internal/en-US.data-display.js +2 -2
  190. package/dist/_internal/icons/Icon.js +6 -6
  191. package/dist/_internal/provider/UiProvider.js +5 -5
  192. package/dist/_internal/provider/mui-bridge.js +4 -4
  193. package/dist/_internal/provider/use-ui-theme.js +5 -5
  194. package/dist/_internal/social-login-button/social-login-button.js +5 -5
  195. package/dist/_internal/tokens/density.js +3 -3
  196. package/dist/_internal/tokens/field-height.js +2 -2
  197. package/dist/_internal/user-avatar/user-avatar.js +5 -5
  198. package/dist/charts.js +3 -3
  199. package/dist/{chunk-75FHDUJW.js → chunk-2D4WKET2.js} +5 -5
  200. package/dist/{chunk-3O2OJW4O.js → chunk-2QO3BKUQ.js} +8 -8
  201. package/dist/{chunk-MA6ENJDP.js → chunk-2VHAD4NE.js} +3 -3
  202. package/dist/{chunk-FJ3UZ4RC.js → chunk-33MMQHYU.js} +2 -2
  203. package/dist/{chunk-CBO46LJH.js → chunk-3HSLEUVW.js} +5 -5
  204. package/dist/chunk-3LUT2C5M.js +122 -0
  205. package/dist/chunk-3LUT2C5M.js.map +1 -0
  206. package/dist/{chunk-6VTOGR36.js → chunk-3XZZSHE5.js} +5 -5
  207. package/dist/{chunk-BLINEMVO.js → chunk-3YLRR4JM.js} +3 -3
  208. package/dist/{chunk-PD7MKJCM.js → chunk-4AJY7HMH.js} +5 -5
  209. package/dist/{chunk-VWVA74JY.js → chunk-4HUSG5MR.js} +2 -2
  210. package/dist/{chunk-7CPLKAL6.js → chunk-4M5GEKPM.js} +2 -2
  211. package/dist/{chunk-WEMI4PV7.js → chunk-4MQ6XTIJ.js} +5 -5
  212. package/dist/{chunk-3MQZBBUW.js → chunk-5463SZOH.js} +3 -3
  213. package/dist/{chunk-CAX3NFFE.js → chunk-555TUQ7E.js} +4 -4
  214. package/dist/{chunk-5KGABAQB.js → chunk-5752357K.js} +4 -4
  215. package/dist/{chunk-ZOLUUX4B.js → chunk-5J7SA4CZ.js} +4 -4
  216. package/dist/chunk-5UBP2DJ4.js +102 -0
  217. package/dist/chunk-5UBP2DJ4.js.map +1 -0
  218. package/dist/{chunk-364NH2NY.js → chunk-5USHYSCO.js} +21 -12
  219. package/dist/chunk-5USHYSCO.js.map +1 -0
  220. package/dist/{chunk-5AQLJ4AL.js → chunk-62XVHRTX.js} +2 -2
  221. package/dist/{chunk-SO5OU2ZV.js → chunk-64AOS2WA.js} +2 -2
  222. package/dist/{chunk-75I42HHE.js → chunk-66QQ7YQN.js} +2 -2
  223. package/dist/{chunk-7KZEQJPQ.js → chunk-6J7RGNSF.js} +4 -4
  224. package/dist/{chunk-GCBWZ3MX.js → chunk-6LMYQJZP.js} +2 -2
  225. package/dist/{chunk-4SQ2WCZA.js → chunk-6MOJK2QT.js} +2 -2
  226. package/dist/{chunk-Q6MZHT2F.js → chunk-6RTE4UNO.js} +5 -5
  227. package/dist/{chunk-NIZUFPV3.js → chunk-72GJRV5J.js} +2 -2
  228. package/dist/{chunk-LYB6YYTG.js → chunk-72OG3AGH.js} +2 -2
  229. package/dist/{chunk-Y46R26TE.js → chunk-7AC2UGTU.js} +3 -3
  230. package/dist/{chunk-NPSARV2I.js → chunk-7P5PNRBT.js} +8 -8
  231. package/dist/{chunk-RPKUZDRY.js → chunk-7QXEEZFO.js} +2 -2
  232. package/dist/{chunk-SUXT6QAY.js → chunk-7RG37FVT.js} +2 -2
  233. package/dist/{chunk-5F7HYYGM.js → chunk-7ZROYGUG.js} +3 -3
  234. package/dist/{chunk-LY5I3ZSV.js → chunk-A2YLFKQU.js} +4 -4
  235. package/dist/{chunk-BEYLI32I.js → chunk-A5NXBOWS.js} +7 -7
  236. package/dist/{chunk-7TKQIZ3K.js → chunk-AAREDFH6.js} +2 -2
  237. package/dist/{chunk-4QGPRORO.js → chunk-AEYLFBZT.js} +3 -3
  238. package/dist/{chunk-VPGDYI63.js → chunk-AKBL7S7A.js} +5 -5
  239. package/dist/{chunk-6DGNMASB.js → chunk-ALREWFRX.js} +4 -4
  240. package/dist/{chunk-NQ6P7O7C.js → chunk-ASZGMKB4.js} +2 -2
  241. package/dist/{chunk-CWCNLITK.js → chunk-AXZCCX7O.js} +2 -2
  242. package/dist/{chunk-FVL6U72V.js → chunk-B2JYQBO4.js} +2 -2
  243. package/dist/{chunk-IU2WSJ4F.js → chunk-BARTUKJU.js} +2 -2
  244. package/dist/{chunk-4JNC5AEF.js → chunk-BTGXHQX3.js} +2 -2
  245. package/dist/{chunk-VMTOLAZ5.js → chunk-BWFQEASG.js} +5 -5
  246. package/dist/{chunk-MKBIIYJM.js → chunk-C47LBKEG.js} +4 -4
  247. package/dist/{chunk-2K2Q7VGV.js → chunk-C5JCARNE.js} +2 -2
  248. package/dist/{chunk-LBEZ7A3F.js → chunk-C7CIUDXZ.js} +3 -3
  249. package/dist/chunk-CHP3QIS3.js +218 -0
  250. package/dist/chunk-CHP3QIS3.js.map +1 -0
  251. package/dist/{chunk-YWXCLPCX.js → chunk-CO7GH3W7.js} +2 -2
  252. package/dist/{chunk-ARVLS57B.js → chunk-CW6Y32N2.js} +2 -2
  253. package/dist/{chunk-LZJHHMOF.js → chunk-DRJL3JHR.js} +2 -2
  254. package/dist/chunk-DTNXP7ZS.js +1 -0
  255. package/dist/chunk-DTNXP7ZS.js.map +1 -0
  256. package/dist/{chunk-7IXXASQ6.js → chunk-DXFKPY2K.js} +4 -4
  257. package/dist/chunk-E53MMMDA.js +209 -0
  258. package/dist/chunk-E53MMMDA.js.map +1 -0
  259. package/dist/{chunk-FR2RJXHS.js → chunk-EBCEDBHX.js} +3 -3
  260. package/dist/{chunk-BRHRK7BK.js → chunk-ENRB6PIN.js} +2 -2
  261. package/dist/{chunk-J5QNJERV.js → chunk-F6IMOMA3.js} +3 -3
  262. package/dist/{chunk-YTDUIU7X.js → chunk-F6LZHF4O.js} +2 -2
  263. package/dist/{chunk-725H45MT.js → chunk-FAIQCGSL.js} +5 -5
  264. package/dist/{chunk-HVGQH54G.js → chunk-FTDGFWB5.js} +5 -5
  265. package/dist/{chunk-P7VAMJFJ.js → chunk-GFXS5PJL.js} +3 -3
  266. package/dist/{chunk-YEKPQAOW.js → chunk-GQ2T44BC.js} +2 -2
  267. package/dist/{chunk-JA3WJPXH.js → chunk-GSXYXMCV.js} +3 -3
  268. package/dist/{chunk-IZ7JTG3Z.js → chunk-GTT5UKKO.js} +4 -4
  269. package/dist/{chunk-WDSJ6SVY.js → chunk-GXSHLMT4.js} +2 -2
  270. package/dist/chunk-HHPFWEJY.js +28 -0
  271. package/dist/chunk-HHPFWEJY.js.map +1 -0
  272. package/dist/{chunk-ULK4AGG4.js → chunk-HTGK7QCX.js} +3 -3
  273. package/dist/{chunk-Y3LK6ZQG.js → chunk-I2KAN3YB.js} +2 -2
  274. package/dist/{chunk-M5DBOM7R.js → chunk-ICRVLGWD.js} +2 -2
  275. package/dist/{chunk-BEHM2VLH.js → chunk-IQ2U5MVO.js} +7 -7
  276. package/dist/{chunk-LABIUXDM.js → chunk-J7C7FPVO.js} +2 -2
  277. package/dist/{chunk-CYH5QQUP.js → chunk-KHIUYLKY.js} +4 -4
  278. package/dist/{chunk-PPEHBI5O.js → chunk-KXTNTDRD.js} +2 -2
  279. package/dist/{chunk-IBOFASAZ.js → chunk-LC6ND4ET.js} +2 -2
  280. package/dist/{chunk-BF3SGOWT.js → chunk-LG52LMAM.js} +3 -3
  281. package/dist/{chunk-3Y7LSMGV.js → chunk-LH4VKUZC.js} +2 -2
  282. package/dist/{chunk-CFDWKQZT.js → chunk-LODYTVOO.js} +2 -2
  283. package/dist/{chunk-Y2CCXB7R.js → chunk-LUNN5GTB.js} +2 -2
  284. package/dist/{chunk-ACBHZG3Z.js → chunk-M74YHHJE.js} +5 -5
  285. package/dist/{chunk-BGGVYKVZ.js → chunk-MA6SUE7F.js} +4 -4
  286. package/dist/{chunk-AT6UKTH4.js → chunk-MHFXJRLD.js} +2 -2
  287. package/dist/{chunk-3BDMYTH6.js → chunk-MHLYX6QW.js} +4 -4
  288. package/dist/{chunk-FXECKKPW.js → chunk-MO4FFK62.js} +3 -3
  289. package/dist/{chunk-SAKSIN7E.js → chunk-MQVIYTH5.js} +2 -2
  290. package/dist/{chunk-NKBCUR4V.js → chunk-MSC43MCJ.js} +2 -2
  291. package/dist/{chunk-RHVJ3L4U.js → chunk-MWPD2BXO.js} +2 -2
  292. package/dist/{chunk-TSID4257.js → chunk-N34AOGK3.js} +7 -7
  293. package/dist/{chunk-NZBEE2PR.js → chunk-N3LW5ER5.js} +3 -3
  294. package/dist/{chunk-Q3HYEAVQ.js → chunk-N3ZOZWP5.js} +2 -2
  295. package/dist/{chunk-AO4NDR6W.js → chunk-NTO5DALI.js} +2 -2
  296. package/dist/{chunk-VQSBZPKO.js → chunk-NYWAAXDX.js} +2 -2
  297. package/dist/{chunk-CHGUN7OF.js → chunk-O6SAU5JA.js} +2 -2
  298. package/dist/{chunk-3FDSXSEP.js → chunk-OE3SQOZV.js} +2 -2
  299. package/dist/{chunk-VLH3IMJG.js → chunk-OFXCSLGX.js} +2 -2
  300. package/dist/{chunk-E54XIRY2.js → chunk-PIP7XII2.js} +5 -5
  301. package/dist/{chunk-QWSYHENP.js → chunk-PTQRJEPN.js} +5 -5
  302. package/dist/{chunk-S5VIN3EB.js → chunk-Q6PRGXR2.js} +2 -2
  303. package/dist/{chunk-DQ3O252B.js → chunk-QCNUMOTL.js} +2 -2
  304. package/dist/{chunk-XZE5FIRB.js → chunk-QCQWOSSD.js} +2 -2
  305. package/dist/{chunk-TRYYYWV3.js → chunk-QIYX33SH.js} +9 -9
  306. package/dist/{chunk-RGVNXES5.js → chunk-QQHZBJMU.js} +4 -4
  307. package/dist/{chunk-XZFTRGRW.js → chunk-QVO4SIS7.js} +2 -2
  308. package/dist/{chunk-WJEJ65TF.js → chunk-QYX4567K.js} +2 -2
  309. package/dist/{chunk-7JKDB5J5.js → chunk-R53ZOW4B.js} +4 -4
  310. package/dist/{chunk-HSIUVFXE.js → chunk-RA6W37NZ.js} +2 -2
  311. package/dist/{chunk-HDTFLW42.js → chunk-REMODSVN.js} +2 -2
  312. package/dist/{chunk-P4LR2GLN.js → chunk-RIDCGFGM.js} +2 -2
  313. package/dist/{chunk-RNQ2PGBB.js → chunk-RKVS5AA6.js} +3 -3
  314. package/dist/{chunk-MKNW4FRR.js → chunk-RS576GOH.js} +7 -7
  315. package/dist/{chunk-NIENIKZ5.js → chunk-SCAPSX6T.js} +2 -2
  316. package/dist/{chunk-HG2YLNGJ.js → chunk-SFVHZAGE.js} +2 -2
  317. package/dist/{chunk-5HFB4WFE.js → chunk-T743IIER.js} +3 -3
  318. package/dist/{chunk-C6LW34TV.js → chunk-THD3N4BJ.js} +2 -2
  319. package/dist/{chunk-IDRVQVDL.js → chunk-TNDTEI6D.js} +2 -2
  320. package/dist/{chunk-U2QV4TTZ.js → chunk-TR7ZA67L.js} +2 -2
  321. package/dist/chunk-TWAKMV5B.js +1 -0
  322. package/dist/chunk-TWAKMV5B.js.map +1 -0
  323. package/dist/{chunk-EP3DRILI.js → chunk-U36BXXQ7.js} +2 -2
  324. package/dist/{chunk-AJ5LXKLQ.js → chunk-U4G3KY6L.js} +6 -6
  325. package/dist/{chunk-UAFSEZ2E.js → chunk-UQUN2NGE.js} +2 -2
  326. package/dist/{chunk-6A4PTK5Q.js → chunk-V4JMZZGH.js} +5 -5
  327. package/dist/{chunk-72L5C74V.js → chunk-VBGC7G4F.js} +3 -3
  328. package/dist/{chunk-IWJTLCTF.js → chunk-VD72JGHA.js} +3 -3
  329. package/dist/{chunk-TVXUOJAL.js → chunk-VJG43WKU.js} +2 -2
  330. package/dist/{chunk-H7QTDKA6.js → chunk-VMN6KG2U.js} +2 -2
  331. package/dist/{chunk-YRF7WFAQ.js → chunk-WA6F4NOO.js} +8 -8
  332. package/dist/{chunk-HOJL2GKW.js → chunk-WC3W36AM.js} +4 -4
  333. package/dist/{chunk-OQW4OERS.js → chunk-WNIL2KTB.js} +3 -3
  334. package/dist/{chunk-NQYC7V5N.js → chunk-WOSUYOAU.js} +5 -5
  335. package/dist/{chunk-DDNUPFPE.js → chunk-WT7VZDTI.js} +5 -5
  336. package/dist/{chunk-DOWVAC4U.js → chunk-XODBYGTH.js} +2 -2
  337. package/dist/{chunk-HDXUQKJ5.js → chunk-XRDH24J7.js} +2 -2
  338. package/dist/{chunk-DQKMOGYZ.js → chunk-XYFBJH6F.js} +4 -4
  339. package/dist/{chunk-SZSS5KKX.js → chunk-XYSE2QZN.js} +2 -2
  340. package/dist/{chunk-MIUPTZS6.js → chunk-Y4KR4LT2.js} +2 -2
  341. package/dist/{chunk-D7PVIC33.js → chunk-Y7YJYUNV.js} +4 -4
  342. package/dist/{chunk-GHP5JLL3.js → chunk-YASSCBWN.js} +2 -2
  343. package/dist/{chunk-QLJU7UUI.js → chunk-YH7G44WL.js} +2 -2
  344. package/dist/chunk-YJBWDDW7.js +162 -0
  345. package/dist/chunk-YJBWDDW7.js.map +1 -0
  346. package/dist/{chunk-FS55MQ4Q.js → chunk-YNDTLBOH.js} +2 -2
  347. package/dist/{chunk-6E4L53DF.js → chunk-YZX4DVRS.js} +2 -2
  348. package/dist/{chunk-NDQJDA7O.js → chunk-Z7COWR4K.js} +2 -2
  349. package/dist/{chunk-NYA26GV2.js → chunk-ZCCKIWZU.js} +2 -2
  350. package/dist/{chunk-J32XJALK.js → chunk-ZTPB7PVI.js} +2 -2
  351. package/dist/{chunk-NKHNUTTY.js → chunk-ZXHODKHH.js} +3 -3
  352. package/dist/{chunk-7LOCLC24.js → chunk-ZYKDUKAH.js} +2 -2
  353. package/dist/data-display/Badge.js +3 -3
  354. package/dist/data-display/CardKit.js +6 -6
  355. package/dist/data-display/Carousel.js +3 -3
  356. package/dist/data-display/Chart.js +3 -3
  357. package/dist/data-display/DataViews.js +71 -71
  358. package/dist/data-display/FleetMap.js +9 -9
  359. package/dist/data-display/LazyImage.js +3 -3
  360. package/dist/data-display/MapPreview.js +5 -5
  361. package/dist/data-display/Sheet.js +3 -3
  362. package/dist/en-US.js +6 -6
  363. package/dist/feedback/ConfirmAction.js +5 -5
  364. package/dist/feedback/NotificationStatusNotice.js +5 -5
  365. package/dist/feedback/SequenceResolver.js +56 -0
  366. package/dist/feedback/SequenceResolver.js.map +1 -0
  367. package/dist/feedback/TutorialOverlay.js +2 -2
  368. package/dist/form/AddressAutocomplete.js +11 -11
  369. package/dist/form/Autocomplete.js +4 -4
  370. package/dist/form/Button.js +4 -4
  371. package/dist/form/Calendar.js +2 -2
  372. package/dist/form/CategorySelect.js +11 -11
  373. package/dist/form/CepField.js +6 -6
  374. package/dist/form/CodeEditor.js +3 -3
  375. package/dist/form/Command.js +5 -5
  376. package/dist/form/CreatableSelect.js +3 -3
  377. package/dist/form/DateRangePicker.js +9 -9
  378. package/dist/form/Input/outlined.js +5 -5
  379. package/dist/form/Input.js +5 -5
  380. package/dist/form/InputOTP.js +4 -4
  381. package/dist/form/Label.js +3 -3
  382. package/dist/form/MenuSelect.js +4 -4
  383. package/dist/form/Menubar.js +5 -5
  384. package/dist/form/NumberField.js +6 -6
  385. package/dist/form/PhoneInput.js +3 -3
  386. package/dist/form/PickerSheet.js +6 -6
  387. package/dist/form/RadioGroup.js +5 -5
  388. package/dist/form/RichTextEditor.js +2 -2
  389. package/dist/form/Select.js +6 -6
  390. package/dist/form/Textarea.js +3 -3
  391. package/dist/form/Toggle.js +4 -4
  392. package/dist/form/ToggleGroup.js +3 -3
  393. package/dist/form/UploadButton.js +2 -2
  394. package/dist/form/total-form.js +32 -32
  395. package/dist/icons.js +6 -6
  396. package/dist/layout/Box.js +6 -6
  397. package/dist/layout/ContentToolbar.js +11 -11
  398. package/dist/layout/Screen.js +7 -7
  399. package/dist/layout/SettingCard.js +18 -18
  400. package/dist/layout/SettingsLayout.js +3 -3
  401. package/dist/layout/Stack.js +7 -7
  402. package/dist/layout/TableFilter.js +3 -3
  403. package/dist/locales.js +11 -11
  404. package/dist/native/chunks/{chunk-2MFMON74.js → chunk-EZHCNYQO.js} +67 -33
  405. package/dist/native/chunks/chunk-EZHCNYQO.js.map +1 -0
  406. package/dist/native/chunks/{chunk-H22XVP5O.js → chunk-TZPNJ4AU.js} +2 -2
  407. package/dist/native/data-display/EmptyState.js +2 -2
  408. package/dist/native/data-display/ErrorState.js +1 -1
  409. package/dist/native/data-display/FleetMap.js +2 -2
  410. package/dist/native/form/Button.js +1 -1
  411. package/dist/navigation/AppHeader.js +8 -8
  412. package/dist/navigation/NavigationMenu.js +4 -4
  413. package/dist/navigation/Pagination.js +4 -4
  414. package/dist/navigation/SectionNav.js +6 -6
  415. package/dist/navigation/Tabs.js +2 -2
  416. package/dist/provider.js +6 -6
  417. package/dist/pt-BR.js +5 -5
  418. package/dist/social-login-button.js +5 -5
  419. package/dist/tokens.js +4 -4
  420. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.d.ts +17 -0
  421. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.d.ts.map +1 -0
  422. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.metrics.d.ts +33 -0
  423. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.metrics.d.ts.map +1 -0
  424. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.parts.d.ts +61 -0
  425. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.parts.d.ts.map +1 -0
  426. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.styles.d.ts +51 -0
  427. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.styles.d.ts.map +1 -0
  428. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.types.d.ts +175 -0
  429. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.types.d.ts.map +1 -0
  430. package/dist/types/components/feedback/SequenceResolver/index.d.ts +3 -0
  431. package/dist/types/components/feedback/SequenceResolver/index.d.ts.map +1 -0
  432. package/dist/types/components/feedback/SequenceResolver/sequence-model.d.ts +85 -0
  433. package/dist/types/components/feedback/SequenceResolver/sequence-model.d.ts.map +1 -0
  434. package/dist/types/components/feedback/SequenceResolver/useSequenceRun.d.ts +24 -0
  435. package/dist/types/components/feedback/SequenceResolver/useSequenceRun.d.ts.map +1 -0
  436. package/dist/types/components/feedback/index.d.ts +1 -0
  437. package/dist/types/components/feedback/index.d.ts.map +1 -1
  438. package/dist/types/components/form/Button/Button.d.ts.map +1 -1
  439. package/dist/types/components/form/Button/Button.native.loading.d.ts +36 -0
  440. package/dist/types/components/form/Button/Button.native.loading.d.ts.map +1 -0
  441. package/dist/types-native/components/form/Button/Button.native.d.ts.map +1 -1
  442. package/dist/types-native/components/form/Button/Button.native.loading.d.ts +36 -0
  443. package/dist/types-native/components/form/Button/Button.native.loading.d.ts.map +1 -0
  444. package/dist/user-avatar.js +5 -5
  445. package/dist/utility/WorkflowStep.js +3 -3
  446. package/package.json +5 -1
  447. package/src/components/feedback/SequenceResolver/SequenceResolver.md +136 -0
  448. package/src/components/feedback/SequenceResolver/SequenceResolver.metrics.ts +26 -0
  449. package/src/components/feedback/SequenceResolver/SequenceResolver.parts.tsx +307 -0
  450. package/src/components/feedback/SequenceResolver/SequenceResolver.styles.ts +238 -0
  451. package/src/components/feedback/SequenceResolver/SequenceResolver.tsx +179 -0
  452. package/src/components/feedback/SequenceResolver/SequenceResolver.types.ts +185 -0
  453. package/src/components/feedback/SequenceResolver/index.ts +14 -0
  454. package/src/components/feedback/SequenceResolver/sequence-model.ts +181 -0
  455. package/src/components/feedback/SequenceResolver/useSequenceRun.ts +205 -0
  456. package/src/components/feedback/index.ts +1 -0
  457. package/src/components/form/Button/Button.md +4 -3
  458. package/src/components/form/Button/Button.native.loading.tsx +89 -0
  459. package/src/components/form/Button/Button.native.tsx +14 -24
  460. package/src/components/form/Button/Button.tsx +47 -16
  461. package/dist/chunk-364NH2NY.js.map +0 -1
  462. package/dist/chunk-6YIKVXAV.js +0 -1
  463. package/dist/native/chunks/chunk-2MFMON74.js.map +0 -1
  464. /package/dist/{chunk-6YIKVXAV.js.map → _internal/components/feedback/SequenceResolver/SequenceResolver.js.map} +0 -0
  465. /package/dist/{chunk-75FHDUJW.js.map → chunk-2D4WKET2.js.map} +0 -0
  466. /package/dist/{chunk-3O2OJW4O.js.map → chunk-2QO3BKUQ.js.map} +0 -0
  467. /package/dist/{chunk-MA6ENJDP.js.map → chunk-2VHAD4NE.js.map} +0 -0
  468. /package/dist/{chunk-FJ3UZ4RC.js.map → chunk-33MMQHYU.js.map} +0 -0
  469. /package/dist/{chunk-CBO46LJH.js.map → chunk-3HSLEUVW.js.map} +0 -0
  470. /package/dist/{chunk-6VTOGR36.js.map → chunk-3XZZSHE5.js.map} +0 -0
  471. /package/dist/{chunk-BLINEMVO.js.map → chunk-3YLRR4JM.js.map} +0 -0
  472. /package/dist/{chunk-PD7MKJCM.js.map → chunk-4AJY7HMH.js.map} +0 -0
  473. /package/dist/{chunk-VWVA74JY.js.map → chunk-4HUSG5MR.js.map} +0 -0
  474. /package/dist/{chunk-7CPLKAL6.js.map → chunk-4M5GEKPM.js.map} +0 -0
  475. /package/dist/{chunk-WEMI4PV7.js.map → chunk-4MQ6XTIJ.js.map} +0 -0
  476. /package/dist/{chunk-3MQZBBUW.js.map → chunk-5463SZOH.js.map} +0 -0
  477. /package/dist/{chunk-CAX3NFFE.js.map → chunk-555TUQ7E.js.map} +0 -0
  478. /package/dist/{chunk-5KGABAQB.js.map → chunk-5752357K.js.map} +0 -0
  479. /package/dist/{chunk-ZOLUUX4B.js.map → chunk-5J7SA4CZ.js.map} +0 -0
  480. /package/dist/{chunk-5AQLJ4AL.js.map → chunk-62XVHRTX.js.map} +0 -0
  481. /package/dist/{chunk-SO5OU2ZV.js.map → chunk-64AOS2WA.js.map} +0 -0
  482. /package/dist/{chunk-75I42HHE.js.map → chunk-66QQ7YQN.js.map} +0 -0
  483. /package/dist/{chunk-7KZEQJPQ.js.map → chunk-6J7RGNSF.js.map} +0 -0
  484. /package/dist/{chunk-GCBWZ3MX.js.map → chunk-6LMYQJZP.js.map} +0 -0
  485. /package/dist/{chunk-4SQ2WCZA.js.map → chunk-6MOJK2QT.js.map} +0 -0
  486. /package/dist/{chunk-Q6MZHT2F.js.map → chunk-6RTE4UNO.js.map} +0 -0
  487. /package/dist/{chunk-NIZUFPV3.js.map → chunk-72GJRV5J.js.map} +0 -0
  488. /package/dist/{chunk-LYB6YYTG.js.map → chunk-72OG3AGH.js.map} +0 -0
  489. /package/dist/{chunk-Y46R26TE.js.map → chunk-7AC2UGTU.js.map} +0 -0
  490. /package/dist/{chunk-NPSARV2I.js.map → chunk-7P5PNRBT.js.map} +0 -0
  491. /package/dist/{chunk-RPKUZDRY.js.map → chunk-7QXEEZFO.js.map} +0 -0
  492. /package/dist/{chunk-SUXT6QAY.js.map → chunk-7RG37FVT.js.map} +0 -0
  493. /package/dist/{chunk-5F7HYYGM.js.map → chunk-7ZROYGUG.js.map} +0 -0
  494. /package/dist/{chunk-LY5I3ZSV.js.map → chunk-A2YLFKQU.js.map} +0 -0
  495. /package/dist/{chunk-BEYLI32I.js.map → chunk-A5NXBOWS.js.map} +0 -0
  496. /package/dist/{chunk-7TKQIZ3K.js.map → chunk-AAREDFH6.js.map} +0 -0
  497. /package/dist/{chunk-4QGPRORO.js.map → chunk-AEYLFBZT.js.map} +0 -0
  498. /package/dist/{chunk-VPGDYI63.js.map → chunk-AKBL7S7A.js.map} +0 -0
  499. /package/dist/{chunk-6DGNMASB.js.map → chunk-ALREWFRX.js.map} +0 -0
  500. /package/dist/{chunk-NQ6P7O7C.js.map → chunk-ASZGMKB4.js.map} +0 -0
  501. /package/dist/{chunk-CWCNLITK.js.map → chunk-AXZCCX7O.js.map} +0 -0
  502. /package/dist/{chunk-FVL6U72V.js.map → chunk-B2JYQBO4.js.map} +0 -0
  503. /package/dist/{chunk-IU2WSJ4F.js.map → chunk-BARTUKJU.js.map} +0 -0
  504. /package/dist/{chunk-4JNC5AEF.js.map → chunk-BTGXHQX3.js.map} +0 -0
  505. /package/dist/{chunk-VMTOLAZ5.js.map → chunk-BWFQEASG.js.map} +0 -0
  506. /package/dist/{chunk-MKBIIYJM.js.map → chunk-C47LBKEG.js.map} +0 -0
  507. /package/dist/{chunk-2K2Q7VGV.js.map → chunk-C5JCARNE.js.map} +0 -0
  508. /package/dist/{chunk-LBEZ7A3F.js.map → chunk-C7CIUDXZ.js.map} +0 -0
  509. /package/dist/{chunk-YWXCLPCX.js.map → chunk-CO7GH3W7.js.map} +0 -0
  510. /package/dist/{chunk-ARVLS57B.js.map → chunk-CW6Y32N2.js.map} +0 -0
  511. /package/dist/{chunk-LZJHHMOF.js.map → chunk-DRJL3JHR.js.map} +0 -0
  512. /package/dist/{chunk-7IXXASQ6.js.map → chunk-DXFKPY2K.js.map} +0 -0
  513. /package/dist/{chunk-FR2RJXHS.js.map → chunk-EBCEDBHX.js.map} +0 -0
  514. /package/dist/{chunk-BRHRK7BK.js.map → chunk-ENRB6PIN.js.map} +0 -0
  515. /package/dist/{chunk-J5QNJERV.js.map → chunk-F6IMOMA3.js.map} +0 -0
  516. /package/dist/{chunk-YTDUIU7X.js.map → chunk-F6LZHF4O.js.map} +0 -0
  517. /package/dist/{chunk-725H45MT.js.map → chunk-FAIQCGSL.js.map} +0 -0
  518. /package/dist/{chunk-HVGQH54G.js.map → chunk-FTDGFWB5.js.map} +0 -0
  519. /package/dist/{chunk-P7VAMJFJ.js.map → chunk-GFXS5PJL.js.map} +0 -0
  520. /package/dist/{chunk-YEKPQAOW.js.map → chunk-GQ2T44BC.js.map} +0 -0
  521. /package/dist/{chunk-JA3WJPXH.js.map → chunk-GSXYXMCV.js.map} +0 -0
  522. /package/dist/{chunk-IZ7JTG3Z.js.map → chunk-GTT5UKKO.js.map} +0 -0
  523. /package/dist/{chunk-WDSJ6SVY.js.map → chunk-GXSHLMT4.js.map} +0 -0
  524. /package/dist/{chunk-ULK4AGG4.js.map → chunk-HTGK7QCX.js.map} +0 -0
  525. /package/dist/{chunk-Y3LK6ZQG.js.map → chunk-I2KAN3YB.js.map} +0 -0
  526. /package/dist/{chunk-M5DBOM7R.js.map → chunk-ICRVLGWD.js.map} +0 -0
  527. /package/dist/{chunk-BEHM2VLH.js.map → chunk-IQ2U5MVO.js.map} +0 -0
  528. /package/dist/{chunk-LABIUXDM.js.map → chunk-J7C7FPVO.js.map} +0 -0
  529. /package/dist/{chunk-CYH5QQUP.js.map → chunk-KHIUYLKY.js.map} +0 -0
  530. /package/dist/{chunk-PPEHBI5O.js.map → chunk-KXTNTDRD.js.map} +0 -0
  531. /package/dist/{chunk-IBOFASAZ.js.map → chunk-LC6ND4ET.js.map} +0 -0
  532. /package/dist/{chunk-BF3SGOWT.js.map → chunk-LG52LMAM.js.map} +0 -0
  533. /package/dist/{chunk-3Y7LSMGV.js.map → chunk-LH4VKUZC.js.map} +0 -0
  534. /package/dist/{chunk-CFDWKQZT.js.map → chunk-LODYTVOO.js.map} +0 -0
  535. /package/dist/{chunk-Y2CCXB7R.js.map → chunk-LUNN5GTB.js.map} +0 -0
  536. /package/dist/{chunk-ACBHZG3Z.js.map → chunk-M74YHHJE.js.map} +0 -0
  537. /package/dist/{chunk-BGGVYKVZ.js.map → chunk-MA6SUE7F.js.map} +0 -0
  538. /package/dist/{chunk-AT6UKTH4.js.map → chunk-MHFXJRLD.js.map} +0 -0
  539. /package/dist/{chunk-3BDMYTH6.js.map → chunk-MHLYX6QW.js.map} +0 -0
  540. /package/dist/{chunk-FXECKKPW.js.map → chunk-MO4FFK62.js.map} +0 -0
  541. /package/dist/{chunk-SAKSIN7E.js.map → chunk-MQVIYTH5.js.map} +0 -0
  542. /package/dist/{chunk-NKBCUR4V.js.map → chunk-MSC43MCJ.js.map} +0 -0
  543. /package/dist/{chunk-RHVJ3L4U.js.map → chunk-MWPD2BXO.js.map} +0 -0
  544. /package/dist/{chunk-TSID4257.js.map → chunk-N34AOGK3.js.map} +0 -0
  545. /package/dist/{chunk-NZBEE2PR.js.map → chunk-N3LW5ER5.js.map} +0 -0
  546. /package/dist/{chunk-Q3HYEAVQ.js.map → chunk-N3ZOZWP5.js.map} +0 -0
  547. /package/dist/{chunk-AO4NDR6W.js.map → chunk-NTO5DALI.js.map} +0 -0
  548. /package/dist/{chunk-VQSBZPKO.js.map → chunk-NYWAAXDX.js.map} +0 -0
  549. /package/dist/{chunk-CHGUN7OF.js.map → chunk-O6SAU5JA.js.map} +0 -0
  550. /package/dist/{chunk-3FDSXSEP.js.map → chunk-OE3SQOZV.js.map} +0 -0
  551. /package/dist/{chunk-VLH3IMJG.js.map → chunk-OFXCSLGX.js.map} +0 -0
  552. /package/dist/{chunk-E54XIRY2.js.map → chunk-PIP7XII2.js.map} +0 -0
  553. /package/dist/{chunk-QWSYHENP.js.map → chunk-PTQRJEPN.js.map} +0 -0
  554. /package/dist/{chunk-S5VIN3EB.js.map → chunk-Q6PRGXR2.js.map} +0 -0
  555. /package/dist/{chunk-DQ3O252B.js.map → chunk-QCNUMOTL.js.map} +0 -0
  556. /package/dist/{chunk-XZE5FIRB.js.map → chunk-QCQWOSSD.js.map} +0 -0
  557. /package/dist/{chunk-TRYYYWV3.js.map → chunk-QIYX33SH.js.map} +0 -0
  558. /package/dist/{chunk-RGVNXES5.js.map → chunk-QQHZBJMU.js.map} +0 -0
  559. /package/dist/{chunk-XZFTRGRW.js.map → chunk-QVO4SIS7.js.map} +0 -0
  560. /package/dist/{chunk-WJEJ65TF.js.map → chunk-QYX4567K.js.map} +0 -0
  561. /package/dist/{chunk-7JKDB5J5.js.map → chunk-R53ZOW4B.js.map} +0 -0
  562. /package/dist/{chunk-HSIUVFXE.js.map → chunk-RA6W37NZ.js.map} +0 -0
  563. /package/dist/{chunk-HDTFLW42.js.map → chunk-REMODSVN.js.map} +0 -0
  564. /package/dist/{chunk-P4LR2GLN.js.map → chunk-RIDCGFGM.js.map} +0 -0
  565. /package/dist/{chunk-RNQ2PGBB.js.map → chunk-RKVS5AA6.js.map} +0 -0
  566. /package/dist/{chunk-MKNW4FRR.js.map → chunk-RS576GOH.js.map} +0 -0
  567. /package/dist/{chunk-NIENIKZ5.js.map → chunk-SCAPSX6T.js.map} +0 -0
  568. /package/dist/{chunk-HG2YLNGJ.js.map → chunk-SFVHZAGE.js.map} +0 -0
  569. /package/dist/{chunk-5HFB4WFE.js.map → chunk-T743IIER.js.map} +0 -0
  570. /package/dist/{chunk-C6LW34TV.js.map → chunk-THD3N4BJ.js.map} +0 -0
  571. /package/dist/{chunk-IDRVQVDL.js.map → chunk-TNDTEI6D.js.map} +0 -0
  572. /package/dist/{chunk-U2QV4TTZ.js.map → chunk-TR7ZA67L.js.map} +0 -0
  573. /package/dist/{chunk-EP3DRILI.js.map → chunk-U36BXXQ7.js.map} +0 -0
  574. /package/dist/{chunk-AJ5LXKLQ.js.map → chunk-U4G3KY6L.js.map} +0 -0
  575. /package/dist/{chunk-UAFSEZ2E.js.map → chunk-UQUN2NGE.js.map} +0 -0
  576. /package/dist/{chunk-6A4PTK5Q.js.map → chunk-V4JMZZGH.js.map} +0 -0
  577. /package/dist/{chunk-72L5C74V.js.map → chunk-VBGC7G4F.js.map} +0 -0
  578. /package/dist/{chunk-IWJTLCTF.js.map → chunk-VD72JGHA.js.map} +0 -0
  579. /package/dist/{chunk-TVXUOJAL.js.map → chunk-VJG43WKU.js.map} +0 -0
  580. /package/dist/{chunk-H7QTDKA6.js.map → chunk-VMN6KG2U.js.map} +0 -0
  581. /package/dist/{chunk-YRF7WFAQ.js.map → chunk-WA6F4NOO.js.map} +0 -0
  582. /package/dist/{chunk-HOJL2GKW.js.map → chunk-WC3W36AM.js.map} +0 -0
  583. /package/dist/{chunk-OQW4OERS.js.map → chunk-WNIL2KTB.js.map} +0 -0
  584. /package/dist/{chunk-NQYC7V5N.js.map → chunk-WOSUYOAU.js.map} +0 -0
  585. /package/dist/{chunk-DDNUPFPE.js.map → chunk-WT7VZDTI.js.map} +0 -0
  586. /package/dist/{chunk-DOWVAC4U.js.map → chunk-XODBYGTH.js.map} +0 -0
  587. /package/dist/{chunk-HDXUQKJ5.js.map → chunk-XRDH24J7.js.map} +0 -0
  588. /package/dist/{chunk-DQKMOGYZ.js.map → chunk-XYFBJH6F.js.map} +0 -0
  589. /package/dist/{chunk-SZSS5KKX.js.map → chunk-XYSE2QZN.js.map} +0 -0
  590. /package/dist/{chunk-MIUPTZS6.js.map → chunk-Y4KR4LT2.js.map} +0 -0
  591. /package/dist/{chunk-D7PVIC33.js.map → chunk-Y7YJYUNV.js.map} +0 -0
  592. /package/dist/{chunk-GHP5JLL3.js.map → chunk-YASSCBWN.js.map} +0 -0
  593. /package/dist/{chunk-QLJU7UUI.js.map → chunk-YH7G44WL.js.map} +0 -0
  594. /package/dist/{chunk-FS55MQ4Q.js.map → chunk-YNDTLBOH.js.map} +0 -0
  595. /package/dist/{chunk-6E4L53DF.js.map → chunk-YZX4DVRS.js.map} +0 -0
  596. /package/dist/{chunk-NDQJDA7O.js.map → chunk-Z7COWR4K.js.map} +0 -0
  597. /package/dist/{chunk-NYA26GV2.js.map → chunk-ZCCKIWZU.js.map} +0 -0
  598. /package/dist/{chunk-J32XJALK.js.map → chunk-ZTPB7PVI.js.map} +0 -0
  599. /package/dist/{chunk-NKHNUTTY.js.map → chunk-ZXHODKHH.js.map} +0 -0
  600. /package/dist/{chunk-7LOCLC24.js.map → chunk-ZYKDUKAH.js.map} +0 -0
  601. /package/dist/native/chunks/{chunk-H22XVP5O.js.map → chunk-TZPNJ4AU.js.map} +0 -0
@@ -0,0 +1,238 @@
1
+ import type { SxProps, Theme } from '@mui/material/styles/index.js';
2
+
3
+ import { rem, sxRem } from '../../../tokens/relative';
4
+ import { softSignal } from '../../../tokens/surfaces';
5
+ import { SEQUENCE_METRICS } from './SequenceResolver.metrics';
6
+
7
+ /**
8
+ * The paper's column: chrome (handle, header, progress) on top, the screen's
9
+ * body below — one gap, as the prototype draws it. The body is the ONLY scroll
10
+ * region, so Back, the step label, close and the progress never scroll away
11
+ * with a long step. A title focused by script (`tabIndex={-1}`, the host's
12
+ * included) is not a control and draws no focus ring.
13
+ */
14
+ export const columnSx: SxProps<Theme> = {
15
+ display: 'flex',
16
+ flexDirection: 'column',
17
+ flex: '1 1 auto',
18
+ minHeight: 0,
19
+ gap: 2.25,
20
+ '& [tabindex="-1"]:focus': { outline: 0 },
21
+ };
22
+
23
+ /** The chrome above the body: never shrinks, never scrolls. */
24
+ export const chromeSx: SxProps<Theme> = { display: 'flex', flexDirection: 'column', gap: 2.25, flex: 'none' };
25
+
26
+ /** The screen's body: takes what the paper has left and scrolls inside it. */
27
+ export const scrollBodySx: SxProps<Theme> = {
28
+ display: 'flex',
29
+ flexDirection: 'column',
30
+ gap: 2.25,
31
+ flex: '1 1 auto',
32
+ minHeight: 0,
33
+ overflowY: 'auto',
34
+ overscrollBehavior: 'contain',
35
+ // The body's children keep their own height and the BODY scrolls: a
36
+ // shrinking child (the intro's clipped list, a host's step) would
37
+ // otherwise be crushed instead (320×568, 700×420).
38
+ '& > *': { flexShrink: 0 },
39
+ // Room inside the scroll edge for focus rings and the primary's shadow,
40
+ // which an `overflow` box would otherwise clip; the negative margin keeps
41
+ // the content where the prototype puts it.
42
+ px: 0.5,
43
+ mx: -0.5,
44
+ pb: 0.5,
45
+ };
46
+
47
+ /**
48
+ * The paper stops scrolling itself and lets its one child (the Dialog's padded
49
+ * body box around `columnSx`) shrink, so the height cap reaches the body.
50
+ * Below the sheet breakpoint the paper is also capped at 95% of the viewport.
51
+ */
52
+ export function paperSx(touch: boolean): SxProps<Theme> {
53
+ const share = SEQUENCE_METRICS.sheetMaxHeightPercent;
54
+ const column = {
55
+ overflowY: 'hidden',
56
+ '& > *': { display: 'flex', flexDirection: 'column', flex: '1 1 auto', minHeight: 0 },
57
+ } as const;
58
+ if (!touch) return column;
59
+ return {
60
+ ...column,
61
+ maxHeight: `${share}vh`,
62
+ '@supports (height: 100dvh)': { maxHeight: `${share}dvh` },
63
+ };
64
+ }
65
+
66
+ /** The end screen's button: a step down from the sentence, at the touch-target height on a phone. */
67
+ export function doneConfirmSx(): SxProps<Theme> {
68
+ return { mt: 1, minHeight: sxRem(SEQUENCE_METRICS.touchTarget) };
69
+ }
70
+
71
+ /** "All in sequence": the prototype's 48px, and taller when a long label wraps. */
72
+ export const startAllSx: SxProps<Theme> = { height: 'auto', minHeight: sxRem(SEQUENCE_METRICS.startAllHeight) };
73
+
74
+ /** A button at the touch-target height below the sheet breakpoint; its own size above it. */
75
+ export function actionSx(touch: boolean): SxProps<Theme> {
76
+ // On a phone the footer's actions share the row while both labels fit on
77
+ // one line each; one that does not takes a full row instead of wrapping
78
+ // word by word, and a label wider than the row itself wraps inside it
79
+ // rather than pushing the sheet sideways.
80
+ return touch
81
+ ? { minHeight: sxRem(SEQUENCE_METRICS.touchTarget), flex: '1 1 max-content', minWidth: 0, maxWidth: '100%' }
82
+ : {};
83
+ }
84
+
85
+ export const handleSx: SxProps<Theme> = {
86
+ alignSelf: 'center',
87
+ width: sxRem(SEQUENCE_METRICS.handle.width),
88
+ height: sxRem(SEQUENCE_METRICS.handle.height),
89
+ borderRadius: sxRem(SEQUENCE_METRICS.handle.height / 2),
90
+ bgcolor: 'divider',
91
+ flex: 'none',
92
+ };
93
+
94
+ export const headerSx: SxProps<Theme> = {
95
+ display: 'flex',
96
+ alignItems: 'center',
97
+ justifyContent: 'space-between',
98
+ gap: 1.5,
99
+ };
100
+
101
+ /** Back and the label; on a narrow sheet the label takes its own row rather than squeeze. */
102
+ export const headerStartSx: SxProps<Theme> = {
103
+ display: 'inline-flex',
104
+ flexWrap: 'wrap',
105
+ alignItems: 'center',
106
+ columnGap: 0.75,
107
+ minWidth: 0,
108
+ };
109
+
110
+ export const stepLabelSx: SxProps<Theme> = {
111
+ fontSize: sxRem(SEQUENCE_METRICS.stepLabel),
112
+ fontWeight: 500,
113
+ color: 'text.secondary',
114
+ minWidth: 0,
115
+ };
116
+
117
+ export function closeButtonSx(touch: boolean): SxProps<Theme> {
118
+ const size = touch ? SEQUENCE_METRICS.closeSize.touch : SEQUENCE_METRICS.closeSize.pointer;
119
+ return { width: sxRem(size), height: sxRem(size), color: 'text.secondary', flex: 'none' };
120
+ }
121
+
122
+ export function backButtonSx(touch: boolean): SxProps<Theme> {
123
+ return touch ? { flex: 'none', minHeight: sxRem(SEQUENCE_METRICS.touchTarget) } : { flex: 'none' };
124
+ }
125
+
126
+ export const titleSx: SxProps<Theme> = {
127
+ fontSize: sxRem(SEQUENCE_METRICS.title),
128
+ fontWeight: 500,
129
+ lineHeight: 1.25,
130
+ outline: 'none',
131
+ };
132
+
133
+ export const introListSx: SxProps<Theme> = {
134
+ display: 'flex',
135
+ flexDirection: 'column',
136
+ border: '1px solid',
137
+ borderColor: 'divider',
138
+ borderRadius: sxRem(SEQUENCE_METRICS.listRadius),
139
+ overflow: 'hidden',
140
+ m: 0,
141
+ p: 0,
142
+ listStyle: 'none',
143
+ };
144
+
145
+ export function categoryRowSx(last: boolean): SxProps<Theme> {
146
+ return {
147
+ display: 'flex',
148
+ alignItems: 'center',
149
+ gap: 1.5,
150
+ width: '100%',
151
+ minHeight: sxRem(SEQUENCE_METRICS.categoryMinHeight),
152
+ px: 1.75,
153
+ py: 1.25,
154
+ textAlign: 'left',
155
+ justifyContent: 'flex-start',
156
+ borderBottom: last ? 0 : '1px solid',
157
+ borderColor: 'divider',
158
+ '&:hover': { bgcolor: 'action.hover' },
159
+ '&.Mui-focusVisible': { bgcolor: 'action.focus' },
160
+ };
161
+ }
162
+
163
+ export const countBadgeSx: SxProps<Theme> = (theme: Theme) => ({
164
+ flex: 'none',
165
+ display: 'inline-flex',
166
+ alignItems: 'center',
167
+ justifyContent: 'center',
168
+ boxSizing: 'border-box',
169
+ minWidth: rem(theme, SEQUENCE_METRICS.countBadge),
170
+ height: rem(theme, SEQUENCE_METRICS.countBadge),
171
+ px: 0.75,
172
+ borderRadius: rem(theme, SEQUENCE_METRICS.countBadge / 2),
173
+ bgcolor: softSignal(theme, 'error'),
174
+ // The signal's deep step on its soft ground; the light step on a dark one.
175
+ color: theme.palette.mode === 'dark' ? 'error.light' : 'error.dark',
176
+ fontWeight: 500,
177
+ });
178
+
179
+ export const categoryTextSx: SxProps<Theme> = {
180
+ display: 'flex',
181
+ flexDirection: 'column',
182
+ gap: 0.25,
183
+ flex: '1 1 auto',
184
+ minWidth: 0,
185
+ };
186
+
187
+ export const categoryDescriptionSx: SxProps<Theme> = {
188
+ fontSize: sxRem(SEQUENCE_METRICS.categoryDescription),
189
+ color: 'text.secondary',
190
+ };
191
+
192
+ /**
193
+ * The step's footer, as the prototype draws each kind:
194
+ * - phone: the actions share the row (a label that does not fit takes a full
195
+ * row), no hairline;
196
+ * - pointer, `'split'`: two equal full-width columns, no hairline (limits, a purchase);
197
+ * - pointer, `'end'`: auto-width actions, right-aligned, over a hairline (restock).
198
+ */
199
+ export function footerSx(touch: boolean, layout: 'end' | 'split'): SxProps<Theme> {
200
+ if (touch) return { display: 'flex', flexWrap: 'wrap', gap: 1.25 };
201
+ if (layout === 'split') {
202
+ return { display: 'grid', gridAutoFlow: 'column', gridAutoColumns: 'minmax(0, 1fr)', gap: 1.25 };
203
+ }
204
+ return {
205
+ display: 'flex',
206
+ flexWrap: 'wrap',
207
+ justifyContent: 'flex-end',
208
+ alignItems: 'center',
209
+ gap: 1.25,
210
+ pt: 1.5,
211
+ borderTop: '1px solid',
212
+ borderColor: 'divider',
213
+ };
214
+ }
215
+
216
+ export function tertiarySx(touch: boolean): SxProps<Theme> {
217
+ return touch ? { alignSelf: 'flex-start', minHeight: sxRem(SEQUENCE_METRICS.touchTarget) } : { alignSelf: 'flex-start' };
218
+ }
219
+
220
+ export const doneSx: SxProps<Theme> = {
221
+ display: 'flex',
222
+ flexDirection: 'column',
223
+ alignItems: 'center',
224
+ gap: 1.25,
225
+ py: 1.5,
226
+ textAlign: 'center',
227
+ };
228
+
229
+ export const doneIconSx: SxProps<Theme> = {
230
+ fontSize: sxRem(SEQUENCE_METRICS.doneIcon),
231
+ color: 'success.main',
232
+ };
233
+
234
+ export const doneTitleSx: SxProps<Theme> = {
235
+ fontSize: sxRem(SEQUENCE_METRICS.doneTitle),
236
+ fontWeight: 500,
237
+ outline: 'none',
238
+ };
@@ -0,0 +1,179 @@
1
+ 'use client';
2
+
3
+ import Box from '@mui/material/Box/index.js';
4
+ import { useTheme } from '@mui/material/styles/index.js';
5
+ import useMediaQuery from '@mui/material/useMediaQuery/index.js';
6
+ import React, { useCallback, useId, useRef } from 'react';
7
+
8
+ import { Dialog } from '../Dialog';
9
+ import { currentOf, positionOf, progressOf, summaryOf, type RunState } from './sequence-model';
10
+ import { SequenceDoneBody, SequenceHeader, SequenceIntroBody, SequenceStepBody } from './SequenceResolver.parts';
11
+ import { SEQUENCE_METRICS } from './SequenceResolver.metrics';
12
+ import { chromeSx, columnSx, paperSx, scrollBodySx } from './SequenceResolver.styles';
13
+ import type { SequenceItem, SequenceResolverProps, SequenceStepApi } from './SequenceResolver.types';
14
+ import { useSequenceRun, type SequenceRun } from './useSequenceRun';
15
+
16
+ /** What the header's label says on the screen showing. */
17
+ function headerLabelOf<I extends SequenceItem, R>(
18
+ props: SequenceResolverProps<I, R>,
19
+ run: RunState<I, R>,
20
+ current: I | undefined,
21
+ ): string {
22
+ const { labels } = props;
23
+ if (props.intro) return labels.introStep;
24
+ if (!current) return labels.doneStep;
25
+ return labels.step(positionOf(run), summaryOf(run).total, current);
26
+ }
27
+
28
+ /** The header's back button, once a previous step exists and the host allows it. */
29
+ function backOf<I extends SequenceItem, R>(props: SequenceResolverProps<I, R>, state: SequenceRun<I, R>) {
30
+ const { intro, labels, canGoBack = true } = props;
31
+ if (intro || !canGoBack || state.run.visits.length === 0) return undefined;
32
+ return { label: labels.back, accessible: labels.backAccessible, onClick: state.back, disabled: state.busy };
33
+ }
34
+
35
+ /**
36
+ * Esc closes. `persistent` turns MUI's own Esc off together with the veil's
37
+ * click (the prototype's veil does nothing), so Esc is put back here; a popup
38
+ * inside a step that handles its own Esc stops it before it gets here.
39
+ */
40
+ function escapeCloses(close: () => void) {
41
+ return (event: React.KeyboardEvent): void => {
42
+ if (event.key !== 'Escape' || event.defaultPrevented) return;
43
+ event.stopPropagation();
44
+ close();
45
+ };
46
+ }
47
+
48
+ interface BodyProps<I extends SequenceItem, R> {
49
+ props: SequenceResolverProps<I, R>;
50
+ state: SequenceRun<I, R>;
51
+ current: I | undefined;
52
+ api: SequenceStepApi<R>;
53
+ titleId: string;
54
+ stepTitleRef: React.RefObject<HTMLElement | null>;
55
+ touch: boolean;
56
+ testId: string;
57
+ close: () => void;
58
+ }
59
+
60
+ /** The intro, the step on screen, or the end screen. */
61
+ function SequenceBody<I extends SequenceItem, R>(body: BodyProps<I, R>): React.JSX.Element {
62
+ const { props, state, current, api, titleId, stepTitleRef, touch, testId, close } = body;
63
+ if (props.intro) {
64
+ return <SequenceIntroBody intro={props.intro} titleId={titleId} testId={testId} screenKey="intro" />;
65
+ }
66
+ if (current) {
67
+ return (
68
+ <SequenceStepBody
69
+ step={props.renderStep(current, api)}
70
+ skip={{ label: props.labels.skip, onClick: state.skip }}
71
+ busy={state.busy}
72
+ error={state.error}
73
+ touch={touch}
74
+ testId={testId}
75
+ screenKey={`step:${current.key}`}
76
+ titleRef={stepTitleRef}
77
+ />
78
+ );
79
+ }
80
+ const summary = summaryOf(state.run);
81
+ return (
82
+ <SequenceDoneBody
83
+ done={typeof props.done === 'function' ? props.done(summary) : props.done}
84
+ titleId={titleId}
85
+ error={state.error}
86
+ touch={touch}
87
+ onConfirm={close}
88
+ testId={testId}
89
+ screenKey="done"
90
+ />
91
+ );
92
+ }
93
+
94
+ /**
95
+ * Resolve a queue of problems one at a time, in ONE dialog whose body is
96
+ * replaced step by step: a header with "‹ Back", the step's label and close,
97
+ * a progress bar, the host's step, and an end screen (FUT-3671).
98
+ *
99
+ * A centred `Dialog` from the `sm` breakpoint up; the `Dialog` inset
100
+ * bottom-sheet variant below it, never taller than 95% of the viewport. Either
101
+ * way the paper scrolls inside the viewport, so a long step is never cut off.
102
+ *
103
+ * The component owns the run — which step is on screen, what was answered or
104
+ * skipped, where Back returns to — and nothing about the domain: every step
105
+ * body, every word and every server call is the host's.
106
+ */
107
+ export function SequenceResolver<I extends SequenceItem, R = unknown>(
108
+ props: SequenceResolverProps<I, R>,
109
+ ): React.JSX.Element {
110
+ const { open, onClose, intro, labels } = props;
111
+ const testId = props.dataTestId ?? 'sequence-resolver';
112
+ const theme = useTheme();
113
+ const touch = useMediaQuery(theme.breakpoints.down(SEQUENCE_METRICS.sheetBreakpoint));
114
+ const titleId = `${useId()}-title`;
115
+ const stepTitleRef = useRef<HTMLElement | null>(null);
116
+ const titleRef = useCallback((node: HTMLElement | null) => {
117
+ stepTitleRef.current = node;
118
+ }, []);
119
+
120
+ const state = useSequenceRun<I, R>({
121
+ open,
122
+ active: open && !intro,
123
+ queue: props.queue,
124
+ onBack: props.onBack,
125
+ failed: labels.failed,
126
+ });
127
+ const { run, busy } = state;
128
+ const current = intro ? undefined : currentOf(run);
129
+ const close = (): void => onClose(summaryOf(run));
130
+ const api: SequenceStepApi<R> = {
131
+ resolve: state.resolve,
132
+ skip: state.skip,
133
+ back: state.back,
134
+ busy,
135
+ titleProps: { id: titleId, tabIndex: -1, ref: titleRef },
136
+ };
137
+
138
+ return (
139
+ <Dialog
140
+ open={open}
141
+ onClose={close}
142
+ persistent
143
+ variant={touch ? 'bottom-sheet' : 'default'}
144
+ size="sm"
145
+ aria-labelledby={titleId}
146
+ onKeyDown={escapeCloses(close)}
147
+ slotProps={{ paper: { sx: paperSx(touch) } }}
148
+ dataTestId={testId}
149
+ >
150
+ <Box sx={columnSx}>
151
+ <Box sx={chromeSx}>
152
+ <SequenceHeader
153
+ touch={touch}
154
+ label={headerLabelOf(props, run, current)}
155
+ back={backOf(props, state)}
156
+ closeLabel={labels.close}
157
+ onClose={close}
158
+ progress={intro ? 0 : progressOf(run)}
159
+ progressLabel={labels.progress}
160
+ testId={testId}
161
+ />
162
+ </Box>
163
+ <Box sx={scrollBodySx} data-testid={`${testId}-body`}>
164
+ <SequenceBody
165
+ props={props}
166
+ state={state}
167
+ current={current}
168
+ api={api}
169
+ titleId={titleId}
170
+ stepTitleRef={stepTitleRef}
171
+ touch={touch}
172
+ testId={testId}
173
+ close={close}
174
+ />
175
+ </Box>
176
+ </Box>
177
+ </Dialog>
178
+ );
179
+ }
@@ -0,0 +1,185 @@
1
+ import type * as React from 'react';
2
+
3
+ /**
4
+ * One entry of the queue a {@link SequenceResolverProps} walks through.
5
+ *
6
+ * Extend it with whatever the host's step needs (`item.payload`, an id, the
7
+ * row it came from): the component only reads `key` and `kindLabel`, and hands
8
+ * the WHOLE item back to `renderStep` and `onBack`.
9
+ */
10
+ export interface SequenceItem {
11
+ /** Stable identity across re-renders and refetches — what the run tracks. */
12
+ key: string;
13
+ /** The kind word the header shows next to the position ("Purchase"). */
14
+ kindLabel: string;
15
+ }
16
+
17
+ /** Where the run stands, handed to the end screen, `onClose` and `labels.step`. */
18
+ export interface SequenceSummary {
19
+ /** Steps answered with `resolve`. */
20
+ resolved: number;
21
+ /** Steps passed over with `skip`. */
22
+ skipped: number;
23
+ /** Every step of the run so far: answered + skipped + still ahead. */
24
+ total: number;
25
+ /**
26
+ * Problems the host reported as resolved TOGETHER with an answered step
27
+ * (`api.resolve(result, { alsoResolved })` — "apply to every sibling"),
28
+ * which never became steps. `resolved + alsoResolved` is what a close toast
29
+ * counts; the end screen's "N of M" counts steps.
30
+ */
31
+ alsoResolved: number;
32
+ }
33
+
34
+ /** What an answer can say besides its result. */
35
+ export interface SequenceResolveOptions {
36
+ /** How many OTHER problems this answer resolved too (siblings that never became steps). */
37
+ alsoResolved?: number;
38
+ }
39
+
40
+ /** A button a step puts in the resolver's footer. */
41
+ export interface SequenceAction {
42
+ label: string;
43
+ onClick: () => void;
44
+ /** Disabled on top of the resolver's own `busy`. */
45
+ disabled?: boolean;
46
+ }
47
+
48
+ /** What `renderStep` gets: the run's verbs and its state. */
49
+ export interface SequenceStepApi<R> {
50
+ /**
51
+ * Answer this step and move to the next one. Pass the result itself, or the
52
+ * PROMISE of it (the host's server write): the step stays on screen and
53
+ * `busy` until it settles; a rejection keeps it and shows the rejection's
54
+ * message. The result is what `onBack` receives if the reader returns.
55
+ */
56
+ resolve: (result: R | PromiseLike<R>, options?: SequenceResolveOptions) => void;
57
+ /** Leave this step unanswered and move on. */
58
+ skip: () => void;
59
+ /** Return to the previous step (the header's back button does the same). */
60
+ back: () => void;
61
+ /** True while a `resolve` promise or an `onBack` is pending — disable the step's own answers. */
62
+ busy: boolean;
63
+ /**
64
+ * Spread on the step's TITLE — the item's name, first and large. It names
65
+ * the dialog (`aria-labelledby`) and takes focus on every advance.
66
+ */
67
+ titleProps: {
68
+ id: string;
69
+ tabIndex: -1;
70
+ ref: React.RefCallback<HTMLElement>;
71
+ };
72
+ }
73
+
74
+ /** What a step renders: its body and, at most, two footer actions plus one tertiary. */
75
+ export interface SequenceStep {
76
+ /** The body: item name (spread `titleProps` on it), question, facts, inputs. */
77
+ content: React.ReactNode;
78
+ /** The step's verb ("Save limits"). Omit for a step answered from its body (a list of reasons). */
79
+ primary?: SequenceAction;
80
+ /**
81
+ * The secondary action. Omitted, it is SKIP with `labels.skip`; pass one to
82
+ * reword it ("Not bought yet") or to replace it (a split mode's "One reason
83
+ * only"); `false` removes it.
84
+ */
85
+ secondary?: SequenceAction | false;
86
+ /** One text button above the footer ("It was a stock count, not a loss"). */
87
+ tertiary?: SequenceAction;
88
+ /**
89
+ * How the footer lays its actions out on a pointer: `'end'` (default) —
90
+ * auto-width, right-aligned, over a hairline; `'split'` — two equal
91
+ * full-width columns, no hairline (a form step: limits, a purchase). On a
92
+ * phone the actions always share the row, with no hairline.
93
+ */
94
+ footer?: 'end' | 'split';
95
+ }
96
+
97
+ /** One kind on the intro screen. */
98
+ export interface SequenceCategory {
99
+ label: string;
100
+ description?: string;
101
+ /** How many problems of this kind there are. A kind at zero should not be listed. */
102
+ count: number;
103
+ /** Resolve only this kind: set the queue to it and drop `intro`. */
104
+ onPick: () => void;
105
+ }
106
+
107
+ /** The screen before the run: the kinds with their counts, and "resolve them all". */
108
+ export interface SequenceIntro {
109
+ title: string;
110
+ description?: string;
111
+ categories: SequenceCategory[];
112
+ startAllLabel: string;
113
+ /** Resolve every kind: set the queue to all of them and drop `intro`. */
114
+ onStartAll: () => void;
115
+ }
116
+
117
+ /** The end screen's words. */
118
+ export interface SequenceDone {
119
+ title: string;
120
+ description?: string;
121
+ /** The one button there; it closes the resolver. */
122
+ confirmLabel: string;
123
+ }
124
+
125
+ /** The chrome's words. The package ships none: every one is the host's. */
126
+ export interface SequenceResolverLabels {
127
+ /** The back button's visible word ("Back"); a chevron icon precedes it. */
128
+ back: string;
129
+ /** The back button's accessible name, when it says more ("Back to the previous problem"). Must contain `back`. */
130
+ backAccessible?: string;
131
+ /** The close button's accessible name. */
132
+ close: string;
133
+ /** The default secondary action: leave the step unanswered. */
134
+ skip: string;
135
+ /** The header label on a step: `"Problem 3 of 13 · Purchase"`. `position` is 1-based. */
136
+ step: (position: number, total: number, item: SequenceItem) => string;
137
+ /** The header label on the intro screen. */
138
+ introStep: string;
139
+ /** The header label on the end screen. */
140
+ doneStep: string;
141
+ /** The progress bar's accessible name. */
142
+ progress: string;
143
+ /** Shown when `onBack` / a `resolve` promise rejects with no message of its own. */
144
+ failed: string;
145
+ }
146
+
147
+ export interface SequenceResolverProps<I extends SequenceItem = SequenceItem, R = unknown> {
148
+ open: boolean;
149
+ /**
150
+ * The close button, Esc, and the end screen's button. Gets where the run
151
+ * stood, for the host's "N resolved · Undo" toast.
152
+ */
153
+ onClose: (summary: SequenceSummary) => void;
154
+ /**
155
+ * While given, the intro screen shows instead of the run. The host drops it
156
+ * (and sets `queue`) in the same update as a category's `onPick` / `onStartAll`.
157
+ */
158
+ intro?: SequenceIntro;
159
+ /**
160
+ * The problems to walk, in order. The host's live data: it may shrink while
161
+ * the run goes (an answer that resolves siblings too) or grow; the run keeps
162
+ * pointing at the next unresolved key and never runs past the end.
163
+ */
164
+ queue: readonly I[];
165
+ /** The body and actions of the current step. */
166
+ renderStep: (item: I, api: SequenceStepApi<R>) => SequenceStep;
167
+ /**
168
+ * Undo the previous answer before showing its step again — the host's server
169
+ * inverse. Called only when the step being returned to was RESOLVED (a skipped
170
+ * one has nothing to undo). A rejection keeps the current step and shows its message.
171
+ */
172
+ onBack?: (item: I, result: R) => Promise<void> | void;
173
+ /** Offer the back button at all (default `true`). It shows only once a previous step exists. */
174
+ canGoBack?: boolean;
175
+ /** The end screen's words, from the run's summary. */
176
+ done: SequenceDone | ((summary: SequenceSummary) => SequenceDone);
177
+ labels: SequenceResolverLabels;
178
+ /**
179
+ * Base test id (default `sequence-resolver`). Parts get `${id}-back`,
180
+ * `${id}-close`, `${id}-step-label`, `${id}-progress`, `${id}-category-${index}`,
181
+ * `${id}-start-all`, `${id}-primary`, `${id}-secondary`, `${id}-tertiary`,
182
+ * `${id}-error`, `${id}-done`, `${id}-done-confirm`.
183
+ */
184
+ dataTestId?: string;
185
+ }
@@ -0,0 +1,14 @@
1
+ export { SequenceResolver } from './SequenceResolver';
2
+ export type {
3
+ SequenceAction,
4
+ SequenceCategory,
5
+ SequenceDone,
6
+ SequenceIntro,
7
+ SequenceItem,
8
+ SequenceResolverLabels,
9
+ SequenceResolveOptions,
10
+ SequenceResolverProps,
11
+ SequenceStep,
12
+ SequenceStepApi,
13
+ SequenceSummary,
14
+ } from './SequenceResolver.types';