@leaflink/stash 51.11.0 → 51.12.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 (343) hide show
  1. package/README.md +41 -12
  2. package/dist/Accordion.js.map +1 -1
  3. package/dist/Accordion.vue.d.ts +37 -6
  4. package/dist/ActionsDropdown.js +2 -2
  5. package/dist/ActionsDropdown.js.map +1 -1
  6. package/dist/ActionsDropdown.vue.d.ts +74 -0
  7. package/dist/AddressSelect.js +60 -56
  8. package/dist/AddressSelect.js.map +1 -1
  9. package/dist/AddressSelect.vue.d.ts +65 -8
  10. package/dist/Alert.js.map +1 -1
  11. package/dist/Alert.vue.d.ts +41 -4
  12. package/dist/AppNavigationItem.js.map +1 -1
  13. package/dist/AppNavigationItem.vue.d.ts +31 -4
  14. package/dist/AppSidebar.js.map +1 -1
  15. package/dist/AppSidebar.vue.d.ts +35 -8
  16. package/dist/AppTopbar.js +1 -1
  17. package/dist/AppTopbar.js.map +1 -1
  18. package/dist/AppTopbar.vue.d.ts +33 -4
  19. package/dist/Avatar.js.map +1 -1
  20. package/dist/Avatar.vue.d.ts +44 -5
  21. package/dist/Backdrop.js.map +1 -1
  22. package/dist/Backdrop.vue.d.ts +1 -1
  23. package/dist/Badge.js.map +1 -1
  24. package/dist/Badge.vue.d.ts +55 -6
  25. package/dist/Box.vue.d.ts +36 -3
  26. package/dist/Box.vue_vue_type_script_setup_true_lang-rFnvwLVY.js.map +1 -1
  27. package/dist/Button.js.map +1 -1
  28. package/dist/Button.vue.d.ts +50 -5
  29. package/dist/ButtonGroup.js +37 -33
  30. package/dist/ButtonGroup.js.map +1 -1
  31. package/dist/ButtonGroup.vue.d.ts +39 -6
  32. package/dist/Card.js.map +1 -1
  33. package/dist/Card.vue.d.ts +32 -5
  34. package/dist/CardContent.js.map +1 -1
  35. package/dist/CardContent.vue.d.ts +1 -1
  36. package/dist/CardFooter.js.map +1 -1
  37. package/dist/CardFooter.vue.d.ts +1 -1
  38. package/dist/CardHeader.js.map +1 -1
  39. package/dist/CardHeader.vue.d.ts +15 -2
  40. package/dist/CardMedia.js.map +1 -1
  41. package/dist/CardMedia.vue.d.ts +15 -2
  42. package/dist/Carousel.js +72 -66
  43. package/dist/Carousel.js.map +1 -1
  44. package/dist/Carousel.vue.d.ts +10 -10
  45. package/dist/Checkbox.js.map +1 -1
  46. package/dist/Checkbox.vue.d.ts +53 -8
  47. package/dist/ChevronToggle.vue.d.ts +34 -7
  48. package/dist/ChevronToggle.vue_vue_type_script_setup_true_lang-Ce_qOXfR.js.map +1 -1
  49. package/dist/Chip.js.map +1 -1
  50. package/dist/Chip.vue.d.ts +52 -10
  51. package/dist/ConfirmationCodeInput.js +44 -40
  52. package/dist/ConfirmationCodeInput.js.map +1 -1
  53. package/dist/ConfirmationCodeInput.vue.d.ts +43 -8
  54. package/dist/ContextSwitcher.js.map +1 -1
  55. package/dist/ContextSwitcher.vue.d.ts +41 -6
  56. package/dist/Copy.js.map +1 -1
  57. package/dist/Copy.vue.d.ts +34 -3
  58. package/dist/CurrencyInput.js +21 -20
  59. package/dist/CurrencyInput.js.map +1 -1
  60. package/dist/CurrencyInput.vue.d.ts +46 -125
  61. package/dist/DataView.js +96 -94
  62. package/dist/DataView.js.map +1 -1
  63. package/dist/DataView.vue.d.ts +57 -12
  64. package/dist/DataViewFilters.js +139 -127
  65. package/dist/DataViewFilters.js.map +1 -1
  66. package/dist/DataViewFilters.vue.d.ts +54 -9
  67. package/dist/DataViewSortButton.js +2 -2
  68. package/dist/DataViewSortButton.js.map +1 -1
  69. package/dist/DataViewSortButton.vue.d.ts +30 -3
  70. package/dist/DataViewToolbar.js +81 -148
  71. package/dist/DataViewToolbar.js.map +1 -1
  72. package/dist/DataViewToolbar.vue.d.ts +40 -106
  73. package/dist/DatePicker.js +4640 -4528
  74. package/dist/DatePicker.js.map +1 -1
  75. package/dist/DatePicker.vue.d.ts +79 -30
  76. package/dist/DescriptionList.js.map +1 -1
  77. package/dist/DescriptionList.vue.d.ts +32 -3
  78. package/dist/DescriptionListDetail.js.map +1 -1
  79. package/dist/DescriptionListDetail.vue.d.ts +1 -1
  80. package/dist/DescriptionListGroup.js.map +1 -1
  81. package/dist/DescriptionListGroup.vue.d.ts +1 -1
  82. package/dist/DescriptionListTerm.js.map +1 -1
  83. package/dist/DescriptionListTerm.vue.d.ts +1 -1
  84. package/dist/Dialog.js.map +1 -1
  85. package/dist/Dialog.vue.d.ts +53 -10
  86. package/dist/Divider.js.map +1 -1
  87. package/dist/Dropdown.js +95 -89
  88. package/dist/Dropdown.js.map +1 -1
  89. package/dist/Dropdown.vue.d.ts +48 -12
  90. package/dist/EmptyState.js +1 -1
  91. package/dist/EmptyState.js.map +1 -1
  92. package/dist/EmptyState.vue.d.ts +62 -5
  93. package/dist/Expand.vue.d.ts +40 -10
  94. package/dist/Expand.vue_vue_type_script_setup_true_lang-CiONJfAp.js.map +1 -1
  95. package/dist/Field.vue.d.ts +53 -4
  96. package/dist/Field.vue_vue_type_script_setup_true_lang-DI6z3AE9.js.map +1 -1
  97. package/dist/FileUpload.js +74 -72
  98. package/dist/FileUpload.js.map +1 -1
  99. package/dist/FileUpload.vue.d.ts +44 -10
  100. package/dist/FilterChip.js.map +1 -1
  101. package/dist/FilterChip.vue.d.ts +41 -6
  102. package/dist/FilterDrawerItem.js +21 -21
  103. package/dist/FilterDrawerItem.js.map +1 -1
  104. package/dist/FilterDrawerItem.vue.d.ts +23 -6
  105. package/dist/FilterDropdown.js +69 -63
  106. package/dist/FilterDropdown.js.map +1 -1
  107. package/dist/FilterDropdown.vue.d.ts +35 -122
  108. package/dist/FilterSelect.js.map +1 -1
  109. package/dist/FilterSelect.vue.d.ts +31 -4
  110. package/dist/Filters.js +164 -157
  111. package/dist/Filters.js.map +1 -1
  112. package/dist/Filters.vue.d.ts +2190 -0
  113. package/dist/HttpError.js +7 -7
  114. package/dist/HttpError.js.map +1 -1
  115. package/dist/HttpError.vue.d.ts +41 -4
  116. package/dist/Icon.js +17 -17
  117. package/dist/Icon.js.map +1 -1
  118. package/dist/Icon.vue.d.ts +36 -3
  119. package/dist/IconLabel.js.map +1 -1
  120. package/dist/IconLabel.vue.d.ts +40 -5
  121. package/dist/Illustration.js +2 -2
  122. package/dist/Illustration.vue.d.ts +42 -3
  123. package/dist/{Illustration.vue_vue_type_script_setup_true_lang-BVzzNsRt.js → Illustration.vue_vue_type_script_setup_true_lang-BrqEF8xe.js} +11 -11
  124. 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
  125. package/dist/Image.js +2 -2
  126. package/dist/Image.vue.d.ts +40 -5
  127. package/dist/{Image.vue_vue_type_script_setup_true_lang-Dg2Zk2r2.js → Image.vue_vue_type_script_setup_true_lang-D5u4av0_.js} +41 -37
  128. 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
  129. package/dist/InlineEdit.js.map +1 -1
  130. package/dist/InlineEdit.vue.d.ts +47 -126
  131. package/dist/Input.js.map +1 -1
  132. package/dist/Input.vue.d.ts +45 -12
  133. package/dist/InputOptions.js +69 -66
  134. package/dist/InputOptions.js.map +1 -1
  135. package/dist/InputOptions.vue.d.ts +55 -10
  136. package/dist/IntegrationIcon.js +7 -7
  137. package/dist/IntegrationIcon.js.map +1 -1
  138. package/dist/IntegrationIcon.vue.d.ts +36 -3
  139. package/dist/Label.vue.d.ts +42 -3
  140. package/dist/Label.vue_vue_type_script_setup_true_lang-CNquF3AP.js.map +1 -1
  141. package/dist/LicenseChip.js.map +1 -1
  142. package/dist/LicenseChip.vue.d.ts +30 -3
  143. package/dist/ListItem.js.map +1 -1
  144. package/dist/ListItem.vue.d.ts +294 -0
  145. package/dist/ListItemCell.js.map +1 -1
  146. package/dist/ListItemCell.vue.d.ts +21 -0
  147. package/dist/ListView.js +7 -4
  148. package/dist/ListView.js.map +1 -1
  149. package/dist/ListView.types.d.ts +29 -0
  150. package/dist/ListView.vue.d.ts +5496 -0
  151. package/dist/Loading.js +2 -2
  152. package/dist/Loading.js.map +1 -1
  153. package/dist/Loading.vue.d.ts +1 -1
  154. package/dist/Logo.js +1 -1
  155. package/dist/Logo.vue.d.ts +41 -6
  156. package/dist/{Logo.vue_vue_type_script_setup_true_lang-Y3iE9utm.js → Logo.vue_vue_type_script_setup_true_lang-Dz8c98sc.js} +17 -17
  157. package/dist/Logo.vue_vue_type_script_setup_true_lang-Dz8c98sc.js.map +1 -0
  158. package/dist/Menu.js.map +1 -1
  159. package/dist/Menu.vue.d.ts +1 -1
  160. package/dist/MenuItem.js.map +1 -1
  161. package/dist/MenuItem.vue.d.ts +1 -1
  162. package/dist/MenusPlugin-Bk6UW6o9.js +12 -0
  163. package/dist/{MenusPlugin-B4jpNe7x.js.map → MenusPlugin-Bk6UW6o9.js.map} +1 -1
  164. package/dist/Metric.js.map +1 -1
  165. package/dist/Metric.vue.d.ts +34 -3
  166. package/dist/Modal.js +64 -62
  167. package/dist/Modal.js.map +1 -1
  168. package/dist/Modal.vue.d.ts +60 -13
  169. package/dist/Modals.js +18 -17
  170. package/dist/Modals.js.map +1 -1
  171. package/dist/ModalsPlugin.js +11 -11
  172. package/dist/ModalsPlugin.js.map +1 -1
  173. package/dist/Module.js.map +1 -1
  174. package/dist/Module.vue.d.ts +29 -2
  175. package/dist/ModuleContent.js.map +1 -1
  176. package/dist/ModuleContent.vue.d.ts +3 -3
  177. package/dist/ModuleFooter.js.map +1 -1
  178. package/dist/ModuleFooter.vue.d.ts +1 -1
  179. package/dist/ModuleHeader.js.map +1 -1
  180. package/dist/ModuleHeader.vue.d.ts +39 -5
  181. package/dist/MoreActions.js +125 -123
  182. package/dist/MoreActions.js.map +1 -1
  183. package/dist/MoreActions.vue.d.ts +46 -123
  184. package/dist/ObfuscateText.js.map +1 -1
  185. package/dist/ObfuscateText.vue.d.ts +40 -3
  186. package/dist/PageContent.js.map +1 -1
  187. package/dist/PageContent.vue.d.ts +30 -3
  188. package/dist/PageHeader.js.map +1 -1
  189. package/dist/PageHeader.vue.d.ts +35 -6
  190. package/dist/PageNavigation.js +50 -50
  191. package/dist/PageNavigation.js.map +1 -1
  192. package/dist/PageNavigation.vue.d.ts +36 -7
  193. package/dist/Paginate.js.map +1 -1
  194. package/dist/Paginate.vue.d.ts +40 -5
  195. package/dist/PlaidLink.js.map +1 -1
  196. package/dist/PlaidLink.vue.d.ts +49 -12
  197. package/dist/QuickAction.js.map +1 -1
  198. package/dist/QuickAction.vue.d.ts +15 -2
  199. package/dist/Radio.js.map +1 -1
  200. package/dist/Radio.vue.d.ts +93 -0
  201. package/dist/RadioGroup.js +101 -94
  202. package/dist/RadioGroup.js.map +1 -1
  203. package/dist/RadioGroup.vue.d.ts +42 -116
  204. package/dist/RadioNew.js +99 -96
  205. package/dist/RadioNew.js.map +1 -1
  206. package/dist/RadioNew.vue.d.ts +48 -7
  207. package/dist/RangeInput.js.map +1 -1
  208. package/dist/RangeInput.vue.d.ts +1 -1
  209. package/dist/SearchBar.js +39 -38
  210. package/dist/SearchBar.js.map +1 -1
  211. package/dist/SearchBar.vue.d.ts +44 -127
  212. package/dist/SectionHeader.js.map +1 -1
  213. package/dist/SectionHeader.vue.d.ts +36 -5
  214. package/dist/Select.js +183 -171
  215. package/dist/Select.js.map +1 -1
  216. package/dist/Select.vue.d.ts +102 -23
  217. package/dist/SelectStatus.js +38 -38
  218. package/dist/SelectStatus.js.map +1 -1
  219. package/dist/SelectStatus.vue.d.ts +46 -226
  220. package/dist/Skeleton.js.map +1 -1
  221. package/dist/Skeleton.vue.d.ts +34 -3
  222. package/dist/Step.js +44 -44
  223. package/dist/Step.js.map +1 -1
  224. package/dist/Step.vue.d.ts +43 -4
  225. package/dist/Stepper.js.map +1 -1
  226. package/dist/Stepper.vue.d.ts +44 -9
  227. package/dist/Switch.js.map +1 -1
  228. package/dist/Switch.vue.d.ts +47 -8
  229. package/dist/Tab.js +9 -9
  230. package/dist/Tab.js.map +1 -1
  231. package/dist/Tab.vue.d.ts +15 -2
  232. package/dist/TabPanel.js.map +1 -1
  233. package/dist/TabPanel.vue.d.ts +30 -3
  234. package/dist/Table.js +59 -53
  235. package/dist/Table.js.map +1 -1
  236. package/dist/Table.vue.d.ts +50 -3
  237. package/dist/TableCell.js +1 -1
  238. package/dist/TableCell.js.map +1 -1
  239. package/dist/TableCell.vue.d.ts +32 -3
  240. package/dist/TableHeaderCell.js +1 -1
  241. package/dist/TableHeaderCell.js.map +1 -1
  242. package/dist/TableHeaderCell.vue.d.ts +30 -3
  243. package/dist/TableHeaderRow.js +1 -1
  244. package/dist/TableHeaderRow.js.map +1 -1
  245. package/dist/TableHeaderRow.vue.d.ts +34 -5
  246. package/dist/TableRow.js +44 -43
  247. package/dist/TableRow.js.map +1 -1
  248. package/dist/TableRow.vue.d.ts +48 -7
  249. package/dist/Tabs.js +2 -2
  250. package/dist/Tabs.vue.d.ts +31 -4
  251. package/dist/Tabs.vue_vue_type_script_setup_true_lang-CmnBP4i1.js +159 -0
  252. package/dist/Tabs.vue_vue_type_script_setup_true_lang-CmnBP4i1.js.map +1 -0
  253. package/dist/TextEditor.js +2422 -2416
  254. package/dist/TextEditor.js.map +1 -1
  255. package/dist/TextEditor.vue.d.ts +39 -8
  256. package/dist/Textarea.js +32 -29
  257. package/dist/Textarea.js.map +1 -1
  258. package/dist/Textarea.vue.d.ts +44 -9
  259. package/dist/Thumbnail.js +1 -1
  260. package/dist/Thumbnail.js.map +1 -1
  261. package/dist/Thumbnail.vue.d.ts +4 -4
  262. package/dist/ThumbnailEmpty.js.map +1 -1
  263. package/dist/ThumbnailEmpty.vue.d.ts +1 -1
  264. package/dist/ThumbnailGroup.js.map +1 -1
  265. package/dist/ThumbnailGroup.vue.d.ts +22 -26
  266. package/dist/Timeline.js.map +1 -1
  267. package/dist/Timeline.vue.d.ts +32 -3
  268. package/dist/TimelineItem.js.map +1 -1
  269. package/dist/TimelineItem.vue.d.ts +1 -1
  270. package/dist/Toast.js.map +1 -1
  271. package/dist/Toast.vue.d.ts +30 -3
  272. package/dist/Toasts.js.map +1 -1
  273. package/dist/ToastsPlugin.js +11 -11
  274. package/dist/ToastsPlugin.js.map +1 -1
  275. package/dist/Tooltip.js +30 -29
  276. package/dist/Tooltip.js.map +1 -1
  277. package/dist/Tooltip.vue.d.ts +43 -11
  278. package/dist/components.css +1 -1
  279. package/dist/directives/observe.js +8 -8
  280. package/dist/directives/observe.js.map +1 -1
  281. package/dist/directives/tooltip.js +3 -3
  282. package/dist/directives/tooltip.js.map +1 -1
  283. package/dist/directives/viewable.js +44 -39
  284. package/dist/directives/viewable.js.map +1 -1
  285. package/dist/floating-ui.vue-DLFiymOf.js +1093 -0
  286. package/dist/floating-ui.vue-DLFiymOf.js.map +1 -0
  287. package/dist/formatDateTime-Dz8bXV0R.js +1418 -0
  288. package/dist/formatDateTime-Dz8bXV0R.js.map +1 -0
  289. package/dist/index-D6bxWkZ1.js.map +1 -1
  290. package/dist/{index-XZqpB2_R.js → index-DA_ft08e.js} +9 -9
  291. package/dist/index-DA_ft08e.js.map +1 -0
  292. package/dist/index.js +106 -101
  293. package/dist/index.js.map +1 -1
  294. package/dist/isValid-DN-HkCoi.js.map +1 -1
  295. package/dist/obfuscateText.d.ts +1 -1
  296. package/dist/parseISO-wlfIB_QJ.js.map +1 -1
  297. package/dist/searchFuzzy-B3TsUO-V.js +409 -0
  298. package/dist/searchFuzzy-B3TsUO-V.js.map +1 -0
  299. package/dist/toTimeZone-Coq1oPTt.js.map +1 -1
  300. package/dist/useDialog.d.ts +2 -2
  301. package/dist/useDialog.js +25 -21
  302. package/dist/useDialog.js.map +1 -1
  303. package/dist/useGoogleMaps.js +110 -108
  304. package/dist/useGoogleMaps.js.map +1 -1
  305. package/dist/useMediaQuery.d.ts +6 -0
  306. package/dist/useMediaQuery.js +15 -11
  307. package/dist/useMediaQuery.js.map +1 -1
  308. package/dist/useModals.d.ts +1 -1
  309. package/dist/usePlaidLink.js +27 -20
  310. package/dist/usePlaidLink.js.map +1 -1
  311. package/dist/useSearch.js +13 -13
  312. package/dist/useSearch.js.map +1 -1
  313. package/dist/useSelection.js +56 -56
  314. package/dist/useSelection.js.map +1 -1
  315. package/dist/useSortable.js +63 -54
  316. package/dist/useSortable.js.map +1 -1
  317. package/dist/useStepper.d.ts +2 -2
  318. package/dist/useStepper.js +40 -36
  319. package/dist/useStepper.js.map +1 -1
  320. package/dist/useToasts.js +23 -23
  321. package/dist/useToasts.js.map +1 -1
  322. package/dist/useValidation.js +100 -96
  323. package/dist/useValidation.js.map +1 -1
  324. package/dist/utils/calculateElementOverflow.js +4 -4
  325. package/dist/utils/calculateElementOverflow.js.map +1 -1
  326. package/dist/utils/formatDateTime.js +1 -1
  327. package/dist/utils/obfuscateText.js +6 -6
  328. package/dist/utils/obfuscateText.js.map +1 -1
  329. package/dist/utils/searchFuzzy.js +1 -1
  330. package/dist/utils/storage.js +23 -23
  331. package/dist/utils/storage.js.map +1 -1
  332. package/package.json +32 -19
  333. package/dist/Logo.vue_vue_type_script_setup_true_lang-Y3iE9utm.js.map +0 -1
  334. package/dist/MenusPlugin-B4jpNe7x.js +0 -12
  335. package/dist/Tabs.vue_vue_type_script_setup_true_lang-BlJVDr7o.js +0 -78
  336. package/dist/Tabs.vue_vue_type_script_setup_true_lang-BlJVDr7o.js.map +0 -1
  337. package/dist/floating-ui.vue-CL01Y9ER.js +0 -1075
  338. package/dist/floating-ui.vue-CL01Y9ER.js.map +0 -1
  339. package/dist/formatDateTime-DG7kBc2T.js +0 -1414
  340. package/dist/formatDateTime-DG7kBc2T.js.map +0 -1
  341. package/dist/index-XZqpB2_R.js.map +0 -1
  342. package/dist/searchFuzzy-DBDE6jkd.js +0 -408
  343. package/dist/searchFuzzy-DBDE6jkd.js.map +0 -1
@@ -1,15 +1,38 @@
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 interface BadgeProps {
35
+ export declare interface BadgeProps {
13
36
  /**
14
37
  * If true, the badge will animate when the content changes
15
38
  */
@@ -55,20 +78,46 @@ declare interface BadgeProps {
55
78
  variant?: 'dot' | 'standard';
56
79
  }
57
80
 
58
- declare const _default: __VLS_WithTemplateSlots<DefineComponent<BadgeProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<BadgeProps> & Readonly<{}>, {
59
- color: "blue" | "red";
81
+ declare const _default: __VLS_WithTemplateSlots<DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<BadgeProps>, {
82
+ animate: boolean;
83
+ color: string;
84
+ content: undefined;
85
+ isDisabled: boolean;
86
+ max: number;
87
+ position: string;
88
+ offset: () => {
89
+ top: undefined;
90
+ right: undefined;
91
+ };
92
+ showZero: boolean;
93
+ variant: string;
94
+ }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<BadgeProps>, {
95
+ animate: boolean;
96
+ color: string;
97
+ content: undefined;
98
+ isDisabled: boolean;
99
+ max: number;
100
+ position: string;
101
+ offset: () => {
102
+ top: undefined;
103
+ right: undefined;
104
+ };
105
+ showZero: boolean;
106
+ variant: string;
107
+ }>>> & Readonly<{}>, {
60
108
  max: string | number;
61
- content: string | number;
62
- position: "inline" | "top-right";
63
109
  animate: boolean;
110
+ color: "blue" | "red";
64
111
  offset: {
65
112
  top?: number | undefined;
66
113
  right?: number | undefined;
67
114
  };
115
+ content: string | number;
68
116
  isDisabled: boolean;
117
+ position: "inline" | "top-right";
69
118
  variant: "standard" | "dot";
70
119
  showZero: boolean;
71
- }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLSpanElement>, {
120
+ }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
72
121
  default?(_: {}): any;
73
122
  }>;
74
123
  export default _default;
package/dist/Box.vue.d.ts CHANGED
@@ -1,15 +1,38 @@
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 interface BoxProps {
35
+ export declare interface BoxProps {
13
36
  /**
14
37
  * Remove the padding around the entire Box.
15
38
  */
@@ -28,12 +51,22 @@ declare interface BoxProps {
28
51
  radius?: 'none' | 'rounded';
29
52
  }
30
53
 
31
- declare const _default: __VLS_WithTemplateSlots<DefineComponent<BoxProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<BoxProps> & Readonly<{}>, {
54
+ declare const _default: __VLS_WithTemplateSlots<DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<BoxProps>, {
55
+ disablePadding: boolean;
56
+ disableGutters: boolean;
57
+ disableElevation: boolean;
58
+ radius: string;
59
+ }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<BoxProps>, {
60
+ disablePadding: boolean;
61
+ disableGutters: boolean;
62
+ disableElevation: boolean;
63
+ radius: string;
64
+ }>>> & Readonly<{}>, {
32
65
  radius: "none" | "rounded";
33
66
  disablePadding: boolean;
34
67
  disableGutters: boolean;
35
68
  disableElevation: boolean;
36
- }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLElement>, {
69
+ }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
37
70
  default?(_: {}): any;
38
71
  }>;
39
72
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"Box.vue_vue_type_script_setup_true_lang-rFnvwLVY.js","sources":["../src/components/Box/Box.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n defineOptions({\n name: 'll-box',\n });\n\n export interface BoxProps {\n /**\n * Remove the padding around the entire Box.\n */\n disablePadding?: boolean;\n\n /**\n * Remove the padding on the left and right of the Box.\n */\n disableGutters?: boolean;\n\n /**\n * Remove the padding on the left and right of the Box.\n */\n disableElevation?: boolean;\n\n /**\n * Border radius style. Defaults to `rounded`.\n */\n radius?: 'none' | 'rounded';\n }\n\n const props = withDefaults(defineProps<BoxProps>(), {\n disablePadding: false,\n disableGutters: false,\n disableElevation: false,\n radius: 'rounded',\n });\n</script>\n\n<template>\n <section\n class=\"stash-box tw-bg-white\"\n :class=\"{\n 'tw-rounded': props.radius === 'rounded',\n 'tw-p-gutter': !props.disablePadding && !props.disableGutters,\n 'tw-py-gutter': props.disableGutters,\n 'tw-shadow': !props.disableElevation,\n }\"\n data-test=\"stash-box\"\n >\n <!-- @slot default -->\n <slot></slot>\n </section>\n</template>\n"],"names":["props","__props","_createElementBlock","_renderSlot","_ctx"],"mappings":";;;;;;;;;;;AA2BE,UAAMA,IAAQC;2BASdC,EAYU,WAAA;AAAA,MAXR,UAAM,yBAAuB;AAAA,QACC,cAAAF,EAAM,WAAM;AAAA,QAAsC,eAAA,CAAAA,EAAM,kBAAc,CAAKA,EAAM;AAAA,QAAsC,gBAAAA,EAAM;AAAA,QAAoC,aAAA,CAAAA,EAAM;AAAA,MAAA;MAMrM,aAAU;AAAA,IAAA;MAGVG,EAAaC,EAAA,QAAA,SAAA;AAAA,IAAA;;;"}
1
+ {"version":3,"file":"Box.vue_vue_type_script_setup_true_lang-rFnvwLVY.js","sources":["../src/components/Box/Box.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n defineOptions({\n name: 'll-box',\n });\n\n export interface BoxProps {\n /**\n * Remove the padding around the entire Box.\n */\n disablePadding?: boolean;\n\n /**\n * Remove the padding on the left and right of the Box.\n */\n disableGutters?: boolean;\n\n /**\n * Remove the padding on the left and right of the Box.\n */\n disableElevation?: boolean;\n\n /**\n * Border radius style. Defaults to `rounded`.\n */\n radius?: 'none' | 'rounded';\n }\n\n const props = withDefaults(defineProps<BoxProps>(), {\n disablePadding: false,\n disableGutters: false,\n disableElevation: false,\n radius: 'rounded',\n });\n</script>\n\n<template>\n <section\n class=\"stash-box tw-bg-white\"\n :class=\"{\n 'tw-rounded': props.radius === 'rounded',\n 'tw-p-gutter': !props.disablePadding && !props.disableGutters,\n 'tw-py-gutter': props.disableGutters,\n 'tw-shadow': !props.disableElevation,\n }\"\n data-test=\"stash-box\"\n >\n <!-- @slot default -->\n <slot></slot>\n </section>\n</template>\n"],"names":["props","__props"],"mappings":";;;;;;;;;;;AA2BE,UAAMA,IAAQC;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sources":["../src/components/Button/Button.vue"],"sourcesContent":["<script lang=\"ts\">\n export interface ButtonProps {\n /**\n * Renders the secondary variant\n */\n secondary?: boolean;\n\n /**\n * Renders the button as a container for an Icon\n */\n icon?: boolean;\n\n /**\n * Renders the button as a container for an IconLabel\n */\n iconLabel?: boolean;\n\n /**\n * Renders the tertiary variant\n */\n tertiary?: boolean;\n\n /**\n * Renders the component inline\n */\n inline?: boolean;\n\n /**\n * Renders a color variant\n */\n color?: 'blue' | 'red';\n\n /**\n * The `to` prop for vue-router's `RouterLink` component. If defined, the button will render as a `<router-link />`.\n */\n to?: RouteLocationRaw;\n\n /**\n * Button link. If defined, the button will render as an `<a />` tag.\n */\n href?: string;\n\n /**\n * Displays a spinning loading icon in place of the button text and disables the button\n */\n isLoading?: boolean;\n\n /**\n * Disables the button\n */\n disabled?: boolean;\n }\n</script>\n\n<script lang=\"ts\" setup>\n import { computed, useCssModule } from 'vue';\n import { RouteLocationRaw } from 'vue-router';\n\n import Icon from '../Icon/Icon.vue';\n\n defineOptions({\n name: 'll-button',\n });\n\n const props = withDefaults(defineProps<ButtonProps>(), {\n secondary: false,\n icon: false,\n iconLabel: false,\n tertiary: false,\n inline: false,\n color: undefined,\n href: '',\n to: undefined,\n isLoading: false,\n disabled: undefined,\n });\n const classes = useCssModule();\n\n enum ButtonTypes {\n Icon = 'icon',\n IconLabel = 'iconLabel',\n Secondary = 'secondary',\n Tertiary = 'tertiary',\n Inline = 'inline',\n Primary = 'primary',\n }\n\n type ButtonType = `${ButtonTypes}`;\n\n const buttonType = computed<ButtonType>(() => {\n for (const type of Object.values(ButtonTypes)) {\n if (props[type]) {\n return type;\n }\n }\n\n return ButtonTypes.Primary;\n });\n\n const is = computed(() => {\n if (props.to) {\n return 'router-link';\n }\n\n if (props.href) {\n return 'a';\n }\n\n return 'button';\n });\n\n const buttonAttrs = computed(() => {\n if (props.to) {\n return {\n to: props.to,\n };\n }\n\n if (props.href) {\n return {\n href: props.href,\n };\n }\n\n return {};\n });\n</script>\n\n<template>\n <component\n :is=\"is\"\n :disabled=\"props.isLoading || props.disabled ? true : undefined\"\n v-bind=\"buttonAttrs\"\n class=\"stash-button\"\n :class=\"[\n classes.button,\n `stash-button--${buttonType}`,\n classes[`button--${buttonType}`],\n {\n [`stash-button--${props.color}`]: props.color,\n [classes[`button--${props.color}`]]: props.color,\n 'stash-button--is-loading': props.isLoading,\n },\n ]\"\n data-test=\"ll-button\"\n >\n <Icon v-if=\"props.isLoading\" name=\"loading-empty\" class=\"tw-animate-spin\" />\n <!-- @slot default -->\n <slot v-else></slot>\n </component>\n</template>\n\n<style module>\n .button {\n border-radius: theme('borderRadius.DEFAULT');\n border-width: 1px;\n display: inline-block;\n font-size: 0.875rem;\n font-weight: theme('fontWeight.semibold');\n line-height: 2.125rem;\n margin: 0;\n min-width: 144px;\n padding: 0 theme('spacing.3');\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n white-space: nowrap;\n }\n\n @media screen('lg') {\n /* `focus` and `hover` should be added only for large screens */\n .button:focus {\n box-shadow: 0 0 0 3px rgb(0 123 255 / 14%);\n outline: none;\n }\n\n .button:hover {\n text-decoration: none;\n }\n }\n\n .button[disabled] {\n cursor: default;\n pointer-events: none;\n }\n\n /* Solid treatment */\n .button--solid {\n background-color: var(--button-color);\n border-color: transparent;\n color: var(--text-color);\n }\n\n @media screen('lg') {\n /* `hover` should be added only for large screens */\n .button--solid:hover {\n background-color: var(--button-hover-color);\n }\n }\n\n .button--solid:active {\n background-color: var(--button-hover-color);\n }\n\n .button--solid[disabled]:not(:global(.stash-button--is-loading)) {\n --button-color: var(--color-ice-500) !important;\n }\n\n /* Ghost treatment */\n .button--ghost {\n background-color: rgb(0 0 0 / 0%);\n border-color: var(--button-color);\n color: var(--text-color);\n }\n\n @media screen('lg') {\n /* `hover` should be added only for large screens */\n .button--ghost:hover {\n background-color: var(--button-hover-color);\n }\n }\n\n .button--ghost:active {\n background-color: var(--button-hover-color);\n }\n\n .button--ghost[disabled]:not(:global(.stash-button--is-loading)) {\n --button-color: var(--color-ice-500) !important;\n --text-color: var(--color-ice-500) !important;\n }\n\n /* Types */\n .button--primary {\n composes: button--solid;\n --button-color: var(--color-blue-500);\n --button-hover-color: var(--color-blue-hover);\n --text-color: var(--color-white);\n }\n\n .button--secondary {\n composes: button--ghost;\n --button-color: var(--color-ice-500);\n --button-hover-color: var(--color-ice-700-hover);\n --text-color: var(--color-ice-700);\n }\n\n .button--tertiary {\n composes: button--ghost;\n --button-color: var(--color-white);\n --button-hover-color: var(--color-white-hover);\n --text-color: var(--color-white);\n }\n\n .button--icon,\n .button--iconLabel {\n /* https://developers.google.com/web/fundamentals/accessibility/accessible-styles */\n border: 0;\n border-radius: theme('borderRadius.DEFAULT');\n height: theme('spacing.12');\n min-width: theme('spacing.12');\n text-decoration: none;\n }\n\n .button--icon {\n padding: theme('spacing.3');\n width: theme('spacing.12');\n }\n\n .button--iconLabel {\n padding: 0;\n width: unset;\n }\n\n @media screen('lg') {\n /* `hover` should be added only for large screens */\n .button--icon:hover,\n .button--iconLabel:hover {\n text-decoration: none;\n }\n }\n\n .button--icon svg,\n .button--iconLabel svg {\n display: block;\n margin-left: auto;\n margin-right: auto;\n }\n\n .button--icon[disabled]:not(:global(.stash-button--is-loading)) svg,\n .button--iconLabel[disabled]:not(:global(.stash-button--is-loading)),\n .button--iconLabel[disabled]:not(:global(.stash-button--is-loading)) svg {\n color: var(--color-ice-500);\n }\n\n .button--inline {\n border: 0;\n color: var(--color-blue-500);\n font-weight: theme('fontWeight.medium');\n line-height: 1.5;\n min-width: 0;\n padding: 0;\n }\n\n .button--inline:hover {\n text-decoration: underline;\n }\n\n .button--inline[disabled] {\n color: var(--color-ice-500);\n }\n\n /* Colors */\n .button--blue.button--primary,\n .button--blue.button--secondary {\n --button-color: var(--color-blue-500);\n }\n\n .button--blue.button--primary {\n --button-hover-color: var(--color-blue-hover);\n }\n\n .button--blue.button--secondary {\n --text-color: var(--color-blue-500);\n --button-hover-color: var(--button-secondary-blue-hover);\n }\n\n .button--red.button--primary,\n .button--red.button--secondary {\n --button-color: var(--color-red-500);\n }\n\n .button--red.button--primary {\n --button-hover-color: var(--color-red-hover);\n }\n\n .button--red.button--secondary {\n --text-color: var(--color-red-500);\n --button-hover-color: var(--button-secondary-red-hover);\n }\n\n /**\n * Button Grid\n * TODO: Move into separate component\n * https://leaflink.atlassian.net/browse/STASH-230\n * See `styles/elements/_buttons.scss` for button-grid (parent element) specific styles.\n */\n :global(.button-grid) > .button,\n :global(.header-button-grid) > .button {\n width: 50%;\n }\n\n :global(.button-grid) > .button + .button {\n margin-left: theme('spacing.6');\n }\n\n @media screen('md') {\n :global(.button-grid) > .button {\n width: auto;\n }\n }\n\n :global(.header-button-grid) > .button + .button {\n margin-left: theme('spacing.6');\n }\n\n @media screen('lg') {\n :global(.header-button-grid) > .button {\n width: auto;\n }\n }\n</style>\n"],"names":["props","__props","classes","useCssModule","ButtonTypes","buttonType","computed","type","is","buttonAttrs","_createBlock","_resolveDynamicComponent","_mergeProps","_unref","Icon","_renderSlot","_ctx"],"mappings":";;;;;;;;;;;;;;;;;;;AAgEE,UAAMA,IAAQC,GAYRC,IAAUC,EAAA;AAEhB,QAAKC;AAAL,KAAA,CAAKA,MAAL;AACEA,MAAAA,EAAA,OAAO,QACPA,EAAA,YAAY,aACZA,EAAA,YAAY,aACZA,EAAA,WAAW,YACXA,EAAA,SAAS,UACTA,EAAA,UAAU;AAAA,IAAA,GANPA,MAAAA,IAAA,CAAA,EAAA;AAWL,UAAMC,IAAaC,EAAqB,MAAM;AAC5C,iBAAWC,KAAQ,OAAO,OAAOH,CAAW;AAC1C,YAAIJ,EAAMO,CAAI;AACZ,iBAAOA;AAIX,aAAO;AAAA,IACT,CAAC,GAEKC,IAAKF,EAAS,MACdN,EAAM,KACD,gBAGLA,EAAM,OACD,MAGF,QACR,GAEKS,IAAcH,EAAS,MACvBN,EAAM,KACD;AAAA,MACL,IAAIA,EAAM;AAAA,IAAA,IAIVA,EAAM,OACD;AAAA,MACL,MAAMA,EAAM;AAAA,IAAA,IAIT,CAAA,CACR;2BAIDU,EAoBYC,EAnBLH,EAAA,KAAE,GADTI,EAoBY;AAAA,MAlBT,UAAUZ,EAAM,aAAaA,EAAM,WAAQ,KAAU;AAAA,IAAA,GAC9CS,EAAA,OAAW;AAAA,MACnB,QAAM,gBAAc;AAAA,QACJI,EAAAX,CAAA,EAAQ;AAAA,yBAA+BG,EAAA,KAAU;AAAA,QAAUQ,EAAAX,CAAA,aAAmBG,EAAA,KAAU,EAAA;AAAA;UAAuC,CAAA,iBAAAL,EAAM,KAAK,EAAA,GAAKA,EAAM;AAAA,UAAgB,CAAAa,EAAAX,CAAA,aAAmBF,EAAM,KAAK,EAAA,CAAA,GAAMA,EAAM;AAAA,UAA2C,4BAAAA,EAAM;AAAA,QAAA;AAAA;MAUhR,aAAU;AAAA,IAAA;iBAEV,MAA4E;AAAA,QAAhEA,EAAM,kBAAlBU,EAA4EI,GAAA;AAAA;UAA/C,MAAK;AAAA,UAAgB,OAAM;AAAA,QAAA,MAExDC,EAAoBC,EAAA,QAAA,WAAA,EAAA,KAAA,EAAA,CAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Button.js","sources":["../src/components/Button/Button.vue"],"sourcesContent":["<script lang=\"ts\">\n export interface ButtonProps {\n /**\n * Renders the secondary variant\n */\n secondary?: boolean;\n\n /**\n * Renders the button as a container for an Icon\n */\n icon?: boolean;\n\n /**\n * Renders the button as a container for an IconLabel\n */\n iconLabel?: boolean;\n\n /**\n * Renders the tertiary variant\n */\n tertiary?: boolean;\n\n /**\n * Renders the component inline\n */\n inline?: boolean;\n\n /**\n * Renders a color variant\n */\n color?: 'blue' | 'red';\n\n /**\n * The `to` prop for vue-router's `RouterLink` component. If defined, the button will render as a `<router-link />`.\n */\n to?: RouteLocationRaw;\n\n /**\n * Button link. If defined, the button will render as an `<a />` tag.\n */\n href?: string;\n\n /**\n * Displays a spinning loading icon in place of the button text and disables the button\n */\n isLoading?: boolean;\n\n /**\n * Disables the button\n */\n disabled?: boolean;\n }\n</script>\n\n<script lang=\"ts\" setup>\n import { computed, useCssModule } from 'vue';\n import { RouteLocationRaw } from 'vue-router';\n\n import Icon from '../Icon/Icon.vue';\n\n defineOptions({\n name: 'll-button',\n });\n\n const props = withDefaults(defineProps<ButtonProps>(), {\n secondary: false,\n icon: false,\n iconLabel: false,\n tertiary: false,\n inline: false,\n color: undefined,\n href: '',\n to: undefined,\n isLoading: false,\n disabled: undefined,\n });\n const classes = useCssModule();\n\n enum ButtonTypes {\n Icon = 'icon',\n IconLabel = 'iconLabel',\n Secondary = 'secondary',\n Tertiary = 'tertiary',\n Inline = 'inline',\n Primary = 'primary',\n }\n\n type ButtonType = `${ButtonTypes}`;\n\n const buttonType = computed<ButtonType>(() => {\n for (const type of Object.values(ButtonTypes)) {\n if (props[type]) {\n return type;\n }\n }\n\n return ButtonTypes.Primary;\n });\n\n const is = computed(() => {\n if (props.to) {\n return 'router-link';\n }\n\n if (props.href) {\n return 'a';\n }\n\n return 'button';\n });\n\n const buttonAttrs = computed(() => {\n if (props.to) {\n return {\n to: props.to,\n };\n }\n\n if (props.href) {\n return {\n href: props.href,\n };\n }\n\n return {};\n });\n</script>\n\n<template>\n <component\n :is=\"is\"\n :disabled=\"props.isLoading || props.disabled ? true : undefined\"\n v-bind=\"buttonAttrs\"\n class=\"stash-button\"\n :class=\"[\n classes.button,\n `stash-button--${buttonType}`,\n classes[`button--${buttonType}`],\n {\n [`stash-button--${props.color}`]: props.color,\n [classes[`button--${props.color}`]]: props.color,\n 'stash-button--is-loading': props.isLoading,\n },\n ]\"\n data-test=\"ll-button\"\n >\n <Icon v-if=\"props.isLoading\" name=\"loading-empty\" class=\"tw-animate-spin\" />\n <!-- @slot default -->\n <slot v-else></slot>\n </component>\n</template>\n\n<style module>\n .button {\n border-radius: theme('borderRadius.DEFAULT');\n border-width: 1px;\n display: inline-block;\n font-size: 0.875rem;\n font-weight: theme('fontWeight.semibold');\n line-height: 2.125rem;\n margin: 0;\n min-width: 144px;\n padding: 0 theme('spacing.3');\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n white-space: nowrap;\n }\n\n @media screen('lg') {\n /* `focus` and `hover` should be added only for large screens */\n .button:focus {\n box-shadow: 0 0 0 3px rgb(0 123 255 / 14%);\n outline: none;\n }\n\n .button:hover {\n text-decoration: none;\n }\n }\n\n .button[disabled] {\n cursor: default;\n pointer-events: none;\n }\n\n /* Solid treatment */\n .button--solid {\n background-color: var(--button-color);\n border-color: transparent;\n color: var(--text-color);\n }\n\n @media screen('lg') {\n /* `hover` should be added only for large screens */\n .button--solid:hover {\n background-color: var(--button-hover-color);\n }\n }\n\n .button--solid:active {\n background-color: var(--button-hover-color);\n }\n\n .button--solid[disabled]:not(:global(.stash-button--is-loading)) {\n --button-color: var(--color-ice-500) !important;\n }\n\n /* Ghost treatment */\n .button--ghost {\n background-color: rgb(0 0 0 / 0%);\n border-color: var(--button-color);\n color: var(--text-color);\n }\n\n @media screen('lg') {\n /* `hover` should be added only for large screens */\n .button--ghost:hover {\n background-color: var(--button-hover-color);\n }\n }\n\n .button--ghost:active {\n background-color: var(--button-hover-color);\n }\n\n .button--ghost[disabled]:not(:global(.stash-button--is-loading)) {\n --button-color: var(--color-ice-500) !important;\n --text-color: var(--color-ice-500) !important;\n }\n\n /* Types */\n .button--primary {\n composes: button--solid;\n --button-color: var(--color-blue-500);\n --button-hover-color: var(--color-blue-hover);\n --text-color: var(--color-white);\n }\n\n .button--secondary {\n composes: button--ghost;\n --button-color: var(--color-ice-500);\n --button-hover-color: var(--color-ice-700-hover);\n --text-color: var(--color-ice-700);\n }\n\n .button--tertiary {\n composes: button--ghost;\n --button-color: var(--color-white);\n --button-hover-color: var(--color-white-hover);\n --text-color: var(--color-white);\n }\n\n .button--icon,\n .button--iconLabel {\n /* https://developers.google.com/web/fundamentals/accessibility/accessible-styles */\n border: 0;\n border-radius: theme('borderRadius.DEFAULT');\n height: theme('spacing.12');\n min-width: theme('spacing.12');\n text-decoration: none;\n }\n\n .button--icon {\n padding: theme('spacing.3');\n width: theme('spacing.12');\n }\n\n .button--iconLabel {\n padding: 0;\n width: unset;\n }\n\n @media screen('lg') {\n /* `hover` should be added only for large screens */\n .button--icon:hover,\n .button--iconLabel:hover {\n text-decoration: none;\n }\n }\n\n .button--icon svg,\n .button--iconLabel svg {\n display: block;\n margin-left: auto;\n margin-right: auto;\n }\n\n .button--icon[disabled]:not(:global(.stash-button--is-loading)) svg,\n .button--iconLabel[disabled]:not(:global(.stash-button--is-loading)),\n .button--iconLabel[disabled]:not(:global(.stash-button--is-loading)) svg {\n color: var(--color-ice-500);\n }\n\n .button--inline {\n border: 0;\n color: var(--color-blue-500);\n font-weight: theme('fontWeight.medium');\n line-height: 1.5;\n min-width: 0;\n padding: 0;\n }\n\n .button--inline:hover {\n text-decoration: underline;\n }\n\n .button--inline[disabled] {\n color: var(--color-ice-500);\n }\n\n /* Colors */\n .button--blue.button--primary,\n .button--blue.button--secondary {\n --button-color: var(--color-blue-500);\n }\n\n .button--blue.button--primary {\n --button-hover-color: var(--color-blue-hover);\n }\n\n .button--blue.button--secondary {\n --text-color: var(--color-blue-500);\n --button-hover-color: var(--button-secondary-blue-hover);\n }\n\n .button--red.button--primary,\n .button--red.button--secondary {\n --button-color: var(--color-red-500);\n }\n\n .button--red.button--primary {\n --button-hover-color: var(--color-red-hover);\n }\n\n .button--red.button--secondary {\n --text-color: var(--color-red-500);\n --button-hover-color: var(--button-secondary-red-hover);\n }\n\n /**\n * Button Grid\n * TODO: Move into separate component\n * https://leaflink.atlassian.net/browse/STASH-230\n * See `styles/elements/_buttons.scss` for button-grid (parent element) specific styles.\n */\n :global(.button-grid) > .button,\n :global(.header-button-grid) > .button {\n width: 50%;\n }\n\n :global(.button-grid) > .button + .button {\n margin-left: theme('spacing.6');\n }\n\n @media screen('md') {\n :global(.button-grid) > .button {\n width: auto;\n }\n }\n\n :global(.header-button-grid) > .button + .button {\n margin-left: theme('spacing.6');\n }\n\n @media screen('lg') {\n :global(.header-button-grid) > .button {\n width: auto;\n }\n }\n</style>\n"],"names":["props","__props","classes","useCssModule","ButtonTypes","buttonType","computed","type","is","buttonAttrs"],"mappings":";;;;;;;;;;;;;;;;;;;AAgEE,UAAMA,IAAQC,GAYRC,IAAUC,EAAA;AAEhB,QAAKC;AAAL,KAAA,CAAKA,MAAL;AACEA,MAAAA,EAAA,OAAO,QACPA,EAAA,YAAY,aACZA,EAAA,YAAY,aACZA,EAAA,WAAW,YACXA,EAAA,SAAS,UACTA,EAAA,UAAU;AAAA,IAAA,GANPA,MAAAA,IAAA,CAAA,EAAA;AAWL,UAAMC,IAAaC,EAAqB,MAAM;AAC5C,iBAAWC,KAAQ,OAAO,OAAOH,CAAW;AAC1C,YAAIJ,EAAMO,CAAI;AACZ,iBAAOA;AAIX,aAAO;AAAA,IACT,CAAC,GAEKC,IAAKF,EAAS,MACdN,EAAM,KACD,gBAGLA,EAAM,OACD,MAGF,QACR,GAEKS,IAAcH,EAAS,MACvBN,EAAM,KACD;AAAA,MACL,IAAIA,EAAM;AAAA,IAAA,IAIVA,EAAM,OACD;AAAA,MACL,MAAMA,EAAM;AAAA,IAAA,IAIT,CAAA,CACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,18 +1,41 @@
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 { RouteLocationAsPathGeneric } from 'vue-router';
6
8
  import { RouteLocationAsRelativeGeneric } from 'vue-router';
7
9
  import { RouteLocationRaw } from 'vue-router';
8
10
 
11
+ declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
12
+
13
+ declare type __VLS_Prettify<T> = {
14
+ [K in keyof T]: T[K];
15
+ } & {};
16
+
17
+ declare type __VLS_TypePropsToRuntimeProps<T> = {
18
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
19
+ type: PropType<__VLS_NonUndefinedable<T[K]>>;
20
+ } : {
21
+ type: PropType<T[K]>;
22
+ required: true;
23
+ };
24
+ };
25
+
26
+ declare type __VLS_WithDefaults<P, D> = {
27
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
28
+ default: D[K];
29
+ }> : P[K];
30
+ };
31
+
9
32
  declare type __VLS_WithTemplateSlots<T, S> = T & {
10
33
  new (): {
11
34
  $slots: S;
12
35
  };
13
36
  };
14
37
 
15
- declare interface ButtonProps {
38
+ export declare interface ButtonProps {
16
39
  /**
17
40
  * Renders the secondary variant
18
41
  */
@@ -55,18 +78,40 @@ declare interface ButtonProps {
55
78
  disabled?: boolean;
56
79
  }
57
80
 
58
- declare const _default: __VLS_WithTemplateSlots<DefineComponent<ButtonProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ButtonProps> & Readonly<{}>, {
59
- color: "blue" | "red";
81
+ declare const _default: __VLS_WithTemplateSlots<DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ButtonProps>, {
82
+ secondary: boolean;
60
83
  icon: boolean;
84
+ iconLabel: boolean;
85
+ tertiary: boolean;
86
+ inline: boolean;
87
+ color: undefined;
61
88
  href: string;
89
+ to: undefined;
90
+ isLoading: boolean;
91
+ disabled: undefined;
92
+ }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ButtonProps>, {
62
93
  secondary: boolean;
94
+ icon: boolean;
63
95
  iconLabel: boolean;
64
96
  tertiary: boolean;
65
97
  inline: boolean;
66
- to: string | RouteLocationAsRelativeGeneric | RouteLocationAsPathGeneric;
98
+ color: undefined;
99
+ href: string;
100
+ to: undefined;
67
101
  isLoading: boolean;
102
+ disabled: undefined;
103
+ }>>> & Readonly<{}>, {
104
+ to: string | RouteLocationAsRelativeGeneric | RouteLocationAsPathGeneric;
68
105
  disabled: boolean;
69
- }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>, {
106
+ icon: boolean;
107
+ href: string;
108
+ secondary: boolean;
109
+ iconLabel: boolean;
110
+ tertiary: boolean;
111
+ inline: boolean;
112
+ color: "blue" | "red";
113
+ isLoading: boolean;
114
+ }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
70
115
  default?(_: {}): any;
71
116
  }>;
72
117
  export default _default;
@@ -1,53 +1,57 @@
1
- import { defineComponent as _, computed as i, ref as f, createElementBlock as o, openBlock as l, normalizeClass as c, Fragment as b, renderList as m, withModifiers as g, toDisplayString as $ } from "vue";
2
- import y from "lodash-es/uniqueId";
3
- import { _ as B } from "./_plugin-vue_export-helper-CHgC5LLL.js";
4
- const h = ["data-test"], w = ["data-test", "disabled", "onClick"], z = {
1
+ import { defineComponent as m, computed as r, ref as g, createElementBlock as l, openBlock as s, normalizeClass as p, Fragment as $, renderList as y, withModifiers as B, toDisplayString as h } from "vue";
2
+ import w from "lodash-es/uniqueId";
3
+ import { _ as z } from "./_plugin-vue_export-helper-CHgC5LLL.js";
4
+ const k = ["data-test"], C = ["data-test", "disabled", "onClick"], G = {
5
5
  name: "ll-button-group"
6
- }, k = /* @__PURE__ */ _({
7
- ...z,
6
+ }, D = /* @__PURE__ */ m({
7
+ ...G,
8
8
  props: {
9
- groupName: { default: y() },
9
+ groupName: { default: w() },
10
10
  options: {},
11
11
  fullWidth: { type: Boolean, default: !1 },
12
12
  disabled: { type: Boolean, default: !1 },
13
13
  allowDeactivate: { type: Boolean, default: !1 }
14
14
  },
15
15
  emits: ["input"],
16
- setup(d, { emit: r }) {
17
- const e = d, p = r, s = i(() => e.options.length === 1), u = i(() => e.allowDeactivate || s.value), n = f(e.options.find((t) => t.active) || null);
18
- function v(t) {
19
- u.value && n.value?.id === t.id ? n.value = null : n.value = t, p("input", n.value);
16
+ setup(v, { emit: _ }) {
17
+ const e = v, f = _, u = r(() => e.options.length === 1), i = r(() => e.allowDeactivate || u.value), n = g(e.options.find((t) => t.active) || null);
18
+ function b(t) {
19
+ var o;
20
+ i.value && ((o = n.value) == null ? void 0 : o.id) === t.id ? n.value = null : n.value = t, f("input", n.value);
20
21
  }
21
- return (t, W) => (l(), o("div", {
22
- class: c([
22
+ return (t, o) => (s(), l("div", {
23
+ class: p([
23
24
  "tw-flex",
24
25
  t.$style.buttonGroup,
25
26
  { "tw-w-full": e.fullWidth },
26
- { [t.$style.single]: s.value },
27
- { [t.$style["can-deactivate"]]: u.value }
27
+ { [t.$style.single]: u.value },
28
+ { [t.$style["can-deactivate"]]: i.value }
28
29
  ]),
29
30
  "data-test": `button-group-${t.$props.groupName}`
30
31
  }, [
31
- (l(!0), o(b, null, m(e.options, (a) => (l(), o("button", {
32
- key: `${e.groupName}-${a.id}`,
33
- class: c([t.$style.button, { [t.$style.active]: n.value?.id === a.id }]),
34
- "data-test": `${e.groupName}-button-${n.value?.id === a.id ? "active" : "inactive"}`,
35
- tabindex: 0,
36
- disabled: e.disabled,
37
- onClick: g((q) => v(a), ["prevent"])
38
- }, $(a.text), 11, w))), 128))
39
- ], 10, h));
32
+ (s(!0), l($, null, y(e.options, (a) => {
33
+ var c, d;
34
+ return s(), l("button", {
35
+ key: `${e.groupName}-${a.id}`,
36
+ class: p([t.$style.button, { [t.$style.active]: ((c = n.value) == null ? void 0 : c.id) === a.id }]),
37
+ "data-test": `${e.groupName}-button-${((d = n.value) == null ? void 0 : d.id) === a.id ? "active" : "inactive"}`,
38
+ tabindex: 0,
39
+ disabled: e.disabled,
40
+ onClick: B((F) => b(a), ["prevent"])
41
+ }, h(a.text), 11, C);
42
+ }), 128))
43
+ ], 10, k));
40
44
  }
41
- }), C = "_buttonGroup_1bnlz_3", G = "_button_1bnlz_3", D = "_single_1bnlz_17", N = "_active_1bnlz_29", M = {
42
- buttonGroup: C,
43
- button: G,
44
- single: D,
45
- active: N,
45
+ }), N = "_buttonGroup_1bnlz_3", M = "_button_1bnlz_3", S = "_single_1bnlz_17", W = "_active_1bnlz_29", q = {
46
+ buttonGroup: N,
47
+ button: M,
48
+ single: S,
49
+ active: W,
46
50
  "can-deactivate": "_can-deactivate_1bnlz_42"
47
- }, S = {
48
- $style: M
49
- }, L = /* @__PURE__ */ B(k, [["__cssModules", S]]);
51
+ }, E = {
52
+ $style: q
53
+ }, x = /* @__PURE__ */ z(D, [["__cssModules", E]]);
50
54
  export {
51
- L as default
55
+ x as default
52
56
  };
53
57
  //# sourceMappingURL=ButtonGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonGroup.js","sources":["../src/components/ButtonGroup/ButtonGroup.vue"],"sourcesContent":["<script lang=\"ts\">\n /**\n * @deprecated use RadioGroup instead with `variant=\"button\"`.\n * RadioGroup uses pretty much the same API as the ButtonGroup,\n * but every button is a radio element which makes more sense semantically.\n */\n export default {\n name: 'll-button-group',\n };\n</script>\n\n<script lang=\"ts\" setup>\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, ref } from 'vue';\n\n export interface ButtonGroupOption {\n id: string;\n active?: boolean;\n text: string;\n }\n\n export interface ButtonGroupProps {\n /**\n * A name for the group, useful when multiple ButtonGroups exist on the page\n */\n groupName?: string;\n\n /**\n * The list of buttons to render\n */\n options: ButtonGroupOption[];\n\n /**\n * Whether the group should expand to the parent's width\n */\n fullWidth?: boolean;\n\n /**\n * Whether the entire group should be disabled\n */\n disabled?: boolean;\n\n /**\n * Whether the active button can be deactivated\n */\n allowDeactivate?: boolean;\n }\n\n const props = withDefaults(defineProps<ButtonGroupProps>(), {\n groupName: uniqueId(),\n fullWidth: false,\n disabled: false,\n allowDeactivate: false,\n });\n\n const emit = defineEmits<{\n (e: 'input', activeButton: ButtonGroupOption | null): void;\n }>();\n\n const isSingleButton = computed(() => props.options.length === 1);\n\n const canDeactivate = computed(() => props.allowDeactivate || isSingleButton.value);\n\n const activeButton = ref(props.options.find((o) => o.active) || null);\n\n function onClick(clickedOption: ButtonGroupOption) {\n if (canDeactivate.value && activeButton.value?.id === clickedOption.id) {\n activeButton.value = null;\n } else {\n activeButton.value = clickedOption;\n }\n\n emit('input', activeButton.value);\n }\n</script>\n\n<template>\n <div\n :class=\"[\n 'tw-flex',\n $style.buttonGroup,\n { 'tw-w-full': props.fullWidth },\n { [$style.single]: isSingleButton },\n { [$style['can-deactivate']]: canDeactivate },\n ]\"\n :data-test=\"`button-group-${$props.groupName}`\"\n >\n <button\n v-for=\"option in props.options\"\n :key=\"`${props.groupName}-${option.id}`\"\n :class=\"[$style.button, { [$style.active]: activeButton?.id === option.id }]\"\n :data-test=\"`${props.groupName}-button-${activeButton?.id === option.id ? 'active' : 'inactive'}`\"\n :tabindex=\"0\"\n :disabled=\"props.disabled\"\n @click.prevent=\"onClick(option)\"\n >\n {{ option.text }}\n </button>\n </div>\n</template>\n\n<style module>\n /* full width buttons */\n .buttonGroup:global(.w-full) > button {\n flex: 1 1 50%;\n max-width: 100%;\n }\n\n .button {\n border: 1px solid var(--color-ice-500);\n border-radius: 0;\n font-weight: theme('fontWeight.semibold');\n line-height: theme('lineHeight.body');\n min-width: 100px;\n padding: 7px 8px;\n }\n\n .single .button {\n border: 1px solid var(--color-ice-700);\n color: var(--color-ice-700);\n }\n\n .button:focus,\n .button:hover {\n border: 1px solid var(--color-blue-500) !important;\n color: var(--color-blue-500);\n z-index: 1;\n }\n\n .button.active {\n background-color: var(--color-blue-100);\n border: 1px solid var(--color-blue-500) !important;\n color: var(--color-blue-500);\n cursor: default;\n z-index: 1;\n }\n\n .button.active + button {\n border-left: 1px solid transparent;\n }\n\n .single .button.active,\n .can-deactivate .button.active {\n cursor: pointer;\n }\n\n .button[disabled] {\n color: var(--color-ice-500);\n cursor: default;\n pointer-events: none;\n }\n\n .button:focus {\n box-shadow: none;\n outline: 0;\n }\n\n .button:not(:first-child) {\n margin-left: -1px;\n }\n\n .button:not(:last-child) {\n border-right: 1px solid transparent;\n }\n\n .button:first-child {\n border-bottom-left-radius: theme('borderRadius.DEFAULT');\n border-top-left-radius: theme('borderRadius.DEFAULT');\n }\n\n .button:last-child {\n border-bottom-right-radius: theme('borderRadius.DEFAULT');\n border-top-right-radius: theme('borderRadius.DEFAULT');\n }\n</style>\n"],"names":["__default__","props","__props","emit","__emit","isSingleButton","computed","canDeactivate","activeButton","ref","o","onClick","clickedOption","_createElementBlock","_normalizeClass","$style","$props","_openBlock","_Fragment","_renderList","option","_withModifiers","$event","_toDisplayString","_hoisted_2"],"mappings":";;;mEAMEA,IAAe;AAAA,EACb,MAAM;AACR;;;;;;;;;;;AAwCA,UAAMC,IAAQC,GAORC,IAAOC,GAIPC,IAAiBC,EAAS,MAAML,EAAM,QAAQ,WAAW,CAAC,GAE1DM,IAAgBD,EAAS,MAAML,EAAM,mBAAmBI,EAAe,KAAK,GAE5EG,IAAeC,EAAIR,EAAM,QAAQ,KAAK,CAACS,MAAMA,EAAE,MAAM,KAAK,IAAI;AAEpE,aAASC,EAAQC,GAAkC;AACjD,MAAIL,EAAc,SAASC,EAAa,OAAO,OAAOI,EAAc,KAClEJ,EAAa,QAAQ,OAErBA,EAAa,QAAQI,GAGvBT,EAAK,SAASK,EAAa,KAAK;AAAA,IAClC;2BAIAK,EAqBM,OAAA;AAAA,MApBH,OAAKC,EAAA;AAAA;QAA2BC,EAAAA,OAAO;AAAA,QAAkC,EAAA,aAAAd,EAAM,UAAA;AAAA,WAAsBc,EAAAA,OAAO,MAAM,GAAGV,EAAA,MAAA;AAAA,QAA2BU,EAAAA,CAAAA,EAAAA,2BAA2BR,EAAA,MAAA;AAAA,MAAa;MAOxL,aAAS,gBAAkBS,EAAAA,OAAO,SAAS;AAAA,IAAA;OAE5CC,EAAA,EAAA,GAAAJ,EAUSK,GAAA,MAAAC,EATUlB,EAAM,UAAhBmB,YADTP,EAUS,UAAA;AAAA,QARN,QAAQZ,EAAM,SAAS,IAAImB,EAAO,EAAE;AAAA,QACpC,OAAKN,EAAA,CAAGC,EAAAA,OAAO,WAAWA,EAAAA,OAAO,MAAM,GAAGP,SAAc,OAAOY,EAAO,GAAA,CAAE,CAAA;AAAA,QACxE,aAAS,GAAKnB,EAAM,SAAS,WAAWO,EAAA,OAAc,OAAOY,EAAO,KAAE,WAAA,UAAA;AAAA,QACtE,UAAU;AAAA,QACV,UAAUnB,EAAM;AAAA,QAChB,SAAKoB,EAAA,CAAAC,MAAUX,EAAQS,CAAM,GAAA,CAAA,SAAA,CAAA;AAAA,MAAA,GAE3BG,EAAAH,EAAO,IAAI,GAAA,IAAAI,CAAA;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ButtonGroup.js","sources":["../src/components/ButtonGroup/ButtonGroup.vue"],"sourcesContent":["<script lang=\"ts\">\n /**\n * @deprecated use RadioGroup instead with `variant=\"button\"`.\n * RadioGroup uses pretty much the same API as the ButtonGroup,\n * but every button is a radio element which makes more sense semantically.\n */\n export default {\n name: 'll-button-group',\n };\n</script>\n\n<script lang=\"ts\" setup>\n import uniqueId from 'lodash-es/uniqueId';\n import { computed, ref } from 'vue';\n\n export interface ButtonGroupOption {\n id: string;\n active?: boolean;\n text: string;\n }\n\n export interface ButtonGroupProps {\n /**\n * A name for the group, useful when multiple ButtonGroups exist on the page\n */\n groupName?: string;\n\n /**\n * The list of buttons to render\n */\n options: ButtonGroupOption[];\n\n /**\n * Whether the group should expand to the parent's width\n */\n fullWidth?: boolean;\n\n /**\n * Whether the entire group should be disabled\n */\n disabled?: boolean;\n\n /**\n * Whether the active button can be deactivated\n */\n allowDeactivate?: boolean;\n }\n\n const props = withDefaults(defineProps<ButtonGroupProps>(), {\n groupName: uniqueId(),\n fullWidth: false,\n disabled: false,\n allowDeactivate: false,\n });\n\n const emit = defineEmits<{\n (e: 'input', activeButton: ButtonGroupOption | null): void;\n }>();\n\n const isSingleButton = computed(() => props.options.length === 1);\n\n const canDeactivate = computed(() => props.allowDeactivate || isSingleButton.value);\n\n const activeButton = ref(props.options.find((o) => o.active) || null);\n\n function onClick(clickedOption: ButtonGroupOption) {\n if (canDeactivate.value && activeButton.value?.id === clickedOption.id) {\n activeButton.value = null;\n } else {\n activeButton.value = clickedOption;\n }\n\n emit('input', activeButton.value);\n }\n</script>\n\n<template>\n <div\n :class=\"[\n 'tw-flex',\n $style.buttonGroup,\n { 'tw-w-full': props.fullWidth },\n { [$style.single]: isSingleButton },\n { [$style['can-deactivate']]: canDeactivate },\n ]\"\n :data-test=\"`button-group-${$props.groupName}`\"\n >\n <button\n v-for=\"option in props.options\"\n :key=\"`${props.groupName}-${option.id}`\"\n :class=\"[$style.button, { [$style.active]: activeButton?.id === option.id }]\"\n :data-test=\"`${props.groupName}-button-${activeButton?.id === option.id ? 'active' : 'inactive'}`\"\n :tabindex=\"0\"\n :disabled=\"props.disabled\"\n @click.prevent=\"onClick(option)\"\n >\n {{ option.text }}\n </button>\n </div>\n</template>\n\n<style module>\n /* full width buttons */\n .buttonGroup:global(.w-full) > button {\n flex: 1 1 50%;\n max-width: 100%;\n }\n\n .button {\n border: 1px solid var(--color-ice-500);\n border-radius: 0;\n font-weight: theme('fontWeight.semibold');\n line-height: theme('lineHeight.body');\n min-width: 100px;\n padding: 7px 8px;\n }\n\n .single .button {\n border: 1px solid var(--color-ice-700);\n color: var(--color-ice-700);\n }\n\n .button:focus,\n .button:hover {\n border: 1px solid var(--color-blue-500) !important;\n color: var(--color-blue-500);\n z-index: 1;\n }\n\n .button.active {\n background-color: var(--color-blue-100);\n border: 1px solid var(--color-blue-500) !important;\n color: var(--color-blue-500);\n cursor: default;\n z-index: 1;\n }\n\n .button.active + button {\n border-left: 1px solid transparent;\n }\n\n .single .button.active,\n .can-deactivate .button.active {\n cursor: pointer;\n }\n\n .button[disabled] {\n color: var(--color-ice-500);\n cursor: default;\n pointer-events: none;\n }\n\n .button:focus {\n box-shadow: none;\n outline: 0;\n }\n\n .button:not(:first-child) {\n margin-left: -1px;\n }\n\n .button:not(:last-child) {\n border-right: 1px solid transparent;\n }\n\n .button:first-child {\n border-bottom-left-radius: theme('borderRadius.DEFAULT');\n border-top-left-radius: theme('borderRadius.DEFAULT');\n }\n\n .button:last-child {\n border-bottom-right-radius: theme('borderRadius.DEFAULT');\n border-top-right-radius: theme('borderRadius.DEFAULT');\n }\n</style>\n"],"names":["__default__","props","__props","emit","__emit","isSingleButton","computed","canDeactivate","activeButton","ref","o","onClick","clickedOption","_a"],"mappings":";;;mEAMEA,IAAe;AAAA,EACb,MAAM;AACR;;;;;;;;;;;AAwCA,UAAMC,IAAQC,GAORC,IAAOC,GAIPC,IAAiBC,EAAS,MAAML,EAAM,QAAQ,WAAW,CAAC,GAE1DM,IAAgBD,EAAS,MAAML,EAAM,mBAAmBI,EAAe,KAAK,GAE5EG,IAAeC,EAAIR,EAAM,QAAQ,KAAK,CAACS,MAAMA,EAAE,MAAM,KAAK,IAAI;AAEpE,aAASC,EAAQC,GAAkC;;AACjD,MAAIL,EAAc,WAASM,IAAAL,EAAa,UAAb,gBAAAK,EAAoB,QAAOD,EAAc,KAClEJ,EAAa,QAAQ,OAErBA,EAAa,QAAQI,GAGvBT,EAAK,SAASK,EAAa,KAAK;AAAA,IAClC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,15 +1,38 @@
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 interface ButtonGroupOption {
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
+ export declare interface ButtonGroupOption {
7
30
  id: string;
8
31
  active?: boolean;
9
32
  text: string;
10
33
  }
11
34
 
12
- declare interface ButtonGroupProps {
35
+ export declare interface ButtonGroupProps {
13
36
  /**
14
37
  * A name for the group, useful when multiple ButtonGroups exist on the page
15
38
  */
@@ -37,16 +60,26 @@ declare interface ButtonGroupProps {
37
60
  * RadioGroup uses pretty much the same API as the ButtonGroup,
38
61
  * but every button is a radio element which makes more sense semantically.
39
62
  */
40
- declare const _default: DefineComponent<ButtonGroupProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
41
- input: (activeButton: ButtonGroupOption | null) => any;
42
- }, string, PublicProps, Readonly<ButtonGroupProps> & Readonly<{
63
+ declare const _default: DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ButtonGroupProps>, {
64
+ groupName: string;
65
+ fullWidth: boolean;
66
+ disabled: boolean;
67
+ allowDeactivate: boolean;
68
+ }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
69
+ input: (activeButton: ButtonGroupOption | null) => void;
70
+ }, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ButtonGroupProps>, {
71
+ groupName: string;
72
+ fullWidth: boolean;
73
+ disabled: boolean;
74
+ allowDeactivate: boolean;
75
+ }>>> & Readonly<{
43
76
  onInput?: ((activeButton: ButtonGroupOption | null) => any) | undefined;
44
77
  }>, {
45
78
  disabled: boolean;
46
79
  groupName: string;
47
80
  fullWidth: boolean;
48
81
  allowDeactivate: boolean;
49
- }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
82
+ }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
50
83
  export default _default;
51
84
 
52
85
  export { }
package/dist/Card.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Card.js","sources":["../src/components/Card/Card.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { useSlots } from 'vue';\n\n export interface CardProps {\n /**\n * Detach the actions from the top of the card, making them absolute-positioned.\n * @default false\n */\n detachActions?: boolean;\n }\n\n const props = withDefaults(defineProps<CardProps>(), {\n detachActions: false,\n });\n\n const slots = useSlots();\n</script>\n\n<template>\n <article\n class=\"stash-card tw-relative tw-inline-block tw-rounded tw-border tw-bg-white tw-shadow-md\"\n data-test=\"stash-card\"\n >\n <div\n v-if=\"slots['top-left'] || slots['top-right']\"\n data-test=\"card-actions\"\n :class=\"{ 'tw-absolute tw-top-0 tw-w-full': props.detachActions }\"\n class=\"tw-flex tw-flex-wrap tw-items-start tw-justify-between tw-p-6\"\n >\n <div>\n <!-- @slot Top left actions slot, for rendering content on the card top-left -->\n <slot name=\"top-left\"></slot>\n </div>\n <div>\n <!-- @slot Top right actions slot, for rendering content on the card top-right -->\n <slot name=\"top-right\"></slot>\n </div>\n </div>\n\n <div :class=\"{ 'tw-mb-6 tw-flex tw-h-full tw-flex-col tw-gap-y-6': slots['default'] }\">\n <!-- @slot Default slot, for rendering card subcomponents -->\n <slot></slot>\n </div>\n </article>\n</template>\n"],"names":["props","__props","slots","useSlots","_openBlock","_createElementBlock","_hoisted_1","_unref","_normalizeClass","_createElementVNode","_renderSlot","_ctx"],"mappings":";;;;;;;;;;AAWE,UAAMA,IAAQC,GAIRC,IAAQC,EAAA;sBAIdC,EAAA,GAAAC,EAwBU,WAxBVC,GAwBU;AAAA,MAnBAC,EAAAL,CAAA,iBAAqBK,EAAAL,CAAA,EAAK,WAAA,UADlCG,EAcM,OAAA;AAAA;QAZJ,aAAU;AAAA,QACT,OAAKG,EAAA,CAAA,EAAA,kCAAsCR,EAAM,cAAA,GAC5C,+DAA+D,CAAA;AAAA,MAAA;QAErES,EAGM,OAAA,MAAA;AAAA,UADJC,EAA6BC,EAAA,QAAA,UAAA;AAAA,QAAA;QAE/BF,EAGM,OAAA,MAAA;AAAA,UADJC,EAA8BC,EAAA,QAAA,WAAA;AAAA,QAAA;;MAIlCF,EAGM,OAAA;AAAA,QAHA,+DAA6DF,EAAAL,CAAA,EAAK,QAAA,CAAA;AAAA,MAAA;QAEtEQ,EAAaC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;"}
1
+ {"version":3,"file":"Card.js","sources":["../src/components/Card/Card.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { useSlots } from 'vue';\n\n export interface CardProps {\n /**\n * Detach the actions from the top of the card, making them absolute-positioned.\n * @default false\n */\n detachActions?: boolean;\n }\n\n const props = withDefaults(defineProps<CardProps>(), {\n detachActions: false,\n });\n\n const slots = useSlots();\n</script>\n\n<template>\n <article\n class=\"stash-card tw-relative tw-inline-block tw-rounded tw-border tw-bg-white tw-shadow-md\"\n data-test=\"stash-card\"\n >\n <div\n v-if=\"slots['top-left'] || slots['top-right']\"\n data-test=\"card-actions\"\n :class=\"{ 'tw-absolute tw-top-0 tw-w-full': props.detachActions }\"\n class=\"tw-flex tw-flex-wrap tw-items-start tw-justify-between tw-p-6\"\n >\n <div>\n <!-- @slot Top left actions slot, for rendering content on the card top-left -->\n <slot name=\"top-left\"></slot>\n </div>\n <div>\n <!-- @slot Top right actions slot, for rendering content on the card top-right -->\n <slot name=\"top-right\"></slot>\n </div>\n </div>\n\n <div :class=\"{ 'tw-mb-6 tw-flex tw-h-full tw-flex-col tw-gap-y-6': slots['default'] }\">\n <!-- @slot Default slot, for rendering card subcomponents -->\n <slot></slot>\n </div>\n </article>\n</template>\n"],"names":["props","__props","slots","useSlots"],"mappings":";;;;;;;;;;AAWE,UAAMA,IAAQC,GAIRC,IAAQC,EAAA;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,15 +1,38 @@
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 interface CardProps {
35
+ export declare interface CardProps {
13
36
  /**
14
37
  * Detach the actions from the top of the card, making them absolute-positioned.
15
38
  * @default false
@@ -17,11 +40,15 @@ declare interface CardProps {
17
40
  detachActions?: boolean;
18
41
  }
19
42
 
20
- declare const _default: __VLS_WithTemplateSlots<DefineComponent<CardProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<CardProps> & Readonly<{}>, {
43
+ declare const _default: __VLS_WithTemplateSlots<DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<CardProps>, {
44
+ detachActions: boolean;
45
+ }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<CardProps>, {
46
+ detachActions: boolean;
47
+ }>>> & Readonly<{}>, {
21
48
  detachActions: boolean;
22
- }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLElement>, {
23
- 'top-left'?(_: {}): any;
24
- 'top-right'?(_: {}): any;
49
+ }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
50
+ "top-left"?(_: {}): any;
51
+ "top-right"?(_: {}): any;
25
52
  default?(_: {}): any;
26
53
  }>;
27
54
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"CardContent.js","sources":["../src/components/CardContent/CardContent.vue"],"sourcesContent":["<template>\n <div class=\"stash-card-content tw-px-6\" data-test=\"stash-card-content\">\n <!-- @slot Default slot, for rendering any card content -->\n <slot></slot>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","_renderSlot","_ctx"],"mappings":";;;EACO,OAAM;AAAA,EAA6B,aAAU;;;AAAlD,SAAAA,EAAA,GAAAC,EAGM,OAHNC,GAGM;AAAA,IADJC,EAAaC,EAAA,QAAA,SAAA;AAAA;;;"}
1
+ {"version":3,"file":"CardContent.js","sources":["../src/components/CardContent/CardContent.vue"],"sourcesContent":["<template>\n <div class=\"stash-card-content tw-px-6\" data-test=\"stash-card-content\">\n <!-- @slot Default slot, for rendering any card content -->\n <slot></slot>\n </div>\n</template>\n"],"names":["_hoisted_1","_sfc_render","_ctx","_cache","_openBlock","_createElementBlock"],"mappings":";;cACOA,IAAM;AAAA,EAA6B,OAAA;AAAA;;AAAxC,SAAAC,EAAAC,GAAAC,GAAA;SAEEC,EAAa,GAAAC,EAAA,OAAAL,GAAA;AAAA;;;;"}
@@ -9,7 +9,7 @@ declare type __VLS_WithTemplateSlots<T, S> = T & {
9
9
  };
10
10
  };
11
11
 
12
- declare const _default: __VLS_WithTemplateSlots<DefineComponent< {}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, HTMLDivElement>, {
12
+ declare const _default: __VLS_WithTemplateSlots<DefineComponent< {}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
13
13
  default?(_: {}): any;
14
14
  }>;
15
15
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"CardFooter.js","sources":["../src/components/CardFooter/CardFooter.vue"],"sourcesContent":["<template>\n <footer class=\"stash-card-footer tw-px-6\" data-test=\"stash-card-footer\">\n <!-- @slot Default slot, for rendering any card footer content -->\n <slot></slot>\n </footer>\n</template>\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","_renderSlot","_ctx"],"mappings":";;;EACU,OAAM;AAAA,EAA4B,aAAU;;;AAApD,SAAAA,EAAA,GAAAC,EAGS,UAHTC,GAGS;AAAA,IADPC,EAAaC,EAAA,QAAA,SAAA;AAAA;;;"}
1
+ {"version":3,"file":"CardFooter.js","sources":["../src/components/CardFooter/CardFooter.vue"],"sourcesContent":["<template>\n <footer class=\"stash-card-footer tw-px-6\" data-test=\"stash-card-footer\">\n <!-- @slot Default slot, for rendering any card footer content -->\n <slot></slot>\n </footer>\n</template>\n"],"names":["_hoisted_1","_sfc_render","_ctx","_cache","_openBlock","_createElementBlock"],"mappings":";;cACUA,IAAM;AAAA,EAA4B,OAAA;AAAA;;AAA1C,SAAAC,EAAAC,GAAAC,GAAA;SAEEC,EAAa,GAAAC,EAAA,UAAAL,GAAA;AAAA;;;;"}
@@ -9,7 +9,7 @@ declare type __VLS_WithTemplateSlots<T, S> = T & {
9
9
  };
10
10
  };
11
11
 
12
- declare const _default: __VLS_WithTemplateSlots<DefineComponent< {}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, HTMLElement>, {
12
+ declare const _default: __VLS_WithTemplateSlots<DefineComponent< {}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
13
13
  default?(_: {}): any;
14
14
  }>;
15
15
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"CardHeader.js","sources":["../src/components/CardHeader/CardHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\n export interface CardHeaderProps {\n /**\n * Title to be displayed\n */\n title: string;\n /**\n * Subtitle to be displayed\n */\n subtitle?: string;\n /**\n * Additional text to be displayed\n */\n text?: string;\n }\n\n const props = defineProps<CardHeaderProps>();\n</script>\n\n<template>\n <header class=\"stash-card-header tw-px-6 tw-font-medium tw-text-ice-900\" data-test=\"stash-card-header\">\n <h4 class=\"tw-text-base\">\n {{ props.title }}\n </h4>\n <p v-if=\"props.subtitle\" class=\"tw-mb-0 tw-mt-1.5\">\n {{ props.subtitle }}\n </p>\n <span v-if=\"props.text\" class=\"tw-mt-1.5 tw-text-ice-700\">\n {{ props.text }}\n </span>\n </header>\n</template>\n"],"names":["props","__props","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_toDisplayString","_hoisted_3","_hoisted_4"],"mappings":";;;;;;;;;;;;;;;;;;AAgBE,UAAMA,IAAQC;sBAIdC,EAAA,GAAAC,EAUS,UAVTC,GAUS;AAAA,MATPC,EAEK,MAFLC,GAEKC,EADAP,EAAM,KAAK,GAAA,CAAA;AAAA,MAEPA,EAAM,YAAfE,EAAA,GAAAC,EAEI,KAFJK,GAEID,EADCP,EAAM,QAAQ,GAAA,CAAA;MAEPA,EAAM,QAAlBE,EAAA,GAAAC,EAEO,QAFPM,GAEOF,EADFP,EAAM,IAAI,GAAA,CAAA;;;;"}
1
+ {"version":3,"file":"CardHeader.js","sources":["../src/components/CardHeader/CardHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\n export interface CardHeaderProps {\n /**\n * Title to be displayed\n */\n title: string;\n /**\n * Subtitle to be displayed\n */\n subtitle?: string;\n /**\n * Additional text to be displayed\n */\n text?: string;\n }\n\n const props = defineProps<CardHeaderProps>();\n</script>\n\n<template>\n <header class=\"stash-card-header tw-px-6 tw-font-medium tw-text-ice-900\" data-test=\"stash-card-header\">\n <h4 class=\"tw-text-base\">\n {{ props.title }}\n </h4>\n <p v-if=\"props.subtitle\" class=\"tw-mb-0 tw-mt-1.5\">\n {{ props.subtitle }}\n </p>\n <span v-if=\"props.text\" class=\"tw-mt-1.5 tw-text-ice-700\">\n {{ props.text }}\n </span>\n </header>\n</template>\n"],"names":["props","__props"],"mappings":";;;;;;;;;;;;;;;;;;AAgBE,UAAMA,IAAQC;;;;;;;;"}