@leaflink/stash 49.5.0 → 50.0.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 (416) hide show
  1. package/dist/Accordion.js +25 -28
  2. package/dist/Accordion.js.map +1 -1
  3. package/dist/Accordion.vue.d.ts +16 -16
  4. package/dist/ActionsDropdown.js +14 -26
  5. package/dist/ActionsDropdown.js.map +1 -1
  6. package/dist/ActionsDropdown.vue.d.ts +12 -12
  7. package/dist/AddressSelect.js +22 -47
  8. package/dist/AddressSelect.js.map +1 -1
  9. package/dist/AddressSelect.vue.d.ts +45 -45
  10. package/dist/Alert.js +4 -6
  11. package/dist/Alert.js.map +1 -1
  12. package/dist/Alert.vue.d.ts +18 -18
  13. package/dist/AppNavigationItem.js +16 -19
  14. package/dist/AppNavigationItem.js.map +1 -1
  15. package/dist/AppNavigationItem.vue.d.ts +4 -4
  16. package/dist/AppSidebar.js +27 -28
  17. package/dist/AppSidebar.js.map +1 -1
  18. package/dist/AppSidebar.vue.d.ts +7 -7
  19. package/dist/AppTopbar.js +12 -17
  20. package/dist/AppTopbar.js.map +1 -1
  21. package/dist/AppTopbar.vue.d.ts +8 -8
  22. package/dist/Avatar.js +1 -1
  23. package/dist/Avatar.vue.d.ts +22 -22
  24. package/dist/Backdrop.js +1 -1
  25. package/dist/Backdrop.vue.d.ts +1 -1
  26. package/dist/Badge.js +1 -1
  27. package/dist/Badge.js.map +1 -1
  28. package/dist/Badge.vue.d.ts +36 -36
  29. package/dist/Box.js +2 -3
  30. package/dist/Box.js.map +1 -1
  31. package/dist/Box.vue.d.ts +12 -12
  32. package/dist/{Box.vue_vue_type_script_setup_true_lang-69e5176b.js → Box.vue_vue_type_script_setup_true_lang-DgJHq-09.js} +1 -1
  33. package/dist/{Box.vue_vue_type_script_setup_true_lang-69e5176b.js.map → Box.vue_vue_type_script_setup_true_lang-DgJHq-09.js.map} +1 -1
  34. package/dist/Button.js +40 -27
  35. package/dist/Button.js.map +1 -1
  36. package/dist/Button.vue.d.ts +34 -27
  37. package/dist/ButtonGroup.js +1 -1
  38. package/dist/ButtonGroup.vue.d.ts +14 -14
  39. package/dist/Card.vue.d.ts +3 -3
  40. package/dist/CardContent.js +1 -1
  41. package/dist/CardContent.vue.d.ts +1 -1
  42. package/dist/CardFooter.js +1 -1
  43. package/dist/CardFooter.vue.d.ts +1 -1
  44. package/dist/CardMedia.js +11 -14
  45. package/dist/CardMedia.js.map +1 -1
  46. package/dist/Carousel.js +179 -180
  47. package/dist/Carousel.js.map +1 -1
  48. package/dist/Carousel.vue.d.ts +33 -11
  49. package/dist/Checkbox.js +38 -35
  50. package/dist/Checkbox.js.map +1 -1
  51. package/dist/Checkbox.vue.d.ts +31 -31
  52. package/dist/ChevronToggle.js +2 -10
  53. package/dist/ChevronToggle.js.map +1 -1
  54. package/dist/ChevronToggle.vue.d.ts +5 -5
  55. package/dist/{ChevronToggle.vue_vue_type_script_setup_true_lang-fcdf0c19.js → ChevronToggle.vue_vue_type_script_setup_true_lang-DuvluoTi.js} +1 -1
  56. package/dist/{ChevronToggle.vue_vue_type_script_setup_true_lang-fcdf0c19.js.map → ChevronToggle.vue_vue_type_script_setup_true_lang-DuvluoTi.js.map} +1 -1
  57. package/dist/Chip.js +17 -20
  58. package/dist/Chip.js.map +1 -1
  59. package/dist/Chip.vue.d.ts +32 -32
  60. package/dist/ConfirmationCodeInput.js +1 -1
  61. package/dist/ConfirmationCodeInput.js.map +1 -1
  62. package/dist/ConfirmationCodeInput.vue.d.ts +29 -29
  63. package/dist/ContextSwitcher.js +8 -14
  64. package/dist/ContextSwitcher.js.map +1 -1
  65. package/dist/ContextSwitcher.vue.d.ts +32 -32
  66. package/dist/Copy.js +23 -34
  67. package/dist/Copy.js.map +1 -1
  68. package/dist/Copy.vue.d.ts +9 -9
  69. package/dist/CurrencyInput.js +117 -128
  70. package/dist/CurrencyInput.js.map +1 -1
  71. package/dist/CurrencyInput.vue.d.ts +26 -21
  72. package/dist/CustomRender.vue.d.ts +12 -1
  73. package/dist/DataView.js +70 -73
  74. package/dist/DataView.js.map +1 -1
  75. package/dist/{DataView.vue_used_vue_type_style_index_0_lang.module-5c180dba.js → DataView.keys-C7eaZg2G.js} +5 -8
  76. package/dist/DataView.keys-C7eaZg2G.js.map +1 -0
  77. package/dist/DataView.vue.d.ts +51 -51
  78. package/dist/DataViewFilters.js +76 -90
  79. package/dist/DataViewFilters.js.map +1 -1
  80. package/dist/{DataViewFilters.keys-c80ffabe.js → DataViewFilters.keys-BLu07FiP.js} +1 -1
  81. package/dist/{DataViewFilters.keys-c80ffabe.js.map → DataViewFilters.keys-BLu07FiP.js.map} +1 -1
  82. package/dist/DataViewFilters.vue.d.ts +39 -39
  83. package/dist/DataViewSortButton.js +30 -43
  84. package/dist/DataViewSortButton.js.map +1 -1
  85. package/dist/DataViewSortButton.vue.d.ts +3 -3
  86. package/dist/DataViewToolbar.js +27 -36
  87. package/dist/DataViewToolbar.js.map +1 -1
  88. package/dist/DataViewToolbar.vue.d.ts +17 -17
  89. package/dist/DatePicker.js +649 -662
  90. package/dist/DatePicker.js.map +1 -1
  91. package/dist/DatePicker.vue.d.ts +73 -73
  92. package/dist/DescriptionList.js +1 -1
  93. package/dist/{DescriptionList.keys-c906ce05.js → DescriptionList.keys-BHlHYV6b.js} +1 -1
  94. package/dist/{DescriptionList.keys-c906ce05.js.map → DescriptionList.keys-BHlHYV6b.js.map} +1 -1
  95. package/dist/DescriptionList.vue.d.ts +6 -6
  96. package/dist/DescriptionListDetail.js +1 -1
  97. package/dist/DescriptionListDetail.vue.d.ts +1 -1
  98. package/dist/DescriptionListGroup.js +1 -1
  99. package/dist/DescriptionListGroup.vue.d.ts +1 -1
  100. package/dist/DescriptionListTerm.js +1 -1
  101. package/dist/DescriptionListTerm.vue.d.ts +1 -1
  102. package/dist/Dialog.js +26 -30
  103. package/dist/Dialog.js.map +1 -1
  104. package/dist/Dialog.vue.d.ts +34 -34
  105. package/dist/Divider.js +1 -1
  106. package/dist/Divider.js.map +1 -1
  107. package/dist/Divider.vue.d.ts +1 -1
  108. package/dist/Dropdown.js +21 -28
  109. package/dist/Dropdown.js.map +1 -1
  110. package/dist/Dropdown.vue.d.ts +28 -28
  111. package/dist/EmptyState.js +32 -33
  112. package/dist/EmptyState.js.map +1 -1
  113. package/dist/EmptyState.vue.d.ts +36 -36
  114. package/dist/Expand.js +2 -3
  115. package/dist/Expand.js.map +1 -1
  116. package/dist/Expand.vue.d.ts +14 -14
  117. package/dist/{Expand.vue_vue_type_script_setup_true_lang-0f236267.js → Expand.vue_vue_type_script_setup_true_lang-D0fSAtHr.js} +1 -1
  118. package/dist/{Expand.vue_vue_type_script_setup_true_lang-0f236267.js.map → Expand.vue_vue_type_script_setup_true_lang-D0fSAtHr.js.map} +1 -1
  119. package/dist/Field.js +2 -7
  120. package/dist/Field.js.map +1 -1
  121. package/dist/Field.vue.d.ts +30 -30
  122. package/dist/{Field.vue_vue_type_script_setup_true_lang-fded4f75.js → Field.vue_vue_type_script_setup_true_lang-DjxUvSRF.js} +2 -2
  123. package/dist/{Field.vue_vue_type_script_setup_true_lang-fded4f75.js.map → Field.vue_vue_type_script_setup_true_lang-DjxUvSRF.js.map} +1 -1
  124. package/dist/FileUpload.js +58 -57
  125. package/dist/FileUpload.js.map +1 -1
  126. package/dist/FileUpload.vue.d.ts +28 -28
  127. package/dist/FilterChip.js +12 -17
  128. package/dist/FilterChip.js.map +1 -1
  129. package/dist/FilterChip.vue.d.ts +19 -19
  130. package/dist/FilterDrawerItem.js +24 -30
  131. package/dist/FilterDrawerItem.js.map +1 -1
  132. package/dist/FilterDrawerItem.vue.d.ts +2 -2
  133. package/dist/FilterDropdown.js +41 -57
  134. package/dist/FilterDropdown.js.map +1 -1
  135. package/dist/FilterDropdown.vue.d.ts +9 -9
  136. package/dist/FilterSelect.js +36 -45
  137. package/dist/FilterSelect.js.map +1 -1
  138. package/dist/FilterSelect.vue.d.ts +5 -5
  139. package/dist/Filters.js +60 -96
  140. package/dist/Filters.js.map +1 -1
  141. package/dist/Filters.vue.d.ts +2005 -2294
  142. package/dist/HttpError.js +16 -23
  143. package/dist/HttpError.js.map +1 -1
  144. package/dist/HttpError.vue.d.ts +18 -18
  145. package/dist/Icon.js +27 -22
  146. package/dist/Icon.js.map +1 -1
  147. package/dist/Icon.vue.d.ts +13 -13
  148. package/dist/IconLabel.js +9 -12
  149. package/dist/IconLabel.js.map +1 -1
  150. package/dist/IconLabel.vue.d.ts +17 -17
  151. package/dist/Illustration.js +8 -11
  152. package/dist/Illustration.js.map +1 -1
  153. package/dist/Illustration.vue.d.ts +21 -21
  154. package/dist/{Illustration.vue_vue_type_script_setup_true_lang-e26c3841.js → Illustration.vue_vue_type_script_setup_true_lang-C3qG3Ty6.js} +2 -2
  155. package/dist/{Illustration.vue_vue_type_script_setup_true_lang-e26c3841.js.map → Illustration.vue_vue_type_script_setup_true_lang-C3qG3Ty6.js.map} +1 -1
  156. package/dist/Image.js.map +1 -1
  157. package/dist/Image.vue.d.ts +18 -18
  158. package/dist/InlineEdit.js +19 -30
  159. package/dist/InlineEdit.js.map +1 -1
  160. package/dist/InlineEdit.vue.d.ts +26 -26
  161. package/dist/Input.js +58 -64
  162. package/dist/Input.js.map +1 -1
  163. package/dist/Input.vue.d.ts +44 -36
  164. package/dist/InputOptions.js +66 -93
  165. package/dist/InputOptions.js.map +1 -1
  166. package/dist/InputOptions.vue.d.ts +66 -58
  167. package/dist/IntegrationIcon.js +2 -2
  168. package/dist/IntegrationIcon.js.map +1 -1
  169. package/dist/IntegrationIcon.vue.d.ts +12 -12
  170. package/dist/Label.js +2 -5
  171. package/dist/Label.js.map +1 -1
  172. package/dist/Label.vue.d.ts +17 -17
  173. package/dist/{Label.vue_vue_type_script_setup_true_lang-b6ba2f02.js → Label.vue_vue_type_script_setup_true_lang-C4JKdqvC.js} +1 -1
  174. package/dist/{Label.vue_vue_type_script_setup_true_lang-b6ba2f02.js.map → Label.vue_vue_type_script_setup_true_lang-C4JKdqvC.js.map} +1 -1
  175. package/dist/LicenseChip.js +10 -16
  176. package/dist/LicenseChip.js.map +1 -1
  177. package/dist/LicenseChip.vue.d.ts +3 -3
  178. package/dist/ListItem.js +5 -8
  179. package/dist/ListItem.js.map +1 -1
  180. package/dist/ListItem.vue.d.ts +275 -225
  181. package/dist/ListItemCell.js +1 -1
  182. package/dist/ListItemCell.js.map +1 -1
  183. package/dist/ListItemCell.vue.d.ts +13 -2
  184. package/dist/ListView.js +57 -101
  185. package/dist/ListView.js.map +1 -1
  186. package/dist/ListView.vue.d.ts +5185 -5430
  187. package/dist/Loading.js +12 -10
  188. package/dist/Loading.js.map +1 -1
  189. package/dist/Loading.vue.d.ts +1 -1
  190. package/dist/Logo.js +2 -4
  191. package/dist/Logo.js.map +1 -1
  192. package/dist/Logo.vue.d.ts +17 -17
  193. package/dist/{Logo.vue_vue_type_script_setup_true_lang-2a2597cb.js → Logo.vue_vue_type_script_setup_true_lang-BfUU9J9O.js} +1 -1
  194. package/dist/{Logo.vue_vue_type_script_setup_true_lang-2a2597cb.js.map → Logo.vue_vue_type_script_setup_true_lang-BfUU9J9O.js.map} +1 -1
  195. package/dist/Menu.js +1 -1
  196. package/dist/Menu.vue.d.ts +1 -1
  197. package/dist/MenuItem.js +1 -1
  198. package/dist/MenuItem.vue.d.ts +1 -1
  199. package/dist/{MenusPlugin-9288029a.js → MenusPlugin-Bk6UW6o9.js} +1 -1
  200. package/dist/{MenusPlugin-9288029a.js.map → MenusPlugin-Bk6UW6o9.js.map} +1 -1
  201. package/dist/Metric.vue.d.ts +10 -10
  202. package/dist/Modal.js +27 -32
  203. package/dist/Modal.js.map +1 -1
  204. package/dist/Modal.vue.d.ts +42 -42
  205. package/dist/Modals.js +14 -16
  206. package/dist/Modals.js.map +1 -1
  207. package/dist/Modals.vue.d.ts +1 -1
  208. package/dist/ModalsPlugin.js +9 -12
  209. package/dist/ModalsPlugin.js.map +1 -1
  210. package/dist/Module.js +3 -3
  211. package/dist/{Module.keys-2cc7d830.js → Module.keys-CEsrW2f0.js} +1 -1
  212. package/dist/{Module.keys-2cc7d830.js.map → Module.keys-CEsrW2f0.js.map} +1 -1
  213. package/dist/{Module.types-3f78f2a0.js → Module.types-B1FfGGac.js} +1 -1
  214. package/dist/{Module.types-3f78f2a0.js.map → Module.types-B1FfGGac.js.map} +1 -1
  215. package/dist/Module.vue.d.ts +3 -3
  216. package/dist/ModuleContent.js +2 -2
  217. package/dist/ModuleContent.vue.d.ts +1 -1
  218. package/dist/ModuleFooter.js +2 -2
  219. package/dist/ModuleFooter.vue.d.ts +1 -1
  220. package/dist/ModuleHeader.js +3 -3
  221. package/dist/ModuleHeader.vue.d.ts +15 -15
  222. package/dist/ObfuscateText.js +8 -13
  223. package/dist/ObfuscateText.js.map +1 -1
  224. package/dist/ObfuscateText.vue.d.ts +18 -18
  225. package/dist/PageContent.js +1 -1
  226. package/dist/PageContent.vue.d.ts +1 -1
  227. package/dist/PageHeader.js +26 -23
  228. package/dist/PageHeader.js.map +1 -1
  229. package/dist/PageHeader.vue.d.ts +7 -4
  230. package/dist/PageNavigation.js +41 -64
  231. package/dist/PageNavigation.js.map +1 -1
  232. package/dist/PageNavigation.vue.d.ts +10 -10
  233. package/dist/Paginate.js +36 -34
  234. package/dist/Paginate.js.map +1 -1
  235. package/dist/Paginate.vue.d.ts +11 -11
  236. package/dist/PlaidLink.js +3 -5
  237. package/dist/PlaidLink.js.map +1 -1
  238. package/dist/PlaidLink.vue.d.ts +29 -29
  239. package/dist/QuickAction.js +12 -15
  240. package/dist/QuickAction.js.map +1 -1
  241. package/dist/QuickAction.vue.d.ts +1 -1
  242. package/dist/Radio.js +1 -1
  243. package/dist/Radio.js.map +1 -1
  244. package/dist/Radio.vue.d.ts +83 -12
  245. package/dist/RadioGroup.js +41 -45
  246. package/dist/RadioGroup.js.map +1 -1
  247. package/dist/{RadioGroup.keys-974818d6.js → RadioGroup.keys-CqfiKkNz.js} +1 -1
  248. package/dist/{RadioGroup.keys-974818d6.js.map → RadioGroup.keys-CqfiKkNz.js.map} +1 -1
  249. package/dist/RadioGroup.vue.d.ts +30 -30
  250. package/dist/RadioNew.js +2 -2
  251. package/dist/RadioNew.js.map +1 -1
  252. package/dist/RadioNew.vue.d.ts +26 -26
  253. package/dist/RangeInput.js +10 -14
  254. package/dist/RangeInput.js.map +1 -1
  255. package/dist/RangeInput.vue.d.ts +1 -1
  256. package/dist/SearchBar.js +31 -41
  257. package/dist/SearchBar.js.map +1 -1
  258. package/dist/SearchBar.vue.d.ts +22 -22
  259. package/dist/Select.js +66 -78
  260. package/dist/Select.js.map +1 -1
  261. package/dist/Select.vue.d.ts +123 -123
  262. package/dist/SelectStatus.js +47 -69
  263. package/dist/SelectStatus.js.map +1 -1
  264. package/dist/SelectStatus.vue.d.ts +33 -26
  265. package/dist/Skeleton.js +1 -1
  266. package/dist/Skeleton.js.map +1 -1
  267. package/dist/Skeleton.vue.d.ts +9 -9
  268. package/dist/Step.js +10 -14
  269. package/dist/Step.js.map +1 -1
  270. package/dist/Step.vue.d.ts +21 -21
  271. package/dist/Stepper.js +37 -40
  272. package/dist/Stepper.js.map +1 -1
  273. package/dist/Stepper.vue.d.ts +34 -29
  274. package/dist/Switch.js +1 -1
  275. package/dist/Switch.vue.d.ts +23 -23
  276. package/dist/Tab.js +21 -36
  277. package/dist/Tab.js.map +1 -1
  278. package/dist/Table.js +38 -55
  279. package/dist/Table.js.map +1 -1
  280. package/dist/Table.keys-LHQf6FEH.js +7 -0
  281. package/dist/{Table.keys-83e4f09b.js.map → Table.keys-LHQf6FEH.js.map} +1 -1
  282. package/dist/Table.vue.d.ts +36 -36
  283. package/dist/TableCell.js +26 -26
  284. package/dist/TableCell.js.map +1 -1
  285. package/dist/TableCell.vue.d.ts +6 -6
  286. package/dist/TableHeaderCell.js +6 -13
  287. package/dist/TableHeaderCell.js.map +1 -1
  288. package/dist/TableHeaderCell.vue.d.ts +3 -3
  289. package/dist/TableHeaderRow.js +22 -32
  290. package/dist/TableHeaderRow.js.map +1 -1
  291. package/dist/TableHeaderRow.vue.d.ts +8 -8
  292. package/dist/TableRow.js +59 -59
  293. package/dist/TableRow.js.map +1 -1
  294. package/dist/TableRow.vue.d.ts +26 -26
  295. package/dist/Tabs.js +10 -24
  296. package/dist/Tabs.js.map +1 -1
  297. package/dist/Tabs.vue.d.ts +5 -5
  298. package/dist/{Tabs.vue_used_vue_type_style_index_0_lang.module-d7530989.js → Tabs.vue_vue_type_script_setup_true_lang-l41hWkV4.js} +31 -34
  299. package/dist/Tabs.vue_vue_type_script_setup_true_lang-l41hWkV4.js.map +1 -0
  300. package/dist/TextEditor.js +1269 -1364
  301. package/dist/TextEditor.js.map +1 -1
  302. package/dist/TextEditor.vue.d.ts +46 -46
  303. package/dist/Textarea.js +30 -31
  304. package/dist/Textarea.js.map +1 -1
  305. package/dist/Textarea.vue.d.ts +34 -26
  306. package/dist/Timeline.js +9 -10
  307. package/dist/Timeline.js.map +1 -1
  308. package/dist/Timeline.vue.d.ts +6 -6
  309. package/dist/TimelineItem.js +1 -1
  310. package/dist/TimelineItem.vue.d.ts +1 -1
  311. package/dist/Toast.js +5 -9
  312. package/dist/Toast.js.map +1 -1
  313. package/dist/Toast.vue.d.ts +3 -3
  314. package/dist/Toasts.js +15 -25
  315. package/dist/Toasts.js.map +1 -1
  316. package/dist/Toasts.vue.d.ts +1 -1
  317. package/dist/ToastsPlugin.js +11 -23
  318. package/dist/ToastsPlugin.js.map +1 -1
  319. package/dist/Tooltip.js +1 -1
  320. package/dist/Tooltip.js.map +1 -1
  321. package/dist/Tooltip.vue.d.ts +15 -15
  322. package/dist/{_commonjsHelpers-10dfc225.js → _commonjsHelpers-DaMA6jEr.js} +1 -1
  323. package/dist/_commonjsHelpers-DaMA6jEr.js.map +1 -0
  324. package/dist/{_plugin-vue_export-helper-dad06003.js → _plugin-vue_export-helper-CHgC5LLL.js} +1 -1
  325. package/dist/_plugin-vue_export-helper-CHgC5LLL.js.map +1 -0
  326. package/dist/{colors-8d9b9429.js → colors-DDDVvqfQ.js} +1 -1
  327. package/dist/{colors-8d9b9429.js.map → colors-DDDVvqfQ.js.map} +1 -1
  328. package/dist/components.css +2 -2
  329. package/dist/directives/observe.js.map +1 -1
  330. package/dist/directives/sticky.js.map +1 -1
  331. package/dist/directives/tooltip.js +21 -27
  332. package/dist/directives/tooltip.js.map +1 -1
  333. package/dist/directives/viewable.js +1 -1
  334. package/dist/directives/viewable.js.map +1 -1
  335. package/dist/{floating-ui.vue-8d7f7932.js → floating-ui.vue-BmfQDqE-.js} +2 -3
  336. package/dist/{floating-ui.vue-8d7f7932.js.map → floating-ui.vue-BmfQDqE-.js.map} +1 -1
  337. package/dist/{formatDateTime-a5e70901.js → formatDateTime-C8CYECpd.js} +8 -12
  338. package/dist/{formatDateTime-a5e70901.js.map → formatDateTime-C8CYECpd.js.map} +1 -1
  339. package/dist/{index-9e1095ef.js → index-D6bxWkZ1.js} +2 -3
  340. package/dist/{index-9e1095ef.js.map → index-D6bxWkZ1.js.map} +1 -1
  341. package/dist/index.d.ts +1 -1
  342. package/dist/index.js +90 -112
  343. package/dist/index.js.map +1 -1
  344. package/dist/{isDefined-2ce6cde4.js → isDefined-DzVx0B6k.js} +1 -1
  345. package/dist/{isDefined-2ce6cde4.js.map → isDefined-DzVx0B6k.js.map} +1 -1
  346. package/dist/{isValid-4b2b7a54.js → isValid-DN-HkCoi.js} +1 -1
  347. package/dist/{isValid-4b2b7a54.js.map → isValid-DN-HkCoi.js.map} +1 -1
  348. package/dist/{keys-241d03b7.js → keys-BEdEsanp.js} +1 -1
  349. package/dist/{keys-241d03b7.js.map → keys-BEdEsanp.js.map} +1 -1
  350. package/dist/{keys-7ecef029.js → keys-C8Zfr_By.js} +1 -1
  351. package/dist/{keys-7ecef029.js.map → keys-C8Zfr_By.js.map} +1 -1
  352. package/dist/{misc-76697f61.js → misc-CHQs-G03.js} +1 -1
  353. package/dist/{misc-76697f61.js.map → misc-CHQs-G03.js.map} +1 -1
  354. package/dist/{parseISO-ed4094c1.js → parseISO-wlfIB_QJ.js} +12 -18
  355. package/dist/{parseISO-ed4094c1.js.map → parseISO-wlfIB_QJ.js.map} +1 -1
  356. package/dist/{searchFuzzy-9b74ec4e.js → searchFuzzy-DKooyZM8.js} +110 -149
  357. package/dist/{searchFuzzy-9b74ec4e.js.map → searchFuzzy-DKooyZM8.js.map} +1 -1
  358. package/dist/{statusLevels-a8b041f4.js → statusLevels-D8EgtE_L.js} +1 -1
  359. package/dist/{statusLevels-a8b041f4.js.map → statusLevels-D8EgtE_L.js.map} +1 -1
  360. package/dist/storage.js +8 -15
  361. package/dist/storage.js.map +1 -1
  362. package/dist/tailwind-base.js.map +1 -1
  363. package/dist/{toTimeZone-a2ed6470.js → toTimeZone-CVE1ZmsS.js} +1 -1
  364. package/dist/{toTimeZone-a2ed6470.js.map → toTimeZone-CVE1ZmsS.js.map} +1 -1
  365. package/dist/useDialog.js +7 -7
  366. package/dist/useGoogleMaps.js +18 -28
  367. package/dist/useGoogleMaps.js.map +1 -1
  368. package/dist/useModals.js +1 -2
  369. package/dist/useModals.js.map +1 -1
  370. package/dist/useScriptTag.js.map +1 -1
  371. package/dist/useSearch.js +14 -19
  372. package/dist/useSearch.js.map +1 -1
  373. package/dist/useStepper.js.map +1 -1
  374. package/dist/useValidation.js +1 -1
  375. package/dist/useValidation.js.map +1 -1
  376. package/dist/utils/calculateElementOverflow.js +9 -13
  377. package/dist/utils/calculateElementOverflow.js.map +1 -1
  378. package/dist/utils/colorScheme.js.map +1 -1
  379. package/dist/utils/createQueryString.js +4 -5
  380. package/dist/utils/createQueryString.js.map +1 -1
  381. package/dist/utils/createValidDate.js +2 -2
  382. package/dist/utils/formatDateTime.js +4 -5
  383. package/dist/utils/formatDateTime.js.map +1 -1
  384. package/dist/utils/getContrastingTextColor.js +1 -1
  385. package/dist/utils/getContrastingTextColor.js.map +1 -1
  386. package/dist/utils/helpers.js.map +1 -1
  387. package/dist/utils/i18n.js +25 -26
  388. package/dist/utils/i18n.js.map +1 -1
  389. package/dist/utils/normalizeDate.js +1 -1
  390. package/dist/utils/searchFuzzy.js +3 -10
  391. package/dist/utils/searchFuzzy.js.map +1 -1
  392. package/dist/utils/storage.js +6 -11
  393. package/dist/utils/storage.js.map +1 -1
  394. package/dist/utils/toTimeZone.js +2 -3
  395. package/dist/utils/toTimeZone.js.map +1 -1
  396. package/package.json +13 -14
  397. package/dist/Button.vue_used_vue_type_style_index_0_lang.module-4dabc2a9.js +0 -17
  398. package/dist/Button.vue_used_vue_type_style_index_0_lang.module-4dabc2a9.js.map +0 -1
  399. package/dist/Carousel.types.d.ts +0 -33
  400. package/dist/Carousel.types.js +0 -2
  401. package/dist/Carousel.types.js.map +0 -1
  402. package/dist/Checkbox.vue_used_vue_type_style_index_0_lang.module-fa8d9c06.js +0 -9
  403. package/dist/Checkbox.vue_used_vue_type_style_index_0_lang.module-fa8d9c06.js.map +0 -1
  404. package/dist/DataView.vue_used_vue_type_style_index_0_lang.module-5c180dba.js.map +0 -1
  405. package/dist/EmptyState.vue_used_vue_type_style_index_0_lang.module-f5d89366.js +0 -8
  406. package/dist/EmptyState.vue_used_vue_type_style_index_0_lang.module-f5d89366.js.map +0 -1
  407. package/dist/Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js +0 -11
  408. package/dist/Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js.map +0 -1
  409. package/dist/Loading.vue_used_vue_type_style_index_0_lang.module-ef5a3bc6.js +0 -8
  410. package/dist/Loading.vue_used_vue_type_style_index_0_lang.module-ef5a3bc6.js.map +0 -1
  411. package/dist/Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js +0 -11
  412. package/dist/Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js.map +0 -1
  413. package/dist/Table.keys-83e4f09b.js +0 -27
  414. package/dist/Tabs.vue_used_vue_type_style_index_0_lang.module-d7530989.js.map +0 -1
  415. package/dist/_commonjsHelpers-10dfc225.js.map +0 -1
  416. package/dist/_plugin-vue_export-helper-dad06003.js.map +0 -1
@@ -1,13 +1,5 @@
1
- import { _ as o } from "./ChevronToggle.vue_vue_type_script_setup_true_lang-fcdf0c19.js";
2
- import "vue";
3
- import "./Button.js";
4
- import "./Icon.js";
5
- import "lodash-es/uniqueId";
6
- import "./index-9e1095ef.js";
7
- import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
8
- import "./_plugin-vue_export-helper-dad06003.js";
9
- import "./Button.vue_used_vue_type_style_index_0_lang.module-4dabc2a9.js";
1
+ import { _ as f } from "./ChevronToggle.vue_vue_type_script_setup_true_lang-DuvluoTi.js";
10
2
  export {
11
- o as default
3
+ f as default
12
4
  };
13
5
  //# sourceMappingURL=ChevronToggle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChevronToggle.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
1
+ {"version":3,"file":"ChevronToggle.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -40,15 +40,15 @@ export declare interface ChevronToggleProps {
40
40
  }
41
41
 
42
42
  declare const _default: DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ChevronToggleProps>, {
43
- direction: string;
43
+ direction: string;
44
44
  }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
45
- click: () => void;
45
+ click: () => void;
46
46
  }, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ChevronToggleProps>, {
47
- direction: string;
47
+ direction: string;
48
48
  }>>> & Readonly<{
49
- onClick?: (() => any) | undefined;
49
+ onClick?: (() => any) | undefined;
50
50
  }>, {
51
- direction: "left" | "right" | "up" | "down";
51
+ direction: "left" | "right" | "up" | "down";
52
52
  }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
53
53
  export default _default;
54
54
 
@@ -28,4 +28,4 @@ const k = /* @__PURE__ */ a({
28
28
  export {
29
29
  k as _
30
30
  };
31
- //# sourceMappingURL=ChevronToggle.vue_vue_type_script_setup_true_lang-fcdf0c19.js.map
31
+ //# sourceMappingURL=ChevronToggle.vue_vue_type_script_setup_true_lang-DuvluoTi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChevronToggle.vue_vue_type_script_setup_true_lang-fcdf0c19.js","sources":["../src/components/ChevronToggle/ChevronToggle.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue';\n\n import Button from '../Button/Button.vue';\n import { IconName } from '../Icon/Icon.types';\n import Icon from '../Icon/Icon.vue';\n\n enum ChevronToggleDirections {\n Up = 'up',\n Down = 'down',\n Left = 'left',\n Right = 'right',\n }\n\n export type ChevronToggleDirection = `${ChevronToggleDirections}`;\n\n export interface ChevronToggleProps {\n direction?: ChevronToggleDirection;\n }\n\n const props = withDefaults(defineProps<ChevronToggleProps>(), {\n direction: 'down',\n });\n\n const emit = defineEmits<{ (e: 'click'): void }>();\n\n const icon = computed<IconName>(() => `chevron-${props.direction}`);\n</script>\n\n<template>\n <Button class=\"stash-chevron-toggle\" icon data-test=\"stash-chevron-toggle\" @click=\"emit('click')\">\n <Icon :name=\"icon\" :data-test=\"`icon|${icon}`\" />\n </Button>\n</template>\n"],"names":["props","__props","emit","__emit","icon","computed"],"mappings":";;;;;;;;;;AAoBE,UAAMA,IAAQC,GAIRC,IAAOC,GAEPC,IAAOC,EAAmB,MAAM,WAAWL,EAAM,WAAW;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ChevronToggle.vue_vue_type_script_setup_true_lang-DuvluoTi.js","sources":["../src/components/ChevronToggle/ChevronToggle.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue';\n\n import Button from '../Button/Button.vue';\n import { IconName } from '../Icon/Icon.types';\n import Icon from '../Icon/Icon.vue';\n\n enum ChevronToggleDirections {\n Up = 'up',\n Down = 'down',\n Left = 'left',\n Right = 'right',\n }\n\n export type ChevronToggleDirection = `${ChevronToggleDirections}`;\n\n export interface ChevronToggleProps {\n direction?: ChevronToggleDirection;\n }\n\n const props = withDefaults(defineProps<ChevronToggleProps>(), {\n direction: 'down',\n });\n\n const emit = defineEmits<{ (e: 'click'): void }>();\n\n const icon = computed<IconName>(() => `chevron-${props.direction}`);\n</script>\n\n<template>\n <Button class=\"stash-chevron-toggle\" icon data-test=\"stash-chevron-toggle\" @click=\"emit('click')\">\n <Icon :name=\"icon\" :data-test=\"`icon|${icon}`\" />\n </Button>\n</template>\n"],"names":["props","__props","emit","__emit","icon","computed"],"mappings":";;;;;;;;;;AAoBE,UAAMA,IAAQC,GAIRC,IAAOC,GAEPC,IAAOC,EAAmB,MAAM,WAAWL,EAAM,SAAS,EAAE;;;;;;;;;;;;;;;;;"}
package/dist/Chip.js CHANGED
@@ -1,10 +1,7 @@
1
- import { defineComponent as f, useCssModule as b, openBlock as a, createElementBlock as d, normalizeClass as n, unref as i, renderSlot as m, withKeys as v, withModifiers as u, createVNode as _, createCommentVNode as w } from "vue";
1
+ import { defineComponent as f, useCssModule as b, openBlock as r, createElementBlock as d, normalizeClass as n, unref as a, renderSlot as u, withKeys as v, withModifiers as m, createVNode as _, createCommentVNode as w } from "vue";
2
2
  import C from "./utils/colorScheme.js";
3
3
  import y from "./Icon.js";
4
- import { _ as $ } from "./_plugin-vue_export-helper-dad06003.js";
5
- import "lodash-es/uniqueId";
6
- import "./index-9e1095ef.js";
7
- import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
4
+ import { _ as $ } from "./_plugin-vue_export-helper-CHgC5LLL.js";
8
5
  const z = ["disabled"], k = /* @__PURE__ */ f({
9
6
  name: "ll-chip",
10
7
  __name: "Chip",
@@ -21,7 +18,7 @@ const z = ["disabled"], k = /* @__PURE__ */ f({
21
18
  },
22
19
  emits: ["click", "remove"],
23
20
  setup(c, { emit: p }) {
24
- const e = c, r = p, s = b();
21
+ const e = c, i = p, s = b();
25
22
  function h() {
26
23
  const { computedBgColor: o, computedTextColor: t } = C({
27
24
  shade: e.shade,
@@ -35,33 +32,33 @@ const z = ["disabled"], k = /* @__PURE__ */ f({
35
32
  "tw-bg-ice-500 tw-text-white": e.disabled
36
33
  };
37
34
  }
38
- return (o, t) => (a(), d("span", {
35
+ return (o, t) => (r(), d("span", {
39
36
  class: n(["stash-chip tw-relative tw-inline-flex tw-items-center", [
40
37
  `stash-chip--radius-${e.radius}`,
41
38
  `stash-chip--size-${e.size}`,
42
39
  `stash-chip--shade-${e.shade}`,
43
- i(s).root,
44
- i(s).removableChip,
45
- i(s)[`size-${e.size}`],
40
+ a(s).root,
41
+ a(s).removableChip,
42
+ a(s)[`size-${e.size}`],
46
43
  h()
47
44
  ]]),
48
45
  "data-test": "stash-chip",
49
- onClick: t[2] || (t[2] = (l) => r("click"))
46
+ onClick: t[2] || (t[2] = (l) => i("click"))
50
47
  }, [
51
- o.isRemovable ? (a(), d("span", {
48
+ o.isRemovable ? (r(), d("span", {
52
49
  key: 0,
53
50
  class: n([{ "tw-mr-6 tw-truncate": e.isRemovable }])
54
51
  }, [
55
- m(o.$slots, "default")
56
- ], 2)) : m(o.$slots, "default", { key: 1 }),
57
- e.isRemovable ? (a(), d("button", {
52
+ u(o.$slots, "default")
53
+ ], 2)) : u(o.$slots, "default", { key: 1 }),
54
+ e.isRemovable ? (r(), d("button", {
58
55
  key: 2,
59
56
  tabindex: "-1",
60
- class: n(["stash-chip__remove-button", ["tw-absolute", i(s)["remove-button"]]]),
57
+ class: n(["stash-chip__remove-button", ["tw-absolute", a(s)["remove-button"]]]),
61
58
  "data-test": "stash-chip|remove-button",
62
59
  disabled: e.disabled,
63
- onKeypress: t[0] || (t[0] = v(u((l) => r("remove"), ["prevent"]), ["enter"])),
64
- onMousedown: t[1] || (t[1] = u((l) => r("remove"), ["prevent", "stop"]))
60
+ onKeypress: t[0] || (t[0] = v(m((l) => i("remove"), ["prevent"]), ["enter"])),
61
+ onMousedown: t[1] || (t[1] = m((l) => i("remove"), ["prevent", "stop"]))
65
62
  }, [
66
63
  _(y, {
67
64
  "data-test": "icon|close",
@@ -78,8 +75,8 @@ const z = ["disabled"], k = /* @__PURE__ */ f({
78
75
  "remove-button": "_remove-button_1u8h2_22"
79
76
  }, B = {
80
77
  $style: g
81
- }, E = /* @__PURE__ */ $(k, [["__cssModules", B]]);
78
+ }, N = /* @__PURE__ */ $(k, [["__cssModules", B]]);
82
79
  export {
83
- E as default
80
+ N as default
84
81
  };
85
82
  //# sourceMappingURL=Chip.js.map
package/dist/Chip.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Chip.js","sources":["../src/components/Chip/Chip.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { useCssModule } from 'vue';\n\n import { StashCommonColor, StashPrimaryColorGroup } from '../../../types/colors';\n import colorSchemeUtil from '../../utils/colorScheme';\n import Icon from '../Icon/Icon.vue';\n\n defineOptions({\n name: 'll-chip',\n });\n\n export interface ChipProps {\n /**\n * The color for the chip that determines both the text and bg color. Needs to\n * be one of the brand colors in our design system (not a shade).\n */\n colorScheme?: StashPrimaryColorGroup;\n\n /**\n * The shade of the provided color to use for the background color. This effects the inferred\n * text color unless a specific text color is provided. Currently only `light` and `main`\n * shades are supported. `dark` may be added in the future.\n */\n shade?: 'light' | 'main';\n\n /**\n * The size of the chip.\n */\n size?: 'small' | 'medium';\n\n /**\n * The type of border radius to use.\n */\n radius?: 'none' | 'standard' | 'pill';\n\n /**\n * The background color of the chip. Needs to be one of our design system colors.\n */\n bgColor?: StashCommonColor;\n\n /**\n * The color of the chip text. Needs to be one of our design system colors.\n */\n textColor?: StashCommonColor;\n\n /**\n * Determines if a close icon is surfaced.\n */\n isRemovable?: boolean;\n\n /**\n * Determines if background and text color in Chip should be overidden.\n */\n shouldOverrideColors?: boolean;\n\n /**\n * Determines if the chip is disabled.\n */\n disabled?: boolean;\n }\n\n const props = withDefaults(defineProps<ChipProps>(), {\n size: 'medium',\n radius: 'standard',\n colorScheme: 'ice',\n shade: 'light',\n bgColor: undefined,\n textColor: undefined,\n isRemovable: false,\n shouldOverrideColors: false,\n disabled: false,\n });\n\n const emit = defineEmits<{\n /**\n * Fires on click of the chip.\n */\n (e: 'click'): void;\n /**\n * If `is-removable` is true, fires on click of the close button.\n */\n (e: 'remove'): void;\n }>();\n\n const classes = useCssModule();\n\n function determineConditionalStyles() {\n const { computedBgColor, computedTextColor } = colorSchemeUtil({\n shade: props.shade,\n color: props.colorScheme,\n });\n\n const colorStyles = `tw-text-${props.textColor || computedTextColor} tw-bg-${props.bgColor || computedBgColor}`;\n\n return {\n 'tw-rounded-none': props.radius === 'none',\n 'tw-rounded-sm': props.radius === 'standard',\n 'tw-rounded-full': props.radius === 'pill',\n [colorStyles]: !props.shouldOverrideColors && !props.disabled,\n 'tw-bg-ice-500 tw-text-white': props.disabled,\n };\n }\n</script>\n\n<template>\n <span\n class=\"stash-chip tw-relative tw-inline-flex tw-items-center\"\n :class=\"[\n `stash-chip--radius-${props.radius}`,\n `stash-chip--size-${props.size}`,\n `stash-chip--shade-${props.shade}`,\n classes.root,\n classes.removableChip,\n classes[`size-${props.size}`],\n determineConditionalStyles(),\n ]\"\n data-test=\"stash-chip\"\n @click=\"emit('click')\"\n >\n <span v-if=\"isRemovable\" :class=\"[{ 'tw-mr-6 tw-truncate': props.isRemovable }]\">\n <!-- @slot Chip text -->\n <slot></slot>\n </span>\n\n <!-- Allows easier testing and DOM quering when the chip text isn't nested in an inner span -->\n <!-- @slot Chip text -->\n <slot v-else></slot>\n\n <button\n v-if=\"props.isRemovable\"\n tabindex=\"-1\"\n class=\"stash-chip__remove-button\"\n :class=\"['tw-absolute', classes['remove-button']]\"\n data-test=\"stash-chip|remove-button\"\n :disabled=\"props.disabled\"\n @keypress.enter.prevent=\"emit('remove')\"\n @mousedown.prevent.stop=\"emit('remove')\"\n >\n <Icon data-test=\"icon|close\" name=\"close\" size=\"small\" />\n </button>\n </span>\n</template>\n\n<style module>\n .root {\n /**\n * Applying these styles this way because the rule of thumb is that tailwind classes should\n * always end up taking precedence, so we're converted these specific styles to be generated\n * in a custom class instead, giving `FilterChip` (which wraps `Chip`) the ability to easily\n * override them.\n */\n @apply tw-leading-none tw-font-semibold tw-uppercase tw-text-[10px];\n }\n\n .size-medium {\n height: 20px;\n padding: 2px 8px 0 8px;\n }\n\n .size-small {\n height: 16px;\n padding: 2px 8px 0 8px;\n }\n\n .remove-button {\n border-radius: inherit;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n height: inherit;\n margin-top: -2px; /* used to offset 2px top padding from .size-medium and size-small */\n padding: 0 4px;\n right: 0;\n }\n\n .remove-button:not(:disabled):hover {\n background: rgb(0 0 0 / 10%);\n }\n</style>\n"],"names":["props","__props","emit","__emit","classes","useCssModule","determineConditionalStyles","computedBgColor","computedTextColor","colorSchemeUtil","colorStyles"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA6DE,UAAMA,IAAQC,GAYRC,IAAOC,GAWPC,IAAUC;AAEhB,aAASC,IAA6B;AACpC,YAAM,EAAE,iBAAAC,GAAiB,mBAAAC,EAAkB,IAAIC,EAAgB;AAAA,QAC7D,OAAOT,EAAM;AAAA,QACb,OAAOA,EAAM;AAAA,MAAA,CACd,GAEKU,IAAc,WAAWV,EAAM,aAAaQ,WAA2BR,EAAM,WAAWO;AAEvF,aAAA;AAAA,QACL,mBAAmBP,EAAM,WAAW;AAAA,QACpC,iBAAiBA,EAAM,WAAW;AAAA,QAClC,mBAAmBA,EAAM,WAAW;AAAA,QACpC,CAACU,CAAW,GAAG,CAACV,EAAM,wBAAwB,CAACA,EAAM;AAAA,QACrD,+BAA+BA,EAAM;AAAA,MAAA;AAAA,IAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Chip.js","sources":["../src/components/Chip/Chip.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { useCssModule } from 'vue';\n\n import { StashCommonColor, StashPrimaryColorGroup } from '../../../types/colors';\n import colorSchemeUtil from '../../utils/colorScheme';\n import Icon from '../Icon/Icon.vue';\n\n defineOptions({\n name: 'll-chip',\n });\n\n export interface ChipProps {\n /**\n * The color for the chip that determines both the text and bg color. Needs to\n * be one of the brand colors in our design system (not a shade).\n */\n colorScheme?: StashPrimaryColorGroup;\n\n /**\n * The shade of the provided color to use for the background color. This effects the inferred\n * text color unless a specific text color is provided. Currently only `light` and `main`\n * shades are supported. `dark` may be added in the future.\n */\n shade?: 'light' | 'main';\n\n /**\n * The size of the chip.\n */\n size?: 'small' | 'medium';\n\n /**\n * The type of border radius to use.\n */\n radius?: 'none' | 'standard' | 'pill';\n\n /**\n * The background color of the chip. Needs to be one of our design system colors.\n */\n bgColor?: StashCommonColor;\n\n /**\n * The color of the chip text. Needs to be one of our design system colors.\n */\n textColor?: StashCommonColor;\n\n /**\n * Determines if a close icon is surfaced.\n */\n isRemovable?: boolean;\n\n /**\n * Determines if background and text color in Chip should be overidden.\n */\n shouldOverrideColors?: boolean;\n\n /**\n * Determines if the chip is disabled.\n */\n disabled?: boolean;\n }\n\n const props = withDefaults(defineProps<ChipProps>(), {\n size: 'medium',\n radius: 'standard',\n colorScheme: 'ice',\n shade: 'light',\n bgColor: undefined,\n textColor: undefined,\n isRemovable: false,\n shouldOverrideColors: false,\n disabled: false,\n });\n\n const emit = defineEmits<{\n /**\n * Fires on click of the chip.\n */\n (e: 'click'): void;\n /**\n * If `is-removable` is true, fires on click of the close button.\n */\n (e: 'remove'): void;\n }>();\n\n const classes = useCssModule();\n\n function determineConditionalStyles() {\n const { computedBgColor, computedTextColor } = colorSchemeUtil({\n shade: props.shade,\n color: props.colorScheme,\n });\n\n const colorStyles = `tw-text-${props.textColor || computedTextColor} tw-bg-${props.bgColor || computedBgColor}`;\n\n return {\n 'tw-rounded-none': props.radius === 'none',\n 'tw-rounded-sm': props.radius === 'standard',\n 'tw-rounded-full': props.radius === 'pill',\n [colorStyles]: !props.shouldOverrideColors && !props.disabled,\n 'tw-bg-ice-500 tw-text-white': props.disabled,\n };\n }\n</script>\n\n<template>\n <span\n class=\"stash-chip tw-relative tw-inline-flex tw-items-center\"\n :class=\"[\n `stash-chip--radius-${props.radius}`,\n `stash-chip--size-${props.size}`,\n `stash-chip--shade-${props.shade}`,\n classes.root,\n classes.removableChip,\n classes[`size-${props.size}`],\n determineConditionalStyles(),\n ]\"\n data-test=\"stash-chip\"\n @click=\"emit('click')\"\n >\n <span v-if=\"isRemovable\" :class=\"[{ 'tw-mr-6 tw-truncate': props.isRemovable }]\">\n <!-- @slot Chip text -->\n <slot></slot>\n </span>\n\n <!-- Allows easier testing and DOM quering when the chip text isn't nested in an inner span -->\n <!-- @slot Chip text -->\n <slot v-else></slot>\n\n <button\n v-if=\"props.isRemovable\"\n tabindex=\"-1\"\n class=\"stash-chip__remove-button\"\n :class=\"['tw-absolute', classes['remove-button']]\"\n data-test=\"stash-chip|remove-button\"\n :disabled=\"props.disabled\"\n @keypress.enter.prevent=\"emit('remove')\"\n @mousedown.prevent.stop=\"emit('remove')\"\n >\n <Icon data-test=\"icon|close\" name=\"close\" size=\"small\" />\n </button>\n </span>\n</template>\n\n<style module>\n .root {\n /**\n * Applying these styles this way because the rule of thumb is that tailwind classes should\n * always end up taking precedence, so we're converted these specific styles to be generated\n * in a custom class instead, giving `FilterChip` (which wraps `Chip`) the ability to easily\n * override them.\n */\n @apply tw-leading-none tw-font-semibold tw-uppercase tw-text-[10px];\n }\n\n .size-medium {\n height: 20px;\n padding: 2px 8px 0 8px;\n }\n\n .size-small {\n height: 16px;\n padding: 2px 8px 0 8px;\n }\n\n .remove-button {\n border-radius: inherit;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n height: inherit;\n margin-top: -2px; /* used to offset 2px top padding from .size-medium and size-small */\n padding: 0 4px;\n right: 0;\n }\n\n .remove-button:not(:disabled):hover {\n background: rgb(0 0 0 / 10%);\n }\n</style>\n"],"names":["props","__props","emit","__emit","classes","useCssModule","determineConditionalStyles","computedBgColor","computedTextColor","colorSchemeUtil","colorStyles"],"mappings":";;;;;;;;;;;;;;;;;;;;AA6DE,UAAMA,IAAQC,GAYRC,IAAOC,GAWPC,IAAUC;AAEhB,aAASC,IAA6B;AACpC,YAAM,EAAE,iBAAAC,GAAiB,mBAAAC,EAAkB,IAAIC,EAAgB;AAAA,QAC7D,OAAOT,EAAM;AAAA,QACb,OAAOA,EAAM;AAAA,MAAA,CACd,GAEKU,IAAc,WAAWV,EAAM,aAAaQ,CAAiB,UAAUR,EAAM,WAAWO,CAAe;AAEtG,aAAA;AAAA,QACL,mBAAmBP,EAAM,WAAW;AAAA,QACpC,iBAAiBA,EAAM,WAAW;AAAA,QAClC,mBAAmBA,EAAM,WAAW;AAAA,QACpC,CAACU,CAAW,GAAG,CAACV,EAAM,wBAAwB,CAACA,EAAM;AAAA,QACrD,+BAA+BA,EAAM;AAAA,MAAA;AAAA,IAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -75,41 +75,41 @@ export declare interface ChipProps {
75
75
  }
76
76
 
77
77
  declare const _default: __VLS_WithTemplateSlots<DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ChipProps>, {
78
- size: string;
79
- radius: string;
80
- colorScheme: string;
81
- shade: string;
82
- bgColor: undefined;
83
- textColor: undefined;
84
- isRemovable: boolean;
85
- shouldOverrideColors: boolean;
86
- disabled: boolean;
78
+ size: string;
79
+ radius: string;
80
+ colorScheme: string;
81
+ shade: string;
82
+ bgColor: undefined;
83
+ textColor: undefined;
84
+ isRemovable: boolean;
85
+ shouldOverrideColors: boolean;
86
+ disabled: boolean;
87
87
  }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
88
- click: () => void;
89
- remove: () => void;
88
+ click: () => void;
89
+ remove: () => void;
90
90
  }, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ChipProps>, {
91
- size: string;
92
- radius: string;
93
- colorScheme: string;
94
- shade: string;
95
- bgColor: undefined;
96
- textColor: undefined;
97
- isRemovable: boolean;
98
- shouldOverrideColors: boolean;
99
- disabled: boolean;
91
+ size: string;
92
+ radius: string;
93
+ colorScheme: string;
94
+ shade: string;
95
+ bgColor: undefined;
96
+ textColor: undefined;
97
+ isRemovable: boolean;
98
+ shouldOverrideColors: boolean;
99
+ disabled: boolean;
100
100
  }>>> & Readonly<{
101
- onClick?: (() => any) | undefined;
102
- onRemove?: (() => any) | undefined;
101
+ onClick?: (() => any) | undefined;
102
+ onRemove?: (() => any) | undefined;
103
103
  }>, {
104
- disabled: boolean;
105
- size: "small" | "medium";
106
- shade: "main" | "light";
107
- colorScheme: StashPrimaryColorGroup;
108
- radius: "standard" | "none" | "pill";
109
- bgColor: "ice-700" | "purple-700" | "purple-500" | "purple-100" | "royal-700" | "royal-500" | "royal-100" | "blue-700" | "blue-500" | "blue-100" | "teal-700" | "teal-500" | "teal-100" | "green-700" | "green-500" | "green-100" | "seafoam-700" | "seafoam-500" | "seafoam-100" | "yellow-700" | "yellow-500" | "yellow-100" | "orange-700" | "orange-500" | "orange-100" | "red-700" | "red-500" | "red-100" | "ice-500" | "ice-200" | "ice-100" | "white" | "black";
110
- textColor: "ice-700" | "purple-700" | "purple-500" | "purple-100" | "royal-700" | "royal-500" | "royal-100" | "blue-700" | "blue-500" | "blue-100" | "teal-700" | "teal-500" | "teal-100" | "green-700" | "green-500" | "green-100" | "seafoam-700" | "seafoam-500" | "seafoam-100" | "yellow-700" | "yellow-500" | "yellow-100" | "orange-700" | "orange-500" | "orange-100" | "red-700" | "red-500" | "red-100" | "ice-500" | "ice-200" | "ice-100" | "white" | "black";
111
- isRemovable: boolean;
112
- shouldOverrideColors: boolean;
104
+ disabled: boolean;
105
+ size: "small" | "medium";
106
+ shade: "main" | "light";
107
+ colorScheme: StashPrimaryColorGroup;
108
+ radius: "standard" | "none" | "pill";
109
+ bgColor: "ice-700" | "purple-700" | "purple-500" | "purple-100" | "royal-700" | "royal-500" | "royal-100" | "blue-700" | "blue-500" | "blue-100" | "teal-700" | "teal-500" | "teal-100" | "green-700" | "green-500" | "green-100" | "seafoam-700" | "seafoam-500" | "seafoam-100" | "yellow-700" | "yellow-500" | "yellow-100" | "orange-700" | "orange-500" | "orange-100" | "red-700" | "red-500" | "red-100" | "ice-500" | "ice-200" | "ice-100" | "white" | "black";
110
+ textColor: "ice-700" | "purple-700" | "purple-500" | "purple-100" | "royal-700" | "royal-500" | "royal-100" | "blue-700" | "blue-500" | "blue-100" | "teal-700" | "teal-500" | "teal-100" | "green-700" | "green-500" | "green-100" | "seafoam-700" | "seafoam-500" | "seafoam-100" | "yellow-700" | "yellow-500" | "yellow-100" | "orange-700" | "orange-500" | "orange-100" | "red-700" | "red-500" | "red-100" | "ice-500" | "ice-200" | "ice-100" | "white" | "black";
111
+ isRemovable: boolean;
112
+ shouldOverrideColors: boolean;
113
113
  }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
114
114
  default?(_: {}): any;
115
115
  }>;
@@ -150,7 +150,7 @@ declare enum StashCommonColors {
150
150
  Red100 = "red-100",
151
151
  Ice700 = "ice-700",
152
152
  Ice500 = "ice-500",
153
- Ice200 = "ice-200",
153
+ Ice200 = "ice-200",// This is the one outlier, but it's used purposefully in a few places
154
154
  Ice100 = "ice-100",
155
155
  White = "white",
156
156
  Black = "black"
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as I, useCssVars as v, useCssModule as E, ref as V, onMounted as B, watch as P, openBlock as a, createElementBlock as r, normalizeClass as x, unref as l, createElementVNode as z, Fragment as A, renderList as M, toDisplayString as p, createCommentVNode as f } from "vue";
2
- import { _ as F } from "./_plugin-vue_export-helper-dad06003.js";
2
+ import { _ as F } from "./_plugin-vue_export-helper-CHgC5LLL.js";
3
3
  const K = { class: "tw-mb-3 tw-flex tw-gap-6" }, S = ["value", "onInput"], U = {
4
4
  key: 0,
5
5
  class: "tw-mt-1 tw-block tw-whitespace-pre-line tw-pr-6 tw-text-center tw-text-red-500",
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmationCodeInput.js","sources":["../src/components/ConfirmationCodeInput/ConfirmationCodeInput.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { onMounted, Ref, ref, useCssModule, watch } from 'vue';\n\n const classes = useCssModule();\n\n export interface VerificationCodeInputProps {\n digitCount?: number;\n /**\n * Error text to display.\n */\n errorText?: string;\n /**\n * Success text to display.\n */\n successText?: string;\n /**\n * Hint text to display.\n */\n hintText?: string;\n /**\n * One time password/code\n */\n modelValue?: string;\n }\n\n const props = withDefaults(defineProps<VerificationCodeInputProps>(), {\n digitCount: 6,\n errorText: undefined,\n successText: undefined,\n hintText: undefined,\n modelValue: undefined,\n });\n\n const emit = defineEmits<{\n (e: 'update:model-value', value: string | null): void;\n (e: 'change', params: { originalEvent: Event; value: string | null }): void;\n (e: 'focus', params: Event): void;\n (e: 'blur', params: Event): void;\n }>();\n\n const data: Ref<Array<string>> = ref([]);\n\n onMounted(() => {\n if (props.modelValue) {\n data.value = props.modelValue?.split('');\n }\n });\n\n function handleInput(event: InputEvent, index) {\n data.value[index] = event.target?.['value'];\n updateModel(event);\n\n if (event.inputType === 'deleteContentBackward') {\n moveToPrev(event);\n } else if (event.inputType === 'insertText' || event.inputType === 'deleteContentForward') {\n moveToNext(event);\n }\n }\n\n function updateModel(event: Event) {\n const newValue = data.value.join('');\n emit('update:model-value', newValue);\n emit('change', { originalEvent: event, value: newValue });\n }\n\n function moveToPrev(event: InputEvent | KeyboardEvent) {\n const prevInput: HTMLInputElement = findPrevInput(event.target as HTMLInputElement);\n\n if (prevInput) {\n prevInput.focus();\n prevInput.select();\n }\n }\n\n function moveToNext(event: InputEvent | KeyboardEvent) {\n const nextInput: HTMLInputElement = findNextInput(event.target as HTMLInputElement);\n\n if (nextInput) {\n nextInput.focus();\n nextInput.select();\n }\n }\n\n function findPrevInput(element: HTMLInputElement) {\n const prevElement = element.previousElementSibling;\n\n if (!prevElement) return;\n\n return prevElement.nodeName === 'INPUT' ? prevElement : findPrevInput(prevElement as HTMLInputElement);\n }\n\n function findNextInput(element: HTMLInputElement) {\n const nextElement = element.nextElementSibling;\n\n if (!nextElement) return;\n\n return nextElement.nodeName === 'INPUT' ? nextElement : findNextInput(nextElement as HTMLInputElement);\n }\n\n function handleFocus(event) {\n event.target.select();\n emit('focus', event);\n }\n\n function handleBlur(event: Event) {\n emit('blur', event);\n }\n\n function handleKeyDown(event: KeyboardEvent) {\n if (event.ctrlKey || event.metaKey) {\n return;\n }\n\n switch (event.code) {\n case 'ArrowLeft':\n moveToPrev(event);\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n case 'ArrowDown':\n event.preventDefault();\n break;\n\n case 'Backspace':\n if (event.target?.['value'].length === 0) {\n moveToPrev(event);\n event.preventDefault();\n }\n break;\n\n case 'ArrowRight':\n moveToNext(event);\n event.preventDefault();\n\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Tab':\n break;\n\n default:\n if (\n !(event.code !== 'Space' && Number(event.key) >= 0 && Number(event.key) <= 9) ||\n (data.value.join('').length >= props.digitCount && event.code !== 'Delete')\n ) {\n event.preventDefault();\n }\n\n break;\n }\n }\n\n function handlePaste(event: ClipboardEvent) {\n const paste = event.clipboardData?.getData('text');\n\n if (paste?.length) {\n const pastedCode = paste?.substring(0, props.digitCount);\n\n const parsed = parseInt(pastedCode);\n\n if (!isNaN(parsed)) {\n data.value = pastedCode.split('');\n updateModel(event);\n }\n }\n\n event.preventDefault();\n }\n\n watch(\n () => props.modelValue,\n (newValue) => {\n data.value = newValue ? newValue.split('') : new Array(props.digitCount);\n },\n );\n</script>\n\n<template>\n <div\n class=\"stash-confirmation-code-input tw-inline-block\"\n data-test=\"stash-confirmation-code-input\"\n :class=\"[classes['stash-confirmation-code-input-container']]\"\n >\n <div class=\"tw-mb-3 tw-flex tw-gap-6\">\n <template v-for=\"field in props.digitCount\" :key=\"field\">\n <input\n data-test=\"stash-confirmation-code-input__otp\"\n class=\"tw-border tw-bg-white tw-p-2 tw-text-center tw-text-base tw-font-medium tw-text-ice-900 focus:tw-border-blue-500\"\n :class=\"[\n classes['otp-code-input'],\n { [classes['has-error']]: !!props.errorText },\n { [classes['has-success']]: !!props.successText },\n ]\"\n type=\"text\"\n inputmode=\"numeric\"\n maxlength=\"1\"\n :value=\"data[field - 1]\"\n pattern=\"[0-9]\"\n autocomplete=\"one-time-code\"\n @input=\"handleInput($event as InputEvent, field - 1)\"\n @keydown=\"handleKeyDown\"\n @paste=\"handlePaste\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n />\n </template>\n </div>\n <small\n v-if=\"props.errorText\"\n class=\"tw-mt-1 tw-block tw-whitespace-pre-line tw-pr-6 tw-text-center tw-text-red-500\"\n data-test=\"field-error\"\n >\n {{ props.errorText }}\n </small>\n <small\n v-if=\"props.successText\"\n class=\"tw-mt-1 tw-block tw-whitespace-pre-line tw-pr-6 tw-text-center tw-text-green-500\"\n data-test=\"field-success\"\n >\n {{ props.successText }}\n </small>\n <small\n v-if=\"props.hintText\"\n class=\"tw-mt-1 tw-block tw-whitespace-pre-line tw-pr-6 tw-text-center tw-text-ice-700\"\n data-test=\"field-hint\"\n >\n {{ props.hintText }}\n </small>\n </div>\n</template>\n\n<style module>\n .stash-confirmation-code-input-container {\n --otp-digits: v-bind(digitCount);\n --otp-container-width: calc(var(--otp-digits) * 60px);\n\n width: var(--otp-container-width);\n }\n\n .otp-code-input {\n border-radius: 4px;\n caret-color: transparent;\n height: 36px;\n width: 36px;\n }\n\n .otp-code-input.has-error:not(:focus) {\n border-color: var(--color-red-500);\n }\n\n .otp-code-input.has-success:not(:focus) {\n border-color: var(--color-green-500);\n }\n\n .otp-code-input:focus {\n box-shadow: 0 0 0 3px rgb(0 114 240 / 15%);\n outline: none;\n }\n</style>\n"],"names":["classes","useCssModule","props","__props","emit","__emit","data","ref","onMounted","_a","handleInput","event","index","updateModel","moveToPrev","moveToNext","newValue","prevInput","findPrevInput","nextInput","findNextInput","element","prevElement","nextElement","handleFocus","handleBlur","handleKeyDown","handlePaste","paste","pastedCode","parsed","watch"],"mappings":"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"}
1
+ {"version":3,"file":"ConfirmationCodeInput.js","sources":["../src/components/ConfirmationCodeInput/ConfirmationCodeInput.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { onMounted, Ref, ref, useCssModule, watch } from 'vue';\n\n const classes = useCssModule();\n\n export interface VerificationCodeInputProps {\n digitCount?: number;\n /**\n * Error text to display.\n */\n errorText?: string;\n /**\n * Success text to display.\n */\n successText?: string;\n /**\n * Hint text to display.\n */\n hintText?: string;\n /**\n * One time password/code\n */\n modelValue?: string;\n }\n\n const props = withDefaults(defineProps<VerificationCodeInputProps>(), {\n digitCount: 6,\n errorText: undefined,\n successText: undefined,\n hintText: undefined,\n modelValue: undefined,\n });\n\n const emit = defineEmits<{\n (e: 'update:model-value', value: string | null): void;\n (e: 'change', params: { originalEvent: Event; value: string | null }): void;\n (e: 'focus', params: Event): void;\n (e: 'blur', params: Event): void;\n }>();\n\n const data: Ref<Array<string>> = ref([]);\n\n onMounted(() => {\n if (props.modelValue) {\n data.value = props.modelValue?.split('');\n }\n });\n\n function handleInput(event: InputEvent, index) {\n data.value[index] = event.target?.['value'];\n updateModel(event);\n\n if (event.inputType === 'deleteContentBackward') {\n moveToPrev(event);\n } else if (event.inputType === 'insertText' || event.inputType === 'deleteContentForward') {\n moveToNext(event);\n }\n }\n\n function updateModel(event: Event) {\n const newValue = data.value.join('');\n emit('update:model-value', newValue);\n emit('change', { originalEvent: event, value: newValue });\n }\n\n function moveToPrev(event: InputEvent | KeyboardEvent) {\n const prevInput: HTMLInputElement = findPrevInput(event.target as HTMLInputElement);\n\n if (prevInput) {\n prevInput.focus();\n prevInput.select();\n }\n }\n\n function moveToNext(event: InputEvent | KeyboardEvent) {\n const nextInput: HTMLInputElement = findNextInput(event.target as HTMLInputElement);\n\n if (nextInput) {\n nextInput.focus();\n nextInput.select();\n }\n }\n\n function findPrevInput(element: HTMLInputElement) {\n const prevElement = element.previousElementSibling;\n\n if (!prevElement) return;\n\n return prevElement.nodeName === 'INPUT' ? prevElement : findPrevInput(prevElement as HTMLInputElement);\n }\n\n function findNextInput(element: HTMLInputElement) {\n const nextElement = element.nextElementSibling;\n\n if (!nextElement) return;\n\n return nextElement.nodeName === 'INPUT' ? nextElement : findNextInput(nextElement as HTMLInputElement);\n }\n\n function handleFocus(event) {\n event.target.select();\n emit('focus', event);\n }\n\n function handleBlur(event: Event) {\n emit('blur', event);\n }\n\n function handleKeyDown(event: KeyboardEvent) {\n if (event.ctrlKey || event.metaKey) {\n return;\n }\n\n switch (event.code) {\n case 'ArrowLeft':\n moveToPrev(event);\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n case 'ArrowDown':\n event.preventDefault();\n break;\n\n case 'Backspace':\n if (event.target?.['value'].length === 0) {\n moveToPrev(event);\n event.preventDefault();\n }\n break;\n\n case 'ArrowRight':\n moveToNext(event);\n event.preventDefault();\n\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Tab':\n break;\n\n default:\n if (\n !(event.code !== 'Space' && Number(event.key) >= 0 && Number(event.key) <= 9) ||\n (data.value.join('').length >= props.digitCount && event.code !== 'Delete')\n ) {\n event.preventDefault();\n }\n\n break;\n }\n }\n\n function handlePaste(event: ClipboardEvent) {\n const paste = event.clipboardData?.getData('text');\n\n if (paste?.length) {\n const pastedCode = paste?.substring(0, props.digitCount);\n\n const parsed = parseInt(pastedCode);\n\n if (!isNaN(parsed)) {\n data.value = pastedCode.split('');\n updateModel(event);\n }\n }\n\n event.preventDefault();\n }\n\n watch(\n () => props.modelValue,\n (newValue) => {\n data.value = newValue ? newValue.split('') : new Array(props.digitCount);\n },\n );\n</script>\n\n<template>\n <div\n class=\"stash-confirmation-code-input tw-inline-block\"\n data-test=\"stash-confirmation-code-input\"\n :class=\"[classes['stash-confirmation-code-input-container']]\"\n >\n <div class=\"tw-mb-3 tw-flex tw-gap-6\">\n <template v-for=\"field in props.digitCount\" :key=\"field\">\n <input\n data-test=\"stash-confirmation-code-input__otp\"\n class=\"tw-border tw-bg-white tw-p-2 tw-text-center tw-text-base tw-font-medium tw-text-ice-900 focus:tw-border-blue-500\"\n :class=\"[\n classes['otp-code-input'],\n { [classes['has-error']]: !!props.errorText },\n { [classes['has-success']]: !!props.successText },\n ]\"\n type=\"text\"\n inputmode=\"numeric\"\n maxlength=\"1\"\n :value=\"data[field - 1]\"\n pattern=\"[0-9]\"\n autocomplete=\"one-time-code\"\n @input=\"handleInput($event as InputEvent, field - 1)\"\n @keydown=\"handleKeyDown\"\n @paste=\"handlePaste\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n />\n </template>\n </div>\n <small\n v-if=\"props.errorText\"\n class=\"tw-mt-1 tw-block tw-whitespace-pre-line tw-pr-6 tw-text-center tw-text-red-500\"\n data-test=\"field-error\"\n >\n {{ props.errorText }}\n </small>\n <small\n v-if=\"props.successText\"\n class=\"tw-mt-1 tw-block tw-whitespace-pre-line tw-pr-6 tw-text-center tw-text-green-500\"\n data-test=\"field-success\"\n >\n {{ props.successText }}\n </small>\n <small\n v-if=\"props.hintText\"\n class=\"tw-mt-1 tw-block tw-whitespace-pre-line tw-pr-6 tw-text-center tw-text-ice-700\"\n data-test=\"field-hint\"\n >\n {{ props.hintText }}\n </small>\n </div>\n</template>\n\n<style module>\n .stash-confirmation-code-input-container {\n --otp-digits: v-bind(digitCount);\n --otp-container-width: calc(var(--otp-digits) * 60px);\n\n width: var(--otp-container-width);\n }\n\n .otp-code-input {\n border-radius: 4px;\n caret-color: transparent;\n height: 36px;\n width: 36px;\n }\n\n .otp-code-input.has-error:not(:focus) {\n border-color: var(--color-red-500);\n }\n\n .otp-code-input.has-success:not(:focus) {\n border-color: var(--color-green-500);\n }\n\n .otp-code-input:focus {\n box-shadow: 0 0 0 3px rgb(0 114 240 / 15%);\n outline: none;\n }\n</style>\n"],"names":["classes","useCssModule","props","__props","emit","__emit","data","ref","onMounted","_a","handleInput","event","index","updateModel","moveToPrev","moveToNext","newValue","prevInput","findPrevInput","nextInput","findNextInput","element","prevElement","nextElement","handleFocus","handleBlur","handleKeyDown","handlePaste","paste","pastedCode","parsed","watch"],"mappings":"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"}
@@ -27,39 +27,39 @@ declare type __VLS_WithDefaults<P, D> = {
27
27
  };
28
28
 
29
29
  declare const _default: DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<VerificationCodeInputProps>, {
30
- digitCount: number;
31
- errorText: undefined;
32
- successText: undefined;
33
- hintText: undefined;
34
- modelValue: undefined;
30
+ digitCount: number;
31
+ errorText: undefined;
32
+ successText: undefined;
33
+ hintText: undefined;
34
+ modelValue: undefined;
35
35
  }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
36
- "update:model-value": (value: string | null) => void;
37
- change: (params: {
38
- originalEvent: Event;
39
- value: string | null;
40
- }) => void;
41
- focus: (params: Event) => void;
42
- blur: (params: Event) => void;
36
+ "update:model-value": (value: string | null) => void;
37
+ change: (params: {
38
+ originalEvent: Event;
39
+ value: string | null;
40
+ }) => void;
41
+ focus: (params: Event) => void;
42
+ blur: (params: Event) => void;
43
43
  }, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<VerificationCodeInputProps>, {
44
- digitCount: number;
45
- errorText: undefined;
46
- successText: undefined;
47
- hintText: undefined;
48
- modelValue: undefined;
44
+ digitCount: number;
45
+ errorText: undefined;
46
+ successText: undefined;
47
+ hintText: undefined;
48
+ modelValue: undefined;
49
49
  }>>> & Readonly<{
50
- onBlur?: ((params: Event) => any) | undefined;
51
- onChange?: ((params: {
52
- originalEvent: Event;
53
- value: string | null;
54
- }) => any) | undefined;
55
- onFocus?: ((params: Event) => any) | undefined;
56
- "onUpdate:model-value"?: ((value: string | null) => any) | undefined;
50
+ onBlur?: ((params: Event) => any) | undefined;
51
+ onChange?: ((params: {
52
+ originalEvent: Event;
53
+ value: string | null;
54
+ }) => any) | undefined;
55
+ onFocus?: ((params: Event) => any) | undefined;
56
+ "onUpdate:model-value"?: ((value: string | null) => any) | undefined;
57
57
  }>, {
58
- errorText: string;
59
- hintText: string;
60
- modelValue: string;
61
- digitCount: number;
62
- successText: string;
58
+ errorText: string;
59
+ hintText: string;
60
+ modelValue: string;
61
+ digitCount: number;
62
+ successText: string;
63
63
  }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
64
64
  export default _default;
65
65
 
@@ -1,16 +1,10 @@
1
- import { defineComponent as _, computed as C, resolveComponent as g, openBlock as s, createElementBlock as i, Fragment as u, renderList as x, normalizeClass as d, toDisplayString as f, createBlock as E, withCtx as S, createTextVNode as b } from "vue";
1
+ import { defineComponent as _, computed as C, resolveComponent as g, openBlock as s, createElementBlock as l, Fragment as u, renderList as x, normalizeClass as d, toDisplayString as f, createBlock as E, withCtx as S, createTextVNode as b } from "vue";
2
2
  import { APPS as a } from "./constants.js";
3
3
  import { setPersistentItem as T, getPersistentItem as v, removePersistentItem as R } from "./utils/storage.js";
4
- import "@leaflink/snitch";
5
- import "./utils/helpers.js";
6
- import "lodash-es/camelCase";
7
- import "lodash-es/get";
8
- import "lodash-es/isFinite";
9
- import "lodash-es/isPlainObject";
10
4
  const N = {
11
5
  class: "stash-context-switcher tw-mx-auto tw-flex tw-w-64 tw-rounded-full tw-border tw-border-white/10 tw-bg-purple-700 tw-p-1.5 tw-text-center",
12
6
  "data-test": "stash-context-switcher"
13
- }, B = ["href", "onClick"], h = "-last-session", Q = /* @__PURE__ */ _({
7
+ }, B = ["href", "onClick"], h = "-last-session", L = /* @__PURE__ */ _({
14
8
  name: "ll-context-switcher",
15
9
  __name: "ContextSwitcher",
16
10
  props: {
@@ -44,18 +38,18 @@ const N = {
44
38
  if (e.portalAccess.paymentsPortal && e.portalAccess.commercePortal) {
45
39
  const k = `${n === a.PAYMENTS ? a.MARKETPLACE : a.PAYMENTS}${h}`, w = `${n}${h}`;
46
40
  T(k, r, { global: !0 });
47
- const l = v(w, { global: !0 });
48
- l && (o.preventDefault(), t = l, window.location.href = l, R(w, { global: !0 }));
41
+ const i = v(w, { global: !0 });
42
+ i && (o.preventDefault(), t = i, window.location.href = i, R(w, { global: !0 }));
49
43
  }
50
44
  p("click", { from: r, to: t }), p("switch", o, { from: r, to: t });
51
45
  }
52
46
  return (o, n) => {
53
47
  const r = g("router-link");
54
- return s(), i("div", N, [
55
- (s(!0), i(u, null, x(P.value, (t) => (s(), i(u, {
48
+ return s(), l("div", N, [
49
+ (s(!0), l(u, null, x(P.value, (t) => (s(), l(u, {
56
50
  key: t.app
57
51
  }, [
58
- t.hasBaseRoute ? (s(), i("a", {
52
+ t.hasBaseRoute ? (s(), l("a", {
59
53
  key: 0,
60
54
  class: d(["tw-w-1/2 tw-cursor-pointer tw-rounded-full tw-py-2.5 tw-font-semibold !tw-capitalize tw-leading-none !tw-no-underline", e.activeApp === t.app ? "tw-text-white tw-bg-royal-500" : "tw-text-ice-500"]),
61
55
  href: `/${t.name}`,
@@ -78,6 +72,6 @@ const N = {
78
72
  }
79
73
  });
80
74
  export {
81
- Q as default
75
+ L as default
82
76
  };
83
77
  //# sourceMappingURL=ContextSwitcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextSwitcher.js","sources":["../src/components/ContextSwitcher/ContextSwitcher.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue';\n import type { LocationQuery } from 'vue-router';\n\n import { APPS } from '../../constants';\n import { getPersistentItem, removePersistentItem, setPersistentItem } from '../../utils/storage';\n\n defineOptions({\n name: 'll-context-switcher',\n });\n\n type AppValues = (typeof APPS)[keyof typeof APPS];\n\n export interface ContextSwitcherProps {\n /**\n * The current app that is active. Choices are 'marketplace' | 'payments'.\n */\n activeApp: AppValues;\n\n /**\n * Portal access to both marketplace and payments.\n */\n portalAccess?: {\n commercePortal: boolean;\n paymentsPortal: boolean;\n };\n\n /**\n * Url to replace the other app if current user does not have portal access.\n */\n limitedAccessUrl: string;\n\n routeQuery?: LocationQuery;\n }\n\n const props = withDefaults(defineProps<ContextSwitcherProps>(), {\n portalAccess: () => ({\n commercePortal: false,\n paymentsPortal: false,\n }),\n routeQuery: () => ({}),\n });\n\n const emit = defineEmits<{\n /**\n * Fires on click of the context switcher.\n * @deprecated Use `switch` instead.\n */\n (e: 'click', urlInfo: { from: string; to: string }): void;\n /**\n * Fires on click of the context switcher.\n */\n (e: 'switch', evt: MouseEvent, urlInfo: { from: string; to: string }): void;\n }>();\n\n interface ContextItem {\n app: AppValues;\n name: string;\n hasBaseRoute: boolean;\n }\n\n const CONTEXT_SWITCHER_STORAGE_KEY = '-last-session';\n\n const routes = computed<ContextItem[]>(() => {\n return [\n {\n app: APPS.MARKETPLACE,\n name: props.portalAccess.commercePortal ? 'dashboard' : props.limitedAccessUrl,\n hasBaseRoute: props.portalAccess.commercePortal,\n },\n {\n app: APPS.PAYMENTS,\n name: props.portalAccess.paymentsPortal ? 'payments' : props.limitedAccessUrl,\n hasBaseRoute: false,\n },\n ];\n });\n\n /**\n * Saves the current url in local storage before leaving the current app, if user has access to both apps\n * If a previous session url exists, redirect users there instead then remove the local storage item afterward.\n *\n * @param event - Event from user click.\n * @param app - App name of the clicked link, is a key of `APPS`.\n */\n function handleClick(event: MouseEvent, app: AppValues) {\n if (app === props.activeApp) {\n return;\n }\n\n const currentLocation = window.location.href;\n let destination = (event.target as HTMLAnchorElement).href;\n\n if (props.portalAccess.paymentsPortal && props.portalAccess.commercePortal) {\n const appRoute = app === APPS.PAYMENTS ? APPS.MARKETPLACE : APPS.PAYMENTS;\n const currentSessionName = `${appRoute}${CONTEXT_SWITCHER_STORAGE_KEY}`;\n const prevSessionName = `${app}${CONTEXT_SWITCHER_STORAGE_KEY}`;\n\n // save the current url in local storage\n setPersistentItem(currentSessionName, currentLocation, { global: true });\n\n // get the other app's url from local storage\n const prevSessionUrl = getPersistentItem(prevSessionName, { global: true });\n\n // if it exists, redirect users to such location and remove the item from local storage\n if (prevSessionUrl) {\n event.preventDefault();\n destination = prevSessionUrl;\n window.location.href = prevSessionUrl;\n removePersistentItem(prevSessionName, { global: true });\n }\n }\n\n emit('click', { from: currentLocation, to: destination });\n emit('switch', event, { from: currentLocation, to: destination });\n }\n</script>\n\n<template>\n <div\n class=\"stash-context-switcher tw-mx-auto tw-flex tw-w-64 tw-rounded-full tw-border tw-border-white/10 tw-bg-purple-700 tw-p-1.5 tw-text-center\"\n data-test=\"stash-context-switcher\"\n >\n <template v-for=\"route in routes\" :key=\"route.app\">\n <!-- render anchor tag to override base route in Payments -->\n <a\n v-if=\"route.hasBaseRoute\"\n class=\"tw-w-1/2 tw-cursor-pointer tw-rounded-full tw-py-2.5 tw-font-semibold !tw-capitalize tw-leading-none !tw-no-underline\"\n :class=\"props.activeApp === route.app ? 'tw-text-white tw-bg-royal-500' : 'tw-text-ice-500'\"\n :href=\"`/${route.name}`\"\n @click=\"(evt) => handleClick(evt, route.app)\"\n >\n {{ route.app }}\n </a>\n\n <router-link\n v-else\n class=\"tw-w-1/2 tw-cursor-pointer tw-rounded-full tw-py-2.5 tw-font-semibold !tw-capitalize tw-leading-none !tw-no-underline\"\n :class=\"props.activeApp === route.app ? 'tw-text-white tw-bg-royal-500' : 'tw-text-ice-500'\"\n :to=\"{ name: route.name, query: routeQuery }\"\n :data-test-route=\"JSON.stringify({ name: route.name, query: routeQuery })\"\n @click=\"(evt) => handleClick(evt, route.app)\"\n >\n {{ route.app }}\n </router-link>\n </template>\n </div>\n</template>\n"],"names":["CONTEXT_SWITCHER_STORAGE_KEY","props","__props","emit","__emit","routes","computed","APPS","handleClick","event","app","currentLocation","destination","currentSessionName","prevSessionName","setPersistentItem","prevSessionUrl","getPersistentItem","removePersistentItem"],"mappings":";;;;;;;;;;;;4BA6DQA,IAA+B;;;;;;;;;;;;;;AA1BrC,UAAMC,IAAQC,GAQRC,IAAOC,GAoBPC,IAASC,EAAwB,MAC9B;AAAA,MACL;AAAA,QACE,KAAKC,EAAK;AAAA,QACV,MAAMN,EAAM,aAAa,iBAAiB,cAAcA,EAAM;AAAA,QAC9D,cAAcA,EAAM,aAAa;AAAA,MACnC;AAAA,MACA;AAAA,QACE,KAAKM,EAAK;AAAA,QACV,MAAMN,EAAM,aAAa,iBAAiB,aAAaA,EAAM;AAAA,QAC7D,cAAc;AAAA,MAChB;AAAA,IAAA,CAEH;AASQ,aAAAO,EAAYC,GAAmBC,GAAgB;AAClD,UAAAA,MAAQT,EAAM;AAChB;AAGI,YAAAU,IAAkB,OAAO,SAAS;AACpC,UAAAC,IAAeH,EAAM,OAA6B;AAEtD,UAAIR,EAAM,aAAa,kBAAkBA,EAAM,aAAa,gBAAgB;AAEpE,cAAAY,IAAqB,GADVH,MAAQH,EAAK,WAAWA,EAAK,cAAcA,EAAK,WACxBP,KACnCc,IAAkB,GAAGJ,IAAMV;AAGjC,QAAAe,EAAkBF,GAAoBF,GAAiB,EAAE,QAAQ,GAAM,CAAA;AAGvE,cAAMK,IAAiBC,EAAkBH,GAAiB,EAAE,QAAQ,IAAM;AAG1E,QAAIE,MACFP,EAAM,eAAe,GACPG,IAAAI,GACd,OAAO,SAAS,OAAOA,GACvBE,EAAqBJ,GAAiB,EAAE,QAAQ,GAAM,CAAA;AAAA;AAI1D,MAAAX,EAAK,SAAS,EAAE,MAAMQ,GAAiB,IAAIC,GAAa,GACxDT,EAAK,UAAUM,GAAO,EAAE,MAAME,GAAiB,IAAIC,GAAa;AAAA,IAClE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ContextSwitcher.js","sources":["../src/components/ContextSwitcher/ContextSwitcher.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue';\n import type { LocationQuery } from 'vue-router';\n\n import { APPS } from '../../constants';\n import { getPersistentItem, removePersistentItem, setPersistentItem } from '../../utils/storage';\n\n defineOptions({\n name: 'll-context-switcher',\n });\n\n type AppValues = (typeof APPS)[keyof typeof APPS];\n\n export interface ContextSwitcherProps {\n /**\n * The current app that is active. Choices are 'marketplace' | 'payments'.\n */\n activeApp: AppValues;\n\n /**\n * Portal access to both marketplace and payments.\n */\n portalAccess?: {\n commercePortal: boolean;\n paymentsPortal: boolean;\n };\n\n /**\n * Url to replace the other app if current user does not have portal access.\n */\n limitedAccessUrl: string;\n\n routeQuery?: LocationQuery;\n }\n\n const props = withDefaults(defineProps<ContextSwitcherProps>(), {\n portalAccess: () => ({\n commercePortal: false,\n paymentsPortal: false,\n }),\n routeQuery: () => ({}),\n });\n\n const emit = defineEmits<{\n /**\n * Fires on click of the context switcher.\n * @deprecated Use `switch` instead.\n */\n (e: 'click', urlInfo: { from: string; to: string }): void;\n /**\n * Fires on click of the context switcher.\n */\n (e: 'switch', evt: MouseEvent, urlInfo: { from: string; to: string }): void;\n }>();\n\n interface ContextItem {\n app: AppValues;\n name: string;\n hasBaseRoute: boolean;\n }\n\n const CONTEXT_SWITCHER_STORAGE_KEY = '-last-session';\n\n const routes = computed<ContextItem[]>(() => {\n return [\n {\n app: APPS.MARKETPLACE,\n name: props.portalAccess.commercePortal ? 'dashboard' : props.limitedAccessUrl,\n hasBaseRoute: props.portalAccess.commercePortal,\n },\n {\n app: APPS.PAYMENTS,\n name: props.portalAccess.paymentsPortal ? 'payments' : props.limitedAccessUrl,\n hasBaseRoute: false,\n },\n ];\n });\n\n /**\n * Saves the current url in local storage before leaving the current app, if user has access to both apps\n * If a previous session url exists, redirect users there instead then remove the local storage item afterward.\n *\n * @param event - Event from user click.\n * @param app - App name of the clicked link, is a key of `APPS`.\n */\n function handleClick(event: MouseEvent, app: AppValues) {\n if (app === props.activeApp) {\n return;\n }\n\n const currentLocation = window.location.href;\n let destination = (event.target as HTMLAnchorElement).href;\n\n if (props.portalAccess.paymentsPortal && props.portalAccess.commercePortal) {\n const appRoute = app === APPS.PAYMENTS ? APPS.MARKETPLACE : APPS.PAYMENTS;\n const currentSessionName = `${appRoute}${CONTEXT_SWITCHER_STORAGE_KEY}`;\n const prevSessionName = `${app}${CONTEXT_SWITCHER_STORAGE_KEY}`;\n\n // save the current url in local storage\n setPersistentItem(currentSessionName, currentLocation, { global: true });\n\n // get the other app's url from local storage\n const prevSessionUrl = getPersistentItem(prevSessionName, { global: true });\n\n // if it exists, redirect users to such location and remove the item from local storage\n if (prevSessionUrl) {\n event.preventDefault();\n destination = prevSessionUrl;\n window.location.href = prevSessionUrl;\n removePersistentItem(prevSessionName, { global: true });\n }\n }\n\n emit('click', { from: currentLocation, to: destination });\n emit('switch', event, { from: currentLocation, to: destination });\n }\n</script>\n\n<template>\n <div\n class=\"stash-context-switcher tw-mx-auto tw-flex tw-w-64 tw-rounded-full tw-border tw-border-white/10 tw-bg-purple-700 tw-p-1.5 tw-text-center\"\n data-test=\"stash-context-switcher\"\n >\n <template v-for=\"route in routes\" :key=\"route.app\">\n <!-- render anchor tag to override base route in Payments -->\n <a\n v-if=\"route.hasBaseRoute\"\n class=\"tw-w-1/2 tw-cursor-pointer tw-rounded-full tw-py-2.5 tw-font-semibold !tw-capitalize tw-leading-none !tw-no-underline\"\n :class=\"props.activeApp === route.app ? 'tw-text-white tw-bg-royal-500' : 'tw-text-ice-500'\"\n :href=\"`/${route.name}`\"\n @click=\"(evt) => handleClick(evt, route.app)\"\n >\n {{ route.app }}\n </a>\n\n <router-link\n v-else\n class=\"tw-w-1/2 tw-cursor-pointer tw-rounded-full tw-py-2.5 tw-font-semibold !tw-capitalize tw-leading-none !tw-no-underline\"\n :class=\"props.activeApp === route.app ? 'tw-text-white tw-bg-royal-500' : 'tw-text-ice-500'\"\n :to=\"{ name: route.name, query: routeQuery }\"\n :data-test-route=\"JSON.stringify({ name: route.name, query: routeQuery })\"\n @click=\"(evt) => handleClick(evt, route.app)\"\n >\n {{ route.app }}\n </router-link>\n </template>\n </div>\n</template>\n"],"names":["CONTEXT_SWITCHER_STORAGE_KEY","props","__props","emit","__emit","routes","computed","APPS","handleClick","event","app","currentLocation","destination","currentSessionName","prevSessionName","setPersistentItem","prevSessionUrl","getPersistentItem","removePersistentItem"],"mappings":";;;;;;4BA6DQA,IAA+B;;;;;;;;;;;;;;AA1BrC,UAAMC,IAAQC,GAQRC,IAAOC,GAoBPC,IAASC,EAAwB,MAC9B;AAAA,MACL;AAAA,QACE,KAAKC,EAAK;AAAA,QACV,MAAMN,EAAM,aAAa,iBAAiB,cAAcA,EAAM;AAAA,QAC9D,cAAcA,EAAM,aAAa;AAAA,MACnC;AAAA,MACA;AAAA,QACE,KAAKM,EAAK;AAAA,QACV,MAAMN,EAAM,aAAa,iBAAiB,aAAaA,EAAM;AAAA,QAC7D,cAAc;AAAA,MAChB;AAAA,IAAA,CAEH;AASQ,aAAAO,EAAYC,GAAmBC,GAAgB;AAClD,UAAAA,MAAQT,EAAM;AAChB;AAGI,YAAAU,IAAkB,OAAO,SAAS;AACpC,UAAAC,IAAeH,EAAM,OAA6B;AAEtD,UAAIR,EAAM,aAAa,kBAAkBA,EAAM,aAAa,gBAAgB;AAE1E,cAAMY,IAAqB,GADVH,MAAQH,EAAK,WAAWA,EAAK,cAAcA,EAAK,QAC3B,GAAGP,CAA4B,IAC/Dc,IAAkB,GAAGJ,CAAG,GAAGV,CAA4B;AAG7D,QAAAe,EAAkBF,GAAoBF,GAAiB,EAAE,QAAQ,GAAM,CAAA;AAGvE,cAAMK,IAAiBC,EAAkBH,GAAiB,EAAE,QAAQ,IAAM;AAG1E,QAAIE,MACFP,EAAM,eAAe,GACPG,IAAAI,GACd,OAAO,SAAS,OAAOA,GACvBE,EAAqBJ,GAAiB,EAAE,QAAQ,GAAM,CAAA;AAAA,MAE1D;AAEA,MAAAX,EAAK,SAAS,EAAE,MAAMQ,GAAiB,IAAIC,GAAa,GACxDT,EAAK,UAAUM,GAAO,EAAE,MAAME,GAAiB,IAAIC,GAAa;AAAA,IAClE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -2,7 +2,7 @@ import { ComponentOptionsMixin } from 'vue';
2
2
  import { ComponentProvideOptions } from 'vue';
3
3
  import { DefineComponent } from 'vue';
4
4
  import { ExtractPropTypes } from 'vue';
5
- import type { LocationQuery } from 'vue-router';
5
+ import { LocationQuery } from 'vue-router';
6
6
  import { PropType } from 'vue';
7
7
  import { PublicProps } from 'vue';
8
8
 
@@ -57,41 +57,41 @@ export declare interface ContextSwitcherProps {
57
57
  }
58
58
 
59
59
  declare const _default: DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ContextSwitcherProps>, {
60
- portalAccess: () => {
61
- commercePortal: boolean;
62
- paymentsPortal: boolean;
63
- };
64
- routeQuery: () => {};
60
+ portalAccess: () => {
61
+ commercePortal: boolean;
62
+ paymentsPortal: boolean;
63
+ };
64
+ routeQuery: () => {};
65
65
  }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
66
- click: (urlInfo: {
67
- from: string;
68
- to: string;
69
- }) => void;
70
- switch: (evt: MouseEvent, urlInfo: {
71
- from: string;
72
- to: string;
73
- }) => void;
66
+ click: (urlInfo: {
67
+ from: string;
68
+ to: string;
69
+ }) => void;
70
+ switch: (evt: MouseEvent, urlInfo: {
71
+ from: string;
72
+ to: string;
73
+ }) => void;
74
74
  }, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ContextSwitcherProps>, {
75
- portalAccess: () => {
76
- commercePortal: boolean;
77
- paymentsPortal: boolean;
78
- };
79
- routeQuery: () => {};
75
+ portalAccess: () => {
76
+ commercePortal: boolean;
77
+ paymentsPortal: boolean;
78
+ };
79
+ routeQuery: () => {};
80
80
  }>>> & Readonly<{
81
- onClick?: ((urlInfo: {
82
- from: string;
83
- to: string;
84
- }) => any) | undefined;
85
- onSwitch?: ((evt: MouseEvent, urlInfo: {
86
- from: string;
87
- to: string;
88
- }) => any) | undefined;
81
+ onClick?: ((urlInfo: {
82
+ from: string;
83
+ to: string;
84
+ }) => any) | undefined;
85
+ onSwitch?: ((evt: MouseEvent, urlInfo: {
86
+ from: string;
87
+ to: string;
88
+ }) => any) | undefined;
89
89
  }>, {
90
- portalAccess: {
91
- commercePortal: boolean;
92
- paymentsPortal: boolean;
93
- };
94
- routeQuery: LocationQuery;
90
+ portalAccess: {
91
+ commercePortal: boolean;
92
+ paymentsPortal: boolean;
93
+ };
94
+ routeQuery: LocationQuery;
95
95
  }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
96
96
  export default _default;
97
97