@12-apps/ui 6.77.2 → 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 (581) 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-HXCUKZOB.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-UXQVJXQ3.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-7FFY4LJY.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-YOXYSAUI.js → chunk-5USHYSCO.js} +2 -2
  219. package/dist/{chunk-5AQLJ4AL.js → chunk-62XVHRTX.js} +2 -2
  220. package/dist/{chunk-SO5OU2ZV.js → chunk-64AOS2WA.js} +2 -2
  221. package/dist/{chunk-75I42HHE.js → chunk-66QQ7YQN.js} +2 -2
  222. package/dist/{chunk-GG7IOJAG.js → chunk-6J7RGNSF.js} +4 -4
  223. package/dist/{chunk-GCBWZ3MX.js → chunk-6LMYQJZP.js} +2 -2
  224. package/dist/{chunk-4SQ2WCZA.js → chunk-6MOJK2QT.js} +2 -2
  225. package/dist/{chunk-Q6MZHT2F.js → chunk-6RTE4UNO.js} +5 -5
  226. package/dist/{chunk-CW5Z67NA.js → chunk-72GJRV5J.js} +2 -2
  227. package/dist/{chunk-LYB6YYTG.js → chunk-72OG3AGH.js} +2 -2
  228. package/dist/{chunk-Y46R26TE.js → chunk-7AC2UGTU.js} +3 -3
  229. package/dist/{chunk-NPSARV2I.js → chunk-7P5PNRBT.js} +8 -8
  230. package/dist/{chunk-RPKUZDRY.js → chunk-7QXEEZFO.js} +2 -2
  231. package/dist/{chunk-SUXT6QAY.js → chunk-7RG37FVT.js} +2 -2
  232. package/dist/{chunk-5F7HYYGM.js → chunk-7ZROYGUG.js} +3 -3
  233. package/dist/{chunk-LY5I3ZSV.js → chunk-A2YLFKQU.js} +4 -4
  234. package/dist/{chunk-WOUJSKQB.js → chunk-A5NXBOWS.js} +7 -7
  235. package/dist/{chunk-7TKQIZ3K.js → chunk-AAREDFH6.js} +2 -2
  236. package/dist/{chunk-X2GWR75Q.js → chunk-AEYLFBZT.js} +3 -3
  237. package/dist/{chunk-VPGDYI63.js → chunk-AKBL7S7A.js} +5 -5
  238. package/dist/{chunk-6DGNMASB.js → chunk-ALREWFRX.js} +4 -4
  239. package/dist/{chunk-NQ6P7O7C.js → chunk-ASZGMKB4.js} +2 -2
  240. package/dist/{chunk-CWCNLITK.js → chunk-AXZCCX7O.js} +2 -2
  241. package/dist/{chunk-FVL6U72V.js → chunk-B2JYQBO4.js} +2 -2
  242. package/dist/{chunk-IU2WSJ4F.js → chunk-BARTUKJU.js} +2 -2
  243. package/dist/{chunk-4JNC5AEF.js → chunk-BTGXHQX3.js} +2 -2
  244. package/dist/{chunk-VMTOLAZ5.js → chunk-BWFQEASG.js} +5 -5
  245. package/dist/{chunk-7LMR2H7O.js → chunk-C47LBKEG.js} +4 -4
  246. package/dist/{chunk-2K2Q7VGV.js → chunk-C5JCARNE.js} +2 -2
  247. package/dist/{chunk-OK3OJGJY.js → chunk-C7CIUDXZ.js} +3 -3
  248. package/dist/chunk-CHP3QIS3.js +218 -0
  249. package/dist/chunk-CHP3QIS3.js.map +1 -0
  250. package/dist/{chunk-YWXCLPCX.js → chunk-CO7GH3W7.js} +2 -2
  251. package/dist/{chunk-ARVLS57B.js → chunk-CW6Y32N2.js} +2 -2
  252. package/dist/{chunk-LZJHHMOF.js → chunk-DRJL3JHR.js} +2 -2
  253. package/dist/chunk-DTNXP7ZS.js +1 -0
  254. package/dist/chunk-DTNXP7ZS.js.map +1 -0
  255. package/dist/{chunk-7IXXASQ6.js → chunk-DXFKPY2K.js} +4 -4
  256. package/dist/chunk-E53MMMDA.js +209 -0
  257. package/dist/chunk-E53MMMDA.js.map +1 -0
  258. package/dist/{chunk-C2NNJMVY.js → chunk-EBCEDBHX.js} +3 -3
  259. package/dist/{chunk-BRHRK7BK.js → chunk-ENRB6PIN.js} +2 -2
  260. package/dist/{chunk-HHFVDOA7.js → chunk-F6IMOMA3.js} +3 -3
  261. package/dist/{chunk-YTDUIU7X.js → chunk-F6LZHF4O.js} +2 -2
  262. package/dist/{chunk-NZXRPWPW.js → chunk-FAIQCGSL.js} +5 -5
  263. package/dist/{chunk-HMWSMRLM.js → chunk-FTDGFWB5.js} +5 -5
  264. package/dist/{chunk-ZE4HF3KC.js → chunk-GFXS5PJL.js} +3 -3
  265. package/dist/{chunk-YEKPQAOW.js → chunk-GQ2T44BC.js} +2 -2
  266. package/dist/{chunk-ZAZOBTVS.js → chunk-GSXYXMCV.js} +3 -3
  267. package/dist/{chunk-IZ7JTG3Z.js → chunk-GTT5UKKO.js} +4 -4
  268. package/dist/{chunk-WDSJ6SVY.js → chunk-GXSHLMT4.js} +2 -2
  269. package/dist/chunk-HHPFWEJY.js +28 -0
  270. package/dist/chunk-HHPFWEJY.js.map +1 -0
  271. package/dist/{chunk-3EIRRLCQ.js → chunk-HTGK7QCX.js} +3 -3
  272. package/dist/{chunk-Y3LK6ZQG.js → chunk-I2KAN3YB.js} +2 -2
  273. package/dist/{chunk-M5DBOM7R.js → chunk-ICRVLGWD.js} +2 -2
  274. package/dist/{chunk-FVNY5BNV.js → chunk-IQ2U5MVO.js} +7 -7
  275. package/dist/{chunk-LABIUXDM.js → chunk-J7C7FPVO.js} +2 -2
  276. package/dist/{chunk-CYH5QQUP.js → chunk-KHIUYLKY.js} +4 -4
  277. package/dist/{chunk-PPEHBI5O.js → chunk-KXTNTDRD.js} +2 -2
  278. package/dist/{chunk-IBOFASAZ.js → chunk-LC6ND4ET.js} +2 -2
  279. package/dist/{chunk-2ONUSNPZ.js → chunk-LG52LMAM.js} +3 -3
  280. package/dist/{chunk-3Y7LSMGV.js → chunk-LH4VKUZC.js} +2 -2
  281. package/dist/{chunk-CFDWKQZT.js → chunk-LODYTVOO.js} +2 -2
  282. package/dist/{chunk-QITQFCFY.js → chunk-LUNN5GTB.js} +2 -2
  283. package/dist/{chunk-ACBHZG3Z.js → chunk-M74YHHJE.js} +5 -5
  284. package/dist/{chunk-BGGVYKVZ.js → chunk-MA6SUE7F.js} +4 -4
  285. package/dist/{chunk-AT6UKTH4.js → chunk-MHFXJRLD.js} +2 -2
  286. package/dist/{chunk-3BDMYTH6.js → chunk-MHLYX6QW.js} +4 -4
  287. package/dist/{chunk-FXECKKPW.js → chunk-MO4FFK62.js} +3 -3
  288. package/dist/{chunk-SAKSIN7E.js → chunk-MQVIYTH5.js} +2 -2
  289. package/dist/{chunk-X3DN2BE3.js → chunk-MSC43MCJ.js} +2 -2
  290. package/dist/{chunk-RHVJ3L4U.js → chunk-MWPD2BXO.js} +2 -2
  291. package/dist/{chunk-TSID4257.js → chunk-N34AOGK3.js} +7 -7
  292. package/dist/{chunk-NZBEE2PR.js → chunk-N3LW5ER5.js} +3 -3
  293. package/dist/{chunk-Q3HYEAVQ.js → chunk-N3ZOZWP5.js} +2 -2
  294. package/dist/{chunk-AO4NDR6W.js → chunk-NTO5DALI.js} +2 -2
  295. package/dist/{chunk-RVZMKGWQ.js → chunk-NYWAAXDX.js} +2 -2
  296. package/dist/{chunk-CHGUN7OF.js → chunk-O6SAU5JA.js} +2 -2
  297. package/dist/{chunk-TDWA2XFJ.js → chunk-OE3SQOZV.js} +2 -2
  298. package/dist/{chunk-VLH3IMJG.js → chunk-OFXCSLGX.js} +2 -2
  299. package/dist/{chunk-E54XIRY2.js → chunk-PIP7XII2.js} +5 -5
  300. package/dist/{chunk-SKIAWOUC.js → chunk-PTQRJEPN.js} +5 -5
  301. package/dist/{chunk-S5VIN3EB.js → chunk-Q6PRGXR2.js} +2 -2
  302. package/dist/{chunk-DQ3O252B.js → chunk-QCNUMOTL.js} +2 -2
  303. package/dist/{chunk-5IIHAYFF.js → chunk-QCQWOSSD.js} +2 -2
  304. package/dist/{chunk-Y2CHJLWD.js → chunk-QIYX33SH.js} +9 -9
  305. package/dist/{chunk-RGVNXES5.js → chunk-QQHZBJMU.js} +4 -4
  306. package/dist/{chunk-XZFTRGRW.js → chunk-QVO4SIS7.js} +2 -2
  307. package/dist/{chunk-OY437NRJ.js → chunk-QYX4567K.js} +2 -2
  308. package/dist/{chunk-7JKDB5J5.js → chunk-R53ZOW4B.js} +4 -4
  309. package/dist/{chunk-HSIUVFXE.js → chunk-RA6W37NZ.js} +2 -2
  310. package/dist/{chunk-HDTFLW42.js → chunk-REMODSVN.js} +2 -2
  311. package/dist/{chunk-R2ODLE6G.js → chunk-RIDCGFGM.js} +2 -2
  312. package/dist/{chunk-RNQ2PGBB.js → chunk-RKVS5AA6.js} +3 -3
  313. package/dist/{chunk-MKNW4FRR.js → chunk-RS576GOH.js} +7 -7
  314. package/dist/{chunk-NRADSKGH.js → chunk-SCAPSX6T.js} +2 -2
  315. package/dist/{chunk-HG2YLNGJ.js → chunk-SFVHZAGE.js} +2 -2
  316. package/dist/{chunk-5HFB4WFE.js → chunk-T743IIER.js} +3 -3
  317. package/dist/{chunk-C6LW34TV.js → chunk-THD3N4BJ.js} +2 -2
  318. package/dist/{chunk-IDRVQVDL.js → chunk-TNDTEI6D.js} +2 -2
  319. package/dist/{chunk-U2QV4TTZ.js → chunk-TR7ZA67L.js} +2 -2
  320. package/dist/chunk-TWAKMV5B.js +1 -0
  321. package/dist/chunk-TWAKMV5B.js.map +1 -0
  322. package/dist/{chunk-EP3DRILI.js → chunk-U36BXXQ7.js} +2 -2
  323. package/dist/{chunk-AJ5LXKLQ.js → chunk-U4G3KY6L.js} +6 -6
  324. package/dist/{chunk-UAFSEZ2E.js → chunk-UQUN2NGE.js} +2 -2
  325. package/dist/{chunk-6A4PTK5Q.js → chunk-V4JMZZGH.js} +5 -5
  326. package/dist/{chunk-5M7T36AT.js → chunk-VBGC7G4F.js} +3 -3
  327. package/dist/{chunk-IWJTLCTF.js → chunk-VD72JGHA.js} +3 -3
  328. package/dist/{chunk-4NG3LTRX.js → chunk-VJG43WKU.js} +2 -2
  329. package/dist/{chunk-BGSUSSAV.js → chunk-VMN6KG2U.js} +2 -2
  330. package/dist/{chunk-YRF7WFAQ.js → chunk-WA6F4NOO.js} +8 -8
  331. package/dist/{chunk-HOJL2GKW.js → chunk-WC3W36AM.js} +4 -4
  332. package/dist/{chunk-OQW4OERS.js → chunk-WNIL2KTB.js} +3 -3
  333. package/dist/{chunk-NQYC7V5N.js → chunk-WOSUYOAU.js} +5 -5
  334. package/dist/{chunk-DDNUPFPE.js → chunk-WT7VZDTI.js} +5 -5
  335. package/dist/{chunk-DOWVAC4U.js → chunk-XODBYGTH.js} +2 -2
  336. package/dist/{chunk-YNZUYZ2O.js → chunk-XRDH24J7.js} +2 -2
  337. package/dist/{chunk-DQKMOGYZ.js → chunk-XYFBJH6F.js} +4 -4
  338. package/dist/{chunk-ZCXQ4ZB6.js → chunk-XYSE2QZN.js} +2 -2
  339. package/dist/{chunk-MIUPTZS6.js → chunk-Y4KR4LT2.js} +2 -2
  340. package/dist/{chunk-D7PVIC33.js → chunk-Y7YJYUNV.js} +4 -4
  341. package/dist/{chunk-GHP5JLL3.js → chunk-YASSCBWN.js} +2 -2
  342. package/dist/{chunk-QLJU7UUI.js → chunk-YH7G44WL.js} +2 -2
  343. package/dist/chunk-YJBWDDW7.js +162 -0
  344. package/dist/chunk-YJBWDDW7.js.map +1 -0
  345. package/dist/{chunk-FS55MQ4Q.js → chunk-YNDTLBOH.js} +2 -2
  346. package/dist/{chunk-6E4L53DF.js → chunk-YZX4DVRS.js} +2 -2
  347. package/dist/{chunk-WULEQKU7.js → chunk-Z7COWR4K.js} +2 -2
  348. package/dist/{chunk-NYA26GV2.js → chunk-ZCCKIWZU.js} +2 -2
  349. package/dist/{chunk-5WUXJDFP.js → chunk-ZTPB7PVI.js} +2 -2
  350. package/dist/{chunk-NKHNUTTY.js → chunk-ZXHODKHH.js} +3 -3
  351. package/dist/{chunk-7LOCLC24.js → chunk-ZYKDUKAH.js} +2 -2
  352. package/dist/data-display/Badge.js +3 -3
  353. package/dist/data-display/CardKit.js +6 -6
  354. package/dist/data-display/Carousel.js +3 -3
  355. package/dist/data-display/Chart.js +3 -3
  356. package/dist/data-display/DataViews.js +71 -71
  357. package/dist/data-display/FleetMap.js +9 -9
  358. package/dist/data-display/LazyImage.js +3 -3
  359. package/dist/data-display/MapPreview.js +5 -5
  360. package/dist/data-display/Sheet.js +3 -3
  361. package/dist/en-US.js +6 -6
  362. package/dist/feedback/ConfirmAction.js +5 -5
  363. package/dist/feedback/NotificationStatusNotice.js +5 -5
  364. package/dist/feedback/SequenceResolver.js +56 -0
  365. package/dist/feedback/SequenceResolver.js.map +1 -0
  366. package/dist/feedback/TutorialOverlay.js +2 -2
  367. package/dist/form/AddressAutocomplete.js +11 -11
  368. package/dist/form/Autocomplete.js +4 -4
  369. package/dist/form/Button.js +4 -4
  370. package/dist/form/Calendar.js +2 -2
  371. package/dist/form/CategorySelect.js +11 -11
  372. package/dist/form/CepField.js +6 -6
  373. package/dist/form/CodeEditor.js +3 -3
  374. package/dist/form/Command.js +5 -5
  375. package/dist/form/CreatableSelect.js +3 -3
  376. package/dist/form/DateRangePicker.js +9 -9
  377. package/dist/form/Input/outlined.js +5 -5
  378. package/dist/form/Input.js +5 -5
  379. package/dist/form/InputOTP.js +4 -4
  380. package/dist/form/Label.js +3 -3
  381. package/dist/form/MenuSelect.js +4 -4
  382. package/dist/form/Menubar.js +5 -5
  383. package/dist/form/NumberField.js +6 -6
  384. package/dist/form/PhoneInput.js +3 -3
  385. package/dist/form/PickerSheet.js +6 -6
  386. package/dist/form/RadioGroup.js +5 -5
  387. package/dist/form/RichTextEditor.js +2 -2
  388. package/dist/form/Select.js +6 -6
  389. package/dist/form/Textarea.js +3 -3
  390. package/dist/form/Toggle.js +4 -4
  391. package/dist/form/ToggleGroup.js +3 -3
  392. package/dist/form/UploadButton.js +2 -2
  393. package/dist/form/total-form.js +32 -32
  394. package/dist/icons.js +6 -6
  395. package/dist/layout/Box.js +6 -6
  396. package/dist/layout/ContentToolbar.js +11 -11
  397. package/dist/layout/Screen.js +7 -7
  398. package/dist/layout/SettingCard.js +18 -18
  399. package/dist/layout/SettingsLayout.js +3 -3
  400. package/dist/layout/Stack.js +7 -7
  401. package/dist/layout/TableFilter.js +3 -3
  402. package/dist/locales.js +11 -11
  403. package/dist/navigation/AppHeader.js +8 -8
  404. package/dist/navigation/NavigationMenu.js +4 -4
  405. package/dist/navigation/Pagination.js +4 -4
  406. package/dist/navigation/SectionNav.js +6 -6
  407. package/dist/navigation/Tabs.js +2 -2
  408. package/dist/provider.js +6 -6
  409. package/dist/pt-BR.js +5 -5
  410. package/dist/social-login-button.js +5 -5
  411. package/dist/tokens.js +4 -4
  412. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.d.ts +17 -0
  413. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.d.ts.map +1 -0
  414. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.metrics.d.ts +33 -0
  415. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.metrics.d.ts.map +1 -0
  416. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.parts.d.ts +61 -0
  417. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.parts.d.ts.map +1 -0
  418. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.styles.d.ts +51 -0
  419. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.styles.d.ts.map +1 -0
  420. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.types.d.ts +175 -0
  421. package/dist/types/components/feedback/SequenceResolver/SequenceResolver.types.d.ts.map +1 -0
  422. package/dist/types/components/feedback/SequenceResolver/index.d.ts +3 -0
  423. package/dist/types/components/feedback/SequenceResolver/index.d.ts.map +1 -0
  424. package/dist/types/components/feedback/SequenceResolver/sequence-model.d.ts +85 -0
  425. package/dist/types/components/feedback/SequenceResolver/sequence-model.d.ts.map +1 -0
  426. package/dist/types/components/feedback/SequenceResolver/useSequenceRun.d.ts +24 -0
  427. package/dist/types/components/feedback/SequenceResolver/useSequenceRun.d.ts.map +1 -0
  428. package/dist/types/components/feedback/index.d.ts +1 -0
  429. package/dist/types/components/feedback/index.d.ts.map +1 -1
  430. package/dist/user-avatar.js +5 -5
  431. package/dist/utility/WorkflowStep.js +3 -3
  432. package/package.json +5 -1
  433. package/src/components/feedback/SequenceResolver/SequenceResolver.md +136 -0
  434. package/src/components/feedback/SequenceResolver/SequenceResolver.metrics.ts +26 -0
  435. package/src/components/feedback/SequenceResolver/SequenceResolver.parts.tsx +307 -0
  436. package/src/components/feedback/SequenceResolver/SequenceResolver.styles.ts +238 -0
  437. package/src/components/feedback/SequenceResolver/SequenceResolver.tsx +179 -0
  438. package/src/components/feedback/SequenceResolver/SequenceResolver.types.ts +185 -0
  439. package/src/components/feedback/SequenceResolver/index.ts +14 -0
  440. package/src/components/feedback/SequenceResolver/sequence-model.ts +181 -0
  441. package/src/components/feedback/SequenceResolver/useSequenceRun.ts +205 -0
  442. package/src/components/feedback/index.ts +1 -0
  443. package/dist/chunk-6YIKVXAV.js +0 -1
  444. /package/dist/{chunk-6YIKVXAV.js.map → _internal/components/feedback/SequenceResolver/SequenceResolver.js.map} +0 -0
  445. /package/dist/{chunk-75FHDUJW.js.map → chunk-2D4WKET2.js.map} +0 -0
  446. /package/dist/{chunk-3O2OJW4O.js.map → chunk-2QO3BKUQ.js.map} +0 -0
  447. /package/dist/{chunk-HXCUKZOB.js.map → chunk-2VHAD4NE.js.map} +0 -0
  448. /package/dist/{chunk-FJ3UZ4RC.js.map → chunk-33MMQHYU.js.map} +0 -0
  449. /package/dist/{chunk-CBO46LJH.js.map → chunk-3HSLEUVW.js.map} +0 -0
  450. /package/dist/{chunk-6VTOGR36.js.map → chunk-3XZZSHE5.js.map} +0 -0
  451. /package/dist/{chunk-BLINEMVO.js.map → chunk-3YLRR4JM.js.map} +0 -0
  452. /package/dist/{chunk-PD7MKJCM.js.map → chunk-4AJY7HMH.js.map} +0 -0
  453. /package/dist/{chunk-UXQVJXQ3.js.map → chunk-4HUSG5MR.js.map} +0 -0
  454. /package/dist/{chunk-7CPLKAL6.js.map → chunk-4M5GEKPM.js.map} +0 -0
  455. /package/dist/{chunk-WEMI4PV7.js.map → chunk-4MQ6XTIJ.js.map} +0 -0
  456. /package/dist/{chunk-7FFY4LJY.js.map → chunk-5463SZOH.js.map} +0 -0
  457. /package/dist/{chunk-CAX3NFFE.js.map → chunk-555TUQ7E.js.map} +0 -0
  458. /package/dist/{chunk-5KGABAQB.js.map → chunk-5752357K.js.map} +0 -0
  459. /package/dist/{chunk-ZOLUUX4B.js.map → chunk-5J7SA4CZ.js.map} +0 -0
  460. /package/dist/{chunk-YOXYSAUI.js.map → chunk-5USHYSCO.js.map} +0 -0
  461. /package/dist/{chunk-5AQLJ4AL.js.map → chunk-62XVHRTX.js.map} +0 -0
  462. /package/dist/{chunk-SO5OU2ZV.js.map → chunk-64AOS2WA.js.map} +0 -0
  463. /package/dist/{chunk-75I42HHE.js.map → chunk-66QQ7YQN.js.map} +0 -0
  464. /package/dist/{chunk-GG7IOJAG.js.map → chunk-6J7RGNSF.js.map} +0 -0
  465. /package/dist/{chunk-GCBWZ3MX.js.map → chunk-6LMYQJZP.js.map} +0 -0
  466. /package/dist/{chunk-4SQ2WCZA.js.map → chunk-6MOJK2QT.js.map} +0 -0
  467. /package/dist/{chunk-Q6MZHT2F.js.map → chunk-6RTE4UNO.js.map} +0 -0
  468. /package/dist/{chunk-CW5Z67NA.js.map → chunk-72GJRV5J.js.map} +0 -0
  469. /package/dist/{chunk-LYB6YYTG.js.map → chunk-72OG3AGH.js.map} +0 -0
  470. /package/dist/{chunk-Y46R26TE.js.map → chunk-7AC2UGTU.js.map} +0 -0
  471. /package/dist/{chunk-NPSARV2I.js.map → chunk-7P5PNRBT.js.map} +0 -0
  472. /package/dist/{chunk-RPKUZDRY.js.map → chunk-7QXEEZFO.js.map} +0 -0
  473. /package/dist/{chunk-SUXT6QAY.js.map → chunk-7RG37FVT.js.map} +0 -0
  474. /package/dist/{chunk-5F7HYYGM.js.map → chunk-7ZROYGUG.js.map} +0 -0
  475. /package/dist/{chunk-LY5I3ZSV.js.map → chunk-A2YLFKQU.js.map} +0 -0
  476. /package/dist/{chunk-WOUJSKQB.js.map → chunk-A5NXBOWS.js.map} +0 -0
  477. /package/dist/{chunk-7TKQIZ3K.js.map → chunk-AAREDFH6.js.map} +0 -0
  478. /package/dist/{chunk-X2GWR75Q.js.map → chunk-AEYLFBZT.js.map} +0 -0
  479. /package/dist/{chunk-VPGDYI63.js.map → chunk-AKBL7S7A.js.map} +0 -0
  480. /package/dist/{chunk-6DGNMASB.js.map → chunk-ALREWFRX.js.map} +0 -0
  481. /package/dist/{chunk-NQ6P7O7C.js.map → chunk-ASZGMKB4.js.map} +0 -0
  482. /package/dist/{chunk-CWCNLITK.js.map → chunk-AXZCCX7O.js.map} +0 -0
  483. /package/dist/{chunk-FVL6U72V.js.map → chunk-B2JYQBO4.js.map} +0 -0
  484. /package/dist/{chunk-IU2WSJ4F.js.map → chunk-BARTUKJU.js.map} +0 -0
  485. /package/dist/{chunk-4JNC5AEF.js.map → chunk-BTGXHQX3.js.map} +0 -0
  486. /package/dist/{chunk-VMTOLAZ5.js.map → chunk-BWFQEASG.js.map} +0 -0
  487. /package/dist/{chunk-7LMR2H7O.js.map → chunk-C47LBKEG.js.map} +0 -0
  488. /package/dist/{chunk-2K2Q7VGV.js.map → chunk-C5JCARNE.js.map} +0 -0
  489. /package/dist/{chunk-OK3OJGJY.js.map → chunk-C7CIUDXZ.js.map} +0 -0
  490. /package/dist/{chunk-YWXCLPCX.js.map → chunk-CO7GH3W7.js.map} +0 -0
  491. /package/dist/{chunk-ARVLS57B.js.map → chunk-CW6Y32N2.js.map} +0 -0
  492. /package/dist/{chunk-LZJHHMOF.js.map → chunk-DRJL3JHR.js.map} +0 -0
  493. /package/dist/{chunk-7IXXASQ6.js.map → chunk-DXFKPY2K.js.map} +0 -0
  494. /package/dist/{chunk-C2NNJMVY.js.map → chunk-EBCEDBHX.js.map} +0 -0
  495. /package/dist/{chunk-BRHRK7BK.js.map → chunk-ENRB6PIN.js.map} +0 -0
  496. /package/dist/{chunk-HHFVDOA7.js.map → chunk-F6IMOMA3.js.map} +0 -0
  497. /package/dist/{chunk-YTDUIU7X.js.map → chunk-F6LZHF4O.js.map} +0 -0
  498. /package/dist/{chunk-NZXRPWPW.js.map → chunk-FAIQCGSL.js.map} +0 -0
  499. /package/dist/{chunk-HMWSMRLM.js.map → chunk-FTDGFWB5.js.map} +0 -0
  500. /package/dist/{chunk-ZE4HF3KC.js.map → chunk-GFXS5PJL.js.map} +0 -0
  501. /package/dist/{chunk-YEKPQAOW.js.map → chunk-GQ2T44BC.js.map} +0 -0
  502. /package/dist/{chunk-ZAZOBTVS.js.map → chunk-GSXYXMCV.js.map} +0 -0
  503. /package/dist/{chunk-IZ7JTG3Z.js.map → chunk-GTT5UKKO.js.map} +0 -0
  504. /package/dist/{chunk-WDSJ6SVY.js.map → chunk-GXSHLMT4.js.map} +0 -0
  505. /package/dist/{chunk-3EIRRLCQ.js.map → chunk-HTGK7QCX.js.map} +0 -0
  506. /package/dist/{chunk-Y3LK6ZQG.js.map → chunk-I2KAN3YB.js.map} +0 -0
  507. /package/dist/{chunk-M5DBOM7R.js.map → chunk-ICRVLGWD.js.map} +0 -0
  508. /package/dist/{chunk-FVNY5BNV.js.map → chunk-IQ2U5MVO.js.map} +0 -0
  509. /package/dist/{chunk-LABIUXDM.js.map → chunk-J7C7FPVO.js.map} +0 -0
  510. /package/dist/{chunk-CYH5QQUP.js.map → chunk-KHIUYLKY.js.map} +0 -0
  511. /package/dist/{chunk-PPEHBI5O.js.map → chunk-KXTNTDRD.js.map} +0 -0
  512. /package/dist/{chunk-IBOFASAZ.js.map → chunk-LC6ND4ET.js.map} +0 -0
  513. /package/dist/{chunk-2ONUSNPZ.js.map → chunk-LG52LMAM.js.map} +0 -0
  514. /package/dist/{chunk-3Y7LSMGV.js.map → chunk-LH4VKUZC.js.map} +0 -0
  515. /package/dist/{chunk-CFDWKQZT.js.map → chunk-LODYTVOO.js.map} +0 -0
  516. /package/dist/{chunk-QITQFCFY.js.map → chunk-LUNN5GTB.js.map} +0 -0
  517. /package/dist/{chunk-ACBHZG3Z.js.map → chunk-M74YHHJE.js.map} +0 -0
  518. /package/dist/{chunk-BGGVYKVZ.js.map → chunk-MA6SUE7F.js.map} +0 -0
  519. /package/dist/{chunk-AT6UKTH4.js.map → chunk-MHFXJRLD.js.map} +0 -0
  520. /package/dist/{chunk-3BDMYTH6.js.map → chunk-MHLYX6QW.js.map} +0 -0
  521. /package/dist/{chunk-FXECKKPW.js.map → chunk-MO4FFK62.js.map} +0 -0
  522. /package/dist/{chunk-SAKSIN7E.js.map → chunk-MQVIYTH5.js.map} +0 -0
  523. /package/dist/{chunk-X3DN2BE3.js.map → chunk-MSC43MCJ.js.map} +0 -0
  524. /package/dist/{chunk-RHVJ3L4U.js.map → chunk-MWPD2BXO.js.map} +0 -0
  525. /package/dist/{chunk-TSID4257.js.map → chunk-N34AOGK3.js.map} +0 -0
  526. /package/dist/{chunk-NZBEE2PR.js.map → chunk-N3LW5ER5.js.map} +0 -0
  527. /package/dist/{chunk-Q3HYEAVQ.js.map → chunk-N3ZOZWP5.js.map} +0 -0
  528. /package/dist/{chunk-AO4NDR6W.js.map → chunk-NTO5DALI.js.map} +0 -0
  529. /package/dist/{chunk-RVZMKGWQ.js.map → chunk-NYWAAXDX.js.map} +0 -0
  530. /package/dist/{chunk-CHGUN7OF.js.map → chunk-O6SAU5JA.js.map} +0 -0
  531. /package/dist/{chunk-TDWA2XFJ.js.map → chunk-OE3SQOZV.js.map} +0 -0
  532. /package/dist/{chunk-VLH3IMJG.js.map → chunk-OFXCSLGX.js.map} +0 -0
  533. /package/dist/{chunk-E54XIRY2.js.map → chunk-PIP7XII2.js.map} +0 -0
  534. /package/dist/{chunk-SKIAWOUC.js.map → chunk-PTQRJEPN.js.map} +0 -0
  535. /package/dist/{chunk-S5VIN3EB.js.map → chunk-Q6PRGXR2.js.map} +0 -0
  536. /package/dist/{chunk-DQ3O252B.js.map → chunk-QCNUMOTL.js.map} +0 -0
  537. /package/dist/{chunk-5IIHAYFF.js.map → chunk-QCQWOSSD.js.map} +0 -0
  538. /package/dist/{chunk-Y2CHJLWD.js.map → chunk-QIYX33SH.js.map} +0 -0
  539. /package/dist/{chunk-RGVNXES5.js.map → chunk-QQHZBJMU.js.map} +0 -0
  540. /package/dist/{chunk-XZFTRGRW.js.map → chunk-QVO4SIS7.js.map} +0 -0
  541. /package/dist/{chunk-OY437NRJ.js.map → chunk-QYX4567K.js.map} +0 -0
  542. /package/dist/{chunk-7JKDB5J5.js.map → chunk-R53ZOW4B.js.map} +0 -0
  543. /package/dist/{chunk-HSIUVFXE.js.map → chunk-RA6W37NZ.js.map} +0 -0
  544. /package/dist/{chunk-HDTFLW42.js.map → chunk-REMODSVN.js.map} +0 -0
  545. /package/dist/{chunk-R2ODLE6G.js.map → chunk-RIDCGFGM.js.map} +0 -0
  546. /package/dist/{chunk-RNQ2PGBB.js.map → chunk-RKVS5AA6.js.map} +0 -0
  547. /package/dist/{chunk-MKNW4FRR.js.map → chunk-RS576GOH.js.map} +0 -0
  548. /package/dist/{chunk-NRADSKGH.js.map → chunk-SCAPSX6T.js.map} +0 -0
  549. /package/dist/{chunk-HG2YLNGJ.js.map → chunk-SFVHZAGE.js.map} +0 -0
  550. /package/dist/{chunk-5HFB4WFE.js.map → chunk-T743IIER.js.map} +0 -0
  551. /package/dist/{chunk-C6LW34TV.js.map → chunk-THD3N4BJ.js.map} +0 -0
  552. /package/dist/{chunk-IDRVQVDL.js.map → chunk-TNDTEI6D.js.map} +0 -0
  553. /package/dist/{chunk-U2QV4TTZ.js.map → chunk-TR7ZA67L.js.map} +0 -0
  554. /package/dist/{chunk-EP3DRILI.js.map → chunk-U36BXXQ7.js.map} +0 -0
  555. /package/dist/{chunk-AJ5LXKLQ.js.map → chunk-U4G3KY6L.js.map} +0 -0
  556. /package/dist/{chunk-UAFSEZ2E.js.map → chunk-UQUN2NGE.js.map} +0 -0
  557. /package/dist/{chunk-6A4PTK5Q.js.map → chunk-V4JMZZGH.js.map} +0 -0
  558. /package/dist/{chunk-5M7T36AT.js.map → chunk-VBGC7G4F.js.map} +0 -0
  559. /package/dist/{chunk-IWJTLCTF.js.map → chunk-VD72JGHA.js.map} +0 -0
  560. /package/dist/{chunk-4NG3LTRX.js.map → chunk-VJG43WKU.js.map} +0 -0
  561. /package/dist/{chunk-BGSUSSAV.js.map → chunk-VMN6KG2U.js.map} +0 -0
  562. /package/dist/{chunk-YRF7WFAQ.js.map → chunk-WA6F4NOO.js.map} +0 -0
  563. /package/dist/{chunk-HOJL2GKW.js.map → chunk-WC3W36AM.js.map} +0 -0
  564. /package/dist/{chunk-OQW4OERS.js.map → chunk-WNIL2KTB.js.map} +0 -0
  565. /package/dist/{chunk-NQYC7V5N.js.map → chunk-WOSUYOAU.js.map} +0 -0
  566. /package/dist/{chunk-DDNUPFPE.js.map → chunk-WT7VZDTI.js.map} +0 -0
  567. /package/dist/{chunk-DOWVAC4U.js.map → chunk-XODBYGTH.js.map} +0 -0
  568. /package/dist/{chunk-YNZUYZ2O.js.map → chunk-XRDH24J7.js.map} +0 -0
  569. /package/dist/{chunk-DQKMOGYZ.js.map → chunk-XYFBJH6F.js.map} +0 -0
  570. /package/dist/{chunk-ZCXQ4ZB6.js.map → chunk-XYSE2QZN.js.map} +0 -0
  571. /package/dist/{chunk-MIUPTZS6.js.map → chunk-Y4KR4LT2.js.map} +0 -0
  572. /package/dist/{chunk-D7PVIC33.js.map → chunk-Y7YJYUNV.js.map} +0 -0
  573. /package/dist/{chunk-GHP5JLL3.js.map → chunk-YASSCBWN.js.map} +0 -0
  574. /package/dist/{chunk-QLJU7UUI.js.map → chunk-YH7G44WL.js.map} +0 -0
  575. /package/dist/{chunk-FS55MQ4Q.js.map → chunk-YNDTLBOH.js.map} +0 -0
  576. /package/dist/{chunk-6E4L53DF.js.map → chunk-YZX4DVRS.js.map} +0 -0
  577. /package/dist/{chunk-WULEQKU7.js.map → chunk-Z7COWR4K.js.map} +0 -0
  578. /package/dist/{chunk-NYA26GV2.js.map → chunk-ZCCKIWZU.js.map} +0 -0
  579. /package/dist/{chunk-5WUXJDFP.js.map → chunk-ZTPB7PVI.js.map} +0 -0
  580. /package/dist/{chunk-NKHNUTTY.js.map → chunk-ZXHODKHH.js.map} +0 -0
  581. /package/dist/{chunk-7LOCLC24.js.map → chunk-ZYKDUKAH.js.map} +0 -0
@@ -0,0 +1,175 @@
1
+ import type * as React from 'react';
2
+ /**
3
+ * One entry of the queue a {@link SequenceResolverProps} walks through.
4
+ *
5
+ * Extend it with whatever the host's step needs (`item.payload`, an id, the
6
+ * row it came from): the component only reads `key` and `kindLabel`, and hands
7
+ * the WHOLE item back to `renderStep` and `onBack`.
8
+ */
9
+ export interface SequenceItem {
10
+ /** Stable identity across re-renders and refetches — what the run tracks. */
11
+ key: string;
12
+ /** The kind word the header shows next to the position ("Purchase"). */
13
+ kindLabel: string;
14
+ }
15
+ /** Where the run stands, handed to the end screen, `onClose` and `labels.step`. */
16
+ export interface SequenceSummary {
17
+ /** Steps answered with `resolve`. */
18
+ resolved: number;
19
+ /** Steps passed over with `skip`. */
20
+ skipped: number;
21
+ /** Every step of the run so far: answered + skipped + still ahead. */
22
+ total: number;
23
+ /**
24
+ * Problems the host reported as resolved TOGETHER with an answered step
25
+ * (`api.resolve(result, { alsoResolved })` — "apply to every sibling"),
26
+ * which never became steps. `resolved + alsoResolved` is what a close toast
27
+ * counts; the end screen's "N of M" counts steps.
28
+ */
29
+ alsoResolved: number;
30
+ }
31
+ /** What an answer can say besides its result. */
32
+ export interface SequenceResolveOptions {
33
+ /** How many OTHER problems this answer resolved too (siblings that never became steps). */
34
+ alsoResolved?: number;
35
+ }
36
+ /** A button a step puts in the resolver's footer. */
37
+ export interface SequenceAction {
38
+ label: string;
39
+ onClick: () => void;
40
+ /** Disabled on top of the resolver's own `busy`. */
41
+ disabled?: boolean;
42
+ }
43
+ /** What `renderStep` gets: the run's verbs and its state. */
44
+ export interface SequenceStepApi<R> {
45
+ /**
46
+ * Answer this step and move to the next one. Pass the result itself, or the
47
+ * PROMISE of it (the host's server write): the step stays on screen and
48
+ * `busy` until it settles; a rejection keeps it and shows the rejection's
49
+ * message. The result is what `onBack` receives if the reader returns.
50
+ */
51
+ resolve: (result: R | PromiseLike<R>, options?: SequenceResolveOptions) => void;
52
+ /** Leave this step unanswered and move on. */
53
+ skip: () => void;
54
+ /** Return to the previous step (the header's back button does the same). */
55
+ back: () => void;
56
+ /** True while a `resolve` promise or an `onBack` is pending — disable the step's own answers. */
57
+ busy: boolean;
58
+ /**
59
+ * Spread on the step's TITLE — the item's name, first and large. It names
60
+ * the dialog (`aria-labelledby`) and takes focus on every advance.
61
+ */
62
+ titleProps: {
63
+ id: string;
64
+ tabIndex: -1;
65
+ ref: React.RefCallback<HTMLElement>;
66
+ };
67
+ }
68
+ /** What a step renders: its body and, at most, two footer actions plus one tertiary. */
69
+ export interface SequenceStep {
70
+ /** The body: item name (spread `titleProps` on it), question, facts, inputs. */
71
+ content: React.ReactNode;
72
+ /** The step's verb ("Save limits"). Omit for a step answered from its body (a list of reasons). */
73
+ primary?: SequenceAction;
74
+ /**
75
+ * The secondary action. Omitted, it is SKIP with `labels.skip`; pass one to
76
+ * reword it ("Not bought yet") or to replace it (a split mode's "One reason
77
+ * only"); `false` removes it.
78
+ */
79
+ secondary?: SequenceAction | false;
80
+ /** One text button above the footer ("It was a stock count, not a loss"). */
81
+ tertiary?: SequenceAction;
82
+ /**
83
+ * How the footer lays its actions out on a pointer: `'end'` (default) —
84
+ * auto-width, right-aligned, over a hairline; `'split'` — two equal
85
+ * full-width columns, no hairline (a form step: limits, a purchase). On a
86
+ * phone the actions always share the row, with no hairline.
87
+ */
88
+ footer?: 'end' | 'split';
89
+ }
90
+ /** One kind on the intro screen. */
91
+ export interface SequenceCategory {
92
+ label: string;
93
+ description?: string;
94
+ /** How many problems of this kind there are. A kind at zero should not be listed. */
95
+ count: number;
96
+ /** Resolve only this kind: set the queue to it and drop `intro`. */
97
+ onPick: () => void;
98
+ }
99
+ /** The screen before the run: the kinds with their counts, and "resolve them all". */
100
+ export interface SequenceIntro {
101
+ title: string;
102
+ description?: string;
103
+ categories: SequenceCategory[];
104
+ startAllLabel: string;
105
+ /** Resolve every kind: set the queue to all of them and drop `intro`. */
106
+ onStartAll: () => void;
107
+ }
108
+ /** The end screen's words. */
109
+ export interface SequenceDone {
110
+ title: string;
111
+ description?: string;
112
+ /** The one button there; it closes the resolver. */
113
+ confirmLabel: string;
114
+ }
115
+ /** The chrome's words. The package ships none: every one is the host's. */
116
+ export interface SequenceResolverLabels {
117
+ /** The back button's visible word ("Back"); a chevron icon precedes it. */
118
+ back: string;
119
+ /** The back button's accessible name, when it says more ("Back to the previous problem"). Must contain `back`. */
120
+ backAccessible?: string;
121
+ /** The close button's accessible name. */
122
+ close: string;
123
+ /** The default secondary action: leave the step unanswered. */
124
+ skip: string;
125
+ /** The header label on a step: `"Problem 3 of 13 · Purchase"`. `position` is 1-based. */
126
+ step: (position: number, total: number, item: SequenceItem) => string;
127
+ /** The header label on the intro screen. */
128
+ introStep: string;
129
+ /** The header label on the end screen. */
130
+ doneStep: string;
131
+ /** The progress bar's accessible name. */
132
+ progress: string;
133
+ /** Shown when `onBack` / a `resolve` promise rejects with no message of its own. */
134
+ failed: string;
135
+ }
136
+ export interface SequenceResolverProps<I extends SequenceItem = SequenceItem, R = unknown> {
137
+ open: boolean;
138
+ /**
139
+ * The close button, Esc, and the end screen's button. Gets where the run
140
+ * stood, for the host's "N resolved · Undo" toast.
141
+ */
142
+ onClose: (summary: SequenceSummary) => void;
143
+ /**
144
+ * While given, the intro screen shows instead of the run. The host drops it
145
+ * (and sets `queue`) in the same update as a category's `onPick` / `onStartAll`.
146
+ */
147
+ intro?: SequenceIntro;
148
+ /**
149
+ * The problems to walk, in order. The host's live data: it may shrink while
150
+ * the run goes (an answer that resolves siblings too) or grow; the run keeps
151
+ * pointing at the next unresolved key and never runs past the end.
152
+ */
153
+ queue: readonly I[];
154
+ /** The body and actions of the current step. */
155
+ renderStep: (item: I, api: SequenceStepApi<R>) => SequenceStep;
156
+ /**
157
+ * Undo the previous answer before showing its step again — the host's server
158
+ * inverse. Called only when the step being returned to was RESOLVED (a skipped
159
+ * one has nothing to undo). A rejection keeps the current step and shows its message.
160
+ */
161
+ onBack?: (item: I, result: R) => Promise<void> | void;
162
+ /** Offer the back button at all (default `true`). It shows only once a previous step exists. */
163
+ canGoBack?: boolean;
164
+ /** The end screen's words, from the run's summary. */
165
+ done: SequenceDone | ((summary: SequenceSummary) => SequenceDone);
166
+ labels: SequenceResolverLabels;
167
+ /**
168
+ * Base test id (default `sequence-resolver`). Parts get `${id}-back`,
169
+ * `${id}-close`, `${id}-step-label`, `${id}-progress`, `${id}-category-${index}`,
170
+ * `${id}-start-all`, `${id}-primary`, `${id}-secondary`, `${id}-tertiary`,
171
+ * `${id}-error`, `${id}-done`, `${id}-done-confirm`.
172
+ */
173
+ dataTestId?: string;
174
+ }
175
+ //# sourceMappingURL=SequenceResolver.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SequenceResolver.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/SequenceResolver/SequenceResolver.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { SequenceResolver } from './SequenceResolver';
2
+ export type { SequenceAction, SequenceCategory, SequenceDone, SequenceIntro, SequenceItem, SequenceResolverLabels, SequenceResolveOptions, SequenceResolverProps, SequenceStep, SequenceStepApi, SequenceSummary, } from './SequenceResolver.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/SequenceResolver/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,85 @@
1
+ import type { SequenceItem, SequenceSummary } from './SequenceResolver.types';
2
+ /**
3
+ * THE RUN, as pure data: what was answered or passed over, and what is ahead.
4
+ *
5
+ * The queue is the host's live data, not a snapshot. An answer can resolve
6
+ * other entries with it (one limit saved for every sibling of a product), a
7
+ * refetch can drop the entry just answered, and a realtime push can add one —
8
+ * so the run is NOT an index into the queue. It keeps the visited steps in the
9
+ * order they were visited, and the steps still ahead in the order the queue
10
+ * gave them; `syncRun` reconciles the second list with each new queue.
11
+ */
12
+ /** How a visited step was left. */
13
+ export type Visit<I extends SequenceItem, R> = {
14
+ item: I;
15
+ outcome: 'resolved';
16
+ result: R;
17
+ alsoResolved?: number;
18
+ } | {
19
+ item: I;
20
+ outcome: 'skipped';
21
+ };
22
+ export interface RunState<I extends SequenceItem, R> {
23
+ /** Every step left behind, oldest first. Back pops the last one. */
24
+ visits: Visit<I, R>[];
25
+ /** The steps still ahead; the first is on screen. Empty means the end screen. */
26
+ ahead: I[];
27
+ /**
28
+ * The step whose answer is being written, kept ahead even while the queue
29
+ * lacks it (the host's refetch may drop it before the write returns).
30
+ * Cleared when the run leaves it.
31
+ */
32
+ pinned?: string;
33
+ /**
34
+ * The steps Back returned to, kept ahead while the queue lacks them (the
35
+ * host's inverse ran, its refetch has not put the entry back yet). A SET:
36
+ * two Backs before one refetch hold both. A key leaves it when the queue
37
+ * confirms the entry or the run leaves the step.
38
+ */
39
+ held: readonly string[];
40
+ }
41
+ /** A fresh run over `queue` (a repeated key counts once). */
42
+ export declare function startRun<I extends SequenceItem, R>(queue: readonly I[]): RunState<I, R>;
43
+ /**
44
+ * The run against a new queue.
45
+ *
46
+ * - A step ahead that the queue no longer has is dropped — it was resolved
47
+ * elsewhere (siblings answered together, another device) — unless it is
48
+ * `pinned` or `held`.
49
+ * - A held key the queue has again is released: the host confirmed it.
50
+ * - A queue entry the run has not seen is appended, in queue order.
51
+ * - The entries kept are refreshed from the queue (same key, newer data).
52
+ * - Visited steps are history and never change.
53
+ */
54
+ export declare function syncRun<I extends SequenceItem, R>(state: RunState<I, R>, queue: readonly I[]): RunState<I, R>;
55
+ /** Keep `key` ahead whatever the queue says, until the run moves on (see {@link RunState.pinned}). */
56
+ export declare function pinRun<I extends SequenceItem, R>(state: RunState<I, R>, key: string): RunState<I, R>;
57
+ /** The step on screen, or `undefined` at the end. */
58
+ export declare function currentOf<I extends SequenceItem, R>(state: RunState<I, R>): I | undefined;
59
+ /**
60
+ * Answer `item` — the step that was on screen when the answer began (a pending
61
+ * write keeps it there, see {@link RunState.pinned}). An item no longer ahead
62
+ * was already answered (a double call): a no-op, as at the end.
63
+ */
64
+ export declare function resolveRun<I extends SequenceItem, R>(state: RunState<I, R>, result: R, item?: I | undefined, alsoResolved?: number): RunState<I, R>;
65
+ /**
66
+ * Pass over the step on screen. Given the `key` that was on screen when the
67
+ * skip began, a step that has moved on since (a double call) is left alone. At
68
+ * the end it is a no-op.
69
+ */
70
+ export declare function skipRun<I extends SequenceItem, R>(state: RunState<I, R>, key?: string): RunState<I, R>;
71
+ /** The step Back would return to, or `undefined` on the first one. */
72
+ export declare function previousOf<I extends SequenceItem, R>(state: RunState<I, R>): Visit<I, R> | undefined;
73
+ /**
74
+ * Return to the previous step: it is on screen again, ahead of the rest, and
75
+ * held until the queue confirms it. Given the `key` Back began from, a step
76
+ * already returned to (a double call) is left alone.
77
+ */
78
+ export declare function backRun<I extends SequenceItem, R>(state: RunState<I, R>, key?: string): RunState<I, R>;
79
+ /** Where the run stands. */
80
+ export declare function summaryOf<I extends SequenceItem, R>(state: RunState<I, R>): SequenceSummary;
81
+ /** 1-based position of the step on screen (`total + 1` never happens: at the end it is `total`). */
82
+ export declare function positionOf<I extends SequenceItem, R>(state: RunState<I, R>): number;
83
+ /** How far along, 0..100. An empty run is complete. */
84
+ export declare function progressOf<I extends SequenceItem, R>(state: RunState<I, R>): number;
85
+ //# sourceMappingURL=sequence-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence-model.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/SequenceResolver/sequence-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { type RunState } from './sequence-model';
2
+ import type { SequenceItem, SequenceResolveOptions } from './SequenceResolver.types';
3
+ interface RunInputs<I extends SequenceItem, R> {
4
+ /** The resolver is open. Opening it, intro or not, starts a fresh run. */
5
+ open: boolean;
6
+ /** True while the run is on screen: open, and past the intro. */
7
+ active: boolean;
8
+ queue: readonly I[];
9
+ onBack?: (item: I, result: R) => Promise<void> | void;
10
+ /** The message for a rejection that carries none. */
11
+ failed: string;
12
+ }
13
+ export interface SequenceRun<I extends SequenceItem, R> {
14
+ run: RunState<I, R>;
15
+ busy: boolean;
16
+ error: string | null;
17
+ resolve: (result: R | PromiseLike<R>, options?: SequenceResolveOptions) => void;
18
+ skip: () => void;
19
+ back: () => void;
20
+ }
21
+ /** The run's state and its verbs — the index/back/skip/done logic, once (FUT-3671). */
22
+ export declare function useSequenceRun<I extends SequenceItem, R>(inputs: RunInputs<I, R>): SequenceRun<I, R>;
23
+ export {};
24
+ //# sourceMappingURL=useSequenceRun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSequenceRun.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/SequenceResolver/useSequenceRun.ts"],"names":[],"mappings":"AAEA,OAAO,EASL,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAErF,UAAU,SAAS,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC;IAC3C,0EAA0E;IAC1E,IAAI,EAAE,OAAO,CAAC;IACd,iEAAiE;IACjE,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtD,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC;IACpD,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAChF,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AA6HD,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CA6CpG"}
@@ -2,6 +2,7 @@ export * from './ConfirmAction';
2
2
  export * from './Dialog';
3
3
  export * from './Modal';
4
4
  export * from './NotificationStatusNotice';
5
+ export * from './SequenceResolver';
5
6
  export * from './Sonner';
6
7
  export * from './StackedModal';
7
8
  export * from './Toast';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  UserAvatar,
3
3
  UserMenu
4
- } from "./chunk-TDWA2XFJ.js";
4
+ } from "./chunk-OE3SQOZV.js";
5
5
  import "./chunk-UDQSIRAP.js";
6
6
  import "./chunk-KARMRTTM.js";
7
7
  import "./chunk-7XSCEHGA.js";
@@ -15,17 +15,17 @@ import "./chunk-FKUYRQSP.js";
15
15
  import "./chunk-PLB6WWXW.js";
16
16
  import "./chunk-HDBP55R3.js";
17
17
  import "./chunk-BA4RHQ3B.js";
18
- import "./chunk-YOXYSAUI.js";
19
- import "./chunk-PPEHBI5O.js";
18
+ import "./chunk-5USHYSCO.js";
19
+ import "./chunk-KXTNTDRD.js";
20
20
  import "./chunk-G2FUZALJ.js";
21
21
  import "./chunk-TAMIZE4Q.js";
22
22
  import "./chunk-AJBRO76D.js";
23
23
  import "./chunk-36VXZCJT.js";
24
24
  import "./chunk-TYJR4GOF.js";
25
- import "./chunk-RGVNXES5.js";
26
- import "./chunk-GDN2LUTZ.js";
25
+ import "./chunk-QQHZBJMU.js";
27
26
  import "./chunk-7ZADLRLP.js";
28
27
  import "./chunk-3NGE6NE6.js";
28
+ import "./chunk-GDN2LUTZ.js";
29
29
  import "./chunk-2FBGDSGC.js";
30
30
  import "./chunk-VBP46YP4.js";
31
31
  import "./chunk-44BD7SFH.js";
@@ -6,17 +6,17 @@ import "../chunk-VNVV6Y2X.js";
6
6
  import "../chunk-SV6IQ2YO.js";
7
7
  import "../chunk-XKSA4L2X.js";
8
8
  import "../chunk-B7ZHEOQQ.js";
9
- import "../chunk-BRHRK7BK.js";
9
+ import "../chunk-ENRB6PIN.js";
10
10
  import "../chunk-25MSGLNU.js";
11
11
  import "../chunk-GAXHYRX6.js";
12
12
  import "../chunk-NP6SHLQ3.js";
13
13
  import "../chunk-TZ23DNKY.js";
14
14
  import "../chunk-7ZPUN7TV.js";
15
15
  import "../chunk-PT6TCWIW.js";
16
- import "../chunk-RGVNXES5.js";
17
- import "../chunk-GDN2LUTZ.js";
16
+ import "../chunk-QQHZBJMU.js";
18
17
  import "../chunk-7ZADLRLP.js";
19
18
  import "../chunk-3NGE6NE6.js";
19
+ import "../chunk-GDN2LUTZ.js";
20
20
  import "../chunk-2FBGDSGC.js";
21
21
  import "../chunk-VBP46YP4.js";
22
22
  import "../chunk-44BD7SFH.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@12-apps/ui",
3
- "version": "6.77.2",
3
+ "version": "6.78.0",
4
4
  "license": "MIT",
5
5
  "packageManager": "pnpm@10.34.5",
6
6
  "type": "module",
@@ -320,6 +320,10 @@
320
320
  "types": "./dist/types/components/feedback/Sonner/index.d.ts",
321
321
  "default": "./dist/feedback/Sonner.js"
322
322
  },
323
+ "./feedback/SequenceResolver": {
324
+ "types": "./dist/types/components/feedback/SequenceResolver/index.d.ts",
325
+ "default": "./dist/feedback/SequenceResolver.js"
326
+ },
323
327
  "./feedback/StackedModal": {
324
328
  "types": "./dist/types/components/feedback/StackedModal/index.d.ts",
325
329
  "default": "./dist/feedback/StackedModal.js"
@@ -0,0 +1,136 @@
1
+ # SequenceResolver
2
+
3
+ Resolve a **queue of problems one at a time** in one dialog whose body is replaced step by
4
+ step. The component owns the run — which step is on screen, what was answered or skipped,
5
+ where Back returns to, when the end screen shows — and nothing about the domain: every
6
+ step body, every word and every server call is the host's (FUT-3671).
7
+
8
+ ```
9
+ ┌──────────────────────────────────────────────┐
10
+ │ ‹ Back Problem 3 of 13 · Purchase × │ header: back (once a previous step exists), label, close
11
+ │ ▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │ progress: steps left behind / total
12
+ │ Red Bull 250ml │ ┐
13
+ │ Register the purchase │ │ the host's step (renderStep)
14
+ │ No stock. Last purchase: 24 u for $ 163.20 │ ┘
15
+ │ It was a stock count │ tertiary (text button, optional)
16
+ │ ──────────────────────────────────────────── │
17
+ │ [Not bought yet] [Save] │ footer: secondary (skip by default) + primary
18
+ └──────────────────────────────────────────────┘
19
+ ```
20
+
21
+ **When to use it.** A list of things that each need a decision (a stock screen's "N problems
22
+ to solve", a product's subproducts to restock), resolved in order, where Back must undo the
23
+ previous answer. **Not** `StackedModal` — that stacks nested dialogs, and thirteen problems
24
+ would be thirteen layers with a back button that closes a layer instead of undoing an
25
+ answer. **Not** `Stepper` — that shows a known, short list of named steps; this queue is
26
+ data-sized and shrinks while you go.
27
+
28
+ ## Surfaces
29
+
30
+ - **≥ 600px (`sm`)**: a centred `Dialog` (`size="sm"`), capped by the viewport.
31
+ - **Either way the body is the only scroll region**: the handle, header and progress stay
32
+ put while a long step scrolls under them, so it is never cut off and Back/close never
33
+ scroll away.
34
+ - **< 600px**: the `Dialog` inset `bottom-sheet` variant, at most 95% of the dynamic
35
+ viewport, scrolling inside; a drag handle on top is decoration only (the sheet does not
36
+ drag). Every header and footer target is at least 44px tall there.
37
+
38
+ ## Props
39
+
40
+ | Prop | Type | Description |
41
+ |---|---|---|
42
+ | `open` | `boolean` | Shows the resolver. Every opening — with an intro or without — starts a fresh run. |
43
+ | `onClose` | `(summary) => void` | Close button, Esc and the end screen's button. Gets `{ resolved, skipped, total, alsoResolved }`; a close toast counts `resolved + alsoResolved` (and shows only when that is above 0). Clicking the veil does nothing (as approved). |
44
+ | `intro` | `SequenceIntro?` | While given, the intro shows instead of the run: `title`, `description`, `categories` (`label`, `description`, `count`, `onPick`), `startAllLabel`, `onStartAll`. The host drops it and sets `queue` in the same update as a pick. |
45
+ | `queue` | `readonly I[]` (`I extends { key; kindLabel }`) | The problems, in order. Live data: it may shrink (siblings answered together) or grow mid-run. |
46
+ | `renderStep` | `(item, api) => SequenceStep` | The current step: `content`, `primary?`, `secondary?` (default: skip with `labels.skip`; `false` removes it), `tertiary?`, `footer?` (`'end'` default — right-aligned over a hairline; `'split'` — two equal columns, no hairline; on a phone the actions always share the row without a hairline). |
47
+ | `onBack` | `(item, result) => Promise<void> \| void` | The host's server inverse, awaited before Back shows the previous step again. Called only when that step was RESOLVED. |
48
+ | `canGoBack` | `boolean` (default `true`) | Offer Back at all. It shows only once a previous step exists — on steps and on the end screen, never on the intro. |
49
+ | `done` | `SequenceDone \| (summary) => SequenceDone` | The end screen: `title`, `description?`, `confirmLabel`. |
50
+ | `labels` | `SequenceResolverLabels` | Every chrome word: `back`, `backAccessible?`, `close`, `skip`, `step(position, total, item)`, `introStep`, `doneStep`, `progress`, `failed`. **Required — the package ships no copy.** |
51
+ | `dataTestId` | `string` (default `sequence-resolver`) | Parts: `-back`, `-close`, `-step-label`, `-progress`, `-handle`, `-category-<n>`, `-start-all`, `-primary`, `-secondary`, `-tertiary`, `-footer`, `-error`, `-done`, `-done-confirm`. |
52
+
53
+ ### The step API
54
+
55
+ | `api.` | |
56
+ |---|---|
57
+ | `resolve(result \| promise, { alsoResolved? })` | Answer and move on. `alsoResolved` counts OTHER problems this answer resolved too ("apply to every sibling") for the close summary; Back over the step takes them off again. Given the PROMISE of the host's write, the step stays on screen and `busy` until it settles (even if the host's refetch drops the entry first); a rejection keeps it and shows the rejection's message. |
58
+ | `skip()` | Leave it unanswered and move on. |
59
+ | `back()` | Same as the header's Back. |
60
+ | `busy` | True while a `resolve` promise or an `onBack` is pending. The footer, tertiary and Back are disabled by the component; disable the step's own answers with it. |
61
+ | `titleProps` | **Spread on the step's title** (the item's name). It names the dialog and takes focus on every advance. |
62
+
63
+ ## Behaviour
64
+
65
+ - **Index.** The run is not an index into `queue`. Visited steps are kept in visit order,
66
+ the steps ahead in queue order. A new `queue` drops the steps ahead it no longer has
67
+ (resolved elsewhere — "apply to every sibling") and appends entries it has not seen; the
68
+ total follows. The run never goes past the end: with nothing ahead the end screen shows.
69
+ - **An empty queue at the start shows the end screen.** Do not open the resolver (past the
70
+ intro) before the problems have loaded.
71
+ - **Back** pops the last visited step. Over a resolved step it awaits `onBack(item, result)`
72
+ first; over a skipped one it returns at once. A rejected `onBack` keeps the current step
73
+ and shows the message (`labels.failed` when the rejection has none). Every step Back
74
+ returned to is held on screen while the host's refetch has not put it back yet — two Backs
75
+ before one refetch hold both — and is released once the queue has it again.
76
+ - **`onBack` receives the item as it was when the step was answered** (with that answer's
77
+ result), not a fresher copy from a later queue.
78
+ - **The close summary counts what has settled.** An answer whose write is still pending
79
+ when the reader closes is not in `resolved`.
80
+ - **An error belongs to its step**: once the run moves to another step (an answer, a skip,
81
+ or a queue change), it is gone.
82
+ - **Busy** blocks every verb: a second tap, or a skip during a pending write, is ignored.
83
+ - **Focus** moves to the screen's title on open and on every advance or return; Tab is
84
+ trapped in the dialog; Esc closes (a popup inside a step that handles its own Esc keeps it).
85
+ - **Labelling.** `role="dialog"`, `aria-modal`, `aria-labelledby` = the intro title, the
86
+ step title (`api.titleProps`) or the end title. The progress bar is named by
87
+ `labels.progress`.
88
+
89
+ ## Writing a step
90
+
91
+ The pattern the owner approved — **the item's name first** (large), the question second, the
92
+ facts third. Footer: the secondary is "Skip for now" (or a step-specific word), the primary
93
+ is the step's verb; two actions at most, plus at most ONE tertiary, which sits as a text
94
+ button above the footer.
95
+
96
+ ```tsx
97
+ <SequenceResolver<Problem, Answer>
98
+ open={open}
99
+ onClose={(summary) => { setOpen(false); toastResolved(summary); }}
100
+ intro={showIntro ? intro : undefined}
101
+ queue={problems}
102
+ renderStep={(item, api) => stepFor(item, api)}
103
+ onBack={(item, answer) => api.undo(answer.undoId)}
104
+ done={(s) => ({
105
+ title: s.resolved === s.total ? copy.allSolved : copy.someSolved(s.resolved, s.total),
106
+ description: copy.doneHint,
107
+ confirmLabel: copy.finish,
108
+ })}
109
+ labels={copy.resolver}
110
+ />
111
+ ```
112
+
113
+ ### Four step kinds, as a stock screen plugs them in
114
+
115
+ | Kind (`kindLabel`) | `content` | `primary` | `secondary` | `tertiary` / `footer` |
116
+ |---|---|---|---|---|
117
+ | **Limits** — no minimum/maximum | name; "How much stays on display?"; facts; min/max steppers (`NumberField`); "Apply to every subproduct of X (N)" checkbox | "Save limits" → `api.resolve(saveLimits(...))`; with the checkbox the host's refetch drops the siblings' steps, and `{ alsoResolved: N }` counts them | skip | `footer: 'split'` |
118
+ | **Purchase** — out of stock | name; "Register purchase"; last purchase; quantity / total paid (`NumberField`), supplier (`CreatableSelect`), destination; "Also put N on display" | "Register and display N" → `api.resolve(registerPurchase(...))` | `{ label: 'Not bought yet', onClick: api.skip }` | `footer: 'split'` |
119
+ | **Restock** — display below its rule | name; "How many to take?"; total / displayed / stored; the 0→max bar; − / + | "Take N" → `api.resolve(restock(...))` | skip | `footer: 'end'` |
120
+ | **Unexplained loss** — a write-off with no reason | name; "Why did these N leave?"; quick reasons + "Other reason" (each answers with `api.resolve`, disabled while `api.busy`); "Different reasons? Split the N" | — (the reason buttons answer); while splitting: "Save N reasons" | skip; while splitting: `{ label: 'One reason only', ... }` | "It was a stock count, not a loss" |
121
+
122
+ Each `resolve` returns what `onBack` needs to undo it (an undo id from the server), so Back
123
+ is one call to the host's inverse.
124
+
125
+ ## Accessibility
126
+
127
+ - Dialog role, labelled title, focus trap (MUI's, via `Dialog`), Esc to close.
128
+ - Focus to the title on every screen change, so a screen reader announces the new problem.
129
+ - 44px+ targets below 600px (`lg` buttons, a 44px close).
130
+ - Errors are an assertive `Alert`; `aria-busy` marks the step while a write is pending.
131
+
132
+ ## Related
133
+
134
+ - `Dialog` — the surface (default and inset `bottom-sheet` variants).
135
+ - `Progress` — the bar.
136
+ - `StackedModal`, `Stepper` — see "When to use it".
@@ -0,0 +1,26 @@
1
+ /**
2
+ * THE RESOLVER'S NUMBERS — the approved prototype's, in px. The web reads
3
+ * them through `rem`/`sxRem` so a density mode scales them (FUT-3671).
4
+ */
5
+ export const SEQUENCE_METRICS = {
6
+ /** Below this width the dialog is the inset bottom sheet, and targets are 44px+. */
7
+ sheetBreakpoint: 'sm',
8
+ /** The sheet never grows past this share of the viewport; the paper scrolls inside it. */
9
+ sheetMaxHeightPercent: 95,
10
+ /** The smallest a control may be below the sheet breakpoint, and the end screen's button everywhere. */
11
+ touchTarget: 44,
12
+ /** The intro's "all in sequence" button, at least. */
13
+ startAllHeight: 48,
14
+ /** Header icon button: 40px on a pointer, 44px on a phone. */
15
+ closeSize: { pointer: 40, touch: 44 },
16
+ /** The drag handle — decoration only, the sheet does not drag. */
17
+ handle: { width: 40, height: 4 },
18
+ title: 22,
19
+ stepLabel: 13,
20
+ categoryDescription: 13,
21
+ categoryMinHeight: 56,
22
+ countBadge: 32,
23
+ listRadius: 12,
24
+ doneIcon: 44,
25
+ doneTitle: 20,
26
+ } as const;