@leaflink/stash 51.10.0 → 51.11.1

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 (370) hide show
  1. package/dist/Accordion.js.map +1 -1
  2. package/dist/Accordion.vue.d.ts +37 -6
  3. package/dist/ActionsDropdown.js +2 -2
  4. package/dist/ActionsDropdown.js.map +1 -1
  5. package/dist/ActionsDropdown.vue.d.ts +74 -0
  6. package/dist/AddressSelect.js +60 -56
  7. package/dist/AddressSelect.js.map +1 -1
  8. package/dist/AddressSelect.vue.d.ts +65 -8
  9. package/dist/Alert.js.map +1 -1
  10. package/dist/Alert.vue.d.ts +41 -4
  11. package/dist/AppNavigationItem.js.map +1 -1
  12. package/dist/AppNavigationItem.vue.d.ts +31 -4
  13. package/dist/AppSidebar.js.map +1 -1
  14. package/dist/AppSidebar.vue.d.ts +35 -8
  15. package/dist/AppTopbar.js +1 -1
  16. package/dist/AppTopbar.js.map +1 -1
  17. package/dist/AppTopbar.vue.d.ts +33 -4
  18. package/dist/Avatar.js.map +1 -1
  19. package/dist/Avatar.vue.d.ts +44 -5
  20. package/dist/Backdrop.js.map +1 -1
  21. package/dist/Backdrop.vue.d.ts +1 -1
  22. package/dist/Badge.js.map +1 -1
  23. package/dist/Badge.vue.d.ts +55 -6
  24. package/dist/Box.vue.d.ts +36 -3
  25. package/dist/Box.vue_vue_type_script_setup_true_lang-rFnvwLVY.js.map +1 -1
  26. package/dist/Button.js.map +1 -1
  27. package/dist/Button.vue.d.ts +50 -5
  28. package/dist/ButtonGroup.js +37 -33
  29. package/dist/ButtonGroup.js.map +1 -1
  30. package/dist/ButtonGroup.vue.d.ts +39 -6
  31. package/dist/Card.js.map +1 -1
  32. package/dist/Card.vue.d.ts +32 -5
  33. package/dist/CardContent.js.map +1 -1
  34. package/dist/CardContent.vue.d.ts +1 -1
  35. package/dist/CardFooter.js.map +1 -1
  36. package/dist/CardFooter.vue.d.ts +1 -1
  37. package/dist/CardHeader.js.map +1 -1
  38. package/dist/CardHeader.vue.d.ts +15 -2
  39. package/dist/CardMedia.js.map +1 -1
  40. package/dist/CardMedia.vue.d.ts +15 -2
  41. package/dist/Carousel.js +72 -66
  42. package/dist/Carousel.js.map +1 -1
  43. package/dist/Carousel.vue.d.ts +10 -10
  44. package/dist/Checkbox.js.map +1 -1
  45. package/dist/Checkbox.vue.d.ts +53 -8
  46. package/dist/ChevronToggle.vue.d.ts +34 -7
  47. package/dist/ChevronToggle.vue_vue_type_script_setup_true_lang-Ce_qOXfR.js.map +1 -1
  48. package/dist/Chip.js.map +1 -1
  49. package/dist/Chip.vue.d.ts +52 -10
  50. package/dist/ConfirmationCodeInput.js +44 -40
  51. package/dist/ConfirmationCodeInput.js.map +1 -1
  52. package/dist/ConfirmationCodeInput.vue.d.ts +43 -8
  53. package/dist/ContextSwitcher.js.map +1 -1
  54. package/dist/ContextSwitcher.vue.d.ts +41 -6
  55. package/dist/Copy.js.map +1 -1
  56. package/dist/Copy.vue.d.ts +34 -3
  57. package/dist/CurrencyInput.js +21 -20
  58. package/dist/CurrencyInput.js.map +1 -1
  59. package/dist/CurrencyInput.vue.d.ts +46 -125
  60. package/dist/CustomRender.js.map +1 -1
  61. package/dist/DataView.js +96 -94
  62. package/dist/DataView.js.map +1 -1
  63. package/dist/DataView.keys-aSOnA4AD.js.map +1 -1
  64. package/dist/DataView.vue.d.ts +57 -12
  65. package/dist/DataViewFilters.js +139 -127
  66. package/dist/DataViewFilters.js.map +1 -1
  67. package/dist/DataViewFilters.keys-BLu07FiP.js.map +1 -1
  68. package/dist/DataViewFilters.vue.d.ts +54 -9
  69. package/dist/DataViewSortButton.js +2 -2
  70. package/dist/DataViewSortButton.js.map +1 -1
  71. package/dist/DataViewSortButton.vue.d.ts +30 -3
  72. package/dist/DataViewToolbar.js +151 -83
  73. package/dist/DataViewToolbar.js.map +1 -1
  74. package/dist/DataViewToolbar.vue.d.ts +40 -5
  75. package/dist/DatePicker.js +4636 -4524
  76. package/dist/DatePicker.js.map +1 -1
  77. package/dist/DatePicker.vue.d.ts +79 -30
  78. package/dist/DescriptionList.js.map +1 -1
  79. package/dist/DescriptionList.vue.d.ts +32 -3
  80. package/dist/DescriptionListDetail.js.map +1 -1
  81. package/dist/DescriptionListDetail.vue.d.ts +1 -1
  82. package/dist/DescriptionListGroup.js.map +1 -1
  83. package/dist/DescriptionListGroup.vue.d.ts +1 -1
  84. package/dist/DescriptionListTerm.js.map +1 -1
  85. package/dist/DescriptionListTerm.vue.d.ts +1 -1
  86. package/dist/Dialog.js.map +1 -1
  87. package/dist/Dialog.vue.d.ts +53 -10
  88. package/dist/Divider.js.map +1 -1
  89. package/dist/Dropdown.js +95 -89
  90. package/dist/Dropdown.js.map +1 -1
  91. package/dist/Dropdown.vue.d.ts +48 -12
  92. package/dist/EmptyState.js +1 -1
  93. package/dist/EmptyState.js.map +1 -1
  94. package/dist/EmptyState.vue.d.ts +62 -5
  95. package/dist/Expand.vue.d.ts +40 -10
  96. package/dist/Expand.vue_vue_type_script_setup_true_lang-CiONJfAp.js.map +1 -1
  97. package/dist/Field.vue.d.ts +53 -4
  98. package/dist/Field.vue_vue_type_script_setup_true_lang-DI6z3AE9.js.map +1 -1
  99. package/dist/FileUpload.js +74 -72
  100. package/dist/FileUpload.js.map +1 -1
  101. package/dist/FileUpload.vue.d.ts +44 -10
  102. package/dist/FilterChip.js.map +1 -1
  103. package/dist/FilterChip.vue.d.ts +41 -6
  104. package/dist/FilterDrawerItem.js +21 -21
  105. package/dist/FilterDrawerItem.js.map +1 -1
  106. package/dist/FilterDrawerItem.vue.d.ts +23 -6
  107. package/dist/FilterDropdown.js +69 -63
  108. package/dist/FilterDropdown.js.map +1 -1
  109. package/dist/FilterDropdown.vue.d.ts +35 -122
  110. package/dist/FilterSelect.js.map +1 -1
  111. package/dist/FilterSelect.vue.d.ts +31 -4
  112. package/dist/Filters.js +164 -157
  113. package/dist/Filters.js.map +1 -1
  114. package/dist/Filters.vue.d.ts +2190 -0
  115. package/dist/HttpError.js +7 -7
  116. package/dist/HttpError.js.map +1 -1
  117. package/dist/HttpError.vue.d.ts +41 -4
  118. package/dist/Icon.js +17 -17
  119. package/dist/Icon.js.map +1 -1
  120. package/dist/Icon.vue.d.ts +36 -3
  121. package/dist/IconLabel.js.map +1 -1
  122. package/dist/IconLabel.vue.d.ts +40 -5
  123. package/dist/Illustration.js +2 -2
  124. package/dist/Illustration.vue.d.ts +42 -3
  125. package/dist/{Illustration.vue_vue_type_script_setup_true_lang-BVzzNsRt.js → Illustration.vue_vue_type_script_setup_true_lang-BrqEF8xe.js} +11 -11
  126. package/dist/{Illustration.vue_vue_type_script_setup_true_lang-BVzzNsRt.js.map → Illustration.vue_vue_type_script_setup_true_lang-BrqEF8xe.js.map} +1 -1
  127. package/dist/Image.js +2 -2
  128. package/dist/Image.vue.d.ts +40 -5
  129. package/dist/{Image.vue_vue_type_script_setup_true_lang-Dg2Zk2r2.js → Image.vue_vue_type_script_setup_true_lang-D5u4av0_.js} +41 -37
  130. package/dist/{Image.vue_vue_type_script_setup_true_lang-Dg2Zk2r2.js.map → Image.vue_vue_type_script_setup_true_lang-D5u4av0_.js.map} +1 -1
  131. package/dist/InlineEdit.js.map +1 -1
  132. package/dist/InlineEdit.vue.d.ts +47 -126
  133. package/dist/Input.js.map +1 -1
  134. package/dist/Input.vue.d.ts +45 -12
  135. package/dist/InputOptions.js +69 -66
  136. package/dist/InputOptions.js.map +1 -1
  137. package/dist/InputOptions.vue.d.ts +55 -10
  138. package/dist/IntegrationIcon.js +7 -7
  139. package/dist/IntegrationIcon.js.map +1 -1
  140. package/dist/IntegrationIcon.vue.d.ts +36 -3
  141. package/dist/Label.vue.d.ts +42 -3
  142. package/dist/Label.vue_vue_type_script_setup_true_lang-CNquF3AP.js.map +1 -1
  143. package/dist/LicenseChip.js.map +1 -1
  144. package/dist/LicenseChip.vue.d.ts +30 -3
  145. package/dist/ListItem.js.map +1 -1
  146. package/dist/ListItem.vue.d.ts +294 -0
  147. package/dist/ListItemCell.js.map +1 -1
  148. package/dist/ListItemCell.vue.d.ts +21 -0
  149. package/dist/ListView.js +7 -4
  150. package/dist/ListView.js.map +1 -1
  151. package/dist/ListView.types.d.ts +29 -0
  152. package/dist/ListView.vue.d.ts +5496 -0
  153. package/dist/Loading.js +2 -2
  154. package/dist/Loading.js.map +1 -1
  155. package/dist/Loading.vue.d.ts +1 -1
  156. package/dist/Logo.js +1 -1
  157. package/dist/Logo.vue.d.ts +41 -6
  158. package/dist/{Logo.vue_vue_type_script_setup_true_lang-Y3iE9utm.js → Logo.vue_vue_type_script_setup_true_lang-Dz8c98sc.js} +17 -17
  159. package/dist/Logo.vue_vue_type_script_setup_true_lang-Dz8c98sc.js.map +1 -0
  160. package/dist/Menu.js.map +1 -1
  161. package/dist/Menu.vue.d.ts +1 -1
  162. package/dist/MenuItem.js.map +1 -1
  163. package/dist/MenuItem.vue.d.ts +1 -1
  164. package/dist/MenusPlugin-Bk6UW6o9.js +12 -0
  165. package/dist/{MenusPlugin-B4jpNe7x.js.map → MenusPlugin-Bk6UW6o9.js.map} +1 -1
  166. package/dist/Metric.js.map +1 -1
  167. package/dist/Metric.vue.d.ts +34 -3
  168. package/dist/Modal.js +64 -62
  169. package/dist/Modal.js.map +1 -1
  170. package/dist/Modal.vue.d.ts +60 -13
  171. package/dist/Modals.js +18 -17
  172. package/dist/Modals.js.map +1 -1
  173. package/dist/ModalsPlugin.js +11 -11
  174. package/dist/ModalsPlugin.js.map +1 -1
  175. package/dist/Module.js.map +1 -1
  176. package/dist/Module.keys-CEsrW2f0.js.map +1 -1
  177. package/dist/Module.types-B1FfGGac.js.map +1 -1
  178. package/dist/Module.vue.d.ts +29 -2
  179. package/dist/ModuleContent.js.map +1 -1
  180. package/dist/ModuleContent.vue.d.ts +3 -3
  181. package/dist/ModuleFooter.js.map +1 -1
  182. package/dist/ModuleFooter.vue.d.ts +1 -1
  183. package/dist/ModuleHeader.js.map +1 -1
  184. package/dist/ModuleHeader.vue.d.ts +39 -5
  185. package/dist/MoreActions.js +491 -0
  186. package/dist/MoreActions.js.map +1 -0
  187. package/dist/MoreActions.vue.d.ts +126 -0
  188. package/dist/ObfuscateText.js.map +1 -1
  189. package/dist/ObfuscateText.vue.d.ts +40 -3
  190. package/dist/PageContent.js.map +1 -1
  191. package/dist/PageContent.vue.d.ts +30 -3
  192. package/dist/PageHeader.js.map +1 -1
  193. package/dist/PageHeader.vue.d.ts +35 -6
  194. package/dist/PageNavigation.js +50 -50
  195. package/dist/PageNavigation.js.map +1 -1
  196. package/dist/PageNavigation.vue.d.ts +36 -7
  197. package/dist/Paginate.js.map +1 -1
  198. package/dist/Paginate.vue.d.ts +40 -5
  199. package/dist/PlaidLink.js.map +1 -1
  200. package/dist/PlaidLink.vue.d.ts +49 -12
  201. package/dist/QuickAction.js.map +1 -1
  202. package/dist/QuickAction.vue.d.ts +15 -2
  203. package/dist/Radio.js.map +1 -1
  204. package/dist/Radio.vue.d.ts +93 -0
  205. package/dist/RadioGroup.js +101 -94
  206. package/dist/RadioGroup.js.map +1 -1
  207. package/dist/RadioGroup.vue.d.ts +42 -116
  208. package/dist/RadioNew.js +99 -96
  209. package/dist/RadioNew.js.map +1 -1
  210. package/dist/RadioNew.vue.d.ts +48 -7
  211. package/dist/RangeInput.js.map +1 -1
  212. package/dist/RangeInput.vue.d.ts +1 -1
  213. package/dist/SearchBar.js +39 -38
  214. package/dist/SearchBar.js.map +1 -1
  215. package/dist/SearchBar.vue.d.ts +44 -127
  216. package/dist/SectionHeader.js.map +1 -1
  217. package/dist/SectionHeader.vue.d.ts +36 -5
  218. package/dist/Select.js +183 -171
  219. package/dist/Select.js.map +1 -1
  220. package/dist/Select.vue.d.ts +102 -23
  221. package/dist/SelectStatus.js +38 -38
  222. package/dist/SelectStatus.js.map +1 -1
  223. package/dist/SelectStatus.vue.d.ts +46 -226
  224. package/dist/Skeleton.js.map +1 -1
  225. package/dist/Skeleton.vue.d.ts +34 -3
  226. package/dist/Step.js +44 -44
  227. package/dist/Step.js.map +1 -1
  228. package/dist/Step.vue.d.ts +43 -4
  229. package/dist/Stepper.js.map +1 -1
  230. package/dist/Stepper.vue.d.ts +44 -9
  231. package/dist/Switch.js.map +1 -1
  232. package/dist/Switch.vue.d.ts +47 -8
  233. package/dist/Tab.js +9 -9
  234. package/dist/Tab.js.map +1 -1
  235. package/dist/Tab.vue.d.ts +15 -2
  236. package/dist/TabPanel.js.map +1 -1
  237. package/dist/TabPanel.vue.d.ts +30 -3
  238. package/dist/Table.js +59 -53
  239. package/dist/Table.js.map +1 -1
  240. package/dist/Table.keys-LHQf6FEH.js.map +1 -1
  241. package/dist/Table.vue.d.ts +50 -3
  242. package/dist/TableCell.js +1 -1
  243. package/dist/TableCell.js.map +1 -1
  244. package/dist/TableCell.vue.d.ts +32 -3
  245. package/dist/TableHeaderCell.js +1 -1
  246. package/dist/TableHeaderCell.js.map +1 -1
  247. package/dist/TableHeaderCell.vue.d.ts +30 -3
  248. package/dist/TableHeaderRow.js +1 -1
  249. package/dist/TableHeaderRow.js.map +1 -1
  250. package/dist/TableHeaderRow.vue.d.ts +34 -5
  251. package/dist/TableRow.js +44 -43
  252. package/dist/TableRow.js.map +1 -1
  253. package/dist/TableRow.vue.d.ts +48 -7
  254. package/dist/Tabs.js +2 -2
  255. package/dist/Tabs.vue.d.ts +31 -122
  256. package/dist/Tabs.vue_vue_type_script_setup_true_lang-BlJVDr7o.js +78 -0
  257. package/dist/Tabs.vue_vue_type_script_setup_true_lang-BlJVDr7o.js.map +1 -0
  258. package/dist/TextEditor.js +2420 -2414
  259. package/dist/TextEditor.js.map +1 -1
  260. package/dist/TextEditor.vue.d.ts +39 -8
  261. package/dist/Textarea.js +32 -29
  262. package/dist/Textarea.js.map +1 -1
  263. package/dist/Textarea.vue.d.ts +44 -9
  264. package/dist/Thumbnail.js +1 -1
  265. package/dist/Thumbnail.js.map +1 -1
  266. package/dist/Thumbnail.vue.d.ts +4 -4
  267. package/dist/ThumbnailEmpty.js.map +1 -1
  268. package/dist/ThumbnailEmpty.vue.d.ts +1 -1
  269. package/dist/ThumbnailGroup.js.map +1 -1
  270. package/dist/ThumbnailGroup.keys-EJ4qFNhx.js.map +1 -1
  271. package/dist/ThumbnailGroup.vue.d.ts +22 -26
  272. package/dist/Timeline.js.map +1 -1
  273. package/dist/Timeline.vue.d.ts +32 -3
  274. package/dist/TimelineItem.js.map +1 -1
  275. package/dist/TimelineItem.vue.d.ts +1 -1
  276. package/dist/Toast.js.map +1 -1
  277. package/dist/Toast.vue.d.ts +30 -3
  278. package/dist/Toasts.js.map +1 -1
  279. package/dist/ToastsPlugin.js +11 -11
  280. package/dist/ToastsPlugin.js.map +1 -1
  281. package/dist/Tooltip.js +30 -29
  282. package/dist/Tooltip.js.map +1 -1
  283. package/dist/Tooltip.vue.d.ts +43 -11
  284. package/dist/colors-DDDVvqfQ.js.map +1 -1
  285. package/dist/components.css +1 -1
  286. package/dist/constants.js.map +1 -1
  287. package/dist/directives/autofocus.js.map +1 -1
  288. package/dist/directives/clickoutside.js.map +1 -1
  289. package/dist/directives/observe.js.map +1 -1
  290. package/dist/directives/sticky.js.map +1 -1
  291. package/dist/directives/tooltip.js +3 -3
  292. package/dist/directives/tooltip.js.map +1 -1
  293. package/dist/directives/viewable.js +44 -39
  294. package/dist/directives/viewable.js.map +1 -1
  295. package/dist/{floating-ui.vue-CL01Y9ER.js → floating-ui.vue-pzUuloyX.js} +2 -2
  296. package/dist/{floating-ui.vue-CL01Y9ER.js.map → floating-ui.vue-pzUuloyX.js.map} +1 -1
  297. package/dist/formatDateTime-Dz8bXV0R.js +1418 -0
  298. package/dist/{formatDateTime-DG7kBc2T.js.map → formatDateTime-Dz8bXV0R.js.map} +1 -1
  299. package/dist/index-C14LhAwV.js +294 -0
  300. package/dist/{index-GUu9zvbg.js.map → index-C14LhAwV.js.map} +1 -1
  301. package/dist/index-D6bxWkZ1.js.map +1 -1
  302. package/dist/index.js +104 -99
  303. package/dist/index.js.map +1 -1
  304. package/dist/isDefined-DzVx0B6k.js.map +1 -1
  305. package/dist/keys-BEdEsanp.js.map +1 -1
  306. package/dist/keys-C8Zfr_By.js.map +1 -1
  307. package/dist/locale.js.map +1 -1
  308. package/dist/misc-CHQs-G03.js.map +1 -1
  309. package/dist/obfuscateText.d.ts +1 -1
  310. package/dist/parseISO-wlfIB_QJ.js.map +1 -1
  311. package/dist/searchFuzzy-DRasJ33G.js +409 -0
  312. package/dist/{searchFuzzy-DBDE6jkd.js.map → searchFuzzy-DRasJ33G.js.map} +1 -1
  313. package/dist/statusLevels-D8EgtE_L.js.map +1 -1
  314. package/dist/storage.js.map +1 -1
  315. package/dist/tailwind-base.d.ts +18 -0
  316. package/dist/tailwind-base.js +18 -8
  317. package/dist/tailwind-base.js.map +1 -1
  318. package/dist/toTimeZone-Coq1oPTt.js.map +1 -1
  319. package/dist/useConfirmBeforeClosing.js.map +1 -1
  320. package/dist/useDialog.d.ts +2 -2
  321. package/dist/useDialog.js +25 -21
  322. package/dist/useDialog.js.map +1 -1
  323. package/dist/useGoogleMaps.js +110 -108
  324. package/dist/useGoogleMaps.js.map +1 -1
  325. package/dist/useMediaQuery.d.ts +6 -0
  326. package/dist/useMediaQuery.js +15 -11
  327. package/dist/useMediaQuery.js.map +1 -1
  328. package/dist/useModals.d.ts +1 -1
  329. package/dist/useModals.js.map +1 -1
  330. package/dist/usePaginationStats-d_q39naC.js.map +1 -1
  331. package/dist/usePlaidLink.js +27 -20
  332. package/dist/usePlaidLink.js.map +1 -1
  333. package/dist/useScriptTag.js.map +1 -1
  334. package/dist/useSearch.js +13 -13
  335. package/dist/useSearch.js.map +1 -1
  336. package/dist/useSelection.js +56 -56
  337. package/dist/useSelection.js.map +1 -1
  338. package/dist/useSortable.js +63 -54
  339. package/dist/useSortable.js.map +1 -1
  340. package/dist/useStepper.d.ts +2 -2
  341. package/dist/useStepper.js +40 -36
  342. package/dist/useStepper.js.map +1 -1
  343. package/dist/useToasts.js +23 -23
  344. package/dist/useToasts.js.map +1 -1
  345. package/dist/useValidation.js +100 -96
  346. package/dist/useValidation.js.map +1 -1
  347. package/dist/utils/calculateElementOverflow.js +4 -4
  348. package/dist/utils/calculateElementOverflow.js.map +1 -1
  349. package/dist/utils/colorScheme.js.map +1 -1
  350. package/dist/utils/createQueryString.js.map +1 -1
  351. package/dist/utils/createValidDate.js.map +1 -1
  352. package/dist/utils/formatDateTime.js +1 -1
  353. package/dist/utils/getContrastingTextColor.js.map +1 -1
  354. package/dist/utils/helpers.js.map +1 -1
  355. package/dist/utils/i18n.js.map +1 -1
  356. package/dist/utils/normalizeDate.js.map +1 -1
  357. package/dist/utils/obfuscateText.js +6 -6
  358. package/dist/utils/obfuscateText.js.map +1 -1
  359. package/dist/utils/searchFuzzy.js +1 -1
  360. package/dist/utils/storage.js +23 -23
  361. package/dist/utils/storage.js.map +1 -1
  362. package/package.json +12 -12
  363. package/tailwind-base.ts +11 -0
  364. package/dist/Logo.vue_vue_type_script_setup_true_lang-Y3iE9utm.js.map +0 -1
  365. package/dist/MenusPlugin-B4jpNe7x.js +0 -12
  366. package/dist/Tabs.vue_vue_type_script_setup_true_lang-Dprx064Y.js +0 -156
  367. package/dist/Tabs.vue_vue_type_script_setup_true_lang-Dprx064Y.js.map +0 -1
  368. package/dist/formatDateTime-DG7kBc2T.js +0 -1414
  369. package/dist/index-GUu9zvbg.js +0 -128
  370. package/dist/searchFuzzy-DBDE6jkd.js +0 -408
@@ -0,0 +1,126 @@
1
+ import { ComponentOptionsMixin } from 'vue';
2
+ import { ComponentProvideOptions } from 'vue';
3
+ import { DefineComponent } from 'vue';
4
+ import { ExtractPropTypes } from 'vue';
5
+ import { PropType } from 'vue';
6
+ import { PublicProps } from 'vue';
7
+
8
+ declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
9
+
10
+ declare type __VLS_Prettify<T> = {
11
+ [K in keyof T]: T[K];
12
+ } & {};
13
+
14
+ declare type __VLS_TypePropsToRuntimeProps<T> = {
15
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
16
+ type: PropType<__VLS_NonUndefinedable<T[K]>>;
17
+ } : {
18
+ type: PropType<T[K]>;
19
+ required: true;
20
+ };
21
+ };
22
+
23
+ declare type __VLS_WithDefaults<P, D> = {
24
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
25
+ default: D[K];
26
+ }> : P[K];
27
+ };
28
+
29
+ declare type __VLS_WithTemplateSlots<T, S> = T & {
30
+ new (): {
31
+ $slots: S;
32
+ };
33
+ };
34
+
35
+ declare const _default: __VLS_WithTemplateSlots<DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<MoreActionsProps>, {
36
+ activeItemId: undefined;
37
+ dropdownContentClass: undefined;
38
+ actionsContainerClass: undefined;
39
+ moreButtonText: () => any;
40
+ dropdownMode: string;
41
+ disableAutoDetectActions: boolean;
42
+ moreButtonAlign: string;
43
+ width: undefined;
44
+ itemInDropdownClass: undefined;
45
+ }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<MoreActionsProps>, {
46
+ activeItemId: undefined;
47
+ dropdownContentClass: undefined;
48
+ actionsContainerClass: undefined;
49
+ moreButtonText: () => any;
50
+ dropdownMode: string;
51
+ disableAutoDetectActions: boolean;
52
+ moreButtonAlign: string;
53
+ width: undefined;
54
+ itemInDropdownClass: undefined;
55
+ }>>> & Readonly<{}>, {
56
+ width: string | number;
57
+ itemInDropdownClass: string | Record<string, boolean>;
58
+ activeItemId: string;
59
+ moreButtonAlign: "separate" | "together";
60
+ dropdownContentClass: string;
61
+ actionsContainerClass: string | Record<string, boolean>;
62
+ moreButtonText: string;
63
+ dropdownMode: "default" | "custom";
64
+ disableAutoDetectActions: boolean;
65
+ }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
66
+ actions?(_: {}): any;
67
+ toggle?(_: {
68
+ toggle: () => Promise<void>;
69
+ isOpen: boolean;
70
+ }): any;
71
+ }>;
72
+ export default _default;
73
+
74
+ export declare interface MoreActionsProps {
75
+ /**
76
+ * CSS class or classes to be applied to the dropdown content
77
+ */
78
+ dropdownContentClass?: string;
79
+ /**
80
+ * CSS class or classes to be applied to the actions container
81
+ */
82
+ actionsContainerClass?: string | Record<string, boolean> | undefined;
83
+ /**
84
+ * Text to display on the more actions button
85
+ */
86
+ moreButtonText?: string;
87
+ /**
88
+ * Optional width for the more-actions container
89
+ * Applies style="width: {width}" to the stash-more-actions element
90
+ */
91
+ width?: string | number;
92
+ /**
93
+ * Rendering mode for dropdown items
94
+ * - 'default': Button-style rendering (current behavior)
95
+ * - 'custom': Custom rendering through slots
96
+ */
97
+ dropdownMode?: 'default' | 'custom';
98
+ /**
99
+ * Whether to disable automatic detection of actions from first-level children in the actions slot
100
+ * When false (default), all direct children in the actions slot will be treated as actions
101
+ * without needing to manually add data-action-id attributes
102
+ */
103
+ disableAutoDetectActions?: boolean;
104
+ /**
105
+ * Whether to apply dropdown item styling automatically
106
+ * When enabled, applies flex layout, padding, hover effects, and other styling to dropdown items
107
+ */
108
+ autoStyleDropdownItems?: boolean;
109
+ /**
110
+ * Active item ID for highlighting in dropdown
111
+ * Used when autoStyleDropdownItems is enabled to show which item is currently selected
112
+ */
113
+ activeItemId?: string;
114
+ /**
115
+ * Alignment of the More button
116
+ * - 'separate': Button is aligned to the right edge of the actions container (default)
117
+ * - 'together': Button is aligned immediately after the last visible action
118
+ */
119
+ moreButtonAlign?: 'separate' | 'together';
120
+ /**
121
+ * CSS class or classes to be applied to items inside the dropdown
122
+ */
123
+ itemInDropdownClass?: string | Record<string, boolean> | undefined;
124
+ }
125
+
126
+ export { }
@@ -1 +1 @@
1
- {"version":3,"file":"ObfuscateText.js","sources":["../src/components/ObfuscateText/ObfuscateText.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, ref } from 'vue';\n\n import Button from '../Button/Button.vue';\n import Icon from '../Icon/Icon.vue';\n\n defineOptions({ name: 'll-obfuscate-text' });\n\n import obfuscateText, { ObfuscateTextOptions } from '../../utils/obfuscateText';\n\n export interface ObfuscateTextProps extends ObfuscateTextOptions {\n /**\n * The full text\n */\n text: string;\n\n /**\n * Whether to obfuscate all characters.\n * @deprecated omit the lengthToKeep prop to achieve the same result\n */\n obfuscateAll?: boolean;\n\n /**\n * Displays a button for toggling text visibility\n */\n showToggle?: boolean;\n }\n\n const isFullTextVisible = ref(false);\n\n const props = withDefaults(defineProps<ObfuscateTextProps>(), {\n maskChar: '•',\n maskCharCount: 10,\n lengthToKeep: 0,\n position: 'start',\n obfuscateAll: false,\n showToggle: false,\n });\n\n const obfuscatedText = computed(() => {\n if (props.showToggle && isFullTextVisible.value) {\n return props.text;\n }\n\n if (props.obfuscateAll) {\n return props.maskChar.repeat(props.maskCharCount);\n }\n\n return obfuscateText(props.text, {\n maskChar: props.maskChar,\n maskCharCount: props.maskCharCount,\n lengthToKeep: props.lengthToKeep,\n position: props.position,\n });\n });\n</script>\n\n<template>\n <span class=\"stash-obfuscate-text\" data-test=\"stash-obfuscate-text\">\n {{ obfuscatedText }}\n <Button\n v-if=\"props.showToggle\"\n class=\"tw-ml-1 tw-size-auto tw-p-0\"\n icon\n type=\"button\"\n @click=\"isFullTextVisible = !isFullTextVisible\"\n >\n <Icon\n :name=\"isFullTextVisible ? 'hide' : 'show'\"\n class=\"tw-cursor-pointer\"\n :class=\"isFullTextVisible ? 'stash-obfuscate-text__hide-toggle-icon' : 'stash-obfuscate-text__show-toggle-icon'\"\n :data-test=\"\n isFullTextVisible ? 'stash-obfuscate-text|hide-toggle-icon' : 'stash-obfuscate-text|show-toggle-icon'\n \"\n />\n </Button>\n </span>\n</template>\n"],"names":["isFullTextVisible","ref","props","__props","obfuscatedText","computed","obfuscateText","_openBlock","_createElementBlock","_hoisted_1","_createTextVNode","_toDisplayString","_createBlock","Button","_cache","$event","_createVNode","Icon","_normalizeClass"],"mappings":";;;;;;;;;;;;;;;;;;;;AA4BE,UAAMA,IAAoBC,EAAI,EAAK,GAE7BC,IAAQC,GASRC,IAAiBC,EAAS,MAC1BH,EAAM,cAAcF,EAAkB,QACjCE,EAAM,OAGXA,EAAM,eACDA,EAAM,SAAS,OAAOA,EAAM,aAAa,IAG3CI,EAAcJ,EAAM,MAAM;AAAA,MAC/B,UAAUA,EAAM;AAAA,MAChB,eAAeA,EAAM;AAAA,MACrB,cAAcA,EAAM;AAAA,MACpB,UAAUA,EAAM;AAAA,IAAA,CACjB,CACF;sBAIDK,EAAA,GAAAC,EAkBO,QAlBPC,GAkBO;AAAA,MAjBFC,EAAAC,EAAAP,EAAA,KAAc,IAAG,KACpB,CAAA;AAAA,MACQF,EAAM,mBADdU,EAeSC,GAAA;AAAA;QAbP,OAAM;AAAA,QACN,MAAA;AAAA,QACA,MAAK;AAAA,QACJ,SAAKC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAEf,EAAA,QAAiB,CAAIA,EAAA;AAAA,MAAA;mBAE7B,MAOE;AAAA,UAPFgB,EAOEC,GAAA;AAAA,YANC,MAAMjB,EAAA,QAAiB,SAAA;AAAA,YACxB,OAAKkB,EAAA,CAAC,qBACElB,EAAA,QAAiB,2CAAA,wCAAA,CAAA;AAAA,YACxB,aAAsBA,EAAA,QAAiB,0CAAA;AAAA,UAAA;;;;;;;"}
1
+ {"version":3,"file":"ObfuscateText.js","sources":["../src/components/ObfuscateText/ObfuscateText.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, ref } from 'vue';\n\n import Button from '../Button/Button.vue';\n import Icon from '../Icon/Icon.vue';\n\n defineOptions({ name: 'll-obfuscate-text' });\n\n import obfuscateText, { ObfuscateTextOptions } from '../../utils/obfuscateText';\n\n export interface ObfuscateTextProps extends ObfuscateTextOptions {\n /**\n * The full text\n */\n text: string;\n\n /**\n * Whether to obfuscate all characters.\n * @deprecated omit the lengthToKeep prop to achieve the same result\n */\n obfuscateAll?: boolean;\n\n /**\n * Displays a button for toggling text visibility\n */\n showToggle?: boolean;\n }\n\n const isFullTextVisible = ref(false);\n\n const props = withDefaults(defineProps<ObfuscateTextProps>(), {\n maskChar: '•',\n maskCharCount: 10,\n lengthToKeep: 0,\n position: 'start',\n obfuscateAll: false,\n showToggle: false,\n });\n\n const obfuscatedText = computed(() => {\n if (props.showToggle && isFullTextVisible.value) {\n return props.text;\n }\n\n if (props.obfuscateAll) {\n return props.maskChar.repeat(props.maskCharCount);\n }\n\n return obfuscateText(props.text, {\n maskChar: props.maskChar,\n maskCharCount: props.maskCharCount,\n lengthToKeep: props.lengthToKeep,\n position: props.position,\n });\n });\n</script>\n\n<template>\n <span class=\"stash-obfuscate-text\" data-test=\"stash-obfuscate-text\">\n {{ obfuscatedText }}\n <Button\n v-if=\"props.showToggle\"\n class=\"tw-ml-1 tw-size-auto tw-p-0\"\n icon\n type=\"button\"\n @click=\"isFullTextVisible = !isFullTextVisible\"\n >\n <Icon\n :name=\"isFullTextVisible ? 'hide' : 'show'\"\n class=\"tw-cursor-pointer\"\n :class=\"isFullTextVisible ? 'stash-obfuscate-text__hide-toggle-icon' : 'stash-obfuscate-text__show-toggle-icon'\"\n :data-test=\"\n isFullTextVisible ? 'stash-obfuscate-text|hide-toggle-icon' : 'stash-obfuscate-text|show-toggle-icon'\n \"\n />\n </Button>\n </span>\n</template>\n"],"names":["isFullTextVisible","ref","props","__props","obfuscatedText","computed","obfuscateText"],"mappings":";;;;;;;;;;;;;;;;;;;;AA4BQ,UAAAA,IAAoBC,EAAI,EAAK,GAE7BC,IAAQC,GASRC,IAAiBC,EAAS,MAC1BH,EAAM,cAAcF,EAAkB,QACjCE,EAAM,OAGXA,EAAM,eACDA,EAAM,SAAS,OAAOA,EAAM,aAAa,IAG3CI,EAAcJ,EAAM,MAAM;AAAA,MAC/B,UAAUA,EAAM;AAAA,MAChB,eAAeA,EAAM;AAAA,MACrB,cAAcA,EAAM;AAAA,MACpB,UAAUA,EAAM;AAAA,IAAA,CACjB,CACF;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,16 +1,53 @@
1
1
  import { ComponentOptionsMixin } from 'vue';
2
2
  import { ComponentProvideOptions } from 'vue';
3
3
  import { DefineComponent } from 'vue';
4
+ import { ExtractPropTypes } from 'vue';
5
+ import { PropType } from 'vue';
4
6
  import { PublicProps } from 'vue';
5
7
 
6
- declare const _default: DefineComponent<ObfuscateTextProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ObfuscateTextProps> & Readonly<{}>, {
8
+ declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
9
+
10
+ declare type __VLS_Prettify<T> = {
11
+ [K in keyof T]: T[K];
12
+ } & {};
13
+
14
+ declare type __VLS_TypePropsToRuntimeProps<T> = {
15
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
16
+ type: PropType<__VLS_NonUndefinedable<T[K]>>;
17
+ } : {
18
+ type: PropType<T[K]>;
19
+ required: true;
20
+ };
21
+ };
22
+
23
+ declare type __VLS_WithDefaults<P, D> = {
24
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
25
+ default: D[K];
26
+ }> : P[K];
27
+ };
28
+
29
+ declare const _default: DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ObfuscateTextProps>, {
30
+ maskChar: string;
31
+ maskCharCount: number;
32
+ lengthToKeep: number;
33
+ position: string;
34
+ obfuscateAll: boolean;
35
+ showToggle: boolean;
36
+ }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ObfuscateTextProps>, {
37
+ maskChar: string;
38
+ maskCharCount: number;
39
+ lengthToKeep: number;
40
+ position: string;
41
+ obfuscateAll: boolean;
42
+ showToggle: boolean;
43
+ }>>> & Readonly<{}>, {
7
44
  position: "start" | "end";
8
45
  maskChar: string;
9
46
  maskCharCount: number;
10
47
  lengthToKeep: number;
11
48
  obfuscateAll: boolean;
12
49
  showToggle: boolean;
13
- }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLSpanElement>;
50
+ }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
14
51
  export default _default;
15
52
 
16
53
  declare interface ObfuscateTextOptions {
@@ -34,7 +71,7 @@ declare interface ObfuscateTextOptions {
34
71
  position?: 'start' | 'end';
35
72
  }
36
73
 
37
- declare interface ObfuscateTextProps extends ObfuscateTextOptions {
74
+ export declare interface ObfuscateTextProps extends ObfuscateTextOptions {
38
75
  /**
39
76
  * The full text
40
77
  */
@@ -1 +1 @@
1
- {"version":3,"file":"PageContent.js","sources":["../src/components/PageContent/PageContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { useCssModule, useSlots } from 'vue';\n\n defineOptions({\n name: 'll-page-content',\n });\n\n export interface PageContentProps {\n /**\n * The active page navigation tab. If provided, the PageContent will render a tab panel as its root element.\n */\n activeTab?: string;\n }\n\n const props = withDefaults(defineProps<PageContentProps>(), {\n activeTab: undefined,\n });\n\n const slots = useSlots();\n const classes = useCssModule();\n</script>\n\n<template>\n <div\n :id=\"props.activeTab ? `tabpanel-${props.activeTab}` : undefined\"\n class=\"stash-page-content\"\n :class=\"[\n classes.root,\n {\n [classes['stash-page-content--has-sidebar']]: !!slots.sidebar,\n },\n ]\"\n data-test=\"stash-page-content\"\n :role=\"props.activeTab ? 'tabpanel' : undefined\"\n >\n <div :class=\"classes['stash-page-content__main']\">\n <!-- @slot Default content -->\n <slot name=\"default\"></slot>\n </div>\n\n <aside v-if=\"!!slots.sidebar\" :class=\"classes['stash-page-content__sidebar']\">\n <!-- @slot Sidebar content -->\n <slot name=\"sidebar\"></slot>\n </aside>\n </div>\n</template>\n\n<style module>\n .root {\n max-width: theme('width.container'); /* 1400px */\n padding-inline: var(--grid-gutter);\n position: relative;\n margin-inline: auto;\n width: 100%;\n }\n\n .stash-page-content--has-sidebar {\n display: flex;\n flex-direction: column;\n gap: var(--grid-gutter);\n }\n\n .stash-page-content--has-sidebar .stash-page-content__main {\n flex: 1; /* 12 cols */\n min-width: 0;\n }\n\n .stash-page-content--has-sidebar .stash-page-content__sidebar {\n flex: 0;\n min-width: 0;\n }\n\n @media screen('lg') {\n .stash-page-content--has-sidebar {\n flex-direction: row;\n }\n\n .stash-page-content--has-sidebar .stash-page-content__main {\n flex: 3; /* 9 cols */\n }\n\n .stash-page-content--has-sidebar .stash-page-content__sidebar {\n flex: 1; /* 3 cols */\n }\n }\n</style>\n"],"names":["props","__props","slots","useSlots","classes","useCssModule","_createElementBlock","_unref","_createElementVNode","_renderSlot","_ctx"],"mappings":";;;;;;;;;AAcE,UAAMA,IAAQC,GAIRC,IAAQC,EAAA,GACRC,IAAUC,EAAA;2BAIhBC,EAqBM,OAAA;AAAA,MApBH,IAAIN,EAAM,wBAAwBA,EAAM,SAAS,KAAK;AAAA,MACvD,UAAM,sBAAoB;AAAA,QACVO,EAAAH,CAAA,EAAQ;AAAA;WAAuBG,EAAAH,CAAA,EAAO,iCAAA,CAAA,GAAA,CAAA,CAAwCG,EAAAL,CAAA,EAAM;AAAA,QAAA;AAAA;MAMpG,aAAU;AAAA,MACT,MAAMF,EAAM,yBAAyB;AAAA,IAAA;MAEtCQ,EAGM,OAAA;AAAA,QAHA,SAAOD,EAAAH,CAAA,EAAO,0BAAA,CAAA;AAAA,MAAA;QAElBK,EAA4BC,EAAA,QAAA,SAAA;AAAA,MAAA;MAGfH,EAAAL,CAAA,EAAM,gBAArBI,EAGQ,SAAA;AAAA;QAHuB,SAAOC,EAAAH,CAAA,EAAO,6BAAA,CAAA;AAAA,MAAA;QAE3CK,EAA4BC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;;;;"}
1
+ {"version":3,"file":"PageContent.js","sources":["../src/components/PageContent/PageContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { useCssModule, useSlots } from 'vue';\n\n defineOptions({\n name: 'll-page-content',\n });\n\n export interface PageContentProps {\n /**\n * The active page navigation tab. If provided, the PageContent will render a tab panel as its root element.\n */\n activeTab?: string;\n }\n\n const props = withDefaults(defineProps<PageContentProps>(), {\n activeTab: undefined,\n });\n\n const slots = useSlots();\n const classes = useCssModule();\n</script>\n\n<template>\n <div\n :id=\"props.activeTab ? `tabpanel-${props.activeTab}` : undefined\"\n class=\"stash-page-content\"\n :class=\"[\n classes.root,\n {\n [classes['stash-page-content--has-sidebar']]: !!slots.sidebar,\n },\n ]\"\n data-test=\"stash-page-content\"\n :role=\"props.activeTab ? 'tabpanel' : undefined\"\n >\n <div :class=\"classes['stash-page-content__main']\">\n <!-- @slot Default content -->\n <slot name=\"default\"></slot>\n </div>\n\n <aside v-if=\"!!slots.sidebar\" :class=\"classes['stash-page-content__sidebar']\">\n <!-- @slot Sidebar content -->\n <slot name=\"sidebar\"></slot>\n </aside>\n </div>\n</template>\n\n<style module>\n .root {\n max-width: theme('width.container'); /* 1400px */\n padding-inline: var(--grid-gutter);\n position: relative;\n margin-inline: auto;\n width: 100%;\n }\n\n .stash-page-content--has-sidebar {\n display: flex;\n flex-direction: column;\n gap: var(--grid-gutter);\n }\n\n .stash-page-content--has-sidebar .stash-page-content__main {\n flex: 1; /* 12 cols */\n min-width: 0;\n }\n\n .stash-page-content--has-sidebar .stash-page-content__sidebar {\n flex: 0;\n min-width: 0;\n }\n\n @media screen('lg') {\n .stash-page-content--has-sidebar {\n flex-direction: row;\n }\n\n .stash-page-content--has-sidebar .stash-page-content__main {\n flex: 3; /* 9 cols */\n }\n\n .stash-page-content--has-sidebar .stash-page-content__sidebar {\n flex: 1; /* 3 cols */\n }\n }\n</style>\n"],"names":["props","__props","slots","useSlots","classes","useCssModule"],"mappings":";;;;;;;;;AAcE,UAAMA,IAAQC,GAIRC,IAAQC,EAAS,GACjBC,IAAUC,EAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,23 +1,50 @@
1
1
  import { ComponentOptionsMixin } from 'vue';
2
2
  import { ComponentProvideOptions } from 'vue';
3
3
  import { DefineComponent } from 'vue';
4
+ import { ExtractPropTypes } from 'vue';
5
+ import { PropType } from 'vue';
4
6
  import { PublicProps } from 'vue';
5
7
 
8
+ declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
9
+
10
+ declare type __VLS_Prettify<T> = {
11
+ [K in keyof T]: T[K];
12
+ } & {};
13
+
14
+ declare type __VLS_TypePropsToRuntimeProps<T> = {
15
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
16
+ type: PropType<__VLS_NonUndefinedable<T[K]>>;
17
+ } : {
18
+ type: PropType<T[K]>;
19
+ required: true;
20
+ };
21
+ };
22
+
23
+ declare type __VLS_WithDefaults<P, D> = {
24
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
25
+ default: D[K];
26
+ }> : P[K];
27
+ };
28
+
6
29
  declare type __VLS_WithTemplateSlots<T, S> = T & {
7
30
  new (): {
8
31
  $slots: S;
9
32
  };
10
33
  };
11
34
 
12
- declare const _default: __VLS_WithTemplateSlots<DefineComponent<PageContentProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<PageContentProps> & Readonly<{}>, {
35
+ declare const _default: __VLS_WithTemplateSlots<DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<PageContentProps>, {
36
+ activeTab: undefined;
37
+ }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<PageContentProps>, {
38
+ activeTab: undefined;
39
+ }>>> & Readonly<{}>, {
13
40
  activeTab: string;
14
- }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>, {
41
+ }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
15
42
  default?(_: {}): any;
16
43
  sidebar?(_: {}): any;
17
44
  }>;
18
45
  export default _default;
19
46
 
20
- declare interface PageContentProps {
47
+ export declare interface PageContentProps {
21
48
  /**
22
49
  * The active page navigation tab. If provided, the PageContent will render a tab panel as its root element.
23
50
  */
@@ -1 +1 @@
1
- {"version":3,"file":"PageHeader.js","sources":["../src/components/PageHeader/PageHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, useCssModule, useSlots } from 'vue';\n\n export interface PageHeaderProps {\n /**\n * The title of the page.\n */\n title?: string;\n /**\n * The description of the page.\n */\n description?: string;\n }\n\n defineOptions({\n name: 'll-page-header',\n });\n\n const props = withDefaults(defineProps<PageHeaderProps>(), {\n title: undefined,\n description: undefined,\n });\n\n const classes = useCssModule();\n const slots = useSlots();\n\n const hasActions = computed<boolean>(() => !!(slots['primary-action'] || slots['secondary-action']));\n</script>\n\n<template>\n <header\n class=\"stash-page-header\"\n :class=\"[classes.root, { [classes.grid]: hasActions }]\"\n data-test=\"stash-page-header\"\n >\n <div class=\"tw-col-span-full tw-flex tw-items-center lg:tw-col-span-1\">\n <div v-if=\"slots.media\" class=\"stash-page-header__media tw-mr-3 tw-self-center\" :class=\"classes.mediaTest\">\n <!-- @slot Receives a custom media -->\n <slot name=\"media\"></slot>\n </div>\n\n <div>\n <!-- @slot Receives a custom title -->\n <slot name=\"title\">\n <h1 v-if=\"props.title\" class=\"stash-page-header__title tw-my-0\">{{ props.title }}</h1>\n </slot>\n\n <!-- @slot Receives a custom description -->\n <slot name=\"description\">\n <p v-if=\"props.description\" class=\"stash-page-header__description tw-mb-0 tw-mt-1.5\">\n {{ props.description }}\n </p>\n </slot>\n </div>\n </div>\n\n <div\n v-if=\"hasActions\"\n class=\"stash-page-header__actions tw-col-span-full tw-flex lg:tw-col-span-1\"\n :class=\"classes.actions\"\n >\n <!-- @slot Receives a custom secondary action -->\n <slot name=\"secondary-action\"> </slot>\n <!-- @slot Receives a custom primary action -->\n <slot name=\"primary-action\"> </slot>\n </div>\n </header>\n</template>\n\n<style module>\n .root {\n border-bottom: 0;\n display: grid;\n gap: var(--grid-gutter);\n margin: 0 auto;\n max-width: theme('width.container');\n padding: theme('spacing.6') var(--grid-gutter) theme('spacing.12');\n width: 100%;\n }\n\n @media screen('lg') {\n .root.grid {\n grid-template-columns: repeat(2, 1fr);\n }\n }\n\n .actions {\n align-self: flex-end;\n flex-direction: column-reverse;\n row-gap: var(--grid-gutter);\n }\n\n @media screen('md') {\n .actions {\n column-gap: var(--grid-gutter);\n flex-direction: row;\n row-gap: 0;\n }\n }\n\n @media screen('lg') {\n .actions {\n align-items: flex-end;\n flex-direction: row;\n justify-content: flex-end;\n }\n }\n\n /* max size for media/marketing illustration icons we would be passing to the slot */\n .media-test {\n max-width: 58px;\n max-height: 58px;\n }\n</style>\n"],"names":["props","__props","classes","useCssModule","slots","useSlots","hasActions","computed","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_hoisted_1","_renderSlot","_ctx","_openBlock","_hoisted_2","_toDisplayString","_hoisted_3"],"mappings":";;;;;;;;;;;;;;;;AAkBE,UAAMA,IAAQC,GAKRC,IAAUC,EAAA,GACVC,IAAQC,EAAA,GAERC,IAAaC,EAAkB,MAAM,CAAC,EAAEH,EAAM,gBAAgB,KAAKA,EAAM,kBAAkB,EAAE;2BAInGI,EAoCS,UAAA;AAAA,MAnCP,OAAKC,EAAA,CAAC,qBAAmB,CAChBC,EAAAR,CAAA,EAAQ,MAAI,EAAA,CAAKQ,EAAAR,CAAA,EAAQ,IAAI,GAAGI,EAAA,MAAA,CAAU,CAAA,CAAA;AAAA,MACnD,aAAU;AAAA,IAAA;MAEVK,EAmBM,OAnBNC,GAmBM;AAAA,QAlBOF,EAAAN,CAAA,EAAM,cAAjBI,EAGM,OAAA;AAAA;UAHkB,OAAKC,EAAA,CAAC,mDAA0DC,EAAAR,CAAA,EAAQ,SAAS,CAAA;AAAA,QAAA;UAEvGW,EAA0BC,EAAA,QAAA,OAAA;AAAA,QAAA;QAG5BH,EAYM,OAAA,MAAA;AAAA,UAVJE,EAEOC,uBAFP,MAEO;AAAA,YADKd,EAAM,SAAhBe,EAAA,GAAAP,EAAsF,MAAtFQ,GAAsFC,EAAnBjB,EAAM,KAAK,GAAA,CAAA;;UAIhFa,EAIOC,6BAJP,MAIO;AAAA,YAHId,EAAM,eAAfe,EAAA,GAAAP,EAEI,KAFJU,GAEID,EADCjB,EAAM,WAAW,GAAA,CAAA;;;;MAOpBM,EAAA,cADRE,EASM,OAAA;AAAA;QAPJ,OAAKC,EAAA,CAAC,wEACEC,EAAAR,CAAA,EAAQ,OAAO,CAAA;AAAA,MAAA;QAGvBW,EAAsCC,EAAA,QAAA,kBAAA;AAAA,QAEtCD,EAAoCC,EAAA,QAAA,gBAAA;AAAA,MAAA;;;;;;;;;;;"}
1
+ {"version":3,"file":"PageHeader.js","sources":["../src/components/PageHeader/PageHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, useCssModule, useSlots } from 'vue';\n\n export interface PageHeaderProps {\n /**\n * The title of the page.\n */\n title?: string;\n /**\n * The description of the page.\n */\n description?: string;\n }\n\n defineOptions({\n name: 'll-page-header',\n });\n\n const props = withDefaults(defineProps<PageHeaderProps>(), {\n title: undefined,\n description: undefined,\n });\n\n const classes = useCssModule();\n const slots = useSlots();\n\n const hasActions = computed<boolean>(() => !!(slots['primary-action'] || slots['secondary-action']));\n</script>\n\n<template>\n <header\n class=\"stash-page-header\"\n :class=\"[classes.root, { [classes.grid]: hasActions }]\"\n data-test=\"stash-page-header\"\n >\n <div class=\"tw-col-span-full tw-flex tw-items-center lg:tw-col-span-1\">\n <div v-if=\"slots.media\" class=\"stash-page-header__media tw-mr-3 tw-self-center\" :class=\"classes.mediaTest\">\n <!-- @slot Receives a custom media -->\n <slot name=\"media\"></slot>\n </div>\n\n <div>\n <!-- @slot Receives a custom title -->\n <slot name=\"title\">\n <h1 v-if=\"props.title\" class=\"stash-page-header__title tw-my-0\">{{ props.title }}</h1>\n </slot>\n\n <!-- @slot Receives a custom description -->\n <slot name=\"description\">\n <p v-if=\"props.description\" class=\"stash-page-header__description tw-mb-0 tw-mt-1.5\">\n {{ props.description }}\n </p>\n </slot>\n </div>\n </div>\n\n <div\n v-if=\"hasActions\"\n class=\"stash-page-header__actions tw-col-span-full tw-flex lg:tw-col-span-1\"\n :class=\"classes.actions\"\n >\n <!-- @slot Receives a custom secondary action -->\n <slot name=\"secondary-action\"> </slot>\n <!-- @slot Receives a custom primary action -->\n <slot name=\"primary-action\"> </slot>\n </div>\n </header>\n</template>\n\n<style module>\n .root {\n border-bottom: 0;\n display: grid;\n gap: var(--grid-gutter);\n margin: 0 auto;\n max-width: theme('width.container');\n padding: theme('spacing.6') var(--grid-gutter) theme('spacing.12');\n width: 100%;\n }\n\n @media screen('lg') {\n .root.grid {\n grid-template-columns: repeat(2, 1fr);\n }\n }\n\n .actions {\n align-self: flex-end;\n flex-direction: column-reverse;\n row-gap: var(--grid-gutter);\n }\n\n @media screen('md') {\n .actions {\n column-gap: var(--grid-gutter);\n flex-direction: row;\n row-gap: 0;\n }\n }\n\n @media screen('lg') {\n .actions {\n align-items: flex-end;\n flex-direction: row;\n justify-content: flex-end;\n }\n }\n\n /* max size for media/marketing illustration icons we would be passing to the slot */\n .media-test {\n max-width: 58px;\n max-height: 58px;\n }\n</style>\n"],"names":["props","__props","classes","useCssModule","slots","useSlots","hasActions","computed"],"mappings":";;;;;;;;;;;;;;;;AAkBE,UAAMA,IAAQC,GAKRC,IAAUC,EAAa,GACvBC,IAAQC,EAAS,GAEjBC,IAAaC,EAAkB,MAAM,CAAC,EAAEH,EAAM,gBAAgB,KAAKA,EAAM,kBAAkB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,27 +1,56 @@
1
1
  import { ComponentOptionsMixin } from 'vue';
2
2
  import { ComponentProvideOptions } from 'vue';
3
3
  import { DefineComponent } from 'vue';
4
+ import { ExtractPropTypes } from 'vue';
5
+ import { PropType } from 'vue';
4
6
  import { PublicProps } from 'vue';
5
7
 
8
+ declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
9
+
10
+ declare type __VLS_Prettify<T> = {
11
+ [K in keyof T]: T[K];
12
+ } & {};
13
+
14
+ declare type __VLS_TypePropsToRuntimeProps<T> = {
15
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
16
+ type: PropType<__VLS_NonUndefinedable<T[K]>>;
17
+ } : {
18
+ type: PropType<T[K]>;
19
+ required: true;
20
+ };
21
+ };
22
+
23
+ declare type __VLS_WithDefaults<P, D> = {
24
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
25
+ default: D[K];
26
+ }> : P[K];
27
+ };
28
+
6
29
  declare type __VLS_WithTemplateSlots<T, S> = T & {
7
30
  new (): {
8
31
  $slots: S;
9
32
  };
10
33
  };
11
34
 
12
- declare const _default: __VLS_WithTemplateSlots<DefineComponent<PageHeaderProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<PageHeaderProps> & Readonly<{}>, {
13
- description: string;
35
+ declare const _default: __VLS_WithTemplateSlots<DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<PageHeaderProps>, {
36
+ title: undefined;
37
+ description: undefined;
38
+ }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<PageHeaderProps>, {
39
+ title: undefined;
40
+ description: undefined;
41
+ }>>> & Readonly<{}>, {
14
42
  title: string;
15
- }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLElement>, {
43
+ description: string;
44
+ }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
16
45
  media?(_: {}): any;
17
46
  title?(_: {}): any;
18
47
  description?(_: {}): any;
19
- 'secondary-action'?(_: {}): any;
20
- 'primary-action'?(_: {}): any;
48
+ "secondary-action"?(_: {}): any;
49
+ "primary-action"?(_: {}): any;
21
50
  }>;
22
51
  export default _default;
23
52
 
24
- declare interface PageHeaderProps {
53
+ export declare interface PageHeaderProps {
25
54
  /**
26
55
  * The title of the page.
27
56
  */
@@ -1,13 +1,13 @@
1
- import { defineComponent as b, ref as g, watch as x, onMounted as I, createElementBlock as f, openBlock as s, createVNode as _, withCtx as p, Fragment as T, renderList as V, createBlock as k, unref as N, createTextVNode as B, toDisplayString as C } from "vue";
2
- import R from "@leaflink/snitch";
3
- import d from "lodash-es/kebabCase";
4
- import { useRoute as U, useRouter as y } from "vue-router";
5
- import M from "./Tab.js";
6
- import P from "./Tabs.js";
7
- const D = {
1
+ import { defineComponent as g, ref as x, watch as I, onMounted as _, createElementBlock as i, openBlock as u, createVNode as T, withCtx as p, Fragment as V, renderList as k, createBlock as N, unref as B, createTextVNode as C, toDisplayString as U } from "vue";
2
+ import y from "@leaflink/snitch";
3
+ import s from "lodash-es/kebabCase";
4
+ import { useRoute as P, useRouter as D } from "vue-router";
5
+ import E from "./Tab.js";
6
+ import F from "./Tabs.js";
7
+ const L = {
8
8
  class: "stash-page-navigation container",
9
9
  "data-test": "stash-page-navigation"
10
- }, q = /* @__PURE__ */ b({
10
+ }, z = /* @__PURE__ */ g({
11
11
  name: "ll-page-navigation",
12
12
  __name: "PageNavigation",
13
13
  props: {
@@ -16,59 +16,59 @@ const D = {
16
16
  items: {}
17
17
  },
18
18
  emits: ["update:modelValue", "change"],
19
- setup(v, { emit: m }) {
20
- const a = v, u = m;
21
- a.activeIndex && R.info("The `activeIndex` prop is deprecated. Use `v-model` instead.");
22
- const o = U(), c = y(), l = g("");
23
- function r(t) {
24
- t !== l.value && (l.value = t, u("update:modelValue", t));
19
+ setup(v, { emit: h }) {
20
+ const n = v, c = h;
21
+ n.activeIndex && y.info("The `activeIndex` prop is deprecated. Use `v-model` instead.");
22
+ const r = P(), f = D(), d = x("");
23
+ function o(t) {
24
+ t !== d.value && (d.value = t, c("update:modelValue", t));
25
25
  }
26
- return x(
27
- () => a.modelValue,
28
- (t, n) => {
29
- if (n === t) return;
30
- const e = a.items.findIndex((i) => d(i.label) === t);
31
- u("change", e), r(t);
26
+ return I(
27
+ () => n.modelValue,
28
+ (t, e) => {
29
+ if (e === t) return;
30
+ const a = n.items.findIndex((l) => s(l.label) === t);
31
+ c("change", a), o(t);
32
32
  }
33
- ), I(() => {
34
- if (!a.items.length) return;
35
- if (a.activeIndex !== void 0) {
36
- const n = a.items[a.activeIndex];
37
- r(d(n.label));
33
+ ), _(() => {
34
+ if (!n.items.length) return;
35
+ if (n.activeIndex !== void 0) {
36
+ const e = n.items[n.activeIndex];
37
+ o(s(e.label));
38
38
  return;
39
39
  }
40
- if (a.modelValue !== l.value) {
41
- r(a.modelValue);
40
+ if (n.modelValue !== d.value) {
41
+ o(n.modelValue);
42
42
  return;
43
43
  }
44
- if (!c) return;
45
- const t = a.items.find((n) => {
46
- if (n?.disabled || !n?.to && !n?.href) return;
47
- const { path: e } = c.resolve(n?.to || n?.href);
48
- if (e === o.path)
44
+ if (!f) return;
45
+ const t = n.items.find((e) => {
46
+ if (e != null && e.disabled || !(e != null && e.to) && !(e != null && e.href)) return;
47
+ const { path: a } = f.resolve((e == null ? void 0 : e.to) || (e == null ? void 0 : e.href));
48
+ if (a === r.path)
49
49
  return !0;
50
- if (!o.path.includes(e)) return;
51
- const i = (o.path.length - o.path.lastIndexOf("/")) * -1, h = o.path.slice(0, i);
52
- return e === h;
50
+ if (!r.path.includes(a)) return;
51
+ const l = (r.path.length - r.path.lastIndexOf("/")) * -1, b = r.path.slice(0, l);
52
+ return a === b;
53
53
  });
54
- t && r(t?.value || d(t.label));
55
- }), (t, n) => (s(), f("nav", D, [
56
- _(P, {
57
- "active-tab": l.value,
58
- "onUpdate:activeTab": r
54
+ t && o((t == null ? void 0 : t.value) || s(t.label));
55
+ }), (t, e) => (u(), i("nav", L, [
56
+ T(F, {
57
+ "active-tab": d.value,
58
+ "onUpdate:activeTab": o
59
59
  }, {
60
60
  default: p(() => [
61
- (s(!0), f(T, null, V(a.items, (e, i) => (s(), k(M, {
62
- key: e.label,
63
- value: e?.value || N(d)(e.label),
64
- to: e.to,
65
- href: e.href,
66
- badge: e.badge,
67
- disabled: e.disabled,
68
- "data-id": i
61
+ (u(!0), i(V, null, k(n.items, (a, l) => (u(), N(E, {
62
+ key: a.label,
63
+ value: (a == null ? void 0 : a.value) || B(s)(a.label),
64
+ to: a.to,
65
+ href: a.href,
66
+ badge: a.badge,
67
+ disabled: a.disabled,
68
+ "data-id": l
69
69
  }, {
70
70
  default: p(() => [
71
- B(C(e.label), 1)
71
+ C(U(a.label), 1)
72
72
  ]),
73
73
  _: 2
74
74
  }, 1032, ["value", "to", "href", "badge", "disabled", "data-id"]))), 128))
@@ -79,6 +79,6 @@ const D = {
79
79
  }
80
80
  });
81
81
  export {
82
- q as default
82
+ z as default
83
83
  };
84
84
  //# sourceMappingURL=PageNavigation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageNavigation.js","sources":["../src/components/PageNavigation/PageNavigation.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import logger from '@leaflink/snitch';\n import kebabCase from 'lodash-es/kebabCase';\n import { onMounted, ref, watch } from 'vue';\n import { RouteLocationRaw, useRoute, useRouter } from 'vue-router';\n\n import Tab, { type TabProps } from '../Tab/Tab.vue';\n import Tabs from '../Tabs/Tabs.vue';\n\n defineOptions({\n name: 'll-page-navigation',\n });\n\n export interface NavItem extends Omit<TabProps, 'value'> {\n /**\n * The tab's label\n */\n label: string;\n\n /**\n * The tab's label\n */\n value?: string;\n }\n\n export interface PageNavigationProps {\n /**\n * Index of active tab (zero-based)\n * @deprecated Use v-model instead.\n */\n activeIndex?: number | string;\n\n /**\n * The currently active tab value\n */\n modelValue?: string;\n\n /**\n * Array of tabs. A `tab` is an object containing a `label` and either an `href` | `to`\n */\n items: NavItem[];\n }\n\n const props = withDefaults(defineProps<PageNavigationProps>(), {\n activeIndex: undefined,\n modelValue: '',\n });\n\n const emit = defineEmits<{\n /**\n * Emits the current active nav value\n */\n (e: 'update:modelValue', activeTab: string): void;\n\n /**\n * Emits the current active nav index\n * @deprecated - Use v-model instead.\n */\n (e: 'change', activeNavIndex: number): void;\n }>();\n\n if (props.activeIndex) {\n logger.info('The `activeIndex` prop is deprecated. Use `v-model` instead.');\n }\n\n const route = useRoute();\n const router = useRouter();\n\n // this ref is needed to keep track of the active tab even if v-model is not passed\n const activeTab = ref('');\n\n function onUpdateActiveTab(newActiveTab: string) {\n if (newActiveTab === activeTab.value) return;\n\n activeTab.value = newActiveTab;\n emit('update:modelValue', newActiveTab);\n }\n\n watch(\n () => props.modelValue,\n (newValue, oldValue) => {\n if (oldValue === newValue) return;\n\n // TODO: Remove this once activeIndex is removed\n const activeNavItemIndex = props.items.findIndex((item) => kebabCase(item.label) === newValue);\n emit('change', activeNavItemIndex);\n\n // Forcing updating activeTab when the component is in a keep alive state\n onUpdateActiveTab(newValue);\n },\n );\n\n onMounted(() => {\n if (!props.items.length) return;\n\n // TODO: Remove this once activeIndex is removed\n if (props.activeIndex !== undefined) {\n const activeTabItem = props.items[props.activeIndex];\n\n onUpdateActiveTab(kebabCase(activeTabItem.label));\n\n return;\n }\n\n if (props.modelValue !== activeTab.value) {\n onUpdateActiveTab(props.modelValue);\n return;\n }\n\n if (!router) return;\n\n const itemMatchingRoute = props.items.find((item) => {\n if (item?.disabled || (!item?.to && !item?.href)) return;\n\n const { path } = router.resolve((item?.to as RouteLocationRaw) || (item?.href as string));\n\n if (path === route.path) {\n return true;\n }\n\n if (!route.path.includes(path)) return;\n\n const sliceIndex = (route.path.length - route.path.lastIndexOf('/')) * -1;\n const parentPath = route.path.slice(0, sliceIndex);\n\n return path === parentPath;\n });\n\n if (!itemMatchingRoute) return;\n\n onUpdateActiveTab(itemMatchingRoute?.value || kebabCase(itemMatchingRoute.label));\n });\n</script>\n\n<template>\n <nav class=\"stash-page-navigation container\" data-test=\"stash-page-navigation\">\n <Tabs :active-tab=\"activeTab\" @update:active-tab=\"onUpdateActiveTab\">\n <Tab\n v-for=\"(item, index) in props.items\"\n :key=\"item.label\"\n :value=\"item?.value || kebabCase(item.label)\"\n :to=\"item.to\"\n :href=\"item.href\"\n :badge=\"item.badge\"\n :disabled=\"item.disabled\"\n :data-id=\"index\"\n >\n {{ item.label }}\n </Tab>\n </Tabs>\n </nav>\n</template>\n"],"names":["props","__props","emit","__emit","logger","route","useRoute","router","useRouter","activeTab","ref","onUpdateActiveTab","newActiveTab","watch","newValue","oldValue","activeNavItemIndex","item","kebabCase","onMounted","activeTabItem","itemMatchingRoute","path","sliceIndex","parentPath","_openBlock","_createElementBlock","_hoisted_1","_createVNode","Tabs","_Fragment","index","_createBlock","Tab","_unref","_createTextVNode","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;AA2CE,UAAMA,IAAQC,GAKRC,IAAOC;AAab,IAAIH,EAAM,eACRI,EAAO,KAAK,8DAA8D;AAG5E,UAAMC,IAAQC,EAAA,GACRC,IAASC,EAAA,GAGTC,IAAYC,EAAI,EAAE;AAExB,aAASC,EAAkBC,GAAsB;AAC/C,MAAIA,MAAiBH,EAAU,UAE/BA,EAAU,QAAQG,GAClBV,EAAK,qBAAqBU,CAAY;AAAA,IACxC;AAEA,WAAAC;AAAA,MACE,MAAMb,EAAM;AAAA,MACZ,CAACc,GAAUC,MAAa;AACtB,YAAIA,MAAaD,EAAU;AAG3B,cAAME,IAAqBhB,EAAM,MAAM,UAAU,CAACiB,MAASC,EAAUD,EAAK,KAAK,MAAMH,CAAQ;AAC7F,QAAAZ,EAAK,UAAUc,CAAkB,GAGjCL,EAAkBG,CAAQ;AAAA,MAC5B;AAAA,IAAA,GAGFK,EAAU,MAAM;AACd,UAAI,CAACnB,EAAM,MAAM,OAAQ;AAGzB,UAAIA,EAAM,gBAAgB,QAAW;AACnC,cAAMoB,IAAgBpB,EAAM,MAAMA,EAAM,WAAW;AAEnD,QAAAW,EAAkBO,EAAUE,EAAc,KAAK,CAAC;AAEhD;AAAA,MACF;AAEA,UAAIpB,EAAM,eAAeS,EAAU,OAAO;AACxC,QAAAE,EAAkBX,EAAM,UAAU;AAClC;AAAA,MACF;AAEA,UAAI,CAACO,EAAQ;AAEb,YAAMc,IAAoBrB,EAAM,MAAM,KAAK,CAACiB,MAAS;AACnD,YAAIA,GAAM,YAAa,CAACA,GAAM,MAAM,CAACA,GAAM,KAAO;AAElD,cAAM,EAAE,MAAAK,MAASf,EAAO,QAASU,GAAM,MAA4BA,GAAM,IAAe;AAExF,YAAIK,MAASjB,EAAM;AACjB,iBAAO;AAGT,YAAI,CAACA,EAAM,KAAK,SAASiB,CAAI,EAAG;AAEhC,cAAMC,KAAclB,EAAM,KAAK,SAASA,EAAM,KAAK,YAAY,GAAG,KAAK,IACjEmB,IAAanB,EAAM,KAAK,MAAM,GAAGkB,CAAU;AAEjD,eAAOD,MAASE;AAAA,MAClB,CAAC;AAED,MAAKH,KAELV,EAAkBU,GAAmB,SAASH,EAAUG,EAAkB,KAAK,CAAC;AAAA,IAClF,CAAC,cAIDI,EAAA,GAAAC,EAeM,OAfNC,GAeM;AAAA,MAdJC,EAaOC,GAAA;AAAA,QAbA,cAAYpB,EAAA;AAAA,QAAY,sBAAmBE;AAAA,MAAA;mBAE9C,MAAoC;AAAA,WADtCc,EAAA,EAAA,GAAAC,EAWMI,WAVoB9B,EAAM,OAAK,CAA3BiB,GAAMc,YADhBC,EAWMC,GAAA;AAAA,YATH,KAAKhB,EAAK;AAAA,YACV,OAAOA,GAAM,SAASiB,EAAAhB,CAAA,EAAUD,EAAK,KAAK;AAAA,YAC1C,IAAIA,EAAK;AAAA,YACT,MAAMA,EAAK;AAAA,YACX,OAAOA,EAAK;AAAA,YACZ,UAAUA,EAAK;AAAA,YACf,WAASc;AAAA,UAAA;uBAEV,MAAgB;AAAA,cAAbI,EAAAC,EAAAnB,EAAK,KAAK,GAAA,CAAA;AAAA,YAAA;;;;;;;;;"}
1
+ {"version":3,"file":"PageNavigation.js","sources":["../src/components/PageNavigation/PageNavigation.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import logger from '@leaflink/snitch';\n import kebabCase from 'lodash-es/kebabCase';\n import { onMounted, ref, watch } from 'vue';\n import { RouteLocationRaw, useRoute, useRouter } from 'vue-router';\n\n import Tab, { type TabProps } from '../Tab/Tab.vue';\n import Tabs from '../Tabs/Tabs.vue';\n\n defineOptions({\n name: 'll-page-navigation',\n });\n\n export interface NavItem extends Omit<TabProps, 'value'> {\n /**\n * The tab's label\n */\n label: string;\n\n /**\n * The tab's label\n */\n value?: string;\n }\n\n export interface PageNavigationProps {\n /**\n * Index of active tab (zero-based)\n * @deprecated Use v-model instead.\n */\n activeIndex?: number | string;\n\n /**\n * The currently active tab value\n */\n modelValue?: string;\n\n /**\n * Array of tabs. A `tab` is an object containing a `label` and either an `href` | `to`\n */\n items: NavItem[];\n }\n\n const props = withDefaults(defineProps<PageNavigationProps>(), {\n activeIndex: undefined,\n modelValue: '',\n });\n\n const emit = defineEmits<{\n /**\n * Emits the current active nav value\n */\n (e: 'update:modelValue', activeTab: string): void;\n\n /**\n * Emits the current active nav index\n * @deprecated - Use v-model instead.\n */\n (e: 'change', activeNavIndex: number): void;\n }>();\n\n if (props.activeIndex) {\n logger.info('The `activeIndex` prop is deprecated. Use `v-model` instead.');\n }\n\n const route = useRoute();\n const router = useRouter();\n\n // this ref is needed to keep track of the active tab even if v-model is not passed\n const activeTab = ref('');\n\n function onUpdateActiveTab(newActiveTab: string) {\n if (newActiveTab === activeTab.value) return;\n\n activeTab.value = newActiveTab;\n emit('update:modelValue', newActiveTab);\n }\n\n watch(\n () => props.modelValue,\n (newValue, oldValue) => {\n if (oldValue === newValue) return;\n\n // TODO: Remove this once activeIndex is removed\n const activeNavItemIndex = props.items.findIndex((item) => kebabCase(item.label) === newValue);\n emit('change', activeNavItemIndex);\n\n // Forcing updating activeTab when the component is in a keep alive state\n onUpdateActiveTab(newValue);\n },\n );\n\n onMounted(() => {\n if (!props.items.length) return;\n\n // TODO: Remove this once activeIndex is removed\n if (props.activeIndex !== undefined) {\n const activeTabItem = props.items[props.activeIndex];\n\n onUpdateActiveTab(kebabCase(activeTabItem.label));\n\n return;\n }\n\n if (props.modelValue !== activeTab.value) {\n onUpdateActiveTab(props.modelValue);\n return;\n }\n\n if (!router) return;\n\n const itemMatchingRoute = props.items.find((item) => {\n if (item?.disabled || (!item?.to && !item?.href)) return;\n\n const { path } = router.resolve((item?.to as RouteLocationRaw) || (item?.href as string));\n\n if (path === route.path) {\n return true;\n }\n\n if (!route.path.includes(path)) return;\n\n const sliceIndex = (route.path.length - route.path.lastIndexOf('/')) * -1;\n const parentPath = route.path.slice(0, sliceIndex);\n\n return path === parentPath;\n });\n\n if (!itemMatchingRoute) return;\n\n onUpdateActiveTab(itemMatchingRoute?.value || kebabCase(itemMatchingRoute.label));\n });\n</script>\n\n<template>\n <nav class=\"stash-page-navigation container\" data-test=\"stash-page-navigation\">\n <Tabs :active-tab=\"activeTab\" @update:active-tab=\"onUpdateActiveTab\">\n <Tab\n v-for=\"(item, index) in props.items\"\n :key=\"item.label\"\n :value=\"item?.value || kebabCase(item.label)\"\n :to=\"item.to\"\n :href=\"item.href\"\n :badge=\"item.badge\"\n :disabled=\"item.disabled\"\n :data-id=\"index\"\n >\n {{ item.label }}\n </Tab>\n </Tabs>\n </nav>\n</template>\n"],"names":["props","__props","emit","__emit","logger","route","useRoute","router","useRouter","activeTab","ref","onUpdateActiveTab","newActiveTab","watch","newValue","oldValue","activeNavItemIndex","item","kebabCase","onMounted","activeTabItem","itemMatchingRoute","path","sliceIndex","parentPath"],"mappings":";;;;;;;;;;;;;;;;;;;AA2CE,UAAMA,IAAQC,GAKRC,IAAOC;AAab,IAAIH,EAAM,eACRI,EAAO,KAAK,8DAA8D;AAG5E,UAAMC,IAAQC,EAAS,GACjBC,IAASC,EAAU,GAGnBC,IAAYC,EAAI,EAAE;AAExB,aAASC,EAAkBC,GAAsB;AAC3C,MAAAA,MAAiBH,EAAU,UAE/BA,EAAU,QAAQG,GAClBV,EAAK,qBAAqBU,CAAY;AAAA,IAAA;AAGxC,WAAAC;AAAA,MACE,MAAMb,EAAM;AAAA,MACZ,CAACc,GAAUC,MAAa;AACtB,YAAIA,MAAaD,EAAU;AAGrB,cAAAE,IAAqBhB,EAAM,MAAM,UAAU,CAACiB,MAASC,EAAUD,EAAK,KAAK,MAAMH,CAAQ;AAC7F,QAAAZ,EAAK,UAAUc,CAAkB,GAGjCL,EAAkBG,CAAQ;AAAA,MAAA;AAAA,IAE9B,GAEAK,EAAU,MAAM;AACV,UAAA,CAACnB,EAAM,MAAM,OAAQ;AAGrB,UAAAA,EAAM,gBAAgB,QAAW;AACnC,cAAMoB,IAAgBpB,EAAM,MAAMA,EAAM,WAAW;AAEjC,QAAAW,EAAAO,EAAUE,EAAc,KAAK,CAAC;AAEhD;AAAA,MAAA;AAGE,UAAApB,EAAM,eAAeS,EAAU,OAAO;AACxC,QAAAE,EAAkBX,EAAM,UAAU;AAClC;AAAA,MAAA;AAGF,UAAI,CAACO,EAAQ;AAEb,YAAMc,IAAoBrB,EAAM,MAAM,KAAK,CAACiB,MAAS;AACnD,YAAIA,KAAA,QAAAA,EAAM,YAAa,EAACA,KAAA,QAAAA,EAAM,OAAM,EAACA,KAAA,QAAAA,EAAM,MAAO;AAE5C,cAAA,EAAE,MAAAK,EAAS,IAAAf,EAAO,SAASU,KAAA,gBAAAA,EAAM,QAA4BA,KAAA,gBAAAA,EAAM,KAAe;AAEpF,YAAAK,MAASjB,EAAM;AACV,iBAAA;AAGT,YAAI,CAACA,EAAM,KAAK,SAASiB,CAAI,EAAG;AAE1B,cAAAC,KAAclB,EAAM,KAAK,SAASA,EAAM,KAAK,YAAY,GAAG,KAAK,IACjEmB,IAAanB,EAAM,KAAK,MAAM,GAAGkB,CAAU;AAEjD,eAAOD,MAASE;AAAA,MAAA,CACjB;AAED,MAAKH,KAELV,GAAkBU,KAAA,gBAAAA,EAAmB,UAASH,EAAUG,EAAkB,KAAK,CAAC;AAAA,IAAA,CACjF;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,28 +1,57 @@
1
1
  import { ComponentOptionsMixin } from 'vue';
2
2
  import { ComponentProvideOptions } from 'vue';
3
3
  import { DefineComponent } from 'vue';
4
+ import { ExtractPropTypes } from 'vue';
5
+ import { PropType } from 'vue';
4
6
  import { PublicProps } from 'vue';
5
7
  import { RouteLocationRaw } from 'vue-router';
6
8
  import { RouterLinkProps } from 'vue-router';
7
9
 
10
+ declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
11
+
12
+ declare type __VLS_Prettify<T> = {
13
+ [K in keyof T]: T[K];
14
+ } & {};
15
+
16
+ declare type __VLS_TypePropsToRuntimeProps<T> = {
17
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
18
+ type: PropType<__VLS_NonUndefinedable<T[K]>>;
19
+ } : {
20
+ type: PropType<T[K]>;
21
+ required: true;
22
+ };
23
+ };
24
+
25
+ declare type __VLS_WithDefaults<P, D> = {
26
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
27
+ default: D[K];
28
+ }> : P[K];
29
+ };
30
+
8
31
  /**
9
32
  * Allowed attributes for the `<a>` element when the `href` prop is used.
10
33
  */
11
34
  declare type AnchorAttrs = HTMLAnchorElement['download'] | HTMLAnchorElement['hreflang'] | HTMLAnchorElement['ping'] | HTMLAnchorElement['referrerPolicy'] | HTMLAnchorElement['rel'] | HTMLAnchorElement['target'] | HTMLAnchorElement['type'];
12
35
 
13
- declare const _default: DefineComponent<PageNavigationProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
14
- change: (activeNavIndex: number) => any;
15
- "update:modelValue": (activeTab: string) => any;
16
- }, string, PublicProps, Readonly<PageNavigationProps> & Readonly<{
36
+ declare const _default: DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<PageNavigationProps>, {
37
+ activeIndex: undefined;
38
+ modelValue: string;
39
+ }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
40
+ "update:modelValue": (activeTab: string) => void;
41
+ change: (activeNavIndex: number) => void;
42
+ }, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<PageNavigationProps>, {
43
+ activeIndex: undefined;
44
+ modelValue: string;
45
+ }>>> & Readonly<{
17
46
  onChange?: ((activeNavIndex: number) => any) | undefined;
18
47
  "onUpdate:modelValue"?: ((activeTab: string) => any) | undefined;
19
48
  }>, {
20
49
  modelValue: string;
21
50
  activeIndex: string | number;
22
- }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLElement>;
51
+ }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
23
52
  export default _default;
24
53
 
25
- declare interface NavItem extends Omit<TabProps, 'value'> {
54
+ export declare interface NavItem extends Omit<TabProps, 'value'> {
26
55
  /**
27
56
  * The tab's label
28
57
  */
@@ -33,7 +62,7 @@ declare interface NavItem extends Omit<TabProps, 'value'> {
33
62
  value?: string;
34
63
  }
35
64
 
36
- declare interface PageNavigationProps {
65
+ export declare interface PageNavigationProps {
37
66
  /**
38
67
  * Index of active tab (zero-based)
39
68
  * @deprecated Use v-model instead.