@indielayer/ui 1.0.10 → 1.2.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 (410) hide show
  1. package/lib/_virtual/_plugin-vue_export-helper.js +9 -0
  2. package/lib/common/icons.js +18 -0
  3. package/lib/common/utils.d.ts +4 -0
  4. package/lib/common/utils.js +25 -0
  5. package/lib/components/alert/Alert.theme.d.ts +10 -8
  6. package/lib/components/alert/Alert.theme.js +41 -0
  7. package/lib/components/alert/Alert.vue.d.ts +22 -5
  8. package/lib/components/alert/Alert.vue.js +9 -0
  9. package/lib/components/alert/Alert.vue2.js +62 -0
  10. package/lib/components/alert/Alert.vue3.js +8 -0
  11. package/lib/components/alert/index.d.ts +3 -0
  12. package/lib/components/avatar/Avatar.theme.d.ts +13 -7
  13. package/lib/components/avatar/Avatar.theme.js +25 -0
  14. package/lib/components/avatar/Avatar.vue.d.ts +24 -2
  15. package/lib/components/avatar/Avatar.vue.js +9 -0
  16. package/lib/components/avatar/Avatar.vue2.js +76 -0
  17. package/lib/components/avatar/Avatar.vue3.js +7 -0
  18. package/lib/components/avatar/index.d.ts +3 -0
  19. package/lib/components/badge/Badge.theme.d.ts +10 -8
  20. package/lib/components/badge/Badge.theme.js +12 -0
  21. package/lib/components/badge/Badge.vue.d.ts +45 -8
  22. package/lib/components/badge/Badge.vue.js +94 -0
  23. package/lib/components/badge/Badge.vue2.js +4 -0
  24. package/lib/components/badge/index.d.ts +3 -0
  25. package/lib/components/breadcrumbs/Breadcrumbs.theme.d.ts +10 -8
  26. package/lib/components/breadcrumbs/Breadcrumbs.theme.js +10 -0
  27. package/lib/components/breadcrumbs/Breadcrumbs.vue.d.ts +19 -5
  28. package/lib/components/breadcrumbs/Breadcrumbs.vue.js +79 -0
  29. package/lib/components/breadcrumbs/Breadcrumbs.vue2.js +4 -0
  30. package/lib/components/breadcrumbs/index.d.ts +3 -0
  31. package/lib/components/button/Button.theme.d.ts +12 -9
  32. package/lib/components/button/Button.theme.js +138 -0
  33. package/lib/components/button/Button.vue.d.ts +41 -7
  34. package/lib/components/button/Button.vue.js +9 -0
  35. package/lib/components/button/Button.vue2.js +115 -0
  36. package/lib/components/button/Button.vue3.js +8 -0
  37. package/lib/components/button/ButtonGroup.theme.d.ts +12 -5
  38. package/lib/components/button/ButtonGroup.theme.js +8 -0
  39. package/lib/components/button/ButtonGroup.vue.d.ts +36 -5
  40. package/lib/components/button/ButtonGroup.vue.js +9 -0
  41. package/lib/components/button/ButtonGroup.vue2.js +54 -0
  42. package/lib/components/button/ButtonGroup.vue3.js +7 -0
  43. package/lib/components/button/index.d.ts +6 -0
  44. package/lib/components/card/Card.theme.d.ts +10 -7
  45. package/lib/components/card/Card.theme.js +8 -0
  46. package/lib/components/card/Card.vue.d.ts +9 -0
  47. package/lib/components/card/Card.vue.js +31 -0
  48. package/lib/components/card/Card.vue2.js +4 -0
  49. package/lib/components/card/index.d.ts +3 -0
  50. package/lib/components/checkbox/Checkbox.theme.d.ts +13 -10
  51. package/lib/components/checkbox/Checkbox.theme.js +52 -0
  52. package/lib/components/checkbox/Checkbox.vue.d.ts +35 -4
  53. package/lib/components/checkbox/Checkbox.vue.js +9 -0
  54. package/lib/components/checkbox/Checkbox.vue2.js +108 -0
  55. package/lib/components/checkbox/Checkbox.vue3.js +6 -0
  56. package/lib/components/checkbox/index.d.ts +3 -0
  57. package/lib/components/collapse/Collapse.theme.d.ts +10 -9
  58. package/lib/components/collapse/Collapse.theme.js +10 -0
  59. package/lib/components/collapse/Collapse.vue.d.ts +17 -1
  60. package/lib/components/collapse/Collapse.vue.js +132 -0
  61. package/lib/components/collapse/Collapse.vue2.js +4 -0
  62. package/lib/components/collapse/index.d.ts +3 -0
  63. package/lib/components/container/Container.theme.d.ts +10 -6
  64. package/lib/components/container/Container.theme.js +8 -0
  65. package/lib/components/container/Container.vue.d.ts +8 -0
  66. package/lib/components/container/Container.vue.js +30 -0
  67. package/lib/components/container/Container.vue2.js +4 -0
  68. package/lib/components/container/index.d.ts +3 -0
  69. package/lib/components/divider/Divider.theme.d.ts +10 -9
  70. package/lib/components/divider/Divider.theme.js +10 -0
  71. package/lib/components/divider/Divider.vue.d.ts +6 -0
  72. package/lib/components/divider/Divider.vue.js +53 -0
  73. package/lib/components/divider/Divider.vue2.js +4 -0
  74. package/lib/components/divider/index.d.ts +3 -0
  75. package/lib/components/drawer/Drawer.theme.d.ts +10 -7
  76. package/lib/components/drawer/Drawer.theme.js +9 -0
  77. package/lib/components/drawer/Drawer.vue.d.ts +39 -12
  78. package/lib/components/drawer/Drawer.vue.js +171 -0
  79. package/lib/components/drawer/Drawer.vue2.js +4 -0
  80. package/lib/components/drawer/index.d.ts +3 -0
  81. package/lib/components/form/Form.theme.d.ts +10 -6
  82. package/lib/components/form/Form.theme.js +8 -0
  83. package/lib/components/form/Form.vue.d.ts +25 -4
  84. package/lib/components/form/Form.vue.js +79 -0
  85. package/lib/components/form/Form.vue2.js +4 -0
  86. package/lib/components/form/index.d.ts +3 -0
  87. package/lib/components/helpers/InputError.js +18 -0
  88. package/lib/components/icon/Icon.theme.d.ts +10 -7
  89. package/lib/components/icon/Icon.theme.js +11 -0
  90. package/lib/components/icon/Icon.vue.d.ts +21 -3
  91. package/lib/components/icon/Icon.vue.js +74 -0
  92. package/lib/components/icon/Icon.vue2.js +4 -0
  93. package/lib/components/icon/index.d.ts +3 -0
  94. package/lib/components/image/Image.theme.d.ts +10 -6
  95. package/lib/components/image/Image.theme.js +8 -0
  96. package/lib/components/image/Image.vue.d.ts +5 -0
  97. package/lib/components/image/Image.vue.js +32 -0
  98. package/lib/components/image/Image.vue2.js +4 -0
  99. package/lib/components/image/index.d.ts +3 -0
  100. package/lib/components/index.d.ts +35 -45
  101. package/lib/components/index.js +92 -0
  102. package/lib/components/input/Input.theme.d.ts +12 -10
  103. package/lib/components/input/Input.theme.js +21 -0
  104. package/lib/components/input/Input.vue.d.ts +70 -19
  105. package/lib/components/input/Input.vue.js +140 -0
  106. package/lib/components/input/Input.vue2.js +4 -0
  107. package/lib/components/input/index.d.ts +3 -0
  108. package/lib/components/link/Link.theme.d.ts +10 -8
  109. package/lib/components/link/Link.theme.js +25 -0
  110. package/lib/components/link/Link.vue.d.ts +17 -1
  111. package/lib/components/link/Link.vue.js +9 -0
  112. package/lib/components/link/Link.vue2.js +48 -0
  113. package/lib/components/link/Link.vue3.js +8 -0
  114. package/lib/components/link/index.d.ts +3 -0
  115. package/lib/components/menu/Menu.theme.d.ts +10 -6
  116. package/lib/components/menu/Menu.theme.js +8 -0
  117. package/lib/components/menu/Menu.vue.d.ts +61 -8
  118. package/lib/components/menu/Menu.vue.js +133 -0
  119. package/lib/components/menu/Menu.vue2.js +4 -0
  120. package/lib/components/menu/MenuItem.theme.d.ts +13 -7
  121. package/lib/components/menu/MenuItem.theme.js +86 -0
  122. package/lib/components/menu/MenuItem.vue.d.ts +55 -15
  123. package/lib/components/menu/MenuItem.vue.js +9 -0
  124. package/lib/components/menu/MenuItem.vue2.js +143 -0
  125. package/lib/components/menu/MenuItem.vue3.js +7 -0
  126. package/lib/components/menu/index.d.ts +6 -0
  127. package/lib/components/modal/Modal.theme.d.ts +10 -13
  128. package/lib/components/modal/Modal.theme.js +17 -0
  129. package/lib/components/modal/Modal.vue.d.ts +13 -1
  130. package/lib/components/modal/Modal.vue.js +127 -0
  131. package/lib/components/modal/Modal.vue2.js +4 -0
  132. package/lib/components/modal/index.d.ts +3 -0
  133. package/lib/components/notifications/Notifications.theme.d.ts +10 -8
  134. package/lib/components/notifications/Notifications.theme.js +10 -0
  135. package/lib/components/notifications/Notifications.vue.d.ts +46 -13
  136. package/lib/components/notifications/Notifications.vue.js +234 -0
  137. package/lib/components/notifications/Notifications.vue2.js +4 -0
  138. package/lib/components/notifications/index.d.ts +3 -0
  139. package/lib/components/pagination/Pagination.theme.d.ts +10 -9
  140. package/lib/components/pagination/Pagination.theme.js +13 -0
  141. package/lib/components/pagination/Pagination.vue.d.ts +27 -4
  142. package/lib/components/pagination/Pagination.vue.js +131 -0
  143. package/lib/components/pagination/Pagination.vue2.js +4 -0
  144. package/lib/components/pagination/PaginationItem.theme.d.ts +10 -7
  145. package/lib/components/pagination/PaginationItem.theme.js +8 -0
  146. package/lib/components/pagination/PaginationItem.vue.d.ts +16 -1
  147. package/lib/components/pagination/PaginationItem.vue.js +48 -0
  148. package/lib/components/pagination/PaginationItem.vue2.js +4 -0
  149. package/lib/components/pagination/index.d.ts +6 -0
  150. package/lib/components/popover/Popover.theme.d.ts +10 -7
  151. package/lib/components/popover/Popover.theme.js +9 -0
  152. package/lib/components/popover/Popover.vue.d.ts +40 -10
  153. package/lib/components/popover/Popover.vue.js +9 -0
  154. package/lib/components/popover/Popover.vue2.js +106 -0
  155. package/lib/components/popover/Popover.vue3.js +15 -0
  156. package/lib/components/popover/PopoverContainer.theme.d.ts +10 -6
  157. package/lib/components/popover/PopoverContainer.theme.js +8 -0
  158. package/lib/components/popover/PopoverContainer.vue.d.ts +8 -0
  159. package/lib/components/popover/PopoverContainer.vue.js +30 -0
  160. package/lib/components/popover/PopoverContainer.vue2.js +4 -0
  161. package/lib/components/popover/index.d.ts +6 -0
  162. package/lib/components/progress/Progress.theme.d.ts +10 -12
  163. package/lib/components/progress/Progress.theme.js +18 -0
  164. package/lib/components/progress/Progress.vue.d.ts +19 -0
  165. package/lib/components/progress/Progress.vue.js +51 -0
  166. package/lib/components/progress/Progress.vue2.js +4 -0
  167. package/lib/components/progress/index.d.ts +3 -0
  168. package/lib/components/radio/Radio.theme.d.ts +13 -11
  169. package/lib/components/radio/Radio.theme.js +67 -0
  170. package/lib/components/radio/Radio.vue.d.ts +38 -6
  171. package/lib/components/radio/Radio.vue.js +9 -0
  172. package/lib/components/radio/Radio.vue2.js +117 -0
  173. package/lib/components/radio/Radio.vue3.js +10 -0
  174. package/lib/components/radio/index.d.ts +3 -0
  175. package/lib/components/scroll/Scroll.theme.d.ts +10 -6
  176. package/lib/components/scroll/Scroll.theme.js +8 -0
  177. package/lib/components/scroll/Scroll.vue.d.ts +12 -1
  178. package/lib/components/scroll/Scroll.vue.js +9 -0
  179. package/lib/components/scroll/Scroll.vue2.js +64 -0
  180. package/lib/components/scroll/Scroll.vue3.js +17 -0
  181. package/lib/components/scroll/index.d.ts +3 -0
  182. package/lib/components/select/Select.theme.d.ts +13 -12
  183. package/lib/components/select/Select.theme.js +23 -0
  184. package/lib/components/select/Select.vue.d.ts +33 -4
  185. package/lib/components/select/Select.vue.js +269 -0
  186. package/lib/components/select/Select.vue2.js +4 -0
  187. package/lib/components/select/index.d.ts +3 -0
  188. package/lib/components/skeleton/Skeleton.theme.d.ts +10 -6
  189. package/lib/components/skeleton/Skeleton.theme.js +8 -0
  190. package/lib/components/skeleton/Skeleton.vue.d.ts +8 -0
  191. package/lib/components/skeleton/Skeleton.vue.js +30 -0
  192. package/lib/components/skeleton/Skeleton.vue2.js +4 -0
  193. package/lib/components/skeleton/index.d.ts +3 -0
  194. package/lib/components/slider/Slider.theme.d.ts +10 -10
  195. package/lib/components/slider/Slider.theme.js +20 -0
  196. package/lib/components/slider/Slider.vue.d.ts +40 -4
  197. package/lib/components/slider/Slider.vue.js +148 -0
  198. package/lib/components/slider/Slider.vue2.js +4 -0
  199. package/lib/components/slider/index.d.ts +2 -0
  200. package/lib/components/spacer/Spacer.js +12 -0
  201. package/lib/components/spacer/index.d.ts +1 -0
  202. package/lib/components/spinner/Spinner.vue.d.ts +13 -0
  203. package/lib/components/spinner/Spinner.vue.js +28 -0
  204. package/lib/components/spinner/Spinner.vue2.js +4 -0
  205. package/lib/components/spinner/index.d.ts +2 -0
  206. package/lib/components/tab/Tab.theme.d.ts +12 -9
  207. package/lib/components/tab/Tab.theme.js +13 -0
  208. package/lib/components/tab/Tab.vue.d.ts +31 -9
  209. package/lib/components/tab/Tab.vue.js +129 -0
  210. package/lib/components/tab/Tab.vue2.js +4 -0
  211. package/lib/components/tab/TabGroup.theme.d.ts +10 -10
  212. package/lib/components/tab/TabGroup.theme.js +27 -0
  213. package/lib/components/tab/TabGroup.vue.d.ts +53 -8
  214. package/lib/components/tab/TabGroup.vue.js +133 -0
  215. package/lib/components/tab/TabGroup.vue2.js +4 -0
  216. package/lib/components/tab/index.d.ts +4 -0
  217. package/lib/components/table/Table.theme.d.ts +10 -8
  218. package/lib/components/table/Table.theme.js +12 -0
  219. package/lib/components/table/Table.vue.d.ts +268 -57
  220. package/lib/components/table/Table.vue.js +147 -0
  221. package/lib/components/table/Table.vue2.js +4 -0
  222. package/lib/components/table/TableBody.js +15 -0
  223. package/lib/components/table/TableCell.theme.d.ts +10 -7
  224. package/lib/components/table/TableCell.theme.js +11 -0
  225. package/lib/components/table/TableCell.vue.d.ts +27 -5
  226. package/lib/components/table/TableCell.vue.js +43 -0
  227. package/lib/components/table/TableCell.vue2.js +4 -0
  228. package/lib/components/table/TableHead.js +19 -0
  229. package/lib/components/table/TableHeader.vue.d.ts +26 -8
  230. package/lib/components/table/TableHeader.vue.js +78 -0
  231. package/lib/components/table/TableHeader.vue2.js +4 -0
  232. package/lib/components/table/TableRow.vue.js +32 -0
  233. package/lib/components/table/TableRow.vue2.js +4 -0
  234. package/lib/components/table/index.d.ts +9 -0
  235. package/lib/components/tag/Tag.theme.d.ts +10 -9
  236. package/lib/components/tag/Tag.theme.js +23 -0
  237. package/lib/components/tag/Tag.vue.d.ts +23 -3
  238. package/lib/components/tag/Tag.vue.js +61 -0
  239. package/lib/components/tag/Tag.vue2.js +4 -0
  240. package/lib/components/tag/index.d.ts +2 -0
  241. package/lib/components/textarea/Textarea.theme.d.ts +13 -9
  242. package/lib/components/textarea/Textarea.theme.js +16 -0
  243. package/lib/components/textarea/Textarea.vue.d.ts +56 -14
  244. package/lib/components/textarea/Textarea.vue.js +110 -0
  245. package/lib/components/textarea/Textarea.vue2.js +4 -0
  246. package/lib/components/textarea/index.d.ts +2 -0
  247. package/lib/components/toggle/Toggle.theme.d.ts +10 -11
  248. package/lib/components/toggle/Toggle.theme.js +29 -0
  249. package/lib/components/toggle/Toggle.vue.d.ts +36 -4
  250. package/lib/components/toggle/Toggle.vue.js +110 -0
  251. package/lib/components/toggle/Toggle.vue2.js +4 -0
  252. package/lib/components/toggle/index.d.ts +2 -0
  253. package/lib/components/tooltip/Tooltip.vue.d.ts +3 -0
  254. package/lib/components/tooltip/Tooltip.vue.js +27 -0
  255. package/lib/components/tooltip/Tooltip.vue2.js +4 -0
  256. package/lib/components/tooltip/index.d.ts +2 -0
  257. package/lib/composables/colors-utils.js +19 -0
  258. package/lib/composables/colors.d.ts +2 -1
  259. package/lib/composables/colors.js +52 -0
  260. package/lib/composables/common.d.ts +1 -1
  261. package/lib/composables/common.js +17 -0
  262. package/lib/composables/css.js +26 -0
  263. package/lib/composables/inputtable.d.ts +4 -4
  264. package/lib/composables/inputtable.js +78 -0
  265. package/lib/composables/interactive.js +17 -0
  266. package/lib/composables/keys.d.ts +6 -3
  267. package/lib/composables/keys.js +10 -0
  268. package/lib/composables/notifications.js +9 -0
  269. package/lib/composables/theme.d.ts +13 -7
  270. package/lib/composables/theme.js +59 -0
  271. package/lib/create.js +19 -0
  272. package/lib/index.js +121 -0
  273. package/lib/index.umd.js +1 -0
  274. package/lib/install.js +10 -0
  275. package/lib/node_modules/.pnpm/@vueuse_core@10.2.0_vue@3.3.4/node_modules/@vueuse/core/index.js +379 -0
  276. package/lib/node_modules/.pnpm/@vueuse_shared@10.2.0_vue@3.3.4/node_modules/@vueuse/shared/index.js +90 -0
  277. package/lib/version.d.ts +1 -1
  278. package/lib/version.js +4 -0
  279. package/package.json +10 -9
  280. package/src/common/utils.ts +25 -2
  281. package/src/components/alert/Alert.theme.ts +15 -6
  282. package/src/components/alert/Alert.vue +24 -12
  283. package/src/components/alert/index.ts +3 -0
  284. package/src/components/avatar/Avatar.theme.ts +16 -4
  285. package/src/components/avatar/Avatar.vue +18 -14
  286. package/src/components/avatar/index.ts +3 -0
  287. package/src/components/badge/Badge.theme.ts +13 -3
  288. package/src/components/badge/Badge.vue +30 -15
  289. package/src/components/badge/index.ts +3 -0
  290. package/src/components/breadcrumbs/Breadcrumbs.theme.ts +12 -2
  291. package/src/components/breadcrumbs/Breadcrumbs.vue +24 -21
  292. package/src/components/breadcrumbs/index.ts +3 -0
  293. package/src/components/button/Button.theme.ts +18 -8
  294. package/src/components/button/Button.vue +28 -18
  295. package/src/components/button/ButtonGroup.theme.ts +14 -1
  296. package/src/components/button/ButtonGroup.vue +29 -15
  297. package/src/components/button/index.ts +7 -0
  298. package/src/components/card/Card.theme.ts +13 -3
  299. package/src/components/card/Card.vue +12 -7
  300. package/src/components/card/index.ts +3 -0
  301. package/src/components/checkbox/Checkbox.theme.ts +19 -7
  302. package/src/components/checkbox/Checkbox.vue +20 -11
  303. package/src/components/checkbox/index.ts +3 -0
  304. package/src/components/collapse/Collapse.theme.ts +13 -3
  305. package/src/components/collapse/Collapse.vue +16 -12
  306. package/src/components/collapse/index.ts +3 -0
  307. package/src/components/container/Container.theme.ts +12 -2
  308. package/src/components/container/Container.vue +11 -6
  309. package/src/components/container/index.ts +3 -0
  310. package/src/components/divider/Divider.theme.ts +13 -3
  311. package/src/components/divider/Divider.vue +9 -4
  312. package/src/components/divider/index.ts +3 -0
  313. package/src/components/drawer/Drawer.theme.ts +12 -2
  314. package/src/components/drawer/Drawer.vue +27 -18
  315. package/src/components/drawer/index.ts +3 -0
  316. package/src/components/form/Form.theme.ts +12 -2
  317. package/src/components/form/Form.vue +38 -28
  318. package/src/components/form/index.ts +3 -0
  319. package/src/components/helpers/InputError.tsx +2 -2
  320. package/src/components/icon/Icon.theme.ts +13 -3
  321. package/src/components/icon/Icon.vue +24 -15
  322. package/src/components/icon/__tests__/Icon.spec.ts +5 -1
  323. package/src/components/icon/index.ts +3 -0
  324. package/src/components/image/Image.theme.ts +12 -2
  325. package/src/components/image/Image.vue +8 -4
  326. package/src/components/image/index.ts +3 -0
  327. package/src/components/index.ts +35 -45
  328. package/src/components/input/Input.theme.ts +17 -6
  329. package/src/components/input/Input.vue +31 -20
  330. package/src/components/input/index.ts +3 -0
  331. package/src/components/link/Link.theme.ts +13 -3
  332. package/src/components/link/Link.vue +16 -11
  333. package/src/components/link/index.ts +3 -0
  334. package/src/components/menu/Menu.theme.ts +12 -2
  335. package/src/components/menu/Menu.vue +59 -23
  336. package/src/components/menu/MenuItem.theme.ts +17 -5
  337. package/src/components/menu/MenuItem.vue +56 -48
  338. package/src/components/menu/index.ts +7 -0
  339. package/src/components/modal/Modal.theme.ts +13 -3
  340. package/src/components/modal/Modal.vue +22 -11
  341. package/src/components/modal/index.ts +3 -0
  342. package/src/components/notifications/Notifications.theme.ts +12 -2
  343. package/src/components/notifications/Notifications.vue +53 -49
  344. package/src/components/notifications/index.ts +9 -0
  345. package/src/components/pagination/Pagination.theme.ts +15 -5
  346. package/src/components/pagination/Pagination.vue +24 -18
  347. package/src/components/pagination/PaginationItem.theme.ts +13 -3
  348. package/src/components/pagination/PaginationItem.vue +14 -10
  349. package/src/components/pagination/index.ts +7 -0
  350. package/src/components/popover/Popover.theme.ts +12 -2
  351. package/src/components/popover/Popover.vue +27 -21
  352. package/src/components/popover/PopoverContainer.theme.ts +12 -2
  353. package/src/components/popover/PopoverContainer.vue +11 -6
  354. package/src/components/popover/index.ts +7 -0
  355. package/src/components/progress/Progress.theme.ts +14 -4
  356. package/src/components/progress/Progress.vue +16 -16
  357. package/src/components/progress/index.ts +3 -0
  358. package/src/components/radio/Radio.theme.ts +19 -7
  359. package/src/components/radio/Radio.vue +21 -12
  360. package/src/components/radio/index.ts +3 -0
  361. package/src/components/scroll/Scroll.theme.ts +12 -2
  362. package/src/components/scroll/Scroll.vue +14 -10
  363. package/src/components/scroll/index.ts +3 -0
  364. package/src/components/select/Select.theme.ts +20 -6
  365. package/src/components/select/Select.vue +28 -19
  366. package/src/components/select/index.ts +3 -0
  367. package/src/components/skeleton/Skeleton.theme.ts +12 -2
  368. package/src/components/skeleton/Skeleton.vue +11 -6
  369. package/src/components/skeleton/index.ts +3 -0
  370. package/src/components/slider/Slider.theme.ts +14 -4
  371. package/src/components/slider/Slider.vue +24 -16
  372. package/src/components/slider/index.ts +2 -0
  373. package/src/components/spacer/index.ts +1 -0
  374. package/src/components/spinner/Spinner.vue +18 -8
  375. package/src/components/spinner/index.ts +2 -0
  376. package/src/components/tab/Tab.theme.ts +15 -3
  377. package/src/components/tab/Tab.vue +85 -68
  378. package/src/components/tab/TabGroup.theme.ts +15 -5
  379. package/src/components/tab/TabGroup.vue +67 -22
  380. package/src/components/tab/index.ts +5 -0
  381. package/src/components/table/Table.theme.ts +14 -4
  382. package/src/components/table/Table.vue +41 -31
  383. package/src/components/table/TableCell.theme.ts +13 -3
  384. package/src/components/table/TableCell.vue +22 -16
  385. package/src/components/table/TableHeader.vue +20 -17
  386. package/src/components/table/index.ts +10 -0
  387. package/src/components/tag/Tag.theme.ts +14 -4
  388. package/src/components/tag/Tag.vue +22 -13
  389. package/src/components/tag/index.ts +2 -0
  390. package/src/components/textarea/Textarea.theme.ts +18 -30
  391. package/src/components/textarea/Textarea.vue +28 -19
  392. package/src/components/textarea/index.ts +2 -0
  393. package/src/components/toggle/Toggle.theme.ts +16 -6
  394. package/src/components/toggle/Toggle.vue +21 -12
  395. package/src/components/toggle/index.ts +2 -0
  396. package/src/components/tooltip/Tooltip.vue +5 -0
  397. package/src/components/tooltip/index.ts +2 -0
  398. package/src/composables/colors-utils.ts +1 -78
  399. package/src/composables/colors.ts +6 -4
  400. package/src/composables/common.ts +1 -1
  401. package/src/composables/inputtable.ts +4 -4
  402. package/src/composables/keys.ts +6 -3
  403. package/src/composables/theme.ts +26 -23
  404. package/src/create.ts +1 -2
  405. package/src/version.ts +1 -1
  406. package/volar.d.ts +1 -1
  407. package/lib/components/tooltip/Tooltip.theme.d.ts +0 -11
  408. package/lib/index.cjs.js +0 -1
  409. package/lib/index.es.js +0 -5187
  410. package/src/components/tooltip/Tooltip.theme.ts +0 -51
@@ -1,10 +1,19 @@
1
- import type { ThemeParams } from '../../composables/theme'
1
+ import type { ThemeClasses, ThemeComponent } from '../../composables/theme'
2
+ import type { InputProps } from './Input.vue'
2
3
 
3
- export default {
4
+ type InternalClasses = 'wrapper' | 'label' | 'input' | 'icon'
5
+ type InternalExtraData = { errorInternal: any; }
6
+
7
+ interface InternalTheme extends ThemeComponent<InputProps, InternalClasses, InternalExtraData> {}
8
+ export interface InputTheme extends Omit<InternalTheme, 'classes'> {
9
+ classes?: Partial<ThemeClasses<InputProps, InternalClasses, InternalExtraData>>;
10
+ }
11
+
12
+ const theme: InternalTheme = {
4
13
  classes: {
5
14
  wrapper: 'inline-block align-bottom text-left',
6
15
 
7
- label: ({ props }: ThemeParams) => {
16
+ label: ({ props }) => {
8
17
  const classes = 'font-medium text-gray-800 dark:text-gray-200 mb-1'
9
18
 
10
19
  if (props.size === 'xs') return classes + ' text-xs'
@@ -12,10 +21,10 @@ export default {
12
21
  else if (props.size === 'lg') return classes + ' text-lg'
13
22
  else if (props.size === 'xl') return classes + ' text-xl'
14
23
 
15
- return classes // + ' text-sm'
24
+ return classes
16
25
  },
17
26
 
18
- input: ({ props, data }: ThemeParams) => {
27
+ input: ({ props, data }) => {
19
28
  const classes = ['appearance-none block w-full placeholder-gray-400 dark:placeholder-gray-500 outline-transparent outline outline-2 outline-offset-[-1px] transition-all duration-150 ease-in-out border-gray-300 dark:border-gray-700 border shadow-sm rounded-md']
20
29
 
21
30
  if (!data.errorInternal && !props.disabled) classes.push('hover:border-gray-400 dark:hover:border-gray-500')
@@ -36,9 +45,11 @@ export default {
36
45
  icon: 'text-gray-600 dark:text-gray-300 absolute my-auto inset-y-0',
37
46
  },
38
47
 
39
- styles: ({ colors, props, css }: ThemeParams) => {
48
+ styles: ({ colors, props, css }) => {
40
49
  const color = colors.getPalette(props.color)
41
50
 
42
51
  return css.get('border', color[400])
43
52
  },
44
53
  }
54
+
55
+ export default theme
@@ -1,22 +1,5 @@
1
1
  <script lang="ts">
2
- export default { name: 'XInput' }
3
- </script>
4
-
5
- <script setup lang="ts">
6
- import { computed, reactive, ref } from 'vue'
7
- import { useTheme } from '../../composables/theme'
8
- import { useColors } from '../../composables/colors'
9
- import { useCommon } from '../../composables/common'
10
- import { useInputtable } from '../../composables/inputtable'
11
- import { useInteractive } from '../../composables/interactive'
12
- import { eyeIcon, eyeVisibleIcon } from '../../common/icons'
13
-
14
- import XIcon from '../icon/Icon.vue'
15
- import XInputError from '../helpers/InputError'
16
-
17
- import theme from './Input.theme'
18
-
19
- const props = defineProps({
2
+ const inputProps = {
20
3
  ...useCommon.props(),
21
4
  ...useColors.props('primary'),
22
5
  ...useInteractive.props(),
@@ -28,7 +11,7 @@ const props = defineProps({
28
11
  helper: String,
29
12
  label: String,
30
13
  dir: {
31
- type: String,
14
+ type: String as PropType<'ltr' | 'rtl'>,
32
15
  default: 'ltr',
33
16
  },
34
17
  icon: String,
@@ -44,13 +27,41 @@ const props = defineProps({
44
27
  default: 'text',
45
28
  },
46
29
  block: Boolean,
47
- })
30
+ }
31
+
32
+ export type InputProps = ExtractPublicPropTypes<typeof inputProps>
33
+
34
+ export default {
35
+ name: 'XInput',
36
+ validators: {
37
+ ...useCommon.validators(),
38
+ },
39
+ }
40
+ </script>
41
+
42
+ <script setup lang="ts">
43
+ import { ref, type PropType, type ExtractPublicPropTypes, watch } from 'vue'
44
+ import { useTheme } from '../../composables/theme'
45
+ import { useColors } from '../../composables/colors'
46
+ import { useCommon } from '../../composables/common'
47
+ import { useInputtable } from '../../composables/inputtable'
48
+ import { useInteractive } from '../../composables/interactive'
49
+ import { eyeIcon, eyeVisibleIcon } from '../../common/icons'
50
+
51
+ import XIcon from '../icon/Icon.vue'
52
+ import XInputError from '../helpers/InputError'
53
+
54
+ import theme from './Input.theme'
55
+
56
+ const props = defineProps(inputProps)
48
57
 
49
58
  const emit = defineEmits(useInputtable.emits())
50
59
 
51
60
  const elRef = ref<HTMLInputElement | null>(null)
52
61
  const currentType = ref(props.type)
53
62
 
63
+ watch(() => props.type, (newValue) => { currentType.value = newValue })
64
+
54
65
  function onChange(e: Event) {
55
66
  if (!e.target) return
56
67
 
@@ -0,0 +1,3 @@
1
+ export { default as XInput } from './Input.vue'
2
+ export type { InputProps } from './Input.vue'
3
+ export type { InputTheme } from './Input.theme'
@@ -1,11 +1,19 @@
1
- import type { ThemeParams } from '../../composables/theme'
1
+ import type { ThemeClasses, ThemeComponent } from '../../composables/theme'
2
+ import type { LinkProps } from './Link.vue'
2
3
 
3
- export default {
4
+ type InternalClasses = 'wrapper'
5
+
6
+ interface InternalTheme extends ThemeComponent<LinkProps, InternalClasses> {}
7
+ export interface LinkTheme extends Omit<InternalTheme, 'classes'> {
8
+ classes?: Partial<ThemeClasses<LinkProps, InternalClasses>>;
9
+ }
10
+
11
+ const theme: InternalTheme = {
4
12
  classes: {
5
13
  wrapper: 'transition duration-300 ease-in-out cursor-pointer inline-flex',
6
14
  },
7
15
 
8
- styles: ({ colors, props, css }: ThemeParams) => {
16
+ styles: ({ colors, props, css }) => {
9
17
  const color = colors.getPalette(props.color || 'gray')
10
18
 
11
19
  return css.variables({
@@ -24,3 +32,5 @@ export default {
24
32
  })
25
33
  },
26
34
  }
35
+
36
+ export default theme
@@ -1,8 +1,23 @@
1
1
  <script lang="ts">
2
+ const linkProps = {
3
+ ...useColors.props(),
4
+ tag: {
5
+ type: String,
6
+ default: 'a',
7
+ },
8
+ to: [String, Object],
9
+ shadow: Boolean,
10
+ external: Boolean,
11
+ underline: Boolean,
12
+ }
13
+
14
+ export type LinkProps = ExtractPublicPropTypes<typeof linkProps>
15
+
2
16
  export default { name: 'XLink' }
3
17
  </script>
4
18
 
5
19
  <script setup lang="ts">
20
+ import type { ExtractPublicPropTypes } from 'vue'
6
21
  import { useColors } from '../../composables/colors'
7
22
  import { useTheme } from '../../composables/theme'
8
23
  import { externalIcon } from '../../common/icons'
@@ -11,17 +26,7 @@ import XIcon from '../icon/Icon.vue'
11
26
 
12
27
  import theme from './Link.theme'
13
28
 
14
- const props = defineProps({
15
- ...useColors.props(),
16
- tag: {
17
- type: String,
18
- default: 'a',
19
- },
20
- to: [String, Object],
21
- shadow: Boolean,
22
- external: Boolean,
23
- underline: Boolean,
24
- })
29
+ const props = defineProps(linkProps)
25
30
 
26
31
  const { styles, classes, className } = useTheme('link', theme, props)
27
32
  </script>
@@ -0,0 +1,3 @@
1
+ export { default as XLink } from './Link.vue'
2
+ export type { LinkProps } from './Link.vue'
3
+ export type { LinkTheme } from './Link.theme'
@@ -1,7 +1,17 @@
1
- import type { ThemeParams } from '../../composables/theme'
1
+ import type { ThemeClasses, ThemeComponent } from '../../composables/theme'
2
+ import type { MenuProps } from './Menu.vue'
2
3
 
3
- export default {
4
+ type InternalClasses = 'wrapper'
5
+
6
+ interface InternalTheme extends ThemeComponent<MenuProps, InternalClasses> {}
7
+ export interface MenuTheme extends Omit<InternalTheme, 'classes'> {
8
+ classes?: Partial<ThemeClasses<MenuProps, InternalClasses>>;
9
+ }
10
+
11
+ const theme: InternalTheme = {
4
12
  classes: {
5
13
  wrapper: '',
6
14
  },
7
15
  }
16
+
17
+ export default theme
@@ -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,7 +12,6 @@ const props = defineProps({
28
12
  default: () => {},
29
13
  },
30
14
  onClick: Function,
31
- inactive: Boolean,
32
15
  value: [Number, String],
33
16
  to: String,
34
17
  exact: Boolean,
@@ -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,34 +138,33 @@ 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,
159
- .menu-item.x-link {
167
+ .menu-item {
160
168
  color: var(--x-menu-item-text);
161
169
  background-color: var(--x-menu-item-bg);
162
170
 
@@ -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