@indielayer/ui 1.0.9 → 1.1.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 (429) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +2 -2
  3. package/{src/exports/nuxt.js → exports/nuxt.mjs} +1 -1
  4. package/{lib → exports}/nuxt.plugin.js +1 -1
  5. package/lib/_virtual/_plugin-vue_export-helper.js +9 -0
  6. package/lib/common/icons.js +18 -0
  7. package/lib/common/utils.d.ts +4 -0
  8. package/lib/common/utils.js +25 -0
  9. package/lib/components/alert/Alert.theme.d.ts +10 -8
  10. package/lib/components/alert/Alert.theme.js +41 -0
  11. package/lib/components/alert/Alert.vue.d.ts +33 -7
  12. package/lib/components/alert/Alert.vue.js +9 -0
  13. package/lib/components/alert/Alert.vue2.js +62 -0
  14. package/lib/components/alert/Alert.vue3.js +8 -0
  15. package/lib/components/alert/index.d.ts +3 -0
  16. package/lib/components/avatar/Avatar.theme.d.ts +13 -7
  17. package/lib/components/avatar/Avatar.theme.js +25 -0
  18. package/lib/components/avatar/Avatar.vue.d.ts +32 -3
  19. package/lib/components/avatar/Avatar.vue.js +9 -0
  20. package/lib/components/avatar/Avatar.vue2.js +76 -0
  21. package/lib/components/avatar/Avatar.vue3.js +7 -0
  22. package/lib/components/avatar/index.d.ts +3 -0
  23. package/lib/components/badge/Badge.theme.d.ts +10 -8
  24. package/lib/components/badge/Badge.theme.js +12 -0
  25. package/lib/components/badge/Badge.vue.d.ts +54 -9
  26. package/lib/components/badge/Badge.vue.js +94 -0
  27. package/lib/components/badge/Badge.vue2.js +4 -0
  28. package/lib/components/badge/index.d.ts +3 -0
  29. package/lib/components/breadcrumbs/Breadcrumbs.theme.d.ts +10 -8
  30. package/lib/components/breadcrumbs/Breadcrumbs.theme.js +10 -0
  31. package/lib/components/breadcrumbs/Breadcrumbs.vue.d.ts +20 -6
  32. package/lib/components/breadcrumbs/Breadcrumbs.vue.js +79 -0
  33. package/lib/components/breadcrumbs/Breadcrumbs.vue2.js +4 -0
  34. package/lib/components/breadcrumbs/index.d.ts +3 -0
  35. package/lib/components/button/Button.theme.d.ts +12 -9
  36. package/lib/components/button/Button.theme.js +138 -0
  37. package/lib/components/button/Button.vue.d.ts +49 -8
  38. package/lib/components/button/Button.vue.js +9 -0
  39. package/lib/components/button/Button.vue2.js +115 -0
  40. package/lib/components/button/Button.vue3.js +8 -0
  41. package/lib/components/button/ButtonGroup.theme.d.ts +12 -5
  42. package/lib/components/button/ButtonGroup.theme.js +8 -0
  43. package/lib/components/button/ButtonGroup.vue.d.ts +44 -6
  44. package/lib/components/button/ButtonGroup.vue.js +9 -0
  45. package/lib/components/button/ButtonGroup.vue2.js +54 -0
  46. package/lib/components/button/ButtonGroup.vue3.js +7 -0
  47. package/lib/components/button/index.d.ts +6 -0
  48. package/lib/components/card/Card.theme.d.ts +10 -7
  49. package/lib/components/card/Card.theme.js +8 -0
  50. package/lib/components/card/Card.vue.d.ts +17 -1
  51. package/lib/components/card/Card.vue.js +31 -0
  52. package/lib/components/card/Card.vue2.js +4 -0
  53. package/lib/components/card/index.d.ts +3 -0
  54. package/lib/components/checkbox/Checkbox.theme.d.ts +13 -10
  55. package/lib/components/checkbox/Checkbox.theme.js +52 -0
  56. package/lib/components/checkbox/Checkbox.vue.d.ts +46 -7
  57. package/lib/components/checkbox/Checkbox.vue.js +9 -0
  58. package/lib/components/checkbox/Checkbox.vue2.js +108 -0
  59. package/lib/components/checkbox/Checkbox.vue3.js +6 -0
  60. package/lib/components/checkbox/index.d.ts +3 -0
  61. package/lib/components/collapse/Collapse.theme.d.ts +10 -9
  62. package/lib/components/collapse/Collapse.theme.js +10 -0
  63. package/lib/components/collapse/Collapse.vue.d.ts +32 -2
  64. package/lib/components/collapse/Collapse.vue.js +132 -0
  65. package/lib/components/collapse/Collapse.vue2.js +4 -0
  66. package/lib/components/collapse/index.d.ts +3 -0
  67. package/lib/components/container/Container.theme.d.ts +10 -6
  68. package/lib/components/container/Container.theme.js +8 -0
  69. package/lib/components/container/Container.vue.d.ts +16 -1
  70. package/lib/components/container/Container.vue.js +30 -0
  71. package/lib/components/container/Container.vue2.js +4 -0
  72. package/lib/components/container/index.d.ts +3 -0
  73. package/lib/components/divider/Divider.theme.d.ts +10 -9
  74. package/lib/components/divider/Divider.theme.js +10 -0
  75. package/lib/components/divider/Divider.vue.d.ts +7 -1
  76. package/lib/components/divider/Divider.vue.js +53 -0
  77. package/lib/components/divider/Divider.vue2.js +4 -0
  78. package/lib/components/divider/index.d.ts +3 -0
  79. package/lib/components/drawer/Drawer.theme.d.ts +10 -7
  80. package/lib/components/drawer/Drawer.theme.js +9 -0
  81. package/lib/components/drawer/Drawer.vue.d.ts +50 -14
  82. package/lib/components/drawer/Drawer.vue.js +171 -0
  83. package/lib/components/drawer/Drawer.vue2.js +4 -0
  84. package/lib/components/drawer/index.d.ts +3 -0
  85. package/lib/components/form/Form.theme.d.ts +10 -6
  86. package/lib/components/form/Form.theme.js +8 -0
  87. package/lib/components/form/Form.vue.d.ts +34 -6
  88. package/lib/components/form/Form.vue.js +79 -0
  89. package/lib/components/form/Form.vue2.js +4 -0
  90. package/lib/components/form/index.d.ts +3 -0
  91. package/lib/components/helpers/InputError.d.ts +2 -2
  92. package/lib/components/helpers/InputError.js +18 -0
  93. package/lib/components/icon/Icon.theme.d.ts +10 -7
  94. package/lib/components/icon/Icon.theme.js +11 -0
  95. package/lib/components/icon/Icon.vue.d.ts +22 -4
  96. package/lib/components/icon/Icon.vue.js +74 -0
  97. package/lib/components/icon/Icon.vue2.js +4 -0
  98. package/lib/components/icon/index.d.ts +3 -0
  99. package/lib/components/image/Image.theme.d.ts +10 -6
  100. package/lib/components/image/Image.theme.js +8 -0
  101. package/lib/components/image/Image.vue.d.ts +6 -1
  102. package/lib/components/image/Image.vue.js +32 -0
  103. package/lib/components/image/Image.vue2.js +4 -0
  104. package/lib/components/image/index.d.ts +3 -0
  105. package/lib/components/index.d.ts +35 -45
  106. package/lib/components/index.js +92 -0
  107. package/lib/components/input/Input.theme.d.ts +12 -10
  108. package/lib/components/input/Input.theme.js +21 -0
  109. package/lib/components/input/Input.vue.d.ts +73 -22
  110. package/lib/components/input/Input.vue.js +140 -0
  111. package/lib/components/input/Input.vue2.js +4 -0
  112. package/lib/components/input/index.d.ts +3 -0
  113. package/lib/components/link/Link.theme.d.ts +10 -8
  114. package/lib/components/link/Link.theme.js +25 -0
  115. package/lib/components/link/Link.vue.d.ts +25 -2
  116. package/lib/components/link/Link.vue.js +9 -0
  117. package/lib/components/link/Link.vue2.js +48 -0
  118. package/lib/components/link/Link.vue3.js +8 -0
  119. package/lib/components/link/index.d.ts +3 -0
  120. package/lib/components/menu/Menu.theme.d.ts +10 -6
  121. package/lib/components/menu/Menu.theme.js +8 -0
  122. package/lib/components/menu/Menu.vue.d.ts +62 -9
  123. package/lib/components/menu/Menu.vue.js +133 -0
  124. package/lib/components/menu/Menu.vue2.js +4 -0
  125. package/lib/components/menu/MenuItem.theme.d.ts +13 -7
  126. package/lib/components/menu/MenuItem.theme.js +86 -0
  127. package/lib/components/menu/MenuItem.vue.d.ts +63 -14
  128. package/lib/components/menu/MenuItem.vue.js +9 -0
  129. package/lib/components/menu/MenuItem.vue2.js +143 -0
  130. package/lib/components/menu/MenuItem.vue3.js +7 -0
  131. package/lib/components/menu/index.d.ts +6 -0
  132. package/lib/components/modal/Modal.theme.d.ts +10 -13
  133. package/lib/components/modal/Modal.theme.js +17 -0
  134. package/lib/components/modal/Modal.vue.d.ts +24 -2
  135. package/lib/components/modal/Modal.vue.js +127 -0
  136. package/lib/components/modal/Modal.vue2.js +4 -0
  137. package/lib/components/modal/index.d.ts +3 -0
  138. package/lib/components/notifications/Notifications.theme.d.ts +10 -8
  139. package/lib/components/notifications/Notifications.theme.js +10 -0
  140. package/lib/components/notifications/Notifications.vue.d.ts +56 -16
  141. package/lib/components/notifications/Notifications.vue.js +234 -0
  142. package/lib/components/notifications/Notifications.vue2.js +4 -0
  143. package/lib/components/notifications/index.d.ts +3 -0
  144. package/lib/components/pagination/Pagination.theme.d.ts +10 -9
  145. package/lib/components/pagination/Pagination.theme.js +13 -0
  146. package/lib/components/pagination/Pagination.vue.d.ts +28 -5
  147. package/lib/components/pagination/Pagination.vue.js +131 -0
  148. package/lib/components/pagination/Pagination.vue2.js +4 -0
  149. package/lib/components/pagination/PaginationItem.theme.d.ts +10 -7
  150. package/lib/components/pagination/PaginationItem.theme.js +8 -0
  151. package/lib/components/pagination/PaginationItem.vue.d.ts +17 -2
  152. package/lib/components/pagination/PaginationItem.vue.js +48 -0
  153. package/lib/components/pagination/PaginationItem.vue2.js +4 -0
  154. package/lib/components/pagination/index.d.ts +6 -0
  155. package/lib/components/popover/Popover.theme.d.ts +10 -7
  156. package/lib/components/popover/Popover.theme.js +9 -0
  157. package/lib/components/popover/Popover.vue.d.ts +48 -10
  158. package/lib/components/popover/Popover.vue.js +9 -0
  159. package/lib/components/popover/Popover.vue2.js +106 -0
  160. package/lib/components/popover/Popover.vue3.js +15 -0
  161. package/lib/components/popover/PopoverContainer.theme.d.ts +10 -6
  162. package/lib/components/popover/PopoverContainer.theme.js +8 -0
  163. package/lib/components/popover/PopoverContainer.vue.d.ts +16 -1
  164. package/lib/components/popover/PopoverContainer.vue.js +30 -0
  165. package/lib/components/popover/PopoverContainer.vue2.js +4 -0
  166. package/lib/components/popover/index.d.ts +6 -0
  167. package/lib/components/progress/Progress.theme.d.ts +10 -10
  168. package/lib/components/progress/Progress.theme.js +18 -0
  169. package/lib/components/progress/Progress.vue.d.ts +21 -2
  170. package/lib/components/progress/Progress.vue.js +51 -0
  171. package/lib/components/progress/Progress.vue2.js +4 -0
  172. package/lib/components/progress/index.d.ts +3 -0
  173. package/lib/components/radio/Radio.theme.d.ts +13 -11
  174. package/lib/components/radio/Radio.theme.js +67 -0
  175. package/lib/components/radio/Radio.vue.d.ts +48 -9
  176. package/lib/components/radio/Radio.vue.js +9 -0
  177. package/lib/components/radio/Radio.vue2.js +117 -0
  178. package/lib/components/radio/Radio.vue3.js +10 -0
  179. package/lib/components/radio/index.d.ts +3 -0
  180. package/lib/components/scroll/Scroll.theme.d.ts +10 -6
  181. package/lib/components/scroll/Scroll.theme.js +8 -0
  182. package/lib/components/scroll/Scroll.vue.d.ts +20 -2
  183. package/lib/components/scroll/Scroll.vue.js +9 -0
  184. package/lib/components/scroll/Scroll.vue2.js +64 -0
  185. package/lib/components/scroll/Scroll.vue3.js +17 -0
  186. package/lib/components/scroll/index.d.ts +3 -0
  187. package/lib/components/select/Select.theme.d.ts +13 -12
  188. package/lib/components/select/Select.theme.js +23 -0
  189. package/lib/components/select/Select.vue.d.ts +44 -8
  190. package/lib/components/select/Select.vue.js +269 -0
  191. package/lib/components/select/Select.vue2.js +4 -0
  192. package/lib/components/select/index.d.ts +3 -0
  193. package/lib/components/skeleton/Skeleton.theme.d.ts +10 -6
  194. package/lib/components/skeleton/Skeleton.theme.js +8 -0
  195. package/lib/components/skeleton/Skeleton.vue.d.ts +9 -1
  196. package/lib/components/skeleton/Skeleton.vue.js +30 -0
  197. package/lib/components/skeleton/Skeleton.vue2.js +4 -0
  198. package/lib/components/skeleton/index.d.ts +3 -0
  199. package/lib/components/slider/Slider.theme.d.ts +10 -10
  200. package/lib/components/slider/Slider.theme.js +20 -0
  201. package/lib/components/slider/Slider.vue.d.ts +55 -7
  202. package/lib/components/slider/Slider.vue.js +148 -0
  203. package/lib/components/slider/Slider.vue2.js +4 -0
  204. package/lib/components/slider/index.d.ts +2 -0
  205. package/lib/components/spacer/Spacer.d.ts +1 -1
  206. package/lib/components/spacer/Spacer.js +12 -0
  207. package/lib/components/spacer/index.d.ts +1 -0
  208. package/lib/components/spinner/Spinner.vue.d.ts +14 -1
  209. package/lib/components/spinner/Spinner.vue.js +28 -0
  210. package/lib/components/spinner/Spinner.vue2.js +4 -0
  211. package/lib/components/spinner/index.d.ts +2 -0
  212. package/lib/components/tab/Tab.theme.d.ts +12 -9
  213. package/lib/components/tab/Tab.theme.js +13 -0
  214. package/lib/components/tab/Tab.vue.d.ts +44 -9
  215. package/lib/components/tab/Tab.vue.js +129 -0
  216. package/lib/components/tab/Tab.vue2.js +4 -0
  217. package/lib/components/tab/TabGroup.theme.d.ts +10 -10
  218. package/lib/components/tab/TabGroup.theme.js +27 -0
  219. package/lib/components/tab/TabGroup.vue.d.ts +61 -9
  220. package/lib/components/tab/TabGroup.vue.js +133 -0
  221. package/lib/components/tab/TabGroup.vue2.js +4 -0
  222. package/lib/components/tab/index.d.ts +4 -0
  223. package/lib/components/table/Table.theme.d.ts +10 -8
  224. package/lib/components/table/Table.theme.js +12 -0
  225. package/lib/components/table/Table.vue.d.ts +269 -51
  226. package/lib/components/table/Table.vue.js +147 -0
  227. package/lib/components/table/Table.vue2.js +4 -0
  228. package/lib/components/table/TableBody.d.ts +1 -1
  229. package/lib/components/table/TableBody.js +15 -0
  230. package/lib/components/table/TableCell.theme.d.ts +10 -7
  231. package/lib/components/table/TableCell.theme.js +11 -0
  232. package/lib/components/table/TableCell.vue.d.ts +35 -6
  233. package/lib/components/table/TableCell.vue.js +43 -0
  234. package/lib/components/table/TableCell.vue2.js +4 -0
  235. package/lib/components/table/TableHead.d.ts +1 -1
  236. package/lib/components/table/TableHead.js +19 -0
  237. package/lib/components/table/TableHeader.vue.d.ts +34 -9
  238. package/lib/components/table/TableHeader.vue.js +78 -0
  239. package/lib/components/table/TableHeader.vue2.js +4 -0
  240. package/lib/components/table/TableRow.vue.d.ts +8 -1
  241. package/lib/components/table/TableRow.vue.js +32 -0
  242. package/lib/components/table/TableRow.vue2.js +4 -0
  243. package/lib/components/table/index.d.ts +9 -0
  244. package/lib/components/tag/Tag.theme.d.ts +10 -9
  245. package/lib/components/tag/Tag.theme.js +23 -0
  246. package/lib/components/tag/Tag.vue.d.ts +31 -4
  247. package/lib/components/tag/Tag.vue.js +61 -0
  248. package/lib/components/tag/Tag.vue2.js +4 -0
  249. package/lib/components/tag/index.d.ts +2 -0
  250. package/lib/components/textarea/Textarea.theme.d.ts +13 -9
  251. package/lib/components/textarea/Textarea.theme.js +16 -0
  252. package/lib/components/textarea/Textarea.vue.d.ts +59 -17
  253. package/lib/components/textarea/Textarea.vue.js +110 -0
  254. package/lib/components/textarea/Textarea.vue2.js +4 -0
  255. package/lib/components/textarea/index.d.ts +2 -0
  256. package/lib/components/toggle/Toggle.theme.d.ts +10 -11
  257. package/lib/components/toggle/Toggle.theme.js +29 -0
  258. package/lib/components/toggle/Toggle.vue.d.ts +39 -7
  259. package/lib/components/toggle/Toggle.vue.js +110 -0
  260. package/lib/components/toggle/Toggle.vue2.js +4 -0
  261. package/lib/components/toggle/index.d.ts +2 -0
  262. package/lib/components/tooltip/Tooltip.vue.d.ts +12 -1
  263. package/lib/components/tooltip/Tooltip.vue.js +27 -0
  264. package/lib/components/tooltip/Tooltip.vue2.js +4 -0
  265. package/lib/components/tooltip/index.d.ts +2 -0
  266. package/lib/composables/colors-utils.js +19 -0
  267. package/lib/composables/colors.d.ts +6 -4
  268. package/lib/composables/colors.js +52 -0
  269. package/lib/composables/common.d.ts +1 -1
  270. package/lib/composables/common.js +17 -0
  271. package/lib/composables/css.d.ts +1 -1
  272. package/lib/composables/css.js +26 -0
  273. package/lib/composables/inputtable.d.ts +4 -4
  274. package/lib/composables/inputtable.js +78 -0
  275. package/lib/composables/interactive.js +17 -0
  276. package/lib/composables/keys.d.ts +6 -3
  277. package/lib/composables/keys.js +10 -0
  278. package/lib/composables/notifications.d.ts +1 -1
  279. package/lib/composables/notifications.js +9 -0
  280. package/lib/composables/theme.d.ts +13 -7
  281. package/lib/composables/theme.js +59 -0
  282. package/lib/create.d.ts +1 -1
  283. package/lib/create.js +19 -0
  284. package/lib/index.js +121 -0
  285. package/lib/index.umd.js +1 -0
  286. package/lib/install.js +10 -0
  287. package/lib/node_modules/.pnpm/@vueuse_core@10.2.0_vue@3.3.4/node_modules/@vueuse/core/index.js +379 -0
  288. package/lib/node_modules/.pnpm/@vueuse_shared@10.2.0_vue@3.3.4/node_modules/@vueuse/shared/index.js +90 -0
  289. package/lib/version.d.ts +1 -1
  290. package/lib/version.js +4 -0
  291. package/package.json +54 -54
  292. package/src/common/utils.ts +25 -2
  293. package/src/components/alert/Alert.theme.ts +15 -6
  294. package/src/components/alert/Alert.vue +26 -13
  295. package/src/components/alert/index.ts +3 -0
  296. package/src/components/avatar/Avatar.theme.ts +16 -4
  297. package/src/components/avatar/Avatar.vue +20 -15
  298. package/src/components/avatar/index.ts +3 -0
  299. package/src/components/badge/Badge.theme.ts +13 -3
  300. package/src/components/badge/Badge.vue +30 -15
  301. package/src/components/badge/index.ts +3 -0
  302. package/src/components/breadcrumbs/Breadcrumbs.theme.ts +12 -2
  303. package/src/components/breadcrumbs/Breadcrumbs.vue +24 -21
  304. package/src/components/breadcrumbs/index.ts +3 -0
  305. package/src/components/button/Button.theme.ts +23 -19
  306. package/src/components/button/Button.vue +30 -19
  307. package/src/components/button/ButtonGroup.theme.ts +14 -1
  308. package/src/components/button/ButtonGroup.vue +33 -19
  309. package/src/components/button/index.ts +7 -0
  310. package/src/components/card/Card.theme.ts +13 -3
  311. package/src/components/card/Card.vue +12 -7
  312. package/src/components/card/index.ts +3 -0
  313. package/src/components/checkbox/Checkbox.theme.ts +19 -7
  314. package/src/components/checkbox/Checkbox.vue +21 -12
  315. package/src/components/checkbox/index.ts +3 -0
  316. package/src/components/collapse/Collapse.theme.ts +13 -3
  317. package/src/components/collapse/Collapse.vue +28 -24
  318. package/src/components/collapse/index.ts +3 -0
  319. package/src/components/container/Container.theme.ts +12 -2
  320. package/src/components/container/Container.vue +11 -6
  321. package/src/components/container/index.ts +3 -0
  322. package/src/components/divider/Divider.theme.ts +13 -3
  323. package/src/components/divider/Divider.vue +9 -4
  324. package/src/components/divider/index.ts +3 -0
  325. package/src/components/drawer/Drawer.theme.ts +12 -2
  326. package/src/components/drawer/Drawer.vue +50 -41
  327. package/src/components/drawer/index.ts +3 -0
  328. package/src/components/form/Form.theme.ts +12 -2
  329. package/src/components/form/Form.vue +40 -31
  330. package/src/components/form/index.ts +3 -0
  331. package/src/components/helpers/InputError.tsx +2 -2
  332. package/src/components/icon/Icon.theme.ts +13 -3
  333. package/src/components/icon/Icon.vue +24 -15
  334. package/src/components/icon/__tests__/Icon.spec.ts +5 -1
  335. package/src/components/icon/index.ts +3 -0
  336. package/src/components/image/Image.theme.ts +12 -2
  337. package/src/components/image/Image.vue +8 -4
  338. package/src/components/image/index.ts +3 -0
  339. package/src/components/index.ts +35 -45
  340. package/src/components/input/Input.theme.ts +17 -6
  341. package/src/components/input/Input.vue +33 -22
  342. package/src/components/input/index.ts +3 -0
  343. package/src/components/link/Link.theme.ts +13 -3
  344. package/src/components/link/Link.vue +20 -12
  345. package/src/components/link/index.ts +3 -0
  346. package/src/components/menu/Menu.theme.ts +12 -2
  347. package/src/components/menu/Menu.vue +59 -23
  348. package/src/components/menu/MenuItem.theme.ts +17 -5
  349. package/src/components/menu/MenuItem.vue +65 -52
  350. package/src/components/menu/index.ts +7 -0
  351. package/src/components/modal/Modal.theme.ts +13 -3
  352. package/src/components/modal/Modal.vue +23 -12
  353. package/src/components/modal/index.ts +3 -0
  354. package/src/components/notifications/Notifications.theme.ts +12 -2
  355. package/src/components/notifications/Notifications.vue +53 -49
  356. package/src/components/notifications/index.ts +9 -0
  357. package/src/components/pagination/Pagination.theme.ts +15 -5
  358. package/src/components/pagination/Pagination.vue +24 -18
  359. package/src/components/pagination/PaginationItem.theme.ts +13 -3
  360. package/src/components/pagination/PaginationItem.vue +14 -10
  361. package/src/components/pagination/index.ts +7 -0
  362. package/src/components/popover/Popover.theme.ts +12 -2
  363. package/src/components/popover/Popover.vue +56 -46
  364. package/src/components/popover/PopoverContainer.theme.ts +12 -2
  365. package/src/components/popover/PopoverContainer.vue +11 -6
  366. package/src/components/popover/index.ts +7 -0
  367. package/src/components/progress/Progress.theme.ts +14 -4
  368. package/src/components/progress/Progress.vue +16 -16
  369. package/src/components/progress/index.ts +3 -0
  370. package/src/components/radio/Radio.theme.ts +19 -7
  371. package/src/components/radio/Radio.vue +24 -14
  372. package/src/components/radio/index.ts +3 -0
  373. package/src/components/scroll/Scroll.theme.ts +12 -2
  374. package/src/components/scroll/Scroll.vue +37 -26
  375. package/src/components/scroll/index.ts +3 -0
  376. package/src/components/select/Select.theme.ts +20 -6
  377. package/src/components/select/Select.vue +28 -20
  378. package/src/components/select/index.ts +3 -0
  379. package/src/components/skeleton/Skeleton.theme.ts +12 -2
  380. package/src/components/skeleton/Skeleton.vue +11 -6
  381. package/src/components/skeleton/index.ts +3 -0
  382. package/src/components/slider/Slider.theme.ts +14 -4
  383. package/src/components/slider/Slider.vue +24 -16
  384. package/src/components/slider/index.ts +2 -0
  385. package/src/components/spacer/index.ts +1 -0
  386. package/src/components/spinner/Spinner.vue +18 -8
  387. package/src/components/spinner/index.ts +2 -0
  388. package/src/components/tab/Tab.theme.ts +15 -3
  389. package/src/components/tab/Tab.vue +85 -68
  390. package/src/components/tab/TabGroup.theme.ts +15 -5
  391. package/src/components/tab/TabGroup.vue +67 -22
  392. package/src/components/tab/index.ts +5 -0
  393. package/src/components/table/Table.theme.ts +14 -4
  394. package/src/components/table/Table.vue +41 -31
  395. package/src/components/table/TableCell.theme.ts +13 -3
  396. package/src/components/table/TableCell.vue +22 -16
  397. package/src/components/table/TableHeader.vue +20 -17
  398. package/src/components/table/TableRow.vue +1 -1
  399. package/src/components/table/index.ts +10 -0
  400. package/src/components/tag/Tag.theme.ts +14 -4
  401. package/src/components/tag/Tag.vue +22 -13
  402. package/src/components/tag/index.ts +2 -0
  403. package/src/components/textarea/Textarea.theme.ts +18 -30
  404. package/src/components/textarea/Textarea.vue +28 -19
  405. package/src/components/textarea/index.ts +2 -0
  406. package/src/components/toggle/Toggle.theme.ts +16 -6
  407. package/src/components/toggle/Toggle.vue +21 -12
  408. package/src/components/toggle/index.ts +2 -0
  409. package/src/components/tooltip/Tooltip.vue +5 -0
  410. package/src/components/tooltip/index.ts +2 -0
  411. package/src/composables/colors-utils.ts +4 -346
  412. package/src/composables/colors.ts +21 -17
  413. package/src/composables/common.ts +1 -1
  414. package/src/composables/css.ts +4 -4
  415. package/src/composables/inputtable.ts +8 -8
  416. package/src/composables/interactive.ts +2 -2
  417. package/src/composables/keys.ts +6 -3
  418. package/src/composables/theme.ts +30 -27
  419. package/src/create.ts +6 -7
  420. package/src/version.ts +1 -1
  421. package/volar.d.ts +0 -2
  422. package/lib/components/tooltip/Tooltip.theme.d.ts +0 -11
  423. package/lib/index.cjs.js +0 -1
  424. package/lib/index.es.js +0 -7184
  425. package/lib/nuxt.js +0 -33
  426. package/src/components/tooltip/Tooltip.theme.ts +0 -51
  427. package/src/exports/nuxt.plugin.js +0 -8
  428. package/src/exports/tailwind.preset.js +0 -55
  429. /package/{lib → exports}/tailwind.preset.js +0 -0
@@ -1,23 +1,8 @@
1
1
  <script lang="ts">
2
- export default { name: 'XMenu' }
3
- </script>
4
-
5
- <script setup lang="ts">
6
- import type { PropType } from 'vue'
7
- import { useCommon } from '../../composables/common'
8
- import { useColors } from '../../composables/colors'
9
- import { useTheme } from '../../composables/theme'
10
-
11
- import XMenuItem from './MenuItem.vue'
12
- import XCollapse from '../../components/collapse/Collapse.vue'
13
- import XDivider from '../../components/divider/Divider.vue'
14
-
15
- import theme from './Menu.theme'
16
-
17
- const props = defineProps({
2
+ const menuProps = {
18
3
  ...useCommon.props(),
19
4
  ...useColors.props('primary'),
20
- items: Array as PropType<Array<any>>,
5
+ items: Array as PropType<MenuArrayItem[]>,
21
6
  collapsible: {
22
7
  type: Boolean,
23
8
  default: true,
@@ -33,7 +18,56 @@ const props = defineProps({
33
18
  type: Boolean,
34
19
  default: true,
35
20
  },
36
- })
21
+ }
22
+
23
+ export type MenuArrayItem = {
24
+ collapsible?: boolean;
25
+ collapseIcon?: string;
26
+ expanded?: boolean;
27
+ divider?: boolean;
28
+ items?: MenuArrayItem[];
29
+ value?: string | number;
30
+ to?: string | object;
31
+ href?: string;
32
+ target?: string;
33
+ exact?: boolean;
34
+ color?: string;
35
+ size?: Size;
36
+ label?: string;
37
+ icon?: string;
38
+ iconRight?: string;
39
+ loading?: boolean;
40
+ rounded?: boolean;
41
+ filled?: boolean;
42
+ disabled?: boolean;
43
+ active?: boolean;
44
+ attrs?: Record<string, unknown>;
45
+ onClick?: (e: MouseEvent) => void;
46
+ }
47
+
48
+ export type MenuProps = ExtractPublicPropTypes<typeof menuProps>
49
+
50
+ export default {
51
+ name: 'XMenu',
52
+ validators: {
53
+ ...useCommon.validators(),
54
+ },
55
+ }
56
+ </script>
57
+
58
+ <script setup lang="ts">
59
+ import type { ExtractPublicPropTypes, PropType } from 'vue'
60
+ import { useCommon, type Size } from '../../composables/common'
61
+ import { useColors } from '../../composables/colors'
62
+ import { useTheme } from '../../composables/theme'
63
+
64
+ import XMenuItem from './MenuItem.vue'
65
+ import XCollapse from '../../components/collapse/Collapse.vue'
66
+ import XDivider from '../../components/divider/Divider.vue'
67
+
68
+ import theme from './Menu.theme'
69
+
70
+ const props = defineProps(menuProps)
37
71
 
38
72
  const emit = defineEmits(['expand'])
39
73
 
@@ -57,16 +91,17 @@ const { styles, classes, className } = useTheme('menu', theme, props)
57
91
  :icon="item.collapseIcon || collapseIcon"
58
92
  :expanded="item.expanded || expanded"
59
93
  :disabled="disabled || item.disabled"
94
+ :show-icon="!!(item.collapseIcon || collapseIcon)"
60
95
  class="x-menu-inner space-y-1"
61
96
  @expand="$emit('expand')"
62
97
  >
63
98
  <template #default="{ }">
64
99
  <x-menu-item
65
100
  :item="item"
101
+ :rounded="rounded"
66
102
  :color="item.color || color"
103
+ :filled="item.filled || filled"
67
104
  :size="item.size || size"
68
- :rounded="rounded"
69
- :filled="filled"
70
105
  :disabled="disabled || item.disabled"
71
106
  class="pr-10 font-medium"
72
107
  />
@@ -93,6 +128,7 @@ const { styles, classes, className } = useTheme('menu', theme, props)
93
128
  :item="item"
94
129
  :rounded="rounded"
95
130
  :color="item.color || color"
131
+ :filled="item.filled || filled"
96
132
  :size="item.size || size"
97
133
  :disabled="disabled || item.disabled"
98
134
  class="font-medium"
@@ -118,12 +154,12 @@ const { styles, classes, className } = useTheme('menu', theme, props)
118
154
  <x-divider v-if="item.divider"/>
119
155
  <x-menu-item
120
156
  v-else
157
+ :item="item"
158
+ :rounded="rounded"
121
159
  :color="item.color || color"
160
+ :filled="item.filled || filled"
122
161
  :size="item.size || size"
123
- :item="item"
124
162
  :disabled="disabled || item.disabled"
125
- :filled="filled"
126
- :rounded="rounded"
127
163
  :class="{ 'my-2': item.divider }"
128
164
  @active="$emit('expand')"
129
165
  />
@@ -1,13 +1,23 @@
1
- import type { ThemeParams } from '../../composables/theme'
1
+ import type { Ref } from 'vue'
2
+ import type { ThemeClasses, ThemeComponent } from '../../composables/theme'
3
+ import type { MenuItemProps } from './MenuItem.vue'
2
4
 
3
- export default {
5
+ type InternalClasses = 'wrapper'
6
+ type InternalExtraData = { isActive: Ref<boolean>; }
7
+
8
+ interface InternalTheme extends ThemeComponent<MenuItemProps, InternalClasses, InternalExtraData> {}
9
+ export interface MenuItemTheme extends Omit<InternalTheme, 'classes'> {
10
+ classes?: Partial<ThemeClasses<MenuItemProps, InternalClasses, InternalExtraData>>;
11
+ }
12
+
13
+ const theme: InternalTheme = {
4
14
  classes: {
5
- wrapper: ({ props, data }: ThemeParams) => {
15
+ wrapper: ({ props, data }) => {
6
16
  const classes: any[] = ['relative !flex items-center whitespace-nowrap px-3']
7
17
 
8
18
  classes.push({
9
19
  'font-medium': data.isActive,
10
- 'cursor-pointer': !props.disabled && !props.inactive,
20
+ 'cursor-pointer': !props.disabled,
11
21
 
12
22
  // size
13
23
  'py-1 text-xs': props.size === 'xs',
@@ -23,7 +33,7 @@ export default {
23
33
  },
24
34
  },
25
35
 
26
- styles: ({ colors, props, css, data }: ThemeParams) => {
36
+ styles: ({ colors, props, css, data }) => {
27
37
  const color = colors.getPalette(props.color || 'gray')
28
38
  const gray = colors.getPalette('gray')
29
39
 
@@ -105,3 +115,5 @@ export default {
105
115
  })
106
116
  },
107
117
  }
118
+
119
+ export default theme
@@ -1,25 +1,9 @@
1
1
  <script lang="ts">
2
- export default { name: 'XMenuItem' }
3
- </script>
4
-
5
- <script setup lang="ts">
6
- import { ref, computed, watch, onMounted } from 'vue'
7
- import { useMutationObserver } from '@vueuse/core'
8
- import { useColors } from '../../composables/colors'
9
- import { useCommon } from '../../composables/common'
10
- import { useTheme } from '../../composables/theme'
11
-
12
- import XIcon from '../../components/icon/Icon.vue'
13
- import XSpinner from '../../components/spinner/Spinner.vue'
14
- import XLink from '../../components/link/Link.vue'
15
-
16
- import theme from './MenuItem.theme'
17
-
18
- const props = defineProps({
2
+ const menuItemProps = {
19
3
  ...useCommon.props(),
20
4
  ...useColors.props('primary'),
21
5
  item: {
22
- type: Object,
6
+ type: Object as PropType<MenuArrayItem>,
23
7
  default: () => {},
24
8
  },
25
9
  active: Boolean,
@@ -28,8 +12,7 @@ const props = defineProps({
28
12
  default: () => {},
29
13
  },
30
14
  onClick: Function,
31
- inactive: Boolean,
32
- value: [Number,String],
15
+ value: [Number, String],
33
16
  to: String,
34
17
  exact: Boolean,
35
18
  href: String,
@@ -48,50 +31,80 @@ const props = defineProps({
48
31
  },
49
32
  selected: Boolean,
50
33
  disabled: Boolean,
51
- })
34
+ }
35
+
36
+ export type MenuItemProps = ExtractPublicPropTypes<typeof menuItemProps>
37
+
38
+ export default {
39
+ name: 'XMenuItem',
40
+ validators: {
41
+ ...useCommon.validators(),
42
+ },
43
+ }
44
+ </script>
45
+
46
+ <script setup lang="ts">
47
+ import { ref, computed, watch, onMounted, type ExtractPublicPropTypes, type PropType } from 'vue'
48
+ import { useMutationObserver } from '@vueuse/core'
49
+ import { useColors } from '../../composables/colors'
50
+ import { useCommon } from '../../composables/common'
51
+ import { useTheme } from '../../composables/theme'
52
+
53
+ import XIcon from '../../components/icon/Icon.vue'
54
+ import XSpinner from '../../components/spinner/Spinner.vue'
55
+
56
+ import theme from './MenuItem.theme'
57
+ import type { MenuArrayItem } from './Menu.vue'
58
+
59
+ const props = defineProps(menuItemProps)
52
60
 
53
61
  const emit = defineEmits(['active', 'click'])
54
62
 
55
63
  const elRef = ref()
56
64
  const isActive = ref(false)
57
65
 
58
- const cItem = computed(() => ({
66
+ const computedProps = computed(() => ({
59
67
  ...props,
60
68
  ...props.item,
61
- }))
69
+ } as MenuItemProps))
62
70
 
63
- const htmlTag = computed(() => cItem.value.to || cItem.value.href ? XLink : 'div')
71
+ const htmlTag = computed(() => {
72
+ if (computedProps.value.to) return 'router-link'
73
+ if (computedProps.value.href) return 'a'
74
+
75
+ return 'div'
76
+ })
64
77
 
65
78
  onMounted(() => {
66
79
  if (!elRef.value) return
67
80
 
68
81
  check()
69
82
 
70
- if (htmlTag.value === XLink) useMutationObserver(elRef.value.$el, check, {
83
+ if (htmlTag.value === 'router-link') useMutationObserver(elRef.value.$el, check, {
71
84
  attributes: true,
72
85
  attributeFilter: ['class'],
73
86
  })
74
87
  })
75
88
 
76
89
  function onItemClick(e: Event) {
77
- if (cItem.value.disabled) {
90
+ if (computedProps.value.disabled) {
78
91
  e.stopPropagation()
79
92
  e.preventDefault()
80
93
 
81
94
  return
82
95
  }
83
96
 
84
- cItem.value.onClick && cItem.value.onClick(e)
97
+ computedProps.value.onClick && computedProps.value.onClick(e)
85
98
  emit('click', e)
86
99
  }
87
100
 
88
101
  function check() {
89
- if (elRef.value && elRef.value.$el && (cItem.value.href || cItem.value.to)) {
90
- const active = elRef.value.$el.classList.contains(cItem.value.exact ? 'router-link-exact-active' : 'router-link-active') || false
102
+ if (elRef.value && elRef.value.$el && (computedProps.value.href || computedProps.value.to)) {
103
+ const active = elRef.value.$el.classList.contains(computedProps.value.exact ? 'router-link-exact-active' : 'router-link-active') || false
91
104
 
92
105
  isActive.value = active
93
106
  } else {
94
- isActive.value = cItem.value.active
107
+ isActive.value = !!computedProps.value.active
95
108
  }
96
109
  }
97
110
 
@@ -99,15 +112,10 @@ watch(() => isActive.value, (val) => {
99
112
  if (val) emit('active')
100
113
  })
101
114
 
102
- watch(() => cItem.value.active, (val) => {
103
- isActive.value = val
115
+ watch(() => computedProps.value.active, (val) => {
116
+ isActive.value = !!val
104
117
  })
105
118
 
106
- const computedProps = computed(() => ({
107
- ...cItem.value,
108
- filled: props.filled || props.item?.filled,
109
- }))
110
-
111
119
  const { styles, classes, className } = useTheme('menu-item', theme, computedProps, { isActive })
112
120
  </script>
113
121
 
@@ -115,10 +123,11 @@ const { styles, classes, className } = useTheme('menu-item', theme, computedProp
115
123
  <component
116
124
  :is="htmlTag"
117
125
  ref="elRef"
118
- v-bind="cItem.attrs"
119
- :to="cItem.to"
120
- :target="cItem.target"
121
- :color="cItem.color"
126
+ v-bind="computedProps.attrs"
127
+ :to="computedProps.to"
128
+ :href="computedProps.href"
129
+ :target="computedProps.target"
130
+ :color="computedProps.color"
122
131
  :style="styles"
123
132
  :class="[
124
133
  className,
@@ -129,38 +138,38 @@ const { styles, classes, className } = useTheme('menu-item', theme, computedProp
129
138
  'flex items-center': $slots.prefix || $slots.suffix
130
139
  }
131
140
  ]"
132
- :title="cItem.label"
133
- :alt="cItem.label"
141
+ :title="computedProps.label"
142
+ :alt="computedProps.label"
134
143
  @click="onItemClick"
135
144
  >
136
145
  <span v-if="$slots.prefix" class="mr-2 shrink-0">
137
146
  <slot name="prefix"></slot>
138
147
  </span>
139
- <x-icon v-else-if="cItem.icon" :size="cItem.size" :icon="cItem.icon" class="mr-2"/>
148
+ <x-icon v-else-if="computedProps.icon" :size="computedProps.size" :icon="computedProps.icon" class="mr-2"/>
140
149
 
141
150
  <span class="flex-1 truncate">
142
- <slot>{{ cItem.label }}</slot>
151
+ <slot>{{ computedProps.label }}</slot>
143
152
  </span>
144
153
 
145
154
  <span class="ml-1 shrink-0">
146
- <x-spinner v-if="cItem.loading" :size="cItem.size" />
155
+ <x-spinner v-if="computedProps.loading" :size="computedProps.size" />
147
156
  <template v-else>
148
157
  <span v-if="$slots.suffix">
149
158
  <slot name="suffix"></slot>
150
159
  </span>
151
- <x-icon v-else-if="cItem.iconRight" :size="cItem.size" :icon="cItem.iconRight"/>
160
+ <x-icon v-else-if="computedProps.iconRight" :size="computedProps.size" :icon="computedProps.iconRight"/>
152
161
  </template>
153
162
  </span>
154
163
  </component>
155
164
  </template>
156
165
 
157
166
  <style lang="postcss" module scoped>
158
- .menu-item, .menu-item.x-link {
167
+ .menu-item {
159
168
  color: var(--x-menu-item-text);
160
169
  background-color: var(--x-menu-item-bg);
161
170
 
162
- &:before {
163
- content: '';
171
+ &::before {
172
+ content: "";
164
173
  position: absolute;
165
174
  left: -1px;
166
175
  height: 100%;
@@ -173,9 +182,11 @@ const { styles, classes, className } = useTheme('menu-item', theme, computedProp
173
182
  background-color: var(--x-menu-item-bg-hover, var(--x-menu-item-bg));
174
183
  }
175
184
 
176
- :global(.dark) &, &:global(.dark) {
185
+ :global(.dark) &,
186
+ &:global(.dark) {
177
187
  color: var(--x-menu-item-dark-text);
178
188
  background: var(--x-menu-item-dark-bg);
189
+
179
190
  &:hover {
180
191
  color: var(--x-menu-item-dark-text-hover, var(--x-menu-item-dark-text));
181
192
  background-color: var(--x-menu-item-dark-bg-hover, var(--x-menu-item-dark-bg));
@@ -184,8 +195,10 @@ const { styles, classes, className } = useTheme('menu-item', theme, computedProp
184
195
  }
185
196
 
186
197
  :global(.x-menu-inner) {
198
+ /* stylelint-disable-next-line no-descending-specificity */
187
199
  .menu-item {
188
- &:hover:before, &--active:before {
200
+ &:hover::before,
201
+ &--active::before {
189
202
  background-color: var(--x-menu-item-border-hover);
190
203
  }
191
204
  }
@@ -0,0 +1,7 @@
1
+ export { default as XMenu } from './Menu.vue'
2
+ export type { MenuProps, MenuArrayItem } from './Menu.vue'
3
+ export type { MenuTheme } from './Menu.theme'
4
+
5
+ export { default as XMenuItem } from './MenuItem.vue'
6
+ export type { MenuItemProps } from './MenuItem.vue'
7
+ export type { MenuItemTheme } from './MenuItem.theme'
@@ -1,12 +1,20 @@
1
- import type { ThemeParams } from '../../composables/theme'
1
+ import type { ThemeClasses, ThemeComponent } from '../../composables/theme'
2
+ import type { ModalProps } from './Modal.vue'
2
3
 
3
- export default {
4
+ type InternalClasses = 'wrapper' | 'backdrop' | 'modal' | 'closeIcon' | 'header' | 'content' | 'actions'
5
+
6
+ interface InternalTheme extends ThemeComponent<ModalProps, InternalClasses> {}
7
+ export interface ModalTheme extends Omit<InternalTheme, 'classes'> {
8
+ classes?: Partial<ThemeClasses<ModalProps, InternalClasses>>;
9
+ }
10
+
11
+ const theme: InternalTheme = {
4
12
  classes: {
5
13
  wrapper: 'fixed z-40 inset-0 overflow-y-auto transition-all',
6
14
 
7
15
  backdrop: 'fixed inset-0 bg-gray-500 dark:bg-black transition-opacity',
8
16
 
9
- modal: ({ props }: ThemeParams) => {
17
+ modal: ({ props }) => {
10
18
  let c = 'relative flex flex-col z-10 bg-white dark:bg-gray-900 rounded-md shadow-lg transform transition-all overflow-hidden max-h-full w-full'
11
19
 
12
20
  if (props.size === 'xs') c += ' sm:max-w-xs'
@@ -27,3 +35,5 @@ export default {
27
35
  actions: 'bg-slate-50 dark:bg-gray-800 p-4',
28
36
  },
29
37
  }
38
+
39
+ export default theme
@@ -1,9 +1,28 @@
1
1
  <script lang="ts">
2
- export default { name: 'XModal' }
2
+ const modalSize = ['xs', 'sm', 'md', 'lg', 'xl', 'full'] as const
3
+ const modalProps = {
4
+ size: {
5
+ type: String as PropType<ModalSize>,
6
+ default: 'md',
7
+ },
8
+ modelValue: Boolean,
9
+ showClose: Boolean,
10
+ backdrop: Boolean,
11
+ }
12
+
13
+ export type ModalSize = typeof modalSize[number]
14
+ export type ModalProps = ExtractPublicPropTypes<typeof modalProps>
15
+
16
+ export default {
17
+ name: 'XModal',
18
+ validators: {
19
+ size: modalSize,
20
+ },
21
+ }
3
22
  </script>
4
23
 
5
24
  <script setup lang="ts">
6
- import { ref, watch, type PropType } from 'vue'
25
+ import { ref, watch, type PropType, type ExtractPublicPropTypes } from 'vue'
7
26
  import { onClickOutside, useEventListener } from '@vueuse/core'
8
27
  import { useTheme } from '../../composables/theme'
9
28
  import { closeIcon } from '../../common/icons'
@@ -13,15 +32,7 @@ import theme from './Modal.theme'
13
32
  import XScroll from '../../components/scroll/Scroll.vue'
14
33
  import XIcon from '../icon/Icon.vue'
15
34
 
16
- const props = defineProps({
17
- size: {
18
- type: String as PropType<'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full'>,
19
- default: 'md',
20
- },
21
- modelValue: Boolean,
22
- showClose: Boolean,
23
- backdrop: Boolean,
24
- })
35
+ const props = defineProps(modalProps)
25
36
 
26
37
  const emit = defineEmits(['update:modelValue'])
27
38
 
@@ -29,7 +40,7 @@ const value = ref(props.modelValue)
29
40
  const visible = ref(false)
30
41
  const modalRef = ref<HTMLElement | null>(null)
31
42
 
32
- let stopClickOutside: undefined | (()=> void) = undefined
43
+ let stopClickOutside: undefined | (() => void) = undefined
33
44
 
34
45
  watch(value, (val) => {
35
46
  if (stopClickOutside) {
@@ -0,0 +1,3 @@
1
+ export { default as XModal } from './Modal.vue'
2
+ export type { ModalProps, ModalSize } from './Modal.vue'
3
+ export type { ModalTheme } from './Modal.theme'
@@ -1,6 +1,14 @@
1
- import type { ThemeParams } from '../../composables/theme'
1
+ import type { ThemeClasses, ThemeComponent } from '../../composables/theme'
2
+ import type { NotificationsProps } from './Notifications.vue'
2
3
 
3
- export default {
4
+ type InternalClasses = 'wrapper' | 'list' | 'item'
5
+
6
+ interface InternalTheme extends ThemeComponent<NotificationsProps, InternalClasses> {}
7
+ export interface NotificationsTheme extends Omit<InternalTheme, 'classes'> {
8
+ classes?: Partial<ThemeClasses<NotificationsProps, InternalClasses>>;
9
+ }
10
+
11
+ const theme: InternalTheme = {
4
12
  classes: {
5
13
  wrapper: 'fixed z-40 w-full sm:w-auto overflow-y-auto max-h-screen',
6
14
 
@@ -9,3 +17,5 @@ export default {
9
17
  item: 'w-full flex items-center rounded-md px-4 py-3 bg-gray-800 dark:bg-gray-50 text-white dark:text-gray-900 border border-gray-700 dark:border-gray-100',
10
18
  },
11
19
  }
20
+
21
+ export default theme
@@ -1,7 +1,56 @@
1
1
  <script lang="ts">
2
+ const notificationsProps = {
3
+ ...useColors.props('primary'),
4
+ align: {
5
+ type: String as PropType<NotificationsAlign>,
6
+ default: 'right',
7
+ validator: (value: string) => validators.align.includes(value as NotificationsAlign),
8
+ },
9
+ position: {
10
+ type: String as PropType<NotificationsPosition>,
11
+ default: 'bottom',
12
+ validator: (value: string) => validators.position.includes(value as NotificationsPosition),
13
+ },
14
+ timeout: {
15
+ type: Number,
16
+ default: 3500,
17
+ },
18
+ removable: {
19
+ type: Boolean,
20
+ default: true,
21
+ },
22
+ injectKey: {
23
+ type: [Symbol, String],
24
+ default: injectNotificationKey,
25
+ },
26
+ }
27
+
2
28
  const validators = {
3
- align: ['left','right'],
4
- position: ['bottom','top'],
29
+ align: ['left', 'right'] as const,
30
+ position: ['bottom', 'top'] as const,
31
+ }
32
+
33
+ export type NotificationsProps = ExtractPublicPropTypes<typeof notificationsProps>
34
+
35
+ export type NotificationsAlign = typeof validators.align[number]
36
+ export type NotificationsPosition = typeof validators.position[number]
37
+ export type NotificationsAction = {
38
+ onClick: () => void;
39
+ label: string;
40
+ color?: string;
41
+ }
42
+ export type NotificationEvent = {
43
+ id?: number;
44
+ icon?: string;
45
+ action?: NotificationsAction;
46
+ iconColor?: string;
47
+ title?: string;
48
+ style?: string;
49
+ message?: string;
50
+ timeout?: number;
51
+ removable?: boolean;
52
+ align?: NotificationsAlign;
53
+ position?: NotificationsPosition;
5
54
  }
6
55
 
7
56
  export default {
@@ -11,7 +60,7 @@ export default {
11
60
  </script>
12
61
 
13
62
  <script setup lang="ts">
14
- import { ref, provide, watch, type PropType } from 'vue'
63
+ import { ref, provide, watch, type PropType, type ExtractPublicPropTypes } from 'vue'
15
64
  import { injectNotificationKey } from '../../composables/keys'
16
65
  import { useColors } from '../../composables/colors'
17
66
  import { useCSS } from '../../composables/css'
@@ -23,52 +72,7 @@ import XSpacer from '../spacer/Spacer'
23
72
 
24
73
  import theme from './Notifications.theme'
25
74
 
26
- export type NotificationAlign = 'left' | 'right'
27
- export type NotificationPosition = 'bottom' | 'top'
28
- export type NotificationAction = {
29
- onClick: ()=> void,
30
- label: string,
31
- color?: string
32
- }
33
- export type NotificationEvent = {
34
- id?: number,
35
- icon?: string,
36
- action?: NotificationAction,
37
- iconColor?: string,
38
- title?: string,
39
- style?: string,
40
- message?: string,
41
- timeout?: number,
42
- removable?: boolean,
43
- align?: NotificationAlign,
44
- position?: NotificationPosition
45
- }
46
-
47
- const props = defineProps({
48
- ...useColors.props('primary'),
49
- align: {
50
- type: String as PropType<NotificationAlign>,
51
- default: 'right',
52
- validator: (value: string) => validators.align.includes(value),
53
- },
54
- position: {
55
- type: String as PropType<NotificationPosition>,
56
- default: 'bottom',
57
- validator: (value: string) => validators.position.includes(value),
58
- },
59
- timeout: {
60
- type: Number,
61
- default: 3500,
62
- },
63
- removable: {
64
- type: Boolean,
65
- default: true,
66
- },
67
- injectKey: {
68
- type: [Symbol, String],
69
- default: injectNotificationKey,
70
- },
71
- })
75
+ const props = defineProps(notificationsProps)
72
76
 
73
77
  const internalAlign = ref(props.align)
74
78
  const internalPosition = ref(props.position)
@@ -0,0 +1,9 @@
1
+ export { default as XNotifications } from './Notifications.vue'
2
+ export type {
3
+ NotificationsProps,
4
+ NotificationEvent,
5
+ NotificationsAction,
6
+ NotificationsAlign,
7
+ NotificationsPosition,
8
+ } from './Notifications.vue'
9
+ export type { NotificationsTheme } from './Notifications.theme'